summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/r300/r300_flush.c
diff options
context:
space:
mode:
authorMarek Olšák <[email protected]>2010-01-12 21:50:10 +0100
committerCorbin Simpson <[email protected]>2010-01-12 18:08:57 -0800
commit66334847744f2547a6891cbcf2191306a72f04ab (patch)
tree923f5b2519f31351779bb523d608776ad25663c8 /src/gallium/drivers/r300/r300_flush.c
parent90762bd3550338368d989c0b212c10b6e33b023b (diff)
r300g: mark all states as dirty after flush
It fixes almost all regressions introduced lately.
Diffstat (limited to 'src/gallium/drivers/r300/r300_flush.c')
-rw-r--r--src/gallium/drivers/r300/r300_flush.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/gallium/drivers/r300/r300_flush.c b/src/gallium/drivers/r300/r300_flush.c
index 14a08241fc4..c78a7673a3f 100644
--- a/src/gallium/drivers/r300/r300_flush.c
+++ b/src/gallium/drivers/r300/r300_flush.c
@@ -37,6 +37,7 @@ static void r300_flush(struct pipe_context* pipe,
{
struct r300_context *r300 = r300_context(pipe);
struct r300_query *query;
+ struct r300_atom *atom;
CS_LOCALS(r300);
/* We probably need to flush Draw, but we may have been called from
@@ -54,7 +55,15 @@ static void r300_flush(struct pipe_context* pipe,
r300_emit_invariant_state(r300);
r300->dirty_state = R300_NEW_KITCHEN_SINK;
r300->dirty_hw = 0;
+
+ /* New kitchen sink, baby. */
+ foreach(atom, &r300->atom_list) {
+ if (atom->state) {
+ atom->dirty = TRUE;
+ }
+ }
}
+
/* reset flushed query */
foreach(query, &r300->query_list) {
query->flushed = TRUE;