Mesa (master): v3dv: fix base layer for 3D blits in the TFU path
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Mon Nov 30 12:27:45 UTC 2020
Module: Mesa
Branch: master
Commit: b3f212c52e278ced13a795fab8c05f2f65ce7c0a
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=b3f212c52e278ced13a795fab8c05f2f65ce7c0a
Author: Iago Toral Quiroga <itoral at igalia.com>
Date: Fri Nov 27 11:13:26 2020 +0100
v3dv: fix base layer for 3D blits in the TFU path
We were always using baseArrayLayer from the image subresource, but
for 3D images we should use the Z offset of the region.
Reviewed-by: Alejandro Piñeiro <apinheiro at igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7809>
---
src/broadcom/vulkan/v3dv_meta_copy.c | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)
diff --git a/src/broadcom/vulkan/v3dv_meta_copy.c b/src/broadcom/vulkan/v3dv_meta_copy.c
index 63badcd873c..c9324bbd53c 100644
--- a/src/broadcom/vulkan/v3dv_meta_copy.c
+++ b/src/broadcom/vulkan/v3dv_meta_copy.c
@@ -4077,6 +4077,9 @@ blit_tfu(struct v3dv_cmd_buffer *cmd_buffer,
*/
if (dst_mirror_z)
return false;
+ } else {
+ min_dst_layer = region->dstSubresource.baseArrayLayer;
+ max_dst_layer = min_dst_layer + region->dstSubresource.layerCount - 1;
}
uint32_t min_src_layer;
@@ -4089,11 +4092,14 @@ blit_tfu(struct v3dv_cmd_buffer *cmd_buffer,
if (src_mirror_z)
return false;
-
- if (max_dst_layer - min_dst_layer != max_src_layer - min_src_layer)
- return false;
+ } else {
+ min_src_layer = region->srcSubresource.baseArrayLayer;
+ max_src_layer = min_src_layer + region->srcSubresource.layerCount - 1;
}
+ if (max_dst_layer - min_dst_layer != max_src_layer - min_src_layer)
+ return false;
+
const uint32_t layer_count = dst->type != VK_IMAGE_TYPE_3D ?
region->dstSubresource.layerCount :
max_dst_layer - min_dst_layer;
@@ -4101,8 +4107,8 @@ blit_tfu(struct v3dv_cmd_buffer *cmd_buffer,
for (uint32_t i = 0; i < layer_count; i++) {
emit_tfu_job(cmd_buffer,
- dst, dst_mip_level, region->dstSubresource.baseArrayLayer + i,
- src, src_mip_level, region->srcSubresource.baseArrayLayer + i,
+ dst, dst_mip_level, min_dst_layer + i,
+ src, src_mip_level, min_src_layer + i,
dst_width, dst_height, dst->format);
}
More information about the mesa-commit
mailing list