Dying Light

Dying Light

View Stats:
Dying Light > General Discussions > Topic Details
Linux/mesa Dying Light issue pinned down
@Modlin_Techland

Hi, I am a comitter of the Linux mesa OpenGL stack. We were able to pin down the issue as to why Dying Light do not work with the opensource AMD drivers in mesa (or any mesa driver for that matter).

The situtation is two fold, first the game requires fixed-pipeline stuff in a GL4.5 context however we could workaround that (although you should still fix it). The more fundamental issue is that invalid GLSL shaders are getting created as "mesa" isn't matched in your vendor detection method in `libropengl.so` resulting in:

```
#version 450

in int gl_VertexID ;

void main() {
gl_Position = vec4(0,0,0,1);
}
```

which is what causes the black screen issue as the redefinition of `gl_VertexID` is illegal GLSL. This happens because a variable called 'g_OpenGL_DeclareVertexId' is getting set. I don't know why you would ever want to redefine `gl_VertexID` as its completely illegal GLSL however maybe it was done as a stub while you were translating directx shaders, who knows. Fun fact: Nvidia drivers compile that completely invalid GLSL, what a suprise :/

Bottom line to fix the blackscreen issue would be if you guys can push a patch that removes `#define OPENGL_DECLARE_VERTEX_ID 1` winding up in your shaders or just remove the line that redefines `in int gl_VertexID`.

Contact me if you need any additional help,
P.S., I don't own a copy of this game so this was in collaboration with Frogging101 from #radeon who found the original `gl_VertexID` redefinition issue.
< >
Showing 16-27 of 27 comments
Frogging101 Sep 10, 2017 @ 10:51am 
Originally posted by Atari:
With Mesa 17.2 and "MESA_GL_VERSION_OVERRIDE=4.5 MESA_GLSL_VERSION_OVERRIDE=450 %command%" as launch option I'm finally able to play the game. But performance is not the best and the game is kind of laggy.

Yeah, you're probably seeing the performance issues that I mentioned earlier. And if your experience is anything like mine, you'll also find that the framerate plummets in select areas such as the Tower lobby or near Zere's trailer. The game triggers some suboptimal memory management in the driver that results in a lot of swapping between different areas of memory. I submitted kernel patches to fix this; they're in the queue for Linux 4.14. Hopefully it'll help :)

https://www.phoronix.com/scan.php?page=news_item&px=AMDGPU-VRAM-D-Games
Nefelim4ag Oct 2, 2017 @ 2:18am 
@Atari,
Do you have a intel HD card?
Also with "MESA_GL_VERSION_OVERRIDE=4.5 MESA_GLSL_VERSION_OVERRIDE=450 %command%" I'm not able to play the game. Black screen with a white line as a timer. The game exits without an error message. At startup I still get the messagen with Mesa 3.0 vs 3.3.

Are the start options not working or did they change?

Arch Linux 64 bit, mesa 17.2.3 , kernel 4.13.9 on AMD RX480.
Frogging101 Oct 28, 2017 @ 10:58am 
Originally posted by FeatureCreature:
Also with "MESA_GL_VERSION_OVERRIDE=4.5 MESA_GLSL_VERSION_OVERRIDE=450 %command%" I'm not able to play the game. Black screen with a white line as a timer. The game exits without an error message. At startup I still get the messagen with Mesa 3.0 vs 3.3.

Are the start options not working or did they change?

Arch Linux 64 bit, mesa 17.2.3 , kernel 4.13.9 on AMD RX480.

You definitely shouldn't be getting the version mismatch message with those environment variables set. I would carefully check the launch options for typos.
Jose[Linux] Oct 28, 2017 @ 2:10pm 
I can play fine with those parameters. Would be great if Techland could patch the game, though.
You definitely shouldn't be getting the version mismatch message with those environment variables set. I would carefully check the launch options for typos.

I can start up the game with MESA_GL_VERSION_OVERRIDE=4.4 MESA_GLSL_VERSION_OVERRIDE=440 %command% or MESA_GL_VERSION_OVERRIDE=4.5 MESA_GLSL_VERSION_OVERRIDE=450 %command% but after that I get a multicolor pixeled screen for a moment, which looks to me like corrupted memory output. Then it gets dark and a white line is slowly progressing on the bottom from left to right till after a few minutes, the game shuts down.

Now being on mesa 17.2.4 and Kernel 4.13.11
ballysallagh Mar 2, 2018 @ 12:02pm 
I'm also having the same issue.
Without the launch options I get:
1. The unsupported version of OpenGL message
2. A black screen which slowly loads a white line at the bottom for a few seconds before crashing
With the launch options I get:
1. Garbled graphics for a few seconds
2. A black screen which slowly loads a white line at the bottom for a few seconds before crashing

I'm running Debian testing with kernel version 4.14.0, mesa version 17.3.3 on an AMD RX 470.
Easy_Target Mar 2, 2018 @ 8:08pm 
Doesn't work on my end.
Eddie[Linux] May 30, 2018 @ 9:40pm 
Is everybody getting same log in ~/.local/share/Steam/steamapps/common/Dying Light/DW/out/logs?

