Summary: | Commit 29361e14 causes white textures in Civ V under wine | ||
---|---|---|---|
Product: | Mesa | Reporter: | Christopher James Halse Rogers <chalserogers> |
Component: | Drivers/DRI/i965 | Assignee: | Kenneth Graunke <kenneth> |
Status: | RESOLVED FIXED | QA Contact: | |
Severity: | normal | ||
Priority: | medium | CC: | eric, eugeni, idr, kenneth, mike |
Version: | git | ||
Hardware: | Other | ||
OS: | All | ||
Whiteboard: | |||
i915 platform: | i915 features: |
Description
Christopher James Halse Rogers
2011-10-20 00:12:53 UTC
Proposed patch series sent to mailing list and to the reporter. I've tested it with another application that exhibits similar issues and works with the same patch reverted, but I haven't tested Civilization V itself. Thanks for the report and for testing the proposed patches! This is now fixed in master: commit 07ee9f374f2946f852896e9264c7fa83eafc3f16 Author: Kenneth Graunke <kenneth@whitecape.org> Date: Fri Dec 23 20:24:46 2011 -0800 i965/vs: Properly clear cur_value when propagating direct copies. Consider the following code: MOV A.x, B.x MOV B.x, C.x After the first line, cur_value[A][0] == B, indicating that A.x's current value came from register B. When processing the second line, we update cur_value[B][0] to C. However, for drect copies, we fail to reset cur_value[A][0] to NULL. This is necessary because the value of A is no longer the value of B. Fixes Counter-Strike: Source in Wine (where the menu rendered completely black in DX9 mode), completely white textures in Civilization V, and the new Piglit test glsl-vs-copy-propagation-1.shader_test. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=42032 Tested-by: Matt Turner <mattst88@gmail.com> Tested-by: Christopher James Halse Rogers <christopher.halse.rogers@canonica Reviewed-by: Eric Anholt <eric@anholt.net> Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> commit 443c8d1ab7ddad9392046e041e4e9a4fda7cd6e7 Author: Kenneth Graunke <kenneth@whitecape.org> Date: Fri Dec 23 19:57:08 2011 -0800 i965/vs: Fix incorrect subscript when resetting copy propagation records. In this code, 'i' loops over the number of virtual GRFs, while 'j' loops over the number of vector components (0 <= j <= 3). It can't possibly be correct to see if bit 'i' is set in the destination writemask, as it will have values much larger than 3. Clearly this is supposed to be 'j'. Found by inspection. Tested-by: Matt Turner <mattst88@gmail.com> Tested-by: Christopher James Halse Rogers <christopher.halse.rogers@canonica Reviewed-by: Eric Anholt <eric@anholt.net> Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> |
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.