summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gallium/drivers/nvfx/nvfx_state_emit.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/gallium/drivers/nvfx/nvfx_state_emit.c b/src/gallium/drivers/nvfx/nvfx_state_emit.c
index a959015c8b9..60ed2d0a4c6 100644
--- a/src/gallium/drivers/nvfx/nvfx_state_emit.c
+++ b/src/gallium/drivers/nvfx/nvfx_state_emit.c
@@ -244,6 +244,9 @@ nvfx_state_validate_common(struct nvfx_context *nvfx)
}
if(dirty & NVFX_NEW_SAMPLER) {
+ /* XXX: we take the big hammer here, I have no idea why this is needed
+ to make this work properly */
+ nvfx->dirty &= ~NVFX_NEW_SAMPLER;
nvfx_fragtex_validate(nvfx);
// TODO: only set this if really necessary
@@ -303,7 +306,8 @@ nvfx_state_validate_common(struct nvfx_context *nvfx)
if(dirty & NVFX_NEW_SR)
nvfx_state_sr_validate(nvfx);
- if(dirty & NVFX_NEW_VIEWPORT)
+ /* XXX: nv3x needs viewport revalidation after RAST or ZSA change */
+ if(dirty & (NVFX_NEW_VIEWPORT | NVFX_NEW_RAST | NVFX_NEW_ZSA))
{
nvfx_state_viewport_validate(nvfx);
}