http://bugs.winehq.org/show_bug.cgi?id=33825
Bug #: 33825 Summary: Splinter Cell: Conviction - glsl shaders error Product: Wine Version: 1.6-rc2 Platform: x86 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: directx-d3d AssignedTo: wine-bugs@winehq.org ReportedBy: andrey.goosev@gmail.com CC: andrey.goosev@gmail.com Classification: Unclassified
Playing version 1.04 Strings after several minutes, but rendering without issues. Workaround is to set 'glsl=disabled'.
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 6172 err:d3d_shader:shader_glsl_load_constantsB >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from shader_glsl_load_constantsB() @ glsl_shader.c / 746
http://bugs.winehq.org/show_bug.cgi?id=33825
Andrey Gusev andrey.goosev@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |wine-bugs@winehq.org Component|directx-d3d |directx-d3dx9
http://bugs.winehq.org/show_bug.cgi?id=33825
Christian Costa titan.costa@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |titan.costa@gmail.com
--- Comment #1 from Christian Costa titan.costa@gmail.com 2013-06-23 15:50:40 CDT --- Can you attach the log?
http://bugs.winehq.org/show_bug.cgi?id=33825
--- Comment #2 from Andrey Gusev andrey.goosev@gmail.com 2013-06-24 04:23:26 CDT --- But I should to install native Directx for running the game, it's ok?
http://bugs.winehq.org/show_bug.cgi?id=33825
--- Comment #3 from Christian Costa titan.costa@gmail.com 2013-06-24 04:33:52 CDT --- Just attach the log you get when glsl is enabled until the messages you mention appear. This way we can see all messages from the beginning. Use tail -f on the file to which you redirected the output.
http://bugs.winehq.org/show_bug.cgi?id=33825
--- Comment #4 from Andrey Gusev andrey.goosev@gmail.com 2013-06-24 06:12:16 CDT --- Created attachment 44935 --> http://bugs.winehq.org/attachment.cgi?id=44935 log
http://bugs.winehq.org/show_bug.cgi?id=33825
--- Comment #5 from Christian Costa titan.costa@gmail.com 2013-06-24 06:43:44 CDT --- Ok. Thanks. First offending line is: fixme:d3d_shader:shader_glsl_validate_link Program 248 link status invalid.
Then objects 69, 249 and 247 are dumped and then shader compilation error: fixme:d3d_shader:print_glsl_info_log Info log received from GLSL shader #248: fixme:d3d_shader:print_glsl_info_log Fragment info fixme:d3d_shader:print_glsl_info_log ------------- fixme:d3d_shader:print_glsl_info_log (0) : error C6001: Temporary register limit of 2 exceeded; 3 registers needed to compile program
It's odd 3 shaders are dumped and it seems shader 248 corresponds to the object 247.
http://bugs.winehq.org/show_bug.cgi?id=33825
Matteo Bruni matteo.mystral@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |matteo.mystral@gmail.com
--- Comment #6 from Matteo Bruni matteo.mystral@gmail.com 2013-06-24 10:59:25 CDT --- (In reply to comment #5)
Ok. Thanks. First offending line is: fixme:d3d_shader:shader_glsl_validate_link Program 248 link status invalid.
Then objects 69, 249 and 247 are dumped and then shader compilation error: fixme:d3d_shader:print_glsl_info_log Info log received from GLSL shader #248: fixme:d3d_shader:print_glsl_info_log Fragment info fixme:d3d_shader:print_glsl_info_log ------------- fixme:d3d_shader:print_glsl_info_log (0) : error C6001: Temporary register limit of 2 exceeded; 3 registers needed to compile program
It's odd 3 shaders are dumped and it seems shader 248 corresponds to the object 247.
It looks like a couple of shaders are too complex for your GPU. What GPU and drivers are you using?
This is not a d3dx9 bug BTW.
http://bugs.winehq.org/show_bug.cgi?id=33825
--- Comment #7 from Andrey Gusev andrey.goosev@gmail.com 2013-06-24 11:13:44 CDT --- (In reply to comment #6)
It looks like a couple of shaders are too complex for your GPU. What GPU and drivers are you using?
Nvidia GeForce GT 540M and 319.23 driver.
This is not a d3dx9 bug BTW.
directx-d3d will be alright?
http://bugs.winehq.org/show_bug.cgi?id=33825
--- Comment #8 from Christian Costa titan.costa@gmail.com 2013-06-24 11:20:00 CDT --- This GPU is rather new. It's quite surprising. The limit of 2 corresponds to ps 1.0 to 1.3. Maybe a driver bug? directx-d3d would be better yes.
http://bugs.winehq.org/show_bug.cgi?id=33825
Andrey Gusev andrey.goosev@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|directx-d3dx9 |directx-d3d
http://bugs.winehq.org/show_bug.cgi?id=33825
--- Comment #9 from Matteo Bruni matteo.mystral@gmail.com 2013-06-24 11:39:04 CDT --- (In reply to comment #8)
This GPU is rather new. It's quite surprising. The limit of 2 corresponds to ps 1.0 to 1.3. Maybe a driver bug?
Maybe the error message is not very accurate e.g. it's trying to use 3 temporary registers in a single instruction which doesn't support it. Just random guesses since I don't know the details of that GPU. It might very well be a driver bug. Make sure your 32-bit drivers are up to date, if you're on a 64-bit distro.
I'm not sure we can do much about it. Does lowering graphical settings in-game help?
http://bugs.winehq.org/show_bug.cgi?id=33825
--- Comment #10 from Andrey Gusev andrey.goosev@gmail.com 2013-06-24 11:53:17 CDT --- (In reply to comment #9)
Maybe the error message is not very accurate e.g. it's trying to use 3 temporary registers in a single instruction which doesn't support it. Just random guesses since I don't know the details of that GPU. It might very well be a driver bug. Make sure your 32-bit drivers are up to date, if you're on a 64-bit distro.
I'm not sure we can do much about it. Does lowering graphical settings in-game help?
I'm on 32-bit distro and 319.23 the latest driver for card. All in-game settings set to 'Low'.
http://bugs.winehq.org/show_bug.cgi?id=33825
Henri Verbeet hverbeet@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution| |UPSTREAM
--- Comment #11 from Henri Verbeet hverbeet@gmail.com 2013-06-25 06:09:39 CDT --- (In reply to comment #9)
Maybe the error message is not very accurate e.g. it's trying to use 3 temporary registers in a single instruction which doesn't support it. Just random guesses since I don't know the details of that GPU. It might very well be a driver bug. Make sure your 32-bit drivers are up to date, if you're on a 64-bit distro.
It's a driver bug. I looked into it for Split Second at some point, and IIRC the compiler basically seemed to run out of "condition registers" for CMOV-like instructions. It could be avoided by using explicit "if {} else {}" flow for instructions like cnd and cmp, of course at the cost of generating worse code. I wrote a testcase to reproduce it and submit to nvidia at the time, but nobody cared. I could probably dig it somewhere out of my email archive if anyone wants to try again, but I'm not holding my breath.
https://bugs.winehq.org/show_bug.cgi?id=33825
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #12 from Austin English austinenglish@gmail.com --- Closing.
https://bugs.winehq.org/show_bug.cgi?id=33825
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|CLOSED |RESOLVED
--- Comment #13 from Austin English austinenglish@gmail.com --- This was inadvertently caught up in my unclosed bugs filter. NOTOURBUG should only be closed when fixed upstream.
Setting back to RESOLVED NOTOURBUG.
Sorry for the spam.