Bug 30156

Summary: [Wine] After updating to mesa 7.9 dev, Civilization IV starts to show garbage
Product: Mesa Reporter: Jaime Rave <jaimerave>
Component: Drivers/DRI/i965Assignee: Eric Anholt <eric>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: medium Keywords: regression
Version: git   
Hardware: x86 (IA32)   
OS: Linux (All)   
URL: http://www.gamershell.com/download_11624.shtml
Whiteboard:
i915 platform: i915 features:
Attachments: Screenshot of the problem
Another screenshot showing the problem in game
Crash log
Screenshot of the issue
another screenshot in game

Description Jaime Rave 2010-09-12 21:19:04 UTC
Created attachment 38659 [details]
Screenshot of the problem

You can see this bug with the demo version of Civilization 4. When you try to select you civilization, in the place where the image of your character appear there are only garbage like in the screenshot attached. This didn't happen with mesa 7.8.2 so this is a regression.

I'm using Ubuntu Maverick and the Xorg-edgers PPA:

Mesa DRI Mobile IntelĀ® GM45 Express Chipset GEM 20100330 DEVELOPMENT x86/MMX/SSE2

OpenGL version string: 2.1 Mesa 7.9-devel

You can get the demo from here: http://www.gamershell.com/download_11624.shtml
Comment 1 Jaime Rave 2010-09-12 21:21:01 UTC
Created attachment 38660 [details]
Another screenshot showing the problem in game
Comment 2 Jaime Rave 2010-10-08 23:03:19 UTC
Any additional information I can apport. Maybe some logs or the output of an specific debug channel? Is still a problem with today mesa git and intel from git.
Comment 3 Jaime Rave 2010-10-13 23:40:13 UTC
Created attachment 39430 [details]
Crash log

With todays git from xorg-edgers I'm getting a crash just before the broken animation is shown. I'm attaching the complete crash backtrace.
Comment 4 Eric Anholt 2010-10-14 15:53:40 UTC
That should have been fixed by:

commit 9fea9e5e2115bcb52435648d2ef753638733d7d9
Author: Ian Romanick <ian.d.romanick@intel.com>
Date:   Tue Oct 12 12:50:29 2010 -0700

    glsl: Fix incorrect assertion
Comment 5 Jaime Rave 2010-10-18 15:36:51 UTC
Created attachment 39519 [details]
Screenshot of the issue

With 
mesa 7.10.0+git20101017.98b3f274-0ubuntu0sarvatt and 
Intel driver 2:2.12.902+git20101017.33133a1d-0ubuntu0sarvatt

the problem is even worst, now there's only white and black textures everywhere. I'm attaching some screenshots.
Comment 6 Jaime Rave 2010-10-18 15:39:35 UTC
Created attachment 39520 [details]
another screenshot in game

The crash is not happening anymore, but now i don't have any kind of textures.
Comment 7 Jaime Rave 2010-12-20 20:21:28 UTC
The game looks correct when stating Ubuntu in low graphics mode and using swarst but is really slow.
Comment 8 Eric Anholt 2010-12-25 08:29:45 UTC
Please retest with Mesa as of:

commit 5dc53444c8323c1787dddbe6b67048828df9c684
Author: Eric Anholt <eric@anholt.net>
Date:   Wed Dec 22 22:46:12 2010 -0800

    i965: Correct the dp_read message descriptor setup on g4x.
    
    It's mostly like gen4 message descriptor setup, except that the sizes
    of type/control changed to be like gen5.  Fixes 21 piglit cases on
    gm45, including the regressions in bug #32311 from increased VS
    constant buffer usage.
Comment 9 Eric Anholt 2011-01-07 13:19:19 UTC
Confirmed, still an issue as of Mesa master at ff0f0875135a7842e78fae002ee1187892f9405b
Comment 10 Eric Anholt 2011-01-07 14:40:01 UTC
commit 7bc2602f2921596cc9bb7a401612276a2dce00e6
Author: Eric Anholt <eric@anholt.net>
Date:   Fri Jan 7 14:24:41 2011 -0800

    vp-constant-negate: New test for bug #30156 in Civ4 on i965.

commit 1d1ad6306d0d55b6ba97d9ecc730d5f919d55df5
Author: Eric Anholt <eric@anholt.net>
Date:   Fri Jan 7 14:26:39 2011 -0800

    i965: Avoid double-negation of immediate values in the VS.
    
    In general, we have to negate in immediate values we pass in because
    the src1 negate field in the register description is in the bits3 slot
    that the 32-bit value is loaded into, so it's ignored by the hardware.
    However, the src0 negate field is in bits1, so after we'd negated the
    immediate value loaded in, it would also get negated through the
    register description.  This broke this VP instruction in the position
    calculation in civ4:
    
    MAD TEMP[1], TEMP[1], CONST[256].zzzz, CONST[256].-y-y-y-y;
    
    Bug #30156