Created attachment 129435 [details] [review] drirc patch Use-case: - Install Steam & Metro 2033 Redux game - Run game and switch it to High gfx quality - Run again with warnings enabled Actual outcome (from apitrace replay): - This: -------------------- warning: compilation failed warning: 0:16(1): error: #extension directive is not allowed in the middle of a shader warning: link failed warning: error: linking with uncompiled shader warning: link failed warning: error: linking with uncompiled shader -------------------- - And tens of these during startup & browsing game options: -------------------- warning: glGetError(glUseProgram) = GL_INVALID_OPERATION warning: program validation failed -------------------- That shader seems to be used only during loading & menus, and I didn't notice any obvious rendering issues, but may be still better to add drirc workaround for it. See attached patch for an example. Note: I don't have Metro Last Light Redux, but it may have the same issue and same binary name. Earlier non-Redux version of MetroLL didn't have this issue, and has different binary name.
PS. At least on Intel SKL with latest Mesa, something weird happens when switching between gfx quality levels. Trying e.g. to switch to "Very high" level (by exiting the video options with ESC) freezes the game for few minutes after which it back to viddeo options. Can somebody reproduce that behavior?
> At least on Intel SKL with latest Mesa, something weird happens when switching between gfx quality levels. Trying e.g. to switch to "Very high" level (by exiting the video options with ESC) freezes the game for few minutes after which it back to viddeo options. The game seems to recreate *all* shaders in this case. The game also starts a prompt to ask the user to accept the new settings with a 30 second timeout and if there's no input in the meantime, it will reset to the old settings. However, due to the shader compiler hang, the prompt never actually displays. This used to be a problem with radeonsi, but with the more recent optimizations to shader compilation, it now typically takes less than 30 seconds to recover from the hang, so it mostly works.
Thanks! I guess this is one of the use-cases that actually *requires* shader compiler cache to work, so that user can (on second try) actually exit from the gfx options. Should I file (a separate) bug about that too?
Is this still a problem? If so can you rebase the patch and send it to the list?
(In reply to Timothy Arceri from comment #4) > Is this still a problem? If so can you rebase the patch and send it to the > list? I don't know, I haven't had time to try any Steam stuff for several months. Unfortunately it seems that I won't have time for that in next few months either. I assume the second issue (gfx level change failing because shader compilation takes too long), will now succeed at least on second try due to shader cache being enabled by default.
Hi Euro, Got the same issue with the Metro Last Light Redux: : GLSL source for fragment shader 498: : #version 400 struct vec1 { float x; }; struct uvec1 { uint x; }; struct ivec1 { int x; }; subroutine void SubroutineType(); layout(std140) uniform; layout(location = 0) out vec4 PixOutput0; #define Output0 PixOutput0 #ifdef GL_ARB_conservative_depth #extension GL_ARB_conservative_depth : enable layout (depth_greater) out float gl_FragDepth; #endif void main() { Output0 = vec4(vec4(1.00000000000, 1.00000000000, 1.00000000000, 1.00000000000)).xyzw; gl_FragDepth = vec4(1.00000000000).x; return; } : Info Log: 0:16(1): error: #extension directive is not allowed in the middle of a shader I didn't noticed any visual issues (but suppose it should be fixed anyway). Last Night Redux is run with the same binary name (metro) as in case of Metro 2033 redux. So your patch fixes both cases. I re-based and tested your patch and confirm it fixes the issue. Can you please send the patch for review ? Or just let me know it you want me to send it.
(In reply to vadym from comment #6) > I didn't noticed any visual issues (but suppose it should be fixed anyway). > Last Night Redux is run with the same binary name (metro) as in case of > Metro 2033 redux. So your patch fixes both cases. I re-based and tested your > patch and confirm it fixes the issue. Thanks for testing! As it fixes both, the name attribute in patch should state that too, e.g: name="Metro 2033 Redux / Last Light Redux" > Can you please send the patch for review ? Or just let me know it you want > me to send it. Unfortunately I still don't have time for Steam stuff, so if you could update the patch and do that, it would be great! Patch description should contain: Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99730
(In reply to Eero Tamminen from comment #7) > (In reply to vadym from comment #6) > > I didn't noticed any visual issues (but suppose it should be fixed anyway). > > Last Night Redux is run with the same binary name (metro) as in case of > > Metro 2033 redux. So your patch fixes both cases. I re-based and tested your > > patch and confirm it fixes the issue. > > Thanks for testing! > > As it fixes both, the name attribute in patch should state that too, e.g: > name="Metro 2033 Redux / Last Light Redux" > > > > Can you please send the patch for review ? Or just let me know it you want > > me to send it. > > Unfortunately I still don't have time for Steam stuff, so if you could > update the patch and do that, it would be great! > > > Patch description should contain: > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99730 Patch pushed for review https://patchwork.freedesktop.org/patch/242827/
Fixed by: commit e0de26eacc93f431962533f50d57e58335843d6b Author: vadym.shovkoplias <vadim.shovkoplias@gmail.com> Date: Mon Aug 6 15:52:13 2018 +0300 drirc: Allow extension midshader for Metro Redux This fixes both Metro 2033 Redux and Metro Last Light Redux Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99730 Signed-off-by: Eero Tamminen <eero.t.tamminen@intel.com> Signed-off-by: Vadym Shovkoplias <vadym.shovkoplias@globallogic.com> Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.