ChloePrime / AAAParticles

Effekseer loader on Minecraft 1.18+ Windows and Linux are supported
MIT License
11 stars 2 forks source link

Crashes on latest Nvidia drivers on Linux #22

Open HugKitten opened 4 days ago

HugKitten commented 4 days ago

This issue seems to also effect the Eldritch End mod. When launched on Linux (Arch on Wayland) and Nvidia (Nvidia Open DKMs) you get the libEffekseerNativeForJava.so: undefined symbol: glGenSamplers error. Just putting this out there so you are aware. Also this seems to only happen to the 3.0 version. Previous versions do not seem to have this issue.

ChloePrime commented 4 days ago

Does your system support OpenGL 3.3?

HugKitten commented 4 days ago

Yes, I have up to date mesa.

HugKitten commented 4 days ago

Scratch that. It's suppose to be up to date, but shows only as 3.2. Seems that could be cause

ChloePrime commented 4 days ago

Scratch that. It's suppose to be up to date, but shows only as 3.2. Seems that could be cause

Yep that glGenSamplers is a part of OpenGL 3.3 standard :)

HugKitten commented 4 days ago

I think I know whats causing it. It's using the wrong translation layer. I was able to fix it. Thanks. I'll see if I can post some details in a moment

HugKitten commented 4 days ago

I was able to fix the issue, but here are some details to anyone else who needs help.

There are several reasons you could run into this issue. First make sure you have all your drivers up to date, and are not missing any translation layer required to use Mesa. If you use a GPU that isn't nvidia, then this will likely fix your issue. If you use nvidia, the issue seems to be that nvidia does not support openGL 3.3 through mesa. I assume this has something to do with the extra translation layer nvidia GPUs need to use mesa. You could try using other nvidia drivers, or even older ones, but be aware that this can cause your system to no longer boot if the newer kernel has compatibility issues. This may mean you need to downgrade your kernel as well. There is however another option that is much simpler. Mesa actually has a way to set which driver or api gets used.

If you use Nvidia and want to use the Vulkan API, you can use the following environmental variables:

__GLX_VENDOR_LIBRARY_NAME=mesa
__EGL_VENDOR_LIBRARY_FILENAMES=/usr/share/glvnd/egl_vendor.d/50_mesa.json
MESA_LOADER_DRIVER_OVERRIDE=zink GALLIUM_DRIVER=zink

To do this from command line run the command env __GLX_VENDOR_LIBRARY_NAME=mesa __EGL_VENDOR_LIBRARY_FILENAMES=/usr/share/glvnd/egl_vendor.d/50_mesa.json MESA_LOADER_DRIVER_OVERRIDE=zink GALLIUM_DRIVER=zink Follow this up with your choice of launcher