1// Copyright 2020-2021 The Khronos Group Inc. 2// 3// SPDX-License-Identifier: CC-BY-4.0 4 5// Common Valid Usage 6// Common to VkCmdResolveImage* commands 7 * [[VUID-{refpage}-pRegions-00255]] 8 The union of all source regions, and the union of all destination 9 regions, specified by the elements of pname:pRegions, must: not overlap 10 in memory 11 * [[VUID-{refpage}-srcImage-00256]] 12 If pname:srcImage is non-sparse then it must: be bound completely and 13 contiguously to a single sname:VkDeviceMemory object 14 * [[VUID-{refpage}-srcImage-00257]] 15 pname:srcImage must: have a sample count equal to any valid sample count 16 value other than ename:VK_SAMPLE_COUNT_1_BIT 17 * [[VUID-{refpage}-dstImage-00258]] 18 If pname:dstImage is non-sparse then it must: be bound completely and 19 contiguously to a single sname:VkDeviceMemory object 20 * [[VUID-{refpage}-dstImage-00259]] 21 pname:dstImage must: have a sample count equal to 22 ename:VK_SAMPLE_COUNT_1_BIT 23 * [[VUID-{refpage}-srcImageLayout-00260]] 24 pname:srcImageLayout must: specify the layout of the image subresources 25 of pname:srcImage specified in pname:pRegions at the time this command 26 is executed on a sname:VkDevice 27ifndef::VK_KHR_shared_presentable_image[] 28 * [[VUID-{refpage}-srcImageLayout-00261]] 29 pname:srcImageLayout must: be ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL 30 or ename:VK_IMAGE_LAYOUT_GENERAL 31endif::VK_KHR_shared_presentable_image[] 32ifdef::VK_KHR_shared_presentable_image[] 33 * [[VUID-{refpage}-srcImageLayout-01400]] 34 pname:srcImageLayout must: be ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR, 35 ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or 36 ename:VK_IMAGE_LAYOUT_GENERAL 37endif::VK_KHR_shared_presentable_image[] 38 * [[VUID-{refpage}-dstImageLayout-00262]] 39 pname:dstImageLayout must: specify the layout of the image subresources 40 of pname:dstImage specified in pname:pRegions at the time this command 41 is executed on a sname:VkDevice 42ifndef::VK_KHR_shared_presentable_image[] 43 * [[VUID-{refpage}-dstImageLayout-00263]] 44 pname:dstImageLayout must: be ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL 45 or ename:VK_IMAGE_LAYOUT_GENERAL 46endif::VK_KHR_shared_presentable_image[] 47ifdef::VK_KHR_shared_presentable_image[] 48 * [[VUID-{refpage}-dstImageLayout-01401]] 49 pname:dstImageLayout must: be ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR, 50 ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or 51 ename:VK_IMAGE_LAYOUT_GENERAL 52endif::VK_KHR_shared_presentable_image[] 53 * [[VUID-{refpage}-dstImage-02003]] 54 The <<resources-image-format-features,format features>> of 55 pname:dstImage must: contain 56 ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT 57 * [[VUID-{refpage}-srcImage-01386]] 58 pname:srcImage and pname:dstImage must: have been created with the same 59 image format 60 * [[VUID-{refpage}-srcSubresource-01709]] 61 The pname:srcSubresource.mipLevel member of each element of 62 pname:pRegions must: be less than the pname:mipLevels specified in 63 slink:VkImageCreateInfo when pname:srcImage was created 64 * [[VUID-{refpage}-dstSubresource-01710]] 65 The pname:dstSubresource.mipLevel member of each element of 66 pname:pRegions must: be less than the pname:mipLevels specified in 67 slink:VkImageCreateInfo when pname:dstImage was created 68 * [[VUID-{refpage}-srcSubresource-01711]] 69 The [eq]#pname:srcSubresource.baseArrayLayer {plus} 70 pname:srcSubresource.layerCount# of each element of pname:pRegions must: 71 be less than or equal to the pname:arrayLayers specified in 72 slink:VkImageCreateInfo when pname:srcImage was created 73 * [[VUID-{refpage}-dstSubresource-01712]] 74 The [eq]#pname:dstSubresource.baseArrayLayer {plus} 75 pname:dstSubresource.layerCount# of each element of pname:pRegions must: 76 be less than or equal to the pname:arrayLayers specified in 77 slink:VkImageCreateInfo when pname:dstImage was created 78ifdef::VK_EXT_fragment_density_map[] 79 * [[VUID-{refpage}-dstImage-02546]] 80 pname:dstImage and pname:srcImage must: not have been created with 81 pname:flags containing ename:VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT 82endif::VK_EXT_fragment_density_map[] 83 * [[VUID-{refpage}-srcImage-04446]] 84 If either pname:srcImage or pname:dstImage are of type 85 ename:VK_IMAGE_TYPE_3D, then for each element of pname:pRegions, 86 pname:srcSubresource.baseArrayLayer must: be `0` and 87 pname:srcSubresource.layerCount must: be `1` 88 * [[VUID-{refpage}-srcImage-04447]] 89 If either pname:srcImage or pname:dstImage are of type 90 ename:VK_IMAGE_TYPE_3D, then for each element of pname:pRegions, 91 pname:dstSubresource.baseArrayLayer must: be `0` and 92 pname:dstSubresource.layerCount must: be `1` 93 * [[VUID-{refpage}-srcOffset-00269]] 94 For each element of pname:pRegions, pname:srcOffset.x and 95 [eq]#(pname:extent.width {plus} pname:srcOffset.x)# must: both be 96 greater than or equal to `0` and less than or equal to the width of the 97 specified pname:srcSubresource of pname:srcImage 98 * [[VUID-{refpage}-srcOffset-00270]] 99 For each element of pname:pRegions, pname:srcOffset.y and 100 [eq]#(pname:extent.height {plus} pname:srcOffset.y)# must: both be 101 greater than or equal to `0` and less than or equal to the height of the 102 specified pname:srcSubresource of pname:srcImage 103 * [[VUID-{refpage}-srcImage-00271]] 104 If pname:srcImage is of type ename:VK_IMAGE_TYPE_1D, then for each 105 element of pname:pRegions, pname:srcOffset.y must: be `0` and 106 pname:extent.height must: be `1` 107 * [[VUID-{refpage}-srcOffset-00272]] 108 For each element of pname:pRegions, pname:srcOffset.z and 109 [eq]#(pname:extent.depth {plus} pname:srcOffset.z)# must: both be 110 greater than or equal to `0` and less than or equal to the depth of the 111 specified pname:srcSubresource of pname:srcImage 112 * [[VUID-{refpage}-srcImage-00273]] 113 If pname:srcImage is of type ename:VK_IMAGE_TYPE_1D or 114 ename:VK_IMAGE_TYPE_2D, then for each element of pname:pRegions, 115 pname:srcOffset.z must: be `0` and pname:extent.depth must: be `1` 116 * [[VUID-{refpage}-dstOffset-00274]] 117 For each element of pname:pRegions, pname:dstOffset.x and 118 [eq]#(pname:extent.width {plus} pname:dstOffset.x)# must: both be 119 greater than or equal to `0` and less than or equal to the width of the 120 specified pname:dstSubresource of pname:dstImage 121 * [[VUID-{refpage}-dstOffset-00275]] 122 For each element of pname:pRegions, pname:dstOffset.y and 123 [eq]#(pname:extent.height {plus} pname:dstOffset.y)# must: both be 124 greater than or equal to `0` and less than or equal to the height of the 125 specified pname:dstSubresource of pname:dstImage 126 * [[VUID-{refpage}-dstImage-00276]] 127 If pname:dstImage is of type ename:VK_IMAGE_TYPE_1D, then for each 128 element of pname:pRegions, pname:dstOffset.y must: be `0` and 129 pname:extent.height must: be `1` 130 * [[VUID-{refpage}-dstOffset-00277]] 131 For each element of pname:pRegions, pname:dstOffset.z and 132 [eq]#(pname:extent.depth {plus} pname:dstOffset.z)# must: both be 133 greater than or equal to `0` and less than or equal to the depth of the 134 specified pname:dstSubresource of pname:dstImage 135 * [[VUID-{refpage}-dstImage-00278]] 136 If pname:dstImage is of type ename:VK_IMAGE_TYPE_1D or 137 ename:VK_IMAGE_TYPE_2D, then for each element of pname:pRegions, 138 pname:dstOffset.z must: be `0` and pname:extent.depth must: be `1` 139// Common Valid Usage 140