If we are blitting to tile boundaries we don't need to emit tile loads. The exception to this is the case where we are blitting only a subset of the pixel components in the image (which we do for single aspect blits of D24S8), since in that case we need to preserve the components we are not writing.
There is a corner case where some times we create framebuffers that alias subregions of a larger image. In that case the edge tiles are not padded and we can't skip the loads.
0a4fc196058 v3dv: skip unnecessary tile loads when blitting
src/broadcom/vulkan/v3dv_cmd_buffer.c | 28 ++---------
src/broadcom/vulkan/v3dv_device.c | 2 +
src/broadcom/vulkan/v3dv_meta_copy.c | 94 +++++++++++++++++++++++------------
src/broadcom/vulkan/v3dv_pass.c | 52 +++++++++++++++++--
src/broadcom/vulkan/v3dv_private.h | 20 ++++++--
5 files changed, 132 insertions(+), 64 deletions(-)