solus-project / linux-steam-integration

Helper for enabling better Steam integration on Linux
GNU Lesser General Public License v2.1
432 stars 19 forks source link

Fix for Divinity: Original Sin EE #32

Open aleksvor opened 6 years ago

aleksvor commented 6 years ago

D: OSEE has a longstanding bug with Mesa that prevents it from starting. There is a workaround for it though, requiring to compile shim for the game and LD_PRELOAD it. It seems that both Mesa and Larian won't make a proper fix for this, so... can it be implemented in LSI?

ikeydoherty commented 6 years ago

What kind of detection do we need to do here? If any? Ideally I don't want to cause mesa issues for other users, though I'm still quite happy (if possible) to implement this into lsi-redirect

aleksvor commented 6 years ago

I think, it could be implemented just for one game, because it's a very specific problem. As far as I understand, the game asks the driver for the vendor string (glGetString function) when it starts, and it expects to get the string from the proprietary Nvidia driver or discontinued proprietary AMD driver (fglrx), otherwise it refuses to start. If you preload the shim which overrides glGetString, the game starts and plays as it should. You can see the code for the shim which makes the game playable on Mesa: https://bugs.freedesktop.org/attachment.cgi?id=125302 I wonder if you can implement these overrides in lsi? Now I'm playing with self-compiled preloaded shim, but it isn't very user-friendly.

aleksvor commented 6 years ago

@ikeydoherty , so what do you think?