1e5c31af7Sopenharmony_ci// Copyright 2023-2024 The Khronos Group Inc. 2e5c31af7Sopenharmony_ci// 3e5c31af7Sopenharmony_ci// SPDX-License-Identifier: CC-BY-4.0 4e5c31af7Sopenharmony_ci 5e5c31af7Sopenharmony_ci:imageparam: srcImage 6e5c31af7Sopenharmony_ci:imagesubresource: imageSubresource 7e5c31af7Sopenharmony_ci 8e5c31af7Sopenharmony_ci// Common Valid Usage 9e5c31af7Sopenharmony_ci 10e5c31af7Sopenharmony_ci * [[VUID-{refpage}-{imageparam}-10000]] 11e5c31af7Sopenharmony_ci If pname:{imageparam} is of type ename:VK_IMAGE_TYPE_1D, then for each 12e5c31af7Sopenharmony_ci element of pname:pRegions, pname:imageOffset.y must: be `0` and 13e5c31af7Sopenharmony_ci pname:imageExtent.height must: be `1` 14e5c31af7Sopenharmony_ci * [[VUID-{refpage}-{imagesubresource}-10001]] 15e5c31af7Sopenharmony_ci For each element of pname:pRegions, pname:imageOffset.z and 16e5c31af7Sopenharmony_ci [eq]#(pname:imageExtent.depth {plus} pname:imageOffset.z)# must: both be 17e5c31af7Sopenharmony_ci greater than or equal to `0` and less than or equal to the depth of the 18e5c31af7Sopenharmony_ci specified pname:{imagesubresource} of pname:{imageparam} 19e5c31af7Sopenharmony_ci * [[VUID-{refpage}-{imageparam}-10002]] 20e5c31af7Sopenharmony_ci If pname:{imageparam} is of type ename:VK_IMAGE_TYPE_1D or 21e5c31af7Sopenharmony_ci ename:VK_IMAGE_TYPE_2D, then for each element of pname:pRegions, 22e5c31af7Sopenharmony_ci pname:imageOffset.z must: be `0` and pname:imageExtent.depth must: be 23e5c31af7Sopenharmony_ci `1` 24e5c31af7Sopenharmony_ci * [[VUID-{refpage}-{imageparam}-10003]] 25e5c31af7Sopenharmony_ci For each element of pname:pRegions, pname:bufferRowLength must: be a 26e5c31af7Sopenharmony_ci multiple of the <<formats-compatibility-classes,texel block extent 27e5c31af7Sopenharmony_ci width>> of the elink:VkFormat of pname:{imageparam} 28e5c31af7Sopenharmony_ci * [[VUID-{refpage}-{imageparam}-10004]] 29e5c31af7Sopenharmony_ci For each element of pname:pRegions, pname:bufferImageHeight must: be a 30e5c31af7Sopenharmony_ci multiple of the <<formats-compatibility-classes,texel block extent 31e5c31af7Sopenharmony_ci height>> of the elink:VkFormat of pname:{imageparam} 32e5c31af7Sopenharmony_ci * [[VUID-{refpage}-{imageparam}-10005]] 33e5c31af7Sopenharmony_ci For each element of pname:pRegions, pname:imageOffset.x must: be a 34e5c31af7Sopenharmony_ci multiple of the <<formats-compatibility-classes,texel block extent 35e5c31af7Sopenharmony_ci width>> of the elink:VkFormat of pname:{imageparam} 36e5c31af7Sopenharmony_ci * [[VUID-{refpage}-{imageparam}-10006]] 37e5c31af7Sopenharmony_ci For each element of pname:pRegions, pname:imageOffset.y must: be a 38e5c31af7Sopenharmony_ci multiple of the <<formats-compatibility-classes,texel block extent 39e5c31af7Sopenharmony_ci height>> of the elink:VkFormat of pname:{imageparam} 40e5c31af7Sopenharmony_ci * [[VUID-{refpage}-{imageparam}-10007]] 41e5c31af7Sopenharmony_ci For each element of pname:pRegions, pname:imageOffset.z must: be a 42e5c31af7Sopenharmony_ci multiple of the <<formats-compatibility-classes,texel block extent 43e5c31af7Sopenharmony_ci depth>> of the elink:VkFormat of pname:{imageparam} 44e5c31af7Sopenharmony_ci * [[VUID-{refpage}-{imageparam}-10008]] 45e5c31af7Sopenharmony_ci For each element of pname:pRegions, if the sum of pname:imageOffset.x 46e5c31af7Sopenharmony_ci and pname:extent.width does not equal the width of the subresource 47e5c31af7Sopenharmony_ci specified by pname:srcSubresource, pname:extent.width must: be a 48e5c31af7Sopenharmony_ci multiple of the <<formats-compatibility-classes,texel block extent 49e5c31af7Sopenharmony_ci width>> of the elink:VkFormat of pname:{imageparam} 50e5c31af7Sopenharmony_ci * [[VUID-{refpage}-{imageparam}-10009]] 51e5c31af7Sopenharmony_ci For each element of pname:pRegions, if the sum of pname:imageOffset.y 52e5c31af7Sopenharmony_ci and pname:extent.height does not equal the height of the subresource 53e5c31af7Sopenharmony_ci specified by pname:srcSubresource, pname:extent.height must: be a 54e5c31af7Sopenharmony_ci multiple of the <<formats-compatibility-classes,texel block extent 55e5c31af7Sopenharmony_ci height>> of the elink:VkFormat of pname:{imageparam} 56e5c31af7Sopenharmony_ci * [[VUID-{refpage}-{imageparam}-10010]] 57e5c31af7Sopenharmony_ci For each element of pname:pRegions, if the sum of pname:imageOffset.z 58e5c31af7Sopenharmony_ci and pname:extent.depth does not equal the depth of the subresource 59e5c31af7Sopenharmony_ci specified by pname:srcSubresource, pname:extent.depth must: be a 60e5c31af7Sopenharmony_ci multiple of the <<formats-compatibility-classes,texel block extent 61e5c31af7Sopenharmony_ci depth>> of the elink:VkFormat of pname:{imageparam} 62e5c31af7Sopenharmony_ci * [[VUID-{refpage}-{imagesubresource}-10011]] 63e5c31af7Sopenharmony_ci For each element of pname:pRegions, pname:{imagesubresource}.aspectMask 64e5c31af7Sopenharmony_ci must: specify aspects present in pname:{imageparam} 65e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 66e5c31af7Sopenharmony_ci * [[VUID-{refpage}-{imageparam}-10012]] 67e5c31af7Sopenharmony_ci If pname:{imageparam} has a elink:VkFormat with 68e5c31af7Sopenharmony_ci <<formats-requiring-sampler-ycbcr-conversion,two planes>> then for each 69e5c31af7Sopenharmony_ci element of pname:pRegions, pname:{imagesubresource}.aspectMask must: be 70e5c31af7Sopenharmony_ci ename:VK_IMAGE_ASPECT_PLANE_0_BIT or ename:VK_IMAGE_ASPECT_PLANE_1_BIT 71e5c31af7Sopenharmony_ci * [[VUID-{refpage}-{imageparam}-10013]] 72e5c31af7Sopenharmony_ci If pname:{imageparam} has a elink:VkFormat with 73e5c31af7Sopenharmony_ci <<formats-requiring-sampler-ycbcr-conversion,three planes>> then for 74e5c31af7Sopenharmony_ci each element of pname:pRegions, pname:{imagesubresource}.aspectMask 75e5c31af7Sopenharmony_ci must: be ename:VK_IMAGE_ASPECT_PLANE_0_BIT, 76e5c31af7Sopenharmony_ci ename:VK_IMAGE_ASPECT_PLANE_1_BIT, or ename:VK_IMAGE_ASPECT_PLANE_2_BIT 77e5c31af7Sopenharmony_ciendif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 78e5c31af7Sopenharmony_ci * [[VUID-{refpage}-{imageparam}-10014]] 79e5c31af7Sopenharmony_ci If pname:{imageparam} is of type ename:VK_IMAGE_TYPE_3D, for each 80e5c31af7Sopenharmony_ci element of pname:pRegions, pname:{imagesubresource}.baseArrayLayer must: 81e5c31af7Sopenharmony_ci be `0` and pname:{imagesubresource}.layerCount must: be `1` 82e5c31af7Sopenharmony_ci * [[VUID-{refpage}-{imageparam}-10015]] 83e5c31af7Sopenharmony_ci For each element of pname:pRegions, pname:bufferRowLength divided by the 84e5c31af7Sopenharmony_ci <<formats-compatibility-classes,texel block extent width>> and then 85e5c31af7Sopenharmony_ci multiplied by the texel block size of pname:{imageparam} must: be less 86e5c31af7Sopenharmony_ci than or equal to [eq]#2^31^-1# 87e5c31af7Sopenharmony_ci// Common Valid Usage 88