summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/radeonsi/si_state_draw.c
diff options
context:
space:
mode:
authorChristian König <[email protected]>2012-09-14 17:05:34 +0200
committerChristian König <[email protected]>2012-09-26 11:04:36 +0200
commit04473db38ade5902a6ad49dba8ca8215599d57be (patch)
tree32a45fcbaff0db2f2c42d3b49649e9cf6cbce337 /src/gallium/drivers/radeonsi/si_state_draw.c
parent112caa853d53467a9c0ef171f272505db0278c6a (diff)
radeonsi: start reworking inferred state handling
Instead of tracking the inferred state changes separately just check if queued and emitted states are the same. This patch just reworks the update of the SPI map between vs and ps, but there are probably more cases like this. Signed-off-by: Christian König <[email protected]> Reviewed-by: Michel Dänzer <[email protected]>
Diffstat (limited to 'src/gallium/drivers/radeonsi/si_state_draw.c')
-rw-r--r--src/gallium/drivers/radeonsi/si_state_draw.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/src/gallium/drivers/radeonsi/si_state_draw.c b/src/gallium/drivers/radeonsi/si_state_draw.c
index 0cb8b7180e4..2608ad0b360 100644
--- a/src/gallium/drivers/radeonsi/si_state_draw.c
+++ b/src/gallium/drivers/radeonsi/si_state_draw.c
@@ -406,12 +406,10 @@ static void si_update_derived_state(struct r600_context *rctx)
if (ps_dirty) {
si_pm4_bind_state(rctx, ps, rctx->ps_shader->current->pm4);
- rctx->shader_dirty = true;
}
- if (rctx->shader_dirty) {
+ if (si_pm4_state_changed(rctx, ps) || si_pm4_state_changed(rctx, vs)) {
si_update_spi_map(rctx);
- rctx->shader_dirty = false;
}
}