The newer version of GCC has changed spec related to pthread, so libatomic is not automatically added when "-pthread" is specified (see https://github.com/riscv-collab/riscv-gcc/issues/337). For doubleword atomics, libatomic is still needed (implemented with locks).
Thanks for the patch, @xctan! I've added you to the "Contributors" group, so the next time you upload a patch, it is built by our CI.
I can't comment on the patch itself, but I can ask you to upload it with context and add yourself to the credits. :)
We don't use 16byte atomics directly, I think it might be under the hood of boost::lockfree::queue. I'm also wondering why it's not linked automatically (by detecting standard library usage)?
Previously before inline atomics were added to riscv-gcc, --as-needed -latomic --no-as-needed is included in the builtin spec for pthread, which in turn automatically detects its usage. But on riscv64 doubleword atomics can't be lockfree (i.e. no instruction support in rv64gc ISA), so the compiler can't inline these operations either. The library libatomic internally uses a table of locks to ensure atomicity.
Sorry for the long reply. Could you upload your system_info and userreport_hwdetect with your hardware? Also how smooth is it?
We'd like to support riscv64 but we don't have active people to test it.
I haven't thoroughly tested the game on my RISC-V boards yet. Their integrated Imagination GPUs have poor driver support. So, I'm waiting for new boards with PCIe slots, where a decent GPU with proper OpenGL support can be attached.
Sophgo is going to launch a new SoC SG2380 with more powerful SiFive cores in a few days.