Welcome, Guest. Please login or register. Did you miss your activation email?

Author Topic: Shader Unavailable when it should be  (Read 6521 times)

0 Members and 1 Guest are viewing this topic.

binary1248

  • SFML Team
  • Hero Member
  • *****
  • Posts: 1405
  • I am awesome.
    • View Profile
    • The server that really shouldn't be running
Re: Shader Unavailable when it should be
« Reply #15 on: May 05, 2015, 03:14:50 am »
After poking around the internet a bit, I have a feeling that this is caused because of a library architecture mismatch. Often times, Steam games are distributed as 32-bit binaries that rely on multilib. And even if they aren't, they still try to load the 32-bit OpenGL library, and if that isn't found, either because it isn't installed or simply isn't up to date, they end up loading in some other library or version of the library that might be a residue from earlier.

The reason why glxinfo reports the proper data is because it is guaranteed to be native to the operating system architecture (a 64-bit binary on a 64-bit system). glxinfo will always load the proper OpenGL library if one is installed. Steam applications won't half the time (for mysterious reasons), since they for whatever reason decide not to provide native 64-bit binaries for 64-bit systems which make up almost all modern gaming systems these days or the 64-bit binary chooses to load in 32-bit dependencies (I've actually seen this happen before, no idea how that is supposed to work).

The user can figure out if they have a 32-bit or 64-bit system by checking the output of
Code: [Select]
uname -aFind out the absolute path of glxinfo by issuing
Code: [Select]
which glxinfoThe output should be something similar to /usr/bin/glxinfo. Issue
Code: [Select]
ldd /usr/bin/glxinfo(or whatever the real path is from the previous output) to find out which libGL.so it is loading. Compare this to the output of
Code: [Select]
ldd <absolute path to your game's binary>If the game is loading or trying to load another libGL.so than the one that glxinfo loads, the user needs to make sure they have the 32-bit OpenGL library from Nvidia installed as well. I tried looking around, but couldn't find the Mageia package name for the 32-bit OpenGL library from Nvidia, so the user will have to figure that one out on their own.

It would help if you could post the output of each of those commands here as well, there might be some other useful information in them.
SFGUI # SFNUL # GLS # Wyrm <- Why do I waste my time on such a useless project? Because I am awesome (first meaning).

 

anything