summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Olšák <marek.olsak@amd.com>2019-02-01 17:10:46 -0500
committerEmil Velikov <emil.l.velikov@gmail.com>2019-02-15 11:38:47 +0000
commit945aa8740823bb79e6bd07980475c0b334107151 (patch)
tree72e189ade12670f4884da545b4413838da8fd274
parentb3b0a97f699db4873a7ccc0abb9dd0812b25e519 (diff)
radeonsi: fix EXPLICIT_FLUSH for flush offsets > 0
Cc: 18.3 19.0 <mesa-stable@lists.freedesktop.org> Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com> (cherry picked from commit 61c678d4bc91d2ff9ca8c9b183e08daf07d8d24c)
-rw-r--r--src/gallium/drivers/radeonsi/si_buffer.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/gallium/drivers/radeonsi/si_buffer.c b/src/gallium/drivers/radeonsi/si_buffer.c
index c7260e06ccf..f460cf07b53 100644
--- a/src/gallium/drivers/radeonsi/si_buffer.c
+++ b/src/gallium/drivers/radeonsi/si_buffer.c
@@ -521,10 +521,13 @@ static void si_buffer_do_flush_region(struct pipe_context *ctx,
struct r600_resource *rbuffer = r600_resource(transfer->resource);
if (stransfer->staging) {
+ unsigned src_offset = stransfer->offset +
+ transfer->box.x % SI_MAP_BUFFER_ALIGNMENT +
+ (box->x - transfer->box.x);
+
/* Copy the staging buffer into the original one. */
si_copy_buffer((struct si_context*)ctx, transfer->resource,
- &stransfer->staging->b.b, box->x,
- stransfer->offset + box->x % SI_MAP_BUFFER_ALIGNMENT,
+ &stransfer->staging->b.b, box->x, src_offset,
box->width);
}