diff options
author | Marek Olšák <marek.olsak@amd.com> | 2019-02-01 17:10:46 -0500 |
---|---|---|
committer | Emil Velikov <emil.l.velikov@gmail.com> | 2019-02-15 11:38:47 +0000 |
commit | 945aa8740823bb79e6bd07980475c0b334107151 (patch) | |
tree | 72e189ade12670f4884da545b4413838da8fd274 | |
parent | b3b0a97f699db4873a7ccc0abb9dd0812b25e519 (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.c | 7 |
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); } |