https://bugs.winehq.org/show_bug.cgi?id=40978
Bug ID: 40978 Summary: Wrong colors on i915 and similar GPUs in GTA Vice City Product: Wine Version: 1.9.14 Hardware: x86 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: directx-d3d Assignee: wine-bugs@winehq.org Reporter: b7.10110111@gmail.com Distribution: ---
Created attachment 55135 --> https://bugs.winehq.org/attachment.cgi?id=55135 Screenshot of wrong colors
When trying to run GTAVC on a i915 machine (this also affects Intel Atom N550, since its GPU has similar architecture), the colors are messed up, and menu screen is blinking.
I've tracked the problem down to lack of support of GL_EXT_vertex_array_bgra on i915. I can reproduce it on my Haswell GPU by using MESA_EXTENSION_OVERRIDE=-GL_EXT_vertex_array_bgra. (FWIW, i915 supports GL_ARB_vertex_program, which might be used as a substitute. Although it's not completely HW accelerated, but should be better than pure SW implementation.)
This game worked successfully with wine 1.5.9. I'll try to bisect wine to find the bad commit, but apparently there've been lots of breakages with different symptoms for i915 between wine versions 1.5.9 and 1.9.14, so bisection may be unsuccessful.
https://bugs.winehq.org/show_bug.cgi?id=40978
--- Comment #1 from Ruslan Kabatsayev b7.10110111@gmail.com --- Created attachment 55136 --> https://bugs.winehq.org/attachment.cgi?id=55136 How it should look
Here's a screenshot of how it should look. While in the game menu shown here the colors are only slightly different, in the actual game they are so messed up that sky is orange-brown instead of the correct blue.
https://bugs.winehq.org/show_bug.cgi?id=40978
Ruslan Kabatsayev b7.10110111@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |regression
https://bugs.winehq.org/show_bug.cgi?id=40978
--- Comment #2 from Henri Verbeet hverbeet@gmail.com --- (In reply to Ruslan Kabatsayev from comment #0)
I've tracked the problem down to lack of support of GL_EXT_vertex_array_bgra on i915. I can reproduce it on my Haswell GPU by using MESA_EXTENSION_OVERRIDE=-GL_EXT_vertex_array_bgra. (FWIW, i915 supports GL_ARB_vertex_program, which might be used as a substitute. Although it's not completely HW accelerated, but should be better than pure SW implementation.)
It's certainly possible that the fallback path broke somewhere along the way, since EXT_vertex_array_bgra is so common these days. That would of course be a legitimate regression. What's odd about this is that I was under the impression that i915 supported EXT_vertex_array_bgra, although it's been long enough since I last touched i915 hardware that I could simply be wrong about that.
https://bugs.winehq.org/show_bug.cgi?id=40978
Ruslan Kabatsayev b7.10110111@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |matteo.mystral@gmail.com Regression SHA1| |4189d297760166951641baf6172 | |a1ef708863855
--- Comment #3 from Ruslan Kabatsayev b7.10110111@gmail.com --- Here's the bisection result:
4189d297760166951641baf6172a1ef708863855 is the first bad commit commit 4189d297760166951641baf6172a1ef708863855 Author: Matteo Bruni mbruni@codeweavers.com Date: Thu Jun 11 23:13:42 2015 +0200
wined3d: Avoid the builtin GLSL vertex attributes.
:040000 040000 0c552c7676b3f5c9e10a5609cd43f9624f33a7f7 f12c6f8287d6dfd6fef0d669e6c2ded23dd128a8 M dlls
https://bugs.winehq.org/show_bug.cgi?id=40978
--- Comment #4 from Ruslan Kabatsayev b7.10110111@gmail.com --- Note: the whole bisection was done on a Haswell GPU with this command:
MESA_EXTENSION_OVERRIDE=-GL_EXT_vertex_array_bgra wine explorer /desktop=g,1280x1024 gta-vc.exe
So if you have access to a modern Mesa-driven GPU, you can also test and debug this.
https://bugs.winehq.org/show_bug.cgi?id=40978
--- Comment #5 from Henri Verbeet hverbeet@gmail.com --- Oh, my guess would be that it's because previously it would use diffuse_d3dcolor(), etc. for loading D3DCOLOR attributes, and now it would use the generic vertex loading code. But the generic vertex loading code assumes the vertex shader takes care of any needed swizzling.
https://bugs.winehq.org/show_bug.cgi?id=40978
--- Comment #6 from Ruslan Kabatsayev b7.10110111@gmail.com --- Doesn't support for vertex shaders in fact make GL_EXT_vertex_array_bgra redundant? Maybe to unify the code it'd make more sense to do the swizzles in the shader unconditionally?
https://bugs.winehq.org/show_bug.cgi?id=40978
--- Comment #7 from Henri Verbeet hverbeet@gmail.com --- Does this work any better with current git? b62f4139eda58e8e25cbc58864fcea2599a20e97 in particular may have helped.
(In reply to Ruslan Kabatsayev from comment #6)
Doesn't support for vertex shaders in fact make GL_EXT_vertex_array_bgra redundant? Maybe to unify the code it'd make more sense to do the swizzles in the shader unconditionally?
We need EXT_vertex_array_bgra for hardware that can't do GLSL, and it's a little nicer than doing swizzles in the shader. For what it's worth, I don't think there's any reason i915 couldn't support EXT_vertex_array_bgra, it should be fairly straightforward to add for someone familiar with the driver.
https://bugs.winehq.org/show_bug.cgi?id=40978
--- Comment #8 from Ruslan Kabatsayev b7.10110111@gmail.com --- (In reply to Henri Verbeet from comment #7)
Does this work any better with current git? b62f4139eda58e8e25cbc58864fcea2599a20e97 in particular may have helped.
This is somewhat harder to test currently due to bug 41055, since no textures are present in the game at all. But the untextured quads do seem to have correct colors.
https://bugs.winehq.org/show_bug.cgi?id=40978
winetest@luukku.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |winetest@luukku.com
--- Comment #9 from winetest@luukku.com --- (In reply to Ruslan Kabatsayev from comment #8)
(In reply to Henri Verbeet from comment #7)
Does this work any better with current git? b62f4139eda58e8e25cbc58864fcea2599a20e97 in particular may have helped.
This is somewhat harder to test currently due to bug 41055, since no textures are present in the game at all. But the untextured quads do seem to have correct colors.
Now the other bug is marked fixed.
https://bugs.winehq.org/show_bug.cgi?id=40978
--- Comment #10 from Ruslan Kabatsayev b7.10110111@gmail.com --- (In reply to winetest from comment #9)
Now the other bug is marked fixed.
Thanks for reminder. I've tested with 1.9.24, the colors are correct now.
https://bugs.winehq.org/show_bug.cgi?id=40978
Alistair Leslie-Hughes leslie_alistair@hotmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |FIXED Status|UNCONFIRMED |RESOLVED
--- Comment #11 from Alistair Leslie-Hughes leslie_alistair@hotmail.com --- Reported as fixed
https://bugs.winehq.org/show_bug.cgi?id=40978
Matteo Bruni matteo.mystral@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Fixed by SHA1| |b62f4139eda58e8e25cbc58864f | |cea2599a20e97
https://bugs.winehq.org/show_bug.cgi?id=40978
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #12 from Alexandre Julliard julliard@winehq.org --- Closing bugs fixed in 2.0-rc2.
https://bugs.winehq.org/show_bug.cgi?id=40978
Michael Stefaniuc mstefani@redhat.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|--- |1.8.x
https://bugs.winehq.org/show_bug.cgi?id=40978
Michael Stefaniuc mstefani@redhat.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|1.8.x |---
--- Comment #13 from Michael Stefaniuc mstefani@redhat.com --- Removing 1.8.x milestone from bugs included in 1.8.7.