summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>2023-05-11 09:54:22 -0400
committerMarge Bot <emma+marge@anholt.net>2023-05-15 22:52:57 +0000
commit7466c6fbf2052a1b4142da3e181ed82be888f947 (patch)
treea2ed45a928301b610de04f55de2ad183e2e195b6
parentcc13c96b336f62a8eb3baa9e35f056a02f6efd7c (diff)
downloadmesa-7466c6fbf2052a1b4142da3e181ed82be888f947.tar.gz
zink: reject blits where src/dst is 3D and dst/src z!=0
this is technically illegal even though it works everywhere, though future spec changes may make it legal affects KHR-GLES3.copy_tex_image_conversions.required.texture3d_cubemap_negz Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22960>
-rw-r--r--src/gallium/drivers/zink/zink_blit.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/gallium/drivers/zink/zink_blit.c b/src/gallium/drivers/zink/zink_blit.c
index 69b2f02f035..011ad2d240b 100644
--- a/src/gallium/drivers/zink/zink_blit.c
+++ b/src/gallium/drivers/zink/zink_blit.c
@@ -191,6 +191,9 @@ blit_native(struct zink_context *ctx, const struct pipe_blit_info *info, bool *n
case PIPE_TEXTURE_1D_ARRAY:
/* these use layer */
region.srcSubresource.baseArrayLayer = info->src.box.z;
+ /* VUID-vkCmdBlitImage-srcImage-00240 */
+ if (region.srcSubresource.baseArrayLayer && dst->base.b.target == PIPE_TEXTURE_3D)
+ return false;
region.srcSubresource.layerCount = info->src.box.depth;
region.srcOffsets[0].z = 0;
region.srcOffsets[1].z = 1;
@@ -229,6 +232,9 @@ blit_native(struct zink_context *ctx, const struct pipe_blit_info *info, bool *n
case PIPE_TEXTURE_1D_ARRAY:
/* these use layer */
region.dstSubresource.baseArrayLayer = info->dst.box.z;
+ /* VUID-vkCmdBlitImage-srcImage-00240 */
+ if (region.dstSubresource.baseArrayLayer && src->base.b.target == PIPE_TEXTURE_3D)
+ return false;
region.dstSubresource.layerCount = info->dst.box.depth;
region.dstOffsets[0].z = 0;
region.dstOffsets[1].z = 1;