From 1f36901ad955988934f4108ffaf58d4303c57af2 Mon Sep 17 00:00:00 2001 From: Oskar Rundgren Date: Sun, 7 May 2023 12:53:01 +0100 Subject: pvr: fix texel unwind workaround mappings Fix the rectangle mappings used with texel unwind workaround (unaligned address). Signed-off-by: Oskar Rundgren Reviewed-by: Frank Binns Part-of: --- src/imagination/vulkan/pvr_job_transfer.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/imagination/vulkan/pvr_job_transfer.c b/src/imagination/vulkan/pvr_job_transfer.c index 95b82d32b0c..bd208a0d14d 100644 --- a/src/imagination/vulkan/pvr_job_transfer.c +++ b/src/imagination/vulkan/pvr_job_transfer.c @@ -4887,20 +4887,22 @@ static void pvr_unwind_rects(uint32_t width, mappings[new_mapping] = mappings[i]; - new_rect->extent.width = - (new_rect->extent.width + new_rect->offset.x) - split_point; + rect->extent.width = split_point - rect->offset.x; new_rect->offset.x = split_point; if (input) { - mappings[i].dst_rect.extent.width -= new_rect->extent.width; + mappings[i].dst_rect.extent.width -= + new_rect->extent.width - split_point; mappings[new_mapping].dst_rect.offset.x = mappings[i].dst_rect.offset.x + mappings[i].dst_rect.extent.width; } else { - mappings[i].src_rect.extent.width -= new_rect->extent.width; + mappings[i].src_rect.extent.width -= + new_rect->extent.width - split_point; mappings[new_mapping].src_rect.offset.x = mappings[i].src_rect.offset.x + mappings[i].src_rect.extent.width; + mappings[new_mapping].src_rect.extent.width = texel_unwind; } rect->offset.x += texel_unwind; @@ -4909,6 +4911,7 @@ static void pvr_unwind_rects(uint32_t width, new_rect->offset.x = (int32_t)texel_unwind - (int32_t)width + new_rect->offset.x; new_rect->offset.y++; + new_rect->extent.width = texel_unwind - width + new_rect->extent.width; new_mappings++; } -- cgit v1.2.1