diff options
author | Corbin Simpson <[email protected]> | 2009-02-17 21:30:55 -0800 |
---|---|---|
committer | Corbin Simpson <[email protected]> | 2009-02-17 21:33:59 -0800 |
commit | d25304a2f7fd8dedf95bc3a5f195c63cbc1c1836 (patch) | |
tree | f11686e049ea6c0c6ca45de4956e14e3fba82157 /src/gallium/drivers/r300 | |
parent | 9f731c8962e536965a04635ef8aa135691b32a35 (diff) |
r300-gallium: Consolidate state updates.
Diffstat (limited to 'src/gallium/drivers/r300')
-rw-r--r-- | src/gallium/drivers/r300/r300_emit.c | 10 |
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; } |