{07:00:04.229} INFO: [INFO] > [OpenGL] MajorVersionDetected=4 MinorVersionDetected=5
{07:00:04.229} INFO: [INFO] > [OpenGL] Extension ARB_debug_output is supported
{07:00:04.229} INFO: [INFO] > [OpenGL] Extension ARB_blend_func_extended is supported
****HERE****{07:00:04.229} INFO: [INFO] > [OpenGL] Video memory detected: 0 [MB]!
{07:00:04.302} INFO: [INFO] > [OpenGL] GPU's vendor id: 4098 [0x1002]; GPU's device id: 26607 [0x67ef].
{07:00:04.302} INFO: [INFO] > [OpenGL] Shader binary dir = 4_5_Mesa_18_0_4.
{07:00:04.302} INFO: [INFO] > [OpenGL] GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT = 4
{07:00:04.302} INFO: [INFO] > [OpenGL] GL_MAX_UNIFORM_BLOCK_SIZE = 65536
{07:00:04.808} INFO: [INFO] > Texture streaming lowest priority distance set to 100m
{07:00:05.372} INFO: [INFO] > [SDL::WindowMode] Current SwapInterval: 0
{07:00:05.372} INFO: [INFO] > [SDL::SetWindowMode] Setting no vsync resulted in: 0 SDL_GetError: Surface doesn't have a colorkey
{07:00:05.372} INFO: [INFO] > [SDL::WindowMode] Current SwapInterval: 0
{07:00:05.428} INFO: [INFO] > [SDL] Resizing window to 3840x2160 f:1 v:0
{07:02:12.818} INFO: [INFO] > Texture streaming buffer set to 400MB
{07:02:12.834} INFO: [INFO] > >>>>> Audio init
{07:02:13.109} INFO: [INFO] > FMOD::Driver: Default Output Device
{07:02:13.225} INFO: [INFO] > FMOD is using (11) output type.
{07:02:13.225} INFO: [INFO] > FMOD Software Format Info:
{07:02:13.225} INFO: [INFO] | Out Sample Rate: <48000>
{07:02:13.225} INFO: [INFO] | Format: <2>
{07:02:13.225} INFO: [INFO] | Out Channels: <2>
{07:02:13.225} INFO: [INFO] | Max Input Channels: <8>
{07:02:13.225} INFO: [INFO] | Bits: <16>
{07:02:13.225} INFO: [INFO] > FMOD Mixer blocksize = 21.33 ms
{07:02:13.225} INFO: [INFO] > FMOD Mixer blocks count = 4
{07:02:13.225} INFO: [INFO] > FMOD Mixer Total buffer size = 85.33 ms
{07:02:13.225} INFO: [INFO] > FMOD Mixer Average Latency = 53.33 ms
{07:02:13.356} INFO: [INFO] > Caught signal 11 (Segmentation fault).
{07:02:13.390} INFO: [INFO] > /usr/lib/libc.so.6(+0x368f0) [0x7fc3d3d9e8f0]
{07:02:13.390} INFO: [INFO] | libengine.so(_ZN12CTextManager10InitializeEv+0x26f) [0x7fc3d58640cf]
{07:02:13.390} INFO: [INFO] | libengine.so(_Z13CreateTextMgrv+0x40) [0x7fc3d5864220]
{07:02:13.390} INFO: [INFO] | libengine.so(_ZN9CRenderer13LoadResourcesEv+0x2c) [0x7fc3d585187c]
{07:02:13.390} INFO: [INFO] | libengine.so(_ZN5CGame10InitializeEPciPvS1_jjP18IProgressIndicator+0x1944) [0x7fc3d53298b4]
{07:02:13.390} INFO: [INFO] | /home/user/.local/share/Steam/steamapps/common/Dying Light/DyingLightGame(main+0xa45) [0x43e315]
{07:02:13.390} INFO: [INFO] | /usr/lib/libc.so.6(__libc_start_main+0xeb) [0x7fc3d3d8b06b]
{07:02:13.390} INFO: [INFO] | /home/user/.local/share/Steam/steamapps/common/Dying Light/DyingLightGame() [0x4425d9]
Kroanvor Nov 19, 2018 @ 1:58am 
Originally posted by EddieLinux:
Is everybody getting same log in ~/.local/share/Steam/steamapps/common/Dying Light/DW/out/logs?

