zink: verify that src and dst aspects are the same in resource_copy_region hook

this is required by spec

Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6263>
This commit is contained in:
Mike Blumenkrantz
2020-06-15 11:48:29 -04:00
committed by Marge Bot
parent 6feec2d40e
commit 0051551701

View File

@@ -913,6 +913,17 @@ zink_resource_copy_region(struct pipe_context *pctx,
struct zink_context *ctx = zink_context(pctx);
if (dst->base.target != PIPE_BUFFER && src->base.target != PIPE_BUFFER) {
VkImageCopy region = {};
if (util_format_get_num_planes(src->base.format) == 1 &&
util_format_get_num_planes(dst->base.format) == 1) {
/* If neither the calling commands srcImage nor the calling commands dstImage
* has a multi-planar image format then the aspectMask member of srcSubresource
* and dstSubresource must match
*
* -VkImageCopy spec
*/
assert(src->aspect == dst->aspect);
} else
unreachable("planar formats not yet handled");
region.srcSubresource.aspectMask = src->aspect;
region.srcSubresource.mipLevel = src_level;