[Bug 34030] New: [bisected] Starcraft 2: some effects are corrupted or too big

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Tue Feb 8 04:15:27 PST 2011


           Summary: [bisected] Starcraft 2: some effects are corrupted or
                    too big
           Product: Mesa
           Version: git
          Platform: Other
        OS/Version: All
            Status: NEW
          Keywords: regression
          Severity: minor
          Priority: medium
         Component: Drivers/Gallium/r300
        AssignedTo: dri-devel at lists.freedesktop.org
        ReportedBy: pavel.ondracka at email.cz

Created an attachment (id=43092)
 --> (https://bugs.freedesktop.org/attachment.cgi?id=43092)
screenshot of the problem

With latest mesa git there are some messed up effects in Starcraft 2
(harvesting drones, vespene geysers, and some surfaces have solid background
color insted transparent). This is with Wine 1.3.13 and GLSL disabled in Wine.
(GLSL codepath works fine)

I did a regression test:
68b701f5ded5f6b73a6b07cf37d862fab4836607 is the first bad commit
commit 68b701f5ded5f6b73a6b07cf37d862fab4836607
Author: Tom Stellard <tstellar at gmail.com>
Date:   Sat Feb 5 22:39:58 2011 -0800

    r300/compiler: Disable register rename pass on r500

    The scheduler and the register allocator are not good enough yet to deal
    with the effects of the register rename pass.  This was causing a 50%
    performance drop in Lightsmark.  The pass can be re-enabled once the
    scheduler and the register allocator are more mature.  r300 and r400
    still need this pass, because it prevents a lot of shaders from using
    too many texture indirections.

    NOTE: This is a candidate for the 7.10 branch.

However this looked like unlikely to cause this regression, I was quite sure it
worked before register rename pass was introduced and indeed commit
bbe49bc585c4fed46f55d184b463d13bddd97f1b (r300/compiler: Use presubtract
operations as much as possible) was working fine. Also commit    
8833f53e659e079e7ab74bb9197f9b44b1eeefe0 (r300/compiler: Enable rename_reg pass
for r500 cards) alone or with 68b701f5ded5f6b73a6b07cf37d862fab4836607 manually
applied worked fine, so this have led me to an idea that the actual regression
happened somewhere between 8833f53e659e079e7ab74bb9197f9b44b1eeefe0 and
68b701f5ded5f6b73a6b07cf37d862fab4836607 and was hidden by the register rename
pass. Finally bisecting between mentioned commits and manually applying
68b701f5ded5f6b73a6b07cf37d862fab4836607 in each step led to:

8f32c6cfc6503dd234f09fb06941803866c23c65 is the first bad commit
commit 8f32c6cfc6503dd234f09fb06941803866c23c65
Author: Tom Stellard <tstellar at gmail.com>
Date:   Sat Jan 29 14:37:58 2011 -0800

    r300/compiler: Standardize the number of bits used by swizzle fields

    Swizzles are now defined everywhere as a field with 12 bits that contains
    4 channels worth of meaningful information.  Any channel that is unused is
    set to RC_SWIZZLE_UNUSED.  This change is necessary because rgb
    and alpha instructions were initializing channels that would never be used
    (channel 3 for rgb and channels 1-3 for alpha) with 0 (aka RC_SWIZZLE_X).
    This made it impossible to use generic helper functions for swizzles,
    because sometimes a channel value of 0 meant unused and other times it
    meant RC_SWIZZLE_X.

    All hacks that tried to guess how many channels were relevant have
    also been removed.

Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.

More information about the dri-devel mailing list