summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/r600/r600_draw.c
diff options
context:
space:
mode:
authorJerome Glisse <jglisse@redhat.com>2010-08-03 17:02:48 -0400
committerJerome Glisse <jglisse@redhat.com>2010-08-03 17:02:48 -0400
commita0b3944c30fdecf5ef97fd602b8a286bcc80fed3 (patch)
tree090c8615bf606d041f9be3cb3bf12604f601ba20 /src/gallium/drivers/r600/r600_draw.c
parent3a8d4a89795d180b910b2c0dfa98c57cf9bb45a6 (diff)
r600g: flush and resubmit if we reach limit
Signed-off-by: Jerome Glisse <jglisse@redhat.com>
Diffstat (limited to 'src/gallium/drivers/r600/r600_draw.c')
-rw-r--r--src/gallium/drivers/r600/r600_draw.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/gallium/drivers/r600/r600_draw.c b/src/gallium/drivers/r600/r600_draw.c
index c52dfd3fb3..43c805b982 100644
--- a/src/gallium/drivers/r600/r600_draw.c
+++ b/src/gallium/drivers/r600/r600_draw.c
@@ -170,6 +170,10 @@ static int r600_draw_common(struct r600_draw *draw)
return r;
/* FIXME */
r = radeon_ctx_set_draw_new(rctx->ctx, rctx->draw);
+ if (r == -EBUSY) {
+ r600_flush(draw->ctx, 0, NULL);
+ r = radeon_ctx_set_draw_new(rctx->ctx, rctx->draw);
+ }
if (r)
return r;
rctx->draw = radeon_draw_duplicate(rctx->draw);