summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCorbin Simpson <[email protected]>2009-02-17 21:30:55 -0800
committerCorbin Simpson <[email protected]>2009-02-17 21:33:59 -0800
commitd25304a2f7fd8dedf95bc3a5f195c63cbc1c1836 (patch)
treef11686e049ea6c0c6ca45de4956e14e3fba82157
parent9f731c8962e536965a04635ef8aa135691b32a35 (diff)
r300-gallium: Consolidate state updates.
-rw-r--r--src/gallium/drivers/r300/r300_emit.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/gallium/drivers/r300/r300_emit.c b/src/gallium/drivers/r300/r300_emit.c
index a2819294a4f..0c86a9c92de 100644
--- a/src/gallium/drivers/r300/r300_emit.c
+++ b/src/gallium/drivers/r300/r300_emit.c
@@ -230,18 +230,23 @@ void r300_emit_dirty_state(struct r300_context* r300)
return;
}
+ r300_update_derived_state(r300);
+
/* XXX check size */
if (r300->dirty_state & R300_NEW_BLEND) {
r300_emit_blend_state(r300, r300->blend_state);
+ r300->dirty_state &= ~R300_NEW_BLEND;
}
if (r300->dirty_state & R300_NEW_BLEND_COLOR) {
r300_emit_blend_color_state(r300, r300->blend_color_state);
+ r300->dirty_state &= ~R300_NEW_BLEND_COLOR;
}
if (r300->dirty_state & R300_NEW_DSA) {
r300_emit_dsa_state(r300, r300->dsa_state);
+ r300->dirty_state &= ~R300_NEW_DSA;
}
if (r300->dirty_state & R300_NEW_FRAGMENT_SHADER) {
@@ -252,15 +257,16 @@ void r300_emit_dirty_state(struct r300_context* r300)
r300_emit_fragment_shader(r300,
(struct r300_fragment_shader*)r300->fs);
}
+ r300->dirty_state &= ~R300_NEW_FRAGMENT_SHADER;
}
if (r300->dirty_state & R300_NEW_RASTERIZER) {
r300_emit_rs_state(r300, r300->rs_state);
+ r300->dirty_state &= ~R300_NEW_RASTERIZER;
}
if (r300->dirty_state & R300_NEW_SCISSOR) {
r300_emit_scissor_state(r300, r300->scissor_state);
+ r300->dirty_state &= ~R300_NEW_SCISSOR;
}
-
- r300->dirty_state = 0;
}