From 232ddfec24d2e707c4e374d817c559cc6415d609 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Sun, 24 Jan 2010 14:58:45 +1000 Subject: r300g: fix flushing harder. I swear ipers runs here after this commit. After we flush we need to redo the space check --- src/gallium/drivers/r300/r300_emit.c | 3 ++- src/gallium/drivers/r300/r300_render.c | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/r300/r300_emit.c b/src/gallium/drivers/r300/r300_emit.c index cc40abf168..e08e6c2292 100644 --- a/src/gallium/drivers/r300/r300_emit.c +++ b/src/gallium/drivers/r300/r300_emit.c @@ -1105,9 +1105,10 @@ void r300_emit_dirty_state(struct r300_context* r300) /* Make sure we have at least 2*1024 spare dwords. */ /* XXX It would be nice to know the number of dwords we really need to * XXX emit. */ +again: if (!r300->winsys->check_cs(r300->winsys, dwords)) { r300->context.flush(&r300->context, 0, NULL); - r300_emit_buffer_validate(r300); + goto again; } if (r300->dirty_state & R300_NEW_QUERY) { diff --git a/src/gallium/drivers/r300/r300_render.c b/src/gallium/drivers/r300/r300_render.c index cb2d8d4537..677031ef04 100644 --- a/src/gallium/drivers/r300/r300_render.c +++ b/src/gallium/drivers/r300/r300_render.c @@ -302,6 +302,8 @@ void r300_draw_range_elements(struct pipe_context* pipe, r300_update_derived_state(r300); + r300_emit_buffer_validate(r300); + if (!r300_setup_vertex_buffers(r300)) { return; } @@ -311,8 +313,6 @@ void r300_draw_range_elements(struct pipe_context* pipe, indexSize = 2; } - r300_emit_buffer_validate(r300); - if (!r300->winsys->add_buffer(r300->winsys, indexBuffer, RADEON_GEM_DOMAIN_GTT, 0)) { goto cleanup; -- cgit v1.2.3