diff options
author | Marek Olšák <[email protected]> | 2016-04-26 19:29:55 +0200 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2016-05-10 17:20:09 +0200 |
commit | a512da36aed3a1c893b34681dec2dfd51d250ee5 (patch) | |
tree | c75c1df6ae8562356ffff061f21fefffc2ebed04 /src/gallium/drivers/r600 | |
parent | f837c37f022ecf4925a574961027eb12f125e66c (diff) |
gallium/radeon: fix (S)DMA read-after-write hazards
Reviewed-by: Alex Deucher <[email protected]>
Reviewed-by: Nicolai Hähnle <[email protected]>
Diffstat (limited to 'src/gallium/drivers/r600')
-rw-r--r-- | src/gallium/drivers/r600/evergreen_hw_context.c | 1 | ||||
-rw-r--r-- | src/gallium/drivers/r600/evergreen_state.c | 1 | ||||
-rw-r--r-- | src/gallium/drivers/r600/r600_hw_context.c | 1 | ||||
-rw-r--r-- | src/gallium/drivers/r600/r600_state.c | 1 |
4 files changed, 4 insertions, 0 deletions
diff --git a/src/gallium/drivers/r600/evergreen_hw_context.c b/src/gallium/drivers/r600/evergreen_hw_context.c index a0f46800403..c2dba8c1996 100644 --- a/src/gallium/drivers/r600/evergreen_hw_context.c +++ b/src/gallium/drivers/r600/evergreen_hw_context.c @@ -77,6 +77,7 @@ void evergreen_dma_copy_buffer(struct r600_context *rctx, src_offset += csize << shift; size -= csize; } + r600_dma_emit_wait_idle(&rctx->b); } /* The max number of bytes to copy per packet. */ diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c index 672ddd4fcbe..acf60c6d8d1 100644 --- a/src/gallium/drivers/r600/evergreen_state.c +++ b/src/gallium/drivers/r600/evergreen_state.c @@ -3470,6 +3470,7 @@ static void evergreen_dma_copy_tile(struct r600_context *rctx, addr += cheight * pitch; y += cheight; } + r600_dma_emit_wait_idle(&rctx->b); } static void evergreen_dma_copy(struct pipe_context *ctx, diff --git a/src/gallium/drivers/r600/r600_hw_context.c b/src/gallium/drivers/r600/r600_hw_context.c index 2bc6d3ffce4..fa1028be7af 100644 --- a/src/gallium/drivers/r600/r600_hw_context.c +++ b/src/gallium/drivers/r600/r600_hw_context.c @@ -484,4 +484,5 @@ void r600_dma_copy_buffer(struct r600_context *rctx, src_offset += csize << 2; size -= csize; } + r600_dma_emit_wait_idle(&rctx->b); } diff --git a/src/gallium/drivers/r600/r600_state.c b/src/gallium/drivers/r600/r600_state.c index 48e3663ebf7..715c6f11145 100644 --- a/src/gallium/drivers/r600/r600_state.c +++ b/src/gallium/drivers/r600/r600_state.c @@ -2941,6 +2941,7 @@ static boolean r600_dma_copy_tile(struct r600_context *rctx, addr += cheight * pitch; y += cheight; } + r600_dma_emit_wait_idle(&rctx->b); return TRUE; } |