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