diff --git a/src/imagination/vulkan/pvr_image.c b/src/imagination/vulkan/pvr_image.c index 5341b4add8e..88c11328908 100644 --- a/src/imagination/vulkan/pvr_image.c +++ b/src/imagination/vulkan/pvr_image.c @@ -77,6 +77,16 @@ static void pvr_image_init_physical_extent(struct pvr_image *image) } else { assert(image->memlayout == PVR_MEMLAYOUT_LINEAR); image->physical_extent = image->vk.extent; + + /* If the image is being rendered to (written by the PBE) make sure the + * width is aligned correctly. + */ + if (image->vk.usage & (VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | + VK_IMAGE_USAGE_TRANSFER_DST_BIT)) { + image->physical_extent.width = + ALIGN(image->physical_extent.width, + ROGUE_PBESTATE_REG_WORD0_LINESTRIDE_UNIT_SIZE); + } } }