diff options
author | Mike Blumenkrantz <michael.blumenkrantz@gmail.com> | 2023-05-11 09:54:22 -0400 |
---|---|---|
committer | Marge Bot <emma+marge@anholt.net> | 2023-05-15 22:52:57 +0000 |
commit | 7466c6fbf2052a1b4142da3e181ed82be888f947 (patch) | |
tree | a2ed45a928301b610de04f55de2ad183e2e195b6 | |
parent | cc13c96b336f62a8eb3baa9e35f056a02f6efd7c (diff) | |
download | mesa-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.c | 6 |
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; |