nv30: band-aid viewport issues
authorLuca Barbieri <luca@luca-barbieri.com>
Mon, 16 Aug 2010 14:55:00 +0000 (16:55 +0200)
committerLuca Barbieri <luca@luca-barbieri.com>
Sat, 21 Aug 2010 18:42:14 +0000 (20:42 +0200)
For some reason nv30 seems to like to reset the viewport, even though
attempts to isolate where exactly it does that have currently been
inconclusive.

src/gallium/drivers/nvfx/nvfx_state_emit.c

index 2e0e366ca3d06c9d94a764bf7b82a09938d200f9..7a706ea6d77a80b283391e3e9b2e5fbd3fc323fc 100644 (file)
@@ -109,12 +109,14 @@ nvfx_state_validate_common(struct nvfx_context *nvfx)
        if(dirty & NVFX_NEW_SR)
                nvfx_state_sr_validate(nvfx);
 
-/* Having this depend on FB looks wrong, but it seems
-   necessary to make this work on nv3x
+/* All these dependencies are wrong, but otherwise
+   etracer, neverball, foobillard, glest totally misrender
    TODO: find the right fix
 */
-       if(dirty & (NVFX_NEW_VIEWPORT | NVFX_NEW_FB))
+       if(dirty & (NVFX_NEW_VIEWPORT | NVFX_NEW_RAST | NVFX_NEW_ZSA) || (all_swizzled > 0))
+       {
                nvfx_state_viewport_validate(nvfx);
+       }
 
        if(flush_tex_cache)
        {