summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarek Olšák <[email protected]>2014-04-20 00:53:32 +0200
committerMarek Olšák <[email protected]>2014-04-25 01:33:12 +0200
commit0967970768c517c8c2f1a969e0a043982b4b1bf7 (patch)
treea581c4b4a12d2806db4f7246a72065845c64c671
parent042e40f67b4cec0bc1d5d783bc3207a191bf433b (diff)
r600g: fix buffer copying on R600-R700
This fixes broken rendering in DOTA 2. Cc: 10.0 10.1 [email protected] Reviewed-by: Alex Deucher <[email protected]>
-rw-r--r--src/gallium/drivers/r600/r600_blit.c6
1 files changed, 6 insertions, 0 deletions
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);
}
/**