diff options
author | Marek Olšák <[email protected]> | 2014-04-20 00:53:32 +0200 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2014-04-25 01:33:12 +0200 |
commit | 0967970768c517c8c2f1a969e0a043982b4b1bf7 (patch) | |
tree | a581c4b4a12d2806db4f7246a72065845c64c671 | |
parent | 042e40f67b4cec0bc1d5d783bc3207a191bf433b (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.c | 6 |
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); } /** |