From dc3538cdb50787bca9c6bd580b26dd4911d94980 Mon Sep 17 00:00:00 2001 From: Matt Coster Date: Thu, 1 Jun 2023 16:15:32 +0100 Subject: [PATCH] pvr: Correct calculations in pvr_unwind_rects() Fixes: 6d3d1f884ceadf62e332e797e994b810a0e010b0 pvr: Fix rect splitting logic in pvr_unwind_rects() Signed-off-by: Matt Coster Reported-by: Soroush Kashani Reviewed-by: Karmjit Mahil Part-of: --- src/imagination/vulkan/pvr_job_transfer.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/imagination/vulkan/pvr_job_transfer.c b/src/imagination/vulkan/pvr_job_transfer.c index 6c3e350fb8a..3b8f7ce74c6 100644 --- a/src/imagination/vulkan/pvr_job_transfer.c +++ b/src/imagination/vulkan/pvr_job_transfer.c @@ -4857,8 +4857,11 @@ static void pvr_unwind_rects(uint32_t width, rect->extent.width = split_point - rect->offset.x; new_rect->offset.x = split_point; + new_rect->extent.width -= + (int32_t)split_point - (int32_t)rect->offset.x; - split_width = (rect->offset.x + new_rect->extent.width) - split_point; + split_width = + (new_rect->offset.x + new_rect->extent.width) - split_point; if (input) { mappings[i].dst_rect.extent.width -= split_width; @@ -4879,7 +4882,6 @@ static void pvr_unwind_rects(uint32_t width, new_rect->offset.x += (int32_t)texel_unwind - (int32_t)width; new_rect->offset.y++; - new_rect->extent.width += (int32_t)texel_unwind - (int32_t)width; new_mappings++; }