From: Corbin Simpson Date: Wed, 11 Mar 2009 22:20:16 +0000 (-0700) Subject: r300-gallium: Don't flush textures more than necessary. X-Git-Tag: 062012170305~17580^2~185 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d375a3bdda68a22972f18e9ee2ba5786c5e6757d;p=profile%2Fivi%2Fmesa.git r300-gallium: Don't flush textures more than necessary. --- diff --git a/src/gallium/drivers/r300/r300_emit.c b/src/gallium/drivers/r300/r300_emit.c index 68741e9..c2ad3ac 100644 --- a/src/gallium/drivers/r300/r300_emit.c +++ b/src/gallium/drivers/r300/r300_emit.c @@ -327,6 +327,7 @@ void r300_emit_dirty_state(struct r300_context* r300) { struct r300_screen* r300screen = r300_screen(r300->context.screen); int i; + int dirty_tex = 0; if (!(r300->dirty_state) && !(r300->dirty_hw)) { return; @@ -382,8 +383,8 @@ void r300_emit_dirty_state(struct r300_context* r300) if (r300->dirty_state & (R300_NEW_SAMPLER << i)) { r300_emit_sampler(r300, r300->sampler_states[i], i); r300->dirty_state &= ~(R300_NEW_SAMPLER << i); + dirty_tex++; } - r300_flush_textures(r300); } } @@ -397,11 +398,15 @@ void r300_emit_dirty_state(struct r300_context* r300) if (r300->dirty_state & (R300_NEW_TEXTURE << i)) { r300_emit_texture(r300, r300->textures[i], i); r300->dirty_state &= ~(R300_NEW_TEXTURE << i); + dirty_tex++; } - r300_flush_textures(r300); } } + if (dirty_tex) { + r300_flush_textures(r300); + } + if (r300->dirty_state & R300_NEW_VERTEX_FORMAT) { r300_emit_vertex_format_state(r300); r300->dirty_state &= ~R300_NEW_VERTEX_FORMAT;