From 0967970768c517c8c2f1a969e0a043982b4b1bf7 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Sun, 20 Apr 2014 00:53:32 +0200 Subject: [PATCH] r600g: fix buffer copying on R600-R700 This fixes broken rendering in DOTA 2. Cc: 10.0 10.1 mesa-stable@lists.freedesktop.org Reviewed-by: Alex Deucher --- src/gallium/drivers/r600/r600_blit.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/gallium/drivers/r600/r600_blit.c b/src/gallium/drivers/r600/r600_blit.c index 98c07b5afdb..1a2a9112631 100644 --- a/src/gallium/drivers/r600/r600_blit.c +++ b/src/gallium/drivers/r600/r600_blit.c @@ -500,6 +500,12 @@ static void r600_copy_buffer(struct pipe_context *ctx, struct pipe_resource *dst } else { util_resource_copy_region(ctx, dst, 0, dstx, 0, 0, src, 0, src_box); } + + /* The index buffer (VGT) doesn't seem to see the result of the copying. + * Can we somehow flush the index buffer cache? Starting a new IB seems + * to do the trick. */ + if (rctx->b.chip_class <= R700) + rctx->b.rings.gfx.flush(ctx, RADEON_FLUSH_ASYNC, NULL); } /** -- 2.30.2