{07:00:04.229} INFO: [INFO] > [OpenGL] MajorVersionDetected=4 MinorVersionDetected=5
{07:00:04.229} INFO: [INFO] > [OpenGL] Extension ARB_debug_output is supported
{07:00:04.229} INFO: [INFO] > [OpenGL] Extension ARB_blend_func_extended is supported
****HERE****{07:00:04.229} INFO: [INFO] > [OpenGL] Video memory detected: 0 [MB]!
{07:00:04.302} INFO: [INFO] > [OpenGL] GPU's vendor id: 4098 [0x1002]; GPU's device id: 26607 [0x67ef].
{07:00:04.302} INFO: [INFO] > [OpenGL] Shader binary dir = 4_5_Mesa_18_0_4.
{07:00:04.302} INFO: [INFO] > [OpenGL] GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT = 4
{07:00:04.302} INFO: [INFO] > [OpenGL] GL_MAX_UNIFORM_BLOCK_SIZE = 65536
{07:00:04.808} INFO: [INFO] > Texture streaming lowest priority distance set to 100m
{07:00:05.372} INFO: [INFO] > [SDL::WindowMode] Current SwapInterval: 0
{07:00:05.372} INFO: [INFO] > [SDL::SetWindowMode] Setting no vsync resulted in: 0 SDL_GetError: Surface doesn't have a colorkey
{07:00:05.372} INFO: [INFO] > [SDL::WindowMode] Current SwapInterval: 0
{07:00:05.428} INFO: [INFO] > [SDL] Resizing window to 3840x2160 f:1 v:0
{07:02:12.818} INFO: [INFO] > Texture streaming buffer set to 400MB
{07:02:12.834} INFO: [INFO] > >>>>> Audio init
{07:02:13.109} INFO: [INFO] > FMOD::Driver: Default Output Device
{07:02:13.225} INFO: [INFO] > FMOD is using (11) output type.
{07:02:13.225} INFO: [INFO] > FMOD Software Format Info:
{07:02:13.225} INFO: [INFO] | Out Sample Rate: <48000>
{07:02:13.225} INFO: [INFO] | Format: <2>
{07:02:13.225} INFO: [INFO] | Out Channels: <2>
{07:02:13.225} INFO: [INFO] | Max Input Channels: <8>
{07:02:13.225} INFO: [INFO] | Bits: <16>
{07:02:13.225} INFO: [INFO] > FMOD Mixer blocksize = 21.33 ms
{07:02:13.225} INFO: [INFO] > FMOD Mixer blocks count = 4
{07:02:13.225} INFO: [INFO] > FMOD Mixer Total buffer size = 85.33 ms
{07:02:13.225} INFO: [INFO] > FMOD Mixer Average Latency = 53.33 ms
{07:02:13.356} INFO: [INFO] > Caught signal 11 (Segmentation fault).
{07:02:13.390} INFO: [INFO] > /usr/lib/libc.so.6(+0x368f0) [0x7fc3d3d9e8f0]
{07:02:13.390} INFO: [INFO] | libengine.so(_ZN12CTextManager10InitializeEv+0x26f) [0x7fc3d58640cf]
{07:02:13.390} INFO: [INFO] | libengine.so(_Z13CreateTextMgrv+0x40) [0x7fc3d5864220]
{07:02:13.390} INFO: [INFO] | libengine.so(_ZN9CRenderer13LoadResourcesEv+0x2c) [0x7fc3d585187c]
{07:02:13.390} INFO: [INFO] | libengine.so(_ZN5CGame10InitializeEPciPvS1_jjP18IProgressIndicator+0x1944) [0x7fc3d53298b4]
{07:02:13.390} INFO: [INFO] | /home/user/.local/share/Steam/steamapps/common/Dying Light/DyingLightGame(main+0xa45) [0x43e315]
{07:02:13.390} INFO: [INFO] | /usr/lib/libc.so.6(__libc_start_main+0xeb) [0x7fc3d3d8b06b]
{07:02:13.390} INFO: [INFO] | /home/user/.local/share/Steam/steamapps/common/Dying Light/DyingLightGame() [0x4425d9]

Yes.
ragequitters suck Dec 20, 2018 @ 7:53pm 
I'm seeing the same issue others are reporting. Screen with crazy colors flashes for a second, then the screen goes black with the white loading line on the bottom that moves to the right, then crashes without any errors. Vega 64, Mesa drivers, Ubuntu 18.10. Tried with the parameters shown and I'm not seeing any difference.

Would love to be able to play the game.

edit: Figured it out, looks like some linux enthusiasts solved the issue for the game developers. Check out the comments here:

https://www.gamingonlinux.com/forum/topic/2766/page=16

You need to download (from the thread) and copy libGL.so.1 to your ~/.local/share/Steam/steamapps/common/Dying Light directory.
Last edited by ragequitters suck; Dec 20, 2018 @ 8:42pm
I've investigated the issue that causes it to crash when Mesa is compiled with GLVND. Arch compiles with GLVND, maybe other distros too. I'm not sure yet how to fix it at the driver level, but I've made an LD_PRELOAD shim that is easy to compile and mitigates this problem. Details here: https://bugs.freedesktop.org/show_bug.cgi?id=107990#c8
< >
Showing 16-27 of 27 comments
Per page: 15 30 50

Dying Light > General Discussions > Topic Details
Date Posted: May 3, 2017 @ 4:41pm
Posts: 27