diff options
author | Marek Olšák <[email protected]> | 2016-04-21 23:46:19 +0200 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2016-05-10 17:20:09 +0200 |
commit | 2f173b8e13308bea0690684f841fad28ccc2e40e (patch) | |
tree | 65071cc447d274269286780efaed0ffdbad955ce /src/gallium/drivers/r600 | |
parent | 2af4b637d8a2da72a42ca8288dcab90fb1e2346c (diff) |
gallium/radeon: use a common function for DMA blit preparation
this is more robust and probably fixes some bugs already
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_state.c | 10 | ||||
-rw-r--r-- | src/gallium/drivers/r600/r600_state.c | 5 |
2 files changed, 6 insertions, 9 deletions
diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c index 5224e420119..672ddd4fcbe 100644 --- a/src/gallium/drivers/r600/evergreen_state.c +++ b/src/gallium/drivers/r600/evergreen_state.c @@ -3497,14 +3497,10 @@ static void evergreen_dma_copy(struct pipe_context *ctx, return; } - if (src->format != dst->format || src_box->depth > 1 || - (rdst->dirty_level_mask | rdst->stencil_dirty_level_mask) & (1 << dst_level)) { + if (src_box->depth > 1 || + !r600_prepare_for_dma_blit(&rctx->b, rdst, dst_level, dstx, dsty, + dstz, rsrc, src_level, src_box)) goto fallback; - } - - if (rsrc->dirty_level_mask & (1 << src_level)) { - ctx->flush_resource(ctx, src); - } src_x = util_format_get_nblocksx(src->format, src_box->x); dst_x = util_format_get_nblocksx(src->format, dst_x); diff --git a/src/gallium/drivers/r600/r600_state.c b/src/gallium/drivers/r600/r600_state.c index 22910962794..48e3663ebf7 100644 --- a/src/gallium/drivers/r600/r600_state.c +++ b/src/gallium/drivers/r600/r600_state.c @@ -2972,9 +2972,10 @@ static void r600_dma_copy(struct pipe_context *ctx, return; } - if (src->format != dst->format || src_box->depth > 1) { + if (src_box->depth > 1 || + !r600_prepare_for_dma_blit(&rctx->b, rdst, dst_level, dstx, dsty, + dstz, rsrc, src_level, src_box)) goto fallback; - } src_x = util_format_get_nblocksx(src->format, src_box->x); dst_x = util_format_get_nblocksx(src->format, dst_x); |