h$@?r      !"#$%&'( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A BCDEFGHIJKLMNOPQRSTUVWXY Z [!\"]"^#_#`$a%b&c&d'e'f(g(h)i*j+k,l-m.n.o/p/q/r/s/t/u/v/w0x0y0z0{0|0}0~00000000000000000000000112223445666666677777788888888888888888889::;<=>?@@@@@@@@@ABBCCDDEEEEFGHHIIJJKKKKKLLMMNOOPPPQQQQQQRSSTTTTTUUUUUUUUUVVVVVWWXXXYYYYYYZ[\\\\]]]]]^__`abcccccdddddddeeffghhhhiiijklmnnnnnnopqqqqqqqqqqqqqqqrssttttuuuuvvvvwxxxxyyyyz{||||}~*********                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       } } } } } } } } } }}}}}}}}}}}}}}}}{{{{{{{{{{{{{{{{{{{{{{wwwwwwwwwwwwwwwwwwwwwww)))))))))))))))%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%////////////////////////////////////////////////////////////~~~~~~~~~~~~~~~~~~~~~~~~zzzzzzzzzzzzzzzzzzzzzzzrrrrrrrrrrrrppppppppppoooooooommmmmmmmllllllllllllllllllllllllkkkkkkkkkjjjjjjjjjbbbbbbbbbb````````[[[[[[[[[[[ZZZZZZZZZZGGGGGGGGGGGCCCCCCCCCCCCCRRRRRRRRBBBBBBBBBBBBBBBBBBBBBBNNNNNNNNAAAAAAAAA((((((((((((('''''''''''''''''''''''''FFFFFFFFFFF&&&&&&&&&&&&&&&&$$$$$$$$$$$$$$$$#############""""""""""!!!!!!!!!!!!!!!!!!                                                                                                                                                                    !!!!!!!!!!!!!!!!!!.!.!.!.!.!.!.!.!.!.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!a!a!a!a!a!a!a!a!!!!!!!!!!!!!!!!!!!!!!!!"""""""""""""""""""""""""""""""i"i"i"i"i"i"i"i"i"i"i"i"i"i"i"i"i"i"i"i"i"i"i"i"i"""""""""""""""""""""""""""""""""""""""L"L"L"L"L"L"L"L"L"L"L"L"L""""""""""""""""""""""#V#V#V#V#V#V#V#V#V#V#V#V#V#V#V#V#V#V#V#V#V#V#V#V#V#V#V#V#V#V#V#V#V#V#V#V#V#V#V#V###################################################################################_#_#_#_#_#_$_$_$_$_$_$_$_$_$_$_$_$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&g&g&g&g&g&g&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](](]((((((((((((((((((((((((((((((((((((X(X(X(X(X(X(X(X(X(X)X)X)X)X)X)X)X)X)X)X)X)X)X)X)X)X)X))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) ) ) ) ) ) ) ) ) ) )))))))))********************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,,,,,,,,,,,,,----------P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-----------------------------------------------------------------------------------------------................................................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111111111111111111101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202022222222222222222222222222222222233333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444445555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555566666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777778888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888899999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<n<n<n<n<n<n<n<n<n<n<n<n<n<n<n<n<n<n<n<n<n<n<n<n<n<n<n<n<n<n<n<n<n<n<n<n<n<n<n<n<n<n<n<n=n=n=n=n=n=n=n=n=n=n=n==========================h=h=h=h=h=h=h=h=h=h=h=h=h=h=h=h=h=h=h=h=h=h=h=h=h=h=h=h=h=h=h============================c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c>c>c>c>c>c>c>c>c>c>c>c>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>^>^>^>^>^>^>^>^>^>>>>>>>>>>>>>>>>>>>Q>Q>Q>Q>Q>Q>Q>Q>Q>Q>Q>Q>Q>Q>Q>Q>Q>Q>Q>Q>Q>Q>Q>Q>Q>Q>Q>Q>Q>Q>Q>Q>Q>Q>Q>Q>Q>Q?Q?Q?Q?Q?Q?Q?Q?Q?Q?Q?Q?Q?Q?Q?Q?Q????????????????????????????????O?O?O?O?O?O?O?O?O?O?O?O?O?O?O?O?O?O?O????????????????????M?M?M?M?M?M?M?M?M?M?M?M?M?M?M?M????????????K?K?K?K?K?K?K?K?K?K?K?K?K?K?K?K@K@K@K@K@K@K@K@K@K@K@K@K@K@K@K@K@K@K@K@K@K@K@K@K@K@K@K@K@K@I@I@I@I@I@I@I@I@I@I@I@I@I@I@I@I@I@I@@@@@@@@@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@q@q@q@q@q@q@q@q@q@q@q@q@q@q@q@q@q@q@q@q@q@qAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRsRsRsRsRsRsRsRsRsRsRsRsRsRsRsRsRsRsRsRsRsRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJR:R:S:S:S:S:S:S:S:S:S:S:S:S:S:S:S:S:S:S:S:S9S9S9S9S9S9S9S9S9S9S9S9S9S9S5S5S5S5S5S5S5S5S5S5S5S5S5S5S3S3S3S3S3S3S3S3S3S3S3S3S,S,S,S,S,S,S,S,S,S,S+S+S+S+S+S+S+S+S+S+S+S+S+S+S S S S S S S S S S S S S SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTSTSTTTTTTTTTTTTTTTTTTTTTHTHTHTHTHTHTHTHTHTHTHTHTHTHTHTHTHTHTHTHTHTHTTTTTTTTTTTT@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@T@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@UTUTUTUTUTUTUTUTUTUTUTUTUTUTUTUTUTUTUTUTUTUTUTUTUTUTUTUTUTUTUTUTUTUTUTUTUTUTUTUTUTUTUUUUUUUUUUUUUUUUU?U?U?U?U?U?U?U?U?U?U?U?U>U>U>U>U>U>U>U>U>U>U>U>U>U>U>U>U>U>U>U>U>U>U>U>U>U>U=U=U=U=U=U=U=U=U=U=U=U?A< vulkanA class for types which can be marshalled from a C style structure.vulkanRead an a* and any other pointed to data from memoryvulkanA class for types which can be marshalled into a C style structure.vulkanAllocates a C type structure and all dependencies and passes it to a continuation. The space is deallocated when this continuation returns and the C type structure must not be returned out of it.vulkanWrite a C type struct into some existing memory and run a continuation. The pointed to structure is not necessarily valid outside the continuation as additional allocations may have been made.vulkanAllocate space for an "empty" a6 and populate any univalued members with their value.vulkanAnd populate any univalued members with their value, run a function and then clean up any allocated resources.vulkanThe size of this struct, note that this doesn't account for any extra pointed-to datavulkan+The required memory alignment for this type  None( #$&'(./0289:<>?EQvulkan.An unpopulated type intended to be used as in o (FixedArray n a)5 to indicate that the pointer points to an array of n asvulkanStore a o in a fixed amount of space inserting a null character at the end and truncating if necessary.If the o is not long enough to fill the space the remaining bytes are unchangedNote that if the o is exactly long enough the last byte will still be replaced with 0vulkanStore a o5 in a fixed amount of space, truncating if necessary.If the o is not long enough to fill the space the remaining bytes are unchangedvulkanPeek a o" from a fixed sized array of bytesvulkan5Allocate a zero array with the size specified by the 4 return type. Make sure to release the memory with freevulkan1Get the pointer to the first element in the arrayvulkanA type restricted otNone( #$&'(./0289:<>?EuNone( #$&'(./0289:<>?FvNone( #$&'(./0289:<>?FxNone( #$&'(./0289:<>?FyNone( #$&'(./0289:<>?GM|None( #$&'(./0289:<>?GNone( #$&'(./0289:<>?HNone( #$&'(./0289:<>?HNone( #$&'(./0289:<>?HNone( #$&'(./0289:<>?INNone( #$&'(./0289:<>?INone( #$&'(./0289:<>?JNone( #$&'(./0289:<>?JNone( #$&'(./0289:<>?JNone( #$&'(./0289:<>?KQNone( #$&'(./0289:<>?KNone( #$&'(./0289:<>?LNone( #$&'(./0289:<>?LNone( #$&'(./0289:<>?LNone( #$&'(./0289:<>?MTNone( #$&'(./0289:<>?MNone( #$&'(./0289:<>?N"None( #$&'(./0289:<>?NNone( #$&'(./0289:<>?NNone( #$&'(./0289:<>?OWNone( #$&'(./0289:<>?ONone( #$&'(./0289:<>?P%None( #$&'(./0289:<>?PNone( #$&'(./0289:<>?PNone( #$&'(./0289:<>?QZNone( #$&'(./0289:<>?QNone( #$&'(./0289:<>?R(None( #$&'(./0289:<>?RNone( #$&'(./0289:<>?RNone( #$&'(./0289:<>?S]None( #$&'(./0289:<>?VIvulkan9The common bits of enumeration and bitmask read instancesvulkan9The common bits of enumeration and bitmask show instancesvulkan!Wrap an IO action with a pair of o= using the specified message with "begin" or "end" appended.vulkanThe common constructor prefixvulkan+The table of values to constructor suffixesvulkanThe newtype constructor namevulkanThe newtype constructorvulkanThe common constructor prefixvulkan)A table of values to constructor suffixesvulkanThe newtype constructor namevulkanUnpack the newtypevulkanShow the underlying valueNone( #$&'(./0289:<>?VvulkanAnnotate a type with a nameNone( #$&'(./0289:<>?W0  None( #$&'(./0289:<>?Xvulkan2A class for initializing things with all zero data.Any instance should satisfy the following law: new zero = calloc  or  with zero = withZeroCStruct i.e. Marshaling zero to memory yeilds only zero-valued bytes, except for structs which require a "type" tagNone( #$&'(./0289:<>?[lvulkanVkShaderFloatControlsIndependence - Bitmask specifying whether, and how, shader float controls can be set separatelySee Alsol, \vulkan: specifies that shader float controls for all bit widths must be set identically.vulkan: specifies that shader float controls for all bit widths can be set independently.vulkan specifies that shader float controls for 32-bit floating point can) be set independently; other bit widths must" be set identically to each other.None( #$&'(./0289:<>?^Xvulkan:VkSemaphoreType - Sepcifies the type of a semaphore objectSee Alsonvulkan specifies a timeline semaphore type that has a strictly increasing 64-bit unsigned integer payload indicating whether the semaphore is signaled with respect to a particular reference value. When created, the semaphore payload has the value given by the  initialValue field of n.vulkan specifies a binary semaphore type that has a boolean payload indicating whether the semaphore is currently signaled or unsignaled. When created, the semaphore is in the unsignaled state.None( #$&'(./0289:<>?avulkanVkSamplerReductionMode - Specify reduction mode for texture filteringSee Also_vulkan specifies that texel values are combined by taking the component-wise maximum of values in the footprint with non-zero weights.vulkan specifies that texel values are combined by taking the component-wise minimum of values in the footprint with non-zero weights.vulkan specifies that texel values are combined by computing a weighted average of values in the footprint, using weights as specified in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-unnormalized-to-integerthe image operations chapter.None( #$&'(./0289:<>?dvulkanVkDriverId - Khronos driver IDs DescriptionNoteKhronos driver IDs may be allocated by vendors at any time. There may be multiple driver IDs for the same vendor, representing different drivers (for e.g. different platforms, proprietary or open source, etc.). Only the latest canonical versions of this Specification, of the corresponding vk.xml) API Registry, and of the corresponding  vulkan_core.h header file must* contain all reserved Khronos driver IDs.Only driver IDs registered with Khronos are given symbolic names. There may% be unregistered driver IDs returned.See Alsof, \$None( #$&'(./0289:<>?hivulkanVkTessellationDomainOrigin - Enum describing tessellation domain origin DescriptionThis enum affects how the  VertexOrderCw and VertexOrderCcw tessellation execution modes are interpreted, since the winding is defined relative to the orientation of the domain.See AlsoVvulkan specifies that the origin of the domain space is in the lower left corner, as shown in figure  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#img-tessellation-topology-ll.vulkan specifies that the origin of the domain space is in the upper left corner, as shown in figure  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#img-tessellation-topology-ul.None( #$&'(./0289:<>?lvulkan>VkSamplerYcbcrRange - Range of encoded values in a color space Description8The formulae for these conversions is described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-sampler-YCbCr-conversion-rangeexpandSampler Y@CBCR Range Expansion section of the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#texturesImage Operations chapter.%No range modification takes place if  ycbcrModel is ; the  ycbcrRange field of Y is ignored in this case.See Also, Yvulkan specifies that headroom and foot room are reserved in the numerical range of encoded values, and the remaining values are expanded according to the ITU @narrow range@ quantization rules.vulkan specifies that the full range of the encoded values are valid and interpreted according to the ITU @full range@ quantization rules.None( #$&'(./0289:<>?uvulkanVkSamplerYcbcrModelConversion - Color model component of a color space Description specifies that the input values to the conversion are unmodified. specifies no model conversion but the inputs are range expanded as for Y@CBCR. specifies the color model conversion from Y@CBCR to R@G@B@ defined in BT.709 and described in the @BT.709 Y@CBCR conversion@ section of the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#data-format!Khronos Data Format Specification. specifies the color model conversion from Y@CBCR to R@G@B@ defined in BT.601 and described in the @BT.601 Y@CBCR conversion@ section of the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#data-format!Khronos Data Format Specification. specifies the color model conversion from Y@CBCR to R@G@B@ defined in BT.2020 and described in the @BT.2020 Y@CBCR conversion@ section of the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#data-format!Khronos Data Format Specification.In the )VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_* color models, for the input to the sampler Y@CBCR range expansion and model conversion:the Y (Y@ luma) channel corresponds to the G channel of an RGB image.the CB (CB or @U@ blue color difference) channel corresponds to the B channel of an RGB image.the CR (CR or @V@ red color difference) channel corresponds to the R channel of an RGB image.the alpha channel, if present, is not modified by color model conversion.These rules reflect the mapping of channels after the channel swizzle operation (controlled by Y:: components).NoteFor example, an @YUVA@ 32-bit format comprising four 8-bit channels can be implemented as  with a component mapping: components.a =  components.r =  components.g =  components.b = See Also, Y None( #$&'(./0289:<>?wvulkanVkPointClippingBehavior - Enum specifying the point clipping behaviorSee AlsoV, \vulkan specifies that the primitive is discarded only if the vertex lies outside any user clip plane.vulkan specifies that the primitive is discarded if the vertex lies outside any clip plane, including the planes bounding the view volume.None( #$&'(./0289:<>?y|vulkanVkDescriptorUpdateTemplateType - Indicates the valid usage of the descriptor update templateSee AlsoJvulkan specifies that the descriptor update template will be used for push descriptor updates only.vulkan specifies that the descriptor update template will be used for descriptor set updates only.None( #$&'(./0289:<>?{`vulkan9VkChromaLocation - Position of downsampled chroma samplesSee Also, Yvulkan specifies that downsampled chroma samples are located half way between each even luma sample and the nearest higher odd luma sample.vulkan specifies that downsampled chroma samples are aligned with luma samples with even coordinates.None( #$&'(./0289:<>?}vulkanVkVertexInputRate - Specify rate at which vertex attributes are pulled from buffersSee Also8, vulkan specifies that vertex attribute addressing is a function of the instance index.vulkan specifies that vertex attribute addressing is a function of the vertex index.None( #$&'(./0289:<>?vulkanVkVendorId - Khronos vendor IDs DescriptionNoteKhronos vendor IDs may be allocated by vendors at any time. Only the latest canonical versions of this Specification, of the corresponding vk.xml( API Registry, and of the corresponding  vulkan_core.h header file must) contain all reserved Khronos vendor IDs.Only Khronos vendor IDs are given symbolic names at present. PCI vendor IDs returned by the implementation can be looked up in the PCI-SIG database.See Also!No cross-references are availableNone( #$&'(./0289:<>?4vulkan*VkSystemAllocationScope - Allocation scope Description specifies that the allocation is scoped to the duration of the Vulkan command. specifies that the allocation is scoped to the lifetime of the Vulkan object that is being created or used. specifies that the allocation is scoped to the lifetime of a 0 or q object. specifies that the allocation is scoped to the lifetime of the Vulkan device. specifies that the allocation is scoped to the lifetime of the Vulkan instance.Most Vulkan commands operate on a single object, or there is a sole object that is being created or manipulated. When an allocation uses an allocation scope of  or , the allocation is scoped to the object being created or manipulated.When an implementation requires host memory, it will make callbacks to the application using the most specific allocator and allocation scope available:If an allocation is scoped to the duration of a command, the allocator will use the  allocation scope. The most specific allocator available is used: if the object being created or manipulated has an allocator, that object@s allocator will be used, else if the parent 0; has an allocator it will be used, else if the parent 0- has an allocator it will be used. Else,+If an allocation is associated with a q or 0) object, the allocator will use the  allocation scope. The most specific allocator available is used (cache, else device, else instance). Else,If an allocation is scoped to the lifetime of an object, that object is being created or manipulated by the command, and that object@s type is not 0 or 05, the allocator will use an allocation scope of . The most specific allocator available is used (object, else device, else instance). Else,If an allocation is scoped to the lifetime of a device, the allocator will use an allocation scope of . The most specific allocator available is used (device, else instance). Else,If the allocation is scoped to the lifetime of an instance and the instance has an allocator, its allocator will be used with an allocation scope of .Otherwise an implementation will allocate memory through an alternative mechanism that is unspecified.See Also *None( #$&'(./0289:<>?ivulkanVkSubpassContents - Specify how commands in the first subpass of a render pass are providedSee Alsod, , vulkan specifies that the contents are recorded in secondary command buffers that will be called from the primary command buffer, and 9 is the only valid command on the command buffer until  or .vulkan specifies that the contents of the subpass will be recorded inline in the primary command buffer, and secondary command buffers must$ not be executed within the subpass.iiNone( #$&'(./0289:<>?cvulkan*VkStructureType - Vulkan structure types (sType)See Also, , , , , , , , , , , , , , , , , , , ,  , d, i, d, i, , , , L, H, L, H, , Y, @, , , , , c, , 6, , T, c, , , , , , , , , , , ,  , 8, , , , , , , ,  , , , , , , , , , , , , , , , , , , , , ,  , ,  , ],  , W, ], ], J,  , , , , K, K, M, , , K, K, , c, w, , ,  , , E, , , , , s, , , , , , , , , +, N, , P, , , , R, , Q, O, , Q, P, P, , S, -, , , , U, , h, h, 7, , , , , , , 8, , , , , , , , 1, , , , g, U, 6, , T, , Y, , T, a, , , , 2, , V, , , , , , , , , , , , , , ,  , , 4, K, 4, 6, , I, I, , , , , , , , c, , T, , , , , , , , , , , , , G, , b, , , , , , c, , r, , , , , , , , , , , , , e, ], ], , , , , , f, , , , , Q, O, Q, , , S, U, l, , , , , , , , , , , , , M, ^, Q, , U, , , h, , , , , , , , W, , , U, , , , , X, , X, , , , , , , V, , , , , , U, E, E, , , , , , , , , , , , , _, Y, `, i, , , j, , ~, }, , Z, k, , , , , , m, , , , , U, F, , ,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceSubpassShadingFeaturesHUAWEI,VkPhysicalDeviceSubpassShadingFeaturesHUAWEI,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceSubpassShadingPropertiesHUAWEI.VkPhysicalDeviceSubpassShadingPropertiesHUAWEI, , , , , , n, n, , , , o, [, , , ,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceVideoFormatInfoKHR"VkPhysicalDeviceVideoFormatInfoKHR, \, \, \, \, p, , , , , 9, , 8, , z, , , , , 8, , 8, , , , , , , , 8, :, , 8, , , , , 8, {, , , , 8, , V, 8, , 8, , , , 8, , , , , , , , , E, ;, , , , , , U, , , , , , h, , 7, d, , V, X, , , , , >, , _, Y, Y, Y, , =, , , , n, , n, n, ?, , , U, T, , <, , d, d, d, e, d,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkSubpassShadingPipelineCreateInfoHUAWEI(VkSubpassShadingPipelineCreateInfoHUAWEI, , , , , , , , , , s, , n, , , , , , ,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoBeginCodingInfoKHRVkVideoBeginCodingInfoKHR,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoBindMemoryKHRVkVideoBindMemoryKHR,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoCapabilitiesKHRVkVideoCapabilitiesKHR,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoCodingControlInfoKHRVkVideoCodingControlInfoKHR,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264CapabilitiesEXT VkVideoDecodeH264CapabilitiesEXT,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264DpbSlotInfoEXTVkVideoDecodeH264DpbSlotInfoEXT,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264MvcEXTVkVideoDecodeH264MvcEXT,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264PictureInfoEXTVkVideoDecodeH264PictureInfoEXT,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264ProfileEXTVkVideoDecodeH264ProfileEXT,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264SessionCreateInfoEXT%VkVideoDecodeH264SessionCreateInfoEXT,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264SessionParametersAddInfoEXT,VkVideoDecodeH264SessionParametersAddInfoEXT,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264SessionParametersCreateInfoEXT/VkVideoDecodeH264SessionParametersCreateInfoEXT,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265CapabilitiesEXT VkVideoDecodeH265CapabilitiesEXT,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265DpbSlotInfoEXTVkVideoDecodeH265DpbSlotInfoEXT,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265PictureInfoEXTVkVideoDecodeH265PictureInfoEXT,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265ProfileEXTVkVideoDecodeH265ProfileEXT,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265SessionCreateInfoEXT%VkVideoDecodeH265SessionCreateInfoEXT,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265SessionParametersAddInfoEXT,VkVideoDecodeH265SessionParametersAddInfoEXT,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265SessionParametersCreateInfoEXT/VkVideoDecodeH265SessionParametersCreateInfoEXT,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeInfoKHRVkVideoDecodeInfoKHR,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264CapabilitiesEXT VkVideoEncodeH264CapabilitiesEXT,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264DpbSlotInfoEXTVkVideoEncodeH264DpbSlotInfoEXT,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264EmitPictureParametersEXT)VkVideoEncodeH264EmitPictureParametersEXT,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264NaluSliceEXTVkVideoEncodeH264NaluSliceEXT,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264ProfileEXTVkVideoEncodeH264ProfileEXT,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264SessionCreateInfoEXT%VkVideoEncodeH264SessionCreateInfoEXT,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264SessionParametersAddInfoEXT,VkVideoEncodeH264SessionParametersAddInfoEXT,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264SessionParametersCreateInfoEXT/VkVideoEncodeH264SessionParametersCreateInfoEXT,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264VclFrameInfoEXT VkVideoEncodeH264VclFrameInfoEXT,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeInfoKHRVkVideoEncodeInfoKHR,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeRateControlInfoKHRVkVideoEncodeRateControlInfoKHR,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEndCodingInfoKHRVkVideoEndCodingInfoKHR,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoFormatPropertiesKHRVkVideoFormatPropertiesKHR,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoGetMemoryPropertiesKHRVkVideoGetMemoryPropertiesKHR,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoPictureResourceKHRVkVideoPictureResourceKHR,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileKHRVkVideoProfileKHR,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfilesKHRVkVideoProfilesKHR,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoQueueFamilyProperties2KHR VkVideoQueueFamilyProperties2KHR,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoReferenceSlotKHRVkVideoReferenceSlotKHR,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoSessionCreateInfoKHRVkVideoSessionCreateInfoKHR,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoSessionParametersCreateInfoKHR%VkVideoSessionParametersCreateInfoKHR,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoSessionParametersUpdateInfoKHR%VkVideoSessionParametersUpdateInfoKHR, , , , ,  , , , , ,    None( #$&'(./0289:<>?#vulkan>VkPresentFrameTokenGGP - The Google Games Platform frame tokenValid Usage (Implicit)See Also vulkan frameToken* is the Google Games Platform frame token.,VUID-VkPresentFrameTokenGGP-frameToken-02680  frameToken must be a valid    None( #$&'(./0289:<>?qvulkanVkValidationFlagsEXT - Specify validation checks to disable for a Vulkan instanceValid Usage (Implicit)See Also,  vulkan;VkValidationCheckEXT - Specify validation checks to disableSee Also vulkanpDisabledValidationChecks is a pointer to an array of  9 values specifying the validation checks to be disabled.=VUID-VkValidationFlagsEXT-pDisabledValidationChecks-parameter pDisabledValidationChecks must$ be a valid pointer to an array of disabledValidationCheckCount valid   values vulkan / specifies that shader validation is disabled. vulkan 4 specifies that all validation checks are disabled.   None( #$&'(./0289:<>?zvulkanVkValidationFeaturesEXT - Specify validation features to enable or disable for a Vulkan instance Valid Usage=VUID-VkValidationFeaturesEXT-pEnabledValidationFeatures-02967 If the pEnabledValidationFeatures array contains  , then it must also contain  =VUID-VkValidationFeaturesEXT-pEnabledValidationFeatures-02968 If the pEnabledValidationFeatures array contains   , then it must not contain  Valid Usage (Implicit)(VUID-VkValidationFeaturesEXT-sType-sType sType must be  VUID-VkValidationFeaturesEXT-pEnabledValidationFeatures-parameter If enabledValidationFeatureCount is not 0, pEnabledValidationFeatures must( be a valid pointer to an array of enabledValidationFeatureCount valid   valuesVUID-VkValidationFeaturesEXT-pDisabledValidationFeatures-parameter If disabledValidationFeatureCount is not 0, pDisabledValidationFeatures must( be a valid pointer to an array of disabledValidationFeatureCount valid   valuesSee Also,  ,  vulkanVkValidationFeatureDisableEXT - Specify validation features to disableSee Also vulkanVkValidationFeatureEnableEXT - Specify validation features to enableSee Also vulkanpEnabledValidationFeatures is a pointer to an array of  : values specifying the validation features to be enabled. vulkanpDisabledValidationFeatures is a pointer to an array of  ; values specifying the validation features to be disabled. vulkan  specifies that there will be no caching of shader validation results and every shader will be validated on every application execution. Shader validation caching is enabled by default. vulkan  specifies that protection against duplicate non-dispatchable object handles is disabled. This feature is enabled by default. vulkan  specifies that core validation checks are disabled. This feature is enabled by default. If this feature is disabled, the shader validation and GPU-assisted validation features are also disabled. vulkan  specifies that object lifetime validation is disabled. This feature is enabled by default. vulkan  specifies that stateless parameter validation is disabled. This feature is enabled by default. vulkan  specifies that thread safety validation is disabled. This feature is enabled by default. vulkan  specifies that shader validation is disabled. This feature is enabled by default. vulkan 4 specifies that all validation checks are disabled. vulkan  specifies that Vulkan synchronization validation is enabled. This feature reports resource access conflicts due to missing or incorrect synchronization operations between actions (Draw, Copy, Dispatch, Blit) reading or writing the same regions of memory. This feature is disabled by default. vulkan ) specifies that the layers will process debugPrintfEXT operations in shaders and send the resulting output to the debug callback. This feature is disabled by default. vulkan  specifies that Vulkan best-practices validation is enabled. Activating this feature enables the output of warnings related to common misuse of the API, but which are not explicitly prohibited by the specification. This feature is disabled by default. vulkan  specifies that the validation layers reserve a descriptor set binding slot for their own use. The layer reports a value for  ::maxBoundDescriptorSets that is one less than the value reported by the device. If the device supports the binding of only one descriptor set, the validation layer does not perform GPU-assisted validation. This feature is disabled by default. vulkan  specifies that GPU-assisted validation is enabled. Activating this feature instruments shader programs to generate additional diagnostic data. This feature is disabled by default. & None( #$&'(./0289:<>?vulkanVkPhysicalDevicePCIBusInfoPropertiesEXT - Structure containing PCI bus information of a physical device DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.These are properties of the PCI bus information of a physical device.Valid Usage (Implicit)See Also vulkan pciDomain is the PCI bus domain. vulkanpciBus is the PCI bus identifier. vulkan pciDevice is the PCI device identifier. vulkan pciFunction' is the PCI device function identifier.   None( #$&'(./0289:<>?ovulkanVkDeviceQueueGlobalPriorityCreateInfoEXT - Specify a system wide priority Description$A queue created without specifying  will default to  .Valid Usage (Implicit)See Also ,  vulkanVkQueueGlobalPriorityEXT - Values specifying a system-wide queue priority DescriptionPriority values are sorted in ascending order. A comparison operation on the enum values can be used to determine the priority order.See Also,  vulkanglobalPriority is the system-wide priority associated to this queue as specified by  VUID-VkDeviceQueueGlobalPriorityCreateInfoEXT-globalPriority-parameter globalPriority must be a valid   value vulkan 5 is the highest priority. Useful for critical tasks. vulkan  is above the system default. vulkan  is the system default priority. vulkan  is below the system default. Useful for non-interactive tasks.   }None( #$&'(./0289:<>?vulkanVkPhysicalDeviceShaderCorePropertiesAMD - Structure describing shader core properties that can be supported by an implementation DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.Valid Usage (Implicit)See Also vulkanlimits-shaderEngineCount shaderEngineCount is an unsigned integer value indicating the number of shader engines found inside the shader core of the physical device. vulkan!limits-shaderArraysPerEngineCount shaderArraysPerEngineCount is an unsigned integer value indicating the number of shader arrays inside a shader engine. Each shader array has its own scan converter, set of compute units, and a render back end (color and depth buffers). Shader arrays within a shader engine share shader processor input (wave launcher) and shader export (export buffer) units. Currently, a shader engine can have one or two shader arrays. vulkan!limits-computeUnitsPerShaderArray computeUnitsPerShaderArray is an unsigned integer value indicating the physical number of compute units within a shader array. The active number of compute units in a shader array may be lower. A compute unit houses a set of SIMDs along with a sequencer module and a local data store. vulkanlimits-simdPerComputeUnit simdPerComputeUnit is an unsigned integer value indicating the number of SIMDs inside a compute unit. Each SIMD processes a single instruction at a time. vulkanlimits-wavefrontSize  wavefrontSize is an unsigned integer value indicating the maximum size of a subgroup. vulkanlimits-sgprsPerSimd  sgprsPerSimd is an unsigned integer value indicating the number of physical Scalar General Purpose Registers (SGPRs) per SIMD.vulkanlimits-minSgprAllocation minSgprAllocation is an unsigned integer value indicating the minimum number of SGPRs allocated for a wave.vulkanlimits-maxSgprAllocation maxSgprAllocation is an unsigned integer value indicating the maximum number of SGPRs allocated for a wave.vulkan limits-sgprAllocationGranularity sgprAllocationGranularity is an unsigned integer value indicating the granularity of SGPR allocation for a wave.vulkanlimits-vgprsPerSimd  vgprsPerSimd is an unsigned integer value indicating the number of physical Vector General Purpose Registers (VGPRs) per SIMD.vulkanlimits-minVgprAllocation minVgprAllocation is an unsigned integer value indicating the minimum number of VGPRs allocated for a wave.vulkanlimits-maxVgprAllocation maxVgprAllocation is an unsigned integer value indicating the maximum number of VGPRs allocated for a wave.vulkan limits-vgprAllocationGranularity vgprAllocationGranularity is an unsigned integer value indicating the granularity of VGPR allocation for a wave.     {None( #$&'(./0289:<>?vulkanVkPipelineRasterizationStateRasterizationOrderAMD - Structure defining rasterization order for a graphics pipelineValid Usage (Implicit)If the VK_AMD_rasterization_order device extension is not enabled or the application does not request a particular rasterization order through specifying a  structure then the rasterization order used by the graphics pipeline defaults to .See Also, vulkanVkRasterizationOrderAMD - Specify rasterization order for a graphics pipelineSee AlsovulkanrasterizationOrder is a < value specifying the primitive rasterization order to use.VUID-VkPipelineRasterizationStateRasterizationOrderAMD-rasterizationOrder-parameter rasterizationOrder must be a valid  valuevulkan< specifies that operations for each primitive in a subpass may not occur in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-orderprimitive order.vulkan< specifies that operations for each primitive in a subpass must occur in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-orderprimitive order.  wNone( #$&'(./0289:<>?vulkanVkDeviceMemoryOverallocationCreateInfoAMD - Specify memory overallocation behavior for a Vulkan deviceValid Usage (Implicit)See Also, vulkanVkMemoryOverallocationBehaviorAMD - Specify memory overallocation behaviorSee AlsovulkanoverallocationBehavior( is the desired overallocation behavior.VUID-VkDeviceMemoryOverallocationCreateInfoAMD-overallocationBehavior-parameter overallocationBehavior must be a valid  valuevulkan specifies the application is not allowed to allocate device memory beyond the heap sizes reported by  . Allocations that are not explicitly made by the application within the scope of the Vulkan instance are not accounted for.vulkan: specifies overallocation is allowed if platform permits.vulkan> lets the implementation decide if overallocation is allowed. )None( #$&'(./0289:<>? hvulkan)VkStencilOp - Stencil comparison function DescriptionFor purposes of increment and decrement, the stencil bits are considered as an unsigned integer.See Also8, vulkan decrements the current value and wraps to the maximum possible value when the value would go below 0.vulkan increments the current value and wraps to 0 when the maximum value would have been exceeded.vulkan# bitwise-inverts the current value.vulkan/ decrements the current value and clamps to 0.vulkan increments the current value and clamps to the maximum representable unsigned value.vulkan sets the value to  reference.vulkan sets the value to 0.vulkan keeps the current value. hhNone( #$&'(./0289:<>?`vulkan.VkSharingMode - Buffer and image sharing modes DescriptionNote may result in lower performance access to the buffer or image than .Ranges of buffers and image subresources of image objects created using  must: only be accessed by queues in the queue family that has  ownership of the resource. Upon creation, such resources are not owned by any queue family; ownership is implicitly acquired upon first use within a queue. Once a resource using 1 is owned by some queue family, the application must perform a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer to make the memory contents of a range or image subresource accessible to a different queue family.NoteImages still require a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-layoutslayout transition from  or ' before being used on the first queue.A queue family can take ownership of an image subresource or buffer range of a resource created with , without an ownership transfer, in the same way as for a resource that was just created; however, taking ownership in this way has the effect that the contents of the image subresource or buffer range are undefined.Ranges of buffers and image subresources of image objects created using  must only be accessed by queues from the queue families specified through the queueFamilyIndexCount and pQueueFamilyIndices6 members of the corresponding create info structures.See Also, 1, , vulkan specifies that concurrent access to any range or image subresource of the object from multiple queue families is supported.vulkan specifies that access to any range or image subresource of the object will be exclusive to a single queue family at a time.None( #$&'(./0289:<>?LvulkanVkSamplerMipmapMode - Specify mipmap mode used for texture lookups Description(These modes are described in detail in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-texel-filteringTexel Filtering.See Also>vulkan specifies linear filtering.vulkan specifies nearest filtering.None( #$&'(./0289:<>?vulkanVkSamplerAddressMode - Specify behavior of sampling with texture coordinates outside an imageSee Also>vulkan specifies that the mirror clamp to edge wrap mode will be used. This is only valid if  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-samplerMirrorClampToEdgesamplerMirrorClampToEdge is enabled, or if the #VK_KHR_sampler_mirror_clamp_to_edge extension is enabled.vulkan< specifies that the clamp to border wrap mode will be used.vulkan: specifies that the clamp to edge wrap mode will be used.vulkan< specifies that the mirrored repeat wrap mode will be used.vulkan3 specifies that the repeat wrap mode will be used. None( #$&'(./0289:<>?>%None( #$&'(./0289:<>?0$avulkan&VkResult - Vulkan command return codes DescriptionIf a command returns a runtime error, unless otherwise specified any output parameters will have undefined contents, except that if the output parameter is a structure with sType and pNext fields, those fields will be unmodified. Any structures chained from pNext1 will also have undefined contents, except that sType and pNext will be unmodified.VK_ERROR_OUT_OF_*_MEMORY errors do not modify any currently existing Vulkan objects. Objects that have already been successfully created can" still be used by the application.NoteAs a general rule, Free, Release, and Reset commands do not return ., while any other command with a return code may return it. Any exceptions from this rule are described for those commands. will be returned by an implementation when an unexpected error occurs that cannot be attributed to valid behavior of the application and implementation. Under these conditions, it may+ be returned from any command returning a a.Note is not expected to ever be returned if the application behavior is valid, and if the implementation is bug-free. If  is received, the application should be checked against the latest validation layers to verify correct behavior as much as possible. If no issues are identified it could be an implementation issue, and the implementor should be contacted for support.Performance-critical commands generally do not have return codes. If a runtime error occurs in such commands, the implementation will defer reporting the error until a specified point. For commands that record into command buffers (vkCmd*") runtime errors are reported by .See Alsovulkan, A pool memory allocation has failed. This must only be returned if no attempt to allocate host or device memory was made to accommodate the new allocation. If the failure was definitely due to fragmentation of the pool,  should be returned instead.vulkan An external handle is not a valid handle of the specified type.vulkan= A descriptor pool creation has failed due to fragmentation.vulkan A buffer creation or memory allocation failed because the requested address is not available. A shader group handle assignment failed because the requested shader group handle information is no longer valid.vulkan" A surface is no longer available.vulkan The requested window is already in use by Vulkan or another API in a manner which prevents it from being used again.vulkan A swapchain no longer matches the surface properties exactly, but can6 still be used to present to the surface successfully.vulkan A surface has changed in such a way that it is no longer compatible with the swapchain, and further presentation requests using the swapchain will fail. Applications must query the new surface properties and recreate their swapchain if they wish to continue presenting to the surface.vulkan The display used by a swapchain does not use the same presentable image layout, or is incompatible in a way that prevents sharing an image.vulkan One or more shaders failed to compile or link. More details are reported back to the application via VK_EXT_debug_report if enabled.vulkan, An operation on a swapchain created with > failed as it did not have exlusive full-screen access. This may occur due to implementation-dependent reasons, outside of the application@s control.vulkan A deferred operation is not complete but there is currently no work for this thread to do at the time of this call.vulkan A deferred operation is not complete but there is no work remaining to assign to additional threads.vulkan A deferred operation was requested and at least some of the work was deferred.vulkan A deferred operation was requested and no operations were deferred.vulkan A requested pipeline creation would have required compilation, but the application requested compilation to not be performed.vulkan An unknown error has occurred; either the application has provided invalid input, or an implementation failure has occurred.vulkan A pool allocation has failed due to fragmentation of the pool@s memory. This must only be returned if no attempt to allocate host or device memory was made to accommodate the new allocation. This should be returned in preference to , but only if the implementation is certain that the pool allocation failure was due to fragmentation.vulkan5 A requested format is not supported on this device.vulkan9 Too many objects of the type have already been created.vulkan The requested version of Vulkan is not supported by the driver or is otherwise incompatible for implementation-specific reasons.vulkan& A requested feature is not supported.vulkan( A requested extension is not supported.vulkan: A requested layer is not present or could not be loaded.vulkan' Mapping of a memory object has failed.vulkan4 The logical or physical device has been lost. See https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-lost-device Lost Devicevulkan Initialization of an object could not be completed for implementation-specific reasons.vulkan' A device memory allocation has failed.vulkan% A host memory allocation has failed.vulkan, A return array was too small for the resultvulkan An event is unsignaledvulkan An event is signaledvulkan9 A wait operation has not completed in the specified timevulkan' A fence or query has not yet completedvulkan Command successfully completed(aaNone( #$&'(./0289:<>?2vulkanThis exception is thrown from calls to marshalled Vulkan commands which return a negative VkResult./None( #$&'(./0289:<>?Zovulkan4VkDeviceSize - Vulkan device memory size and offsetsSee Also, , , , , , , H, H, , , , , , 6, , , ,  , , , , ,  , , , 4, 4,  , 5, ,  , W, , , , , \, @, @, @, , 1,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoBindMemoryKHRVkVideoBindMemoryKHR,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoCapabilitiesKHRVkVideoCapabilitiesKHR,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeInfoKHRVkVideoDecodeInfoKHR,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeInfoKHRVkVideoEncodeInfoKHR, 5, 5, , , , , , , , , , , , , , , , , , , , , , , , , , 4, ;, 4pvulkan,VkDeviceAddress - Vulkan device address typeSee Also, , , , , , , , , qvulkanVkBool32 - Vulkan boolean type Description represents a boolean True" (unsigned integer 1) value, and  a boolean False (unsigned integer 0) value.6All values returned from a Vulkan implementation in a q will be either  or . Applications must not pass any other values than  or ' into a Vulkan implementation where a q is expected.See Also, , , , , , , , W, s, , , , , I, , , G, , b, , , , , c, , r, , , , , , , , , , , e, ], ], , , , , , , , ,  , l, , , , , , , , , , , M, ^, Q, , h, , , , ,  , , , , , X, , , , , , , , , , , E, E, , , , , , , , , _, Y, `, i, , , j, , , Z, k, , , , , m, , , ,  , F, ,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceSubpassShadingFeaturesHUAWEI,VkPhysicalDeviceSubpassShadingFeaturesHUAWEI, , , , , n, , , o, [, , , \, \, \, \, p, , , , , , 8, 8, , , , 8, , , 8, 8, , , 8, , , , , E, >, Y, , , , s, ,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264EmitPictureParametersEXT)VkVideoEncodeH264EmitPictureParametersEXT, , , , , , , , , , , , s, -rvulkan;VkRect2D - Structure specifying a two-dimensional subregionSee AlsoL, , , K, , v, t, , , 8, , , , , , svulkan?q vulkan=VkViewportSwizzleNV - Structure specifying a viewport swizzleValid Usage (Implicit)See Also, vulkanVkPipelineViewportSwizzleStateCreateInfoNV - Structure specifying swizzle applied to primitive clip coordinatesValid Usage (Implicit)See Also, , vulkanVkViewportCoordinateSwizzleNV - Specify how a viewport coordinate is swizzled Description)These values are described in detail in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-viewport-swizzleViewport Swizzle.See AlsovulkanVkPipelineViewportSwizzleStateCreateFlagsNV - Reserved for future use Description is a bitmask type for setting a mask, but is currently reserved for future use.See Alsovulkanflags is reserved for future use.VUID-VkPipelineViewportSwizzleStateCreateInfoNV-flags-zerobitmask flags must be 0vulkanpViewportSwizzles is a pointer to an array of - structures, defining the viewport swizzles.VUID-VkPipelineViewportSwizzleStateCreateInfoNV-pViewportSwizzles-parameter pViewportSwizzles must$ be a valid pointer to an array of  viewportCount valid  structuresvulkanx is a  value specifying the swizzle operation to apply to the x component of the primitive$VUID-VkViewportSwizzleNV-x-parameter x must be a valid  valuevulkany is a  value specifying the swizzle operation to apply to the y component of the primitive$VUID-VkViewportSwizzleNV-y-parameter y must be a valid  valuevulkanz is a  value specifying the swizzle operation to apply to the z component of the primitive$VUID-VkViewportSwizzleNV-z-parameter z must be a valid  valuevulkanw is a  value specifying the swizzle operation to apply to the w component of the primitive$VUID-VkViewportSwizzleNV-w-parameter w must be a valid  value"None( #$&'(./0289:<>?wfvulkanVkPhysicalDeviceShaderSMBuiltinsPropertiesNV - Structure describing shader SM Builtins properties supported by an implementation DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.Valid Usage (Implicit)See AlsovulkanVkPhysicalDeviceShaderSMBuiltinsFeaturesNV - Structure describing the shader SM Builtins features that can be supported by an implementationMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkanfeatures-shaderSMBuiltins shaderSMBuiltins; indicates whether the implementation supports the SPIR-V ShaderSMBuiltinsNV capability.vulkanlimits-shaderSMCount  shaderSMCount% is the number of SMs on the device.vulkanlimits-shaderWarpsPerSM shaderWarpsPerSM is the maximum number of simultaneously executing warps on an SM.  None( #$&'(./0289:<>?{vulkanVkPhysicalDeviceShaderImageFootprintFeaturesNV - Structure describing shader image footprint features that can be supported by an implementationMembers/This structure describes the following feature: DescriptionSee  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-footprintTexel Footprint Evaluation for more information.If the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkanfeatures-imageFootprint imageFootprint4 specifies whether the implementation supports the ImageFootprintNV SPIR-V capability.None( #$&'(./0289:<>?vulkanVkPipelineRepresentativeFragmentTestStateCreateInfoNV - Structure specifying representative fragment test Description)If this structure is not included in the pNext chain,  representativeFragmentTestEnable is considered to be /4, and the representative fragment test is disabled.If  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-fragment-earlytestearly fragment tests are not enabled in the active fragment shader, the representative fragment shader test has no effect, even if enabled.Valid Usage (Implicit)See Alsoq, vulkanVkPhysicalDeviceRepresentativeFragmentTestFeaturesNV - Structure describing the representative fragment test features that can be supported by an implementationMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkan representativeFragmentTestEnable? controls whether the representative fragment test is enabled.vulkan#features-representativeFragmentTest representativeFragmentTest indicates whether the implementation supports the representative fragment test. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-rep-frag-testRepresentative Fragment Test.  None( #$&'(./0289:<>? vulkanVkPipelineCoverageModulationStateCreateInfoNV - Structure specifying parameters controlling coverage modulation DescriptionIf coverageModulationTableEnable is /, then for each color sample the associated bits of the pixel coverage are counted and divided by the number of associated bits to produce a modulation factor R in the range (0,1] (a value of zero would have been killed due to a color coverage of 0). Specifically: N = value of rasterizationSamples M = value of 7::samples for any color attachments0R = popcount(associated coverage bits) / (N / M)If coverageModulationTableEnable is /, the value R is computed using a programmable lookup table. The lookup table has N / M elements, and the element of the table is selected by:R = pCoverageModulationTable&[popcount(associated coverage bits)-1]Note that the table does not have an entry for popcount(associated coverage bits) = 0, because such samples would have been killed.The values of pCoverageModulationTable may be rounded to an implementation-dependent precision, which is at least as fine as 1 / N, and clamped to [0,1].For each color attachment with a floating point or normalized color format, each fragment output color value is replicated to M values which can each be modulated (multiplied) by that color sample@s associated value of R. Which components are modulated is controlled by coverageModulationMode.)If this structure is not included in the pNext chain, it is as if coverageModulationMode is .If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-coverage-reductioncoverage reduction mode is , each color sample is associated with only a single coverage sample. In this case, it is as if coverageModulationMode is . Valid UsageVUID-VkPipelineCoverageModulationStateCreateInfoNV-coverageModulationTableEnable-01405 If coverageModulationTableEnable is /, coverageModulationTableCount must be equal to the number of rasterization samples divided by the number of color samples in the subpassValid Usage (Implicit)>VUID-VkPipelineCoverageModulationStateCreateInfoNV-sType-sType sType must be  VUID-VkPipelineCoverageModulationStateCreateInfoNV-flags-zerobitmask flags must be 0VUID-VkPipelineCoverageModulationStateCreateInfoNV-coverageModulationMode-parameter coverageModulationMode must be a valid  valueSee Alsoq, , , vulkanVkCoverageModulationModeNV - Specify the coverage modulation modeSee AlsovulkanVkPipelineCoverageModulationStateCreateFlagsNV - Reserved for future use Description is a bitmask type for setting a mask, but is currently reserved for future use.See Alsovulkanflags is reserved for future use.vulkancoverageModulationMode is a 9 value controlling which color components are modulated.vulkancoverageModulationTableEnable controls whether the modulation factor is looked up from a table in pCoverageModulationTable.vulkancoverageModulationTableCount is the number of elements in pCoverageModulationTable.vulkanpCoverageModulationTable is a table of modulation factors containing a value for each number of covered samples.vulkan specifies that all components are multiplied by the modulation factor.vulkan specifies that the alpha component is multiplied by the modulation factor.vulkan specifies that the red, green, and blue components are multiplied by the modulation factor.vulkan specifies that no components are multiplied by the modulation factor.None( #$&'(./0289:<>?vulkanVkPhysicalDeviceFragmentShaderBarycentricFeaturesNV - Structure describing barycentric support in fragment shaders that can be supported by an implementationMembers/This structure describes the following feature: DescriptionSee  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-barycentricBarycentric Interpolation for more information.If the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkan"features-fragmentShaderBarycentric fragmentShaderBarycentric1 indicates that the implementation supports the  BaryCoordNV and BaryCoordNoPerspNV4 SPIR-V fragment shader built-ins and supports the  PerVertexNV6 SPIR-V decoration on fragment shader input variables.None( #$&'(./0289:<>?1vulkanVkPipelineCoverageToColorStateCreateInfoNV - Structure specifying whether fragment coverage replaces a color DescriptionIf the pNext chain of 8 includes a  structure, then that structure controls whether the fragment coverage is substituted for a fragment color output and, if so, which output is replaced.If coverageToColorEnable is /, the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask coverage mask replaces the first component of the color value corresponding to the fragment shader output location with Location equal to coverageToColorLocation and Index equal to zero. If the color attachment format has fewer bits than the coverage mask, the low bits of the sample coverage mask are taken without any clamping. If the color attachment format has more bits than the coverage mask, the high bits of the sample coverage mask are filled with zeros.If coverageToColorEnable is /, these operations are skipped. If this structure is not included in the pNext chain, it is as if coverageToColorEnable is /. Valid UsageVUID-VkPipelineCoverageToColorStateCreateInfoNV-coverageToColorEnable-01404 If coverageToColorEnable is /6, then the render pass subpass indicated by 8:: renderPass and 8::subpass must: have a color attachment at the location selected by coverageToColorLocation, with a  of , , , ,  , or Valid Usage (Implicit);VUID-VkPipelineCoverageToColorStateCreateInfoNV-sType-sType sType must be  VUID-VkPipelineCoverageToColorStateCreateInfoNV-flags-zerobitmask flags must be 0See Alsoq, , vulkanVkPipelineCoverageToColorStateCreateFlagsNV - Reserved for future use Description is a bitmask type for setting a mask, but is currently reserved for future use.See Alsovulkanflags is reserved for future use.vulkancoverageToColorEnable controls whether the fragment coverage value replaces a fragment color output.vulkancoverageToColorLocation controls which fragment shader color output value is replaced.  None( #$&'(./0289:<>?$vulkanVkPhysicalDeviceDiagnosticsConfigFeaturesNV - Structure describing the device-generated diagnostic configuration features that can be supported by an implementationMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkanVkDeviceDiagnosticsConfigCreateInfoNV - Specify diagnostics config for a Vulkan deviceValid Usage (Implicit)See Also, vulkanVkDeviceDiagnosticsConfigFlagBitsNV - Bitmask specifying diagnostics flagsSee Alsovulkanflags is a bitmask of  specifying addtional parameters for configuring diagnostic tools.:VUID-VkDeviceDiagnosticsConfigCreateInfoNV-flags-parameter flags must be a valid combination of  valuesvulkan#features-features-diagnosticsConfig diagnosticsConfig indicates whether the implementation supports the ability to configure diagnostic tools.vulkan" enables automatic insertion of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#device-diagnostic-checkpointsdiagnostic checkpoints for draw calls, dispatches, trace rays, and copies. The CPU call stack at the time of the command will be associated as the marker data for the automatically inserted checkpoints.vulkan enables driver side tracking of resources (images, buffers, etc.) used to augment the device fault information.vulkan: enables the generation of debug information for shaders.None( #$&'(./0289:<>? vulkanVkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV - Structure describing dedicated allocation image aliasing features that can be supported by an implementationMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkan)features-dedicatedAllocationImageAliasing  dedicatedAllocationImageAliasing indicates that the implementation supports aliasing of compatible image objects on a dedicated allocation.None( #$&'(./0289:<>?vulkanVkPhysicalDeviceCornerSampledImageFeaturesNV - Structure describing corner sampled image features that can be supported by an implementationMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkanfeatures-cornersampledimage cornerSampledImage2 specifies whether images can be created with a 1::flags containing . See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-images-corner-sampledCorner-Sampled Images.None( #$&'(./0289:<>?vulkanVkPhysicalDeviceComputeShaderDerivativesFeaturesNV - Structure describing compute shader derivative features that can be supported by an implementationMembers0This structure describes the following features: DescriptionSee  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-scope-quadQuad shader scope for more information.If the :VkPhysicalDeviceComputeShaderDerivativesFeaturesNVfeatures . structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported. :VkPhysicalDeviceComputeShaderDerivativesFeaturesNVfeatures. can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkan$features-computeDerivativeGroupQuads computeDerivativeGroupQuads2 indicates that the implementation supports the ComputeDerivativeGroupQuadsNV SPIR-V capability.vulkan%features-computeDerivativeGroupLinear computeDerivativeGroupLinear2 indicates that the implementation supports the ComputeDerivativeGroupLinearNV SPIR-V capability.None( #$&'(./0289:<>?vulkanVkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX - Structure describing multiview limits that can be supported by an implementation DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.Valid Usage (Implicit)See Alsoq, vulkan#limits-perViewPositionAllComponents perViewPositionAllComponents is / if the implementation supports per-view position values that differ in components other than the X component.None( #$&'(./0289:<>?/vulkanVkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR - Structure describing support for zero initialization of workgroup memory by an implementationMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkan,features-shaderZeroInitializeWorkgroupMemory #shaderZeroInitializeWorkgroupMemory specifies whether the implementation supports initializing a variable in Workgroup storage class.None( #$&'(./0289:<>?vulkanVkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR - Structure describing the workgroup storage explicit layout features that can be supported by an implementationMembers0This structure describes the following features: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkan&features-workgroupMemoryExplicitLayout workgroupMemoryExplicitLayout< indicates whether the implementation supports the SPIR-V  WorkgroupMemoryExplicitLayoutKHR capability.vulkan7features-workgroupMemoryExplicitLayoutScalarBlockLayout .workgroupMemoryExplicitLayoutScalarBlockLayout indicates whether the implementation supports scalar alignment for laying out Workgroup Blocks.vulkan0features-workgroupMemoryExplicitLayout8BitAccess 'workgroupMemoryExplicitLayout8BitAccess# indicates whether objects in the  Workgroup storage class with the Block decoration can have 8-bit integer members. If this feature is not enabled, 8-bit integer members must not be used in such objects. This also indicates whether shader modules can declare the *WorkgroupMemoryExplicitLayout8BitAccessKHR capability.vulkan1features-workgroupMemoryExplicitLayout16BitAccess (workgroupMemoryExplicitLayout16BitAccess# indicates whether objects in the  Workgroup storage class with the Block decoration can have 16-bit integer and 16-bit floating-point members. If this feature is not enabled, 16-bit integer or 16-bit floating-point members must not be used in such objects. This also indicates whether shader modules can declare the +WorkgroupMemoryExplicitLayout16BitAccessKHR capability.  None( #$&'(./0289:<>?AvulkanVkSurfaceProtectedCapabilitiesKHR - Structure describing capability of a surface to be protectedValid Usage (Implicit)See Alsoq, vulkansupportsProtected7 specifies whether a protected swapchain created from ::surface$ for a particular windowing system can$ be displayed on screen or not. If supportsProtected is /), then creation of swapchains with the  flag set must be supported for surface.None( #$&'(./0289:<>?vulkanVkPhysicalDeviceShaderTerminateInvocationFeaturesKHR - Structure describing support for the SPIR-V SPV_KHR_terminate_invocation extensionMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkan"features-shaderTerminateInvocation shaderTerminateInvocation specifies whether the implementation supports SPIR-V modules that use the SPV_KHR_terminate_invocation extension.None( #$&'(./0289:<>?МvulkanVkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR - Structure describing support for shader subgroup uniform control flow by an implementationMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkan)features-shaderSubgroupUniformControlFlow  shaderSubgroupUniformControlFlow specifies whether the implementation supports the shader execution mode SubgroupUniformControlFlowKHRNone( #$&'(./0289:<>?svulkanVkPhysicalDeviceShaderClockFeaturesKHR - Structure describing features supported by VK_KHR_shader_clockMembers0This structure describes the following features: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkanfeatures-shaderSubgroupClock shaderSubgroupClock indicates whether shaders can perform Subgroup scoped clock reads.vulkanfeatures-shaderDeviceClock shaderDeviceClock indicates whether shaders can perform 0 scoped clock reads.None( #$&'(./0289:<>?vulkanVkPhysicalDeviceRayQueryFeaturesKHR - Structure describing the ray query features that can be supported by an implementationMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkanfeatures-rayQuery rayQuery; indicates whether the implementation supports ray query (OpRayQueryProceedKHR) functionality.None( #$&'(./0289:<>?\vulkan5VkPresentIdKHR - The list of presentation identifiers DescriptionFor applications to be able to reference specific presentation events queued by a call to =, an identifier needs to be associated with them. When the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-presentId presentId# feature is enabled, applications can include the  structure in the pNext chain of the " structure to supply identifiers.Each q has a presentId associated with it. This value is initially set to zero when the q is created.When a  structure with a non-NULL  pPresentIds is included in the pNext chain of a  structure, each  pSwapchains) entry has a presentId associated in the  pPresentIds2 array at the same index as the swapchain in the  pSwapchains= array. If this presentId is non-zero, then the application can later use this value to refer to that image presentation. A value of zero indicates that this presentation has no associated presentId. A non-zero presentId must be greater than any non-zero presentId passed previously by the application for the same swapchain.There is no requirement for any precise timing relationship between the presentation of the image to the user and the update of the presentId value, but implementations should make this as close as possible to the presentation of the first pixel in the new image to the user. Valid Usage(VUID-VkPresentIdKHR-swapchainCount-04998 swapchainCount must be the same value as ::swapchainCount, where this # is in the pNext-chain of the  structure$VUID-VkPresentIdKHR-presentIds-04999 Each  presentIds entry must be greater than any previous  presentIds& entry passed for the associated  pSwapchains entryValid Usage (Implicit)VUID-VkPresentIdKHR-sType-sType sType must be  )VUID-VkPresentIdKHR-pPresentIds-parameter If  pPresentIds is not NULL,  pPresentIds must( be a valid pointer to an array of swapchainCount uint64_t values.VUID-VkPresentIdKHR-swapchainCount-arraylength swapchainCount must be greater than 0See AlsovulkanVkPhysicalDevicePresentIdFeaturesKHR - Structure indicating support for present idMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkanswapchainCount5 is the number of swapchains being presented to the  command.vulkan pPresentIds is NULL, or a pointer to an array of uint64_t with swapchainCount entries. If not NULL, each non-zero value in  pPresentIds specifies the present id to be associated with the presentation of the swapchain with the same index in the  call.vulkanfeatures-presentId  presentId indicates that the implementation supports specifying present ID values in the  extension to the  struct.  None( #$&'(./0289:<>?vulkanVkPhysicalDevicePortabilitySubsetPropertiesKHR - Structure describing additional properties supported by a portable implementation DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.Valid Usage (Implicit)See AlsovulkanVkPhysicalDevicePortabilitySubsetFeaturesKHR - Structure describing the features that may not be supported by an implementation of the Vulkan 1.0 Portability SubsetMembers0This structure describes the following features: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkan+limits-minVertexInputBindingStrideAlignment $minVertexInputBindingStrideAlignment= indicates the minimum alignment for vertex input strides. 8::stride must9 be a multiple of, and at least as large as, this value.vulkan'features-constantAlphaColorBlendFactors constantAlphaColorBlendFactors: indicates whether this implementation supports constant alpha  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blendfactors used as source or destination color  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blending.vulkanfeatures-events events indicates whether this implementation supports synchronization using  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-events.vulkan(features-imageViewFormatReinterpretation imageViewFormatReinterpretation3 indicates whether this implementation supports a 0 being created with a texel format containing a different number of components, or a different number of bits in each component, than the texel format of the underlying 0.vulkanfeatures-imageViewFormatSwizzle imageViewFormatSwizzle indicates whether this implementation supports remapping format components using 2:: components.vulkanfeatures-imageView2DOn3DImage imageView2DOn3DImage3 indicates whether this implementation supports a 0 being created with the  flag set, permitting a 2D or 2D array image view to be created on a 3D 0.vulkanfeatures-multisampleArrayImage multisampleArrayImage3 indicates whether this implementation supports a 0> being created as a 2D array with multiple samples per texel.vulkan"features-mutableComparisonSamplers mutableComparisonSamplers indicates whether this implementation allows descriptors with comparison samplers to be  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-updatesupdated.vulkanfeatures-pointPolygons  pointPolygons2 indicates whether this implementation supports  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast using a point  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-polygonmode.vulkanfeatures-samplerMipLodBias samplerMipLodBias< indicates whether this implementation supports setting a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-mipLodBiasmipmap LOD bias value when  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplerscreating a sampler.vulkanfeatures-separateStencilMaskRef separateStencilMaskRef indicates whether this implementation supports separate front and back  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil reference values.vulkan/features-shaderSampleRateInterpolationFunctions &shaderSampleRateInterpolationFunctions indicates whether this implementation supports fragment shaders which use the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-InterpolationFunctionInterpolationFunction+ capability and the extended instructions InterpolateAtCentroid, InterpolateAtOffset, and InterpolateAtSample from the  GLSL.std.450 extended instruction set. This member is only meaningful if the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sampleRateShadingsampleRateShading feature is supported.vulkanfeatures-tessellationIsolines tessellationIsolines2 indicates whether this implementation supports  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#tessellation-isoline-tessellationisoline output from the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#tessellation stage of a graphics pipeline. This member is only meaningful if  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders are supported.vulkanfeatures-tessellationPointMode tessellationPointMode2 indicates whether this implementation supports  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#tessellation-point-mode point output from the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#tessellation stage of a graphics pipeline. This member is only meaningful if  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders are supported.vulkanfeatures-triangleFans  triangleFans2 indicates whether this implementation supports  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-triangle-fans primitive topology.vulkan*features-vertexAttributeAccessBeyondStride !vertexAttributeAccessBeyondStride indicates whether this implementation supports accessing a vertex input attribute beyond the stride of the corresponding vertex input binding.None( #$&'(./0289:<>?< vulkanVkRectLayerKHR - Structure containing a rectangle, including layer, changed by vkQueuePresentKHR for a given VkImage DescriptionSome platforms allow the size of a surface to change, and then scale the pixels of the image to fit the surface.  specifies pixels of the swapchain@s image(s), which will be constant for the life of the swapchain. Valid Usage VUID-VkRectLayerKHR-offset-04864 The sum of offset and extent0, after being transformed according to the  preTransform member of the  structure, must be no greater than the  imageExtent member of the  structure passed to VUID-VkRectLayerKHR-layer-01262 layer must be less than the imageArrayLayers member of the  structure passed to See Alsov, t, vulkanVkPresentRegionsKHR - Structure hint of rectangular regions changed by vkQueuePresentKHR Valid Usage-VUID-VkPresentRegionsKHR-swapchainCount-01260 swapchainCount must be the same value as ::swapchainCount , where  is included in the pNext chain of this  structureValid Usage (Implicit)$VUID-VkPresentRegionsKHR-sType-sType sType must be  +VUID-VkPresentRegionsKHR-pRegions-parameter If pRegions is not NULL, pRegions must( be a valid pointer to an array of swapchainCount valid  structures3VUID-VkPresentRegionsKHR-swapchainCount-arraylength swapchainCount must be greater than 0See Also, vulkanVkPresentRegionKHR - Structure containing rectangular region changed by vkQueuePresentKHR for a given VkImageValid Usage (Implicit)-VUID-VkPresentRegionKHR-pRectangles-parameter If rectangleCount is not 0, and  pRectangles is not NULL,  pRectangles must( be a valid pointer to an array of rectangleCount valid  structuresSee Also, vulkanoffset+ is the origin of the rectangle, in pixels.vulkanextent) is the size of the rectangle, in pixels.vulkanlayer is the layer of the image. For images with only one layer, the value of layer must be 0.vulkanrectangleCount is the number of rectangles in  pRectangles, or zero if the entire image has changed and should be presented.vulkan pRectangles is either NULL or a pointer to an array of  structures. The  structure is the framebuffer coordinates, plus layer, of a portion of a presentable image that has changed and must be presented. If non-NULL, each entry in  pRectangles is a rectangle of the given image that has changed since the last image was presented to the given swapchain. The rectangles must be specified relative to ::currentTransform!, regardless of the swapchain@s  preTransform*. The presentation engine will apply the  preTransform transformation to the rectangles, along with any further transformation it applies to the image content.vulkanswapchainCount is the number of swapchains being presented to by this command.vulkanpRegions is NULL or a pointer to an array of  elements with swapchainCount entries. If not NULL, each element of pRegions contains the region that has changed since the last present to the swapchain in the corresponding entry in the :: pSwapchains array.None( #$&'(./0289:<>?dvulkanVkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL - Structure describing shader integer functions that can be supported by an implementationMembers/This structure describes the following feature: DescriptionIf the ?vulkanVkPhysicalDeviceYcbcrImageArraysFeaturesEXT - Structure describing extended Y@CBCR image creation features that can be supported by an implementationMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkanfeatures-ycbcrImageArrays ycbcrImageArrays indicates that the implementation supports creating images with a format that requires  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionY@CBCR conversion and has multiple array layers.None( #$&'(./0289:<>?*vulkanVkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT - Structure describing whether the implementation supports additional 2-plane 444 Y@CBCR formatsMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkanfeatures-ycbcr2plane444Formats ycbcr2plane444Formats indicates that the implementation supports the following 2-plane 444 Y@CBCR formats:None( #$&'(./0289:<>?- vulkanVkVertexInputBindingDivisorDescriptionEXT - Structure specifying a divisor used in instanced rendering DescriptionIf this structure is not used to define a divisor value for an attribute, then the divisor has a logical default value of 1. Valid UsageVUID-VkVertexInputBindingDivisorDescriptionEXT-inputRate-01871 8:: inputRate must be of type  for this bindingSee AlsovulkanVkPipelineVertexInputDivisorStateCreateInfoEXT - Structure specifying vertex attributes assignment during instanced renderingValid Usage (Implicit)See Also, vulkanVkPhysicalDeviceVertexAttributeDivisorPropertiesEXT - Structure describing max value of vertex attribute divisor that can be supported by an implementation DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.Valid Usage (Implicit)See AlsovulkanVkPhysicalDeviceVertexAttributeDivisorFeaturesEXT - Structure describing if fetching of vertex attribute may be repeated for instanced renderingMembers0This structure describes the following features: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkan+features-vertexAttributeInstanceRateDivisor "vertexAttributeInstanceRateDivisor specifies whether vertex attribute fetching may be repeated in case of instanced rendering.vulkan/features-vertexAttributeInstanceRateZeroDivisor &vertexAttributeInstanceRateZeroDivisor% specifies whether a zero value for ::divisor is supported.vulkanlimits-maxVertexAttribDivisor maxVertexAttribDivisor is the maximum value of the number of instances that will repeat the value of vertex attribute data when instanced rendering is enabled.vulkanpVertexBindingDivisors is a pointer to an array of  structures, which specifies the divisor value for each binding.VUID-VkPipelineVertexInputDivisorStateCreateInfoEXT-pVertexBindingDivisors-parameter pVertexBindingDivisors must$ be a valid pointer to an array of vertexBindingDivisorCount  structuresvulkanbinding: is the binding number for which the divisor is specified.vulkandivisor is the number of successive instances that will use the same value of the vertex attribute when instanced rendering is enabled. For example, if the divisor is N, the same vertex attribute will be applied to N successive instances before moving on to the next vertex attribute. The maximum value of divisor8 is implementation-dependent and can be queried using ::maxVertexAttribDivisor. A value of 0 can! be used for the divisor if the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-vertexAttributeInstanceRateZeroDivisor&vertexAttributeInstanceRateZeroDivisor feature is enabled. In this case, the same vertex attribute will be applied to all instances.None( #$&'(./0289:<>?2vulkanVkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT - Structure describing ASTC HDR features that can be supported by an implementationMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkan#features-textureCompressionASTC_HDR textureCompressionASTC_HDR indicates whether all of the ASTC HDR compressed texture formats are supported. If this feature is enabled, then the ,  and  features must be supported in optimalTilingFeatures for the following formats:To query for additional properties, or if the feature is not enabled,   and   can be used to check for supported properties of individual formats as normal.None( #$&'(./0289:<>?>vulkanVkPhysicalDeviceTexelBufferAlignmentPropertiesEXT - Structure describing the texel buffer alignment requirements supported by an implementation DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.+If the single texel alignment property is /!, then the buffer view@s offset must be aligned to the corresponding byte alignment value. If the single texel alignment property is /!, then the buffer view@s offset must be aligned to the lesser of the corresponding byte alignment value or the size of a single texel, based on ::format. If the size of a single texel is a multiple of three bytes, then the size of a single component of the format is used instead. These limits must, not advertise a larger alignment than the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-requiredrequired maximum minimum value of  ::minTexelBufferOffsetAlignment6, for any format that supports use as a texel buffer.Valid Usage (Implicit)See Alsoq, o, vulkanVkPhysicalDeviceTexelBufferAlignmentFeaturesEXT - Structure describing the texel buffer alignment features that can be supported by an implementationMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkan-limits-storageTexelBufferOffsetAlignmentBytes &storageTexelBufferOffsetAlignmentBytes is a byte alignment that is sufficient for a storage texel buffer of any format.vulkan3limits-storageTexelBufferOffsetSingleTexelAlignment ,storageTexelBufferOffsetSingleTexelAlignment indicates whether single texel alignment is sufficient for a storage texel buffer of any format.vulkan-limits-uniformTexelBufferOffsetAlignmentBytes &uniformTexelBufferOffsetAlignmentBytes is a byte alignment that is sufficient for a uniform texel buffer of any format.vulkan3limits-uniformTexelBufferOffsetSingleTexelAlignment ,uniformTexelBufferOffsetSingleTexelAlignment indicates whether single texel alignment is sufficient for a uniform texel buffer of any format.vulkanfeatures-texelBufferAlignment texelBufferAlignment indicates whether the implementation uses more specific alignment requirements advertised in  rather than  ::minTexelBufferOffsetAlignment.  None( #$&'(./0289:<>?CvulkanVkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT - Structure describing features supported by VK_EXT_shader_image_atomic_int64Members0This structure describes the following features: DescriptionIf the ,VkPhysicalDeviceShaderAtomicInt64FeaturesEXT structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported. ,VkPhysicalDeviceShaderAtomicInt64FeaturesEXT can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkan features-shaderImageInt64Atomics shaderImageInt64Atomics indicates whether shaders can support 64-bit unsigned and signed integer atomic operations on images.vulkan features-sparseImageInt64Atomics sparseImageInt64Atomics+ indicates whether 64-bit integer atomics can be used on sparse images.None( #$&'(./0289:<>?GLvulkanVkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT - Structure describing the shader demote to helper invocations features that can be supported by an implementationMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkan'features-shaderDemoteToHelperInvocation shaderDemoteToHelperInvocation; indicates whether the implementation supports the SPIR-V DemoteToHelperInvocationEXT capability.None( #$&'(./0289:<>?S vulkanVkPhysicalDeviceShaderAtomicFloat2FeaturesEXT - Structure describing features supported by VK_EXT_shader_atomic_float2Members0This structure describes the following features: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkan#features-shaderBufferFloat16Atomics shaderBufferFloat16Atomics indicates whether shaders can perform 16-bit floating-point load, store, and exchange atomic operations on storage buffers.vulkan%features-shaderBufferFloat16AtomicAdd shaderBufferFloat16AtomicAdd indicates whether shaders can perform 16-bit floating-point add atomic operations on storage buffers.vulkan(features-shaderBufferFloat16AtomicMinMax shaderBufferFloat16AtomicMinMax indicates whether shaders can perform 16-bit floating-point min and max atomic operations on storage buffers.vulkan(features-shaderBufferFloat32AtomicMinMax shaderBufferFloat32AtomicMinMax indicates whether shaders can perform 32-bit floating-point min and max atomic operations on storage buffers.vulkan(features-shaderBufferFloat64AtomicMinMax shaderBufferFloat64AtomicMinMax indicates whether shaders can perform 64-bit floating-point min and max atomic operations on storage buffers.vulkan#features-shaderSharedFloat16Atomics shaderSharedFloat16Atomics indicates whether shaders can perform 16-bit floating-point load, store and exchange atomic operations on shared memory.vulkan%features-shaderSharedFloat16AtomicAdd shaderSharedFloat16AtomicAdd indicates whether shaders can perform 16-bit floating-point add atomic operations on shared memory.vulkan(features-shaderSharedFloat16AtomicMinMax shaderSharedFloat16AtomicMinMax indicates whether shaders can perform 16-bit floating-point min and max atomic operations on shared memory.vulkan(features-shaderSharedFloat32AtomicMinMax shaderSharedFloat32AtomicMinMax indicates whether shaders can perform 32-bit floating-point min and max atomic operations on shared memory.vulkan(features-shaderSharedFloat64AtomicMinMax shaderSharedFloat64AtomicMinMax indicates whether shaders can perform 64-bit floating-point min and max atomic operations on shared memory.vulkan'features-shaderImageFloat32AtomicMinMax shaderImageFloat32AtomicMinMax indicates whether shaders can perform 32-bit floating-point min and max atomic image operations.vulkan'features-sparseImageFloat32AtomicMinMax sparseImageFloat32AtomicMinMax indicates whether 32-bit floating-point min and max atomic operations can be used on sparse images.None( #$&'(./0289:<>?`w vulkanVkPhysicalDeviceShaderAtomicFloatFeaturesEXT - Structure describing features supported by VK_EXT_shader_atomic_floatMembers0This structure describes the following features: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkan#features-shaderBufferFloat32Atomics shaderBufferFloat32Atomics indicates whether shaders can perform 32-bit floating-point load, store and exchange atomic operations on storage buffers.vulkan%features-shaderBufferFloat32AtomicAdd shaderBufferFloat32AtomicAdd indicates whether shaders can perform 32-bit floating-point add atomic operations on storage buffers.vulkan#features-shaderBufferFloat64Atomics shaderBufferFloat64Atomics indicates whether shaders can perform 64-bit floating-point load, store and exchange atomic operations on storage buffers.vulkan%features-shaderBufferFloat64AtomicAdd shaderBufferFloat64AtomicAdd indicates whether shaders can perform 64-bit floating-point add atomic operations on storage buffers.vulkan#features-shaderSharedFloat32Atomics shaderSharedFloat32Atomics indicates whether shaders can perform 32-bit floating-point load, store and exchange atomic operations on shared memory.vulkan%features-shaderSharedFloat32AtomicAdd shaderSharedFloat32AtomicAdd indicates whether shaders can perform 32-bit floating-point add atomic operations on shared memory.vulkan#features-shaderSharedFloat64Atomics shaderSharedFloat64Atomics indicates whether shaders can perform 64-bit floating-point load, store and exchange atomic operations on shared memory.vulkan%features-shaderSharedFloat64AtomicAdd shaderSharedFloat64AtomicAdd indicates whether shaders can perform 64-bit floating-point add atomic operations on shared memory.vulkan"features-shaderImageFloat32Atomics shaderImageFloat32Atomics indicates whether shaders can perform 32-bit floating-point load, store and exchange atomic image operations.vulkan$features-shaderImageFloat32AtomicAdd shaderImageFloat32AtomicAdd indicates whether shaders can< perform 32-bit floating-point add atomic image operations.vulkan"features-sparseImageFloat32Atomics sparseImageFloat32Atomics indicates whether 32-bit floating-point load, store and exchange atomic operations can be used on sparse images.vulkan$features-sparseImageFloat32AtomicAdd sparseImageFloat32AtomicAdd indicates whether 32-bit floating-point add atomic operations can be used on sparse images.None( #$&'(./0289:<>?pvulkanVkPhysicalDeviceRobustness2PropertiesEXT - Structure describing robust buffer access properties supported by an implementation DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.Valid Usage (Implicit)See Alsoo, vulkanVkPhysicalDeviceRobustness2FeaturesEXT - Structure describing the out-of-bounds behavior for an implementationMembers0This structure describes the following features: DescriptionsType is the type of this structure.pNext is NULL; or a pointer to a structure extending this structure.features-robustBufferAccess2 robustBufferAccess2 indicates whether buffer accesses are tightly bounds-checked against the range of the descriptor. Uniform buffers must be bounds-checked to the range of the descriptor, where the range is rounded up to a multiple of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-robustUniformBufferAccessSizeAlignment&robustUniformBufferAccessSizeAlignment. Storage buffers must be bounds-checked to the range of the descriptor, where the range is rounded up to a multiple of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-robustStorageBufferAccessSizeAlignment&robustStorageBufferAccessSizeAlignment. Out of bounds buffer loads will return zero values, and formatted loads will have (0,0,1) values inserted for missing G, B, or A components based on the format.features-robustImageAccess2 robustImageAccess2 indicates whether image accesses are tightly bounds-checked against the dimensions of the image view. Out of bounds image loads will return zero values, with (0,0,1) values  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-conversion-to-rgba*inserted for missing G, B, or A components based on the format.features-nullDescriptor nullDescriptor$ indicates whether descriptors can be written with a  resource or view, which are considered valid to access and act as if the descriptor were bound to nothing.If the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features. Valid UsageVUID-VkPhysicalDeviceRobustness2FeaturesEXT-robustBufferAccess2-04000 If robustBufferAccess2 is enabled then  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobustBufferAccess must also be enabledValid Usage (Implicit)7VUID-VkPhysicalDeviceRobustness2FeaturesEXT-sType-sType sType must be  See Alsoq, vulkan-limits-robustStorageBufferAccessSizeAlignment &robustStorageBufferAccessSizeAlignment is the number of bytes that the range of a storage buffer descriptor is rounded up to when used for bounds-checking when  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2robustBufferAccess2* is enabled. This value is either 1 or 4.vulkan-limits-robustUniformBufferAccessSizeAlignment &robustUniformBufferAccessSizeAlignment is the number of bytes that the range of a uniform buffer descriptor is rounded up to when used for bounds-checking when  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2robustBufferAccess2 is enabled. This value is a power of two in the range [1, 256].  None( #$&'(./0289:<>? vulkanVkPipelineRasterizationProvokingVertexStateCreateInfoEXT - Structure specifying provoking vertex mode used by a graphics pipeline DescriptionIf this struct is not provided when creating the pipeline, the pipeline will use the  mode.If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-provokingVertexModePerPipelineprovokingVertexModePerPipeline limit is /=, then the all pipelines bound within a renderpass instance must have the same provokingVertexMode. Valid UsageVUID-VkPipelineRasterizationProvokingVertexStateCreateInfoEXT-provokingVertexMode-04883 If provokingVertexMode is , then the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-provokingVertexLastprovokingVertexLast feature must be enabledValid Usage (Implicit)VUID-VkPipelineRasterizationProvokingVertexStateCreateInfoEXT-sType-sType sType must be  VUID-VkPipelineRasterizationProvokingVertexStateCreateInfoEXT-provokingVertexMode-parameter provokingVertexMode must be a valid  valueSee Also, vulkanVkPhysicalDeviceProvokingVertexPropertiesEXT - Structure describing provoking vertex properties supported by an implementation DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.Valid Usage (Implicit)See Alsoq, vulkanVkPhysicalDeviceProvokingVertexFeaturesEXT - Structure describing the provoking vertex features that can be supported by an implementationMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.When  is in the pNext chain of   but the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedbacktransform feedback feature is not enabled, the value of )transformFeedbackPreservesProvokingVertex is ignored.Valid Usage (Implicit)See Alsoq, vulkanVkProvokingVertexModeEXT - Specify which vertex in a primitive is the provoking vertex Description-These modes are described more precisely in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topologiesPrimitive Topologies.See AlsovulkanprovokingVertexMode is a , value selecting the provoking vertex mode.vulkan%limits-provokingVertexModePerPipeline provokingVertexModePerPipeline indicates whether the implementation supports graphics pipelines with different provoking vertex modes within the same renderpass instance.vulkan;limits-transformFeedbackPreservesTriangleFanProvokingVertex 4transformFeedbackPreservesTriangleFanProvokingVertex indicates whether the implementation can preserve the provoking vertex order when writing triangle fan vertices to transform feedback.vulkanfeatures-provokingVertexLast provokingVertexLast4 indicates whether the implementation supports the   VkProvokingVertexModeEXT.htmlprovoking vertex mode for flat shading.vulkan2features-transformFeedbackPreservesProvokingVertex )transformFeedbackPreservesProvokingVertex indicates that the order of vertices within each primitive written by transform feedback will preserve the provoking vertex. This does not apply to triangle fan primitives when  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-transformFeedbackPreservesTriangleFanProvokingVertex4transformFeedbackPreservesTriangleFanProvokingVertex is /. )transformFeedbackPreservesProvokingVertex must be / when the VK_EXT_transform_feedback extension is not supported.vulkan specifies that the provoking vertex is the last non-adjacency vertex in the list of vertices used by a primitive.vulkan specifies that the provoking vertex is the first non-adjacency vertex in the list of vertices used by a primitive.None( #$&'(./0289:<>?3 vulkanVkPipelineCreationFeedbackEXT - Feedback about the creation of a pipeline or pipeline stage DescriptionIf the  is not set in flags, an implementation must not set any other bits in flags, and the values of all other  data members are undefined.See Also, , vulkanVkPipelineCreationFeedbackCreateInfoEXT - Request for feedback about the creation of a pipeline DescriptionAn implementation should& write pipeline creation feedback to pPipelineCreationFeedback and may, write pipeline stage creation feedback to pPipelineStageCreationFeedbacks. An implementation must set or clear the  in ::flags for pPipelineCreationFeedback and every element of pPipelineStageCreationFeedbacks.NoteOne common scenario for an implementation to skip per-stage feedback is when  is set in pPipelineCreationFeedback.When chained to , , or 8, the i element of pPipelineStageCreationFeedbacks corresponds to the i element of ::pStages, ::pStages, or 8::pStages. When chained to 8, the first element of pPipelineStageCreationFeedbacks corresponds to 8::stage. Valid UsageVUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02668 When chained to 8, ::"pipelineStageCreationFeedbackCount must equal 8:: stageCountVUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02669 When chained to 8, ::"pipelineStageCreationFeedbackCount must equal 1VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02670 When chained to , ::"pipelineStageCreationFeedbackCount must equal :: stageCountVUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02969 When chained to , ::"pipelineStageCreationFeedbackCount must equal :: stageCountValid Usage (Implicit)8VUID-VkPipelineCreationFeedbackCreateInfoEXT-sType-sType sType must be  VUID-VkPipelineCreationFeedbackCreateInfoEXT-pPipelineCreationFeedback-parameter pPipelineCreationFeedback must be a valid pointer to a  structureVUID-VkPipelineCreationFeedbackCreateInfoEXT-pPipelineStageCreationFeedbacks-parameter pPipelineStageCreationFeedbacks must( be a valid pointer to an array of "pipelineStageCreationFeedbackCount  structuresVUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-arraylength "pipelineStageCreationFeedbackCount must be greater than 0See Also8, 8, , , , vulkanVkPipelineCreationFeedbackFlagBitsEXT - Bitmask specifying pipeline or pipeline stage creation feedbackSee Also, , vulkanpPipelineCreationFeedback is a pointer to a  structure.vulkan"pipelineStageCreationFeedbackCount is the number of elements in pPipelineStageCreationFeedbacks.vulkanpPipelineStageCreationFeedbacks is a pointer to an array of "pipelineStageCreationFeedbackCount  structures.vulkanflags is a bitmask of  providing feedback about the creation of a pipeline or of a pipeline stage.vulkanduration is the duration spent creating a pipeline or pipeline stage in nanoseconds.vulkan4 indicates that the base pipeline specified by the basePipelineHandle or basePipelineIndex member of the Vk*PipelineCreateInfo structure was used to accelerate the creation of the pipeline.An implementation should set the  bit if it was able to avoid a significant amount of work by using the base pipeline.NoteWhile "significant amount of work" is subjective, implementations are encouraged to provide a meaningful signal to applications using this bit. For example, a 1% reduction in duration may not warrant setting this bit, while a 50% reduction would.vulkan indicates that a readily usable pipeline or pipeline stage was found in the  pipelineCache specified by the application in the pipeline creation command.An implementation should set the  bit if it was able to avoid the large majority of pipeline or pipeline stage creation work by using the  pipelineCache parameter of 8, , , or 8. When an implementation sets this bit for the entire pipeline, it may leave it unset for any stage.NoteImplementations are encouraged to provide a meaningful signal to applications using this bit. The intention is to communicate to the application that the pipeline or pipeline stage was created "as fast as it gets" using the pipeline cache provided by the application. If an implementation uses an internal cache, it is discouraged from setting this bit as the feedback would be unactionable.vulkan3 indicates that the feedback information is valid.None( #$&'(./0289:<>?vulkanVkPhysicalDevicePipelineCreationCacheControlFeaturesEXT - Structure describing whether pipeline cache control can be supported by an implementationMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkan%features-pipelineCreationCacheControl pipelineCreationCacheControl- indicates that the implementation supports:The following can be used in Vk*PipelineCreateInfo::flags:The following can be used in 9::flags:None( #$&'(./0289:<>?vulkanVkPhysicalDeviceDrmPropertiesEXT - Structure containing DRM information of a physical device DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.These are properties of the DRM information of a physical device.Valid Usage (Implicit)See Alsoq, vulkan hasPrimary is a boolean indicating whether the physical device has a DRM primary node.vulkan hasRender is a boolean indicating whether the physical device has a DRM render node.vulkan primaryMajor. is the DRM primary node major number, if any.vulkan primaryMinor. is the DRM primary node minor number, if any.vulkan renderMajor- is the DRM render node major number, if any.vulkan renderMinor- is the DRM render node minor number, if any.  None( #$&'(./0289:<>?PvulkanVkPhysicalDeviceMemoryPriorityFeaturesEXT - Structure describing memory priority features that can be supported by an implementationMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkanVkMemoryPriorityAllocateInfoEXT - Specify a memory allocation priority Description(Memory allocations with higher priority may be more likely to stay in device-local memory when the system is under memory pressure.3If this structure is not included, it is as if the priority value were 0.5.Valid Usage (Implicit)See Alsovulkanpriority# is a floating-point value between 0 and 1, indicating the priority of the allocation relative to other memory allocations. Larger values are higher priority. The granularity of the priorities is implementation-dependent.3VUID-VkMemoryPriorityAllocateInfoEXT-priority-02602 priority must be between 0 and 1 , inclusivevulkanfeatures-memoryPriority memoryPriority indicates that the implementation supports memory priorities specified at memory allocation time via .  None( #$&'(./0289:<>? vulkanVkWriteDescriptorSetInlineUniformBlockEXT - Structure specifying inline uniform block dataValid Usage (Implicit)See AlsovulkanVkPhysicalDeviceInlineUniformBlockPropertiesEXT - Structure describing inline uniform block properties that can be supported by an implementation DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.Valid Usage (Implicit)See AlsovulkanVkPhysicalDeviceInlineUniformBlockFeaturesEXT - Structure describing inline uniform block features that can be supported by an implementationMembers0This structure describes the following features: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkanVkDescriptorPoolInlineUniformBlockCreateInfoEXT - Structure specifying the maximum number of inline uniform block bindings of a newly created descriptor poolValid Usage (Implicit)See AlsovulkanmaxInlineUniformBlockBindings= is the number of inline uniform block bindings to allocate.vulkandataSize is the number of bytes of inline uniform block data pointed to by pData.=VUID-VkWriteDescriptorSetInlineUniformBlockEXT-dataSize-02222 dataSize must be an integer multiple of 4VUID-VkWriteDescriptorSetInlineUniformBlockEXT-dataSize-arraylength dataSize must be greater than 0vulkanpData is a pointer to dataSize? number of bytes of data to write to the inline uniform block.>VUID-VkWriteDescriptorSetInlineUniformBlockEXT-pData-parameter pData must# be a valid pointer to an array of dataSize bytesvulkan limits-maxInlineUniformBlockSize maxInlineUniformBlockSize& is the maximum size in bytes of an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-inlineuniformblockinline uniform block binding.vulkan>limits-maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks 7maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks is similar to (maxPerStageDescriptorInlineUniformBlocks but counts descriptor bindings from descriptor sets created with or without the  bit set.vulkan*limits-maxDescriptorSetInlineUniformBlocks #maxDescriptorSetInlineUniformBlocks> is the maximum number of inline uniform block bindings that can be included in descriptor bindings in a pipeline layout across all pipeline shader stages and descriptor set numbers. Descriptor bindings with a descriptor type of  count against this limit. Only descriptor bindings in descriptor set layouts created without the # bit set count against this limit.vulkan9limits-maxDescriptorSetUpdateAfterBindInlineUniformBlocks 2maxDescriptorSetUpdateAfterBindInlineUniformBlocks is similar to #maxDescriptorSetInlineUniformBlocks but counts descriptor bindings from descriptor sets created with or without the  bit set.vulkanfeatures-inlineUniformBlock inlineUniformBlock indicates whether the implementation supports inline uniform block descriptors. If this feature is not enabled,  must not be used.vulkan;features-descriptorBindingInlineUniformBlockUpdateAfterBind 2descriptorBindingInlineUniformBlockUpdateAfterBind indicates whether the implementation supports updating inline uniform block descriptors after a set is bound. If this feature is not enabled,  must not be used with .None( #$&'(./0289:<>?vulkanVkPhysicalDeviceIndexTypeUint8FeaturesEXT - Structure describing whether uint8 index type can be usedMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkanfeatures-indexTypeUint8 indexTypeUint8 indicates that   can be used with .None( #$&'(./0289:<>??vulkanVkPhysicalDeviceImageRobustnessFeaturesEXT - Structure describing the out-of-bounds behavior for an implementationMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkanfeatures-robustImageAccess robustImageAccess indicates whether image accesses are tightly bounds-checked against the dimensions of the image view.  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-input-validationInvalid texels resulting from out of bounds image loads will be replaced as described in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-texel-replacementTexel Replacement, with either (0,0,1) or (0,0,0) values inserted for missing G, B, or A components based on the format.None( #$&'(./0289:<>?ǀvulkanVkPhysicalDeviceFragmentShaderInterlockFeaturesEXT - Structure describing fragment shader interlock features that can be supported by an implementationMembers0This structure describes the following features: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkan&features-fragmentShaderSampleInterlock fragmentShaderSampleInterlock2 indicates that the implementation supports the  FragmentShaderSampleInterlockEXT SPIR-V capability.vulkan%features-fragmentShaderPixelInterlock fragmentShaderPixelInterlock2 indicates that the implementation supports the FragmentShaderPixelInterlockEXT SPIR-V capability.vulkan+features-fragmentShaderShadingRateInterlock "fragmentShaderShadingRateInterlock1 indicates that the implementation supports the %FragmentShaderShadingRateInterlockEXT SPIR-V capability.  None( #$&'(./0289:<>?ХvulkanVkPhysicalDeviceFragmentDensityMap2PropertiesEXT - Structure describing additional fragment density map properties that can be supported by an implementation DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.Valid Usage (Implicit)See Alsoq, vulkanVkPhysicalDeviceFragmentDensityMap2FeaturesEXT - Structure describing additional fragment density map features that can be supported by an implementationMembers0This structure describes the following features: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkanlimits-subsampledLoads subsampledLoads specifies if performing image data read with load operations on subsampled attachments will be resampled to the fragment density of the render passvulkan0limits-subsampledCoarseReconstructionEarlyAccess )subsampledCoarseReconstructionEarlyAccess specifies if performing image data read with samplers created with flags containing  ; in fragment shader will trigger additional reads during   vulkanlimits-maxSubsampledArrayLayers maxSubsampledArrayLayers is the maximum number of 08 array layers for usages supporting subsampled samplersvulkan)limits-maxDescriptorSetSubsampledSamplers "maxDescriptorSetSubsampledSamplers4 is the maximum number of subsampled samplers that can be included in a 0 vulkan#features-fragmentDensityMapDeferred fragmentDensityMapDeferred specifies whether the implementation supports deferred reads of fragment density map image views. If this feature is not enabled,   must not be included in 2::flags.  None( #$&'(./0289:<>?׫vulkanVkPipelineRasterizationDepthClipStateCreateInfoEXT - Structure specifying depth clipping stateValid Usage (Implicit)See Alsoq, , vulkanVkPhysicalDeviceDepthClipEnableFeaturesEXT - Structure indicating support for explicit enable of depth clipMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkanVkPipelineRasterizationDepthClipStateCreateFlagsEXT - Reserved for future use Description is a bitmask type for setting a mask, but is currently reserved for future use.See Alsovulkanflags is reserved for future use.VUID-VkPipelineRasterizationDepthClipStateCreateInfoEXT-flags-zerobitmask flags must be 0vulkandepthClipEnable> controls whether depth clipping is enabled as described in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-clippingPrimitive Clipping.vulkanfeatures-depthClipEnable depthClipEnable indicates that the implementation supports setting the depth clipping operation explicitly via the  pipeline state. Otherwise depth clipping is only enabled when 8::depthClampEnable is set to /.  None( #$&'(./0289:<>?vulkanVkPipelineRasterizationConservativeStateCreateInfoEXT - Structure specifying conservative raster stateValid Usage (Implicit)See Also, , vulkanVkPhysicalDeviceConservativeRasterizationPropertiesEXT - Structure describing conservative raster properties that can be supported by an implementation DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.Valid Usage (Implicit)See Alsoq, vulkanVkConservativeRasterizationModeEXT - Specify the conservative rasterization modeSee AlsovulkanVkPipelineRasterizationConservativeStateCreateFlagsEXT - Reserved for future use Description is a bitmask type for setting a mask, but is currently reserved for future use.See Alsovulkanflags is reserved for future use.VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-flags-zerobitmask flags must be 0vulkanconservativeRasterizationMode0 is the conservative rasterization mode to use.VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-conservativeRasterizationMode-parameter conservativeRasterizationMode must be a valid  valuevulkan extraPrimitiveOverestimationSize is the extra size in pixels to increase the generating primitive during conservative rasterization at each of its edges in X and Y equally in screen space beyond the base overestimation specified in ::primitiveOverestimationSize.VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-extraPrimitiveOverestimationSize-01769  extraPrimitiveOverestimationSize must be in the range of 0.0 to ::#maxExtraPrimitiveOverestimationSize inclusivevulkan"limits-primitiveOverestimationSize primitiveOverestimationSize is the size in pixels the generating primitive is increased at each of its edges during conservative rasterization overestimation mode. Even with a size of 0.0, conservative rasterization overestimation rules still apply and if any part of the pixel rectangle is covered by the generating primitive, fragments are generated for the entire pixel. However implementations may make the pixel coverage area even more conservative by increasing the size of the generating primitive.vulkan*limits-maxExtraPrimitiveOverestimationSize #maxExtraPrimitiveOverestimationSize is the maximum size in pixels of extra overestimation the implementation supports in the pipeline state. A value of 0.0 means the implementation does not support any additional overestimation of the generating primitive during conservative rasterization. A value above 0.0 allows the application to further increase the size of the generating primitive during conservative rasterization overestimation.vulkan2limits-extraPrimitiveOverestimationSizeGranularity +extraPrimitiveOverestimationSizeGranularity is the granularity of extra overestimation that can be specified in the pipeline state between 0.0 and #maxExtraPrimitiveOverestimationSize inclusive. A value of 0.0 means the implementation can use the smallest representable non-zero value in the screen space pixel fixed-point grid.vulkanlimits-primitiveUnderestimation primitiveUnderestimation is /% if the implementation supports the 2 conservative rasterization mode in addition to /. Otherwise the implementation only supports .vulkan,limits-conservativePointAndLineRasterization %conservativePointAndLineRasterization is / if the implementation supports conservative rasterization of point and line primitives as well as triangle primitives. Otherwise the implementation only supports triangle primitives.vulkan$limits-degenerateTrianglesRasterized degenerateTrianglesRasterized is / if the implementation culls primitives generated from triangles that become zero area after they are quantized to the fixed-point rasterization pixel grid. degenerateTrianglesRasterized is / if these primitives are not culled and the provoking vertex attributes and depth value are used for the fragments. The primitive area calculation is done on the primitive generated from the clipped triangle if applicable. Zero area primitives are backfacing and the application can$ enable backface culling if desired.vulkan limits-degenerateLinesRasterized degenerateLinesRasterized is / if the implementation culls lines that become zero length after they are quantized to the fixed-point rasterization pixel grid. degenerateLinesRasterized is / if zero length lines are not culled and the provoking vertex attributes and depth value are used for the fragments.vulkan.limits-fullyCoveredFragmentShaderInputVariable 'fullyCoveredFragmentShaderInputVariable is / if the implementation supports the SPIR-V builtin fragment shader input variable FullyCoveredEXT which specifies that conservative rasterization is enabled and the fragment area is fully covered by the generating primitive.vulkan1limits-conservativeRasterizationPostDepthCoverage *conservativeRasterizationPostDepthCoverage is / if the implementation supports conservative rasterization with the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-fragment-earlytest-postdepthcoveragePostDepthCoverage. execution mode enabled. When supported the /  built-in input variable will reflect the coverage after the early per-fragment depth and stencil tests are applied even when conservative rasterization is enabled. Otherwise  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-fragment-earlytest-postdepthcoveragePostDepthCoverage execution mode must9 not be used when conservative rasterization is enabled.vulkan specifies that conservative rasterization is enabled in underestimation mode.vulkan specifies that conservative rasterization is enabled in overestimation mode.vulkan specifies that conservative rasterization is disabled and rasterization proceeds as normal.None( #$&'(./0289:<>? +vulkanVkPipelineColorBlendAdvancedStateCreateInfoEXT - Structure specifying parameters that affect advanced blend operations Description"If this structure is not present, srcPremultiplied and dstPremultiplied are both considered to be /, and  blendOverlap is considered to be . Valid UsageVUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-srcPremultiplied-01424 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendNonPremultipliedSrcColornon-premultiplied source color! property is not supported, srcPremultiplied must be /VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-dstPremultiplied-01425 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendNonPremultipliedDstColor#non-premultiplied destination color! property is not supported, dstPremultiplied must be /VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-blendOverlap-01426 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendCorrelatedOverlapcorrelated overlap! property is not supported,  blendOverlap must be Valid Usage (Implicit)?VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-sType-sType sType must be  VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-blendOverlap-parameter  blendOverlap must be a valid  valueSee Also, q, vulkanVkPhysicalDeviceBlendOperationAdvancedPropertiesEXT - Structure describing advanced blending limits that can be supported by an implementation DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.Valid Usage (Implicit)See Alsoq, vulkanVkPhysicalDeviceBlendOperationAdvancedFeaturesEXT - Structure describing advanced blending features that can be supported by an implementationMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkanVkBlendOverlapEXT - Enumerant specifying the blend overlap parameter Description' Overlap ModeWeighting Equations  \begin{aligned} p_0(A_s,A_d) & = A_sA_d \\ p_1(A_s,A_d) & = A_s(1-A_d) \\ p_2(A_s,A_d) & = A_d(1-A_s) \\ \end{aligned}  \begin{aligned} p_0(A_s,A_d) & = min(A_s,A_d) \\ p_1(A_s,A_d) & = max(A_s-A_d,0) \\ p_2(A_s,A_d) & = max(A_d-A_s,0) \\ \end{aligned}  \begin{aligned} p_0(A_s,A_d) & = max(A_s+A_d-1,0) \\ p_1(A_s,A_d) & = min(A_s,1-A_d) \\ p_2(A_s,A_d) & = min(A_d,1-A_s) \\ \end{aligned}Advanced Blend Overlap ModesSee AlsovulkansrcPremultiplied specifies whether the source color of the blend operation is treated as premultiplied.vulkandstPremultiplied specifies whether the destination color of the blend operation is treated as premultiplied.vulkan blendOverlap is a  value specifying how the source and destination sample@s coverage is correlated.vulkan'limits-advancedBlendMaxColorAttachments  advancedBlendMaxColorAttachments> is one greater than the highest color attachment index that can5 be used in a subpass, for a pipeline that uses an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advancedadvanced blend operation.vulkan$limits-advancedBlendIndependentBlend advancedBlendIndependentBlend. specifies whether advanced blend operations can vary per-attachment.vulkan,limits-advancedBlendNonPremultipliedSrcColor %advancedBlendNonPremultipliedSrcColor% specifies whether the source color can. be treated as non-premultiplied. If this is /, then ::srcPremultiplied must be /.vulkan,limits-advancedBlendNonPremultipliedDstColor %advancedBlendNonPremultipliedDstColor* specifies whether the destination color can. be treated as non-premultiplied. If this is /, then ::dstPremultiplied must be /.vulkan%limits-advancedBlendCorrelatedOverlap advancedBlendCorrelatedOverlap% specifies whether the overlap mode can' be treated as correlated. If this is /, then :: blendOverlap must be .vulkan!limits-advancedBlendAllOperations advancedBlendAllOperations specifies whether all advanced blend operation enums are supported. See the valid usage of 8.vulkan(features-advancedBlendCoherentOperations advancedBlendCoherentOperations# specifies whether blending using  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advancedadvanced blend operations. is guaranteed to execute atomically and in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-orderprimitive order. If this is /,   is treated the same as  , and advanced blending needs no additional synchronization over basic blending. If this is /, then memory dependencies are required to guarantee order between two advanced blending operations that occur on the same sample.vulkan specifies that the source and destination coverage are considered to have maximal overlap.vulkan specifies that the source and destination coverage are considered to have minimal overlap.vulkan specifies that there is no correlation between the source and destination coverage.None( #$&'(./0289:<>?vulkanVkPhysicalDevice4444FormatsFeaturesEXT - Structure describing additional 4444 formats supported by an implementationMembers0This structure describes the following features: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkanfeatures-formatA4R4G4B4 formatA4R4G4B4$ indicates that the implementation must support using a  of   with at least the following  :vulkanfeatures-formatA4B4G4R4 formatA4B4G4R4$ indicates that the implementation must support using a  of   with at least the following  :None( #$&'(./0289:<>?uvulkanVkTextureLODGatherFormatPropertiesAMD - Structure informing whether or not texture gather bias/LOD functionality is supported for a given image format and a given physical device.Valid Usage (Implicit)See Alsoq, vulkansupportsTextureGatherLODBiasAMD tells if the image format can be used with texture gather bias/LOD functions, as introduced by the VK_AMD_texture_gather_bias_lod extension. This field is set by the implementation. User-specified value is ignored.~None( #$&'(./0289:<>?KvulkanVkPhysicalDeviceShaderCoreProperties2AMD - Structure describing shader core properties that can be supported by an implementation DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.Valid Usage (Implicit)See Also, vulkanVkShaderCorePropertiesFlagBitsAMD - Bitmask specifying shader core propertiesSee Also, vulkanfeatures-shaderCoreFeatures shaderCoreFeatures is a bitmask of > indicating the set of features supported by the shader core.vulkanlimits-activeComputeUnitCount activeComputeUnitCount is an unsigned integer value indicating the number of compute units that have been enabled.  zNone( #$&'(./0289:<>?vulkanVkPipelineCompilerControlCreateInfoAMD - Structure used to pass compilation control flags to a pipelineValid Usage (Implicit)See Also, vulkanVkPipelineCompilerControlFlagBitsAMD - Enum specifying available compilation control flagsSee AlsovulkancompilerControlFlags is a bitmask of . affecting how the pipeline will be compiled.VUID-VkPipelineCompilerControlCreateInfoAMD-compilerControlFlags-zerobitmask compilerControlFlags must be 0  rNone( #$&'(./0289:<>?wvulkanVkPhysicalDeviceCoherentMemoryFeaturesAMD - Structure describing whether device coherent memory can be supported by an implementationMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkanfeatures-deviceCoherentMemory deviceCoherentMemory. indicates that the implementation supports  VkMemoryPropertyFlagBits.htmldevice coherent memory.pNone( #$&'(./0289:<>?$KvulkanVkPhysicalDeviceVulkanMemoryModelFeatures - Structure describing features supported by the memory modelMembers0This structure describes the following features: DescriptionIf the   structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.   can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkan$extension-features-vulkanMemoryModel vulkanMemoryModel indicates whether the Vulkan Memory Model is supported, as defined in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-modelVulkan Memory Model.. This also indicates whether shader modules can declare the VulkanMemoryModel capability.vulkan/extension-features-vulkanMemoryModelDeviceScope vulkanMemoryModelDeviceScope4 indicates whether the Vulkan Memory Model can use 0 scope synchronization. This also indicates whether shader modules can declare the VulkanMemoryModelDeviceScope capability.vulkanextension-features-vulkanMemoryModelAvailabilityVisibilityChains -vulkanMemoryModelAvailabilityVisibilityChains5 indicates whether the Vulkan Memory Model can use  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-model-availability-visibility"availability and visibility chains with more than one element.   None( #$&'(./0289:<>?0oNone( #$&'(./0289:<>?53vulkanVkPhysicalDeviceUniformBufferStandardLayoutFeatures - Structure indicating support for std430-like packing in uniform buffersMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkan.extension-features-uniformBufferStandardLayout uniformBufferStandardLayout indicates that the implementation supports the same layouts for uniform buffers as for storage and other kinds of buffers. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources-standard-layoutStandard Buffer Layout.   None( #$&'(./0289:<>?AmNone( #$&'(./0289:<>?FvulkanVkPhysicalDeviceShaderSubgroupExtendedTypesFeatures - Structure describing the extended types subgroups support feature for an implementationMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkan*extension-features-subgroup-extended-types shaderSubgroupExtendedTypes is a boolean that specifies whether subgroup operations can use 8-bit integer, 16-bit integer, 64-bit integer, 16-bit floating-point, and vectors of these types in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-group-operationsgroup operations with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-scope-subgroupsubgroup scope,, if the implementation supports the types.   None( #$&'(./0289:<>?SlNone( #$&'(./0289:<>?m vulkanVkPhysicalDeviceFloatControlsProperties - Structure describing properties supported by VK_KHR_shader_float_controls DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.Valid Usage (Implicit)See Alsoq, , vulkan-extension-features-denormBehaviorIndependence denormBehaviorIndependence is a  value indicating whether, and how, denorm behavior can be set independently for different bit widths.vulkan+extension-features-roundingModeIndependence roundingModeIndependence is a  value indicating whether, and how, rounding modes can be set independently for different bit widths.vulkan6extension-limits-shaderSignedZeroInfNanPreserveFloat16 %shaderSignedZeroInfNanPreserveFloat16 is a boolean value indicating whether sign of a zero, Nans and  \pm\infty can be preserved in 16-bit floating-point computations. It also indicates whether the SignedZeroInfNanPreserve execution mode can* be used for 16-bit floating-point types.vulkan6extension-limits-shaderSignedZeroInfNanPreserveFloat32 %shaderSignedZeroInfNanPreserveFloat32 is a boolean value indicating whether sign of a zero, Nans and  \pm\infty can be preserved in 32-bit floating-point computations. It also indicates whether the SignedZeroInfNanPreserve execution mode can* be used for 32-bit floating-point types.vulkan6extension-limits-shaderSignedZeroInfNanPreserveFloat64 %shaderSignedZeroInfNanPreserveFloat64 is a boolean value indicating whether sign of a zero, Nans and  \pm\infty can be preserved in 64-bit floating-point computations. It also indicates whether the SignedZeroInfNanPreserve execution mode can* be used for 64-bit floating-point types.vulkan,extension-limits-shaderDenormPreserveFloat16 shaderDenormPreserveFloat162 is a boolean value indicating whether denormals can be preserved in 16-bit floating-point computations. It also indicates whether the DenormPreserve execution mode can* be used for 16-bit floating-point types.vulkan,extension-limits-shaderDenormPreserveFloat32 shaderDenormPreserveFloat322 is a boolean value indicating whether denormals can be preserved in 32-bit floating-point computations. It also indicates whether the DenormPreserve execution mode can* be used for 32-bit floating-point types.vulkan,extension-limits-shaderDenormPreserveFloat64 shaderDenormPreserveFloat642 is a boolean value indicating whether denormals can be preserved in 64-bit floating-point computations. It also indicates whether the DenormPreserve execution mode can* be used for 64-bit floating-point types.vulkan/extension-limits-shaderDenormFlushToZeroFloat16 shaderDenormFlushToZeroFloat162 is a boolean value indicating whether denormals can be flushed to zero in 16-bit floating-point computations. It also indicates whether the DenormFlushToZero execution mode can) be used for 16-bit floating-point types.vulkan/extension-limits-shaderDenormFlushToZeroFloat32 shaderDenormFlushToZeroFloat322 is a boolean value indicating whether denormals can be flushed to zero in 32-bit floating-point computations. It also indicates whether the DenormFlushToZero execution mode can) be used for 32-bit floating-point types.vulkan/extension-limits-shaderDenormFlushToZeroFloat64 shaderDenormFlushToZeroFloat642 is a boolean value indicating whether denormals can be flushed to zero in 64-bit floating-point computations. It also indicates whether the DenormFlushToZero execution mode can) be used for 64-bit floating-point types.vulkan-extension-limits-shaderRoundingModeRTEFloat16 shaderRoundingModeRTEFloat16 is a boolean value indicating whether an implementation supports the round-to-nearest-even rounding mode for 16-bit floating-point arithmetic and conversion instructions. It also indicates whether the RoundingModeRTE execution mode can* be used for 16-bit floating-point types.vulkan-extension-limits-shaderRoundingModeRTEFloat32 shaderRoundingModeRTEFloat32 is a boolean value indicating whether an implementation supports the round-to-nearest-even rounding mode for 32-bit floating-point arithmetic and conversion instructions. It also indicates whether the RoundingModeRTE execution mode can* be used for 32-bit floating-point types.vulkan-extension-limits-shaderRoundingModeRTEFloat64 shaderRoundingModeRTEFloat64 is a boolean value indicating whether an implementation supports the round-to-nearest-even rounding mode for 64-bit floating-point arithmetic and conversion instructions. It also indicates whether the RoundingModeRTE execution mode can* be used for 64-bit floating-point types.vulkan-extension-limits-shaderRoundingModeRTZFloat16 shaderRoundingModeRTZFloat16 is a boolean value indicating whether an implementation supports the round-towards-zero rounding mode for 16-bit floating-point arithmetic and conversion instructions. It also indicates whether the RoundingModeRTZ execution mode can* be used for 16-bit floating-point types.vulkan-extension-limits-shaderRoundingModeRTZFloat32 shaderRoundingModeRTZFloat32 is a boolean value indicating whether an implementation supports the round-towards-zero rounding mode for 32-bit floating-point arithmetic and conversion instructions. It also indicates whether the RoundingModeRTZ execution mode can* be used for 32-bit floating-point types.vulkan-extension-limits-shaderRoundingModeRTZFloat64 shaderRoundingModeRTZFloat64 is a boolean value indicating whether an implementation supports the round-towards-zero rounding mode for 64-bit floating-point arithmetic and conversion instructions. It also indicates whether the RoundingModeRTZ execution mode can* be used for 64-bit floating-point types.   None( #$&'(./0289:<>?z  kNone( #$&'(./0289:<>?UvulkanVkPhysicalDeviceShaderFloat16Int8Features - Structure describing features supported by VK_KHR_shader_float16_int8Members0This structure describes the following features: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkan extension-features-shaderFloat16  shaderFloat16 indicates whether 16-bit floats (halfs) are supported in shader code. This also indicates whether shader modules can declare the Float16 capability. However, this only enables a subset of the storage classes that SPIR-V allows for the Float16> SPIR-V capability: Declaring and using 16-bit floats in the Private,  Workgroup (for non-Block variables), and Function storage classes is enabled, while declaring them in the interface storage classes (e.g., UniformConstant, Uniform,  StorageBuffer, Input, Output, and  PushConstant) is not enabled.vulkanextension-features-shaderInt8  shaderInt8 indicates whether 8-bit integers (signed and unsigned) are supported in shader code. This also indicates whether shader modules can declare the Int8 capability. However, this only enables a subset of the storage classes that SPIR-V allows for the Int8? SPIR-V capability: Declaring and using 8-bit integers in the Private,  Workgroup! (for non-Block variables), and Function storage classes is enabled, while declaring them in the interface storage classes (e.g., UniformConstant, Uniform,  StorageBuffer, Input, Output, and  PushConstant) is not enabled.   None( #$&'(./0289:<>?jNone( #$&'(./0289:<>?[vulkanVkPhysicalDeviceShaderAtomicInt64Features - Structure describing features supported by VK_KHR_shader_atomic_int64Members0This structure describes the following features: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkan+extension-features-shaderBufferInt64Atomics shaderBufferInt64Atomics indicates whether shaders can perform 64-bit unsigned and signed integer atomic operations on buffers.vulkan+extension-features-shaderSharedInt64Atomics shaderSharedInt64Atomics indicates whether shaders can perform 64-bit unsigned and signed integer atomic operations on shared memory.   None( #$&'(./0289:<>?bNone( #$&'(./0289:<>?vulkanVkPhysicalDevice8BitStorageFeatures - Structure describing features supported by VK_KHR_8bit_storageMembers0This structure describes the following features: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkan*extension-features-storageBuffer8BitAccess storageBuffer8BitAccess# indicates whether objects in the  StorageBuffer, ShaderRecordBufferKHR, or PhysicalStorageBuffer storage class with the Block decoration can have 8-bit integer members. If this feature is not enabled, 8-bit integer members must not be used in such objects. This also indicates whether shader modules can declare the StorageBuffer8BitAccess capability.vulkan4extension-features-uniformAndStorageBuffer8BitAccess !uniformAndStorageBuffer8BitAccess# indicates whether objects in the Uniform storage class with the Block decoration can have 8-bit integer members. If this feature is not enabled, 8-bit integer members must not be used in such objects. This also indicates whether shader modules can declare the !UniformAndStorageBuffer8BitAccess capability.vulkan'extension-features-storagePushConstant8 storagePushConstant8# indicates whether objects in the  PushConstant storage class can have 8-bit integer members. If this feature is not enabled, 8-bit integer members must not be used in such objects. This also indicates whether shader modules can declare the StoragePushConstant8 capability.   None( #$&'(./0289:<>?`None( #$&'(./0289:<>?vulkanVkPhysicalDeviceScalarBlockLayoutFeatures - Structure indicating support for scalar block layoutsMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkan$extension-features-scalarBlockLayout scalarBlockLayout indicates that the implementation supports the layout of resource blocks in shaders using  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-alignment-requirementsscalar alignment.   None( #$&'(./0289:<>?5None( #$&'(./0289:<>?vulkanVkSemaphoreWaitFlagBits - Bitmask specifying additional parameters of a semaphore wait operationSee Alsovulkan specifies that the semaphore wait condition is that at least one of the semaphores in n:: pSemaphores has reached the value specified by the corresponding element of n::pValues. If  is not set, the semaphore wait condition is that all of the semaphores in n:: pSemaphores have reached the value specified by the corresponding element of n::pValues.None( #$&'(./0289:<>?ʹvulkanVkResolveModeFlagBits - Bitmask indicating supported depth and stencil resolve modesSee Also, evulkan indicates that result of the resolve operation is the maximum of the sample values.vulkan indicates that result of the resolve operation is the minimum of the sample values.vulkan indicates that result of the resolve operation is the average of the sample values.vulkan indicates that result of the resolve operation is equal to the value of sample 0.vulkan- indicates that no resolve operation is done. None( #$&'(./0289:<>?YvulkanVkDescriptorBindingFlagBits - Bitmask specifying descriptor set layout binding properties DescriptionNoteNote that while  and  both involve updates to descriptor sets after they are bound,  is a weaker requirement since it is only about descriptors that are not used, whereas  requires the implementation to observe updates to descriptors that are used.See Alsovulkan indicates that this descriptor binding has a variable size that will be specified when a descriptor set is allocated using this layout. The value of descriptorCount is treated as an upper bound on the size of the binding. This must only be used for the last binding in the descriptor set layout (i.e. the binding with the largest value of binding8). For the purposes of counting against limits such as maxDescriptorSet* and maxPerStageDescriptor*, the full value of descriptorCount is counted, except for descriptor bindings with a descriptor type of  where descriptorCount specifies the upper bound on the byte size of the binding, thus it counts against the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxInlineUniformBlockSizemaxInlineUniformBlockSize limit instead.vulkan: indicates that descriptors in this binding that are not dynamically used need not contain valid descriptors at the time the descriptors are consumed. A descriptor is dynamically used if any shader invocation executes an instruction that performs any memory access using the descriptor.vulkan- indicates that descriptors in this binding can be updated after a command buffer has bound this descriptor set, or while a command buffer that uses this descriptor set is pending execution, as long as the descriptors that are updated are not used by those command buffers. If  is also set, then descriptors can be updated as long as they are not dynamically used by any shader invocations. If  is not set, then descriptors can be updated as long as they are not statically used by any shader invocations.vulkan indicates that if descriptors in this binding are updated between when the descriptor set is bound in a command buffer and when that command buffer is submitted to a queue, then the submission will use the most recently set descriptors for this binding and the updates do not invalidate the command buffer. Descriptor bindings created with this flag are also partially exempt from the external synchronization requirement in   and  +. Multiple descriptors with this flag set can be updated concurrently in different threads, though the same descriptor must not be updated concurrently by two threads. Descriptors with this flag set can be updated concurrently with the set being bound to a command buffer in another thread, but not concurrently with the set being reset or freed.  None( #$&'(./0289:<>?4[None( #$&'(./0289:<>?`vulkanVkPhysicalDeviceVariablePointersFeatures - Structure describing variable pointers features that can be supported by an implementationMembers0This structure describes the following features: DescriptionsType is the type of this structure.pNext is NULL; or a pointer to a structure extending this structure.0extension-features-variablePointersStorageBuffer variablePointersStorageBuffer? specifies whether the implementation supports the SPIR-V VariablePointersStorageBuffer capability. When this feature is not enabled, shader modules must not declare the SPV_KHR_variable_pointers extension or the VariablePointersStorageBuffer capability.#extension-features-variablePointers variablePointers? specifies whether the implementation supports the SPIR-V VariablePointers capability. When this feature is not enabled, shader modules must not declare the VariablePointers capability.If the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features. Valid UsageVUID-VkPhysicalDeviceVariablePointersFeatures-variablePointers-01431 If variablePointers is enabled then variablePointersStorageBuffer must also be enabledValid Usage (Implicit)9VUID-VkPhysicalDeviceVariablePointersFeatures-sType-sType sType must be  See Alsoq,    None( #$&'(./0289:<>?ZNone( #$&'(./0289:<>?CvulkanVkPhysicalDeviceShaderDrawParametersFeatures - Structure describing shader draw parameter features that can be supported by an implementationMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkan'extension-features-shaderDrawParameters shaderDrawParameters< specifies whether the implementation supports the SPIR-V DrawParameters? capability. When this feature is not enabled, shader modules must not declare the SPV_KHR_shader_draw_parameters extension or the DrawParameters capability.   GNone( #$&'(./0289:<>?vulkanVkPhysicalDevice16BitStorageFeatures - Structure describing features supported by VK_KHR_16bit_storageMembers0This structure describes the following features: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkan+extension-features-storageBuffer16BitAccess storageBuffer16BitAccess# specifies whether objects in the  StorageBuffer, ShaderRecordBufferKHR, or PhysicalStorageBuffer storage class with the Block decoration can have 16-bit integer and 16-bit floating-point members. If this feature is not enabled, 16-bit integer or 16-bit floating-point members must not be used in such objects. This also specifies whether shader modules can declare the StorageBuffer16BitAccess capability.vulkan5extension-features-uniformAndStorageBuffer16BitAccess "uniformAndStorageBuffer16BitAccess# specifies whether objects in the Uniform storage class with the Block decoration can have 16-bit integer and 16-bit floating-point members. If this feature is not enabled, 16-bit integer or 16-bit floating-point members must not be used in such objects. This also specifies whether shader modules can declare the "UniformAndStorageBuffer16BitAccess capability.vulkan(extension-features-storagePushConstant16 storagePushConstant16# specifies whether objects in the  PushConstant storage class can have 16-bit integer and 16-bit floating-point members. If this feature is not enabled, 16-bit integer or floating-point members must not be used in such objects. This also specifies whether shader modules can declare the StoragePushConstant16 capability.vulkan'extension-features-storageInputOutput16 storageInputOutput16# specifies whether objects in the Input and Output storage classes can have 16-bit integer and 16-bit floating-point members. If this feature is not enabled, 16-bit integer or 16-bit floating-point members must not be used in such objects. This also specifies whether shader modules can declare the StorageInputOutput16 capability.   None( #$&'(./0289:<>?None( #$&'(./0289:<>? vulkanVkSubgroupFeatureFlagBits - Bitmask describing what group operations are supported with subgroup scopeSee Alsovulkanfeatures-subgroup-partitioned  specifies the device will accept SPIR-V shader modules containing the GroupNonUniformPartitionedNV capability.vulkanfeatures-subgroup-quad  specifies the device will accept SPIR-V shader modules containing the GroupNonUniformQuad capability.vulkanfeatures-subgroup-clustered  specifies the device will accept SPIR-V shader modules containing the GroupNonUniformClustered capability.vulkan"features-subgroup-shuffle-relative  specifies the device will accept SPIR-V shader modules containing the GroupNonUniformShuffleRelative capability.vulkanfeatures-subgroup-shuffle  specifies the device will accept SPIR-V shader modules containing the GroupNonUniformShuffle capability.vulkanfeatures-subgroup-ballot  specifies the device will accept SPIR-V shader modules containing the GroupNonUniformBallot capability.vulkanfeatures-subgroup-arithmetic  specifies the device will accept SPIR-V shader modules containing the GroupNonUniformArithmetic capability.vulkanfeatures-subgroup-vote  specifies the device will accept SPIR-V shader modules containing the GroupNonUniformVote capability.vulkanfeatures-subgroup-basic  specifies the device will accept SPIR-V shader modules containing the GroupNonUniform capability. None( #$&'(./0289:<>?vulkanVkSemaphoreImportFlagBits - Bitmask specifying additional parameters of semaphore payload import Description'These bits have the following meanings:See Alsovulkan specifies that the semaphore payload will be imported only temporarily, as described in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importingImporting Semaphore Payloads#, regardless of the permanence of  handleType.CNone( #$&'(./0289:<>?# vulkanVkPeerMemoryFeatureFlagBits - Bitmask specifying supported peer memory features DescriptionNoteThe peer memory features of a memory heap also apply to any accesses that may be performed during  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transitions. must be supported for all host local heaps and for at least one device local heap.If a device does not support a peer memory feature, it is still valid to use a resource that includes both local and peer memory bindings with the corresponding access type as long as only the local bindings are actually accessed. For example, an application doing split-frame rendering would use framebuffer attachments that include both local and peer memory bindings, but would scissor the rendering to only update local memory.See Alsovulkan specifies that the memory can be written as any memory access type. Shader atomics are considered to be writes.vulkan specifies that the memory can$ be read as any memory access type.vulkan specifies that the memory can( be accessed as the destination of any  vkCmdCopy* command.vulkan specifies that the memory can# be accessed as the source of any  vkCmdCopy* command. None( #$&'(./0289:<>?&vulkanVkMemoryAllocateFlagBits - Bitmask specifying flags for a device memory allocationSee Alsovulkan specifies that the memory can3 be attached to a buffer object created with the   bit set in usage, and that the memory handle can- be used to retrieve an opaque address via c .vulkan& specifies that the memory@s address can be saved and reused on a subsequent run (e.g. for trace capture and replay), see c for more detail.vulkan> specifies that memory will be allocated for the devices in K:: deviceMask. None( #$&'(./0289:<>?(/vulkanVkFenceImportFlagBits - Bitmask specifying additional parameters of fence payload importSee Alsovulkan specifies that the fence payload will be imported only temporarily, as described in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-importingImporting Fence Payloads#, regardless of the permanence of  handleType.None( #$&'(./0289:<>?6vulkanVkExternalSemaphoreHandleTypeFlagBits - Bitmask of valid external semaphore handle types DescriptionNoteHandles of type  generated by the implementation may represent either Linux Sync Files or Android Fences at the implementation@s discretion. Applications should only use operations defined for both types of file descriptors, unless they know via means external to Vulkan the type of the file descriptor, or are prepared to deal with the system-defined operation failures resulting from using the wrong type.Some external semaphore handle types can only be shared within the same underlying physical device and/or the same driver version, as defined in the following table: Handle typeQ:: driverUUIDQ:: deviceUUID Must match Must match Must match Must match Must match Must match Must match Must matchNo restrictionNo restrictionNo restrictionNo restriction-External semaphore handle types compatibilitySee Also, , , , S, , , vulkan specifies a handle to a Zircon event object. It can be used with any native API that accepts a Zircon event handle. Zircon event handles are created with ZX_RIGHTS_BASIC and ZX_RIGHTS_SIGNAL rights. Vulkan on Fuchsia uses only the ZX_EVENT_SIGNALED bit when signaling or waiting.vulkan specifies a POSIX file descriptor handle to a Linux Sync File or Android Fence object. It can be used with any native API accepting a valid sync file or fence as input. It owns a reference to the underlying synchronization primitive associated with the file descriptor. Implementations which support importing this handle type must accept any type of sync or fence FD supported by the native system they are running on.vulkan% specifies an NT handle returned by  ID3D12Device::CreateSharedHandle' referring to a Direct3D 12 fence, or  ID3D11Device5::-  referring to a Direct3D 11 fence. It owns a reference to the underlying synchronization primitive associated with the Direct3D fence.vulkan specifies a global share handle that has only limited valid usage outside of Vulkan and other compatible APIs. It is not compatible with any native APIs. It does not own a reference to the underlying synchronization primitive represented by its Vulkan semaphore object, and will therefore become invalid when all Vulkan semaphore objects associated with it are destroyed.vulkan specifies an NT handle that has only limited valid usage outside of Vulkan and other compatible APIs. It must" be compatible with the functions DuplicateHandle,  CloseHandle, CompareObjectHandles, GetHandleInformation, and SetHandleInformation. It owns a reference to the underlying synchronization primitive represented by its Vulkan semaphore object.vulkan specifies a POSIX file descriptor handle that has only limited valid usage outside of Vulkan and other compatible APIs. It must, be compatible with the POSIX system calls dup, dup2, close#, and the non-standard system call dup3. Additionally, it must* be transportable over a socket using an  SCM_RIGHTS control message. It owns a reference to the underlying synchronization primitive represented by its Vulkan semaphore object. RNone( #$&'(./0289:<>?:vulkanVkExportSemaphoreCreateInfo - Structure specifying handle types that can be exported from a semaphore Valid Usage2VUID-VkExportSemaphoreCreateInfo-handleTypes-01124 The bits in  handleTypes must2 be supported and compatible, as reported by SValid Usage (Implicit),VUID-VkExportSemaphoreCreateInfo-sType-sType sType must be  6VUID-VkExportSemaphoreCreateInfo-handleTypes-parameter  handleTypes must be a valid combination of   valuesSee Also, vulkan handleTypes is a bitmask of   specifying one or more semaphore handle types the application can7 export from the resulting semaphore. The application can7 request multiple handle types for the same semaphore.   None( #$&'(./0289:<>?GC  None( #$&'(./0289:<>?I!vulkanVkExternalSemaphoreFeatureFlagBits - Bitfield describing features of an external semaphore handle typeSee Alsovulkan& specifies that handles of this type can) be imported as Vulkan semaphore objects.vulkan& specifies that handles of this type can+ be exported from Vulkan semaphore objects.BNone( #$&'(./0289:<>?]vulkanVkExternalMemoryHandleTypeFlagBits - Bit specifying external memory handle types DescriptionSome external memory handle types can only be shared within the same underlying physical device and/or the same driver version, as defined in the following table: Handle typeQ:: driverUUIDQ:: deviceUUID Must match Must match Must match Must match Must match Must match Must match Must match Must match Must match Must match Must match Must match Must matchNo restrictionNo restrictionNo restrictionNo restrictionNo restrictionNo restrictionNo restrictionNo restrictionNo restrictionNo restrictionNo restrictionNo restriction*External memory handle types compatibilityNoteThe above table does not restrict the drivers and devices with which  and  may be shared, as these handle types inherently mean memory that does not come from the same device, as they import memory from the host or a foreign device, respectively.NoteEven though the above table does not restrict the drivers and devices with which  may be shared, query mechanisms exist in the Vulkan API that prevent the import of incompatible dma-bufs (such as  =) and that prevent incompatible usage of dma-bufs (such as Q and Q).See Also, , , , , , , , , Q, Q,  ,  ,  ,  vulkan is a file descriptor for a Linux dma_buf. It owns a reference to the underlying memory resource represented by its Vulkan memory object.vulkan specifies an  * object defined by the Android NDK. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-bufferAndroid Hardware Buffers' for more details of this handle type.vulkan specifies a host pointer returned by a host memory allocation command. It does not own a reference to the underlying memory resource, and will therefore become invalid if the host memory is freed.vulkan specifies a host pointer to host mapped foreign memory. It does not own a reference to the underlying memory resource, and will therefore become invalid if the foreign memory is unmapped or otherwise becomes no longer available.vulkan0 is a Zircon handle to a virtual memory object.vulkan is a handle to an allocation accessible by remote devices. It owns a reference to the underlying memory resource represented by its Vulkan memory object.vulkan% specifies an NT handle returned by  ID3D12Device::CreateSharedHandle referring to a Direct3D 12 committed resource. It owns a reference to the memory used by the Direct3D resource.vulkan% specifies an NT handle returned by  ID3D12Device::CreateSharedHandle referring to a Direct3D 12 heap resource. It owns a reference to the resources used by the Direct3D heap.vulkan. specifies a global share handle returned by  IDXGIResource::GetSharedHandle referring to a Direct3D 10 or 11 texture resource. It does not own a reference to the underlying Direct3D resource, and will therefore become invalid when all Vulkan memory objects and Direct3D resources associated with it are destroyed.vulkan% specifies an NT handle returned by IDXGIResource1::CreateSharedHandle referring to a Direct3D 10 or 11 texture resource. It owns a reference to the memory used by the Direct3D resource.vulkan specifies a global share handle that has only limited valid usage outside of Vulkan and other compatible APIs. It is not compatible with any native APIs. It does not own a reference to the underlying memory resource represented by its Vulkan memory object, and will therefore become invalid when all Vulkan memory objects associated with it are destroyed.vulkan specifies an NT handle that has only limited valid usage outside of Vulkan and other compatible APIs. It must" be compatible with the functions DuplicateHandle,  CloseHandle, CompareObjectHandles, GetHandleInformation, and SetHandleInformation. It owns a reference to the underlying memory resource represented by its Vulkan memory object.vulkan specifies a POSIX file descriptor handle that has only limited valid usage outside of Vulkan and other compatible APIs. It must, be compatible with the POSIX system calls dup, dup2, close#, and the non-standard system call dup3. Additionally, it must* be transportable over a socket using an  SCM_RIGHTS control message. It owns a reference to the underlying memory resource represented by its Vulkan memory object.None( #$&'(./0289:<>?bvulkanVkExternalMemoryFeatureFlagBits - Bitmask specifying features of an external memory handle type DescriptionBecause their semantics in external APIs roughly align with that of an image or buffer with a dedicated allocation in Vulkan, implementations are required to report * for the following external handle types:Implementations must not report ) for buffers with external handle type B . Implementations must not report 3 for images or buffers with external handle type B , or B .See Alsovulkan& specifies that handles of this type can& be imported as Vulkan memory objects.vulkan& specifies that handles of this type can( be exported from Vulkan memory objects.vulkan specifies that images or buffers created with the specified parameters and handle type must! use the mechanisms defined by I and I to create (or import) a dedicated allocation for the image or buffer. None( #$&'(./0289:<>?livulkanVkExternalFenceHandleTypeFlagBits - Bitmask of valid external fence handle types DescriptionSome external fence handle types can only be shared within the same underlying physical device and/or the same driver version, as defined in the following table: Handle typeQ:: driverUUIDQ:: deviceUUID Must match Must match Must match Must match Must match Must matchNo restrictionNo restriction)External fence handle types compatibilitySee Also, , , , , Ovulkan specifies a POSIX file descriptor handle to a Linux Sync File or Android Fence. It can be used with any native API accepting a valid sync file or fence as input. It owns a reference to the underlying synchronization primitive associated with the file descriptor. Implementations which support importing this handle type must accept any type of sync or fence FD supported by the native system they are running on.vulkan specifies a global share handle that has only limited valid usage outside of Vulkan and other compatible APIs. It is not compatible with any native APIs. It does not own a reference to the underlying synchronization primitive represented by its Vulkan fence object, and will therefore become invalid when all Vulkan fence objects associated with it are destroyed.vulkan specifies an NT handle that has only limited valid usage outside of Vulkan and other compatible APIs. It must" be compatible with the functions DuplicateHandle,  CloseHandle, CompareObjectHandles, GetHandleInformation, and SetHandleInformation. It owns a reference to the underlying synchronization primitive represented by its Vulkan fence object.vulkan specifies a POSIX file descriptor handle that has only limited valid usage outside of Vulkan and other compatible APIs. It must, be compatible with the POSIX system calls dup, dup2, close#, and the non-standard system call dup3. Additionally, it must* be transportable over a socket using an  SCM_RIGHTS control message. It owns a reference to the underlying synchronization primitive represented by its Vulkan fence object. NNone( #$&'(./0289:<>?pvulkanVkExportFenceCreateInfo - Structure specifying handle types that can be exported from a fence Valid Usage.VUID-VkExportFenceCreateInfo-handleTypes-01446 The bits in  handleTypes must2 be supported and compatible, as reported by OValid Usage (Implicit)(VUID-VkExportFenceCreateInfo-sType-sType sType must be  2VUID-VkExportFenceCreateInfo-handleTypes-parameter  handleTypes must be a valid combination of   valuesSee Also, vulkan handleTypes is a bitmask of  < specifying one or more fence handle types the application can3 export from the resulting fence. The application can3 request multiple handle types for the same fence.   None( #$&'(./0289:<>?|  None( #$&'(./0289:<>?~vulkanVkExternalFenceFeatureFlagBits - Bitfield describing features of an external fence handle typeSee Alsovulkan! specifies handles of this type can% be imported to Vulkan fence objects.vulkan! specifies handles of this type can' be exported from Vulkan fence objects.None( #$&'(./0289:<>?vulkan?VkDescriptorUpdateTemplateCreateFlags - Reserved for future use Description is a bitmask type for setting a mask, but is currently reserved for future use.See AlsoJANone( #$&'(./0289:<>?vulkan0VkCommandPoolTrimFlags - Reserved for future use Description is a bitmask type for setting a mask, but is currently reserved for future use.See Also ,   None( #$&'(./0289:<>?\None( #$&'(./0289:<>?vulkanVkSubpassDescriptionFlagBits - Bitmask specifying usage of a subpass DescriptionNoteShader resolve operations allow for custom resolve operations, but overdrawing pixels may have a performance and/or power cost. Furthermore, since the content of any depth stencil attachment or color attachment is undefined at the begining of a shader resolve subpass, any depth testing, stencil testing, or blending operation which sources these undefined values also has undefined result value.See Alsovulkan specifies that shaders compiled for this subpass write the attributes for all views in a single invocation of each  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader stage. All pipelines compiled against a subpass that includes this bit must# write per-view attributes to the  *PerViewNV[]8 shader outputs, in addition to the non-per-view (e.g. Position ) outputs.vulkan specifies that shaders compiled for this subpass use per-view positions which only differ in value in the x component. Per-view viewport mask can also be used.vulkan specifies that the framebuffer region is the fragment region, that is, the minimum region dependencies are by pixel rather than by sample, such that any fragment shader invocation can access any sample associated with that fragment shader invocation.vulkan specifies that the subpass performs shader resolve operations. (None( #$&'(./0289:<>?fvulkanVkStencilFaceFlagBits - Bitmask specifying sets of stencil state for which to update the compare maskSee Alsogvulkan is the combination of  and =, and specifies that both sets of stencil state are updated.vulkan? specifies that only the back set of stencil state is updated.vulkan specifies that only the front set of stencil state is updated.fg gfNone( #$&'(./0289:<>?RvulkanVkSparseMemoryBindFlagBits - Bitmask specifying usage of a sparse memory binding operationSee Alsovulkan specifies that the memory being bound is only for the metadata aspect.None( #$&'(./0289:<>?6vulkanVkSparseImageFormatFlagBits - Bitmask specifying additional information about a sparse image resourceSee Alsovulkan specifies that the image uses non-standard sparse image block dimensions, and the imageGranularity values do not match the standard sparse image block dimensions for the given format.vulkan specifies that the first mip level whose dimensions are not integer multiples of the corresponding dimensions of the sparse image block begins the mip tail region.vulkan specifies that the image uses a single mip tail region for all array layers. 'None( #$&'(./0289:<>?dvulkan;VkShaderStageFlagBits - Bitmask specifying a pipeline stage DescriptionNote only includes the original five graphics stages included in Vulkan 1.0, and not any stages added by extensions. Thus, it may not have the desired effect in all cases.See Also8, e,  vulkan$ specifies the ray generation stage.vulkan specifies the any-hit stage.vulkan! specifies the closest hit stage.vulkan specifies the miss stage.vulkan" specifies the intersection stage.vulkan specifies the callable stage.vulkan specifies the task stage.vulkan specifies the mesh stage.vulkan is a combination of bits used as shorthand to specify all shader stages supported by the device, including all additional stages which are introduced by extensions.vulkan is a combination of bits used as shorthand to specify all graphics stages defined above (excluding the compute stage).vulkan specifies the compute stage.vulkan specifies the fragment stage.vulkan specifies the geometry stage.vulkan. specifies the tessellation evaluation stage.vulkan+ specifies the tessellation control stage.vulkan specifies the vertex stage.de#edNone( #$&'(./0289:<>?] vulkanVkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT - Structure specifying the required subgroup size of a newly created pipeline shader stage Valid Usage DescriptionIf a  structure is included in the pNext chain of 8, it specifies that the pipeline shader stage being compiled has a required subgroup size.Valid Usage (Implicit)See AlsovulkanVkPhysicalDeviceSubgroupSizeControlPropertiesEXT - Structure describing the control subgroup size properties of an implementation DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.If F::supportedOperations includes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subgroup-quad, minSubgroupSize must be greater than or equal to 4.Valid Usage (Implicit)See Alsoe, vulkanVkPhysicalDeviceSubgroupSizeControlFeaturesEXT - Structure describing the subgroup size control features that can be supported by an implementationMembers0This structure describes the following features: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.NoteThe * structure was added in version 2 of the VK_EXT_subgroup_size_control extension. Version 1 implementations of this extension will not fill out the features structure but applications may assume that both subgroupSizeControl and computeFullSubgroups> are supported if the extension is supported. (See also the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-requirementsFeature Requirements/ section.) Applications are advised to add a  structure to the pNext chain of   to enable the features regardless of the version of the extension supported by the implementation. If the implementation only supports version 1, it will safely ignore the  structure.Valid Usage (Implicit)See Alsoq, vulkanVUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT-requiredSubgroupSize-02760 requiredSubgroupSize must be a power-of-two integerVUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT-requiredSubgroupSize-02761 requiredSubgroupSize must be greater or equal to https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-min-subgroup-sizeminSubgroupSizeVUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT-requiredSubgroupSize-02762 requiredSubgroupSize must be less than or equal to https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-max-subgroup-sizemaxSubgroupSizevulkanlimits-min-subgroup-size minSubgroupSize9 is the minimum subgroup size supported by this device. minSubgroupSize is at least one if any of the physical device@s queues support   or  . minSubgroupSize is a power-of-two. minSubgroupSize is less than or equal to maxSubgroupSize. minSubgroupSize is less than or equal to  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-subgroup-size subgroupSize.vulkanlimits-max-subgroup-size maxSubgroupSize9 is the maximum subgroup size supported by this device. maxSubgroupSize is at least one if any of the physical device@s queues support   or  . maxSubgroupSize is a power-of-two. maxSubgroupSize is greater than or equal to minSubgroupSize. maxSubgroupSize is greater than or equal to  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-subgroup-size subgroupSize.vulkan"limits-max-subgroups-per-workgroup maxComputeWorkgroupSubgroups is the maximum number of subgroups supported by the implementation within a workgroup.vulkan$limits-required-subgroup-size-stages requiredSubgroupSizeStages is a bitfield of what shader stages support having a required subgroup size specified.vulkanfeatures-subgroupSizeControl subgroupSizeControl indicates whether the implementation supports controlling shader subgroup sizes via the   flag and the  structure.vulkanfeatures-computeFullSubgroups computeFullSubgroups indicates whether the implementation supports requiring full subgroups in compute shaders via the   flag.FNone( #$&'(./0289:<>?vulkanVkPhysicalDeviceSubgroupProperties - Structure describing subgroup support for an implementation DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.If supportedOperations includes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subgroup-quad, or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderSubgroupUniformControlFlow shaderSubgroupUniformControlFlow is enabled,  subgroupSize must be greater than or equal to 4.Valid Usage (Implicit)See Alsoq, e, , vulkanextension-limits-subgroup-size  subgroupSize9 is the default number of invocations in each subgroup.  subgroupSize is at least 1 if any of the physical device@s queues support   or  .  subgroupSize is a power-of-two.vulkanlimits-subgroup-supportedStages supportedStages is a bitfield of ' % describing the shader stages that  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-group-operationsgroup operations with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-scope-subgroupsubgroup scope are supported in. supportedStages will have the ' : bit set if any of the physical device@s queues support  .vulkan"limits-subgroupSupportedOperations supportedOperations is a bitmask of  specifying the sets of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-group-operationsgroup operations with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-scope-subgroupsubgroup scope supported on this device. supportedOperations will have the : bit set if any of the physical device@s queues support   or  .vulkan)limits-subgroup-quadOperationsInAllStages quadOperationsInAllStages# is a boolean specifying whether  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-quad-operationsquad group operations are available in all stages, or are restricted to fragment and compute stages.   None( #$&'(./0289:<>?None( #$&'(./0289:<>?vulkan0VkSemaphoreCreateFlags - Reserved for future use Description is a bitmask type for setting a mask, but is currently reserved for future use.See Also=None( #$&'(./0289:<>?TvulkanVkSamplerCreateFlagBits - Bitmask specifying additional parameters of sampler DescriptionNoteThe approximations used when  is specified are implementation defined. Some implementations may interpolate between fragment density levels in a subsampled image. In that case, this bit may be used to decide whether the interpolation factors are calculated per fragment or at a coarser granularity.See Alsovulkansamplers-subsamplesampler  specifies that the sampler will read from an image created with flags containing  .vulkan$ specifies that the implementation may use approximations when reconstructing a full color value for texture access from a subsampled image.&None( #$&'(./0289:<>?ȦbvulkanVkSampleCountFlagBits - Bitmask specifying sample counts supported for an image used for storage operationsSee Also7, d, , 1, , , U, 8, c, ,  , @ vulkan. specifies an image with 64 samples per pixel.vulkan. specifies an image with 32 samples per pixel.vulkan. specifies an image with 16 samples per pixel.vulkan- specifies an image with 8 samples per pixel.vulkan- specifies an image with 4 samples per pixel.vulkan- specifies an image with 2 samples per pixel.vulkan. specifies an image with one sample per pixel. bccbNone( #$&'(./0289:<>?ʇvulkanVkRenderPassCreateFlagBits - Bitmask specifying additional properties of a renderpassSee Alsovulkan< specifies that the created renderpass is compatible with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-renderpass-transformrender pass transform.None( #$&'(./0289:<>?+vulkanVkQueueFlagBits - Bitmask specifying capabilities of queues in a queue family DescriptionIf an implementation exposes any queue family that supports graphics operations, at least one queue family of at least one physical device exposed by the implementation must/ support both graphics and compute operations.Furthermore, if the protected memory physical device feature is supported, then at least one queue family of at least one physical device exposed by the implementation must support graphics operations, compute operations, and protected memory operations.NoteAll commands that are allowed on a queue that supports transfer operations are also allowed on a queue that supports either graphics or compute operations. Thus, if the capabilities of a queue family include  or , then reporting the 1 capability separately for that queue family is optional.For further details see  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-queuesQueues.See Alsovulkan: specifies that queues in this queue family support the   bit. (see  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-protected-memoryProtected Memory(). If the physical device supports the protectedMemory. feature, at least one of its queue families must support this bit.vulkan specifies that queues in this queue family support sparse memory management operations (see  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememorySparse Resources). If any of the sparse resource features are enabled, then at least one queue family must support this bit.vulkan specifies that queues in this queue family support transfer operations.vulkan specifies that queues in this queue family support compute operations.vulkan specifies that queues in this queue family support graphics operations. $None( #$&'(./0289:<>?ڃ `vulkanVkQueryType - Specify the type of queries managed by a query poolSee Also;,  ,  ,  vulkan specifies a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-transform-feedbacktransform feedback query.vulkan specifies a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-performanceperformance query.vulkan specifies a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-copying!acceleration structure size query for use with   or  .vulkan specifies a https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-copying/serialization acceleration structure size queryvulkan specifies a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-copying!acceleration structure size query for use with  .vulkan specifies a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-performance-intelIntel performance query.vulkan specifies a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-timestampstimestamp query.vulkan specifies a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-pipestatspipeline statistics query.vulkan specifies an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-occlusionocclusion query. ``#None( #$&'(./0289:<>?x^vulkanVkQueryResultFlagBits - Bitmask specifying how and when query results are returnedSee Also_vulkan9 specifies that returning partial results is acceptable.vulkan specifies that the availability status accompanies the results.vulkan specifies that Vulkan will wait for each query@s status to become available before retrieving its results.vulkan specifies the results will be written as an array of 64-bit unsigned integer values. If this bit is not set, the results will be written as an array of 32-bit unsigned integer values.^_ _^None( #$&'(./0289:<>?ޭvulkan0VkQueryPoolCreateFlags - Reserved for future use Description is a bitmask type for setting a mask, but is currently reserved for future use.See Also;None( #$&'(./0289:<>? vulkanVkQueryPipelineStatisticFlagBits - Bitmask specifying queried pipeline statistics DescriptionThese values are intended to measure relative statistics on one implementation. Various device architectures will count these values differently. Any or all counters may* be affected by the issues described in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-undefinedQuery Operation.Note*For example, tile-based rendering devices may need to replay the scene multiple times, affecting some of the counts.If a pipeline has rasterizerDiscardEnable enabled, implementations may% discard primitives after the final  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader stage. As a result, if rasterizerDiscardEnable is enabled, the clipping input and output primitives counters may not be incremented.When a pipeline statistics query finishes, the result for that query is marked as available. The application can# copy the result to a buffer (via 0), or request it be put into host memory (via ;).See Alsovulkan specifies that queries managed by the pool will count the number of compute shader invocations. The counter@s value is incremented every time the compute shader is invoked. Implementations may skip the execution of certain compute shader invocations or execute additional compute shader invocations for implementation-dependent reasons as long as the results of rendering otherwise remain unchanged.vulkan specifies that queries managed by the pool will count the number of invocations of the tessellation evaluation shader. The counter@s value is incremented each time the tessellation evaluation shader is  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-tessellation-evaluation-executioninvoked.vulkan specifies that queries managed by the pool will count the number of patches processed by the tessellation control shader. The counter@s value is incremented once for each patch for which a tessellation control shader is  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-tessellation-control-executioninvoked.vulkan specifies that queries managed by the pool will count the number of fragment shader invocations. The counter@s value is incremented each time the fragment shader is  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-fragment-executioninvoked.vulkan specifies that queries managed by the pool will count the number of primitives output by the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-clippingPrimitive Clipping stage of the pipeline. The counter@s value is incremented each time a primitive passes the primitive clipping stage. The actual number of primitives output by the primitive clipping stage for a particular input primitive is implementation-dependent but must# satisfy the following conditions:If at least one vertex of the input primitive lies inside the clipping volume, the counter is incremented by one or more.6Otherwise, the counter is incremented by zero or more.vulkan specifies that queries managed by the pool will count the number of primitives processed by the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-clippingPrimitive Clipping stage of the pipeline. The counter@s value is incremented each time a primitive reaches the primitive clipping stage.vulkan specifies that queries managed by the pool will count the number of primitives generated by geometry shader invocations. The counter@s value is incremented each time the geometry shader emits a primitive. Restarting primitive topology using the SPIR-V instructions OpEndPrimitive or OpEndStreamPrimitive? has no effect on the geometry shader output primitives count.vulkan specifies that queries managed by the pool will count the number of geometry shader invocations. This counter@s value is incremented each time a geometry shader is  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-geometry-executioninvoked. In the case of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#geometry-invocationsinstanced geometry shaders, the geometry shader invocations count is incremented for each separate instanced invocation.vulkan specifies that queries managed by the pool will count the number of vertex shader invocations. This counter@s value is incremented each time a vertex shader is  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-vertex-executioninvoked.vulkan specifies that queries managed by the pool will count the number of primitives processed by the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawinginput assembly stage. If primitive restart is enabled, restarting the primitive topology has no effect on the count. Incomplete primitives may be counted.vulkan specifies that queries managed by the pool will count the number of vertices processed by the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawinginput assembly9 stage. Vertices corresponding to incomplete primitives may contribute to the count."None( #$&'(./0289:<>?\vulkanVkQueryControlFlagBits - Bitmask specifying constraints on a querySee Also]vulkan specifies the precision of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-occlusionocclusion queries.\]]\!None( #$&'(./0289:<>?e@ [vulkan4VkPrimitiveTopology - Supported primitive topologies DescriptionEach primitive topology, and its construction from a list of vertices, is described in detail below with a supporting diagram, according to the following key: data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iOC45ODE3ODY3IgogICBoZWlnaHQ9IjguOTgxNzg2NyIKICAgdmlld0JveD0iMCAwIDguOTgxNzg2OCA4Ljk4MTc4NyIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnODY1MyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45Mi40ICg1ZGE2ODljMzEzLCAyMDE5LTAxLTE0KSIKICAgc29kaXBvZGk6ZG9jbmFtZT0icHJpbWl0aXZlX3RvcG9sb2d5X2tleV92ZXJ0ZXguc3ZnIj4KICA8ZGVmcwogICAgIGlkPSJkZWZzODY0NyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9ImJhc2UiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6em9vbT0iMi44Mjg0MjcxIgogICAgIGlua3NjYXBlOmN4PSIxMDAuMjYxNiIKICAgICBpbmtzY2FwZTpjeT0iLTEwNC40NTE0NyIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0icHgiCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ibGF5ZXIxIgogICAgIHNob3dncmlkPSJ0cnVlIgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTkyMCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSIxMDAxIgogICAgIGlua3NjYXBlOndpbmRvdy14PSItOSIKICAgICBpbmtzY2FwZTp3aW5kb3cteT0iLTkiCiAgICAgaW5rc2NhcGU6d2luZG93LW1heGltaXplZD0iMCIKICAgICBmaXQtbWFyZ2luLXRvcD0iMSIKICAgICBmaXQtbWFyZ2luLWxlZnQ9IjEiCiAgICAgZml0LW1hcmdpbi1yaWdodD0iMSIKICAgICBmaXQtbWFyZ2luLWJvdHRvbT0iMSIKICAgICBpbmtzY2FwZTpzbmFwLWdyaWRzPSJ0cnVlIgogICAgIGlua3NjYXBlOnNuYXAtdGV4dC1iYXNlbGluZT0idHJ1ZSIKICAgICBpbmtzY2FwZTpzbmFwLW9iamVjdC1taWRwb2ludHM9InRydWUiCiAgICAgdW5pdHM9InB4IgogICAgIGJvcmRlcmxheWVyPSJmYWxzZSI+CiAgICA8aW5rc2NhcGU6Z3JpZAogICAgICAgdHlwZT0ieHlncmlkIgogICAgICAgaWQ9ImdyaWQ5NjI2IgogICAgICAgb3JpZ2lueD0iLTkwLjUwOTExIgogICAgICAgb3JpZ2lueT0iLTY0NS41MDkyMiIgLz4KICA8L3NvZGlwb2RpOm5hbWVkdmlldz4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGE4NjUwIj4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICAgIDxkYzp0aXRsZSAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZwogICAgIGlua3NjYXBlOmxhYmVsPSJMYXllciAxIgogICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiCiAgICAgaWQ9ImxheWVyMSIKICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTAzLjA0MzUsMjMyLjUyNikiPgogICAgPGNpcmNsZQogICAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MTtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgICAgaWQ9InBhdGg0NTE3LTAtOC01LTItMyIKICAgICAgIGN4PSIxMDcuNTM0MzkiCiAgICAgICBjeT0iLTIyOC4wMzUxMSIKICAgICAgIHI9IjMuNDkwODkzMSIgLz4KICA8L2c+Cjwvc3ZnPgo=primitive topology key vertexVertexA point in 3-dimensional space. Positions chosen within the diagrams are arbitrary and for illustration only. !data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iOS41NzgxMjUiCiAgIGhlaWdodD0iMTMuODc1IgogICB2aWV3Qm94PSIwIDAgOS41NzgxMjUxIDEzLjg3NSIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnODY1MyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45Mi40ICg1ZGE2ODljMzEzLCAyMDE5LTAxLTE0KSIKICAgc29kaXBvZGk6ZG9jbmFtZT0icHJpbWl0aXZlX3RvcG9sb2d5X2tleV92ZXJ0ZXhfbnVtYmVyLnN2ZyI+CiAgPGRlZnMKICAgICBpZD0iZGVmczg2NDciIC8+CiAgPHNvZGlwb2RpOm5hbWVkdmlldwogICAgIGlkPSJiYXNlIgogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgICBib3JkZXJvcGFjaXR5PSIxLjAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAuMCIKICAgICBpbmtzY2FwZTpwYWdlc2hhZG93PSIyIgogICAgIGlua3NjYXBlOnpvb209IjIuODI4NDI3MSIKICAgICBpbmtzY2FwZTpjeD0iNzguNTg2NDQiCiAgICAgaW5rc2NhcGU6Y3k9Ii02OS41NjgzODgiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtdW5pdHM9InB4IgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9ImxheWVyMSIKICAgICBzaG93Z3JpZD0idHJ1ZSIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjE5MjAiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMTAwMSIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iLTkiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9Ii05IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjAiCiAgICAgZml0LW1hcmdpbi10b3A9IjEiCiAgICAgZml0LW1hcmdpbi1sZWZ0PSIxIgogICAgIGZpdC1tYXJnaW4tcmlnaHQ9IjEiCiAgICAgZml0LW1hcmdpbi1ib3R0b209IjEiCiAgICAgaW5rc2NhcGU6c25hcC1ncmlkcz0idHJ1ZSIKICAgICBpbmtzY2FwZTpzbmFwLXRleHQtYmFzZWxpbmU9InRydWUiCiAgICAgaW5rc2NhcGU6c25hcC1vYmplY3QtbWlkcG9pbnRzPSJ0cnVlIgogICAgIHVuaXRzPSJweCIKICAgICBib3JkZXJsYXllcj0iZmFsc2UiPgogICAgPGlua3NjYXBlOmdyaWQKICAgICAgIHR5cGU9Inh5Z3JpZCIKICAgICAgIGlkPSJncmlkOTYyNiIKICAgICAgIG9yaWdpbng9Ii05MC4zNjcxOTEiCiAgICAgICBvcmlnaW55PSItNjE4Ljc1Nzg0IiAvPgogIDwvc29kaXBvZGk6bmFtZWR2aWV3PgogIDxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTg2NTAiPgogICAgPHJkZjpSREY+CiAgICAgIDxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj4KICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD4KICAgICAgICA8ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+CiAgICAgICAgPGRjOnRpdGxlPjwvZGM6dGl0bGU+CiAgICAgIDwvY2M6V29yaz4KICAgIDwvcmRmOlJERj4KICA8L21ldGFkYXRhPgogIDxnCiAgICAgaW5rc2NhcGU6bGFiZWw9IkxheWVyIDEiCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMDIuOTAxNTgsMjEwLjY2Nzg2KSI+CiAgICA8dGV4dAogICAgICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIKICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtc2l6ZToxNnB4O2xpbmUtaGVpZ2h0OjEuMjU7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidzYW5zLXNlcmlmLCBOb3JtYWwnO2ZvbnQtdmFyaWFudC1saWdhdHVyZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1jYXBzOm5vcm1hbDtmb250LXZhcmlhbnQtbnVtZXJpYzpub3JtYWw7Zm9udC1mZWF0dXJlLXNldHRpbmdzOm5vcm1hbDt0ZXh0LWFsaWduOmNlbnRlcjtsZXR0ZXItc3BhY2luZzowcHg7d29yZC1zcGFjaW5nOjBweDt3cml0aW5nLW1vZGU6bHItdGI7dGV4dC1hbmNob3I6bWlkZGxlO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MS4xNjQyNzM5OCIKICAgICAgIHg9IjEwNy41MzQzOSIKICAgICAgIHk9Ii0xOTguMDM1MDUiCiAgICAgICBpZD0idGV4dDUwNzAtMi0yLTktOS00MS05Ij48dHNwYW4KICAgICAgICAgc29kaXBvZGk6cm9sZT0ibGluZSIKICAgICAgICAgaWQ9InRzcGFuNTA2OC0wLTMtMzYtOS0xLTUiCiAgICAgICAgIHg9IjEwNy41MzQzOSIKICAgICAgICAgeT0iLTE5OC4wMzUwNSIKICAgICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3RyZXRjaDpub3JtYWw7Zm9udC1zaXplOjE2cHg7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidzYW5zLXNlcmlmLCBOb3JtYWwnO2ZvbnQtdmFyaWFudC1saWdhdHVyZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1jYXBzOm5vcm1hbDtmb250LXZhcmlhbnQtbnVtZXJpYzpub3JtYWw7Zm9udC1mZWF0dXJlLXNldHRpbmdzOm5vcm1hbDt0ZXh0LWFsaWduOmNlbnRlcjt3cml0aW5nLW1vZGU6bHItdGI7dGV4dC1hbmNob3I6bWlkZGxlO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2Utd2lkdGg6MS4xNjQyNzM5OCI+NTwvdHNwYW4+PC90ZXh0PgogIDwvZz4KPC9zdmc+Cg==$primitive topology key vertex number  Vertex Number?Sequence position of a vertex within the provided vertex data.  data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iMTUuNzE0ODQ5IgogICBoZWlnaHQ9IjEwLjkzODc2MiIKICAgdmlld0JveD0iMCAwIDE1LjcxNDg0OSAxMC45Mzg3NjIiCiAgIHZlcnNpb249IjEuMSIKICAgaWQ9InN2Zzg2NTMiCiAgIGlua3NjYXBlOnZlcnNpb249IjAuOTIuNCAoNWRhNjg5YzMxMywgMjAxOS0wMS0xNCkiCiAgIHNvZGlwb2RpOmRvY25hbWU9InByaW1pdGl2ZV90b3BvbG9neV9rZXlfcHJvdm9raW5nX3ZlcnRleC5zdmciPgogIDxkZWZzCiAgICAgaWQ9ImRlZnM4NjQ3IiAvPgogIDxzb2RpcG9kaTpuYW1lZHZpZXcKICAgICBpZD0iYmFzZSIKICAgICBwYWdlY29sb3I9IiNmZmZmZmYiCiAgICAgYm9yZGVyY29sb3I9IiM2NjY2NjYiCiAgICAgYm9yZGVyb3BhY2l0eT0iMS4wIgogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwLjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp6b29tPSIyLjgyODQyNzEiCiAgICAgaW5rc2NhcGU6Y3g9Ii0xMzguNzA4NDQiCiAgICAgaW5rc2NhcGU6Y3k9Ii01NS44NjU2MjgiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtdW5pdHM9InB4IgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9ImxheWVyMSIKICAgICBzaG93Z3JpZD0idHJ1ZSIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjI1OTUiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMTQ5NSIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iNDgxIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIxOTEiCiAgICAgaW5rc2NhcGU6d2luZG93LW1heGltaXplZD0iMCIKICAgICBmaXQtbWFyZ2luLXRvcD0iMSIKICAgICBmaXQtbWFyZ2luLWxlZnQ9IjEiCiAgICAgZml0LW1hcmdpbi1yaWdodD0iMSIKICAgICBmaXQtbWFyZ2luLWJvdHRvbT0iMSIKICAgICBpbmtzY2FwZTpzbmFwLWdyaWRzPSJ0cnVlIgogICAgIGlua3NjYXBlOnNuYXAtdGV4dC1iYXNlbGluZT0idHJ1ZSIKICAgICBpbmtzY2FwZTpzbmFwLW9iamVjdC1taWRwb2ludHM9InRydWUiCiAgICAgdW5pdHM9InB4IgogICAgIGJvcmRlcmxheWVyPSJmYWxzZSI+CiAgICA8aW5rc2NhcGU6Z3JpZAogICAgICAgdHlwZT0ieHlncmlkIgogICAgICAgaWQ9ImdyaWQ5NjI2IgogICAgICAgb3JpZ2lueD0iLTkwLjUwOTEwNyIKICAgICAgIG9yaWdpbnk9Ii01OTUuNTA5MTciIC8+CiAgPC9zb2RpcG9kaTpuYW1lZHZpZXc+CiAgPG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhODY1MCI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGUgLz4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGcKICAgICBpbmtzY2FwZTpsYWJlbD0iTGF5ZXIgMSIKICAgICBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIgogICAgIGlkPSJsYXllcjEiCiAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTEwMy4wNDM1LDE4NC40ODI5MikiPgogICAgPGNpcmNsZQogICAgICAgc3R5bGU9ImZpbGw6I2ZmMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MTtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgICAgaWQ9InBhdGg0NTE3LTAtOC01LTkxLTAtMy04IgogICAgICAgY3g9IjEwNy41MzQzOSIKICAgICAgIGN5PSItMTc4LjAzNTA1IgogICAgICAgcj0iMy40OTA4OTMxIiAvPgogICAgPHBhdGgKICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiNmYTAwMDA7c3Ryb2tlLXdpZHRoOjEuMDAxNTc0NzU7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgIGQ9Im0gMTA3LjUzNDM5LC0xNzguMDM1IDEwLC01IgogICAgICAgaWQ9InBhdGg0NjcyIgogICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz4KICA8L2c+Cjwvc3ZnPgo='primitive topology key provoking vertex Provoking VertexProvoking vertex within the main primitive. The tail is angled towards the relevant primitive. Used in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-flatshading flat shading. data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iODIiCiAgIGhlaWdodD0iMyIKICAgdmlld0JveD0iMCAwIDgyLjAwMDAwMSAzLjAwMDAwMDEiCiAgIHZlcnNpb249IjEuMSIKICAgaWQ9InN2Zzg2NTMiCiAgIGlua3NjYXBlOnZlcnNpb249IjAuOTIuNCAoNWRhNjg5YzMxMywgMjAxOS0wMS0xNCkiCiAgIHNvZGlwb2RpOmRvY25hbWU9InByaW1pdGl2ZV90b3BvbG9neV9rZXlfZWRnZS5zdmciPgogIDxkZWZzCiAgICAgaWQ9ImRlZnM4NjQ3IiAvPgogIDxzb2RpcG9kaTpuYW1lZHZpZXcKICAgICBpZD0iYmFzZSIKICAgICBwYWdlY29sb3I9IiNmZmZmZmYiCiAgICAgYm9yZGVyY29sb3I9IiM2NjY2NjYiCiAgICAgYm9yZGVyb3BhY2l0eT0iMS4wIgogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwLjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp6b29tPSIyLjgyODQyNzEiCiAgICAgaW5rc2NhcGU6Y3g9Ii0xNTUuNzc5NSIKICAgICBpbmtzY2FwZTpjeT0iLTQuNTU4MjQ3MyIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0icHgiCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ibGF5ZXIxIgogICAgIHNob3dncmlkPSJ0cnVlIgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMjI2MiIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSIxNTA3IgogICAgIGlua3NjYXBlOndpbmRvdy14PSI0ODIiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjM4NSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGZpdC1tYXJnaW4tdG9wPSIxIgogICAgIGZpdC1tYXJnaW4tbGVmdD0iMSIKICAgICBmaXQtbWFyZ2luLXJpZ2h0PSIxIgogICAgIGZpdC1tYXJnaW4tYm90dG9tPSIxIgogICAgIGlua3NjYXBlOnNuYXAtZ3JpZHM9InRydWUiCiAgICAgaW5rc2NhcGU6c25hcC10ZXh0LWJhc2VsaW5lPSJ0cnVlIgogICAgIGlua3NjYXBlOnNuYXAtb2JqZWN0LW1pZHBvaW50cz0idHJ1ZSIKICAgICB1bml0cz0icHgiCiAgICAgYm9yZGVybGF5ZXI9ImZhbHNlIj4KICAgIDxpbmtzY2FwZTpncmlkCiAgICAgICB0eXBlPSJ4eWdyaWQiCiAgICAgICBpZD0iZ3JpZDk2MjYiCiAgICAgICBvcmlnaW54PSItMzA5IgogICAgICAgb3JpZ2lueT0iLTY0OC41MDAwMyIgLz4KICA8L3NvZGlwb2RpOm5hbWVkdmlldz4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGE4NjUwIj4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICAgIDxkYzp0aXRsZSAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZwogICAgIGlua3NjYXBlOmxhYmVsPSJMYXllciAxIgogICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiCiAgICAgaWQ9ImxheWVyMSIKICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMzIxLjUzNDM5LDIyOS41MzUwMykiPgogICAgPHBhdGgKICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLWRhc2hvZmZzZXQ6MDtzdHJva2Utb3BhY2l0eToxIgogICAgICAgZD0ibSAzMjIuNTM0MzksLTIyOC4wMzUwMyBoIDgwIgogICAgICAgaWQ9InBhdGgyMDMzLTEiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPgogIDwvZz4KPC9zdmc+Cg==primitive topology key edge Primitive Edge3An edge connecting the points of a main primitive.  data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iODIiCiAgIGhlaWdodD0iMyIKICAgdmlld0JveD0iMCAwIDgyLjAwMDAwMSAzLjAwMDAwMDEiCiAgIHZlcnNpb249IjEuMSIKICAgaWQ9InN2Zzg2NTMiCiAgIGlua3NjYXBlOnZlcnNpb249IjAuOTIuNCAoNWRhNjg5YzMxMywgMjAxOS0wMS0xNCkiCiAgIHNvZGlwb2RpOmRvY25hbWU9InByaW1pdGl2ZV90b3BvbG9neV9rZXlfYWRqYWNlbmN5X2VkZ2Uuc3ZnIj4KICA8ZGVmcwogICAgIGlkPSJkZWZzODY0NyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9ImJhc2UiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6em9vbT0iMi44Mjg0MjcxIgogICAgIGlua3NjYXBlOmN4PSItMTYxLjc4OTkiCiAgICAgaW5rc2NhcGU6Y3k9Ii03MC43NzUwMjMiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtdW5pdHM9InB4IgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9ImxheWVyMSIKICAgICBzaG93Z3JpZD0idHJ1ZSIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjIyMzMiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMTM0MyIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iMzkyIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyOTYiCiAgICAgaW5rc2NhcGU6d2luZG93LW1heGltaXplZD0iMCIKICAgICBmaXQtbWFyZ2luLXRvcD0iMSIKICAgICBmaXQtbWFyZ2luLWxlZnQ9IjEiCiAgICAgZml0LW1hcmdpbi1yaWdodD0iMSIKICAgICBmaXQtbWFyZ2luLWJvdHRvbT0iMSIKICAgICBpbmtzY2FwZTpzbmFwLWdyaWRzPSJ0cnVlIgogICAgIGlua3NjYXBlOnNuYXAtdGV4dC1iYXNlbGluZT0idHJ1ZSIKICAgICBpbmtzY2FwZTpzbmFwLW9iamVjdC1taWRwb2ludHM9InRydWUiCiAgICAgdW5pdHM9InB4IgogICAgIGJvcmRlcmxheWVyPSJmYWxzZSI+CiAgICA8aW5rc2NhcGU6Z3JpZAogICAgICAgdHlwZT0ieHlncmlkIgogICAgICAgaWQ9ImdyaWQ5NjI2IgogICAgICAgb3JpZ2lueD0iLTMwOSIKICAgICAgIG9yaWdpbnk9Ii02MjMuNTAwMDMiIC8+CiAgPC9zb2RpcG9kaTpuYW1lZHZpZXc+CiAgPG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhODY1MCI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGUgLz4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGcKICAgICBpbmtzY2FwZTpsYWJlbD0iTGF5ZXIgMSIKICAgICBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIgogICAgIGlkPSJsYXllcjEiCiAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTMyMS41MzQzOSwyMDQuNTM1MDMpIj4KICAgIDxwYXRoCiAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTo0LCA0O3N0cm9rZS1kYXNob2Zmc2V0OjA7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgIGQ9Im0gMzIyLjUzNDM5LC0yMDMuMDM1MDMgaCA4MCIKICAgICAgIGlkPSJwYXRoMjAzMyIKICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+CiAgPC9nPgo8L3N2Zz4K%primitive topology key adjacency edge Adjacency EdgePoints connected by these lines do not contribute to a main primitive, and are only accessible in a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#geometrygeometry shader. 0data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iNTUuMDYzODE2IgogICBoZWlnaHQ9IjQ2LjE3ODgyOSIKICAgdmlld0JveD0iMCAwIDU1LjA2MzgxNyA0Ni4xNzg4MyIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnODY1MyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45Mi40ICg1ZGE2ODljMzEzLCAyMDE5LTAxLTE0KSIKICAgc29kaXBvZGk6ZG9jbmFtZT0icHJpbWl0aXZlX3RvcG9sb2d5X2tleV93aW5kaW5nX29yZGVyLnN2ZyI+CiAgPGRlZnMKICAgICBpZD0iZGVmczg2NDciPgogICAgPG1hcmtlcgogICAgICAgaW5rc2NhcGU6aXNzdG9jaz0idHJ1ZSIKICAgICAgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlIgogICAgICAgaWQ9Im1hcmtlcjMwMzktMSIKICAgICAgIHJlZlg9IjAiCiAgICAgICByZWZZPSIwIgogICAgICAgb3JpZW50PSJhdXRvIgogICAgICAgaW5rc2NhcGU6c3RvY2tpZD0iQXJyb3cxTWVuZCI+CiAgICAgIDxwYXRoCiAgICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KC0wLjQsMCwwLC0wLjQsLTQsMCkiCiAgICAgICAgIHN0eWxlPSJmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjEuMDAwMDAwMDNwdDtzdHJva2Utb3BhY2l0eToxIgogICAgICAgICBkPSJNIDAsMCA1LC01IC0xMi41LDAgNSw1IFoiCiAgICAgICAgIGlkPSJwYXRoMzAzNy0wIgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPgogICAgPC9tYXJrZXI+CiAgICA8bWFya2VyCiAgICAgICBpbmtzY2FwZTppc3N0b2NrPSJ0cnVlIgogICAgICAgc3R5bGU9Im92ZXJmbG93OnZpc2libGUiCiAgICAgICBpZD0ibWFya2VyMjg5MS02IgogICAgICAgcmVmWD0iMCIKICAgICAgIHJlZlk9IjAiCiAgICAgICBvcmllbnQ9ImF1dG8iCiAgICAgICBpbmtzY2FwZTpzdG9ja2lkPSJBcnJvdzFNZW5kIj4KICAgICAgPHBhdGgKICAgICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoLTAuNCwwLDAsLTAuNCwtNCwwKSIKICAgICAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MS4wMDAwMDAwM3B0O3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgIGQ9Ik0gMCwwIDUsLTUgLTEyLjUsMCA1LDUgWiIKICAgICAgICAgaWQ9InBhdGgyODg5LTYiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+CiAgICA8L21hcmtlcj4KICAgIDxtYXJrZXIKICAgICAgIGlua3NjYXBlOnN0b2NraWQ9IkFycm93MU1lbmQiCiAgICAgICBvcmllbnQ9ImF1dG8iCiAgICAgICByZWZZPSIwIgogICAgICAgcmVmWD0iMCIKICAgICAgIGlkPSJBcnJvdzFNZW5kLTgwIgogICAgICAgc3R5bGU9Im92ZXJmbG93OnZpc2libGUiCiAgICAgICBpbmtzY2FwZTppc3N0b2NrPSJ0cnVlIgogICAgICAgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIj4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGg4OTAtMCIKICAgICAgICAgZD0iTSAwLDAgNSwtNSAtMTIuNSwwIDUsNSBaIgogICAgICAgICBzdHlsZT0iZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxLjAwMDAwMDAzcHQ7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoLTAuNCwwLDAsLTAuNCwtNCwwKSIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz4KICAgIDwvbWFya2VyPgogIDwvZGVmcz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9ImJhc2UiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6em9vbT0iMi44Mjg0MjcxIgogICAgIGlua3NjYXBlOmN4PSItMTQwLjU1MDU2IgogICAgIGlua3NjYXBlOmN5PSItOC40MzI2NjQ2IgogICAgIGlua3NjYXBlOmRvY3VtZW50LXVuaXRzPSJweCIKICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJsYXllcjEiCiAgICAgc2hvd2dyaWQ9InRydWUiCiAgICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxOTIwIgogICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjEwMDEiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9Ii05IgogICAgIGlua3NjYXBlOndpbmRvdy15PSItOSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGZpdC1tYXJnaW4tdG9wPSIxIgogICAgIGZpdC1tYXJnaW4tbGVmdD0iMSIKICAgICBmaXQtbWFyZ2luLXJpZ2h0PSIxIgogICAgIGZpdC1tYXJnaW4tYm90dG9tPSIxIgogICAgIGlua3NjYXBlOnNuYXAtZ3JpZHM9InRydWUiCiAgICAgaW5rc2NhcGU6c25hcC10ZXh0LWJhc2VsaW5lPSJ0cnVlIgogICAgIGlua3NjYXBlOnNuYXAtb2JqZWN0LW1pZHBvaW50cz0idHJ1ZSIKICAgICB1bml0cz0icHgiCiAgICAgYm9yZGVybGF5ZXI9ImZhbHNlIj4KICAgIDxpbmtzY2FwZTpncmlkCiAgICAgICB0eXBlPSJ4eWdyaWQiCiAgICAgICBpZD0iZ3JpZDk2MjYiCiAgICAgICBvcmlnaW54PSItMzA3LjAyOTMzIgogICAgICAgb3JpZ2lueT0iLTU2Ni40NjA5NyIgLz4KICA8L3NvZGlwb2RpOm5hbWVkdmlldz4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGE4NjUwIj4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICAgIDxkYzp0aXRsZT48L2RjOnRpdGxlPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZwogICAgIGlua3NjYXBlOmxhYmVsPSJMYXllciAxIgogICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiCiAgICAgaWQ9ImxheWVyMSIKICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMzE5LjU2MzcxLDE5MC42NzQ4KSI+CiAgICA8ZwogICAgICAgaWQ9Imc0Mzg5LTg5IgogICAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjU1LC00NC45OTk5OTUpIj4KICAgICAgPHBhdGgKICAgICAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJjYyIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgxODY4LTc5IgogICAgICAgICBkPSJtIDY3LjUzNDM5MywtMTEzLjAzNTEgMjAsLTMwIgogICAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MTttYXJrZXItZW5kOnVybCgjbWFya2VyMzAzOS0xKSIgLz4KICAgICAgPHBhdGgKICAgICAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJjYyIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgxODcwLTMiCiAgICAgICAgIGQ9Im0gOTcuNTM0MzkzLC0xNDMuMDM1MSAxOS45OTk5OTcsMzAiCiAgICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjFweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxO21hcmtlci1lbmQ6dXJsKCNtYXJrZXIyODkxLTYpIiAvPgogICAgICA8cGF0aAogICAgICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjIgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDE4NzItOSIKICAgICAgICAgZD0iTSAxMTcuNTM0MzksLTEwMy4wMzUxIEggNjcuNTM0MzkzIgogICAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MTttYXJrZXItZW5kOnVybCgjQXJyb3cxTWVuZC04MCkiIC8+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K$primitive topology key winding order Winding Order The relative order in which vertices are defined within a primitive, used in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-polygons-basicfacing determination3. This ordering has no specific start or end point.The diagrams are supported with mathematical definitions where the vertices (v) and primitives (p) are numbered starting from 0; v0 is the first vertex in the provided data and p0 is the first primitive in the set of primitives defined by the vertices and topology.See Also8,  vulkan specifies  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-patch-listsseparate patch primitives.vulkan specifies  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-triangle-strips-with-adjacency,connected triangle primitives with adjacency., with consecutive triangles sharing an edge.vulkan specifies a series of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-triangle-lists-with-adjacency+separate triangle primitives with adjacency.vulkan specifies a series of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-line-strips-with-adjacency(connected line primitives with adjacency6, with consecutive primitives sharing three vertices.vulkan specifies a series of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-line-lists-with-adjacency'separate line primitives with adjacency.vulkan specifies a series of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-triangle-fansconnected triangle primitives6 with all triangles sharing a common vertex. If the VK_KHR_portability_subset extension is enabled, and :: triangleFans is /, then triangle fans are not supported by the implementation, and  must not be used.vulkan specifies a series of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-triangle-stripsconnected triangle primitives- with consecutive triangles sharing an edge.vulkan specifies a series of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-triangle-listsseparate triangle primitives.vulkan specifies a series of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-line-stripsconnected line primitives* with consecutive lines sharing a vertex.vulkan specifies a series of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-line-listsseparate line primitives.vulkan specifies a series of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-point-listsseparate point primitives. [[None( #$&'(./0289:<>?kvulkan2VkPolygonMode - Control polygon rasterization mode DescriptionThese modes affect only the final rasterization of polygons: in particular, a polygon@s vertices are shaded and the polygon is clipped and possibly culled before these modes are applied.See Also8vulkan specifies that polygons are rendered using polygon rasterization rules, modified to consider a sample within the primitive if the sample location is inside the axis-aligned bounding box of the triangle after projection. Note that the barycentric weights used in attribute interpolation can extend outside the range [0,1] when these primitives are shaded. Special treatment is given to a sample position on the boundary edge of the bounding box. In such a case, if two rectangles lie on either side of a common edge (with identical endpoints) on which a sample position lies, then exactly one of the triangles must produce a fragment that covers that sample during rasterization.Polygons rendered in  mode may be clipped by the frustum or by user clip planes. If clipping is applied, the triangle is culled rather than clipped.4Area calculation and facingness are determined for $ mode using the triangle@s vertices.vulkan6 specifies that polygon vertices are drawn as points.vulkan: specifies that polygon edges are drawn as line segments.vulkan specifies that polygons are rendered using the polygon rasterization rules in this section. None( #$&'(./0289:<>?m2vulkan?n^vulkan?VkPipelineVertexInputStateCreateFlags - Reserved for future use Description is a bitmask type for setting a mask, but is currently reserved for future use.See Also8None( #$&'(./0289:<>?ovulkanVkPipelineTessellationStateCreateFlags - Reserved for future use Description is a bitmask type for setting a mask, but is currently reserved for future use.See Also8 None( #$&'(./0289:<>?Yvulkan? vulkanVkPipelineShaderStageCreateFlagBits - Bitmask controlling how a pipeline shader stage is created DescriptionNoteIf  and  are specified and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-max-subgroup-sizeminSubgroupSize does not equal  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-max-subgroup-sizemaxSubgroupSize and no  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-required-subgroup-sizerequired subgroup size is specified, then the only way to guarantee that the 'X' dimension of the local workgroup size is a multiple of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-sgs SubgroupSize is to make it a multiple of maxSubgroupSize. Under these conditions, you are guaranteed full subgroups but not any particular subgroup size.See Alsovulkan specifies that the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-sgs SubgroupSize may vary in the shader stage.vulkan$ specifies that the subgroup sizes must? be launched with all invocations active in the compute stage.None( #$&'(./0289:<>?KvulkanVkPipelineRasterizationStateCreateFlags - Reserved for future use Description is a bitmask type for setting a mask, but is currently reserved for future use.See Also8None( #$&'(./0289:<>?wvulkan?VkPipelineMultisampleStateCreateFlags - Reserved for future use Description is a bitmask type for setting a mask, but is currently reserved for future use.See Also8None( #$&'(./0289:<>?vulkan5VkPipelineLayoutCreateFlags - Reserved for future use Description is a bitmask type for setting a mask, but is currently reserved for future use.See Also:None( #$&'(./0289:<>?vulkanVkPipelineInputAssemblyStateCreateFlags - Reserved for future use Description is a bitmask type for setting a mask, but is currently reserved for future use.See Also8None( #$&'(./0289:<>?vulkan;VkPipelineDynamicStateCreateFlags - Reserved for future use Description is a bitmask type for setting a mask, but is currently reserved for future use.See Also8None( #$&'(./0289:<>?vulkanVkPipelineDepthStencilStateCreateFlags - Reserved for future use Description is a bitmask type for setting a mask, but is currently reserved for future use.See Also8None( #$&'(./0289:<>?vulkanVkPipelineCreateFlagBits - Bitmask controlling how a pipeline is created Description specifies that the created pipeline will not be optimized. Using this flag may3 reduce the time taken to create the pipeline. specifies that the pipeline to be created is allowed to be the parent of a pipeline that will be created in a subsequent pipeline creation call. specifies that the pipeline to be created will be a child of a previously created parent pipeline.= specifies that any shader input variables decorated as  ViewIndex; will be assigned values as if they were decorated as  DeviceIndex.K ( specifies that a compute pipeline can be used with K % with a non-zero base workgroup. specifies that a pipeline is created with all shaders in the deferred state. Before using the pipeline the application must call   exactly once on each shader in the pipeline before using the pipeline. specifies that the shader compiler should capture statistics for the pipeline executables produced by the compile process which can) later be retrieved by calling  . Enabling this flag must1 not affect the final compiled pipeline but may disable pipeline caching or otherwise affect pipeline creation time. specifies that the shader compiler should capture the internal representations of pipeline executables produced by the compile process which can) later be retrieved by calling  . Enabling this flag must1 not affect the final compiled pipeline but may disable pipeline caching or otherwise affect pipeline creation time." specifies that the pipeline cannot) be used directly, and instead defines a pipeline library that can1 be combined with other pipelines using the < structure. This is available in ray tracing pipelines. specifies that an any-hit shader will always be present when an any-hit shader would be executed. A NULL any-hit shader is an any-hit shader which is effectively  , such as from a shader group consisting entirely of zeros. specifies that a closest hit shader will always be present when a closest hit shader would be executed. A NULL closest hit shader is a closest hit shader which is effectively  , such as from a shader group consisting entirely of zeros. specifies that a miss shader will always be present when a miss shader would be executed. A NULL miss shader is a miss shader which is effectively  , such as from a shader group consisting entirely of zeros. specifies that an intersection shader will always be present when an intersection shader would be executed. A NULL intersection shader is an intersection shader which is effectively  , such as from a shader group consisting entirely of zeros. specifies that triangle primitives will be skipped during traversal using  OpTraceRayKHR. specifies that AABB primitives will be skipped during traversal using  OpTraceRayKHR.. specifies that the shader group handles can be saved and reused on a subsequent run (e.g. for trace capture and replay). specifies that the pipeline can be used in combination with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#device-generated-commands. specifies that pipeline creation will fail if a compile is required for creation of a valid 0  object; % : will be returned by pipeline creation, and the 0  will be set to .'When creating multiple pipelines,  specifies that control will be returned to the application on failure of the corresponding pipeline rather than continuing to create additional pipelines.4 specifies that the pipeline is allowed to use OpTraceRayMotionNV.It is valid to set both  and . This allows a pipeline to be both a parent and possibly a child in a pipeline hierarchy. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-pipeline-derivativesPipeline Derivatives for more information.See Also+None( #$&'(./0289:<>?Avulkan>VkPipelineColorBlendStateCreateFlags - Reserved for future use Description is a bitmask type for setting a mask, but is currently reserved for future use.See Also8None( #$&'(./0289:<>?Zvulkan?vulkanVkPipelineCacheCreateFlagBits - Bitmask specifying the behavior of the pipeline cacheSee Alsovulkan7 specifies that all commands that modify the created 0 will be  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-threadingbehaviorexternally synchronized . When set, the implementation may skip any unnecessary processing needed to support simultaneous modification from multiple threads where allowed.None( #$&'(./0289:<>?XvulkanVkPipelineBindPoint - Specify the bind point of a pipeline object to a command bufferSee AlsoJ, , , , 7 , d,  ,  ,  ,  vulkan. specifies binding as a ray tracing pipeline.vulkan) specifies binding as a compute pipeline.vulkan* specifies binding as a graphics pipeline.XXNone( #$&'(./0289:<>?vulkan6VkPhysicalDeviceType - Supported physical device types DescriptionThe physical device type is advertised for informational purposes only, and does not directly affect the operation of the system. However, the device type may correlate with other advertised properties or capabilities of the system, such as how many memory heaps there are.See Also  vulkan - the device is typically running on the same processors as the host.vulkan - the device is typically a virtual node in a virtualization environment.vulkan - the device is typically a separate processor connected to the host via an interlink.vulkan - the device is typically one embedded in or tightly coupled with the host.vulkan8 - the device does not match any other available types. None( #$&'(./0289:<>?WvulkanVkObjectType - Specify an enumeration to track object handle types Description'WVulkan Handle Type) Unknown/Undefined Handle 0 0  0 0 0 0 0 0 0 00 0 0 00 00 0 0 0 0 0 0 0 0 D D q qq q q q q qq q q q q W and Vulkan Handle RelationshipSee Also, , ,  ,  -W W  None( #$&'(./0289:<>?kvulkanVkPhysicalDeviceDeviceMemoryReportFeaturesEXT - Structure describing whether device memory report callback can be supported by an implementationMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkanVkDeviceMemoryReportCallbackDataEXT - Structure specifying parameters returned to the callback DescriptionmemoryObjectId= is used to avoid double-counting on the same memory object.6If an internally-allocated device memory object or a 0  cannot be exported, memoryObjectId must be unique in the 0.6If an internally-allocated device memory object or a 0  supports being exported, memoryObjectId must be unique system wide.*If an internal device memory object or a 0 3 is backed by an imported external memory object, memoryObjectId must be unique system wide.NoteThis structure should only be considered valid during the lifetime of the triggered callback.For   and   events,  objectHandle usually will not yet exist when the application or tool receives the callback.  objectHandle will only exist when the create or allocate call that triggered the event returns, and if the allocation or import ends up failing  objectHandle will not ever exist.Valid Usage (Implicit)See Also ,  , o, W, vulkanVkDeviceDeviceMemoryReportCreateInfoEXT - Register device memory report callbacks for a Vulkan device Description The callback may0 be called from multiple threads simultaneously. The callback must3 be called only once by the implementation when a   event occurs.NoteThe callback could be called from a background thread other than the thread calling the Vulkan commands.Valid Usage (Implicit)See Also ,  ,  vulkanPFN_vkDeviceMemoryReportCallbackEXT - Application-defined device memory report callback function Description The callback must' not make calls to any Vulkan commands.See Also vulkanVkDeviceMemoryReportEventTypeEXT - Events that can occur on a device memory objectSee Also vulkanflags" is 0 and reserved for future use. vulkantype is a  5 type specifying the type of event reported in this  structure. vulkanmemoryObjectId is the unique id for the underlying memory object as described below. vulkansize/ is the size of the memory object in bytes. If type is  ,   or  , size is a valid o value. Otherwise, size is undefined. vulkan objectType is a W value specifying the type of the object associated with this device memory report event. If type is  ,  ,  ,   or  ,  objectType is a valid W enum. Otherwise,  objectType is undefined. vulkan objectHandle is the object this device memory report event is attributed to. If type is  ,  ,   or  ,  objectHandle7 is a valid Vulkan handle of the type associated with  objectType as defined in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-object-types+VkObjectType and Vulkan Handle Relationship table. Otherwise,  objectHandle is undefined. vulkan heapIndex describes which memory heap this device memory allocation is made from. If type is   or  ,  heapIndex2 corresponds to one of the valid heaps from the   structure. Otherwise,  heapIndex is undefined. vulkanflags" is 0 and reserved for future use.>VUID-VkDeviceDeviceMemoryReportCreateInfoEXT-flags-zerobitmask flags must be 0 vulkanpfnUserCallback. is the application callback function to call.VUID-VkDeviceDeviceMemoryReportCreateInfoEXT-pfnUserCallback-parameter pfnUserCallback must be a valid   value vulkan pUserData+ is user data to be passed to the callback.VUID-VkDeviceDeviceMemoryReportCreateInfoEXT-pUserData-parameter  pUserData must be a pointer value vulkanfeatures-deviceMemoryReport deviceMemoryReport indicates whether the implementation supports the ability to register device memory report callbacks. vulkan  specifies this event corresponds to the failed allocation of an internal device memory object or a 0 . vulkan  specifies this event is the release of an imported external memory object. vulkan  specifies this event corresponds to the import of an external memory object. vulkan  specifies this event corresponds to the deallocation of an internally-allocated device memory object or a 0 . vulkan  specifies this event corresponds to the allocation of an internal device memory object or a 0 .    %   None( #$&'(./0289:<>?կ vulkanVkMemoryPropertyFlagBits - Bitmask specifying properties for a memory type Description(For any memory allocated with both the   and the  , host or device accesses also perform automatic memory domain transfer operations, such that writes are always automatically available and visible to both host and device memory domains.NoteDevice coherence is a useful property for certain debugging use cases (e.g. crash analysis, where performing separate coherence actions could mean values are not reported correctly). However, device coherent accesses may be slower than equivalent accesses without device coherence, particularly if they are also device uncached. For device uncached memory in particular, repeated accesses to the same or neighbouring memory locations over a short time period (e.g. within a frame) may be slower than it would be for the equivalent cached memory type. As such, it is generally inadvisable to use device coherent or device uncached memory except when really needed.See Also vulkan  bit specifies that the memory type only allows device access to the memory, and allows protected queue operations to access the memory. Memory types must not have   set and any of   set, or   set, or   set. vulkan  bit specifies that device accesses to allocations of this memory type are automatically made available and visible. vulkan  bit specifies that memory allocated with this type is not cached on the device. Uncached device memory is always device coherent. vulkan  bit specifies that external devices can access this memory directly. vulkan  bit specifies that the memory type only allows device access to the memory. Memory types must not have both   and  1 set. Additionally, the object@s backing memory may< be provided by the implementation lazily as specified in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-device-lazy_allocationLazily Allocated Memory. vulkan  bit specifies that memory allocated with this type is cached on the host. Host memory accesses to uncached memory are slower than to cached memory, however uncached memory is always host coherent. vulkan 8 bit specifies that the host cache management commands 4  and 4  are not needed to flush host writes to the device or make device writes visible to the host, respectively. vulkan 5 bit specifies that memory allocated with this type can" be mapped for host access using 4. vulkan  bit specifies that memory allocated with this type is the most efficient for device access. This property will be set if and only if the memory type belongs to a heap with the   set.  None( #$&'(./0289:<>?Vvulkan*VkMemoryMapFlags - Reserved for future use DescriptionV is a bitmask type for setting a mask, but is currently reserved for future use.See Also4V V None( #$&'(./0289:<>? vulkanVkMemoryHeapFlagBits - Bitmask specifying attribute flags for a heapSee Also vulkan  specifies that in a logical device representing more than one physical device, there is a per-physical device instance of the heap memory. By default, an allocation from such a heap will be replicated to each physical device@s instance of the heap. vulkan  specifies that the heap corresponds to device local memory. Device local memory may have different performance characteristics than host local memory, and may* support different memory property flags.  None( #$&'(./0289:<>?ޅUvulkan*VkLogicOp - Framebuffer logical operations DescriptionThe logical operations supported by Vulkan are summarized in the following table in which is bitwise invert,D is bitwise and,D is bitwise or,E is bitwise exclusive or,s is the fragment@s Rs0, Gs0, Bs0 or As0 component value for the fragment output corresponding to the color attachment being updated, and9d is the color attachment@s R, G, B or A component value:Mode Operation!0!s D d s D  d s  s D d d s E d s D d   (s D d)   (s E d)  d s D  d  s  s D d   (s D d) all 1sLogical OperationsThe result of the logical operation is then written to the color attachment as controlled by the component write mask, described in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blendoperationsBlend Operations.See Also8,  U!! "U!! !! None( #$&'(./0289:<>?!vulkan*VkInternalAllocationType - Allocation typeSee Also. , . !vulkan! specifies that the allocation is intended for execution by the host.!!!!!!!.None( #$&'(./0289:<>?amvulkanPFN_vkVoidFunction - Placeholder function pointer type returned by queriesSee Also ,  !vulkan=PFN_vkFreeFunction - Application-defined memory free function DescriptionpMemory may be NULL, which the callback must handle safely. If pMemory is non-NULL, it must' be a pointer previously allocated by  pfnAllocation or pfnReallocation. The application should free this memory.See Also!vulkanPFN_vkAllocationFunction - Application-defined memory allocation function DescriptionIf  pfnAllocation0 is unable to allocate the requested memory, it must return NULL'. If the allocation was successful, it must return a valid pointer to memory allocation containing at least size8 bytes, and with the pointer value being a multiple of  alignment.NoteCorrect Vulkan operation cannot< be assumed if the application does not follow these rules. For example,  pfnAllocation (or pfnReallocation) could cause termination of running Vulkan instance(s) on a failed allocation for debugging purposes, either directly or indirectly. In these circumstances, it cannot+ be assumed that any part of any affected 0/ objects are going to operate correctly (even  ), and the application must ensure it cleans up properly via other means (e.g. process termination).If  pfnAllocation returns NULL, and if the implementation is unable to continue correct processing of the current command without the requested allocation, it must. treat this as a runtime error, and generate %  at the appropriate time for the command in which the condition was detected, as described in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Return Codes.If the implementation is able to continue correct processing of the current command without the requested allocation, then it may do so, and must not generate % ( as a result of this failed allocation.See Also!vulkanPFN_vkReallocationFunction - Application-defined memory reallocation function DescriptionpfnReallocation must- return an allocation with enough space for size bytes, and the contents of the original allocation from bytes zero to min(original size, new size) - 1 must. be preserved in the returned allocation. If size is larger than the old size, the contents of the additional space are undefined. If satisfying these requirements involves creating a new allocation, then the old allocation should be freed.If  pOriginal is NULL, then pfnReallocation must# behave equivalently to a call to !* with the same parameter values (without  pOriginal).If size is zero, then pfnReallocation must# behave equivalently to a call to ! with the same  pUserData parameter value, and pMemory equal to  pOriginal.If  pOriginal is non-NULL, the implementation must ensure that  alignment is equal to the  alignment used to originally allocate  pOriginal.If this function fails and  pOriginal is non-NULL the application must not free the old allocation.pfnReallocation must follow the same  &vkAllocationFunction_return_rules.htmlrules for return values as.See Also!vulkanPFN_vkInternalFreeNotification - Application-defined memory free notification function Description described link:https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-host-allocation-scope[here^].See Also!vulkanPFN_vkInternalAllocationNotification - Application-defined memory allocation notification function Description(This is a purely informational callback.See Also mn!!!!!!!!!! !!!!!!!!!!mnNone( #$&'(./0289:<>?!vulkan/VkInstanceCreateFlags - Reserved for future use Description! is a bitmask type for setting a mask, but is currently reserved for future use.See Also !!!!None( #$&'(./0289:<>?Tvulkan*VkIndexType - Type of index buffer indicesSee Also, , , , !vulkan!( specifies that no indices are provided.!vulkan!; specifies that indices are 8-bit unsigned integer values.!vulkan!< specifies that indices are 32-bit unsigned integer values.!vulkan!< specifies that indices are 16-bit unsigned integer values.T!!!!! T!!!!!!!!!None( #$&'(./0289:<>?r!vulkan"VkImageViewType - Image view typesSee Also2,  !!!!!!!!!!!!!!!!!!!!!!!!!None( #$&'(./0289:<>?!vulkanVkImageViewCreateFlagBits - Bitmask specifying additional parameters of an image viewSee Also!!vulkan! specifies that the fragment density map will be read by device during   !vulkan! specifies that the fragment density map will be read by the host during  for the primary command buffer that the render pass is recorded into!!!!!!!!!!!!None( #$&'(./0289:<>? RvulkanVkImageUsageFlagBits - Bitmask specifying intended usage of an imageSee AlsoS!vulkan! specifies that the image can be used to create a 0 suitable for use as a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragmentdensitymapopsfragment density map image.!vulkan! specifies that the image can be used to create a 0 suitable for use as a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment or https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-shading-rate-imageshading rate image!vulkan! specifies that the image can be used to create a 0 suitable for occupying 0  slot of type  ; be read from a shader as an input attachment; and be used as an input attachment in a framebuffer.!vulkan! specifies that the memory bound to this image will be allocated with the   (see  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory for more detail). This bit can be set for any image that can be used to create a 0 suitable for use as a color, resolve, depth/stencil, or input attachment.!vulkan! specifies that the image can be used to create a 0 suitable for use as a depth/stencil or depth/stencil resolve attachment in a 0 .!vulkan! specifies that the image can be used to create a 09 suitable for use as a color or resolve attachment in a 0 .!vulkan! specifies that the image can be used to create a 0 suitable for occupying a 0  slot of type  .!vulkan! specifies that the image can be used to create a 0 suitable for occupying a 0  slot either of type   or  , and be sampled by a shader.!vulkan! specifies that the image can3 be used as the destination of a transfer command.!vulkan! specifies that the image can. be used as the source of a transfer command.R!!!!!!!!!!!!SSR!!!!!!!!!!!!!!!!!!!!!!!aNone( #$&'(./0289:<>?vulkanVkImageStencilUsageCreateInfo - Specify separate usage flags for the stencil aspect of a depth-stencil image DescriptionIf the pNext chain of 1 includes a  structure, then that structure includes the usage flags specific to the stencil aspect of the image for an image with a depth-stencil format.This structure specifies image usages which only apply to the stencil aspect of a depth/stencil format image. When this structure is included in the pNext chain of 1#, the stencil aspect of the image must only be used as specified by  stencilUsage-. When this structure is not included in the pNext chain of 1", the stencil aspect of an image must only be used as specified by 1::usage. Use of other aspects of an image are unaffected by this structure.This structure can also be included in the pNext chain of U to query additional capabilities specific to image creation parameter combinations including a separate set of usage flags for the stencil aspect of the image using U .. When this structure is not included in the pNext chain of U then the implicit value of  stencilUsage matches that of U::usage. Valid Usage5VUID-VkImageStencilUsageCreateInfo-stencilUsage-02539 If  stencilUsage includes   , it must" not include bits other than   or  Valid Usage (Implicit).VUID-VkImageStencilUsageCreateInfo-sType-sType sType must be  9VUID-VkImageStencilUsageCreateInfo-stencilUsage-parameter  stencilUsage must be a valid combination of   values?VUID-VkImageStencilUsageCreateInfo-stencilUsage-requiredbitmask  stencilUsage must not be 0See AlsoS, !vulkan stencilUsage is a bitmask of   describing the intended usage of the stencil aspect of the image.!! !!  None( #$&'(./0289:<>?Y!!!!!!!!!!!!None( #$&'(./0289:<>?Qvulkan3VkImageType - Specifies the type of an image objectSee Also1, U, U,  ,  , @ !vulkan!% specifies a three-dimensional image.!vulkan!# specifies a two-dimensional image.!vulkan!# specifies a one-dimensional image.Q!!!!Q!!!!!!!None( #$&'(./0289:<>?PvulkanVkImageTiling - Specifies the tiling arrangement of data in an imageSee Also1, U, U,  ,  , @ !vulkan!5 indicates that the image@s tiling is defined by a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-drm-format-modifierLinux DRM format modifier5. The modifier is specified at image creation with  or , and can be queried with  .!vulkan! specifies linear tiling (texels are laid out in memory in row-major order, possibly with some padding on each row).!vulkan! specifies optimal tiling (texels are laid out in an implementation-dependent arrangement, for more efficient memory access).P!!!!P!!!!!!!None( #$&'(./0289:<>?6Ovulkan6VkImageLayout - Layout of image and image subresources Description:The type(s) of device access supported by each layout are:The layout of each image subresource is not a state of the image subresource itself, but is rather a property of how the data in memory is organized, and thus for each mechanism of accessing an image in the API the application must specify a parameter or structure member that indicates which image layout the image subresource(s) are considered to be in when the image will be accessed. For transfer commands, this is a parameter to the command (see  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies). For use as a framebuffer attachment, this is a member in the substructures of the 7 (see  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass Render Pass:). For use in a descriptor set, this is a member in the    structure (see  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-updates).See Also7, d, i, 7 , d, i, , , , ,   , 1, 6, , ,  ,  ,  ,  ,  ,  ,  ,  ,  "vulkan" specifies a layout for depth/stencil format images allowing read and write access to the stencil aspect as a stencil attachment, and read only access to the depth aspect as a depth attachment or in shaders as a sampled image, combined image/sampler, or input attachment. It is equivalent to " and "."vulkan" specifies a layout for depth/stencil format images allowing read and write access to the depth aspect as a depth attachment, and read only access to the stencil aspect as a stencil attachment or in shaders as a sampled image, combined image/sampler, or input attachment. It is equivalent to " and "."vulkan" specifies a layout for the depth aspect of a depth/stencil format image allowing read and write access as a depth attachment."vulkan" specifies a layout for the depth aspect of a depth/stencil format image allowing read-only access as a depth attachment or in shaders as a sampled image, combined image/sampler, or input attachment."vulkan" specifies a layout for the stencil aspect of a depth/stencil format image allowing read and write access as a stencil attachment."vulkan" specifies a layout for the stencil aspect of a depth/stencil format image allowing read-only access as a stencil attachment or in shaders as a sampled image, combined image/sampler, or input attachment."vulkan" must only be used for presenting a presentable image for display. A swapchain@s image must1 be transitioned to this layout before calling , and must7 be transitioned away from this layout after calling  ."vulkan"3 is valid only for shared presentable images, and must* be used for any usage the image supports."vulkan" must9 only be used as a fragment density map attachment in a 0 . This layout is valid only for image subresources of images created with the   usage bit enabled."vulkan" must only be used as a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-shading-rate-imageshading rate image. This layout is valid only for image subresources of images created with the   usage bit enabled."vulkan" specifies a layout allowing read only access as an attachment, or in shaders as a sampled image, combined image/sampler, or input attachment."vulkan" specifies a layout that must only be used with attachment accesses in the graphics pipeline."vulkan"> specifies that an image@s memory is in a defined layout and can be populated by data, but that it has not yet been initialized by the driver. Image memory cannot0 be transitioned into this layout. This layout can be used as the  initialLayout member of 1. This layout is intended to be used as the initial layout for an image whose contents are written by the host, and hence the data can be written to memory immediately, without first executing a layout transition. Currently, " is only useful with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-linear-resourcelinear= images because there is not a standard layout defined for   images."vulkan" must only be used as a destination image of a transfer command. This layout is valid only for image subresources of images created with the   usage bit enabled."vulkan" must only be used as a source image of a transfer command (see the definition of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-transfer). This layout is valid only for image subresources of images created with the   usage bit enabled."vulkan" specifies a layout allowing read-only access in a shader as a sampled image, combined image/sampler, or input attachment. This layout is valid only for image subresources of images created with the   or   usage bits enabled."vulkan" specifies a layout for both the depth and stencil aspects of a depth/stencil format image allowing read only access as a depth/stencil attachment or in shaders as a sampled image, combined image/sampler, or input attachment. It is equivalent to " and "."vulkan" specifies a layout for both the depth and stencil aspects of a depth/stencil format image allowing read and write access as a depth/stencil attachment. It is equivalent to " and "."vulkan" must5 only be used as a color or resolve attachment in a 0 . This layout is valid only for image subresources of images created with the   usage bit enabled."vulkan"% supports all types of device access."vulkan"5 specifies that the layout is unknown. Image memory cannot/ be transitioned into this layout. This layout can be used as the  initialLayout member of 1. This layout can be used in place of the current image layout in a layout transition, but doing so will cause the contents of the image@s memory to be undefined.O"""""""""""""""""""""",O"""""""""""""""""""""""""""""""""""""""""""iNone( #$&'(./0289:<>?BvulkanVkPhysicalDeviceSeparateDepthStencilLayoutsFeatures - Structure describing whether the implementation can do depth and stencil image barriers separatelyMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkanVkAttachmentReferenceStencilLayout - Structure specifying an attachment descriptionValid Usage (Implicit)See AlsoO, vulkanVkAttachmentDescriptionStencilLayout - Structure specifying an attachment descriptionValid Usage (Implicit)See AlsoO, "vulkanstencilInitialLayout is the layout the stencil aspect of the attachment image subresource will be in when a render pass instance begins.VUID-VkAttachmentDescriptionStencilLayout-stencilInitialLayout-03308 stencilInitialLayout must not be ", ", ", ", ", ", or "VUID-VkAttachmentDescriptionStencilLayout-stencilInitialLayout-parameter stencilInitialLayout must be a valid O value"vulkanstencilFinalLayout is the layout the stencil aspect of the attachment image subresource will be transitioned to when a render pass instance ends.VUID-VkAttachmentDescriptionStencilLayout-stencilFinalLayout-03309 stencilFinalLayout must not be ", ", ", ", ", ", or "VUID-VkAttachmentDescriptionStencilLayout-stencilFinalLayout-03310 stencilFinalLayout must not be " or "VUID-VkAttachmentDescriptionStencilLayout-stencilFinalLayout-parameter stencilFinalLayout must be a valid O value"vulkan stencilLayout is a O value specifying the layout the stencil aspect of the attachment uses during the subpass.;VUID-VkAttachmentReferenceStencilLayout-stencilLayout-03318  stencilLayout must not be ", ", ", ", ", ", ", ", ", or "?VUID-VkAttachmentReferenceStencilLayout-stencilLayout-parameter  stencilLayout must be a valid O value"vulkan.extension-features-separateDepthStencilLayouts separateDepthStencilLayouts2 indicates whether the implementation supports a 6. for a depth/stencil image with only one of   or   set, and whether ", ", ", or " can be used.O""""""""""""""""""""""""""""" """""""O"""""""""""""""""""""""""""""""""""""""""""  None( #$&'(./0289:<>?O""""""""""""""""""""""""""""None( #$&'(./0289:<>?gCMvulkanVkImageCreateFlagBits - Bitmask specifying additional parameters of an image DescriptionSee  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-sparseresourcefeaturesSparse Resource Features and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-physicalfeaturesSparse Physical Device Features for more details.See AlsoN"vulkan" specifies that two images created with the same creation parameters and aliased to the same memory can interpret the contents of the memory consistently with each other, subject to the rules described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasingMemory Aliasing< section. This flag further specifies that each plane of a disjoint image can share an in-memory non-linear representation with single-plane images, and that a single-plane image can share an in-memory non-linear representation with a plane of a multi-planar disjoint image, according to the rules in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes . If the pNext chain includes a P or  structure whose  handleTypes member is not 0, it is as if " is set."vulkan" specifies that the image can' be used with a non-zero value of the splitInstanceBindRegionCount member of a L structure passed into H . This flag also has the effect of making the image use the standard sparse image block dimensions."vulkan" specifies that the image can be used to create a 0 of type   or  ."vulkan"6 specifies that the image having a compressed format can be used to create a 0 with an uncompressed format where each texel in the image view corresponds to a compressed texel block of the image."vulkan" specifies that the image can be created with usage flags that are not supported for the format the image is created with but are supported for at least one format a 0 created from the image can have."vulkan"0 specifies that the image is a protected image."vulkan"! specifies that an image with a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format must have each plane separately bound to memory, rather than having a single memory binding for the whole image; the presence of this bit distinguishes a disjoint image$ from an image without this bit set."vulkan" specifies that the image is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-images-corner-sampledcorner-sampled image."vulkan"? specifies that an image with a depth or depth/stencil format can be used with custom sample locations when used as a depth/stencil attachment."vulkan" specifies that an image can" be in a subsampled format which may be more optimal when written as an attachment by a render pass that has a fragment density map attachment. Accessing a subsampled image has additional considerations:Image data read as an image sampler will have undefined values if the sampler was not created with flags containing   or was not sampled through the use of a combined image sampler with an immutable sampler in   .Image data read with an input attachment will have undefined values if the contents were not written as an attachment in an earlier subpass of the same render pass.Image data read as an image sampler in the fragment shader will be additionally be read by the device during    if  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-subsampledCoarseReconstructionEarlyAccess+::subsampledCoarseReconstructionEarlyAccess is /' and the sampler was created with flags containing  .Image data read with load operations are resampled to the fragment density of the render pass if  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-subsampledLoads::subsampledLoads is /5. Otherwise, values of image data are undefined.Image contents outside of the render area take on undefined values if the image is stored as a render pass attachment."vulkan" specifies that the image can be used to create a 0 of type   or  ."vulkan" specifies that the image can be used to create a 0/ with a different format from the image. For  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar formats, " specifies that a 0 can be created of a plane of the image."vulkan" specifies that the image will be backed using sparse memory binding with memory ranges that might also simultaneously be backing another image (or another portion of the same image). Images created with this flag must also be created with the " flag."vulkan" specifies that the image can be partially backed using sparse memory binding. Images created with this flag must also be created with the " flag."vulkan" specifies that the image will be backed using sparse memory binding.M""""""""""""""""N!NM"""""""""""""""""""""""""""""""LNone( #$&'(./0289:<>?6vulkanVkBindImageMemoryDeviceGroupInfo - Structure specifying device within a group to bind to DescriptionIf the pNext chain of H includes a  structure, then that structure determines how memory is bound to images across multiple devices in a device group.If deviceIndexCount/ is greater than zero, then on device index i image is attached to the instance of the memory on the physical device with device index pDeviceIndices[i].Let N be the number of physical devices in the logical device. If splitInstanceBindRegionCount is greater than zero, then pSplitInstanceBindRegions is a pointer to an array of N2 rectangles, where the image region specified by the rectangle at element i*N+j in resource instance i is bound to the memory instance j. The blocks of the memory that are bound to each sparse image block region use an offset in memory, relative to  memoryOffset, computed as if the whole image was being bound to a contiguous range of memory. In other words, horizontally adjacent image blocks use consecutive blocks of memory, vertically adjacent image blocks are separated by the number of bytes per block multiplied by the width in blocks of image<, and the block at (0,0) corresponds to memory starting at  memoryOffset.If splitInstanceBindRegionCount and deviceIndexCount= are zero and the memory comes from a memory heap with the   bit set, then it is as if pDeviceIndices contains consecutive indices from zero to the number of physical devices in the logical device, minus one. In other words, by default each physical device attaches to its own instance of the memory.If splitInstanceBindRegionCount and deviceIndexCount are zero and the memory comes from a memory heap without the   bit set, then it is as if pDeviceIndices contains an array of zeros. In other words, by default each physical device attaches to instance zero. Valid UsageVUID-VkBindImageMemoryDeviceGroupInfo-pDeviceIndices-parameter If deviceIndexCount is not 0, pDeviceIndices must( be a valid pointer to an array of deviceIndexCount uint32_t valuesVUID-VkBindImageMemoryDeviceGroupInfo-pSplitInstanceBindRegions-parameter If splitInstanceBindRegionCount is not 0, pSplitInstanceBindRegions must( be a valid pointer to an array of splitInstanceBindRegionCount r structuresSee Alsor, vulkanVkBindBufferMemoryDeviceGroupInfo - Structure specifying device within a group to bind to DescriptionIf the pNext chain of H includes a  structure, then that structure determines how memory is bound to buffers across multiple devices in a device group.If deviceIndexCount is greater than zero, then on device index i the buffer is attached to the instance of memory+ on the physical device with device index pDeviceIndices[i].If deviceIndexCount is zero and memory% comes from a memory heap with the   bit set, then it is as if pDeviceIndices contains consecutive indices from zero to the number of physical devices in the logical device, minus one. In other words, by default each physical device attaches to its own instance of memory.If deviceIndexCount is zero and memory( comes from a memory heap without the   bit set, then it is as if pDeviceIndices contains an array of zeros. In other words, by default each physical device attaches to instance zero. Valid Usage=VUID-VkBindBufferMemoryDeviceGroupInfo-deviceIndexCount-01606 deviceIndexCount must either be zero or equal to the number of physical devices in the logical device;VUID-VkBindBufferMemoryDeviceGroupInfo-pDeviceIndices-01607 All elements of pDeviceIndices must be valid device indicesValid Usage (Implicit)2VUID-VkBindBufferMemoryDeviceGroupInfo-sType-sType sType must be  ?VUID-VkBindBufferMemoryDeviceGroupInfo-pDeviceIndices-parameter If deviceIndexCount is not 0, pDeviceIndices must( be a valid pointer to an array of deviceIndexCount uint32_t valuesSee Also"vulkanpDeviceIndices, is a pointer to an array of device indices."vulkanpSplitInstanceBindRegions is a pointer to an array of r structures describing which regions of the image are attached to each instance of memory."vulkanpDeviceIndices, is a pointer to an array of device indices.M""""""""""""""""N""""" """""  M"""""""""""""""""""""""""""""""NNone( #$&'(./0289:<>? "vulkanVkImageAspectFlagBits - Bitmask specifying which aspects of an image are included in a viewSee AlsoY, ", Y"vulkan" specifies plane 0 of a  multi-planar image format."vulkan" specifies plane 1 of a  multi-planar image format."vulkan" specifies plane 2 of a  multi-planar image format."vulkan" specifies  memory plane 0."vulkan" specifies  memory plane 1."vulkan" specifies  memory plane 2."vulkan" specifies  memory plane 3."vulkan"* specifies the metadata aspect, used for  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememorysparse resource operations."vulkan" specifies the stencil aspect."vulkan" specifies the depth aspect."vulkan" specifies the color aspect."""""""""""""""""""""""""""""""""""""""VNone( #$&'(./0289:<>? vulkanVkRenderPassInputAttachmentAspectCreateInfo - Structure specifying, for a given subpass/input attachment pair, which aspect can be read. Description0To specify which aspects of an input attachment can be read, add a  structure to the pNext chain of the 7 structure:An application can access any aspect of an input attachment that does not have a specified aspect mask in the pAspectReferences# array. Otherwise, an application must not access aspect(s) of an input attachment other than those in its specified aspect mask.Valid Usage (Implicit)See Also, vulkanVkPipelineTessellationDomainOriginStateCreateInfo - Structure specifying the orientation of the tessellation domain DescriptionIf the  structure is included in the pNext chain of 8, it controls the origin of the tessellation domain. If this structure is not present, it is as if  domainOrigin was .Valid Usage (Implicit)See Also, vulkanVkPhysicalDevicePointClippingProperties - Structure describing the point clipping behavior supported by an implementation DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.Valid Usage (Implicit)See Also, vulkanVkInputAttachmentAspectReference - Structure specifying a subpass/input attachment pair and an aspect mask that can be read. DescriptionThis structure specifies an aspect mask for a specific input attachment of a specific subpass in the render pass.subpass and inputAttachmentIndex index into the render pass as: pCreateInfo->pSubpasses[subpass].pInputAttachments[inputAttachmentIndex]Valid Usage (Implicit)See Also", vulkanVkImageViewUsageCreateInfo - Specify the intended usage of an image view Description#When this structure is chained to 2 the usage field overrides the implicit usage parameter inherited from image creation time and its value is used instead for the purposes of determining the valid usage conditions of 2.Valid Usage (Implicit)See AlsoS, #vulkan domainOrigin is a  value controlling the origin of the tessellation domain space.VUID-VkPipelineTessellationDomainOriginStateCreateInfo-domainOrigin-parameter  domainOrigin must be a valid  value#vulkanusage is a bitmask of  . specifying allowed usages of the image view./VUID-VkImageViewUsageCreateInfo-usage-parameter usage must be a valid combination of   values5VUID-VkImageViewUsageCreateInfo-usage-requiredbitmask usage must not be 0#vulkanextension-limits-pointClipping pointClippingBehavior is a  value specifying the point clipping behavior supported by the implementation.#vulkanpAspectReferences is a pointer to an array of aspectReferenceCount : structures containing a mask describing which aspect(s) can be accessed for a given input attachment within a given subpass.VUID-VkRenderPassInputAttachmentAspectCreateInfo-pAspectReferences-parameter pAspectReferences must$ be a valid pointer to an array of aspectReferenceCount valid  structures#vulkansubpass is an index into the  pSubpasses array of the parent 7 structure.#vulkaninputAttachmentIndex is an index into the pInputAttachments of the specified subpass.#vulkan aspectMask is a mask of which aspect(s) can+ be accessed within the specified subpass.6VUID-VkInputAttachmentAspectReference-aspectMask-01964  aspectMask must not include  6VUID-VkInputAttachmentAspectReference-aspectMask-02250  aspectMask must not include &VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT for any index i:VUID-VkInputAttachmentAspectReference-aspectMask-parameter  aspectMask must be a valid combination of   valuesVUID-VkInputAttachmentAspectReference-aspectMask-requiredbitmask  aspectMask must not be 0M""""""""""""""""NO""""""""""""""""""""""############  ############O"""""""""""""""""""""""""""""""""""""""""""  M"""""""""""""""""""""""""""""""NNone( #$&'(./0289:<>?##############################################None( #$&'(./0289:<>?DLvulkan8VkFrontFace - Interpret polygon front-facing orientation DescriptionAny triangle which is not front-facing is back-facing, including zero-area triangles.See Also8,  #vulkan# specifies that a triangle with negative area is considered front-facing.#vulkan# specifies that a triangle with positive area is considered front-facing.L###L#####None( #$&'(./0289:<>?#vulkanVkFramebufferCreateFlagBits - Bitmask specifying framebuffer propertiesSee Also##vulkan# specifies that image views are not specified, and only attachment compatibility information will be provided via a h structure.#########None( #$&'(./0289:<>?#vulkanVkFormatFeatureFlagBits - Bitmask specifying features supported by a buffer DescriptionThe following bits may be set in linearTilingFeatures, optimalTilingFeatures, and  ::drmFormatModifierTilingFeatures1, specifying that the features are supported by  VkImage.htmlimages or  VkImageView.html image views or  VkSamplerYcbcrConversion.html!sampler Y@CBCR conversion objects created with the queried  ::format:## specifies that an image view can be  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampledimage sampled from.## specifies that an image view can be used as a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage storage image.## specifies that an image view can: be used as storage image that supports atomic operations.## specifies that an image view can be used as a framebuffer color attachment and as an input attachment.## specifies that an image view can be used as a framebuffer color attachment that supports blending and as an input attachment.## specifies that an image view can be used as a framebuffer depth/stencil attachment and as an input attachment.# specifies that an image can be used as srcImage for the   and   commands.# specifies that an image can be used as dstImage for the   and   commands.# specifies that if # is also set, an image view can0 be used with a sampler that has either of  magFilter or  minFilter set to  , or  mipmapMode set to   . If #/ is also set, an image can be used as the srcImage to   and   with a filter of   . This bit must= only be exposed for formats that also support the # or #.If the format being queried is a depth/stencil format, this bit only specifies that the depth aspect (not the stencil aspect) of an image of this format supports linear filtering, and that linear filtering of the depth aspect is supported whether depth compare is enabled in the sampler or not. If this bit is not present, linear filtering with depth compare disabled is unsupported and linear filtering with depth compare enabled is supported, but may compute the filtered value in an implementation-dependent manner which differs from the normal rules of linear filtering. The resulting value must be in the range [0,1] and should be proportional to, or a weighted average of, the number of comparison passes or failures.# specifies that an image can) be used as a source image for  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy commands.# specifies that an image can. be used as a destination image for  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy commands and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clearsclear commands.# specifies 0 can8 be used as a sampled image with a min or max  . This bit must8 only be exposed for formats that also support the #.  specifies that 0 can0 be used with a sampler that has either of  magFilter or  minFilter set to  ., or be the source image for a blit with filter set to  . This bit must8 only be exposed for formats that also support the #. If the format being queried is a depth/stencil format, this only specifies that the depth aspect is cubic filterable.#$ specifies that an application can define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y@CBCR conversion using this format as a source, and that an image of this format can be used with a Y  xChromaOffset and/or  yChromaOffset of  . Otherwise both  xChromaOffset and  yChromaOffset must be  . If a format does not incorporate chroma downsampling (it is not a @422@ or @420@ format) but the implementation supports sampler Y@CBCR conversion for this format, the implementation must set #.#$ specifies that an application can define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y@CBCR conversion using this format as a source, and that an image of this format can be used with a Y  xChromaOffset and/or  yChromaOffset of  . Otherwise both  xChromaOffset and  yChromaOffset must be  . If neither # nor # is set, the application must not define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y@CBCR conversion$ using this format as a source.#$ specifies that an application can define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y@CBCR conversion) using this format as a source with  chromaFilter set to  .# specifies that the format can have different chroma, min, and mag filters.# specifies that reconstruction is explicit, as described in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-chroma-reconstruction. If this bit is not present, reconstruction is implicit by default.#$ specifies that reconstruction can0 be forcibly made explicit by setting Y::forceExplicitReconstruction to /1. If the format being queried supports # it must also support #.#* specifies that a multi-planar image can have the  3 set during image creation. An implementation must not set # for single-plane formats.## specifies that an image view can be used as a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachmentfragment density map attachment.## specifies that an image view can be used as a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment. An implementation must not set this feature for formats with numeric type other than *UINT , or set it as a buffer feature.The following bits may be set in bufferFeatures1, specifying that the features are supported by  VkBuffer.htmlbuffers or  VkBufferView.html buffer views created with the queried  ::format:# specifies that the format can& be used to create a buffer view that can be bound to a   descriptor.# specifies that the format can& be used to create a buffer view that can be bound to a   descriptor.#= specifies that atomic operations are supported on   with this format.# specifies that the format can1 be used as a vertex attribute format (8 ::format).# specifies that the format can9 be used as the vertex format when creating an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structureacceleration structure (:: vertexFormat). This format can also be used as the vertex format in host memory when doing  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#host-acceleration-structurehost acceleration structure builds.See Also##vulkan# specifies that an image can! be used as a source image for  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy commands.#vulkan# specifies that an image can& be used as a destination image for  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy commands and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clearsclear commands.#vulkan# specifies that an application can define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y@CBCR conversion using this format as a source, and that an image of this format can be used with a Y  xChromaOffset and/or  yChromaOffset of  . Otherwise both  xChromaOffset and  yChromaOffset must be  . If a format does not incorporate chroma downsampling (it is not a @422@ or @420@ format) but the implementation supports sampler Y@CBCR conversion for this format, the implementation must set #.#vulkan# specifies that an application can define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y@CBCR conversion% using this format as a source with  chromaFilter set to  .#vulkan# specifies that the format can have different chroma, min, and mag filters.#vulkan#> specifies that reconstruction is explicit, as described in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-chroma-reconstruction. If this bit is not present, reconstruction is implicit by default.#vulkan# specifies that reconstruction can' be forcibly made explicit by setting Y::forceExplicitReconstruction to /). If the format being queried supports # it must also support #.#vulkan#% specifies that a multi-planar image can have the  / set during image creation. An implementation must not set # for single-plane formats.#vulkan# specifies that an application can define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y@CBCR conversion using this format as a source, and that an image of this format can be used with a Y  xChromaOffset and/or  yChromaOffset of  . Otherwise both  xChromaOffset and  yChromaOffset must be  . If neither # nor # is set, the application must not define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y@CBCR conversion using this format as a source.#vulkan# specifies 0 can0 be used as a sampled image with a min or max   . This bit must4 only be exposed for formats that also support the #.#vulkan# specifies that the format can0 be used as the vertex format when creating an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structureacceleration structure (:: vertexFormat). This format can? also be used as the vertex format in host memory when doing  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#host-acceleration-structurehost acceleration structure builds.#vulkan# specifies that an image view can be used as a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachmentfragment density map attachment.#vulkan# specifies that an image view can be used as a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment. An implementation must not set this feature for formats with numeric type other than *UINT , or set it as a buffer feature.#vulkan# specifies that if # is also set, an image view can, be used with a sampler that has either of  magFilter or  minFilter set to  , or  mipmapMode set to  . If #+ is also set, an image can be used as the srcImage to   and   with a filter of   . This bit must5 only be exposed for formats that also support the # or #.If the format being queried is a depth/stencil format, this bit only specifies that the depth aspect (not the stencil aspect) of an image of this format supports linear filtering, and that linear filtering of the depth aspect is supported whether depth compare is enabled in the sampler or not. If this bit is not present, linear filtering with depth compare disabled is unsupported and linear filtering with depth compare enabled is supported, but may compute the filtered value in an implementation-dependent manner which differs from the normal rules of linear filtering. The resulting value must be in the range [0,1] and should be proportional to, or a weighted average of, the number of comparison passes or failures.#vulkan# specifies that an image can be used as dstImage for the   and   commands.#vulkan# specifies that an image can be used as srcImage for the   and   commands.#vulkan# specifies that an image view can be used as a framebuffer depth/stencil attachment and as an input attachment.#vulkan# specifies that an image view can be used as a framebuffer color attachment that supports blending and as an input attachment.#vulkan# specifies that an image view can be used as a framebuffer color attachment and as an input attachment.#vulkan# specifies that the format can) be used as a vertex attribute format (8 ::format).#vulkan#5 specifies that atomic operations are supported on   with this format.#vulkan# specifies that the format can& be used to create a buffer view that can be bound to a   descriptor.#vulkan# specifies that the format can& be used to create a buffer view that can be bound to a   descriptor.#vulkan# specifies that an image view can: be used as storage image that supports atomic operations.#vulkan# specifies that an image view can be used as a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage storage image.#vulkan# specifies that an image view can be  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampledimage sampled from.##############################9#########################################################_None( #$&'(./0289:<>?vulkanVkSamplerReductionModeCreateInfo - Structure specifying sampler reduction mode DescriptionIf the pNext chain of > includes a  structure, then that structure includes a mode that controls how texture filtering combines texel values."If this structure is not present,  reductionMode is considered to be .Valid Usage (Implicit)See Also, vulkanVkPhysicalDeviceSamplerFilterMinmaxProperties - Structure describing sampler filter minmax limits that can be supported by an implementation DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.If "filterMinmaxSingleComponentFormats is /, the following formats must support the # feature with  , if they support #:If the format is a depth/stencil format, this bit only specifies that the depth aspect (not the stencil aspect) of an image of this format supports min/max filtering, and that min/max filtering of the depth aspect is supported when depth compare is disabled in the sampler.If !filterMinmaxImageComponentMapping is / the component mapping of the image view used with min/max filtering must have been created with the r component set to the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views-identity-mappingsidentity swizzle . Only the r component of the sampled image value is defined and the other component values are undefined. If !filterMinmaxImageComponentMapping is / this restriction does not apply and image component mapping works as normal.Valid Usage (Implicit)See Alsoq, #vulkan reductionMode is a  value controlling how texture filtering combines texel values.=VUID-VkSamplerReductionModeCreateInfo-reductionMode-parameter  reductionMode must be a valid  value#vulkan3extension-limits-filterMinmaxSingleComponentFormats "filterMinmaxSingleComponentFormats is a boolean value indicating whether a minimum set of required formats support min/max filtering.#vulkan2extension-limits-filterMinmaxImageComponentMapping !filterMinmaxImageComponentMapping is a boolean value indicating whether the implementation supports non-identity component mapping of the image when doing min/max filtering.##### ###################################  #########################################################None( #$&'(./0289:<>?O $$$$$$$$$$$$$ $$$$$$$$$$$$$None( #$&'(./0289:<>? &LKvulkan"VkFormat - Available image formatsSee Also, , 7, d, , h, , 1, g, , 2, U, U, , Y,  , , 8 , ,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoFormatPropertiesKHRVkVideoFormatPropertiesKHR,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoSessionCreateInfoKHRVkVideoSessionCreateInfoKHR,  ,  , U ,  ,  , @ $vulkan$ specifies a four-component, 32-bit format containing a pair of G components, an R component, and a B component, collectively encoding a 21 rectangle of unsigned normalized RGB texel data. One G value is present at each i coordinate, with the B and R values shared across both G values and thus recorded at half the horizontal resolution of the image. This format has an 8-bit G component for the even i coordinate in byte 0, an 8-bit B component in byte 1, an 8-bit G component for the odd i coordinate in byte 2, and an 8-bit R component in byte 3. This format only supports images with a width that is a multiple of two. For the purposes of the constraints on copy extents, this format is treated as a compressed format with a 21 compressed texel block.$vulkan$ specifies a four-component, 32-bit format containing a pair of G components, an R component, and a B component, collectively encoding a 21 rectangle of unsigned normalized RGB texel data. One G value is present at each i coordinate, with the B and R values shared across both G values and thus recorded at half the horizontal resolution of the image. This format has an 8-bit B component in byte 0, an 8-bit G component for the even i coordinate in byte 1, an 8-bit R component in byte 2, and an 8-bit G component for the odd i coordinate in byte 3. This format only supports images with a width that is a multiple of two. For the purposes of the constraints on copy extents, this format is treated as a compressed format with a 21 compressed texel block.$vulkan$# specifies an unsigned normalized multi-planar format that has an 8-bit G component in plane 0, an 8-bit B component in plane 1, and an 8-bit R component in plane 2. The horizontal and vertical dimensions of the R and B planes are halved relative to the image dimensions, and each R and B component is shared with the G components for which (leftlfloor i_G times 0.5 rightrfloor = i_B = i_R) and (leftlfloor j_G times 0.5 rightrfloor = j_B = j_R). The location of each plane when this image is in linear layout can be determined via 1  , using   for the G plane,   for the B plane, and   for the R plane. This format only supports images with a width and height that is a multiple of two.$vulkan$# specifies an unsigned normalized multi-planar format that has an 8-bit G component in plane 0, and a two-component, 16-bit BR plane 1 consisting of an 8-bit B component in byte 0 and an 8-bit R component in byte 1. The horizontal and vertical dimensions of the BR plane are halved relative to the image dimensions, and each R and B value is shared with the G components for which (leftlfloor i_G times 0.5 rightrfloor = i_B = i_R) and (leftlfloor j_G times 0.5 rightrfloor = j_B = j_R). The location of each plane when this image is in linear layout can be determined via 1  , using   for the G plane, and   for the BR plane. This format only supports images with a width and height that is a multiple of two.$vulkan$# specifies an unsigned normalized multi-planar format that has an 8-bit G component in plane 0, an 8-bit B component in plane 1, and an 8-bit R component in plane 2. The horizontal dimension of the R and B plane is halved relative to the image dimensions, and each R and B value is shared with the G components for which (leftlfloor i_G times 0.5 rightrfloor = i_B = i_R). The location of each plane when this image is in linear layout can be determined via 1  , using   for the G plane,   for the B plane, and   for the R plane. This format only supports images with a width that is a multiple of two.$vulkan$# specifies an unsigned normalized multi-planar format that has an 8-bit G component in plane 0, and a two-component, 16-bit BR plane 1 consisting of an 8-bit B component in byte 0 and an 8-bit R component in byte 1. The horizontal dimension of the BR plane is halved relative to the image dimensions, and each R and B value is shared with the G components for which 5\left\lfloor i_G \times 0.5 \right\rfloor = i_B = i_R. The location of each plane when this image is in linear layout can be determined via 1  , using   for the G plane, and   for the BR plane. This format only supports images with a width that is a multiple of two.$vulkan$# specifies an unsigned normalized multi-planar format that has an 8-bit G component in plane 0, an 8-bit B component in plane 1, and an 8-bit R component in plane 2. Each plane has the same dimensions and each R, G and B component contributes to a single texel. The location of each plane when this image is in linear layout can be determined via 1  , using   for the G plane,   for the B plane, and   for the R plane.$vulkan$ specifies a one-component, 16-bit unsigned normalized format that has a single 10-bit R component in the top 10 bits of a 16-bit word, with the bottom 6 bits unused.$vulkan$ specifies a two-component, 32-bit unsigned normalized format that has a 10-bit R component in the top 10 bits of the word in bytes 0..1, and a 10-bit G component in the top 10 bits of the word in bytes 2..3, with the bottom 6 bits of each word unused.$vulkan$ specifies a four-component, 64-bit unsigned normalized format that has a 10-bit R component in the top 10 bits of the word in bytes 0..1, a 10-bit G component in the top 10 bits of the word in bytes 2..3, a 10-bit B component in the top 10 bits of the word in bytes 4..5, and a 10-bit A component in the top 10 bits of the word in bytes 6..7, with the bottom 6 bits of each word unused.$vulkan$ specifies a four-component, 64-bit format containing a pair of G components, an R component, and a B component, collectively encoding a 21 rectangle of unsigned normalized RGB texel data. One G value is present at each i coordinate, with the B and R values shared across both G values and thus recorded at half the horizontal resolution of the image. This format has a 10-bit G component for the even i coordinate in the top 10 bits of the word in bytes 0..1, a 10-bit B component in the top 10 bits of the word in bytes 2..3, a 10-bit G component for the odd i coordinate in the top 10 bits of the word in bytes 4..5, and a 10-bit R component in the top 10 bits of the word in bytes 6..7, with the bottom 6 bits of each word unused. This format only supports images with a width that is a multiple of two. For the purposes of the constraints on copy extents, this format is treated as a compressed format with a 21 compressed texel block.$vulkan$ specifies a four-component, 64-bit format containing a pair of G components, an R component, and a B component, collectively encoding a 21 rectangle of unsigned normalized RGB texel data. One G value is present at each i coordinate, with the B and R values shared across both G values and thus recorded at half the horizontal resolution of the image. This format has a 10-bit B component in the top 10 bits of the word in bytes 0..1, a 10-bit G component for the even i coordinate in the top 10 bits of the word in bytes 2..3, a 10-bit R component in the top 10 bits of the word in bytes 4..5, and a 10-bit G component for the odd i coordinate in the top 10 bits of the word in bytes 6..7, with the bottom 6 bits of each word unused. This format only supports images with a width that is a multiple of two. For the purposes of the constraints on copy extents, this format is treated as a compressed format with a 21 compressed texel block.$vulkan$# specifies an unsigned normalized multi-planar format that has a 10-bit G component in the top 10 bits of each 16-bit word of plane 0, a 10-bit B component in the top 10 bits of each 16-bit word of plane 1, and a 10-bit R component in the top 10 bits of each 16-bit word of plane 2, with the bottom 6 bits of each word unused. The horizontal and vertical dimensions of the R and B planes are halved relative to the image dimensions, and each R and B component is shared with the G components for which (leftlfloor i_G times 0.5 rightrfloor = i_B = i_R) and (leftlfloor j_G times 0.5 rightrfloor = j_B = j_R). The location of each plane when this image is in linear layout can be determined via 1  , using   for the G plane,   for the B plane, and   for the R plane. This format only supports images with a width and height that is a multiple of two.$vulkan$# specifies an unsigned normalized multi-planar format that has a 10-bit G component in the top 10 bits of each 16-bit word of plane 0, and a two-component, 32-bit BR plane 1 consisting of a 10-bit B component in the top 10 bits of the word in bytes 0..1, and a 10-bit R component in the top 10 bits of the word in bytes 2..3, with the bottom 6 bits of each word unused. The horizontal and vertical dimensions of the BR plane are halved relative to the image dimensions, and each R and B value is shared with the G components for which (leftlfloor i_G times 0.5 rightrfloor = i_B = i_R) and (leftlfloor j_G times 0.5 rightrfloor = j_B = j_R). The location of each plane when this image is in linear layout can be determined via 1  , using   for the G plane, and   for the BR plane. This format only supports images with a width and height that is a multiple of two.$vulkan$# specifies an unsigned normalized multi-planar format that has a 10-bit G component in the top 10 bits of each 16-bit word of plane 0, a 10-bit B component in the top 10 bits of each 16-bit word of plane 1, and a 10-bit R component in the top 10 bits of each 16-bit word of plane 2, with the bottom 6 bits of each word unused. The horizontal dimension of the R and B plane is halved relative to the image dimensions, and each R and B value is shared with the G components for which (leftlfloor i_G times 0.5 rightrfloor = i_B = i_R). The location of each plane when this image is in linear layout can be determined via 1  , using   for the G plane,   for the B plane, and   for the R plane. This format only supports images with a width that is a multiple of two.$vulkan$# specifies an unsigned normalized multi-planar format that has a 10-bit G component in the top 10 bits of each 16-bit word of plane 0, and a two-component, 32-bit BR plane 1 consisting of a 10-bit B component in the top 10 bits of the word in bytes 0..1, and a 10-bit R component in the top 10 bits of the word in bytes 2..3, with the bottom 6 bits of each word unused. The horizontal dimension of the BR plane is halved relative to the image dimensions, and each R and B value is shared with the G components for which 5\left\lfloor i_G \times 0.5 \right\rfloor = i_B = i_R. The location of each plane when this image is in linear layout can be determined via 1  , using   for the G plane, and   for the BR plane. This format only supports images with a width that is a multiple of two.$vulkan$# specifies an unsigned normalized multi-planar format that has a 10-bit G component in the top 10 bits of each 16-bit word of plane 0, a 10-bit B component in the top 10 bits of each 16-bit word of plane 1, and a 10-bit R component in the top 10 bits of each 16-bit word of plane 2, with the bottom 6 bits of each word unused. Each plane has the same dimensions and each R, G and B component contributes to a single texel. The location of each plane when this image is in linear layout can be determined via 1  , using   for the G plane,   for the B plane, and   for the R plane.$vulkan$ specifies a one-component, 16-bit unsigned normalized format that has a single 12-bit R component in the top 12 bits of a 16-bit word, with the bottom 4 bits unused.$vulkan$ specifies a two-component, 32-bit unsigned normalized format that has a 12-bit R component in the top 12 bits of the word in bytes 0..1, and a 12-bit G component in the top 12 bits of the word in bytes 2..3, with the bottom 4 bits of each word unused.$vulkan$ specifies a four-component, 64-bit unsigned normalized format that has a 12-bit R component in the top 12 bits of the word in bytes 0..1, a 12-bit G component in the top 12 bits of the word in bytes 2..3, a 12-bit B component in the top 12 bits of the word in bytes 4..5, and a 12-bit A component in the top 12 bits of the word in bytes 6..7, with the bottom 4 bits of each word unused.$vulkan$ specifies a four-component, 64-bit format containing a pair of G components, an R component, and a B component, collectively encoding a 21 rectangle of unsigned normalized RGB texel data. One G value is present at each i coordinate, with the B and R values shared across both G values and thus recorded at half the horizontal resolution of the image. This format has a 12-bit G component for the even i coordinate in the top 12 bits of the word in bytes 0..1, a 12-bit B component in the top 12 bits of the word in bytes 2..3, a 12-bit G component for the odd i coordinate in the top 12 bits of the word in bytes 4..5, and a 12-bit R component in the top 12 bits of the word in bytes 6..7, with the bottom 4 bits of each word unused. This format only supports images with a width that is a multiple of two. For the purposes of the constraints on copy extents, this format is treated as a compressed format with a 21 compressed texel block.$vulkan$ specifies a four-component, 64-bit format containing a pair of G components, an R component, and a B component, collectively encoding a 21 rectangle of unsigned normalized RGB texel data. One G value is present at each i coordinate, with the B and R values shared across both G values and thus recorded at half the horizontal resolution of the image. This format has a 12-bit B component in the top 12 bits of the word in bytes 0..1, a 12-bit G component for the even i coordinate in the top 12 bits of the word in bytes 2..3, a 12-bit R component in the top 12 bits of the word in bytes 4..5, and a 12-bit G component for the odd i coordinate in the top 12 bits of the word in bytes 6..7, with the bottom 4 bits of each word unused. This format only supports images with a width that is a multiple of two. For the purposes of the constraints on copy extents, this format is treated as a compressed format with a 21 compressed texel block.$vulkan$# specifies an unsigned normalized multi-planar format that has a 12-bit G component in the top 12 bits of each 16-bit word of plane 0, a 12-bit B component in the top 12 bits of each 16-bit word of plane 1, and a 12-bit R component in the top 12 bits of each 16-bit word of plane 2, with the bottom 4 bits of each word unused. The horizontal and vertical dimensions of the R and B planes are halved relative to the image dimensions, and each R and B component is shared with the G components for which (leftlfloor i_G times 0.5 rightrfloor = i_B = i_R) and (leftlfloor j_G times 0.5 rightrfloor = j_B = j_R). The location of each plane when this image is in linear layout can be determined via 1  , using   for the G plane,   for the B plane, and   for the R plane. This format only supports images with a width and height that is a multiple of two.$vulkan$# specifies an unsigned normalized multi-planar format that has a 12-bit G component in the top 12 bits of each 16-bit word of plane 0, and a two-component, 32-bit BR plane 1 consisting of a 12-bit B component in the top 12 bits of the word in bytes 0..1, and a 12-bit R component in the top 12 bits of the word in bytes 2..3, with the bottom 4 bits of each word unused. The horizontal and vertical dimensions of the BR plane are halved relative to the image dimensions, and each R and B value is shared with the G components for which (leftlfloor i_G times 0.5 rightrfloor = i_B = i_R) and (leftlfloor j_G times 0.5 rightrfloor = j_B = j_R). The location of each plane when this image is in linear layout can be determined via 1  , using   for the G plane, and   for the BR plane. This format only supports images with a width and height that is a multiple of two.$vulkan$# specifies an unsigned normalized multi-planar format that has a 12-bit G component in the top 12 bits of each 16-bit word of plane 0, a 12-bit B component in the top 12 bits of each 16-bit word of plane 1, and a 12-bit R component in the top 12 bits of each 16-bit word of plane 2, with the bottom 4 bits of each word unused. The horizontal dimension of the R and B plane is halved relative to the image dimensions, and each R and B value is shared with the G components for which (leftlfloor i_G times 0.5 rightrfloor = i_B = i_R). The location of each plane when this image is in linear layout can be determined via 1  , using   for the G plane,   for the B plane, and   for the R plane. This format only supports images with a width that is a multiple of two.$vulkan$# specifies an unsigned normalized multi-planar format that has a 12-bit G component in the top 12 bits of each 16-bit word of plane 0, and a two-component, 32-bit BR plane 1 consisting of a 12-bit B component in the top 12 bits of the word in bytes 0..1, and a 12-bit R component in the top 12 bits of the word in bytes 2..3, with the bottom 4 bits of each word unused. The horizontal dimension of the BR plane is halved relative to the image dimensions, and each R and B value is shared with the G components for which 5\left\lfloor i_G \times 0.5 \right\rfloor = i_B = i_R. The location of each plane when this image is in linear layout can be determined via 1  , using   for the G plane, and   for the BR plane. This format only supports images with a width that is a multiple of two.$vulkan$# specifies an unsigned normalized multi-planar format that has a 12-bit G component in the top 12 bits of each 16-bit word of plane 0, a 12-bit B component in the top 12 bits of each 16-bit word of plane 1, and a 12-bit R component in the top 12 bits of each 16-bit word of plane 2, with the bottom 4 bits of each word unused. Each plane has the same dimensions and each R, G and B component contributes to a single texel. The location of each plane when this image is in linear layout can be determined via 1  , using   for the G plane,   for the B plane, and   for the R plane.$vulkan$ specifies a four-component, 64-bit format containing a pair of G components, an R component, and a B component, collectively encoding a 21 rectangle of unsigned normalized RGB texel data. One G value is present at each i coordinate, with the B and R values shared across both G values and thus recorded at half the horizontal resolution of the image. This format has a 16-bit G component for the even i coordinate in the word in bytes 0..1, a 16-bit B component in the word in bytes 2..3, a 16-bit G component for the odd i coordinate in the word in bytes 4..5, and a 16-bit R component in the word in bytes 6..7. This format only supports images with a width that is a multiple of two. For the purposes of the constraints on copy extents, this format is treated as a compressed format with a 21 compressed texel block.$vulkan$ specifies a four-component, 64-bit format containing a pair of G components, an R component, and a B component, collectively encoding a 21 rectangle of unsigned normalized RGB texel data. One G value is present at each i coordinate, with the B and R values shared across both G values and thus recorded at half the horizontal resolution of the image. This format has a 16-bit B component in the word in bytes 0..1, a 16-bit G component for the even i coordinate in the word in bytes 2..3, a 16-bit R component in the word in bytes 4..5, and a 16-bit G component for the odd i coordinate in the word in bytes 6..7. This format only supports images with a width that is a multiple of two. For the purposes of the constraints on copy extents, this format is treated as a compressed format with a 21 compressed texel block.$vulkan$# specifies an unsigned normalized multi-planar format that has a 16-bit G component in each 16-bit word of plane 0, a 16-bit B component in each 16-bit word of plane 1, and a 16-bit R component in each 16-bit word of plane 2. The horizontal and vertical dimensions of the R and B planes are halved relative to the image dimensions, and each R and B component is shared with the G components for which (leftlfloor i_G times 0.5 rightrfloor = i_B = i_R) and (leftlfloor j_G times 0.5 rightrfloor = j_B = j_R). The location of each plane when this image is in linear layout can be determined via 1  , using   for the G plane,   for the B plane, and   for the R plane. This format only supports images with a width and height that is a multiple of two.$vulkan$# specifies an unsigned normalized multi-planar format that has a 16-bit G component in each 16-bit word of plane 0, and a two-component, 32-bit BR plane 1 consisting of a 16-bit B component in the word in bytes 0..1, and a 16-bit R component in the word in bytes 2..3. The horizontal and vertical dimensions of the BR plane are halved relative to the image dimensions, and each R and B value is shared with the G components for which (leftlfloor i_G times 0.5 rightrfloor = i_B = i_R) and (leftlfloor j_G times 0.5 rightrfloor = j_B = j_R). The location of each plane when this image is in linear layout can be determined via 1  , using   for the G plane, and   for the BR plane. This format only supports images with a width and height that is a multiple of two.$vulkan$# specifies an unsigned normalized multi-planar format that has a 16-bit G component in each 16-bit word of plane 0, a 16-bit B component in each 16-bit word of plane 1, and a 16-bit R component in each 16-bit word of plane 2. The horizontal dimension of the R and B plane is halved relative to the image dimensions, and each R and B value is shared with the G components for which (leftlfloor i_G times 0.5 rightrfloor = i_B = i_R). The location of each plane when this image is in linear layout can be determined via 1  , using   for the G plane,   for the B plane, and   for the R plane. This format only supports images with a width that is a multiple of two.$vulkan$# specifies an unsigned normalized multi-planar format that has a 16-bit G component in each 16-bit word of plane 0, and a two-component, 32-bit BR plane 1 consisting of a 16-bit B component in the word in bytes 0..1, and a 16-bit R component in the word in bytes 2..3. The horizontal dimension of the BR plane is halved relative to the image dimensions, and each R and B value is shared with the G components for which 5\left\lfloor i_G \times 0.5 \right\rfloor = i_B = i_R. The location of each plane when this image is in linear layout can be determined via 1  , using   for the G plane, and   for the BR plane. This format only supports images with a width that is a multiple of two.$vulkan$# specifies an unsigned normalized multi-planar format that has a 16-bit G component in each 16-bit word of plane 0, a 16-bit B component in each 16-bit word of plane 1, and a 16-bit R component in each 16-bit word of plane 2. Each plane has the same dimensions and each R, G and B component contributes to a single texel. The location of each plane when this image is in linear layout can be determined via 1  , using   for the G plane,   for the B plane, and   for the R plane.$vulkan$ specifies a four-component, PVRTC compressed format where each 64-bit compressed texel block encodes an 84 rectangle of unsigned normalized RGBA texel data.$vulkan$ specifies a four-component, PVRTC compressed format where each 64-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGBA texel data.$vulkan$ specifies a four-component, PVRTC compressed format where each 64-bit compressed texel block encodes an 84 rectangle of unsigned normalized RGBA texel data.$vulkan$ specifies a four-component, PVRTC compressed format where each 64-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGBA texel data.$vulkan$ specifies a four-component, PVRTC compressed format where each 64-bit compressed texel block encodes an 84 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.$vulkan$ specifies a four-component, PVRTC compressed format where each 64-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.$vulkan$ specifies a four-component, PVRTC compressed format where each 64-bit compressed texel block encodes an 84 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.$vulkan$ specifies a four-component, PVRTC compressed format where each 64-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 44 rectangle of signed floating-point RGBA texel data.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 54 rectangle of signed floating-point RGBA texel data.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 55 rectangle of signed floating-point RGBA texel data.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 65 rectangle of signed floating-point RGBA texel data.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 66 rectangle of signed floating-point RGBA texel data.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 85 rectangle of signed floating-point RGBA texel data.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 86 rectangle of signed floating-point RGBA texel data.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 88 rectangle of signed floating-point RGBA texel data.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 105 rectangle of signed floating-point RGBA texel data.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 106 rectangle of signed floating-point RGBA texel data.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 108 rectangle of signed floating-point RGBA texel data.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 1010 rectangle of signed floating-point RGBA texel data.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 1210 rectangle of signed floating-point RGBA texel data.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 1212 rectangle of signed floating-point RGBA texel data.$vulkan$# specifies an unsigned normalized multi-planar format that has an 8-bit G component in plane 0, and a two-component, 16-bit BR plane 1 consisting of an 8-bit B component in byte 0 and an 8-bit R component in byte 1. Both planes have the same dimensions and each R, G and B component contributes to a single texel. The location of each plane when this image is in linear layout can be determined via 1  , using   for the G plane, and   for the BR plane.$vulkan$# specifies an unsigned normalized multi-planar format that has a 10-bit G component in the top 10 bits of each 16-bit word of plane 0, and a two-component, 32-bit BR plane 1 consisting of a 10-bit B component in the top 10 bits of the word in bytes 0..1, and a 10-bit R component in the top 10 bits of the word in bytes 2..3, the bottom 6 bits of each word unused. Both planes have the same dimensions and each R, G and B component contributes to a single texel. The location of each plane when this image is in linear layout can be determined via 1  , using   for the G plane, and   for the BR plane.$vulkan$# specifies an unsigned normalized multi-planar format that has a 12-bit G component in the top 12 bits of each 16-bit word of plane 0, and a two-component, 32-bit BR plane 1 consisting of a 12-bit B component in the top 12 bits of the word in bytes 0..1, and a 12-bit R component in the top 12 bits of the word in bytes 2..3, the bottom 4 bits of each word unused. Both planes have the same dimensions and each R, G and B component contributes to a single texel. The location of each plane when this image is in linear layout can be determined via 1  , using   for the G plane, and   for the BR plane.$vulkan$# specifies an unsigned normalized multi-planar format that has a 16-bit G component in each 16-bit word of plane 0, and a two-component, 32-bit BR plane 1 consisting of a 16-bit B component in the word in bytes 0..1, and a 16-bit R component in the word in bytes 2..3. Both planes have the same dimensions and each R, G and B component contributes to a single texel. The location of each plane when this image is in linear layout can be determined via 1  , using   for the G plane, and   for the BR plane.$vulkan$ specifies a four-component, 16-bit packed unsigned normalized format that has a 4-bit A component in bits 12..15, a 4-bit R component in bits 8..11, a 4-bit G component in bits 4..7, and a 4-bit B component in bits 0..3.$vulkan$ specifies a four-component, 16-bit packed unsigned normalized format that has a 4-bit A component in bits 12..15, a 4-bit B component in bits 8..11, a 4-bit G component in bits 4..7, and a 4-bit R component in bits 0..3.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 1212 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 1212 rectangle of unsigned normalized RGBA texel data.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 1210 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 1210 rectangle of unsigned normalized RGBA texel data.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 1010 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 1010 rectangle of unsigned normalized RGBA texel data.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 108 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 108 rectangle of unsigned normalized RGBA texel data.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 106 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 106 rectangle of unsigned normalized RGBA texel data.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 105 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 105 rectangle of unsigned normalized RGBA texel data.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes an 88 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes an 88 rectangle of unsigned normalized RGBA texel data.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes an 86 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes an 86 rectangle of unsigned normalized RGBA texel data.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes an 85 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes an 85 rectangle of unsigned normalized RGBA texel data.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 66 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 66 rectangle of unsigned normalized RGBA texel data.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 65 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 65 rectangle of unsigned normalized RGBA texel data.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 55 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 55 rectangle of unsigned normalized RGBA texel data.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 54 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 54 rectangle of unsigned normalized RGBA texel data.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.$vulkan$ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGBA texel data.$vulkan$ specifies a two-component, ETC2 compressed format where each 128-bit compressed texel block encodes a 44 rectangle of signed normalized RG texel data with the first 64 bits encoding red values followed by 64 bits encoding green values.$vulkan$ specifies a two-component, ETC2 compressed format where each 128-bit compressed texel block encodes a 44 rectangle of unsigned normalized RG texel data with the first 64 bits encoding red values followed by 64 bits encoding green values.$vulkan$ specifies a one-component, ETC2 compressed format where each 64-bit compressed texel block encodes a 44 rectangle of signed normalized red texel data.$vulkan$ specifies a one-component, ETC2 compressed format where each 64-bit compressed texel block encodes a 44 rectangle of unsigned normalized red texel data.$vulkan$ specifies a four-component, ETC2 compressed format where each 128-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha values followed by 64 bits encoding RGB values with sRGB nonlinear encoding applied.$vulkan$ specifies a four-component, ETC2 compressed format where each 128-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha values followed by 64 bits encoding RGB values.$vulkan$ specifies a four-component, ETC2 compressed format where each 64-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGB texel data with sRGB nonlinear encoding, and provides 1 bit of alpha.$vulkan$ specifies a four-component, ETC2 compressed format where each 64-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGB texel data, and provides 1 bit of alpha.$vulkan$ specifies a three-component, ETC2 compressed format where each 64-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGB texel data with sRGB nonlinear encoding. This format has no alpha and is considered opaque.$vulkan$ specifies a three-component, ETC2 compressed format where each 64-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGB texel data. This format has no alpha and is considered opaque.$vulkan$ specifies a four-component, block-compressed format where each 128-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.$vulkan$ specifies a four-component, block-compressed format where each 128-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGBA texel data.$vulkan$ specifies a three-component, block-compressed format where each 128-bit compressed texel block encodes a 44 rectangle of signed floating-point RGB texel data.%vulkan% specifies a three-component, block-compressed format where each 128-bit compressed texel block encodes a 44 rectangle of unsigned floating-point RGB texel data.%vulkan% specifies a two-component, block-compressed format where each 128-bit compressed texel block encodes a 44 rectangle of signed normalized RG texel data with the first 64 bits encoding red values followed by 64 bits encoding green values.%vulkan% specifies a two-component, block-compressed format where each 128-bit compressed texel block encodes a 44 rectangle of unsigned normalized RG texel data with the first 64 bits encoding red values followed by 64 bits encoding green values.%vulkan% specifies a one-component, block-compressed format where each 64-bit compressed texel block encodes a 44 rectangle of signed normalized red texel data.%vulkan% specifies a one-component, block-compressed format where each 64-bit compressed texel block encodes a 44 rectangle of unsigned normalized red texel data.%vulkan% specifies a four-component, block-compressed format where each 128-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha values followed by 64 bits encoding RGB values with sRGB nonlinear encoding.%vulkan% specifies a four-component, block-compressed format where each 128-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha values followed by 64 bits encoding RGB values.%vulkan% specifies a four-component, block-compressed format where each 128-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha values followed by 64 bits encoding RGB values with sRGB nonlinear encoding.%vulkan% specifies a four-component, block-compressed format where each 128-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha values followed by 64 bits encoding RGB values.%vulkan% specifies a four-component, block-compressed format where each 64-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGB texel data with sRGB nonlinear encoding, and provides 1 bit of alpha.%vulkan% specifies a four-component, block-compressed format where each 64-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGB texel data, and provides 1 bit of alpha.%vulkan% specifies a three-component, block-compressed format where each 64-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGB texel data with sRGB nonlinear encoding. This format has no alpha and is considered opaque.%vulkan% specifies a three-component, block-compressed format where each 64-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGB texel data. This format has no alpha and is considered opaque.%vulkan% specifies a two-component format that has 32 signed float bits in the depth component and 8 unsigned integer bits in the stencil component. There are  optionally 24 bits that are unused.%vulkan% specifies a two-component, 32-bit packed format that has 8 unsigned integer bits in the stencil component, and 24 unsigned normalized bits in the depth component.%vulkan% specifies a two-component, 24-bit format that has 16 unsigned normalized bits in the depth component and 8 unsigned integer bits in the stencil component.%vulkan% specifies a one-component, 8-bit unsigned integer format that has 8 bits in the stencil component.%vulkan% specifies a one-component, 32-bit signed floating-point format that has 32 bits in the depth component.%vulkan% specifies a two-component, 32-bit format that has 24 unsigned normalized bits in the depth component and,  optionally, 8 bits that are unused.%vulkan% specifies a one-component, 16-bit unsigned normalized format that has a single 16-bit depth component.%vulkan% specifies a three-component, 32-bit packed unsigned floating-point format that has a 5-bit shared exponent in bits 27..31, a 9-bit B component mantissa in bits 18..26, a 9-bit G component mantissa in bits 9..17, and a 9-bit R component mantissa in bits 0..8.%vulkan% specifies a three-component, 32-bit packed unsigned floating-point format that has a 10-bit B component in bits 22..31, an 11-bit G component in bits 11..21, an 11-bit R component in bits 0..10. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-fp10 and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-fp11.%vulkan% specifies a four-component, 256-bit signed floating-point format that has a 64-bit R component in bytes 0..7, a 64-bit G component in bytes 8..15, a 64-bit B component in bytes 16..23, and a 64-bit A component in bytes 24..31.%vulkan% specifies a four-component, 256-bit signed integer format that has a 64-bit R component in bytes 0..7, a 64-bit G component in bytes 8..15, a 64-bit B component in bytes 16..23, and a 64-bit A component in bytes 24..31.%vulkan% specifies a four-component, 256-bit unsigned integer format that has a 64-bit R component in bytes 0..7, a 64-bit G component in bytes 8..15, a 64-bit B component in bytes 16..23, and a 64-bit A component in bytes 24..31.%vulkan% specifies a three-component, 192-bit signed floating-point format that has a 64-bit R component in bytes 0..7, a 64-bit G component in bytes 8..15, and a 64-bit B component in bytes 16..23.%vulkan% specifies a three-component, 192-bit signed integer format that has a 64-bit R component in bytes 0..7, a 64-bit G component in bytes 8..15, and a 64-bit B component in bytes 16..23.%vulkan% specifies a three-component, 192-bit unsigned integer format that has a 64-bit R component in bytes 0..7, a 64-bit G component in bytes 8..15, and a 64-bit B component in bytes 16..23.%vulkan% specifies a two-component, 128-bit signed floating-point format that has a 64-bit R component in bytes 0..7, and a 64-bit G component in bytes 8..15.%vulkan% specifies a two-component, 128-bit signed integer format that has a 64-bit R component in bytes 0..7, and a 64-bit G component in bytes 8..15.%vulkan% specifies a two-component, 128-bit unsigned integer format that has a 64-bit R component in bytes 0..7, and a 64-bit G component in bytes 8..15.%vulkan% specifies a one-component, 64-bit signed floating-point format that has a single 64-bit R component.%vulkan% specifies a one-component, 64-bit signed integer format that has a single 64-bit R component.%vulkan% specifies a one-component, 64-bit unsigned integer format that has a single 64-bit R component.%vulkan% specifies a four-component, 128-bit signed floating-point format that has a 32-bit R component in bytes 0..3, a 32-bit G component in bytes 4..7, a 32-bit B component in bytes 8..11, and a 32-bit A component in bytes 12..15.%vulkan% specifies a four-component, 128-bit signed integer format that has a 32-bit R component in bytes 0..3, a 32-bit G component in bytes 4..7, a 32-bit B component in bytes 8..11, and a 32-bit A component in bytes 12..15.%vulkan% specifies a four-component, 128-bit unsigned integer format that has a 32-bit R component in bytes 0..3, a 32-bit G component in bytes 4..7, a 32-bit B component in bytes 8..11, and a 32-bit A component in bytes 12..15.%vulkan% specifies a three-component, 96-bit signed floating-point format that has a 32-bit R component in bytes 0..3, a 32-bit G component in bytes 4..7, and a 32-bit B component in bytes 8..11.%vulkan% specifies a three-component, 96-bit signed integer format that has a 32-bit R component in bytes 0..3, a 32-bit G component in bytes 4..7, and a 32-bit B component in bytes 8..11.%vulkan% specifies a three-component, 96-bit unsigned integer format that has a 32-bit R component in bytes 0..3, a 32-bit G component in bytes 4..7, and a 32-bit B component in bytes 8..11.%vulkan% specifies a two-component, 64-bit signed floating-point format that has a 32-bit R component in bytes 0..3, and a 32-bit G component in bytes 4..7.%vulkan% specifies a two-component, 64-bit signed integer format that has a 32-bit R component in bytes 0..3, and a 32-bit G component in bytes 4..7.%vulkan% specifies a two-component, 64-bit unsigned integer format that has a 32-bit R component in bytes 0..3, and a 32-bit G component in bytes 4..7.%vulkan% specifies a one-component, 32-bit signed floating-point format that has a single 32-bit R component.%vulkan% specifies a one-component, 32-bit signed integer format that has a single 32-bit R component.%vulkan% specifies a one-component, 32-bit unsigned integer format that has a single 32-bit R component.%vulkan% specifies a four-component, 64-bit signed floating-point format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit A component in bytes 6..7.%vulkan% specifies a four-component, 64-bit signed integer format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit A component in bytes 6..7.%vulkan% specifies a four-component, 64-bit unsigned integer format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit A component in bytes 6..7.%vulkan% specifies a four-component, 64-bit signed scaled integer format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit A component in bytes 6..7.%vulkan% specifies a four-component, 64-bit unsigned scaled integer format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit A component in bytes 6..7.%vulkan% specifies a four-component, 64-bit signed normalized format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit A component in bytes 6..7.%vulkan% specifies a four-component, 64-bit unsigned normalized format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit A component in bytes 6..7.%vulkan% specifies a three-component, 48-bit signed floating-point format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5.%vulkan% specifies a three-component, 48-bit signed integer format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5.%vulkan% specifies a three-component, 48-bit unsigned integer format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5.%vulkan% specifies a three-component, 48-bit signed scaled integer format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5.%vulkan% specifies a three-component, 48-bit unsigned scaled integer format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5.%vulkan% specifies a three-component, 48-bit signed normalized format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5.%vulkan% specifies a three-component, 48-bit unsigned normalized format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5.%vulkan% specifies a two-component, 32-bit signed floating-point format that has a 16-bit R component in bytes 0..1, and a 16-bit G component in bytes 2..3.%vulkan% specifies a two-component, 32-bit signed integer format that has a 16-bit R component in bytes 0..1, and a 16-bit G component in bytes 2..3.%vulkan% specifies a two-component, 32-bit unsigned integer format that has a 16-bit R component in bytes 0..1, and a 16-bit G component in bytes 2..3.%vulkan% specifies a two-component, 32-bit signed scaled integer format that has a 16-bit R component in bytes 0..1, and a 16-bit G component in bytes 2..3.%vulkan% specifies a two-component, 32-bit unsigned scaled integer format that has a 16-bit R component in bytes 0..1, and a 16-bit G component in bytes 2..3.%vulkan% specifies a two-component, 32-bit signed normalized format that has a 16-bit R component in bytes 0..1, and a 16-bit G component in bytes 2..3.%vulkan% specifies a two-component, 32-bit unsigned normalized format that has a 16-bit R component in bytes 0..1, and a 16-bit G component in bytes 2..3.%vulkan% specifies a one-component, 16-bit signed floating-point format that has a single 16-bit R component.%vulkan% specifies a one-component, 16-bit signed integer format that has a single 16-bit R component.%vulkan% specifies a one-component, 16-bit unsigned integer format that has a single 16-bit R component.%vulkan% specifies a one-component, 16-bit signed scaled integer format that has a single 16-bit R component.%vulkan% specifies a one-component, 16-bit unsigned scaled integer format that has a single 16-bit R component.%vulkan% specifies a one-component, 16-bit signed normalized format that has a single 16-bit R component.%vulkan% specifies a one-component, 16-bit unsigned normalized format that has a single 16-bit R component.%vulkan% specifies a four-component, 32-bit packed signed integer format that has a 2-bit A component in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit R component in bits 0..9.%vulkan% specifies a four-component, 32-bit packed unsigned integer format that has a 2-bit A component in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit R component in bits 0..9.%vulkan% specifies a four-component, 32-bit packed signed scaled integer format that has a 2-bit A component in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit R component in bits 0..9.%vulkan% specifies a four-component, 32-bit packed unsigned scaled integer format that has a 2-bit A component in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit R component in bits 0..9.%vulkan% specifies a four-component, 32-bit packed signed normalized format that has a 2-bit A component in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit R component in bits 0..9.%vulkan% specifies a four-component, 32-bit packed unsigned normalized format that has a 2-bit A component in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit R component in bits 0..9.%vulkan% specifies a four-component, 32-bit packed signed integer format that has a 2-bit A component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9.%vulkan% specifies a four-component, 32-bit packed unsigned integer format that has a 2-bit A component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9.%vulkan% specifies a four-component, 32-bit packed signed scaled integer format that has a 2-bit A component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9.%vulkan% specifies a four-component, 32-bit packed unsigned scaled integer format that has a 2-bit A component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9.%vulkan% specifies a four-component, 32-bit packed signed normalized format that has a 2-bit A component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9.%vulkan% specifies a four-component, 32-bit packed unsigned normalized format that has a 2-bit A component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9.%vulkan% specifies a four-component, 32-bit packed unsigned normalized format that has an 8-bit A component in bits 24..31, an 8-bit B component stored with sRGB nonlinear encoding in bits 16..23, an 8-bit G component stored with sRGB nonlinear encoding in bits 8..15, and an 8-bit R component stored with sRGB nonlinear encoding in bits 0..7.%vulkan% specifies a four-component, 32-bit packed signed integer format that has an 8-bit A component in bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15, and an 8-bit R component in bits 0..7.%vulkan% specifies a four-component, 32-bit packed unsigned integer format that has an 8-bit A component in bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15, and an 8-bit R component in bits 0..7.%vulkan% specifies a four-component, 32-bit packed signed scaled integer format that has an 8-bit A component in bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15, and an 8-bit R component in bits 0..7.%vulkan% specifies a four-component, 32-bit packed unsigned scaled integer format that has an 8-bit A component in bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15, and an 8-bit R component in bits 0..7.%vulkan% specifies a four-component, 32-bit packed signed normalized format that has an 8-bit A component in bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15, and an 8-bit R component in bits 0..7.%vulkan% specifies a four-component, 32-bit packed unsigned normalized format that has an 8-bit A component in bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15, and an 8-bit R component in bits 0..7.%vulkan% specifies a four-component, 32-bit unsigned normalized format that has an 8-bit B component stored with sRGB nonlinear encoding in byte 0, an 8-bit G component stored with sRGB nonlinear encoding in byte 1, an 8-bit R component stored with sRGB nonlinear encoding in byte 2, and an 8-bit A component in byte 3.%vulkan% specifies a four-component, 32-bit signed integer format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, an 8-bit R component in byte 2, and an 8-bit A component in byte 3.%vulkan% specifies a four-component, 32-bit unsigned integer format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, an 8-bit R component in byte 2, and an 8-bit A component in byte 3.%vulkan% specifies a four-component, 32-bit signed scaled format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, an 8-bit R component in byte 2, and an 8-bit A component in byte 3.%vulkan% specifies a four-component, 32-bit unsigned scaled format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, an 8-bit R component in byte 2, and an 8-bit A component in byte 3.%vulkan% specifies a four-component, 32-bit signed normalized format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, an 8-bit R component in byte 2, and an 8-bit A component in byte 3.%vulkan% specifies a four-component, 32-bit unsigned normalized format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, an 8-bit R component in byte 2, and an 8-bit A component in byte 3.%vulkan% specifies a four-component, 32-bit unsigned normalized format that has an 8-bit R component stored with sRGB nonlinear encoding in byte 0, an 8-bit G component stored with sRGB nonlinear encoding in byte 1, an 8-bit B component stored with sRGB nonlinear encoding in byte 2, and an 8-bit A component in byte 3.%vulkan% specifies a four-component, 32-bit signed integer format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, an 8-bit B component in byte 2, and an 8-bit A component in byte 3.%vulkan% specifies a four-component, 32-bit unsigned integer format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, an 8-bit B component in byte 2, and an 8-bit A component in byte 3.%vulkan% specifies a four-component, 32-bit signed scaled format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, an 8-bit B component in byte 2, and an 8-bit A component in byte 3.%vulkan% specifies a four-component, 32-bit unsigned scaled format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, an 8-bit B component in byte 2, and an 8-bit A component in byte 3.%vulkan% specifies a four-component, 32-bit signed normalized format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, an 8-bit B component in byte 2, and an 8-bit A component in byte 3.%vulkan% specifies a four-component, 32-bit unsigned normalized format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, an 8-bit B component in byte 2, and an 8-bit A component in byte 3.%vulkan% specifies a three-component, 24-bit unsigned normalized format that has an 8-bit B component stored with sRGB nonlinear encoding in byte 0, an 8-bit G component stored with sRGB nonlinear encoding in byte 1, and an 8-bit R component stored with sRGB nonlinear encoding in byte 2.%vulkan% specifies a three-component, 24-bit signed integer format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, and an 8-bit R component in byte 2.%vulkan% specifies a three-component, 24-bit unsigned integer format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, and an 8-bit R component in byte 2.%vulkan% specifies a three-component, 24-bit signed scaled format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, and an 8-bit R component in byte 2.%vulkan% specifies a three-component, 24-bit unsigned scaled format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, and an 8-bit R component in byte 2.%vulkan% specifies a three-component, 24-bit signed normalized format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, and an 8-bit R component in byte 2.%vulkan% specifies a three-component, 24-bit unsigned normalized format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, and an 8-bit R component in byte 2.%vulkan% specifies a three-component, 24-bit unsigned normalized format that has an 8-bit R component stored with sRGB nonlinear encoding in byte 0, an 8-bit G component stored with sRGB nonlinear encoding in byte 1, and an 8-bit B component stored with sRGB nonlinear encoding in byte 2.%vulkan% specifies a three-component, 24-bit signed integer format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, and an 8-bit B component in byte 2.%vulkan% specifies a three-component, 24-bit unsigned integer format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, and an 8-bit B component in byte 2.%vulkan% specifies a three-component, 24-bit signed scaled format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, and an 8-bit B component in byte 2.%vulkan% specifies a three-component, 24-bit unsigned scaled format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, and an 8-bit B component in byte 2.%vulkan% specifies a three-component, 24-bit signed normalized format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, and an 8-bit B component in byte 2.%vulkan% specifies a three-component, 24-bit unsigned normalized format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, and an 8-bit B component in byte 2.%vulkan% specifies a two-component, 16-bit unsigned normalized format that has an 8-bit R component stored with sRGB nonlinear encoding in byte 0, and an 8-bit G component stored with sRGB nonlinear encoding in byte 1.%vulkan% specifies a two-component, 16-bit signed integer format that has an 8-bit R component in byte 0, and an 8-bit G component in byte 1.%vulkan% specifies a two-component, 16-bit unsigned integer format that has an 8-bit R component in byte 0, and an 8-bit G component in byte 1.%vulkan% specifies a two-component, 16-bit signed scaled integer format that has an 8-bit R component in byte 0, and an 8-bit G component in byte 1.%vulkan% specifies a two-component, 16-bit unsigned scaled integer format that has an 8-bit R component in byte 0, and an 8-bit G component in byte 1.%vulkan% specifies a two-component, 16-bit signed normalized format that has an 8-bit R component in byte 0, and an 8-bit G component in byte 1.%vulkan% specifies a two-component, 16-bit unsigned normalized format that has an 8-bit R component in byte 0, and an 8-bit G component in byte 1.&vulkan& specifies a one-component, 8-bit unsigned normalized format that has a single 8-bit R component stored with sRGB nonlinear encoding.&vulkan& specifies a one-component, 8-bit signed integer format that has a single 8-bit R component.&vulkan& specifies a one-component, 8-bit unsigned integer format that has a single 8-bit R component.&vulkan& specifies a one-component, 8-bit signed scaled integer format that has a single 8-bit R component.&vulkan& specifies a one-component, 8-bit unsigned scaled integer format that has a single 8-bit R component.&vulkan& specifies a one-component, 8-bit signed normalized format that has a single 8-bit R component.&vulkan& specifies a one-component, 8-bit unsigned normalized format that has a single 8-bit R component.&vulkan& specifies a four-component, 16-bit packed unsigned normalized format that has a 1-bit A component in bit 15, a 5-bit R component in bits 10..14, a 5-bit G component in bits 5..9, and a 5-bit B component in bits 0..4.&vulkan& specifies a four-component, 16-bit packed unsigned normalized format that has a 5-bit B component in bits 11..15, a 5-bit G component in bits 6..10, a 5-bit R component in bits 1..5, and a 1-bit A component in bit 0.&vulkan& specifies a four-component, 16-bit packed unsigned normalized format that has a 5-bit R component in bits 11..15, a 5-bit G component in bits 6..10, a 5-bit B component in bits 1..5, and a 1-bit A component in bit 0.&vulkan& specifies a three-component, 16-bit packed unsigned normalized format that has a 5-bit B component in bits 11..15, a 6-bit G component in bits 5..10, and a 5-bit R component in bits 0..4.&vulkan& specifies a three-component, 16-bit packed unsigned normalized format that has a 5-bit R component in bits 11..15, a 6-bit G component in bits 5..10, and a 5-bit B component in bits 0..4.&vulkan& specifies a four-component, 16-bit packed unsigned normalized format that has a 4-bit B component in bits 12..15, a 4-bit G component in bits 8..11, a 4-bit R component in bits 4..7, and a 4-bit A component in bits 0..3.&vulkan& specifies a four-component, 16-bit packed unsigned normalized format that has a 4-bit R component in bits 12..15, a 4-bit G component in bits 8..11, a 4-bit B component in bits 4..7, and a 4-bit A component in bits 0..3.&vulkan& specifies a two-component, 8-bit packed unsigned normalized format that has a 4-bit R component in bits 4..7, and a 4-bit G component in bits 0..3.&vulkan&, specifies that the format is not specified.K&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$K&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$None( #$&'(./0289:<>? 5)vulkanVkPhysicalDeviceASTCDecodeFeaturesEXT - Structure describing ASTC decode mode featuresMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkanVkImageViewASTCDecodeModeEXT - Structure describing the ASTC decode mode for an image view Valid Usage2VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02230  decodeMode must be one of  ,  , or  2VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02231 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-astc-decodeModeSharedExponentdecodeModeSharedExponent feature is not enabled,  decodeMode must not be  2VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02232 If  decodeMode is  the image view must3 not include blocks using any of the ASTC HDR modes.VUID-VkImageViewASTCDecodeModeEXT-format-04084 format of the image view must be one of the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#appendix-compressedtex-astcASTC Compressed Image FormatsIf format uses sRGB encoding then the  decodeMode has no effect.Valid Usage (Implicit)-VUID-VkImageViewASTCDecodeModeEXT-sType-sType sType must be  6VUID-VkImageViewASTCDecodeModeEXT-decodeMode-parameter  decodeMode must be a valid K valueSee AlsoK, &vulkan&features-astc-decodeModeSharedExponent decodeModeSharedExponent indicates whether the implementation supports decoding ASTC compressed formats to   internal precision.&vulkan decodeMode is the intermediate format used to decode ASTC compressed formats. &&&&&&&& &&&&&&&&gNone( #$&'(./0289:<>? 8vulkan4VkImageFormatListCreateInfo - Specify that an image can* be used with a particular set of formats DescriptionIf viewFormatCount is zero,  pViewFormats0 is ignored and the image is created as if the % structure were not included in the pNext chain of 1.Valid Usage (Implicit),VUID-VkImageFormatListCreateInfo-sType-sType sType must be  7VUID-VkImageFormatListCreateInfo-pViewFormats-parameter If viewFormatCount is not 0,  pViewFormats must( be a valid pointer to an array of viewFormatCount valid K valuesSee AlsoK, &vulkan pViewFormats is a pointer to an array of K& values specifying all formats which can+ be used when creating views of this image.&& &&  None( #$&'(./0289:<>? E&&&&&&&&&&&&None( #$&'(./0289:<>? GJvulkan3VkFilter - Specify filters used for texture lookups Description*These filters are described in detail in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-texel-filteringTexel Filtering.See Also, >, Y,  &vulkan& specifies linear filtering.&vulkan& specifies nearest filtering.J&&&&J&&&&&&&None( #$&'(./0289:<>? MvulkanVkPhysicalDeviceImageViewImageFormatInfoEXT - Structure for providing image view typeValid Usage (Implicit)See Also!, vulkanVkFilterCubicImageViewImageFormatPropertiesEXT - Structure for querying cubic filtering capabilities of an image view typeValid Usage (Implicit)?VUID-VkFilterCubicImageViewImageFormatPropertiesEXT-sType-sType sType must be   Valid Usage?VUID-VkFilterCubicImageViewImageFormatPropertiesEXT-pNext-02627 If the pNext chain of the U structure includes a  structure, the pNext chain of the U structure must include a  structure with an  imageViewType that is compatible with  imageTypeSee Alsoq, &vulkan filterCubic8 tells if image format, image type and image view type can be used with cubic filtering. This field is set by the implementation. User-specified value is ignored.&vulkanfilterCubicMinmax8 tells if image format, image type and image view type can be used with cubic filtering and minmax filtering. This field is set by the implementation. User-specified value is ignored.&vulkan imageViewType is a !. value specifying the type of the image view.VUID-VkPhysicalDeviceImageViewImageFormatInfoEXT-imageViewType-parameter  imageViewType must be a valid ! value &&&&&&&&&&& &&&&&&&&&&&None( #$&'(./0289:<>? O&vulkanVkFenceCreateFlagBits - Bitmask specifying initial state and behavior of a fenceSee Also&&vulkan& specifies that the fence object is created in the signaled state. Otherwise, it is created in the unsignaled state.&&&&&&&&&None( #$&'(./0289:<>? P&vulkan0VkEventCreateFlagBits - Event creation flag bits DescriptionVK_EVENT_CREATE_DEVICE_ONLY_BIT_KHR specifies that host event commands will not be used with this event.See Also&&&&&&&&&&None( #$&'(./0289:<>? t&&vulkanVkDynamicState - Indicate which dynamic state is taken from dynamic state commandsSee Also8&vulkan& specifies that the pViewportScalings state in  will be ignored and must be set dynamically with  = before any draws are performed with a pipeline state with  member viewportScalingEnable set to /&vulkan& specifies that the pDiscardRectangles state in  will be ignored and must be set dynamically with * before any draw or clear commands. The   and the number of active discard rectangles is still specified by the discardRectangleMode and discardRectangleCount members of .&vulkan& specifies that the sampleLocationsInfo state in  will be ignored and must be set dynamically with   before any draw or clear commands. Enabling custom sample locations is still indicated by the sampleLocationsEnable member of .&vulkan& specifies that the default stack size computation for the pipeline will be ignored and must be set dynamically with  - before any ray tracing calls are performed.&vulkan& specifies that the pShadingRatePalettes state in  will be ignored and must be set dynamically with   before any drawing commands.&vulkan&3 specifies that the coarse sample order state in  will be ignored and must be set dynamically with   before any drawing commands.&vulkan& specifies that the pExclusiveScissors state in  will be ignored and must be set dynamically with  before any drawing commands. The number of exclusive scissor rectangles used by a pipeline is still specified by the exclusiveScissorCount member of .&vulkan& specifies that state in  and  will be ignored and must be set dynamically with  or   before any drawing commands.&vulkan& specifies that the lineStippleFactor and lineStipplePattern state in  will be ignored and must be set dynamically with  = before any draws are performed with a pipeline state with  member stippledLineEnable set to /.&vulkan& specifies that the cullMode state in 8 will be ignored and must be set dynamically with   before any drawing commands.&vulkan& specifies that the  frontFace state in 8 will be ignored and must be set dynamically with   before any drawing commands.&vulkan& specifies that the topology state in 8 only specifies the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-classtopology class1, and the specific topology order and adjacency must be set dynamically with   before any drawing commands.&vulkan& specifies that the  viewportCount and  pViewports state in 8 will be ignored and must be set dynamically with   before any draw call.&vulkan& specifies that the  scissorCount and  pScissors state in 8 will be ignored and must be set dynamically with  before any draw call.&vulkan& specifies that the stride state in 8 will be ignored and must be set dynamically with  before any draw call.'vulkan' specifies that the depthTestEnable state in 8 will be ignored and must be set dynamically with  before any draw call.'vulkan' specifies that the depthWriteEnable state in 8 will be ignored and must be set dynamically with  before any draw call.'vulkan' specifies that the depthCompareOp state in 8 will be ignored and must be set dynamically with   before any draw call.'vulkan' specifies that the depthBoundsTestEnable state in 8 will be ignored and must be set dynamically with  before any draw call.'vulkan' specifies that the stencilTestEnable state in 8 will be ignored and must be set dynamically with  before any draw call.'vulkan' specifies that the failOp, passOp,  depthFailOp, and  compareOp states in 8 for both front and back will be ignored and must be set dynamically with = before any draws are performed with a pipeline state with 8 member stencilTestEnable set to /'vulkan' specifies that the pVertexInputState state will be ignored and must be set dynamically with   before any drawing commands'vulkan' specifies that the patchControlPoints state in 8 will be ignored and must be set dynamically with   before any drawing commands.'vulkan' specifies that the rasterizerDiscardEnable state in 8 will be ignored and must be set dynamically with  before any drawing commands.'vulkan' specifies that the depthBiasEnable state in 8 will be ignored and must be set dynamically with  before any drawing commands.'vulkan' specifies that the logicOp state in 8 will be ignored and must be set dynamically with   before any drawing commands.'vulkan' specifies that the primitiveRestartEnable state in 8 will be ignored and must be set dynamically with  before any drawing commands.'vulkan' specifies that the pColorWriteEnables state in  will be ignored and must be set dynamically with  before any draw call.'vulkan' specifies that the  reference state in 8 for both front and back will be ignored and must be set dynamically with  = before any draws are performed with a pipeline state with 8 member stencilTestEnable set to /'vulkan' specifies that the  writeMask state in 8 for both front and back will be ignored and must be set dynamically with  = before any draws are performed with a pipeline state with 8 member stencilTestEnable set to /'vulkan' specifies that the  compareMask state in 8 for both front and back will be ignored and must be set dynamically with  = before any draws are performed with a pipeline state with 8 member stencilTestEnable set to /'vulkan' specifies that the minDepthBounds and maxDepthBounds states of 8 will be ignored and must be set dynamically with  = before any draws are performed with a pipeline state with 8 member depthBoundsTestEnable set to /.'vulkan' specifies that the blendConstants state in 8 will be ignored and must be set dynamically with  = before any draws are performed with a pipeline state with 8 member  blendEnable set to /> and any of the blend functions using a constant blend color.'vulkan' specifies that the depthBiasConstantFactor, depthBiasClamp and depthBiasSlopeFactor states in 8 will be ignored and must be set dynamically with  & before any draws are performed with depthBiasEnable in 8 set to /.'vulkan' specifies that the  lineWidth state in 8 will be ignored and must be set dynamically with   before any drawing commands that generate line primitives for the rasterizer.'vulkan' specifies that the  pScissors state in 8 will be ignored and must be set dynamically with  before any drawing commands. The number of scissor rectangles used by a pipeline is still specified by the  scissorCount member of 8.'vulkan' specifies that the  pViewports state in 8 will be ignored and must be set dynamically with   before any drawing commands. The number of viewports used by a pipeline is still specified by the  viewportCount member of 8.'&''''''''''''''''''''''&&&&&&&&&&&&&&&&&''''''''''''''''''''''&&&&&&&&&&&&&&&&''''''''''''''''''''''&&&&&&&&&&&&&&&None( #$&'(./0289:<>? v 'vulkanVkDeviceQueueCreateFlagBits - Bitmask specifying behavior of the queueSee Also''vulkan'? specifies that the device queue is a protected-capable queue.'''''''''None( #$&'(./0289:<>? w-'vulkan-VkDeviceCreateFlags - Reserved for future use Description' is a bitmask type for setting a mask, but is currently reserved for future use.See Also ''''None( #$&'(./0289:<>? 'vulkanVkDescriptorType - Specifies the type of a descriptor in a descriptor set Description' specifies a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-samplersampler descriptor. ' specifies a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-combinedimagesampler!combined image sampler descriptor.' specifies a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampledimagesampled image descriptor.' specifies a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimagestorage image descriptor.' specifies a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformtexelbufferuniform texel buffer descriptor.' specifies a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagetexelbufferstorage texel buffer descriptor.' specifies a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbufferuniform buffer descriptor.' specifies a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebufferstorage buffer descriptor.' specifies a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbufferdynamic!dynamic uniform buffer descriptor.' specifies a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebufferdynamic!dynamic storage buffer descriptor.' specifies an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-inputattachmentinput attachment descriptor.' specifies an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-inlineuniformblockinline uniform block.' specifies a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-mutabledescriptor of mutable type.2When a descriptor set is updated via elements of  , members of  pImageInfo,  pBufferInfo and pTexelBufferView are only accessed by the implementation when they correspond to descriptor type being defined - otherwise they are ignored. The members accessed are as follows for each descriptor type:For ' , only the sampler% member of each element of  :: pImageInfo is accessed.For ', ' , or ' , only the  imageView and  imageLayout! members of each element of  :: pImageInfo are accessed.For '+, all members of each element of  :: pImageInfo are accessed.For ', ', ' , or '+, all members of each element of  :: pBufferInfo are accessed.For ' or ', each element of  ::pTexelBufferView is accessed.!When updating descriptors with a descriptorType of ', none of the  pImageInfo,  pBufferInfo, or pTexelBufferView members are accessed, instead the source data of the descriptor update operation is taken from the  structure in the pNext chain of  $. When updating descriptors with a descriptorType of ', none of the  pImageInfo,  pBufferInfo, or pTexelBufferView members are accessed, instead the source data of the descriptor update operation is taken from the  structure in the pNext chain of  $. When updating descriptors with a descriptorType of ', none of the  pImageInfo,  pBufferInfo, or pTexelBufferView members are accessed, instead the source data of the descriptor update operation is taken from the  structure in the pNext chain of  .See Also  ,   , J , ,  ,  ''''''''''''''''' ''''''''''''''''''''''''''''''''None( #$&'(./0289:<>? vulkanVkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE - Structure describing whether the mutable descriptor type is supportedMembers/This structure describes the following feature: DescriptionsType is the type of this structure.pNext is NULL; or a pointer to a structure extending this structure.features-mutableDescriptorType mutableDescriptorType( indicates that the implementation must support using the ' of   with at least the following descriptor types, where any combination of the types must be supported:      Additionally, mutableDescriptorType indicates that: Non-uniform descriptor indexing must/ be supported if all descriptor types in a  for   have the corresponding non-uniform indexing features enabled in ]. with descriptorType of   relaxes the list of required descriptor types to the descriptor types which have the corresponding update-after-bind feature enabled in ].(Dynamically uniform descriptor indexing must/ be supported if all descriptor types in a  for  > have the corresponding dynamic indexing features enabled.  must be supported.  must be supported.If the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)VUID-VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE-sType-sType sType must be  See Alsoq, vulkanVkMutableDescriptorTypeListVALVE - Structure describing descriptor types that a given descriptor may mutate to Valid Usage?VUID-VkMutableDescriptorTypeListVALVE-descriptorTypeCount-04597 descriptorTypeCount must not be 0. if the corresponding binding is of  ? U'vulkanVkDescriptorSetLayoutCreateFlagBits - Bitmask specifying descriptor set layout propertiesSee Also''vulkan'3 specifies that descriptor sets using this layout must8 be allocated from a descriptor pool created with the   bit set. Descriptor set layouts created with this bit set have alternate limits for the maximum number of descriptors per-stage and per-pipeline layout. The non-UpdateAfterBind limits only count descriptors in sets created without this flag. The UpdateAfterBind limits count all descriptors, but the limits may0 be higher than the non-UpdateAfterBind limits.'vulkan'! specifies that descriptor sets must not be allocated using this layout, and descriptors are instead pushed by  .'vulkan'3 specifies that descriptor sets using this layout must8 be allocated from a descriptor pool created with the   bit set. Descriptor set layouts created with this bit have no expressable limit for maximum number of descriptors per-stage. Host descriptor sets are limited only by available host memory, but may be limited for implementation specific reasons. Implementations may limit the number of supported descriptors to UpdateAfterBind limits or non-UpdateAfterBind limits, whichever is larger.'''''' '''''''''None( #$&'(./0289:<>? Ivulkan4VkDescriptorPoolResetFlags - Reserved for future use DescriptionI is a bitmask type for setting a mask, but is currently reserved for future use.See Also I'I'None( #$&'(./0289:<>? 'vulkanVkDescriptorPoolCreateFlagBits - Bitmask specifying certain supported operations on a descriptor poolSee Also''vulkan': specifies that descriptor sets allocated from this pool can include bindings with the  bit set. It is valid to allocate descriptor sets that have bindings that do not set the  bit from a pool that has ' set.'vulkan' specifies that this descriptor pool and the descriptor sets allocated from it reside entirely in host memory and cannot be bound. Descriptor sets allocated from this pool are partially exempt from the external synchronization requirement in   and  . Descriptor sets and their descriptors can be updated concurrently in different threads, though the same descriptor must- not be updated concurrently by two threads.'vulkan'! specifies that descriptor sets can? return their individual allocations to the pool, i.e. all of  ,  , and   are allowed. Otherwise, descriptor sets allocated from the pool must9 not be individually freed back to the pool, i.e. only   and   are allowed.'''''' ''''''''']None( #$&'(./0289:<>? 3vulkanVkPhysicalDeviceDescriptorIndexingProperties - Structure describing descriptor indexing properties that can be supported by an implementation DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.Valid Usage (Implicit)See Alsoq, vulkanVkPhysicalDeviceDescriptorIndexingFeatures - Structure describing descriptor indexing features that can be supported by an implementationMembers0This structure describes the following features: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkanVkDescriptorSetVariableDescriptorCountLayoutSupport - Structure returning information about whether a descriptor set layout can be supported DescriptionIf the   structure specified in W :: pCreateInfo- includes a variable-sized descriptor, then  supported is determined assuming the requested size of the variable-sized descriptor, and maxVariableDescriptorCount5 is set to the maximum size of that descriptor that can be successfully created (which is greater than or equal to the requested size passed in). If the   structure does not include a variable-sized descriptor, or if the ::(descriptorBindingVariableDescriptorCount feature is not enabled, then maxVariableDescriptorCount is set to zero. For the purposes of this command, a variable-sized descriptor binding with a descriptorCount of zero is treated as if the descriptorCount is one, and thus the binding is not ignored and the maximum descriptor count will be returned. If the layout is not supported, then the value written to maxVariableDescriptorCount is undefined.Valid Usage (Implicit)See AlsovulkanVkDescriptorSetVariableDescriptorCountAllocateInfo - Structure specifying additional allocation parameters for descriptor sets DescriptionIf descriptorSetCount3 is zero or this structure is not included in the pNext chain, then the variable lengths are considered to be zero. Otherwise, pDescriptorCounts[i] is the number of descriptors in the variable count descriptor binding in the corresponding descriptor set layout. If the variable count descriptor binding in the corresponding descriptor set layout has a descriptor type of  then pDescriptorCounts4[i] specifies the binding@s capacity in bytes. If  :: pSetLayouts[i] does not include a variable count descriptor binding, then pDescriptorCounts[i] is ignored. Valid UsageVUID-VkDescriptorSetVariableDescriptorCountAllocateInfo-descriptorSetCount-03045 If descriptorSetCount is not zero, descriptorSetCount must equal  ::descriptorSetCountVUID-VkDescriptorSetVariableDescriptorCountAllocateInfo-pSetLayouts-03046 If  :: pSetLayouts7[i] has a variable descriptor count binding, then pDescriptorCounts [i] must be less than or equal to the descriptor count specified for that binding when the descriptor set layout was createdValid Usage (Implicit)VUID-VkDescriptorSetVariableDescriptorCountAllocateInfo-sType-sType sType must be  VUID-VkDescriptorSetVariableDescriptorCountAllocateInfo-pDescriptorCounts-parameter If descriptorSetCount is not 0, pDescriptorCounts must( be a valid pointer to an array of descriptorSetCount uint32_t valuesSee AlsovulkanVkDescriptorSetLayoutBindingFlagsCreateInfo - Structure specifying creation flags for descriptor set layout bindings DescriptionIf  bindingCount6 is zero or if this structure is not included in the pNext chain, the  for each descriptor set layout binding is considered to be zero. Otherwise, the descriptor set layout binding at  :: pBindings[i] uses the flags in  pBindingFlags[i]. Valid UsageVUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-bindingCount-03002 If  bindingCount is not zero,  bindingCount must equal  :: bindingCountextension-limits-maxDescriptorSetUpdateAfterBindUniformBuffers -maxDescriptorSetUpdateAfterBindUniformBuffers is similar to maxDescriptorSetUniformBuffers but counts descriptors from descriptor sets created with or without the ' bit set.(vulkanextension-limits-maxDescriptorSetUpdateAfterBindUniformBuffersDynamic 4maxDescriptorSetUpdateAfterBindUniformBuffersDynamic is similar to %maxDescriptorSetUniformBuffersDynamic but counts descriptors from descriptor sets created with or without the ' bit set. While an application can allocate dynamic uniform buffer descriptors from a pool created with the '", bindings for these descriptors must not be present in any descriptor set layout that includes bindings created with .(vulkan>extension-limits-maxDescriptorSetUpdateAfterBindStorageBuffers -maxDescriptorSetUpdateAfterBindStorageBuffers is similar to maxDescriptorSetStorageBuffers but counts descriptors from descriptor sets created with or without the ' bit set.(vulkanextension-limits-maxDescriptorSetUpdateAfterBindStorageBuffersDynamic 4maxDescriptorSetUpdateAfterBindStorageBuffersDynamic is similar to %maxDescriptorSetStorageBuffersDynamic but counts descriptors from descriptor sets created with or without the ' bit set. While an application can allocate dynamic storage buffer descriptors from a pool created with the '", bindings for these descriptors must not be present in any descriptor set layout that includes bindings created with .(vulkan=extension-limits-maxDescriptorSetUpdateAfterBindSampledImages ,maxDescriptorSetUpdateAfterBindSampledImages is similar to maxDescriptorSetSampledImages but counts descriptors from descriptor sets created with or without the ' bit set.(vulkan=extension-limits-maxDescriptorSetUpdateAfterBindStorageImages ,maxDescriptorSetUpdateAfterBindStorageImages is similar to maxDescriptorSetStorageImages but counts descriptors from descriptor sets created with or without the ' bit set.(vulkanextension-limits-maxDescriptorSetUpdateAfterBindInputAttachments /maxDescriptorSetUpdateAfterBindInputAttachments is similar to  maxDescriptorSetInputAttachments but counts descriptors from descriptor sets created with or without the ' bit set.(vulkan? $((((((((((((((((((((((((((((((((((((((((((((((None( #$&'(./0289:<>? (GvulkanVkDependencyFlagBits - Bitmask specifying how execution and memory dependencies are formedSee AlsoH(vulkan(" specifies that dependencies are  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-device-local-dependenciesnon-device-local.(vulkan( specifies that a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-barriers-subpass-self-dependenciessubpass has more than one view.(vulkan(& specifies that dependencies will be  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regionsframebuffer-local.G((((H HG(((((((XNone( #$&'(./0289:<>? PvulkanVkRenderPassMultiviewCreateInfo - Structure containing multiview information for all subpasses Description*When a subpass uses a non-zero view mask,  multiview functionality is considered to be enabled. Multiview is all-or-nothing for a render pass - that is, either all subpasses must3 have a non-zero view mask (though some subpasses may have only one view) or all must be zero. Multiview causes all drawing and clear commands in the subpass to behave as if they were broadcast to each view, where a view is represented by one layer of the framebuffer attachments. All draws and clears are broadcast to each  view index whose bit is set in the view mask. The view index is provided in the  ViewIndex shader input variable, and color, depth/stencil, and input attachments all read/write the layer of the framebuffer corresponding to the view index.If the view mask is zero for all subpasses, multiview is considered to be disabled and all drawing commands execute normally, without this additional broadcasting.Some implementations may, not support multiview in conjunction with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiview-gsgeometry shaders or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiview-tesstessellation shaders. When multiview is enabled, the ( bit in a dependency can be used to express a view-local dependency, meaning that each view in the destination subpass depends on a single view in the source subpass. Unlike pipeline barriers, a subpass dependency can potentially have a different view mask in the source subpass and the destination subpass. If the dependency is view-local, then each view (dstView) in the destination subpass depends on the view dstView +  pViewOffsets[dependency] in the source subpass. If there is not such a view in the source subpass, then this dependency does not affect that view in the destination subpass. If the dependency is not view-local, then all views in the destination subpass depend on all views in the source subpass, and the view offset is ignored. A non-zero view offset is not allowed in a self-dependency.The elements of pCorrelationMasks are a set of masks of views indicating that views in the same mask may exhibit spatial coherency between the views, making it more efficient to render them concurrently. Correlation masks must not have a functional effect on the results of the multiview rendering.When multiview is enabled, at the beginning of each subpass all non-render pass state is undefined. In particular, each time  or " is called the graphics pipeline must be bound, any relevant descriptor sets or vertex/index buffers must= be bound, and any relevant dynamic state or push constants must be set before they are used.A multiview subpass can declare that its shaders will write per-view attributes for all views in a single invocation, by setting the   bit in the subpass description. The only supported per-view attributes are position and viewport mask, and per-view position and viewport masks are written to output array variables decorated with PositionPerViewNV and ViewportMaskPerViewNV, respectively. If VK_NV_viewport_array2 is not supported and enabled, ViewportMaskPerViewNV must- not be used. Values written to elements of PositionPerViewNV and ViewportMaskPerViewNV must not depend on the  ViewIndex. The shader must1 also write to an output variable decorated with Position, and the value written to Position must equal the value written to PositionPerViewNV[ ViewIndex]. Similarly, if ViewportMaskPerViewNV is written to then the shader must2 also write to an output variable decorated with ViewportMaskNV, and the value written to ViewportMaskNV must equal the value written to ViewportMaskPerViewNV[ ViewIndex6]. Implementations will either use values taken from Position and ViewportMaskNV and invoke the shader once for each view, or will use values taken from PositionPerViewNV and ViewportMaskPerViewNV; and invoke the shader fewer times. The values written to Position and ViewportMaskNV must& not depend on the values written to PositionPerViewNV and ViewportMaskPerViewNV, or vice versa (to allow compilers to eliminate the unused outputs). All attributes that do not have  *PerViewNV counterparts must not depend on  ViewIndex.Per-view attributes are all-or-nothing for a subpass. That is, all pipelines compiled against a subpass that includes the   bit must" write per-view attributes to the  *PerViewNV[]8 shader outputs, in addition to the non-per-view (e.g. Position) outputs. Pipelines compiled against a subpass that does not include this bit must not include the  *PerViewNV[] outputs in their interfaces. Valid Usage? ] ))))))))))) )))))))))))None( #$&'(./0289:<>? `Evulkan9VkCullModeFlagBits - Bitmask controlling triangle culling DescriptionFollowing culling, fragments are produced for any triangles which have not been discarded.See AlsoF)vulkan), specifies that all triangles are discarded.)vulkan)3 specifies that back-facing triangles are discarded)vulkan)5 specifies that front-facing triangles are discarded)vulkan)* specifies that no triangles are discardedE)))))F FE)))))))))None( #$&'(./0289:<>? e)vulkan8VkComponentSwizzle - Specify how a component is swizzled DescriptionSetting the identity swizzle on a component is equivalent to setting the identity mapping on that component. That is: ComponentIdentity Mapping components.r) components.g) components.b) components.a)!Component Mappings Equivalent To )See Also2 )vulkan) specifies that the component is set to the value of the A component of the image.)vulkan) specifies that the component is set to the value of the B component of the image.)vulkan) specifies that the component is set to the value of the G component of the image.)vulkan) specifies that the component is set to the value of the R component of the image.)vulkan) specifies that the component is set to either 1 or 1.0, depending on whether the type of the image view format is integer or floating-point respectively, as determined by the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-definitionFormat Definition section for each .)vulkan)- specifies that the component is set to zero.)vulkan)> specifies that the component is set to the identity swizzle. )))))))))))))))))))))))))None( #$&'(./0289:<>? h Dvulkan)VkCompareOp - Stencil comparison functionSee Also8, >, 8,  , )vulkan)+ specifies that the test evaluates to true.)vulkan)) specifies that the test evaluates A D B.)vulkan)) specifies that the test evaluates A D B.)vulkan)) specifies that the test evaluates A > B.)vulkan)) specifies that the test evaluates A D B.)vulkan)) specifies that the test evaluates A = B.)vulkan)) specifies that the test evaluates A < B.)vulkan), specifies that the test evaluates to false. D)))))))))D)))))))))))))))))None( #$&'(./0289:<>? j)BvulkanVkCommandPoolResetFlagBits - Bitmask controlling behavior of a command pool resetSee AlsoC)vulkan) specifies that resetting a command pool recycles all of the resources from the command pool back to the system.B))CCB)))None( #$&'(./0289:<>? n@)vulkanVkCommandPoolCreateFlagBits - Bitmask specifying usage behavior for a command poolSee Also))vulkan) specifies that command buffers allocated from the pool are protected command buffers.)vulkan) allows any command buffer allocated from a pool to be individually reset to the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle initial state; either by calling  +, or via the implicit reset when calling  +. If this flag is not set on a pool, then   must? not be called for any command buffer allocated from that pool.)vulkan) specifies that command buffers allocated from the pool will be short-lived, meaning that they will be reset or freed in a relatively short timeframe. This flag may be used by the implementation to control memory allocation behavior within the pool.)))))) )))))))))None( #$&'(./0289:<>? qH)vulkanVkCommandBufferUsageFlagBits - Bitmask specifying usage behavior for command bufferSee Also))vulkan)" specifies that a command buffer can be resubmitted to a queue while it is in the /pending state/, and recorded into multiple primary command buffers.)vulkan) specifies that a secondary command buffer is considered to be entirely inside a render pass. If this is a primary command buffer, then this bit is ignored.)vulkan) specifies that each recording of the command buffer will only be submitted once, and the command buffer will be reset and recorded again between each submission.)))))) ))))))))) None( #$&'(./0289:<>? s@vulkanVkCommandBufferResetFlagBits - Bitmask controlling behavior of a command buffer resetSee AlsoA)vulkan) specifies that most or all memory resources currently owned by the command buffer should be returned to the parent command pool. If this flag is not set, then the command buffer may hold onto memory resources and reuse them when recording commands.  commandBuffer is moved to the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle initial state.@))AA@)))None( #$&'(./0289:<>? u3)vulkanVkCommandBufferLevel - Enumerant specifying a command buffer levelSee Also)vulkan)& specifies a secondary command buffer.)vulkan)$ specifies a primary command buffer.))))))))))None( #$&'(./0289:<>? zT*vulkanVkColorComponentFlagBits - Bitmask controlling which components are written to the framebuffer DescriptionThe color write mask operation is applied regardless of whether blending is enabled.3The color write mask operation is applied only if  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-color-write-enableColor Write Enable is enabled for the respective attachment. Otherwise the color write mask is ignored and writes to all components of the attachment are disabled.See Also**vulkan* specifies that the A value is written to the color attachment for the appropriate sample. Otherwise, the value in memory is unmodified.*vulkan* specifies that the B value is written to the color attachment for the appropriate sample. Otherwise, the value in memory is unmodified.*vulkan* specifies that the G value is written to the color attachment for the appropriate sample. Otherwise, the value in memory is unmodified.*vulkan* specifies that the R value is written to the color attachment for the appropriate sample. Otherwise, the value in memory is unmodified.******* ***********None( #$&'(./0289:<>? {*vulkan1VkBufferViewCreateFlags - Reserved for future use Description* is a bitmask type for setting a mask, but is currently reserved for future use.See Also****None( #$&'(./0289:<>? *vulkanVkBufferUsageFlagBits - Bitmask specifying allowed usage of a bufferSee Also**vulkan* specifies that the buffer can3 be used to retrieve a buffer device address via c  and use that address to access the buffer@s memory from a shader.*vulkan* specifies that the buffer is suitable for using for binding as a transform feedback buffer with .*vulkan* specifies that the buffer is suitable for using as a counter buffer with  and .*vulkan*; specifies that the buffer is suitable for passing as the buffer parameter to  .*vulkan* specifies that the buffer is suitable for use as a read-only input to an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-buildingacceleration structure build.*vulkan* specifies that the buffer is suitable for storage space for a q .*vulkan*6 specifies that the buffer is suitable for use as a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shader-binding-tableShader Binding Table.*vulkan*; specifies that the buffer is suitable for passing as the buffer parameter to , , , , or *. It is also suitable for passing as the buffer member of , or sequencesCountBuffer or sequencesIndexBuffer or preprocessedBuffer member of *vulkan* specifies that the buffer is suitable for passing as an element of the pBuffers array to .*vulkan*; specifies that the buffer is suitable for passing as the buffer parameter to .*vulkan* specifies that the buffer can be used in a   suitable for occupying a 0  slot either of type   or  .*vulkan* specifies that the buffer can be used in a   suitable for occupying a 0  slot either of type   or  .*vulkan* specifies that the buffer can be used to create a 0  suitable for occupying a 0  slot of type  .*vulkan* specifies that the buffer can be used to create a 0  suitable for occupying a 0  slot of type  .*vulkan* specifies that the buffer can3 be used as the destination of a transfer command.*vulkan* specifies that the buffer can be used as the source of a transfer command (see the definition of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-transfer).*******************#***********************************None( #$&'(./0289:<>? *vulkanVkBufferCreateFlagBits - Bitmask specifying additional parameters of a buffer DescriptionSee  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-sparseresourcefeaturesSparse Resource Features and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#featuresPhysical Device Features for details of the sparse memory features supported on a device.See Also**vulkan*2 specifies that the buffer is a protected buffer.*vulkan*& specifies that the buffer@s address can be saved and reused on a subsequent run (e.g. for trace capture and replay), see c for more detail.*vulkan* specifies that the buffer will be backed using sparse memory binding with memory ranges that might also simultaneously be backing another buffer (or another portion of the same buffer). Buffers created with this flag must also be created with the * flag.*vulkan* specifies that the buffer can be partially backed using sparse memory binding. Buffers created with this flag must also be created with the * flag.*vulkan* specifies that the buffer will be backed using sparse memory binding.******** *************None( #$&'(./0289:<>? *vulkan=VkBorderColor - Specify border color used for texture lookups Description)These colors are described in detail in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-texel-replacementTexel Replacement.See Also>*vulkan* indicates that a  structure is included in the >::pNext? chain which contains the color data in floating-point format.*vulkan* indicates that a  structure is included in the >::pNext8 chain which contains the color data in integer format.*vulkan*3 specifies an opaque, integer format, white color.*vulkan*: specifies an opaque, floating-point format, white color.*vulkan*3 specifies an opaque, integer format, black color.*vulkan*: specifies an opaque, floating-point format, black color.*vulkan*7 specifies a transparent, integer format, black color.*vulkan*> specifies a transparent, floating-point format, black color. ****************************None( #$&'(./0289:<>? *vulkan+VkBlendOp - Framebuffer blending operations DescriptionThe semantics of the basic blend operations are described in the table below:*RGB ComponentsAlpha Component+ R = Rs0  Sr + Rd  Dr G = Gs0  Sg + Gd  Dg B = Bs0  Sb + Bd  DbA = As0  Sa + Ad  Da + R = Rs0  Sr - Rd  Dr G = Gs0  Sg - Gd  Dg B = Bs0  Sb - Bd  DbA = As0  Sa - Ad  Da + R = Rd  Dr - Rs0  Sr G = Gd  Dg - Gs0  Sg B = Bd  Db - Bs0  SbA = Ad  Da - As0  Sa + /R = min(Rs0,Rd) G = min(Gs0,Gd) B = min(Bs0,Bd)A = min(As0,Ad) + /R = max(Rs0,Rd) G = max(Gs0,Gd) B = max(Bs0,Bd)A = max(As0,Ad) Basic Blend Operations2In this table, the following conventions are used:Rs0, Gs0, Bs0 and As0 represent the first source color R, G, B, and A components, respectively.Rd, Gd, Bd and Ad represent the R, G, B, and A components of the destination color. That is, the color currently in the corresponding color attachment for this fragment/sample.Sr, Sg, Sb and Sa represent the source blend factor R, G, B, and A components, respectively.Dr, Dg, Db and Da represent the destination blend factor R, G, B, and A components, respectively.The blending operation produces a new set of values R, G, B and A, which are written to the framebuffer attachment. If blending is not enabled for this attachment, then R, G, B and A are assigned Rs0, Gs0, Bs0 and As0, respectively.If the color attachment is fixed-point, the components of the source and destination values and blend factors are each clamped to [0,1] or [-1,1] respectively for an unsigned normalized or signed normalized color attachment prior to evaluating the blend operations. If the color attachment is floating-point, no clamping occurs.See Also85*++++++++++*******************************************++++++++++******************************************++++++++++*****************************************None( #$&'(./0289:<>? +vulkan,VkBlendFactor - Framebuffer blending factors DescriptionThe semantics of the enum values are described in the table below:+ ,RGB Blend Factors (Sr,Sg,Sb) or (Dr,Dg,Db) Alpha Blend Factor (Sa or Da)+(0,0,0)0+(1,1,1)1+ (Rs0,Gs0,Bs0)As0+(1-Rs0,1-Gs0,1-Bs0)1-As0+ (Rd,Gd,Bd)Ad+(1-Rd,1-Gd,1-Bd)1-Ad+ (As0,As0,As0)As0+(1-As0,1-As0,1-As0)1-As0+ (Ad,Ad,Ad)Ad+(1-Ad,1-Ad,1-Ad)1-Ad+ (Rc,Gc,Bc)Ac+(1-Rc,1-Gc,1-Bc)1-Ac+ (Ac,Ac,Ac)Ac+(1-Ac,1-Ac,1-Ac)1-Ac+ (f,f,f); f = min(As0,1-Ad)1 + (Rs1,Gs1,Bs1)As1+(1-Rs1,1-Gs1,1-Bs1)1-As1+ (As1,As1,As1)As1+(1-As1,1-As1,1-As1)1-As1 Blend Factors2In this table, the following conventions are used:Rs0,Gs0,Bs0 and As0 represent the first source color R, G, B, and A components, respectively, for the fragment output location corresponding to the color attachment being blended.Rs1,Gs1,Bs1 and As1 represent the second source color R, G, B, and A components, respectively, used in dual source blending modes, for the fragment output location corresponding to the color attachment being blended.Rd,Gd,Bd and Ad represent the R, G, B, and A components of the destination color. That is, the color currently in the corresponding color attachment for this fragment/sample.Rc,Gc,Bc and Ac represent the blend constant R, G, B, and A components, respectively.See Also8+++++++++++++++++++++(++++++++++++++++++++++++++++++++++++++++None( #$&'(./0289:<>? s+vulkanVkAttachmentStoreOp - Specify how contents of an attachment are treated at the end of a subpass DescriptionNote+ can cause contents generated during previous render passes to be discarded before reaching memory, even if no write to the attachment occurs during the current render pass.See Also7, d+vulkan+ specifies the contents within the render area are not modified after rendering. However, if the attachment was written to during the render pass, the contents of the attachment will be undefined inside the render area.+vulkan+ specifies the contents within the render area are not needed after rendering, and may be discarded; the contents of the attachment will be undefined inside the render area. For attachments with a depth/stencil format, this uses the access type  . For attachments with a color format, this uses the access type  .+vulkan+ specifies the contents generated during the render pass and within the render area are written to memory. For attachments with a depth/stencil format, this uses the access type  . For attachments with a color format, this uses the access type  .+++++++++++++None( #$&'(./0289:<>? ++++++++++None( #$&'(./0289:<>? +vulkanVkAttachmentLoadOp - Specify how contents of an attachment are treated at the beginning of a subpassSee Also7, d+vulkan+ specifies that the previous contents of the image within the render area will be preserved, but the contents of the attachment will be undefined inside the render pass. No access type is used as the image is not accessed.+vulkan+ specifies that the previous contents within the area need not be preserved; the contents of the attachment will be undefined inside the render area. For attachments with a depth/stencil format, this uses the access type  . For attachments with a color format, this uses the access type  .+vulkan+ specifies that the contents within the render area will be cleared to a uniform value, which is specified when a render pass instance is begun. For attachments with a depth/stencil format, this uses the access type  . For attachments with a color format, this uses the access type  .+vulkan+ specifies that the previous contents of the image within the render area will be preserved. For attachments with a depth/stencil format, this uses the access type  . For attachments with a color format, this uses the access type  .++++++ ++++++++++None( #$&'(./0289:<>? +vulkanVkAttachmentDescriptionFlagBits - Bitmask specifying additional properties of an attachmentSee Also++vulkan+ specifies that the attachment aliases the same device memory as other attachments.+++++++++None( #$&'(./0289:<>? +vulkanVkAccessFlagBits - Bitmask specifying memory access types that will participate in a memory dependency DescriptionThese values all have the same value/meaning as the equivalently named values for  .Certain access types are only performed by a subset of pipeline stages. Any synchronization command that takes both stage masks and access masks uses both to define the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopes - only the specified access types performed by the specified stages are included in the access scope. An application must not specify an access flag in a synchronization command if it does not include a pipeline stage in the corresponding stage mask that is able to perform accesses of that type. The following table lists, for each access flag, which pipeline stages can perform that type of access. Access flagSupported pipeline stages+    ,   +  +  +   ,   ,   ,   ,   ,   ,   ,   , or   +   ,   ,   ,   ,   ,   ,   ,   ,   , or   +   ,   ,   ,   ,   ,   ,   ,   , or   +  +  +  +   , or   +   , or   +    or   +    or   +  +  +Any+Any+  +  +  +  +    +  +  +   ,   +   ,   ,   ,   ,   ,   ,   ,   ,   , or   +  +  Supported access typesSee Also++vulkan+ specifies write access to a transform feedback buffer made when transform feedback is active. Such access occurs in the    pipeline stage.+vulkan+ specifies read access to a transform feedback counter buffer which is read when ' executes. Such access occurs in the    pipeline stage.+vulkan+ specifies write access to a transform feedback counter buffer which is written when ' executes. Such access occurs in the    pipeline stage.+vulkan+ specifies read access to a predicate as part of conditional rendering. Such access occurs in the    pipeline stage.+vulkan+ specifies read access to  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpasscolor attachments, including  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advancedadvanced blend operations. Such access occurs in the    pipeline stage.+vulkan+ specifies read access to an acceleration structure as part of a trace, build, or copy command, or to an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-scratch%acceleration structure scratch buffer9 as part of a build command. Such access occurs in the    pipeline stage or    pipeline stage.+vulkan+: specifies write access to an acceleration structure or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-scratch%acceleration structure scratch buffer as part of a build or copy command. Such access occurs in the    pipeline stage.+vulkan+ specifies read access to a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachmentfragment density map attachment during dynamic  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragmentdensitymapopsfragment density map operations Such access occurs in the    pipeline stage.+vulkan+ specifies read access to a fragment shading rate attachment during rasterization. Such access occurs in the    pipeline stage.+vulkan+) specifies reads from buffer inputs to  . Such access occurs in the    pipeline stage.+vulkan+ specifies writes to the target command buffer:VkBuffer preprocess outputs in  . Such access occurs in the    pipeline stage.+vulkan+ specifies no accesses.+vulkan+ specifies all write accesses. It is always valid in any access mask, and is treated as equivalent to setting all WRITE. access flags that are valid where it is used.+vulkan+ specifies all read accesses. It is always valid in any access mask, and is treated as equivalent to setting all READ/ access flags that are valid where it is used.+vulkan+ specifies write access by a host operation. Accesses of this type are not performed through a resource, but directly on memory. Such access occurs in the    pipeline stage.+vulkan+ specifies read access by a host operation. Accesses of this type are not performed through a resource, but directly on memory. Such access occurs in the    pipeline stage.+vulkan+5 specifies write access to an image or buffer in a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clearsclear or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copiescopy( operation. Such access occurs in the   pipeline stage.+vulkan+4 specifies read access to an image or buffer in a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copiescopy( operation. Such access occurs in the   pipeline stage.+vulkan+ specifies write access to a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpassdepth/stencil attachment, via  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-ds-statedepth or stencil operations or via certain  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops!subpass load and store operations. Such access occurs in the    or    pipeline stages.+vulkan+ specifies read access to a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpassdepth/stencil attachment, via  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-ds-statedepth or stencil operations or via certain  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-opssubpass load operations. Such access occurs in the    or    pipeline stages.+vulkan+ specifies write access to a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass3color, resolve, or depth/stencil resolve attachment during a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass render pass or via certain  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops!subpass load and store operations. Such access occurs in the    pipeline stage.+vulkan+ specifies read access to a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpasscolor attachment, such as via  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blendingblending,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-logicoplogic operations, or via certain  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-opssubpass load operations. It does not include  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advancedadvanced blend operations. Such access occurs in the    pipeline stage.+vulkan+ specifies write access to a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebufferstorage buffer,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-physical-storage-bufferphysical storage buffer,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagetexelbufferstorage texel buffer, or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage storage image in any shader pipeline stage.+vulkan+ specifies read access to a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbufferuniform buffer,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformtexelbufferuniform texel buffer,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampledimage sampled image,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebufferstorage buffer,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-physical-storage-bufferphysical storage buffer,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shader-binding-tableshader binding table,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagetexelbufferstorage texel buffer, or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage storage image in any shader pipeline stage.+vulkan+ specifies read access to an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpassinput attachment within a render pass during fragment shading. Such access occurs in the    pipeline stage.+vulkan+ specifies read access to a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbufferuniform buffer in any shader pipeline stage.+vulkan+ specifies read access to a vertex buffer as part of a drawing command, bound by . Such access occurs in the    pipeline stage.+vulkan+ specifies read access to an index buffer as part of an indexed drawing command, bound by . Such access occurs in the    pipeline stage.+vulkan+ specifies read access to indirect command data read as part of an indirect build, trace, drawing or dispatching command. Such access occurs in the    pipeline stage. ++++++++++++++++++++++++++++++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ None( #$&'(./0289:<>? @))AB))CD)))))))))E)))))FG((((HI'J&&&&K$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&$&L###M""""""""""""""""NO""""""""""""""""""""""P!!!!Q!!!!R!!!!!!!!!!!!ST!!!!!U ! !V W  XYZ[\]^_`abcdefghi   !!!!!!!!!!!!!!!!!!!""""""""""""""##################################&&&&&&&&&&&&&&&&&&&&&&&&'''''''''''''''''''''&'''''''''''''''''''''''''''''''''''')))))))))))))))))))))))))****************************************************************************************+++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++None( #$&'(./0289:<>? vulkanVkAllocationCallbacks - Structure containing callback function pointers for memory allocation Valid Usage.VUID-VkAllocationCallbacks-pfnAllocation-00632  pfnAllocation must1 be a valid pointer to a valid user-defined !0VUID-VkAllocationCallbacks-pfnReallocation-00633 pfnReallocation must1 be a valid pointer to a valid user-defined !(VUID-VkAllocationCallbacks-pfnFree-00634 pfnFree must6 be a valid pointer to a valid user-defined !6VUID-VkAllocationCallbacks-pfnInternalAllocation-00635 If either of pfnInternalAllocation or pfnInternalFree is not NULL , both must be valid callbacksSee Also!, !, !, !, !, 4 ,  ,  ,  ,  ,  ,  , 8,  ,  ,  ,  ,  ,  ,  , J ,  ,  ,  ,  ,  , + , - , 7 , 8,  ,  , 1 ,  , 2 ,  ,  ,  ,  , 9 , : ,  , ; , , , 7 , d ,  , > , Y ,  ,  , = , ? ,  ,  , ,  ,  ,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCreateVideoSessionKHRvkCreateVideoSessionKHR,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCreateVideoSessionParametersKHR!vkCreateVideoSessionParametersKHR,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  , J ,  ,  , + , - , 7 , 1 , 2 ,  ,  , 8 , 9 , : ,  , ; , 7 , > , Y ,  , = , ? ,  ,  ,  ,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkDestroyVideoSessionKHRvkDestroyVideoSessionKHR,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkDestroyVideoSessionParametersKHR"vkDestroyVideoSessionParametersKHR, 4 ,  ,  +vulkan pUserData is a value to be interpreted by the implementation of the callbacks. When any of the callbacks in  are called, the Vulkan implementation will pass this value as the first parameter to the callback. This value can vary each time an allocator is passed into a command, even when the same object takes an allocator in multiple commands.+vulkan pfnAllocation is a !? pointer to an application-defined memory allocation function.+vulkanpfnReallocation is a ! pointer to an application-defined memory reallocation function.+vulkanpfnFree is a !9 pointer to an application-defined memory free function.,vulkanpfnInternalAllocation is a ! pointer to an application-defined function that is called by the implementation when the implementation makes internal allocations.,vulkanpfnInternalFree is a ! pointer to an application-defined function that is called by the implementation when the implementation frees internal allocations.+++++,,+++++,,None( #$&'(./0289:<>? ,vulkan-A class for things which can be created with ,.,vulkan1VK_NULL_HANDLE - Reserved non-valid object handleSee Also!No cross-references are available,vulkan:VK_SHADER_UNUSED_KHR - Sentinel for an unused shader indexSee Also!No cross-references are available,vulkanVK_MAX_DRIVER_INFO_SIZE - Length of a physical device driver information stringSee Also!No cross-references are available,vulkanVK_MAX_DRIVER_NAME_SIZE - Maximum length of a physical device driver name stringSee Also!No cross-references are available,vulkanVK_MAX_DEVICE_GROUP_SIZE - Length of a physical device handle arraySee Also!No cross-references are available,vulkanVK_SUBPASS_EXTERNAL - Subpass index sentinel expanding synchronization scope outside a subpassSee Also!No cross-references are available,vulkanVK_QUEUE_FAMILY_FOREIGN_EXT - Foreign queue family index sentinelSee Also!No cross-references are available,vulkan?VK_QUEUE_FAMILY_EXTERNAL - External queue family index sentinelSee Also!No cross-references are available,vulkan=VK_QUEUE_FAMILY_IGNORED - Ignored queue family index sentinelSee Also!No cross-references are available,vulkan1VK_ATTACHMENT_UNUSED - Unused attachment sentinelSee Also!No cross-references are available,vulkanVK_WHOLE_SIZE - Sentinel value to use entire remaining array lengthSee Also!No cross-references are available,vulkanVK_REMAINING_ARRAY_LAYERS - Sentinel for all remaining array layersSee Also!No cross-references are available,vulkanVK_REMAINING_MIP_LEVELS - Sentinel for all remaining array layersSee Also!No cross-references are available,vulkan8VK_MAX_MEMORY_HEAPS - Length of an array of memory heapsSee Also!No cross-references are available,vulkan8VK_MAX_MEMORY_TYPES - Length of an array of memory typesSee Also!No cross-references are available,vulkan8VK_MAX_DESCRIPTION_SIZE - Length of a driver name stringSee Also!No cross-references are available,vulkanVK_MAX_EXTENSION_NAME_SIZE - Maximum length of a layer of extension name stringSee Also!No cross-references are available,vulkan;VK_LUID_SIZE - Length of a locally unique device identifierSee Also!No cross-references are available,vulkanVK_UUID_SIZE - Length of a universally unique device or driver build identifierSee Also!No cross-references are available,vulkanVK_MAX_PHYSICAL_DEVICE_NAME_SIZE - Length of a physical device name stringSee Also!No cross-references are available,vulkanVK_LOD_CLAMP_NONE - Maximum level of detail unclamped access sentinelSee Also!No cross-references are available:q,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,=,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,qNone( #$&'(./0289:<>? ^,,,,,,,,,,,,None( #$&'(./0289:<>? vulkanVkPhysicalDeviceMemoryBudgetPropertiesEXT - Structure specifying physical device memory budget and usage Description>The values returned in this structure are not invariant. The  heapBudget and  heapUsage values must7 be zero for array elements greater than or equal to  ::memoryHeapCount. The  heapBudget value must+ be non-zero for array elements less than  ::memoryHeapCount. The  heapBudget value must be less than or equal to  ::size for each heap.Valid Usage (Implicit)See Alsoo, ,vulkan heapBudget is an array of , o values in which memory budgets are returned, with one element for each memory heap. A heap@s budget is a rough estimate of how much memory the process can- allocate from that heap before allocations may fail or cause performance degradation. The budget includes any currently allocated device memory.,vulkan heapUsage is an array of , o values in which memory usages are returned, with one element for each memory heap. A heap@s usage is an estimate of how much memory the process is currently using in that heap.,,,,,,,,,,,,,,None( #$&'(./0289:<>? vulkanVkQueueFamilyGlobalPriorityPropertiesEXT - Return structure for queue family global priority information query DescriptionThe valid elements of  priorities must# not contain any duplicate values.The valid elements of  priorities must be a continuous sequence of   enums in the ascending order.NoteFor example, returning  priorityCount as 3 with supported  priorities as  ,   and   is not allowed.Valid Usage (Implicit)9VUID-VkQueueFamilyGlobalPriorityPropertiesEXT-sType-sType sType must be  VUID-VkQueueFamilyGlobalPriorityPropertiesEXT-priorities-parameter Any given element of  priorities must be a valid   valueSee Also , vulkanVkPhysicalDeviceGlobalPriorityQueryFeaturesEXT - Structure describing whether global priority query can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, ,vulkan priorityCount is the number of supported global queue priorities in this queue family, and it must be greater than 0.,vulkan priorities is an array of ,   enums representing all supported global queue priorities in this queue family. The first  priorityCount% elements of the array will be valid.,vulkanfeatures-globalPriorityQuery globalPriorityQuery indicates whether the implementation supports the ability to query global queue priorities.,,,,, ,,,,,,,,,,,,,,, ,,fNone( #$&'(./0289:<>?  vulkanVkPhysicalDeviceDriverProperties - Structure containing driver identification information DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.These are properties of the driver corresponding to a physical device.driverID must be immutable for a given driver across instances, processes, driver versions, and system reboots.Valid Usage (Implicit)See Also, , vulkanVkConformanceVersion - Structure containing the conformance test suite version the implementation is compliant withSee Also, \,vulkandriverID> is a unique identifier for the driver of the physical device.,vulkan driverName is an array of , char containing a null-terminated UTF-8 string which is the name of the driver.,vulkan driverInfo is an array of , char containing a null-terminated UTF-8 string with additional information about the driver.,vulkanconformanceVersion is the version of the Vulkan conformance test this driver is conformant against (see ).,vulkanmajor; is the major version number of the conformance test suite.,vulkanminor; is the minor version number of the conformance test suite.,vulkansubminor> is the subminor version number of the conformance test suite.,vulkanpatch; is the patch version number of the conformance test suite.,,,,,,,,,, ,,,,,,,,,,,,,,  ,,,,None( #$&'(./0289:<>? '.,,,,,,,,,,,,,------------------,,,,,,,,,,,,,PNone( #$&'(./0289:<>? 0,vulkanVkExternalMemoryImageCreateInfo - Specify that an image may be backed by external memoryMembersNoteA  structure with a non-zero  handleTypes field must be included in the creation parameters for an image that will be bound to memory that is either exported or imported.Valid Usage (Implicit)See Also, vulkanVkExternalMemoryBufferCreateInfo - Specify that a buffer may be backed by external memoryMembersNoteA  structure with a non-zero  handleTypes field must be included in the creation parameters for a buffer that will be bound to memory that is either exported or imported.Valid Usage (Implicit)See Also, vulkanVkExportMemoryAllocateInfo - Specify exportable handle types for a device memory object Valid Usage1VUID-VkExportMemoryAllocateInfo-handleTypes-00656 The bits in  handleTypes must2 be supported and compatible, as reported by Q or QValid Usage (Implicit)+VUID-VkExportMemoryAllocateInfo-sType-sType sType must be  5VUID-VkExportMemoryAllocateInfo-handleTypes-parameter  handleTypes must be a valid combination of B  valuesSee Also, -vulkan handleTypes is a bitmask of B = specifying one or more memory handle types the application can8 export from the resulting allocation. The application can8 request multiple handle types for the same allocation.-vulkan handleTypes is zero, or a bitmask of B 6 specifying one or more external memory handle types.;VUID-VkExternalMemoryBufferCreateInfo-handleTypes-parameter  handleTypes must be a valid combination of B  values-vulkan handleTypes is zero, or a bitmask of B 6 specifying one or more external memory handle types.:VUID-VkExternalMemoryImageCreateInfo-handleTypes-parameter  handleTypes must be a valid combination of B  valuesa------ ,,------  a,,None( #$&'(./0289:<>? = ------------ ------------None( #$&'(./0289:<>? G/vulkanVkBaseOutStructure - Base structure for a read-only pointer chain Description can be used to facilitate iterating through a structure pointer chain that returns data back to the application.See Also, vulkanVkBaseInStructure - Base structure for a read-only pointer chain Description can be used to facilitate iterating through a read-only structure pointer chain.See Also, -vulkan(For error reporting an invalid extension-vulkansType? is the structure type of the structure being iterated through.-vulkanpNext is NULL: or a pointer to the next structure in a structure chain.-vulkansType? is the structure type of the structure being iterated through.-vulkanpNext is NULL: or a pointer to the next structure in a structure chain.-vulkanView the head and tail of a  , see -Equivalent to (,)-vulkanA pattern synonym to separate the head of a struct chain from the tail, use in conjunction with - to extract several members. Head{..} ::& () <- returningNoTail a b c -- Equivalent to Head{..} <- returningNoTail @'[] a b c  Head{..} ::& Foo{..} :& Bar{..} :& () <- returningWithTail a b c #myFun (Head{..} :&& Foo{..} :& ()) -vulkanForget which extensions a pointed-to struct has by casting the pointer-vulkan5Add an extension to the beginning of the struct chainThis can be used to optionally extend structs based on some condition (for example, an extension or layer being available)-vulkan Consume a - value-vulkan,Write the C representation of some extended a and use the pointer, the pointer must not be returned from the continuation.-vulkanGiven some memory for the head of the chain, allocate and poke the tail and run an action.-vulkanGiven a pointer to a struct with an unknown chain, peek the struct and its chain.-vulkanThe constraint is so on this instance to encourage type inference-vulkanPointer to some memory at least the size of the head of the struct chain.vulkanThe struct to pokevulkan0Computation to run while the poked tail is valid -- ---------------------------- - -- ----------------7-6None' #$&'(./0289:<>? Hp1vulkan A version of getInstanceProcAddr; which can be called with a null pointer for the instance.-----.............................................................------------.....-----------..............---------....--////////////.///-//////////////////0......./////////./..00000000000000000///////..0000///////////0....////////////////////////0///00000000000.............0/////0.//////////...//..00000000///........0//////////////////00000//-00000000000000000000000000110000001110000110010000000000100000011000000000000000000011000011100000000000000000000000000110000001110000110010000000000100000011000000000000000000011000011-----.............................................................------------.....-----------..............---------....--////////////.///-//////////////////0......./////////./..00000000000000000///////..0000///////////0....////////////////////////0///00000000000.............0/////0.//////////...//..00000000///........0//////////////////00000//-1None( #$&'(./0289:<>? R{1vulkanvkEnumerateInstanceVersion - Query instance-level version before instance creation DescriptionNoteThe intended behaviour of 1 is that an implementation should- not need to perform memory allocations and should unconditionally return '. The loader, and any enabled layers, may return , in the case of a failed memory allocation. Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also!No cross-references are available110None( #$&'(./0289:<>? wvulkan8VkShaderModule - Opaque handle to a shader module objectSee Also8, ? , ? xvulkan1VkSemaphore - Opaque handle to a semaphore objectSee Also, @, , , , , , , , n, , n, <,  , = , = , n ,  yvulkan-VkSampler - Opaque handle to a sampler objectSee Also  ,   , , > , > zvulkan4VkRenderPass - Opaque handle to a render pass objectSee Also, 7, 8, ,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkSubpassShadingPipelineCreateInfoHUAWEI(VkSubpassShadingPipelineCreateInfoHUAWEI, 7 , d ,  , 7 ,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI/vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, 7{vulkan;An opaque type for representing pointers to VkQueue handles|vulkan)VkQueue - Opaque handle to a queue objectSee Also< , E ,  ,  ,  , @ ,  ,  , ,  , < ,  , < }vulkan2VkQueryPool - Opaque handle to a query pool objectSee Also ,  , ,  ,  ,  ,  ,  ,  ,  , ; , ; , ;, ^ ,  ~vulkanAn opaque type for representing pointers to VkInstance handlesvulkan0VkInstance - Opaque handle to an instance objectSee Also ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  , M ,  ,  ,  ,  vulkan3VkImageView - Opaque handle to an image view objectSee Also  , 7, , h,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoPictureResourceKHRVkVideoPictureResourceKHR,  ,  , 2 , 2 ,  vulkan*VkImage - Opaque handle to an image objectSee AlsoH, , , , , , 6, , T, T, 2, I, , @ , @ , 5,  ,  ,  ,  ,  ,  ,  , 1 , 1 ,  , 5 , @ , 1 ,  vulkan5VkFramebuffer - Opaque handle to a framebuffer objectSee Also, , 7 , 7 vulkan)VkFence - Opaque handle to a fence objectSee Also, , , , ,  , - , - , - , @ , < ,  ,  ,  , - , -vulkan*VkEvent - Opaque handle to an event objectSee Also ,  ,  ,  ,  ,  , + , + , + , + , + vulkan , Y ,  , = , ? ,  , ,  ,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCreateVideoSessionKHRvkCreateVideoSessionKHR,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCreateVideoSessionParametersKHR!vkCreateVideoSessionParametersKHR,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  , J ,  ,  , + , - , 7 , 1 , 2 ,  , 8 , 9 , : ,  , ; , 7 , > , Y ,  , = , ? ,  ,  ,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkDestroyVideoSessionKHRvkDestroyVideoSessionKHR,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkDestroyVideoSessionParametersKHR"vkDestroyVideoSessionParametersKHR, < ,  , 4 ,  ,  , 4 ,  ,  ,  ,  ,  , c ,  ,  , 5 , T ,  , c ,  ,  ,  ,  , W ,  ,  , K ,  ,  ,  ,  , 4, c ,  ,  , < , E ,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI/vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, + ,  , - ,  ,  ,  , 5 , T ,  , @ , T ,  , 1 ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  , 9 ,  ,  ,  ,  , ;,  ,  ,  ,  ,  , 7, n ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetVideoSessionMemoryRequirementsKHR&vkGetVideoSessionMemoryRequirementsKHR,  ,  ,  ,  ,  ,  , 4 , 4, 9 ,  ,  ,  ,  ,  ,  ,  ,  , + , - , ^ ,  ,  ,  , + ,  , s,  , n ,  ,  ,  ,  , 4 , J ,  ,  ,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkUpdateVideoSessionParametersKHR!vkUpdateVideoSessionParametersKHR, -,  , n ,  ,  vulkan8VkDeviceMemory - Opaque handle to a device memory objectSee Also, H, H, c, 4, , , , , , @, @,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoBindMemoryKHRVkVideoBindMemoryKHR, , , 4 , 5, 5, 4 , 4,  , 4, 4 vulkanVkDescriptorSetLayout - Opaque handle to a descriptor set layout objectSee Also , J, :,  ,  vulkan:VkDescriptorSet - Opaque handle to a descriptor set objectSee Also ,  ,  ,  ,  , J ,  vulkan? vulkanVkWin32KeyedMutexAcquireReleaseInfoNV - use Windows keyex mutex mechanism to synchronize workValid Usage (Implicit)6VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-sType-sType sType must be  VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireSyncs-parameter If  acquireCount is not 0,  pAcquireSyncs must( be a valid pointer to an array of  acquireCount valid  handlesVUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireKeys-parameter If  acquireCount is not 0,  pAcquireKeys must( be a valid pointer to an array of  acquireCount uint64_t valuesVUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireTimeoutMilliseconds-parameter If  acquireCount is not 0, pAcquireTimeoutMilliseconds must( be a valid pointer to an array of  acquireCount uint32_t valuesVUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pReleaseSyncs-parameter If  releaseCount is not 0,  pReleaseSyncs must( be a valid pointer to an array of  releaseCount valid  handlesVUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pReleaseKeys-parameter If  releaseCount is not 0,  pReleaseKeys must( be a valid pointer to an array of  releaseCount uint64_t values7VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-commonparent Both of the elements of  pAcquireSyncs, and the elements of  pReleaseSyncs7 that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same 0See Also, 2vulkan pAcquireSyncs is a pointer to an array of 9 objects which were imported from Direct3D 11 resources.2vulkan pAcquireKeys is a pointer to an array of mutex key values to wait for prior to beginning the submitted work. Entries refer to the keyed mutex associated with the corresponding entries in  pAcquireSyncs.2vulkanpAcquireTimeoutMilliseconds is a pointer to an array of timeout values, in millisecond units, for each acquire specified in  pAcquireKeys.2vulkan pReleaseSyncs is a pointer to an array of 9 objects which were imported from Direct3D 11 resources.2vulkan pReleaseKeys is a pointer to an array of mutex key values to set when the submitted work has completed. Entries refer to the keyed mutex associated with the corresponding entries in  pReleaseSyncs. 2222222222 2222222222None( #$&'(./0289:<>? vulkanVkCoarseSampleOrderTypeNV - Shading rate image sample ordering typesSee Also, 3vulkanVkShadingRatePaletteNV - Structure specifying a single shading rate paletteValid Usage (Implicit)See Also, 2, 3vulkanVkPipelineViewportShadingRateImageStateCreateInfoNV - Structure specifying parameters controlling shading rate image usage Description"If this structure is not present, shadingRateImageEnable is considered to be /8, and the shading rate image and palettes are not used. Valid UsageVUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-viewportCount-02054 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled,  viewportCount must be 0 or 1VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-viewportCount-02055  viewportCount must be less than or equal to  :: maxViewportsVUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-shadingRateImageEnable-02056 If shadingRateImageEnable is /,  viewportCount must! be greater or equal to the  viewportCount member of 8Valid Usage (Implicit)VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-sType-sType sType must be  See Alsoq, , vulkanVkPipelineViewportCoarseSampleOrderStateCreateInfoNV - Structure specifying parameters controlling sample order in coarse fragments Description"If this structure is not present, sampleOrderType is considered to be 3.If sampleOrderType is 3, the coverage sample order used for any combination of fragment area and coverage sample count not enumerated in pCustomSampleOrders% will be identical to that used for 3."If the pipeline was created with  , the contents of this structure (if present) are ignored, and the coverage sample order is instead specified by 3. Valid UsageVUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-sampleOrderType-02072 If sampleOrderType is not 3, customSamplerOrderCount must be 0VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-pCustomSampleOrders-02234 The array pCustomSampleOrders must not contain two structures with matching values for both the  shadingRate and  sampleCount membersValid Usage (Implicit)VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-sType-sType sType must be  VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-sampleOrderType-parameter sampleOrderType must be a valid  valueVUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-pCustomSampleOrders-parameter If customSampleOrderCount is not 0, pCustomSampleOrders must( be a valid pointer to an array of customSampleOrderCount valid  structuresSee Also, , vulkanVkPhysicalDeviceShadingRateImagePropertiesNV - Structure describing shading rate image limits that can be supported by an implementation DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.%These properties are related to the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-shading-rate-imageshading rate image feature.Valid Usage (Implicit)See Alsov, vulkanVkPhysicalDeviceShadingRateImageFeaturesNV - Structure describing shading rate image features that can be supported by an implementationMembers0This structure describes the following features: DescriptionSee  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-shading-rate-imageShading Rate Image for more information.If the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkanVkCoarseSampleOrderCustomNV - Structure specifying parameters controlling shading rate image usage Description-When using a custom sample ordering, element j in pSampleLocations+ specifies a specific pixel location and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask sample index that corresponds to  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-multisampling-coverage-maskcoverage index j in the multi-pixel fragment. Valid Usage2VUID-VkCoarseSampleOrderCustomNV-shadingRate-02073  shadingRate must be a shading rate that generates fragments with more than one pixel2VUID-VkCoarseSampleOrderCustomNV-sampleCount-02074  sampleCount must1 correspond to a sample count enumerated in & - whose corresponding bit is set in  ::$framebufferNoAttachmentsSampleCounts:VUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-02075 sampleLocationCount must! be equal to the product of  sampleCount, the fragment width for  shadingRate#, and the fragment height for  shadingRate:VUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-02076 sampleLocationCount must, be less than or equal to the value of ::shadingRateMaxCoarseSamples7VUID-VkCoarseSampleOrderCustomNV-pSampleLocations-02077 The array pSampleLocations must contain exactly one entry for every combination of valid values for pixelX, pixelY, and sample in the structure Valid Usage (Implicit)6VUID-VkCoarseSampleOrderCustomNV-shadingRate-parameter  shadingRate must be a valid 2 value;VUID-VkCoarseSampleOrderCustomNV-pSampleLocations-parameter pSampleLocations must( be a valid pointer to an array of sampleLocationCount  structuresVUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-arraylength sampleLocationCount must be greater than 0See Also, , 2, 3vulkanVkCoarseSampleLocationNV - Structure specifying parameters controlling shading rate image usage Valid UsageSee Also2vulkanVkShadingRatePaletteEntryNV - Shading rate image palette entry types DescriptionThe following table indicates the width and height (in pixels) of each fragment generated using the indicated shading rate, as well as the maximum number of fragment shader invocations launched for each fragment. When processing regions of a primitive that have a shading rate of 31, no fragments will be generated in that region. Shading RateWidthHeight Invocations 3000311163118311431123111321131213221342132413441See Also, 2vulkansampleOrderType specifies the mechanism used to order coverage samples in fragments larger than one pixel.2vulkanpCustomSampleOrders is a pointer to an array of customSampleOrderCount  structures, each of which specifies the coverage sample order for a single combination of fragment area and coverage sample count.2vulkan shadingRate is a shading rate palette entry that identifies the fragment width and height for the combination of fragment area and per-pixel coverage sample count to control.2vulkan sampleCount identifies the per-pixel coverage sample count for the combination of fragment area and coverage sample count to control.2vulkanpSampleLocations is a pointer to an array of  structures specifying the location of each sample in the custom ordering.2vulkanpixelX is added to the x coordinate of the upper-leftmost pixel of each fragment to identify the pixel containing the coverage sample.*VUID-VkCoarseSampleLocationNV-pixelX-02078 pixelX must4 be less than the width (in pixels) of the fragment2vulkanpixelY is added to the y coordinate of the upper-leftmost pixel of each fragment to identify the pixel containing the coverage sample.*VUID-VkCoarseSampleLocationNV-pixelY-02079 pixelY must5 be less than the height (in pixels) of the fragment2vulkansample is the number of the coverage sample in the pixel identified by pixelX and pixelY.*VUID-VkCoarseSampleLocationNV-sample-02080 sample must be less than the number of coverage samples in each pixel belonging to the fragment2vulkanlimits-shading-rate-texel-size shadingRateTexelSize indicates the width and height of the portion of the framebuffer corresponding to each texel in the shading rate image.2vulkan limits-shading-rate-palette-size shadingRatePaletteSize indicates the maximum number of palette entries supported for the shading rate image.3vulkan&limits-shading-rate-max-coarse-samples shadingRateMaxCoarseSamples specifies the maximum number of coverage samples supported in a single fragment. If the product of the fragment size derived from the base shading rate and the number of coverage samples per pixel exceeds this limit, the final shading rate will be adjusted so that its product does not exceed the limit.3vulkanfeatures-shadingRateImage shadingRateImage indicates that the implementation supports the use of a shading rate image to derive an effective shading rate for fragment processing. It also indicates that the implementation supports the  ShadingRateNV SPIR-V execution mode.3vulkan%features-shadingRateCoarseSampleOrder shadingRateCoarseSampleOrder indicates that the implementation supports a user-configurable ordering of coverage samples in fragments larger than one pixel.3vulkanshadingRateImageEnable specifies whether shading rate image and palettes are used during rasterization.3vulkanpShadingRatePalettes is a pointer to an array of  structures defining the palette for each viewport. If the shading rate palette state is dynamic, this member is ignored.3vulkanpShadingRatePaletteEntries is a pointer to an array of 29 enums defining the shading rate for each palette entry.VUID-VkShadingRatePaletteNV-pShadingRatePaletteEntries-parameter pShadingRatePaletteEntries must$ be a valid pointer to an array of shadingRatePaletteEntryCount valid 2 values3vulkan3 specifies that coverage samples will be ordered sequentially, sorted first by  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask sample index4 and then by pixel coordinate (in row-major order).3vulkan3 specifies that coverage samples will be ordered sequentially, sorted first by pixel coordinate (in row-major order) and then by  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask sample index.3vulkan3 specifies that coverage samples will be ordered according to the array of custom orderings provided in either the pCustomSampleOrders member of  or the pCustomSampleOrders member of 3.3vulkan3 specifies that coverage samples will be ordered in an implementation-dependent manner.3vulkanvkCmdBindShadingRateImageNV - Bind a shading rate image on a command buffer Valid Usage+VUID-vkCmdBindShadingRateImageNV-None-02058 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshading rate image feature must be enabled0VUID-vkCmdBindShadingRateImageNV-imageView-02059 If  imageView is not , it must be a valid  handle of type   or  0VUID-vkCmdBindShadingRateImageNV-imageView-02060 If  imageView is not , it must have a format of 0VUID-vkCmdBindShadingRateImageNV-imageView-02061 If  imageView is not , it must have been created with a usage value including 30VUID-vkCmdBindShadingRateImageNV-imageView-02062 If  imageView is not ,  imageLayout must match the actual O* of each subresource accessible from  imageView- at the time the subresource is accessed2VUID-vkCmdBindShadingRateImageNV-imageLayout-02063 If  imageView is not ,  imageLayout must be 3 or "Valid Usage (Implicit)8VUID-vkCmdBindShadingRateImageNV-commandBuffer-parameter  commandBuffer must be a valid  handle4VUID-vkCmdBindShadingRateImageNV-imageView-parameter If  imageView is not ,  imageView must be a valid  handle6VUID-vkCmdBindShadingRateImageNV-imageLayout-parameter  imageLayout must be a valid O value8VUID-vkCmdBindShadingRateImageNV-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state6VUID-vkCmdBindShadingRateImageNV-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operations-VUID-vkCmdBindShadingRateImageNV-commonparent Both of  commandBuffer, and  imageView7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth  Graphics See Also, O, 3vulkanvkCmdSetViewportShadingRatePaletteNV - Set shading rate image palettes on a command buffer Valid Usage4VUID-vkCmdSetViewportShadingRatePaletteNV-None-02064 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshading rate image feature must be enabled=VUID-vkCmdSetViewportShadingRatePaletteNV-firstViewport-02067 The sum of  firstViewport and  viewportCount must be between 1 and  :: maxViewports, inclusive=VUID-vkCmdSetViewportShadingRatePaletteNV-firstViewport-02068 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled,  firstViewport must be 0=VUID-vkCmdSetViewportShadingRatePaletteNV-viewportCount-02069 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled,  viewportCount must be 1Valid Usage (Implicit)VUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-parameter  commandBuffer must be a valid  handleVUID-vkCmdSetViewportShadingRatePaletteNV-pShadingRatePalettes-parameter pShadingRatePalettes must( be a valid pointer to an array of  viewportCount valid  structuresVUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state?VUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operationsVUID-vkCmdSetViewportShadingRatePaletteNV-viewportCount-arraylength  viewportCount must be greater than 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth  Graphics See Also, 3vulkanvkCmdSetCoarseSampleOrderNV - Set sample order for coarse fragments on a command buffer DescriptionIf sampleOrderType is 3, the coverage sample order used for any combination of fragment area and coverage sample count not enumerated in pCustomSampleOrders% will be identical to that used for 3. Valid Usage6VUID-vkCmdSetCoarseSampleOrderNV-sampleOrderType-02081 If sampleOrderType is not 3, customSamplerOrderCount must be 0:VUID-vkCmdSetCoarseSampleOrderNV-pCustomSampleOrders-02235 The array pCustomSampleOrders must not contain two structures with matching values for both the  shadingRate and  sampleCount membersValid Usage (Implicit)8VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-parameter  commandBuffer must be a valid  handle:VUID-vkCmdSetCoarseSampleOrderNV-sampleOrderType-parameter sampleOrderType must be a valid  value>VUID-vkCmdSetCoarseSampleOrderNV-pCustomSampleOrders-parameter If customSampleOrderCount is not 0, pCustomSampleOrders must( be a valid pointer to an array of customSampleOrderCount valid  structures8VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state6VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth  Graphics See Also, , 3vulkan commandBuffer is the command buffer into which the command will be recorded.vulkan imageView= is an image view handle specifying the shading rate image.  imageView may be set to , which is equivalent to specifying a view of an image filled with zero values.vulkan imageLayout< is the layout that the image subresources accessible from  imageView4 will be in when the shading rate image is accessed.3vulkan commandBuffer is the command buffer into which the command will be recorded.vulkan firstViewport is the index of the first viewport whose shading rate palette is updated by the command.vulkanpShadingRatePalettes is a pointer to an array of 4 structures defining the palette for each viewport.3vulkan commandBuffer is the command buffer into which the command will be recorded.vulkansampleOrderType specifies the mechanism used to order coverage samples in fragments larger than one pixel.vulkanpCustomSampleOrders is a pointer to an array of  structures, each of which specifies the coverage sample order for a single combination of fragment area and coverage sample count.=33332333332222223333222222222223333333333332333333333333333333333333222322222222222233333333333323333333333333333233332323None( #$&'(./0289:<>? vulkanVkPipelineViewportExclusiveScissorStateCreateInfoNV - Structure specifying parameters controlling exclusive scissor testing DescriptionIf the  / dynamic state is enabled for a pipeline, the pExclusiveScissors member is ignored.'When this structure is included in the pNext chain of 8, it defines parameters of the exclusive scissor test. If this structure is not included in the pNext> chain, it is equivalent to specifying this structure with a exclusiveScissorCount of 0. Valid UsageVUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02027 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled, exclusiveScissorCount must be 0 or 1VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02028 exclusiveScissorCount must be less than or equal to  :: maxViewportsVUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02029 exclusiveScissorCount must be 0& or greater than or equal to the  viewportCount member of 8Valid Usage (Implicit)VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-sType-sType sType must be  See Alsor, vulkanVkPhysicalDeviceExclusiveScissorFeaturesNV - Structure describing exclusive scissor features that can be supported by an implementationMembers/This structure describes the following feature: DescriptionSee  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-exclusive-scissorExclusive Scissor Test for more information.If the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, 3vulkanpExclusiveScissors is a pointer to an array of r3 structures defining exclusive scissor rectangles.3vulkanfeatures-exclusiveScissor exclusiveScissor indicates that the implementation supports the exclusive scissor test.3vulkanvkCmdSetExclusiveScissorNV - Set the dynamic exclusive scissor rectangles on a command buffer Description/The scissor rectangles taken from element i of pExclusiveScissors2 replace the current state for the scissor index firstExclusiveScissor + i, for i in [0, exclusiveScissorCount).This command sets the state for a given draw when the graphics pipeline is created with   set in 8::pDynamicStates. Valid Usage*VUID-vkCmdSetExclusiveScissorNV-None-02031 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissorexclusive scissor feature must be enabled;VUID-vkCmdSetExclusiveScissorNV-firstExclusiveScissor-02034 The sum of firstExclusiveScissor and exclusiveScissorCount must be between 1 and  :: maxViewports, inclusive;VUID-vkCmdSetExclusiveScissorNV-firstExclusiveScissor-02035 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled, firstExclusiveScissor must be 0;VUID-vkCmdSetExclusiveScissorNV-exclusiveScissorCount-02036 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled, exclusiveScissorCount must be 1'VUID-vkCmdSetExclusiveScissorNV-x-02037 The x and y members of offset in each member of pExclusiveScissors must" be greater than or equal to 0,VUID-vkCmdSetExclusiveScissorNV-offset-02038 Evaluation of (offset.x +  extent.width) for each member of pExclusiveScissors must2 not cause a signed integer addition overflow,VUID-vkCmdSetExclusiveScissorNV-offset-02039 Evaluation of (offset.y +  extent.height) for each member of pExclusiveScissors must2 not cause a signed integer addition overflowValid Usage (Implicit)7VUID-vkCmdSetExclusiveScissorNV-commandBuffer-parameter  commandBuffer must be a valid  handle? GvulkanVkPhysicalDeviceMeshShaderPropertiesNV - Structure describing mesh shading properties DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.Valid Usage (Implicit)See AlsovulkanVkPhysicalDeviceMeshShaderFeaturesNV - Structure describing mesh shading features that can be supported by an implementationMembers0This structure describes the following features: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkanVkDrawMeshTasksIndirectCommandNV - Structure specifying a mesh tasks draw indirect command DescriptionThe members of = have the same meaning as the similarly named parameters of 3. Valid UsageSee Also33vulkan taskCount is the number of local workgroups to dispatch in the X dimension. Y and Z dimension are implicitly set to one.5VUID-VkDrawMeshTasksIndirectCommandNV-taskCount-02175  taskCount must be less than or equal to ::maxDrawMeshTasksCount3vulkan firstTask. is the X component of the first workgroup ID.3vulkanmaxDrawMeshTasksCount1 is the maximum number of local workgroups that can7 be launched by a single draw mesh tasks command. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-mesh-shading.3vulkanmaxTaskWorkGroupInvocations is the maximum total number of task shader invocations in a single local workgroup. The product of the X, Y, and Z sizes, as specified by the  LocalSize execution mode in shader modules or by the object decorated by the  WorkgroupSize decoration, must& be less than or equal to this limit.3vulkanmaxTaskWorkGroupSize[3] is the maximum size of a local task workgroup. These three values represent the maximum local workgroup size in the X, Y, and Z dimensions, respectively. The x, y, and z sizes, as specified by the  LocalSize3 execution mode or by the object decorated by the  WorkgroupSize decoration in shader modules, must3 be less than or equal to the corresponding limit.3vulkanmaxTaskTotalMemorySize is the maximum number of bytes that the task shader can use in total for shared and output memory combined.3vulkanmaxTaskOutputCount is the maximum number of output tasks a single task shader workgroup can emit.3vulkanmaxMeshWorkGroupInvocations is the maximum total number of mesh shader invocations in a single local workgroup. The product of the X, Y, and Z sizes, as specified by the  LocalSize execution mode in shader modules or by the object decorated by the  WorkgroupSize decoration, must& be less than or equal to this limit.3vulkanmaxMeshWorkGroupSize[3] is the maximum size of a local mesh workgroup. These three values represent the maximum local workgroup size in the X, Y, and Z dimensions, respectively. The x, y, and z sizes, as specified by the  LocalSize3 execution mode or by the object decorated by the  WorkgroupSize decoration in shader modules, must3 be less than or equal to the corresponding limit.3vulkanmaxMeshTotalMemorySize is the maximum number of bytes that the mesh shader can use in total for shared and output memory combined.3vulkanmaxMeshOutputVertices is the maximum number of vertices a mesh shader output can store.3vulkanmaxMeshOutputPrimitives is the maximum number of primitives a mesh shader output can store.3vulkanmaxMeshMultiviewViewCount is the maximum number of multi-view views a mesh shader can use.3vulkanmeshOutputPerVertexGranularity is the granularity with which mesh vertex outputs are allocated. The value can be used to compute the memory size used by the mesh shader, which must be less than or equal to maxMeshTotalMemorySize.3vulkan!meshOutputPerPrimitiveGranularity is the granularity with which mesh outputs qualified as per-primitive are allocated. The value can be used to compute the memory size used by the mesh shader, which must be less than or equal to maxMeshTotalMemorySize.3vulkanfeatures-taskShader  taskShader7 indicates whether the task shader stage is supported.3vulkanfeatures-meshShader  meshShader7 indicates whether the mesh shader stage is supported.3vulkan0vkCmdDrawMeshTasksNV - Draw mesh task work items DescriptionWhen the command is executed, a global workgroup consisting of  taskCount local workgroups is assembled. Valid Usage)VUID-vkCmdDrawMeshTasksNV-magFilter-04553 If a 0  created with  magFilter or  minFilter equal to   and  compareEnable equal to / is used to sample a 0> as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain 6*VUID-vkCmdDrawMeshTasksNV-mipmapMode-04770 If a 0  created with  mipmapMode equal to   and  compareEnable equal to / is used to sample a 0> as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain $VUID-vkCmdDrawMeshTasksNV-None-02691 If a 0 is accessed using atomic operations as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain  $VUID-vkCmdDrawMeshTasksNV-None-02692 If a 0 is sampled with  > as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain  +VUID-vkCmdDrawMeshTasksNV-filterCubic-02694 Any 0 being sampled with  " as a result of this command must have a   and format that supports cubic filtering, as specified by :: filterCubic returned by U 1VUID-vkCmdDrawMeshTasksNV-filterCubicMinmax-02695 Any 0 being sampled with  + with a reduction mode of either   or  " as a result of this command must have a   and format that supports cubic filtering together with minmax filtering, as specified by ::filterCubicMinmax returned by U %VUID-vkCmdDrawMeshTasksNV-flags-02696 Any 0 created with a 1::flags containing * sampled as a result of this command must only be sampled using a   of  $VUID-vkCmdDrawMeshTasksNV-None-02697 For each set n% that is statically used by the 0  bound to the pipeline bind point used by this command, a descriptor set must have been bound to n. at the same pipeline bind point, with a 0 ! that is compatible for set n , with the 0 ! used to create the current 0 , as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???$VUID-vkCmdDrawMeshTasksNV-None-02698< For each push constant that is statically used by the 0  bound to the pipeline bind point used by this command, a push constant value must= have been set for the same pipeline bind point, with a 0 6 that is compatible for push constants, with the 0 ! used to create the current 0 , as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???$VUID-vkCmdDrawMeshTasksNV-None-02699 Descriptors in each bound descriptor set, specified via  , must7 be valid if they are statically used by the 0 ; bound to the pipeline bind point used by this command$VUID-vkCmdDrawMeshTasksNV-None-02700 A valid pipeline must> be bound to the pipeline bind point used by this command-VUID-vkCmdDrawMeshTasksNV-commandBuffer-02701 If the 0  object bound to the pipeline bind point used by this command requires any dynamic state, that state must) have been set or inherited (if the  VK_NV_inherited_viewport_scissor extension is enabled) for  commandBuffer, and done so after any previously bound pipeline with the corresponding state not specified as dynamic$VUID-vkCmdDrawMeshTasksNV-None-02859 There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the 0  object bound to the pipeline bind point used by this command, since that pipeline was bound$VUID-vkCmdDrawMeshTasksNV-None-02702 If the 0  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must% not be used to sample from any 0 with a 0 of the type  ,  ,  ,   or  , in any shader stage$VUID-vkCmdDrawMeshTasksNV-None-02703 If the 0  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj# in their name, in any shader stage$VUID-vkCmdDrawMeshTasksNV-None-02704 If the 0  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions that includes a LOD bias or any offset values, in any shader stage$VUID-vkCmdDrawMeshTasksNV-None-02705 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the 0  object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point$VUID-vkCmdDrawMeshTasksNV-None-02706 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the 0  object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point-VUID-vkCmdDrawMeshTasksNV-commandBuffer-02707 If  commandBuffer is an unprotected command buffer, any resource accessed by the 0  object bound to the pipeline bind point used by this command must not be a protected resource$VUID-vkCmdDrawMeshTasksNV-None-04115 If a 0 is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction must have at least as many components as the image view@s format,VUID-vkCmdDrawMeshTasksNV-OpImageWrite-04469 If a 0  is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction must have at least as many components as the buffer view@s format+VUID-vkCmdDrawMeshTasksNV-SampledType-04470 If a 0 with a  that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64+VUID-vkCmdDrawMeshTasksNV-SampledType-04471 If a 0 with a  that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32+VUID-vkCmdDrawMeshTasksNV-SampledType-04472 If a 0  with a  that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64+VUID-vkCmdDrawMeshTasksNV-SampledType-04473 If a 0  with a  that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 327VUID-vkCmdDrawMeshTasksNV-sparseImageInt64Atomics-04474 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, 0$ objects created with the   flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command7VUID-vkCmdDrawMeshTasksNV-sparseImageInt64Atomics-04475 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, $ objects created with the   flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command*VUID-vkCmdDrawMeshTasksNV-renderPass-02684 The current render pass must be  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible with the  renderPass member of the 8, structure specified when creating the 0  bound to  'VUID-vkCmdDrawMeshTasksNV-subpass-026853 The subpass index of the current render pass must be equal to the subpass member of the 8, structure specified when creating the 0  bound to  $VUID-vkCmdDrawMeshTasksNV-None-026869 Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor set$VUID-vkCmdDrawMeshTasksNV-None-04584 Image subresources used as attachments in the current render pass must not be accessed in any way other than as an attachment by this command, except for cases involving read-only access to depth/stencil attachments as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass chapter9VUID-vkCmdDrawMeshTasksNV-maxMultiviewInstanceIndex-02688 If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to X::maxMultiviewInstanceIndex5VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-02689; If the bound graphics pipeline was created with ::sampleLocationsEnable set to / and the current subpass has a depth/stencil attachment, then that attachment must& have been created with the   bit set-VUID-vkCmdDrawMeshTasksNV-viewportCount-03417 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  ' dynamic state enabled, then   must have been called in the current command buffer prior to this drawing command, and the  viewportCount parameter of   must match the 8:: scissorCount of the pipeline,VUID-vkCmdDrawMeshTasksNV-scissorCount-03418 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  ' dynamic state enabled, then  must have been called in the current command buffer prior to this drawing command, and the  scissorCount parameter of  must match the 8:: viewportCount of the pipeline-VUID-vkCmdDrawMeshTasksNV-viewportCount-03419 If the bound graphics pipeline state was created with both the   and  , dynamic states enabled then both   and  must have been called in the current command buffer prior to this drawing command, and the  viewportCount parameter of   must match the  scissorCount parameter of -VUID-vkCmdDrawMeshTasksNV-viewportCount-04137 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  > dynamic state enabled, then the bound graphics pipeline must" have been created with :: viewportCount greater or equal to the  viewportCount) parameter in the last call to  -VUID-vkCmdDrawMeshTasksNV-viewportCount-04138 If the bound graphics pipeline state was created with the   and  & dynamic states enabled then the  viewportCount) parameter in the last call to   must! be greater than or equal to the  viewportCount) parameter in the last call to  -VUID-vkCmdDrawMeshTasksNV-viewportCount-04139 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  > dynamic state enabled, then the bound graphics pipeline must" have been created with :: viewportCount greater or equal to the  viewportCount) parameter in the last call to  -VUID-vkCmdDrawMeshTasksNV-viewportCount-04140 If the bound graphics pipeline state was created with the   and  & dynamic states enabled then the  viewportCount) parameter in the last call to   must! be greater than or equal to the  viewportCount) parameter in the last call to  ;VUID-vkCmdDrawMeshTasksNV-VkPipelineVieportCreateInfo-04141 If the bound graphics pipeline state was created with the  4 dynamic state enabled and an instance of  chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with :: viewportCount greater or equal to the  viewportCount) parameter in the last call to  ;VUID-vkCmdDrawMeshTasksNV-VkPipelineVieportCreateInfo-04142 If the bound graphics pipeline state was created with the  4 dynamic state enabled and an instance of  chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with ::exclusiveScissorCount greater or equal to the  viewportCount) parameter in the last call to  1VUID-vkCmdDrawMeshTasksNV-primitiveTopology-03420 If the bound graphics pipeline state was created with the  & dynamic state enabled then   must have been called in the current command buffer prior to this drawing command, and the primitiveTopology parameter of   must be of the same  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-classtopology class as the pipeline 8::topology state$VUID-vkCmdDrawMeshTasksNV-None-04875 If the bound graphics pipeline state was created with the  & dynamic state enabled then   must have been called in the current command buffer prior to this drawing command$VUID-vkCmdDrawMeshTasksNV-None-04876 If the bound graphics pipeline state was created with the  & dynamic state enabled then  must have been called in the current command buffer prior to this drawing command$VUID-vkCmdDrawMeshTasksNV-None-04877 If the bound graphics pipeline state was created with the  & dynamic state enabled then  must have been called in the current command buffer prior to this drawing command'VUID-vkCmdDrawMeshTasksNV-logicOp-04878 If the bound graphics pipeline state was created with the  & dynamic state enabled then   must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid   value$VUID-vkCmdDrawMeshTasksNV-None-04879 If the bound graphics pipeline state was created with the  & dynamic state enabled then  must have been called in the current command buffer prior to this drawing commandVUID-vkCmdDrawMeshTasksNV-primitiveFragmentShadingRateWithMultipleViewports-04552 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports1primitiveFragmentShadingRateWithMultipleViewports limit is not supported, the bound graphics pipeline was created with the   dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the PrimitiveShadingRateKHR built-in, then   must have been called in the current command buffer prior to this drawing command, and the  viewportCount parameter of   must be 1+VUID-vkCmdDrawMeshTasksNV-blendEnable-04727 If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features do not contain  , then the  blendEnable1 member of the corresponding element of the  pAttachments member of pColorBlendState must be /4VUID-vkCmdDrawMeshTasksNV-rasterizationSamples-04740 If rasterization is not disabled in the bound graphics pipeline, and neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples# extensions are enabled, then 8::rasterizationSamples must be the same as the current subpass color and/or depth/stencil attachments$VUID-vkCmdDrawMeshTasksNV-None-04912 If the bound graphics pipeline was created with both the   and  ( dynamic states enabled, then   must have been called in the current command buffer prior to this draw command(VUID-vkCmdDrawMeshTasksNV-pStrides-04913? If the bound graphics pipeline was created with the  . dynamic state enabled, but not the  ' dynamic state enabled, then  must have been called in the current command buffer prior to this draw command, and the pStrides parameter of  must not be NULL$VUID-vkCmdDrawMeshTasksNV-None-04914 If the bound graphics pipeline state was created with the  ' dynamic state enabled, then   must have been called in the current command buffer prior to this draw command)VUID-vkCmdDrawMeshTasksNV-taskCount-02119  taskCount must$ be less than or equal to ::maxDrawMeshTasksCountValid Usage (Implicit)1VUID-vkCmdDrawMeshTasksNV-commandBuffer-parameter  commandBuffer must be a valid  handle1VUID-vkCmdDrawMeshTasksNV-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state/VUID-vkCmdDrawMeshTasksNV-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operations$VUID-vkCmdDrawMeshTasksNV-renderpass This command must5 only be called inside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryInside  Graphics See Also3vulkanvkCmdDrawMeshTasksIndirectNV - Issue an indirect mesh tasks draw into a command buffer Description3 behaves similarly to 3 except that the parameters are read by the device from a buffer during execution.  drawCount draws are executed by the command, with parameters taken from buffer starting at offset and increasing by stride bytes for each successive draw. The parameters of each draw are encoded in an array of  structures. If  drawCount is less than or equal to one, stride is ignored. Valid Usage1VUID-vkCmdDrawMeshTasksIndirectNV-magFilter-04553 If a 0  created with  magFilter or  minFilter equal to   and  compareEnable equal to / is used to sample a 0> as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain >2VUID-vkCmdDrawMeshTasksIndirectNV-mipmapMode-04770 If a 0  created with  mipmapMode equal to   and  compareEnable equal to / is used to sample a 0> as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain ,VUID-vkCmdDrawMeshTasksIndirectNV-None-02691 If a 0 is accessed using atomic operations as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain  ,VUID-vkCmdDrawMeshTasksIndirectNV-None-02692 If a 0 is sampled with  > as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain  3VUID-vkCmdDrawMeshTasksIndirectNV-filterCubic-02694 Any 0 being sampled with  " as a result of this command must have a   and format that supports cubic filtering, as specified by :: filterCubic returned by U 9VUID-vkCmdDrawMeshTasksIndirectNV-filterCubicMinmax-02695 Any 0 being sampled with  + with a reduction mode of either   or  " as a result of this command must have a   and format that supports cubic filtering together with minmax filtering, as specified by ::filterCubicMinmax returned by U -VUID-vkCmdDrawMeshTasksIndirectNV-flags-02696 Any 0 created with a 1::flags containing * sampled as a result of this command must only be sampled using a   of  ,VUID-vkCmdDrawMeshTasksIndirectNV-None-02697 For each set n% that is statically used by the 0  bound to the pipeline bind point used by this command, a descriptor set must have been bound to n. at the same pipeline bind point, with a 0 ! that is compatible for set n , with the 0 ! used to create the current 0 , as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???,VUID-vkCmdDrawMeshTasksIndirectNV-None-02698 For each push constant that is statically used by the 0  bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a 0 6 that is compatible for push constants, with the 0 ! used to create the current 0 , as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???,VUID-vkCmdDrawMeshTasksIndirectNV-None-02699 Descriptors in each bound descriptor set, specified via  , must7 be valid if they are statically used by the 0 ; bound to the pipeline bind point used by this command,VUID-vkCmdDrawMeshTasksIndirectNV-None-02700 A valid pipeline must9 be bound to the pipeline bind point used by this command5VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02701 If the 0  object bound to the pipeline bind point used by this command requires any dynamic state, that state must) have been set or inherited (if the  VK_NV_inherited_viewport_scissor extension is enabled) for  commandBuffer, and done so after any previously bound pipeline with the corresponding state not specified as dynamic,VUID-vkCmdDrawMeshTasksIndirectNV-None-02859 There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the 0  object bound to the pipeline bind point used by this command, since that pipeline was bound,VUID-vkCmdDrawMeshTasksIndirectNV-None-02702 If the 0  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must% not be used to sample from any 0 with a 0 of the type  ,  ,  ,   or  , in any shader stage,VUID-vkCmdDrawMeshTasksIndirectNV-None-02703 If the 0  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj# in their name, in any shader stage,VUID-vkCmdDrawMeshTasksIndirectNV-None-02704 If the 0  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions that includes a LOD bias or any offset values, in any shader stage,VUID-vkCmdDrawMeshTasksIndirectNV-None-02705 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the 0  object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point,VUID-vkCmdDrawMeshTasksIndirectNV-None-02706 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the 0  object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point5VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02707 If  commandBuffer is an unprotected command buffer, any resource accessed by the 0  object bound to the pipeline bind point used by this command must! not be a protected resource,VUID-vkCmdDrawMeshTasksIndirectNV-None-04115 If a 0 is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction must have at least as many components as the image view@s format4VUID-vkCmdDrawMeshTasksIndirectNV-OpImageWrite-04469 If a 0  is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction must have at least as many components as the buffer view@s format3VUID-vkCmdDrawMeshTasksIndirectNV-SampledType-04470 If a 0 with a  that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 643VUID-vkCmdDrawMeshTasksIndirectNV-SampledType-04471 If a 0 with a  that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 323VUID-vkCmdDrawMeshTasksIndirectNV-SampledType-04472 If a 0  with a  that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 643VUID-vkCmdDrawMeshTasksIndirectNV-SampledType-04473 If a 0  with a  that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32?VUID-vkCmdDrawMeshTasksIndirectNV-sparseImageInt64Atomics-04474 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, 0$ objects created with the   flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command?VUID-vkCmdDrawMeshTasksIndirectNV-sparseImageInt64Atomics-04475 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, $ objects created with the   flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command2VUID-vkCmdDrawMeshTasksIndirectNV-renderPass-02684 The current render pass must be  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible with the  renderPass member of the 8, structure specified when creating the 0  bound to  /VUID-vkCmdDrawMeshTasksIndirectNV-subpass-026853 The subpass index of the current render pass must be equal to the subpass member of the 8, structure specified when creating the 0  bound to  ,VUID-vkCmdDrawMeshTasksIndirectNV-None-026869 Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor set,VUID-vkCmdDrawMeshTasksIndirectNV-None-04584 Image subresources used as attachments in the current render pass must not be accessed in any way other than as an attachment by this command, except for cases involving read-only access to depth/stencil attachments as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass chapterVUID-vkCmdDrawMeshTasksIndirectNV-maxMultiviewInstanceIndex-02688 If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to X::maxMultiviewInstanceIndex=VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-02689; If the bound graphics pipeline was created with ::sampleLocationsEnable set to / and the current subpass has a depth/stencil attachment, then that attachment must& have been created with the   bit set5VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-03417 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  ' dynamic state enabled, then   must have been called in the current command buffer prior to this drawing command, and the  viewportCount parameter of   must match the 8:: scissorCount of the pipeline4VUID-vkCmdDrawMeshTasksIndirectNV-scissorCount-03418 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  ' dynamic state enabled, then  must have been called in the current command buffer prior to this drawing command, and the  scissorCount parameter of  must match the 8:: viewportCount of the pipeline5VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-03419 If the bound graphics pipeline state was created with both the   and  , dynamic states enabled then both   and  must have been called in the current command buffer prior to this drawing command, and the  viewportCount parameter of   must match the  scissorCount parameter of 5VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-04137 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  > dynamic state enabled, then the bound graphics pipeline must" have been created with :: viewportCount greater or equal to the  viewportCount) parameter in the last call to  5VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-04138 If the bound graphics pipeline state was created with the   and  & dynamic states enabled then the  viewportCount) parameter in the last call to   must! be greater than or equal to the  viewportCount) parameter in the last call to  5VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-04139 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  > dynamic state enabled, then the bound graphics pipeline must" have been created with :: viewportCount greater or equal to the  viewportCount) parameter in the last call to  5VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-04140 If the bound graphics pipeline state was created with the   and  & dynamic states enabled then the  viewportCount) parameter in the last call to   must! be greater than or equal to the  viewportCount) parameter in the last call to  VUID-vkCmdDrawMeshTasksIndirectNV-VkPipelineVieportCreateInfo-04141 If the bound graphics pipeline state was created with the  4 dynamic state enabled and an instance of  chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with :: viewportCount greater or equal to the  viewportCount) parameter in the last call to  VUID-vkCmdDrawMeshTasksIndirectNV-VkPipelineVieportCreateInfo-04142 If the bound graphics pipeline state was created with the  4 dynamic state enabled and an instance of  chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with ::exclusiveScissorCount greater or equal to the  viewportCount) parameter in the last call to  9VUID-vkCmdDrawMeshTasksIndirectNV-primitiveTopology-03420 If the bound graphics pipeline state was created with the  & dynamic state enabled then   must have been called in the current command buffer prior to this drawing command, and the primitiveTopology parameter of   must be of the same  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-classtopology class as the pipeline 8::topology state,VUID-vkCmdDrawMeshTasksIndirectNV-None-04875 If the bound graphics pipeline state was created with the  & dynamic state enabled then   must have been called in the current command buffer prior to this drawing command,VUID-vkCmdDrawMeshTasksIndirectNV-None-04876 If the bound graphics pipeline state was created with the  & dynamic state enabled then  must have been called in the current command buffer prior to this drawing command,VUID-vkCmdDrawMeshTasksIndirectNV-None-04877 If the bound graphics pipeline state was created with the  & dynamic state enabled then  must have been called in the current command buffer prior to this drawing command/VUID-vkCmdDrawMeshTasksIndirectNV-logicOp-04878 If the bound graphics pipeline state was created with the  & dynamic state enabled then   must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid   value,VUID-vkCmdDrawMeshTasksIndirectNV-None-04879 If the bound graphics pipeline state was created with the  & dynamic state enabled then  must have been called in the current command buffer prior to this drawing commandVUID-vkCmdDrawMeshTasksIndirectNV-primitiveFragmentShadingRateWithMultipleViewports-04552 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports1primitiveFragmentShadingRateWithMultipleViewports limit is not supported, the bound graphics pipeline was created with the   dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the PrimitiveShadingRateKHR built-in, then   must have been called in the current command buffer prior to this drawing command, and the  viewportCount parameter of   must be 13VUID-vkCmdDrawMeshTasksIndirectNV-blendEnable-04727 If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features do not contain  , then the  blendEnable1 member of the corresponding element of the  pAttachments member of pColorBlendState must be / as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain 7VUID-vkCmdDrawMeshTasksIndirectCountNV-mipmapMode-04770 If a 0  created with  mipmapMode equal to   and  compareEnable equal to / is used to sample a 0> as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain 1VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02691 If a 0 is accessed using atomic operations as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain  1VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02692 If a 0 is sampled with  > as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain  8VUID-vkCmdDrawMeshTasksIndirectCountNV-filterCubic-02694 Any 0 being sampled with  " as a result of this command must have a   and format that supports cubic filtering, as specified by :: filterCubic returned by U >VUID-vkCmdDrawMeshTasksIndirectCountNV-filterCubicMinmax-02695 Any 0 being sampled with  + with a reduction mode of either   or  " as a result of this command must have a   and format that supports cubic filtering together with minmax filtering, as specified by ::filterCubicMinmax returned by U 2VUID-vkCmdDrawMeshTasksIndirectCountNV-flags-02696 Any 0 created with a 1::flags containing * sampled as a result of this command must only be sampled using a   of  1VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02697 For each set n% that is statically used by the 0  bound to the pipeline bind point used by this command, a descriptor set must have been bound to n. at the same pipeline bind point, with a 0 ! that is compatible for set n , with the 0 ! used to create the current 0 , as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???1VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02698 For each push constant that is statically used by the 0  bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a 0 6 that is compatible for push constants, with the 0 ! used to create the current 0 , as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???1VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02699 Descriptors in each bound descriptor set, specified via  , must7 be valid if they are statically used by the 0 ; bound to the pipeline bind point used by this command1VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02700 A valid pipeline must9 be bound to the pipeline bind point used by this command:VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02701 If the 0  object bound to the pipeline bind point used by this command requires any dynamic state, that state must) have been set or inherited (if the  VK_NV_inherited_viewport_scissor extension is enabled) for  commandBuffer, and done so after any previously bound pipeline with the corresponding state not specified as dynamic1VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02859 There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the 0  object bound to the pipeline bind point used by this command, since that pipeline was bound1VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02702 If the 0  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must% not be used to sample from any 0 with a 0 of the type  ,  ,  ,   or  , in any shader stage1VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02703 If the 0  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj# in their name, in any shader stage1VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02704 If the 0  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions that includes a LOD bias or any offset values, in any shader stage1VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02705 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the 0  object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point1VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02706 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the 0  object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point:VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02707 If  commandBuffer is an unprotected command buffer, any resource accessed by the 0  object bound to the pipeline bind point used by this command must! not be a protected resource1VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04115 If a 0 is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction must have at least as many components as the image view@s format9VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageWrite-04469 If a 0  is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction must have at least as many components as the buffer view@s format8VUID-vkCmdDrawMeshTasksIndirectCountNV-SampledType-04470 If a 0 with a  that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 648VUID-vkCmdDrawMeshTasksIndirectCountNV-SampledType-04471 If a 0 with a  that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 328VUID-vkCmdDrawMeshTasksIndirectCountNV-SampledType-04472 If a 0  with a  that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 648VUID-vkCmdDrawMeshTasksIndirectCountNV-SampledType-04473 If a 0  with a  that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32VUID-vkCmdDrawMeshTasksIndirectCountNV-sparseImageInt64Atomics-04474 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, 0$ objects created with the   flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this commandVUID-vkCmdDrawMeshTasksIndirectCountNV-sparseImageInt64Atomics-04475 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, $ objects created with the   flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command7VUID-vkCmdDrawMeshTasksIndirectCountNV-renderPass-02684 The current render pass must be  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible with the  renderPass member of the 8, structure specified when creating the 0  bound to  4VUID-vkCmdDrawMeshTasksIndirectCountNV-subpass-026853 The subpass index of the current render pass must be equal to the subpass member of the 81 structure specified when creating the 0  bound to  1VUID-vkCmdDrawMeshTasksIndirectCountNV-None-026869 Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor set1VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04584 Image subresources used as attachments in the current render pass must not be accessed in any way other than as an attachment by this command, except for cases involving read-only access to depth/stencil attachments as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass chapterVUID-vkCmdDrawMeshTasksIndirectCountNV-maxMultiviewInstanceIndex-02688 If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to X::maxMultiviewInstanceIndexVUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-02689; If the bound graphics pipeline was created with ::sampleLocationsEnable set to / and the current subpass has a depth/stencil attachment, then that attachment must& have been created with the   bit set:VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-03417 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  ' dynamic state enabled, then   must have been called in the current command buffer prior to this drawing command, and the  viewportCount parameter of   must match the 8:: scissorCount of the pipeline9VUID-vkCmdDrawMeshTasksIndirectCountNV-scissorCount-03418 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  ' dynamic state enabled, then  must have been called in the current command buffer prior to this drawing command, and the  scissorCount parameter of  must match the 8:: viewportCount of the pipeline:VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-03419 If the bound graphics pipeline state was created with both the   and  , dynamic states enabled then both   and  must have been called in the current command buffer prior to this drawing command, and the  viewportCount parameter of   must match the  scissorCount parameter of :VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-04137 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  > dynamic state enabled, then the bound graphics pipeline must" have been created with :: viewportCount greater or equal to the  viewportCount) parameter in the last call to  :VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-04138 If the bound graphics pipeline state was created with the   and  & dynamic states enabled then the  viewportCount) parameter in the last call to   must! be greater than or equal to the  viewportCount) parameter in the last call to  :VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-04139 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  > dynamic state enabled, then the bound graphics pipeline must" have been created with :: viewportCount greater or equal to the  viewportCount) parameter in the last call to  :VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-04140 If the bound graphics pipeline state was created with the   and  & dynamic states enabled then the  viewportCount) parameter in the last call to   must! be greater than or equal to the  viewportCount) parameter in the last call to  VUID-vkCmdDrawMeshTasksIndirectCountNV-VkPipelineVieportCreateInfo-04141 If the bound graphics pipeline state was created with the  4 dynamic state enabled and an instance of  chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with :: viewportCount greater or equal to the  viewportCount) parameter in the last call to  VUID-vkCmdDrawMeshTasksIndirectCountNV-VkPipelineVieportCreateInfo-04142 If the bound graphics pipeline state was created with the  4 dynamic state enabled and an instance of  chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with ::exclusiveScissorCount greater or equal to the  viewportCount) parameter in the last call to  >VUID-vkCmdDrawMeshTasksIndirectCountNV-primitiveTopology-03420 If the bound graphics pipeline state was created with the  & dynamic state enabled then   must have been called in the current command buffer prior to this drawing command, and the primitiveTopology parameter of   must be of the same  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-classtopology class as the pipeline 8::topology state1VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04875 If the bound graphics pipeline state was created with the  & dynamic state enabled then   must have been called in the current command buffer prior to this drawing command1VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04876 If the bound graphics pipeline state was created with the  & dynamic state enabled then  must have been called in the current command buffer prior to this drawing command1VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04877 If the bound graphics pipeline state was created with the  & dynamic state enabled then  must have been called in the current command buffer prior to this drawing command4VUID-vkCmdDrawMeshTasksIndirectCountNV-logicOp-04878 If the bound graphics pipeline state was created with the  & dynamic state enabled then   must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid   value1VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04879 If the bound graphics pipeline state was created with the  & dynamic state enabled then  must have been called in the current command buffer prior to this drawing commandVUID-vkCmdDrawMeshTasksIndirectCountNV-primitiveFragmentShadingRateWithMultipleViewports-04552 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports1primitiveFragmentShadingRateWithMultipleViewports limit is not supported, the bound graphics pipeline was created with the   dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the PrimitiveShadingRateKHR built-in, then   must have been called in the current command buffer prior to this drawing command, and the  viewportCount parameter of   must be 18VUID-vkCmdDrawMeshTasksIndirectCountNV-blendEnable-04727 If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features do not contain  , then the  blendEnable1 member of the corresponding element of the  pAttachments member of pColorBlendState must be /VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizationSamples-04740 If rasterization is not disabled in the bound graphics pipeline, and neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples# extensions are enabled, then 8::rasterizationSamples must be the same as the current subpass color and/or depth/stencil attachments1VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04912 If the bound graphics pipeline was created with both the   and  ( dynamic states enabled, then   must have been called in the current command buffer prior to this draw command5VUID-vkCmdDrawMeshTasksIndirectCountNV-pStrides-04913? If the bound graphics pipeline was created with the  . dynamic state enabled, but not the  ' dynamic state enabled, then  must have been called in the current command buffer prior to this draw command, and the pStrides parameter of  must not be NULL1VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04914 If the bound graphics pipeline state was created with the  ' dynamic state enabled, then   must have been called in the current command buffer prior to this draw command3VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-02708 If buffer is non-sparse then it must7 be bound completely and contiguously to a single 0  object3VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-02709 buffer must! have been created with the   bit set3VUID-vkCmdDrawMeshTasksIndirectCountNV-offset-02710 offset must be a multiple of 4:VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02711  commandBuffer must" not be a protected command buffer8VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02714 If  countBuffer is non-sparse then it must7 be bound completely and contiguously to a single 0  object8VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02715  countBuffer must! have been created with the   bit set>VUID-vkCmdDrawMeshTasksIndirectCountNV-countBufferOffset-02716 countBufferOffset must be a multiple of 48VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02717 The count stored in  countBuffer must be less than or equal to  ::maxDrawIndirectCount>VUID-vkCmdDrawMeshTasksIndirectCountNV-countBufferOffset-04129 (countBufferOffset + sizeof (uint32_t)) must+ be less than or equal to the size of  countBuffer1VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04445 If  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectCountdrawIndirectCount# is not enabled this function must not be used3VUID-vkCmdDrawMeshTasksIndirectCountNV-stride-02182 stride must be a multiple of 4 and must" be greater than or equal to sizeof()9VUID-vkCmdDrawMeshTasksIndirectCountNV-maxDrawCount-02183 If  maxDrawCount is greater than or equal to 1, (stride  ( maxDrawCount - 1) + offset + sizeof()) must+ be less than or equal to the size of buffer8VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02191 If the count stored in  countBuffer is equal to 1, (offset + sizeof()) must+ be less than or equal to the size of buffer8VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02192 If the count stored in  countBuffer is greater than 1, (stride  ( drawCount - 1) + offset + sizeof()) must+ be less than or equal to the size of bufferValid Usage (Implicit)>VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-parameter  commandBuffer must be a valid  handle7VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-parameter buffer must be a valid  handleVUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state? SqvulkanVkPhysicalDeviceExternalMemoryRDMAFeaturesNV - Structure describing the external memory RDMA features supported by the implementationMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkanVkMemoryGetRemoteAddressInfoNV - Structure describing a remote accessible address export operationValid Usage (Implicit)See Also, , , 44vulkanmemory is the memory object from which the remote accessible address will be exported.4VUID-VkMemoryGetRemoteAddressInfoNV-memory-parameter memory must be a valid  handle4vulkan handleType! is the type of handle requested.4VUID-VkMemoryGetRemoteAddressInfoNV-handleType-04966  handleType must have been included in P:: handleTypes when memory was created8VUID-VkMemoryGetRemoteAddressInfoNV-handleType-parameter  handleType must be a valid  value4vulkanfeatures-externalMemoryRDMA externalMemoryRDMA< indicates whether the implementation has support for the   memory property and the B  external memory handle type.4vulkanvkGetMemoryRemoteAddressNV - Get an address for a memory object accessible by remote devices DescriptionMore communication may be required between the kernel-mode drivers of the devices involved. This information is out of scope of this documentation and should be requested from the vendors of the devices. Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , 4vulkandevice is the logical device that created the device memory being exported.0VUID-vkGetMemoryRemoteAddressNV-device-parameter device must be a valid  handlevulkanpMemoryGetRemoteAddressInfo is a pointer to a : structure containing parameters of the export operation.VUID-vkGetMemoryRemoteAddressNV-pMemoryGetRemoteAddressInfo-parameter pMemoryGetRemoteAddressInfo must be a valid pointer to a valid  structure 4444444444 4444444444None( #$&'(./0289:<>? dGvulkanVkQueueFamilyCheckpointPropertiesNV - return structure for queue family checkpoint information query Description?Additional queue family information can be queried by setting U::pNext to point to a  structure.Valid Usage (Implicit)See AlsoZ, vulkanVkCheckpointDataNV - return structure for command buffer checkpoint data Description(The stages at which a checkpoint marker can- be executed are implementation-defined and can be queried by calling U .Valid Usage (Implicit)See AlsoY, , 44vulkanstage is a Y value specifying which pipeline stage the checkpoint marker data refers to.4vulkanpCheckpointMarker contains the value of the last checkpoint marker executed in the stage that stage refers to.4vulkancheckpointExecutionStageMask is a mask indicating which pipeline stages the implementation can execute checkpoint markers in.4vulkanvkCmdSetCheckpointNV - insert diagnostic checkpoint in command streamValid Usage (Implicit)1VUID-vkCmdSetCheckpointNV-commandBuffer-parameter  commandBuffer must be a valid  handle1VUID-vkCmdSetCheckpointNV-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state/VUID-vkCmdSetCheckpointNV-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must7 support graphics, compute, or transfer operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary Secondary Both Graphics Compute TransferSee Also4vulkanvkGetQueueCheckpointDataNV - retrieve diagnostic checkpoint data DescriptionIf pCheckpointData is NULL, then the number of checkpoint markers available is returned in pCheckpointDataCount. Otherwise, pCheckpointDataCount must point to a variable set by the user to the number of elements in the pCheckpointData array, and on return the variable is overwritten with the number of structures actually written to pCheckpointData.If pCheckpointDataCount is less than the number of checkpoint markers available, at most pCheckpointDataCount structures will be written. Valid Usage+VUID-vkGetQueueCheckpointDataNV-queue-02025 The device that queue belongs to must be in the lost stateValid Usage (Implicit)/VUID-vkGetQueueCheckpointDataNV-queue-parameter queue must be a valid | handle>VUID-vkGetQueueCheckpointDataNV-pCheckpointDataCount-parameter pCheckpointDataCount must be a valid pointer to a uint32_t value9VUID-vkGetQueueCheckpointDataNV-pCheckpointData-parameter! If the value referenced by pCheckpointDataCount is not 0 , and pCheckpointData is not NULL, pCheckpointData must( be a valid pointer to an array of pCheckpointDataCount  structuresSee Also, |4vulkan commandBuffer3 is the command buffer that will receive the markervulkanpCheckpointMarker is an opaque application-provided value that will be associated with the checkpoint.4vulkanqueue is the |> object the caller would like to retrieve checkpoint data for 44444444444 44444444444None( #$&'(./0289:<>? tvulkanVkDedicatedAllocationMemoryAllocateInfoNV - Specify a dedicated memory allocation resource Valid Usage:VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00649 At least one of image and buffer must be :VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00650 If image is not , the image must have been created with ::dedicatedAllocation equal to /;VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00651 If buffer is not , the buffer must have been created with ::dedicatedAllocation equal to /:VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00652 If image is not , 4::allocationSize must equal the 5::size of the image;VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00653 If buffer is not , 4::allocationSize must equal the 5::size of the buffer:VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00654 If image is not  and 4 defines a memory import operation, the memory being imported must/ also be a dedicated image allocation and image must be identical to the image associated with the imported memory;VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00655 If buffer is not  and 4 defines a memory import operation, the memory being imported must0 also be a dedicated buffer allocation and buffer must be identical to the buffer associated with the imported memoryValid Usage (Implicit):VUID-VkDedicatedAllocationMemoryAllocateInfoNV-sType-sType sType must be  >VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-parameter If image is not , image must be a valid  handle?VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-parameter If buffer is not , buffer must be a valid  handle;VUID-VkDedicatedAllocationMemoryAllocateInfoNV-commonparent Both of buffer, and image7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same 0See Also, , vulkanVkDedicatedAllocationImageCreateInfoNV - Specify that an image is bound to a dedicated memory resource DescriptionNoteUsing a dedicated allocation for color and depth/stencil attachments or other large images may% improve performance on some devices. Valid UsageVUID-VkDedicatedAllocationImageCreateInfoNV-dedicatedAllocation-00994 If dedicatedAllocation is /, 1::flags must not include  ,  , or  Valid Usage (Implicit)7VUID-VkDedicatedAllocationImageCreateInfoNV-sType-sType sType must be  See Alsoq, vulkanVkDedicatedAllocationBufferCreateInfoNV - Specify that a buffer is bound to a dedicated memory resourceValid Usage (Implicit)See Alsoq, 4vulkanimage is = or a handle of an image which this memory will be bound to.4vulkanbuffer is = or a handle of a buffer which this memory will be bound to.4vulkandedicatedAllocation specifies whether the buffer will have a dedicated allocation bound to it.4vulkandedicatedAllocation specifies whether the image will have a dedicated allocation bound to it.4444444444444444444444None( #$&'(./0289:<>? vulkanVkPipelineCoverageReductionStateCreateInfoNV - Structure specifying parameters controlling coverage reduction Description)If this structure is not included in the pNext chain, or if the extension is not enabled, the default coverage reduction mode is inferred as follows:If the VK_NV_framebuffer_mixed_samples1 extension is enabled, then it is as if the coverageReductionMode is 4.If the VK_AMD_mixed_attachment_samples1 extension is enabled, then it is as if the coverageReductionMode is 4.If both VK_NV_framebuffer_mixed_samples and VK_AMD_mixed_attachment_samples are enabled, then the default coverage reduction mode is implementation-dependent.Valid Usage (Implicit)=VUID-VkPipelineCoverageReductionStateCreateInfoNV-sType-sType sType must be  VUID-VkPipelineCoverageReductionStateCreateInfoNV-flags-zerobitmask flags must be 0VUID-VkPipelineCoverageReductionStateCreateInfoNV-coverageReductionMode-parameter coverageReductionMode must be a valid 4 valueSee Also4, 4, vulkanVkPhysicalDeviceCoverageReductionModeFeaturesNV - Structure describing the coverage reduction mode features that can be supported by an implementationMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkanVkFramebufferMixedSamplesCombinationNV - Structure specifying a supported sample count combinationValid Usage (Implicit)See Also4, b, c, , 44vulkan?VkCoverageReductionModeNV - Specify the coverage reduction modeSee Also, 4vulkanVkPipelineCoverageReductionStateCreateFlagsNV - Reserved for future use Description4 is a bitmask type for setting a mask, but is currently reserved for future use.See Also4vulkancoverageReductionMode is a 4/ value specifying the coverage reduction mode.4vulkanrasterizationSamples is a b specifying the number of rasterization samples in the supported combination.4vulkandepthStencilSamples specifies the number of samples in the depth stencil attachment in the supported combination. A value of 0 indicates the combination does not have a depth stencil attachment.4vulkan colorSamples specifies the number of color samples in a color attachment in the supported combination. A value of 0 indicates the combination does not have a color attachment.4vulkanflags is reserved for future use.4vulkancoverageReductionMode is a 4 value controlling how color sample coverage is generated from pixel coverage.4vulkanfeatures-coverageReductionMode coverageReductionMode indicates whether the implementation supports coverage reduction modes. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-coverage-reductionCoverage Reduction.4vulkan4 specifies that for color samples present in the color attachments, a color sample is covered if the pixel coverage sample with the same  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask sample index; i is covered; other pixel coverage samples are discarded.4vulkan4 specifies that each color sample will be associated with an implementation-dependent subset of samples in the pixel coverage. If any of those associated samples are covered, the color sample is covered.4vulkanvkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV - Query supported sample count combinations DescriptionIf  pCombinations is NULL;, then the number of supported combinations for the given physicalDevice is returned in pCombinationCount. Otherwise, pCombinationCount must point to a variable set by the user to the number of elements in the  pCombinations array, and on return the variable is overwritten with the number of values actually written to  pCombinations. If the value of pCombinationCount is less than the number of combinations supported for the given physicalDevice , at most pCombinationCount values will be written to  pCombinations, and  will be returned instead of ?, to indicate that not all the supported values were returned.Valid Usage (Implicit)VUID-vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV-physicalDevice-parameter physicalDevice must be a valid  handleVUID-vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV-pCombinationCount-parameter pCombinationCount must be a valid pointer to a uint32_t valueVUID-vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV-pCombinations-parameter! If the value referenced by pCombinationCount is not 0 , and  pCombinations is not NULL,  pCombinations must( be a valid pointer to an array of pCombinationCount  structures Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, 4vulkanphysicalDevice is the physical device from which to query the set of combinations.44444444444444444444444444444444444444444444None( #$&'(./0289:<>? vulkanVkPhysicalDeviceCooperativeMatrixPropertiesNV - Structure describing cooperative matrix properties supported by an implementation DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.Valid Usage (Implicit)See Alsoe, vulkanVkPhysicalDeviceCooperativeMatrixFeaturesNV - Structure describing cooperative matrix features that can be supported by an implementationMembers0This structure describes the following features: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkanVkCooperativeMatrixPropertiesNV - Structure specifying cooperative matrix properties DescriptionIf some types are preferred over other types (e.g. for performance), they should+ appear earlier in the list enumerated by 5.At least one entry in the list must& have power of two values for all of MSize, KSize, and NSize.Valid Usage (Implicit)See Also5, 5, , 55vulkanVkComponentTypeNV - Specify SPIR-V cooperative matrix component typeSee Also5vulkan VkScopeNV - Specify SPIR-V scope Description5All enum values match the corresponding SPIR-V value.See Also5vulkanMSize/ is the number of rows in matrices A, C, and D.5vulkanNSize. is the number of columns in matrices B, C, D.5vulkanKSize; is the number of columns in matrix A and rows in matrix B.5vulkanAType, is the component type of matrix A, of type 5.4VUID-VkCooperativeMatrixPropertiesNV-AType-parameter AType must be a valid 5 value5vulkanBType, is the component type of matrix B, of type 5.4VUID-VkCooperativeMatrixPropertiesNV-BType-parameter BType must be a valid 5 value5vulkanCType, is the component type of matrix C, of type 5.4VUID-VkCooperativeMatrixPropertiesNV-CType-parameter CType must be a valid 5 value5vulkanDType, is the component type of matrix D, of type 5.4VUID-VkCooperativeMatrixPropertiesNV-DType-parameter DType must be a valid 5 value5vulkanscope/ is the scope of all the matrix types, of type 5.4VUID-VkCooperativeMatrixPropertiesNV-scope-parameter scope must be a valid 5 value5vulkan'limits-cooperativeMatrixSupportedStages  cooperativeMatrixSupportedStages is a bitfield of '  describing the shader stages that cooperative matrix instructions are supported in.  cooperativeMatrixSupportedStages will have the ' : bit set if any of the physical device@s queues support  .5vulkanfeatures-cooperativeMatrix cooperativeMatrix1 indicates that the implementation supports the CooperativeMatrixNV SPIR-V capability.5vulkan,features-cooperativeMatrixRobustBufferAccess #cooperativeMatrixRobustBufferAccess indicates that the implementation supports robust buffer access for SPIR-V OpCooperativeMatrixLoadNV and OpCooperativeMatrixStoreNV instructions.5vulkan5 corresponds to SPIR-V  OpTypeInt 64 0.5vulkan5 corresponds to SPIR-V  OpTypeInt 32 0.5vulkan5 corresponds to SPIR-V  OpTypeInt 16 0.5vulkan5 corresponds to SPIR-V  OpTypeInt 8 0.5vulkan5 corresponds to SPIR-V  OpTypeInt 64 1.5vulkan5 corresponds to SPIR-V  OpTypeInt 32 1.5vulkan5 corresponds to SPIR-V  OpTypeInt 16 1.5vulkan5 corresponds to SPIR-V  OpTypeInt 8 1.5vulkan5 corresponds to SPIR-V  OpTypeFloat 64.5vulkan5 corresponds to SPIR-V  OpTypeFloat 32.5vulkan5 corresponds to SPIR-V  OpTypeFloat 16.5vulkan5 corresponds to SPIR-V  QueueFamily scope.5vulkan5 corresponds to SPIR-V Subgroup scope.5vulkan5 corresponds to SPIR-V  Workgroup scope.5vulkan5 corresponds to SPIR-V 0 scope.5vulkanvkGetPhysicalDeviceCooperativeMatrixPropertiesNV - Returns properties describing what cooperative matrix types are supported DescriptionIf  pProperties is NULL, then the number of cooperative matrix properties available is returned in pPropertyCount. Otherwise, pPropertyCount must point to a variable set by the user to the number of elements in the  pProperties array, and on return the variable is overwritten with the number of structures actually written to  pProperties. If pPropertyCount is less than the number of cooperative matrix properties available, at most pPropertyCount" structures will be written, and  will be returned instead of , to indicate that not all the available cooperative matrix properties were returned.Valid Usage (Implicit)VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-physicalDevice-parameter physicalDevice must be a valid  handleVUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-pPropertyCount-parameter pPropertyCount must be a valid pointer to a uint32_t valueVUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-pProperties-parameter! If the value referenced by pPropertyCount is not 0 , and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pPropertyCount  structures Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, 5vulkanphysicalDevice is the physical device.)55555555555555555555555555555555555555855555555555555555555555555555555555555555555555555555None( #$&'(./0289:<>? vulkan6VkViewportWScalingNV - Structure specifying a viewportSee Also, 5vulkanVkPipelineViewportWScalingStateCreateInfoNV - Structure specifying parameters of a newly created pipeline viewport W scaling stateValid Usage (Implicit)See Alsoq, , 5vulkanviewportWScalingEnable controls whether viewport W scaling is enabled.5vulkan viewportCount$ is the number of viewports used by W scaling, and must; match the number of viewports in the pipeline if viewport W scaling is enabled.VUID-VkPipelineViewportWScalingStateCreateInfoNV-viewportCount-arraylength  viewportCount must be greater than 05vulkanpViewportWScalings is a pointer to an array of  structures defining the W scaling parameters for the corresponding viewports. If the viewport W3 scaling state is dynamic, this member is ignored.5vulkanxcoeff and ycoeff? are the viewport@s W scaling factor for x and y respectively.5vulkanvkCmdSetViewportWScalingNV - Set the viewport W scaling on a command buffer Description0The viewport parameters taken from element i of pViewportWScalings3 replace the current state for the viewport index  firstViewport + i, for i in [0,  viewportCount). Valid Usage3VUID-vkCmdSetViewportWScalingNV-firstViewport-01324 The sum of  firstViewport and  viewportCount must be between 1 and  :: maxViewports, inclusiveValid Usage (Implicit)7VUID-vkCmdSetViewportWScalingNV-commandBuffer-parameter  commandBuffer must be a valid  handle? vulkanVkImageViewHandleInfoNVX - Structure specifying the image view for handle queries Valid Usage2VUID-VkImageViewHandleInfoNVX-descriptorType-02654 descriptorType must be  ,  , or  +VUID-VkImageViewHandleInfoNVX-sampler-02655 sampler must be a valid y if descriptorType is  -VUID-VkImageViewHandleInfoNVX-imageView-02656 If descriptorType is   or  , the image that  imageView was created from must& have been created with the   usage bit set-VUID-VkImageViewHandleInfoNVX-imageView-02657 If descriptorType is  , the image that  imageView was created from must& have been created with the   usage bit setValid Usage (Implicit))VUID-VkImageViewHandleInfoNVX-sType-sType sType must be  )VUID-VkImageViewHandleInfoNVX-pNext-pNext pNext must be NULL1VUID-VkImageViewHandleInfoNVX-imageView-parameter  imageView must be a valid  handle6VUID-VkImageViewHandleInfoNVX-descriptorType-parameter descriptorType must be a valid ' value/VUID-VkImageViewHandleInfoNVX-sampler-parameter If sampler is not , sampler must be a valid y handle*VUID-VkImageViewHandleInfoNVX-commonparent Both of  imageView , and sampler7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same See Also', , y, , 5vulkanVkImageViewAddressPropertiesNVX - Structure specifying the image view for handle queriesValid Usage (Implicit)See Alsop, o, , 55vulkan deviceAddress) is the device address of the image view.5vulkansize6 is the size in bytes of the image view device memory.5vulkan imageView is the image view to query.5vulkandescriptorType7 is the type of descriptor for which to query a handle.5vulkansampler is the sampler to combine with the image view when generating the handle.5vulkanvkGetImageViewHandleNVX - Get the handle for an image view for a specific descriptor typeValid Usage (Implicit)See Also, 5vulkanvkGetImageViewAddressNVX - Get the device address of an image view Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , 5vulkandevice0 is the logical device that owns the image view.-VUID-vkGetImageViewHandleNVX-device-parameter device must be a valid  handlevulkanpInfo6 describes the image view to query and type of handle.,VUID-vkGetImageViewHandleNVX-pInfo-parameter pInfo must be a valid pointer to a valid  structure5vulkandevice0 is the logical device that owns the image view..VUID-vkGetImageViewAddressNVX-device-parameter device must be a valid  handlevulkan imageView is a handle to the image view.1VUID-vkGetImageViewAddressNVX-imageView-parameter  imageView must be a valid  handle.VUID-vkGetImageViewAddressNVX-imageView-parent  imageView must2 have been created, allocated, or retrieved from device55555555555555555555555555None( #$&'(./0289:<>? vulkanVkWin32KeyedMutexAcquireReleaseInfoKHR - Use the Windows keyed mutex mechanism to synchronize work Valid Usage?VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireSyncs-00081 Each member of  pAcquireSyncs and  pReleaseSyncs must9 be a device memory object imported by setting :: handleType to B  or B Valid Usage (Implicit)7VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-sType-sType sType must be  VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireSyncs-parameter If  acquireCount is not 0,  pAcquireSyncs must( be a valid pointer to an array of  acquireCount valid  handlesVUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireKeys-parameter If  acquireCount is not 0,  pAcquireKeys must( be a valid pointer to an array of  acquireCount uint64_t valuesVUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireTimeouts-parameter If  acquireCount is not 0, pAcquireTimeouts must( be a valid pointer to an array of  acquireCount uint32_t valuesVUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pReleaseSyncs-parameter If  releaseCount is not 0,  pReleaseSyncs must( be a valid pointer to an array of  releaseCount valid  handlesVUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pReleaseKeys-parameter If  releaseCount is not 0,  pReleaseKeys must( be a valid pointer to an array of  releaseCount uint64_t values8VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-commonparent Both of the elements of  pAcquireSyncs, and the elements of  pReleaseSyncs7 that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same 0See Also, 6vulkan pAcquireSyncs is a pointer to an array of 9 objects which were imported from Direct3D 11 resources.6vulkan pAcquireKeys is a pointer to an array of mutex key values to wait for prior to beginning the submitted work. Entries refer to the keyed mutex associated with the corresponding entries in  pAcquireSyncs.6vulkanpAcquireTimeouts is a pointer to an array of timeout values, in millisecond units, for each acquire specified in  pAcquireKeys.6vulkan pReleaseSyncs is a pointer to an array of 9 objects which were imported from Direct3D 11 resources.6vulkan pReleaseKeys is a pointer to an array of mutex key values to set when the submitted work has completed. Entries refer to the keyed mutex associated with the corresponding entries in  pReleaseSyncs. 6666666666 6666666666None( #$&'(./0289:<>? vulkanVkPipelineLibraryCreateInfoKHR - Structure specifying pipeline libraries to use when creating a pipeline Valid Usage4VUID-VkPipelineLibraryCreateInfoKHR-pLibraries-03381 Each element of  pLibraries must have been created with  Valid Usage (Implicit)/VUID-VkPipelineLibraryCreateInfoKHR-sType-sType sType must be  /VUID-VkPipelineLibraryCreateInfoKHR-pNext-pNext pNext must be NULL8VUID-VkPipelineLibraryCreateInfoKHR-pLibraries-parameter If  libraryCount is not 0,  pLibraries must( be a valid pointer to an array of  libraryCount valid  handlesSee Also, , 6vulkan pLibraries is a pointer to an array of  structures specifying pipeline libraries to use when creating a pipeline.666666666666None( #$&'(./0289:<>?vulkan3VkPipelineInfoKHR - Structure describing a pipelineValid Usage (Implicit)See Also, , 6vulkanVkPipelineExecutableStatisticKHR - Structure describing a compile-time pipeline executable statisticValid Usage (Implicit)See Also6, 6, , 6vulkanVkPipelineExecutablePropertiesKHR - Structure describing a pipeline executable DescriptionNot all implementations have a 1:1 mapping between shader stages and pipeline executables and some implementations may reduce a given shader stage to fixed function hardware programming such that no pipeline executable is available. No guarantees are provided about the mapping between shader stages and pipeline executables and stages should< be considered a best effort hint. Because the application cannot rely on the stages) field to provide an exact description, name and  description provide a human readable name and description which more accurately describes the given pipeline executable.Valid Usage (Implicit)See Alsoe, , 6vulkanVkPipelineExecutableInternalRepresentationKHR - Structure describing the textual form of a pipeline executable internal representation DescriptionIf pData is NULL, then the size, in bytes, of the internal representation data is returned in dataSize . Otherwise, dataSize: must be the size of the buffer, in bytes, pointed to by pData and on return dataSize is overwritten with the number of bytes of data actually written to pData, including any trailing null character. If dataSize is less than the size, in bytes, of the internal representation@s data, at most dataSize# bytes of data will be written to pData, and  will be returned instead of , to indicate that not all the available representation was returned.If isText is / and pData is not NULL and dataSize' is not zero, the last byte written to pData will be a null character.Valid Usage (Implicit)See Alsoq, , 6vulkanVkPipelineExecutableInfoKHR - Structure describing a pipeline executable to query for associated statistics or internal representationsValid Usage (Implicit)See Also, , 6, 6vulkanVkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR - Structure describing whether pipeline executable properties are availableMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, 6vulkanVkPipelineExecutableStatisticFormatKHR - Enum describing a pipeline executable statisticSee Also6vulkanname is an array of , char containing a null-terminated UTF-8 string which is a short human readable name for this internal representation.6vulkan description is an array of , char containing a null-terminated UTF-8 string which is a human readable description for this internal representation.6vulkanisText specifies whether the returned data is text or opaque data. If isText is / then the data returned in pData is text and is guaranteed to be a null-terminated UTF-8 string.6vulkandataSize is an integer related to the size, in bytes, of the internal representation@s data, as described below.6vulkanpData is either NULL or a pointer to a block of data into which the implementation will write the internal representation.6vulkanname is an array of , char containing a null-terminated UTF-8 string which is a short human readable name for this statistic.6vulkan description is an array of , char containing a null-terminated UTF-8 string which is a human readable description for this statistic.6vulkanformat is a 63 value specifying the format of the data found in value.6vulkanvalue is the value of this statistic.6vulkanpipeline is the pipeline to query.3VUID-VkPipelineExecutableInfoKHR-pipeline-parameter pipeline must be a valid  handle6vulkanexecutableIndex is the index of the pipeline executable to query in the array of executable properties returned by 6.6VUID-VkPipelineExecutableInfoKHR-executableIndex-03275 executableIndex must be less than the number of pipeline executables associated with pipeline as returned in the pExecutableCount parameter of 66vulkanstages is a bitmask of zero or more '  indicating which shader stages (if any) were principally used as inputs to compile this pipeline executable.6vulkanname is an array of , char containing a null-terminated UTF-8 string which is a short human readable name for this pipeline executable.6vulkan description is an array of , char containing a null-terminated UTF-8 string which is a human readable description for this pipeline executable.6vulkan subgroupSize is the subgroup size with which this pipeline executable is dispatched.6vulkanpipeline is a  handle.)VUID-VkPipelineInfoKHR-pipeline-parameter pipeline must be a valid  handle6vulkanfeatures-pipelineExecutableInfo pipelineExecutableInfo indicates that the implementation supports reporting properties and statistics about the pipeline executables associated with a compiled pipeline.6vulkan6 specifies that the statistic is returned as a 64-bit floating-point value and should be read from the f64 field of 6.6vulkan6 specifies that the statistic is returned as an unsigned 64-bit integer and should be read from the u64 field of 6.6vulkan6 specifies that the statistic is returned as a signed 64-bit integer and should be read from the i64 field of 6.6vulkan6 specifies that the statistic is returned as a 32-bit boolean value which must be either / or / and should be read from the b32 field of 6.6vulkanvkGetPipelineExecutablePropertiesKHR - Get the executables associated with a pipeline DescriptionIf  pProperties is NULL, then the number of pipeline executables associated with the pipeline is returned in pExecutableCount. Otherwise, pExecutableCount must point to a variable set by the user to the number of elements in the  pProperties array, and on return the variable is overwritten with the number of structures actually written to  pProperties. If pExecutableCount is less than the number of pipeline executables associated with the pipeline, at most pExecutableCount" structures will be written, and  will be returned instead of , to indicate that not all the available properties were returned. Valid UsageVUID-vkGetPipelineExecutablePropertiesKHR-pipelineExecutableInfo-03270  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineExecutableInfopipelineExecutableInfo must be enabled8VUID-vkGetPipelineExecutablePropertiesKHR-pipeline-03271 pipeline member of  pPipelineInfo must have been created with deviceValid Usage (Implicit):VUID-vkGetPipelineExecutablePropertiesKHR-device-parameter device must be a valid  handleVUID-vkGetPipelineExecutablePropertiesKHR-pPipelineInfo-parameter  pPipelineInfo must$ be a valid pointer to a valid  structureVUID-vkGetPipelineExecutablePropertiesKHR-pExecutableCount-parameter pExecutableCount must be a valid pointer to a uint32_t value?VUID-vkGetPipelineExecutablePropertiesKHR-pProperties-parameter! If the value referenced by pExecutableCount is not 0 , and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pExecutableCount  structures Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , 6vulkanvkGetPipelineExecutableStatisticsKHR - Get compile time statistics associated with a pipeline executable DescriptionIf  pStatistics is NULL, then the number of statistics associated with the pipeline executable is returned in pStatisticCount. Otherwise, pStatisticCount must point to a variable set by the user to the number of elements in the  pStatistics array, and on return the variable is overwritten with the number of structures actually written to  pStatistics. If pStatisticCount is less than the number of statistics associated with the pipeline executable, at most pStatisticCount" structures will be written, and  will be returned instead of , to indicate that not all the available statistics were returned. Valid UsageVUID-vkGetPipelineExecutableStatisticsKHR-pipelineExecutableInfo-03272  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineExecutableInfopipelineExecutableInfo must be enabled8VUID-vkGetPipelineExecutableStatisticsKHR-pipeline-03273 pipeline member of pExecutableInfo must have been created with device8VUID-vkGetPipelineExecutableStatisticsKHR-pipeline-03274 pipeline member of pExecutableInfo must have been created with  Valid Usage (Implicit):VUID-vkGetPipelineExecutableStatisticsKHR-device-parameter device must be a valid  handleVUID-vkGetPipelineExecutableStatisticsKHR-pExecutableInfo-parameter pExecutableInfo must$ be a valid pointer to a valid  structureVUID-vkGetPipelineExecutableStatisticsKHR-pStatisticCount-parameter pStatisticCount must be a valid pointer to a uint32_t value?VUID-vkGetPipelineExecutableStatisticsKHR-pStatistics-parameter! If the value referenced by pStatisticCount is not 0 , and  pStatistics is not NULL,  pStatistics must( be a valid pointer to an array of pStatisticCount  structures Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , 6vulkanvkGetPipelineExecutableInternalRepresentationsKHR - Get internal representations of the pipeline executable DescriptionIf pInternalRepresentations is NULL, then the number of internal representations associated with the pipeline executable is returned in pInternalRepresentationCount. Otherwise, pInternalRepresentationCount must point to a variable set by the user to the number of elements in the pInternalRepresentations array, and on return the variable is overwritten with the number of structures actually written to pInternalRepresentations. If pInternalRepresentationCount is less than the number of internal representations associated with the pipeline executable, at most pInternalRepresentationCount" structures will be written, and  will be returned instead of , to indicate that not all the available representations were returned.While the details of the internal representations remain implementation-dependent, the implementation should order the internal representations in the order in which they occur in the compiled pipeline with the final shader assembly (if any) last. Valid UsageVUID-vkGetPipelineExecutableInternalRepresentationsKHR-pipelineExecutableInfo-03276  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineExecutableInfopipelineExecutableInfo must be enabledVUID-vkGetPipelineExecutableInternalRepresentationsKHR-pipeline-03277 pipeline member of pExecutableInfo must have been created with deviceVUID-vkGetPipelineExecutableInternalRepresentationsKHR-pipeline-03278 pipeline member of pExecutableInfo must have been created with  Valid Usage (Implicit)VUID-vkGetPipelineExecutableInternalRepresentationsKHR-device-parameter device must be a valid  handleVUID-vkGetPipelineExecutableInternalRepresentationsKHR-pExecutableInfo-parameter pExecutableInfo must$ be a valid pointer to a valid  structureVUID-vkGetPipelineExecutableInternalRepresentationsKHR-pInternalRepresentationCount-parameter pInternalRepresentationCount must be a valid pointer to a uint32_t valueVUID-vkGetPipelineExecutableInternalRepresentationsKHR-pInternalRepresentations-parameter! If the value referenced by pInternalRepresentationCount is not 0, and pInternalRepresentations is not NULL, pInternalRepresentations must( be a valid pointer to an array of pInternalRepresentationCount  structures Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , 6vulkandevice) is the device that created the pipeline.vulkan pPipelineInfo& describes the pipeline being queried.6vulkandevice) is the device that created the pipeline.vulkanpExecutableInfo1 describes the pipeline executable being queried.6vulkandevice) is the device that created the pipeline.vulkanpExecutableInfo1 describes the pipeline executable being queried.066666666666666666666666666666666666666666646666666666666666666666666666666666666666666666None( #$&'(./0289:<>?Fw6vulkanVkQueryPoolPerformanceCreateInfoKHR - Structure specifying parameters of a newly created performance query pool Valid Usage?VUID-VkQueryPoolPerformanceCreateInfoKHR-queueFamilyIndex-03236 queueFamilyIndex must1 be a valid queue family index of the deviceVUID-VkQueryPoolPerformanceCreateInfoKHR-performanceCounterQueryPools-03237 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-performanceCounterQueryPoolsperformanceCounterQueryPools feature must be enabled>VUID-VkQueryPoolPerformanceCreateInfoKHR-pCounterIndices-03321 Each element of pCounterIndices must3 be in the range of counters reported by 7( for the queue family specified in queueFamilyIndexValid Usage (Implicit)4VUID-VkQueryPoolPerformanceCreateInfoKHR-sType-sType sType must be  VUID-VkQueryPoolPerformanceCreateInfoKHR-pCounterIndices-parameter pCounterIndices must( be a valid pointer to an array of counterIndexCount uint32_t valuesVUID-VkQueryPoolPerformanceCreateInfoKHR-counterIndexCount-arraylength counterIndexCount must be greater than 0See Also, 7vulkanVkPhysicalDevicePerformanceQueryPropertiesKHR - Structure describing performance query properties for an implementation DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.Valid Usage (Implicit)See Alsoq, vulkanVkPhysicalDevicePerformanceQueryFeaturesKHR - Structure describing performance query support for an implementationMembers0This structure describes the following features: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkanVkPerformanceQuerySubmitInfoKHR - Structure indicating which counter pass index is active for performance queries DescriptionIf the <::pNext chain does not include this structure, the batch defaults to use counter pass index 0.Valid Usage (Implicit)See AlsovulkanVkPerformanceCounterKHR - Structure providing information about a counterValid Usage (Implicit)See Also6, 6, 6, , 7vulkanVkPerformanceCounterDescriptionKHR - Structure providing more detailed information about a counterValid Usage (Implicit)See Also6, , 7vulkanVkAcquireProfilingLockInfoKHR - Structure specifying parameters to acquire the profiling lockValid Usage (Implicit)If timeout is 0, 7 will not block while attempting to acquire the profling lock. If timeout is  UINT64_MAX, the function will not return until the profiling lock was acquired.See Also6, , 76vulkan;VkAcquireProfilingLockFlagBitsKHR - Reserved for future useSee Also66vulkanVkPerformanceCounterDescriptionFlagBitsKHR - Bitmask specifying usage behavior for a counterSee Also66vulkanVkPerformanceCounterStorageKHR - Supported counter storage typesSee Also6vulkan:VkPerformanceCounterUnitKHR - Supported counter unit typesSee Also6vulkan if the performance query pools are allowed to be used with .7vulkan%features-performanceCounterQueryPools performanceCounterQueryPools indicates whether the implementation supports performance counter query pools.7vulkan-features-performanceCounterMultipleQueryPools $performanceCounterMultipleQueryPools indicates whether the implementation supports using multiple performance query pools in a primary command buffer and secondary command buffers executed within it.7vulkan7 specifies that concurrently recording the counter while other submitted command buffers are running may& impact the accuracy of the recording.7vulkan7' specifies that recording the counter may' have a noticeable performance impact.7vulkan7? - the performance counter storage is a 64-bit floating-point.7vulkan7? - the performance counter storage is a 32-bit floating-point.7vulkan7 - the performance counter storage is a 64-bit unsigned integer.7vulkan7 - the performance counter storage is a 32-bit unsigned integer.7vulkan7? - the performance counter storage is a 64-bit signed integer.7vulkan7? - the performance counter storage is a 32-bit signed integer.7vulkan76 - the performance counter unit is a value of cycles.7vulkan7: - the performance counter unit is a value of hertz (Hz).7vulkan78 - the performance counter unit is a value of amps (A).7vulkan79 - the performance counter unit is a value of volts (V).7vulkan79 - the performance counter unit is a value of watts (W).7vulkan7 - the performance counter unit is a temperature reported in Kelvin.7vulkan77 - the performance counter unit is a value of bytes/s.7vulkan75 - the performance counter unit is a value of bytes.7vulkan7 - the performance counter unit is a value of nanoseconds (ns).7vulkan75 - the performance counter unit is a percentage (%).7vulkan79 - the performance counter unit is a generic data point.7vulkan7; - the performance counter scope is zero or more commands.7vulkan7 - the performance counter scope is zero or more complete render passes. The performance query containing the performance counter must/ begin and end outside a render pass instance.7vulkan7 - the performance counter scope is a single complete command buffer.7vulkanvkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR - Reports properties of the performance query counters available on a queue family of a device DescriptionIf  pCounters is NULL and pCounterDescriptions is NULL8, then the number of counters available is returned in  pCounterCount. Otherwise,  pCounterCount must point to a variable set by the user to the number of elements in the  pCounters, pCounterDescriptions, or both arrays and on return the variable is overwritten with the number of structures actually written out. If  pCounterCount9 is less than the number of counters available, at most  pCounterCount" structures will be written, and  will be returned instead of , to indicate that not all the available counters were returned.Valid Usage (Implicit)VUID-vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR-physicalDevice-parameter physicalDevice must be a valid  handleVUID-vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR-pCounterCount-parameter  pCounterCount must be a valid pointer to a uint32_t valueVUID-vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR-pCounters-parameter! If the value referenced by  pCounterCount is not 0 , and  pCounters is not NULL,  pCounters must( be a valid pointer to an array of  pCounterCount  structuresVUID-vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR-pCounterDescriptions-parameter! If the value referenced by  pCounterCount is not 0 , and pCounterDescriptions is not NULL, pCounterDescriptions must( be a valid pointer to an array of  pCounterCount  structures Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , 7vulkanvkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR - Reports the number of passes require for a performance query pool type DescriptionThe pPerformanceQueryCreateInfo member ::queueFamilyIndex must be a queue family of physicalDevice. The number of passes required to capture the counters specified in the pPerformanceQueryCreateInfo member :: pCounters is returned in  pNumPasses.Valid Usage (Implicit)See Also, 7vulkan7vkAcquireProfilingLockKHR - Acquires the profiling lock DescriptionImplementations may allow multiple actors to hold the profiling lock concurrently. Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, 7vulkan7vkReleaseProfilingLockKHR - Releases the profiling lock Valid Usage+VUID-vkReleaseProfilingLockKHR-device-03235 The profiling lock of device must7 have been held via a previous successful call to 7Valid Usage (Implicit)/VUID-vkReleaseProfilingLockKHR-device-parameter device must be a valid  handleSee Also7vulkanphysicalDevice is the handle to the physical device whose queue family performance query counter properties will be queried.vulkanqueueFamilyIndex is the index into the queue family of the physical device we want to get properties for.7vulkanphysicalDevice is the handle to the physical device whose queue family performance query counter properties will be queried.VUID-vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR-physicalDevice-parameter physicalDevice must be a valid  handlevulkanpPerformanceQueryCreateInfo is a pointer to a 1 of the performance query that is to be created.VUID-vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR-pPerformanceQueryCreateInfo-parameter pPerformanceQueryCreateInfo must be a valid pointer to a valid  structure7vulkandevice" is the logical device to profile./VUID-vkAcquireProfilingLockKHR-device-parameter device must be a valid  handlevulkanpInfo is a pointer to a  structure which contains information about how the profiling is to be acquired..VUID-vkAcquireProfilingLockKHR-pInfo-parameter pInfo must be a valid pointer to a valid  structure7vulkandevice- is the logical device to cease profiling on.77777777777777777777777666666776667777776677777777777667776666666677777777777777777777777777777777777777777776666666677767776777777777776777777777776777777677777766776776666767None( #$&'(./0289:<>?n vulkanVkSemaphoreGetFdInfoKHR - Structure describing a POSIX FD semaphore export operation DescriptionThe properties of the file descriptor returned depend on the value of  handleType. See  for a description of the properties of the defined external semaphore handle types. Valid Usage-VUID-VkSemaphoreGetFdInfoKHR-handleType-01132  handleType must! have been included in R:: handleTypes when  semaphore@s current payload was created,VUID-VkSemaphoreGetFdInfoKHR-semaphore-01133  semaphore must not currently have its payload replaced by an imported payload as described below in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importingImporting Semaphore Payloads unless that imported payload@s handle type was included in S::exportFromImportedHandleTypes for  handleType-VUID-VkSemaphoreGetFdInfoKHR-handleType-01134 If  handleType refers to a handle type with copy payload transference semantics, as defined below in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importingImporting Semaphore Payloads , there must be no queue waiting on  semaphore-VUID-VkSemaphoreGetFdInfoKHR-handleType-01135 If  handleType refers to a handle type with copy payload transference semantics,  semaphore must) be signaled, or have an associated  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signalingsemaphore signal operation pending execution-VUID-VkSemaphoreGetFdInfoKHR-handleType-01136  handleType must2 be defined as a POSIX file descriptor handle-VUID-VkSemaphoreGetFdInfoKHR-handleType-03253 If  handleType refers to a handle type with copy payload transference semantics,  semaphore must have been created with a   of  -VUID-VkSemaphoreGetFdInfoKHR-handleType-03254 If  handleType refers to a handle type with copy payload transference semantics,  semaphore must have an associated semaphore signal operation that has been submitted for execution and any semaphore signal operations on which it depends (if any) must, have also been submitted for executionValid Usage (Implicit)(VUID-VkSemaphoreGetFdInfoKHR-sType-sType sType must be  (VUID-VkSemaphoreGetFdInfoKHR-pNext-pNext pNext must be NULL0VUID-VkSemaphoreGetFdInfoKHR-semaphore-parameter  semaphore must be a valid x handle1VUID-VkSemaphoreGetFdInfoKHR-handleType-parameter  handleType must be a valid  valueSee Also, x, , 8vulkanVkImportSemaphoreFdInfoKHR - Structure specifying POSIX file descriptor to import to a semaphore DescriptionThe handle types supported by  handleType are: Handle Type  Transference Permanence Supported  ReferenceTemporary,Permanent Copy TemporaryHandle Types Supported by  Valid Usage0VUID-VkImportSemaphoreFdInfoKHR-handleType-01143  handleType must! be a value included in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphore-handletypes-fdHandle Types Supported by table(VUID-VkImportSemaphoreFdInfoKHR-fd-01544 fd must' obey any requirements listed for  handleType in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility-external semaphore handle types compatibility0VUID-VkImportSemaphoreFdInfoKHR-handleType-03263 If  handleType is   , the =::flags field must( match that of the semaphore from which fd was exported0VUID-VkImportSemaphoreFdInfoKHR-handleType-03264 If  handleType is  , the n:: semaphoreType field must( match that of the semaphore from which fd was exported+VUID-VkImportSemaphoreFdInfoKHR-flags-03323 If flags contains  , the n:: semaphoreType( field of the semaphore from which fd was exported must not be  If  handleType is  , the special value -1 for fd is treated like a valid sync file descriptor referring to an object that has already signaled. The import operation will succeed and the x will have a temporarily imported payload as if a valid file descriptor had been provided.NoteThis special behavior for importing an invalid sync file descriptor allows easier interoperability with other system APIs which use the convention that an invalid sync file descriptor represents work that has already completed and does not need to be waited for. It is consistent with the option for implementations to return a -1$ file descriptor when exporting a   from a x which is signaled.Valid Usage (Implicit)+VUID-VkImportSemaphoreFdInfoKHR-sType-sType sType must be  +VUID-VkImportSemaphoreFdInfoKHR-pNext-pNext pNext must be NULL3VUID-VkImportSemaphoreFdInfoKHR-semaphore-parameter  semaphore must be a valid x handle/VUID-VkImportSemaphoreFdInfoKHR-flags-parameter flags must% be a valid combination of   values4VUID-VkImportSemaphoreFdInfoKHR-handleType-parameter  handleType must be a valid  valueHost SynchronizationHost access to  semaphore must be externally synchronizedSee Also, x, , , 88vulkan semaphore4 is the semaphore from which state will be exported.8vulkan handleType is a 0 value specifying the type of handle requested.8vulkan semaphore: is the semaphore into which the payload will be imported.8vulkanflags is a bitmask of   specifying additional parameters for the semaphore payload import operation.8vulkan handleType is a  value specifying the type of fd.8vulkanfd" is the external handle to import.8vulkanvkGetSemaphoreFdKHR - Get a POSIX file descriptor handle for a semaphore Description Each call to 8 must create a new file descriptor and transfer ownership of it to the application. To avoid leaking resources, the application must release ownership of the file descriptor when it is no longer needed.NoteOwnership can be released in many ways. For example, the application can call close() on the file descriptor, or transfer ownership back to Vulkan by using the file descriptor to import a semaphore payload.? vulkanVkMemoryGetFdInfoKHR - Structure describing a POSIX FD semaphore export operation DescriptionThe properties of the file descriptor exported depend on the value of  handleType. See  for a description of the properties of the defined external memory handle types.NoteThe size of the exported file may' be larger than the size requested by 4::allocationSize. If  handleType is , then the application can$ query the file@s actual size with  man:lseek(2)lseek(2).Valid Usage (Implicit)See Also, , , 8vulkanVkMemoryFdPropertiesKHR - Properties of External Memory File DescriptorsValid Usage (Implicit)See Also, 8vulkanVkImportMemoryFdInfoKHR - Import memory created on the same physical device from a file descriptor DescriptionImporting memory from a file descriptor transfers ownership of the file descriptor from the application to the Vulkan implementation. The application must not perform any operations on the file descriptor after a successful import. The imported memory object holds a reference to its payload. Applications can import the same payload into multiple instances of Vulkan, into the same instance from which it was exported, and multiple times into a given Vulkan instance. In all cases, each import operation must create a distinct  object. Valid Usage-VUID-VkImportMemoryFdInfoKHR-handleType-00667 If  handleType is not 0, it must. be supported for import, as reported by Q or Q%VUID-VkImportMemoryFdInfoKHR-fd-00668 The memory from which fd was exported must have been created on the same underlying physical device as device-VUID-VkImportMemoryFdInfoKHR-handleType-00669 If  handleType is not 0, it must be  or -VUID-VkImportMemoryFdInfoKHR-handleType-00670 If  handleType is not 0, fd must1 be a valid handle of the type specified by  handleType%VUID-VkImportMemoryFdInfoKHR-fd-01746 The memory represented by fd must have been created from a physical device and driver that is compatible with device and  handleType, as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-memory-handle-types-compatibility%VUID-VkImportMemoryFdInfoKHR-fd-01520 fd must' obey any requirements listed for  handleType in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-memory-handle-types-compatibility*external memory handle types compatibilityValid Usage (Implicit)(VUID-VkImportMemoryFdInfoKHR-sType-sType sType must be  1VUID-VkImportMemoryFdInfoKHR-handleType-parameter If  handleType is not 0,  handleType must be a valid  valueSee Also, 8vulkanmemory= is the memory object from which the handle will be exported.*VUID-VkMemoryGetFdInfoKHR-memory-parameter memory must be a valid  handle8vulkan handleType is a 0 value specifying the type of handle requested.*VUID-VkMemoryGetFdInfoKHR-handleType-00671  handleType must have been included in P:: handleTypes when memory was created*VUID-VkMemoryGetFdInfoKHR-handleType-00672  handleType must be  or .VUID-VkMemoryGetFdInfoKHR-handleType-parameter  handleType must be a valid  value8vulkanmemoryTypeBits is a bitmask containing one bit set for every memory type which the specified file descriptor can be imported as.8vulkan handleType is a & value specifying the handle type of fd.8vulkanfd" is the external handle to import.8vulkanvkGetMemoryFdKHR - Get a POSIX file descriptor for a memory object Description Each call to 8 must create a new file descriptor holding a reference to the memory object@s payload and transfer ownership of the file descriptor to the application. To avoid leaking resources, the application must5 release ownership of the file descriptor using the close system call when it is no longer needed, or by importing a Vulkan memory object from it. Where supported by the operating system, the implementation must= set the file descriptor to be closed automatically when an execve system call is made. Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, 8vulkanvkGetMemoryFdPropertiesKHR - Get Properties of External Memory File Descriptors Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , 8vulkandevice is the logical device that created the device memory being exported.&VUID-vkGetMemoryFdKHR-device-parameter device must be a valid  handlevulkan pGetFdInfo is a pointer to a : structure containing parameters of the export operation.*VUID-vkGetMemoryFdKHR-pGetFdInfo-parameter  pGetFdInfo must be a valid pointer to a valid  structure8vulkandevice. is the logical device that will be importing fd.0VUID-vkGetMemoryFdPropertiesKHR-device-parameter device must be a valid  handlevulkan handleType is a * value specifying the type of the handle fd.0VUID-vkGetMemoryFdPropertiesKHR-handleType-00674  handleType must not be  4VUID-vkGetMemoryFdPropertiesKHR-handleType-parameter  handleType must be a valid  valuevulkanfd& is the handle which will be imported.(VUID-vkGetMemoryFdPropertiesKHR-fd-00673 fd must be an external memory handle created outside of the Vulkan API8888888888888888888888888888None( #$&'(./0289:<>? vulkanVkImportFenceFdInfoKHR - (None) DescriptionThe handle types supported by  handleType are: Handle Type  Transference Permanence Supported  ReferenceTemporary,Permanent Copy TemporaryHandle Types Supported by  Valid Usage,VUID-VkImportFenceFdInfoKHR-handleType-01464  handleType must& be a value included in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fence-handletypes-fdHandle Types Supported by table$VUID-VkImportFenceFdInfoKHR-fd-01541 fd must' obey any requirements listed for  handleType in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-fence-handle-types-compatibility)external fence handle types compatibilityIf  handleType is  , the special value -1 for fd is treated like a valid sync file descriptor referring to an object that has already signaled. The import operation will succeed and the  will have a temporarily imported payload as if a valid file descriptor had been provided.NoteThis special behavior for importing an invalid sync file descriptor allows easier interoperability with other system APIs which use the convention that an invalid sync file descriptor represents work that has already completed and does not need to be waited for. It is consistent with the option for implementations to return a -1$ file descriptor when exporting a   from a  which is signaled.Valid Usage (Implicit)'VUID-VkImportFenceFdInfoKHR-sType-sType sType must be  'VUID-VkImportFenceFdInfoKHR-pNext-pNext pNext must be NULL+VUID-VkImportFenceFdInfoKHR-fence-parameter fence must be a valid  handle+VUID-VkImportFenceFdInfoKHR-flags-parameter flags must% be a valid combination of   values0VUID-VkImportFenceFdInfoKHR-handleType-parameter  handleType must be a valid  valueHost SynchronizationHost access to fence must be externally synchronizedSee Also, , , , 8vulkanVkFenceGetFdInfoKHR - Structure describing a POSIX FD fence export operation DescriptionThe properties of the file descriptor returned depend on the value of  handleType. See  for a description of the properties of the defined external fence handle types. Valid Usage)VUID-VkFenceGetFdInfoKHR-handleType-01453  handleType must! have been included in N:: handleTypes when fence@s current payload was created)VUID-VkFenceGetFdInfoKHR-handleType-01454 If  handleType refers to a handle type with copy payload transference semantics, fence must) be signaled, or have an associated  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-signalingfence signal operation pending execution$VUID-VkFenceGetFdInfoKHR-fence-01455 fence must not currently have its payload replaced by an imported payload as described below in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-importingImporting Fence Payloads unless that imported payload@s handle type was included in O::exportFromImportedHandleTypes for  handleType)VUID-VkFenceGetFdInfoKHR-handleType-01456  handleType must2 be defined as a POSIX file descriptor handleValid Usage (Implicit)$VUID-VkFenceGetFdInfoKHR-sType-sType sType must be  $VUID-VkFenceGetFdInfoKHR-pNext-pNext pNext must be NULL(VUID-VkFenceGetFdInfoKHR-fence-parameter fence must be a valid  handle-VUID-VkFenceGetFdInfoKHR-handleType-parameter  handleType must be a valid  valueSee Also, , , 88vulkanfence0 is the fence from which state will be exported.8vulkan handleType is a 0 value specifying the type of handle requested.8vulkanfence6 is the fence into which the payload will be imported.8vulkanflags is a bitmask of   specifying additional parameters for the fence payload import operation.8vulkan handleType is a  value specifying the type of fd.8vulkanfd" is the external handle to import.8vulkanvkGetFenceFdKHR - Get a POSIX file descriptor handle for a fence Description Each call to 8 must create a new file descriptor and transfer ownership of it to the application. To avoid leaking resources, the application must release ownership of the file descriptor when it is no longer needed.NoteOwnership can be released in many ways. For example, the application can call close() on the file descriptor, or transfer ownership back to Vulkan by using the file descriptor to import a fence payload.If pGetFdInfo->handleType is  ( and the fence is signaled at the time 8 is called, pFd may return the value -1$ instead of a valid file descriptor.? vulkanVkVertexInputBindingDescription2EXT - Structure specifying the extended vertex input binding description Valid Usage6VUID-VkVertexInputBindingDescription2EXT-binding-04796 binding must be less than  ::maxVertexInputBindings5VUID-VkVertexInputBindingDescription2EXT-stride-04797 stride must be less than or equal to  ::maxVertexInputBindingStride6VUID-VkVertexInputBindingDescription2EXT-divisor-04798 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-vertexAttributeInstanceRateZeroDivisor&vertexAttributeInstanceRateZeroDivisor feature is not enabled, divisor must not be 06VUID-VkVertexInputBindingDescription2EXT-divisor-04799 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-vertexAttributeInstanceRateDivisor"vertexAttributeInstanceRateDivisor feature is not enabled, divisor must be 16VUID-VkVertexInputBindingDescription2EXT-divisor-06226 divisor must be a value between 0 and ::maxVertexAttribDivisor, inclusive6VUID-VkVertexInputBindingDescription2EXT-divisor-06227 If divisor is not 1 then  inputRate must be of type Valid Usage (Implicit)4VUID-VkVertexInputBindingDescription2EXT-sType-sType sType must be   plus the size of the vertex attribute data described by format must not be greater than stride in the  referenced in bindingValid Usage (Implicit)6VUID-VkVertexInputAttributeDescription2EXT-sType-sType sType must be  ;VUID-VkVertexInputAttributeDescription2EXT-format-parameter format must be a valid K valueSee AlsoK, , 8vulkanVkPhysicalDeviceVertexInputDynamicStateFeaturesEXT - Structure describing whether the dynamic vertex input state can be usedMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, 8vulkanlocation8 is the shader input location number for this attribute.8vulkanbinding is the binding number which this attribute takes its data from.8vulkanformat3 is the size and type of the vertex attribute data.8vulkanoffset is a byte offset of this attribute relative to the start of an element in the vertex input binding.8vulkanbinding5 is the binding number that this structure describes.8vulkanstride is the byte stride between consecutive elements within the buffer.8vulkan inputRate is a  value specifying whether vertex attribute addressing is a function of the vertex index or of the instance index.8vulkandivisor is the number of successive instances that will use the same value of the vertex attribute when instanced rendering is enabled. This member can be set to a value other than 1 if the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-vertexAttributeInstanceRateDivisor"vertexAttributeInstanceRateDivisor feature is enabled. For example, if the divisor is N, the same vertex attribute will be applied to N successive instances before moving on to the next vertex attribute. The maximum value of divisor8 is implementation-dependent and can be queried using ::maxVertexAttribDivisor. A value of 0 can! be used for the divisor if the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-vertexAttributeInstanceRateZeroDivisor&vertexAttributeInstanceRateZeroDivisor feature is enabled. In this case, the same vertex attribute will be applied to all instances.8vulkan features-vertexInputDynamicState vertexInputDynamicState indicates that the implementation supports the following dynamic states: 8vulkan;vkCmdSetVertexInputEXT - Set the dynamic vertex input state DescriptionThis command sets the vertex input attribute and vertex input binding descriptions state for subsequent drawing commands. Valid Usage&VUID-vkCmdSetVertexInputEXT-None-04790 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-vertexInputDynamicStatevertexInputDynamicState feature must be enabled?VUID-vkCmdSetVertexInputEXT-vertexBindingDescriptionCount-04791 vertexBindingDescriptionCount must be less than or equal to  ::maxVertexInputBindingsVUID-vkCmdSetVertexInputEXT-vertexAttributeDescriptionCount-04792 vertexAttributeDescriptionCount must be less than or equal to  ::maxVertexInputAttributes)VUID-vkCmdSetVertexInputEXT-binding-04793 For every binding# specified by each element of pVertexAttributeDescriptions , a  must exist in pVertexBindingDescriptions with the same value of bindingVUID-vkCmdSetVertexInputEXT-pVertexAttributeDescriptions-04795 All elements of pVertexAttributeDescriptions must+ describe distinct attribute locationsValid Usage (Implicit)3VUID-vkCmdSetVertexInputEXT-commandBuffer-parameter  commandBuffer must be a valid  handleVUID-vkCmdSetVertexInputEXT-pVertexBindingDescriptions-parameter If vertexBindingDescriptionCount is not 0, pVertexBindingDescriptions must( be a valid pointer to an array of vertexBindingDescriptionCount valid  structuresVUID-vkCmdSetVertexInputEXT-pVertexAttributeDescriptions-parameter If vertexAttributeDescriptionCount is not 0, pVertexAttributeDescriptions must( be a valid pointer to an array of vertexAttributeDescriptionCount valid  structures3VUID-vkCmdSetVertexInputEXT-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state1VUID-vkCmdSetVertexInputEXT-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth  Graphics See Also, , 8vulkan commandBuffer is the command buffer into which the command will be recorded.vulkanpVertexBindingDescriptions is a pointer to an array of  structures.vulkanpVertexAttributeDescriptions is a pointer to an array of  structures.8888888888888888888888888888888888None( #$&'(./0289:<>?kvulkanVkPipelineRasterizationStateStreamCreateInfoEXT - Structure defining the geometry stream used for rasterization Description"If this structure is not present, rasterizationStream is assumed to be zero.Valid Usage (Implicit)See Also8, vulkanVkPhysicalDeviceTransformFeedbackPropertiesEXT - Structure describing transform feedback properties that can be supported by an implementation DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.Valid Usage (Implicit)See Alsoq, o, vulkanVkPhysicalDeviceTransformFeedbackFeaturesEXT - Structure describing transform feedback features that can be supported by an implementationMembers0This structure describes the following features: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, 8vulkanVkPipelineRasterizationStateStreamCreateFlagsEXT - Reserved for future use Description8 is a bitmask type for setting a mask, but is currently reserved for future use.See Also8vulkanflags is reserved for future use.VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-flags-zerobitmask flags must be 09vulkanrasterizationStream1 is the vertex stream selected for rasterization.VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-rasterizationStream-02325 rasterizationStream must be less than ::maxTransformFeedbackStreamsVUID-VkPipelineRasterizationStateStreamCreateInfoEXT-rasterizationStream-02326 rasterizationStream must be zero if ::*transformFeedbackRasterizationStreamSelect is /9vulkan"limits-maxTransformFeedbackStreams maxTransformFeedbackStreams is the maximum number of vertex streams that can be output from geometry shaders declared with the GeometryStreams6 capability. If the implementation does not support ::geometryStreams then maxTransformFeedbackStreams must be set to 1.9vulkan"limits-maxTransformFeedbackBuffers maxTransformFeedbackBuffers is the maximum number of transform feedback buffers that can be bound for capturing shader outputs from the last  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader stage.9vulkan%limits-maxTransformFeedbackBufferSize maxTransformFeedbackBufferSize is the maximum size that can be specified when binding a buffer for transform feedback in 9.9vulkan)limits-maxTransformFeedbackStreamDataSize "maxTransformFeedbackStreamDataSize is the maximum amount of data in bytes for each vertex that captured to one or more transform feedback buffers associated with a specific vertex stream.9vulkan)limits-maxTransformFeedbackBufferDataSize "maxTransformFeedbackBufferDataSize is the maximum amount of data in bytes for each vertex that can be captured to a specific transform feedback buffer.9vulkan+limits-maxTransformFeedbackBufferDataStride $maxTransformFeedbackBufferDataStride is the maximum stride between each capture of vertex data to the buffer.9vulkanlimits-transformFeedbackQueries transformFeedbackQueries is /% if the implementation supports the $  query type. transformFeedbackQueries# is false if queries of this type cannot be created.9vulkan-limits-transformFeedbackStreamsLinesTriangles &transformFeedbackStreamsLinesTriangles is /5 if the implementation supports the geometry shader OpExecutionMode of OutputLineStrip and OutputTriangleStrip in addition to  OutputPoints1 when more than one vertex stream is output. If &transformFeedbackStreamsLinesTriangles/ is false the implementation only supports an OpExecutionMode of  OutputPoints when more than one vertex stream is output from the geometry shader.9vulkan1limits-transformFeedbackRasterizationStreamSelect *transformFeedbackRasterizationStreamSelect is /% if the implementation supports the GeometryStreams0 SPIR-V capability and the application can use  to modify which vertex stream output is used for rasterization. Otherwise vertex stream 0 must" always be used for rasterization.9vulkanlimits-transformFeedbackDraw transformFeedbackDraw is /% if the implementation supports the 9! function otherwise the function must not be called.9vulkanfeatures-transformFeedback transformFeedback indicates whether the implementation supports transform feedback and shader modules can declare the TransformFeedback capability.9vulkanfeatures-geometryStreams geometryStreams4 indicates whether the implementation supports the GeometryStreams SPIR-V capability.9vulkanvkCmdBindTransformFeedbackBuffersEXT - Bind transform feedback buffers to a command buffer Description$The values taken from elements i of pBuffers, pOffsets and pSizes replace the current state for the transform feedback binding  firstBinding + i, for i in [0,  bindingCount). The transform feedback binding is updated to start at the offset indicated by pOffsets"[i] from the start of the buffer pBuffers[i]. Valid UsageVUID-vkCmdBindTransformFeedbackBuffersEXT-transformFeedback-02355 ::transformFeedback must be enabled This function will call the supplied action between calls to 9 and 9 Note that 9 is *not* called if an exception is thrown by the inner action.9vulkanvkCmdEndTransformFeedbackEXT - Make transform feedback inactive in the command buffer Valid Usage9VUID-vkCmdEndTransformFeedbackEXT-transformFeedback-02374 ::transformFeedback must be enabled,VUID-vkCmdEndTransformFeedbackEXT-None-02375 Transform feedback must be active:VUID-vkCmdEndTransformFeedbackEXT-firstCounterBuffer-02376 firstCounterBuffer must be less than ::maxTransformFeedbackBuffers:VUID-vkCmdEndTransformFeedbackEXT-firstCounterBuffer-02377 The sum of firstCounterBuffer and counterBufferCount must$ be less than or equal to ::maxTransformFeedbackBuffers:VUID-vkCmdEndTransformFeedbackEXT-counterBufferCount-02608 If counterBufferCount is not 0, and pCounterBuffers is not NULL, pCounterBuffers must( be a valid pointer to an array of counterBufferCount ' handles that are either valid or =VUID-vkCmdEndTransformFeedbackEXT-pCounterBufferOffsets-02378= For each buffer handle in the array, if it is not  it must reference a buffer large enough to hold 4 bytes at the corresponding offset from the pCounterBufferOffsets array6VUID-vkCmdEndTransformFeedbackEXT-pCounterBuffer-02379 If pCounterBuffer is NULL, then pCounterBufferOffsets must also be NULL7VUID-vkCmdEndTransformFeedbackEXT-pCounterBuffers-02380$ For each buffer handle in the pCounterBuffers array that is not  it must have been created with a usage value containing  Valid Usage (Implicit)9VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-parameter  commandBuffer must be a valid  handleVUID-vkCmdEndTransformFeedbackEXT-pCounterBufferOffsets-parameter If counterBufferCount is not 0, and pCounterBufferOffsets is not NULL, pCounterBufferOffsets must( be a valid pointer to an array of counterBufferCount o values9VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state7VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operations,VUID-vkCmdEndTransformFeedbackEXT-renderpass This command must5 only be called inside of a render pass instance.VUID-vkCmdEndTransformFeedbackEXT-commonparent Both of  commandBuffer, and the elements of pCounterBuffers7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryInside  Graphics See Also, , o9vulkan2vkCmdBeginQueryIndexedEXT - Begin an indexed query DescriptionThe 9# command operates the same as the  = command, except that it also accepts a query type specific index parameter. Valid Usage)VUID-vkCmdBeginQueryIndexedEXT-None-00807& All queries used by the command must be unavailable.VUID-vkCmdBeginQueryIndexedEXT-queryType-02804 The  queryType used to create  queryPool must not be $ .VUID-vkCmdBeginQueryIndexedEXT-queryType-04728 The  queryType used to create  queryPool must not be $  or $ .VUID-vkCmdBeginQueryIndexedEXT-queryType-04729 The  queryType used to create  queryPool must not be $ .VUID-vkCmdBeginQueryIndexedEXT-queryType-00800 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-occlusionQueryPreciseprecise occlusion queries% feature is not enabled, or the  queryType used to create  queryPool was not $, flags must not contain *VUID-vkCmdBeginQueryIndexedEXT-query-00802 query must, be less than the number of queries in  queryPool.VUID-vkCmdBeginQueryIndexedEXT-queryType-00803 If the  queryType used to create  queryPool was $ , the 0  that  commandBuffer was allocated from must support graphics operations.VUID-vkCmdBeginQueryIndexedEXT-queryType-00804 If the  queryType used to create  queryPool was $ and any of the pipelineStatistics( indicate graphics operations, the 0  that  commandBuffer was allocated from must support graphics operations.VUID-vkCmdBeginQueryIndexedEXT-queryType-00805 If the  queryType used to create  queryPool was $ and any of the pipelineStatistics' indicate compute operations, the 0  that  commandBuffer was allocated from must support compute operations2VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-01885  commandBuffer must" not be a protected command buffer*VUID-vkCmdBeginQueryIndexedEXT-query-00808: If called within a render pass instance, the sum of query and the number of bits set in the current subpass@s view mask must8 be less than or equal to the number of queries in  queryPool.VUID-vkCmdBeginQueryIndexedEXT-queryPool-04753 If the  queryPool was created with the same  queryType as that of another  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-activeactive query within  commandBuffer, then index must3 not match the index used for the active query.VUID-vkCmdBeginQueryIndexedEXT-queryType-02338 If the  queryType used to create  queryPool was $  the 0  that  commandBuffer was allocated from must support graphics operations.VUID-vkCmdBeginQueryIndexedEXT-queryType-02339 If the  queryType used to create  queryPool was $  the index parameter must be less than ::maxTransformFeedbackStreams.VUID-vkCmdBeginQueryIndexedEXT-queryType-02340 If the  queryType used to create  queryPool was not $  the index must be zero.VUID-vkCmdBeginQueryIndexedEXT-queryType-02341 If the  queryType used to create  queryPool was $  then ::transformFeedbackQueries must be supported.VUID-vkCmdBeginQueryIndexedEXT-queryPool-03223 If  queryPool was created with a  queryType of $, the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#profiling-lockprofiling lock must have been held before   was called on  commandBuffer.VUID-vkCmdBeginQueryIndexedEXT-queryPool-03224 If  queryPool was created with a  queryType of $- and one of the counters used to create  queryPool was , the query begin must' be the first recorded command in  commandBuffer.VUID-vkCmdBeginQueryIndexedEXT-queryPool-03225 If  queryPool was created with a  queryType of $- and one of the counters used to create  queryPool was , the begin command must3 not be recorded within a render pass instance.VUID-vkCmdBeginQueryIndexedEXT-queryPool-03226 If  queryPool was created with a  queryType of $$ and another query pool with a  queryType $ has been used within  commandBuffer, its parent primary command buffer or secondary command buffer recorded within the same parent primary command buffer as  commandBuffer , the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-performanceCounterMultipleQueryPools$performanceCounterMultipleQueryPools feature must be enabled)VUID-vkCmdBeginQueryIndexedEXT-None-02863 If  queryPool was created with a  queryType of $, this command must not be recorded in a command buffer that, either directly or through secondary command buffers, also contains a  & command affecting the same queryValid Usage (Implicit)6VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-parameter  commandBuffer must be a valid  handle2VUID-vkCmdBeginQueryIndexedEXT-queryPool-parameter  queryPool must be a valid } handle.VUID-vkCmdBeginQueryIndexedEXT-flags-parameter flags must% be a valid combination of \ values6VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state4VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must( support graphics, or compute operations+VUID-vkCmdBeginQueryIndexedEXT-commonparent Both of  commandBuffer, and  queryPool must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth Graphics ComputeSee Also, ], }9vulkan>This function will call the supplied action between calls to 9 and 9 Note that 9 is *not* called if an exception is thrown by the inner action.9vulkan&vkCmdEndQueryIndexedEXT - Ends a query DescriptionThe 9# command operates the same as the  = command, except that it also accepts a query type specific index parameter. Valid Usage'VUID-vkCmdEndQueryIndexedEXT-None-02342& All queries used by the command must be https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-activeactive(VUID-vkCmdEndQueryIndexedEXT-query-02343 query must, be less than the number of queries in  queryPool0VUID-vkCmdEndQueryIndexedEXT-commandBuffer-02344  commandBuffer must" not be a protected command buffer(VUID-vkCmdEndQueryIndexedEXT-query-02345 If 9: is called within a render pass instance, the sum of query and the number of bits set in the current subpass@s view mask must8 be less than or equal to the number of queries in  queryPool,VUID-vkCmdEndQueryIndexedEXT-queryType-02346 If the  queryType used to create  queryPool was $  the index parameter must be less than ::maxTransformFeedbackStreams,VUID-vkCmdEndQueryIndexedEXT-queryType-02347 If the  queryType used to create  queryPool was not $  the index must be zero,VUID-vkCmdEndQueryIndexedEXT-queryType-02723 If the  queryType used to create  queryPool was $  index must equal the index used to begin the queryValid Usage (Implicit)4VUID-vkCmdEndQueryIndexedEXT-commandBuffer-parameter  commandBuffer must be a valid  handle0VUID-vkCmdEndQueryIndexedEXT-queryPool-parameter  queryPool must be a valid } handle4VUID-vkCmdEndQueryIndexedEXT-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state2VUID-vkCmdEndQueryIndexedEXT-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must( support graphics, or compute operations)VUID-vkCmdEndQueryIndexedEXT-commonparent Both of  commandBuffer , and  queryPool must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth Graphics ComputeSee Also, }9vulkanvkCmdDrawIndirectByteCountEXT - Draw primitives with indirect parameters where the vertex count is derived from the counter byte value in the counter buffer DescriptionWhen the command is executed, primitives are assembled in the same way as done with   except the  vertexCount2 is calculated based on the byte count read from  counterBuffer at offset counterBufferOffset. The assembled primitives execute the bound graphics pipeline.The effective  vertexCount is calculated as follows: const uint32_t * counterBufferPtr = (const uint8_t *)counterBuffer.address + counterBufferOffset; vertexCount = floor(max(0, (*counterBufferPtr - counterOffset)) / vertexStride);The effective  firstVertex is zero. Valid Usage2VUID-vkCmdDrawIndirectByteCountEXT-magFilter-04553 If a 0  created with  magFilter or  minFilter equal to   and  compareEnable equal to / is used to sample a 0> as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain ?3VUID-vkCmdDrawIndirectByteCountEXT-mipmapMode-04770 If a 0  created with  mipmapMode equal to   and  compareEnable equal to / is used to sample a 0> as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain -VUID-vkCmdDrawIndirectByteCountEXT-None-02691 If a 0 is accessed using atomic operations as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain  -VUID-vkCmdDrawIndirectByteCountEXT-None-02692 If a 0 is sampled with  > as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain  4VUID-vkCmdDrawIndirectByteCountEXT-filterCubic-02694 Any 0 being sampled with  " as a result of this command must have a   and format that supports cubic filtering, as specified by :: filterCubic returned by U :VUID-vkCmdDrawIndirectByteCountEXT-filterCubicMinmax-02695 Any 0 being sampled with  + with a reduction mode of either   or  " as a result of this command must have a   and format that supports cubic filtering together with minmax filtering, as specified by ::filterCubicMinmax returned by U .VUID-vkCmdDrawIndirectByteCountEXT-flags-02696 Any 0 created with a 1::flags containing * sampled as a result of this command must only be sampled using a   of  -VUID-vkCmdDrawIndirectByteCountEXT-None-02697 For each set n% that is statically used by the 0  bound to the pipeline bind point used by this command, a descriptor set must have been bound to n. at the same pipeline bind point, with a 0 ! that is compatible for set n , with the 0 ! used to create the current 0 , as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???-VUID-vkCmdDrawIndirectByteCountEXT-None-02698 For each push constant that is statically used by the 0  bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a 0 6 that is compatible for push constants, with the 0 ! used to create the current 0 , as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???-VUID-vkCmdDrawIndirectByteCountEXT-None-02699 Descriptors in each bound descriptor set, specified via  , must7 be valid if they are statically used by the 0 ; bound to the pipeline bind point used by this command-VUID-vkCmdDrawIndirectByteCountEXT-None-02700 A valid pipeline must9 be bound to the pipeline bind point used by this command6VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02701 If the 0  object bound to the pipeline bind point used by this command requires any dynamic state, that state must) have been set or inherited (if the  VK_NV_inherited_viewport_scissor extension is enabled) for  commandBuffer, and done so after any previously bound pipeline with the corresponding state not specified as dynamic-VUID-vkCmdDrawIndirectByteCountEXT-None-02859 There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the 0  object bound to the pipeline bind point used by this command, since that pipeline was bound-VUID-vkCmdDrawIndirectByteCountEXT-None-02702 If the 0  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must% not be used to sample from any 0 with a 0 of the type  ,  ,  ,   or  , in any shader stage-VUID-vkCmdDrawIndirectByteCountEXT-None-02703 If the 0  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj# in their name, in any shader stage-VUID-vkCmdDrawIndirectByteCountEXT-None-02704 If the 0  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions that includes a LOD bias or any offset values, in any shader stage-VUID-vkCmdDrawIndirectByteCountEXT-None-02705 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the 0  object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point-VUID-vkCmdDrawIndirectByteCountEXT-None-02706 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the 0  object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point6VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02707 If  commandBuffer is an unprotected command buffer, any resource accessed by the 0  object bound to the pipeline bind point used by this command must! not be a protected resource-VUID-vkCmdDrawIndirectByteCountEXT-None-04115 If a 0 is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction must have at least as many components as the image view@s format5VUID-vkCmdDrawIndirectByteCountEXT-OpImageWrite-04469 If a 0  is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction must have at least as many components as the buffer view@s format4VUID-vkCmdDrawIndirectByteCountEXT-SampledType-04470 If a 0 with a  that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 644VUID-vkCmdDrawIndirectByteCountEXT-SampledType-04471 If a 0 with a  that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 324VUID-vkCmdDrawIndirectByteCountEXT-SampledType-04472 If a 0  with a  that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 644VUID-vkCmdDrawIndirectByteCountEXT-SampledType-04473 If a 0  with a  that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32VUID-vkCmdDrawIndirectByteCountEXT-sparseImageInt64Atomics-04474 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, 0$ objects created with the   flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this commandVUID-vkCmdDrawIndirectByteCountEXT-sparseImageInt64Atomics-04475 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, $ objects created with the   flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command3VUID-vkCmdDrawIndirectByteCountEXT-renderPass-02684 The current render pass must be  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible with the  renderPass member of the 8, structure specified when creating the 0  bound to  0VUID-vkCmdDrawIndirectByteCountEXT-subpass-026853 The subpass index of the current render pass must be equal to the subpass member of the 8, structure specified when creating the 0  bound to  -VUID-vkCmdDrawIndirectByteCountEXT-None-026869 Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor set-VUID-vkCmdDrawIndirectByteCountEXT-None-04584 Image subresources used as attachments in the current render pass must not be accessed in any way other than as an attachment by this command, except for cases involving read-only access to depth/stencil attachments as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass chapterVUID-vkCmdDrawIndirectByteCountEXT-maxMultiviewInstanceIndex-02688 If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to X::maxMultiviewInstanceIndex>VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-02689; If the bound graphics pipeline was created with ::sampleLocationsEnable set to / and the current subpass has a depth/stencil attachment, then that attachment must& have been created with the   bit set6VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-03417 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  ' dynamic state enabled, then   must have been called in the current command buffer prior to this drawing command, and the  viewportCount parameter of   must match the 8:: scissorCount of the pipeline5VUID-vkCmdDrawIndirectByteCountEXT-scissorCount-03418 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  ' dynamic state enabled, then  must have been called in the current command buffer prior to this drawing command, and the  scissorCount parameter of  must match the 8:: viewportCount of the pipeline6VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-03419 If the bound graphics pipeline state was created with both the   and  , dynamic states enabled then both   and  must have been called in the current command buffer prior to this drawing command, and the  viewportCount parameter of   must match the  scissorCount parameter of 6VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-04137 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  > dynamic state enabled, then the bound graphics pipeline must" have been created with :: viewportCount greater or equal to the  viewportCount) parameter in the last call to  6VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-04138 If the bound graphics pipeline state was created with the   and  & dynamic states enabled then the  viewportCount) parameter in the last call to   must! be greater than or equal to the  viewportCount) parameter in the last call to  6VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-04139 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  > dynamic state enabled, then the bound graphics pipeline must" have been created with :: viewportCount greater or equal to the  viewportCount) parameter in the last call to  6VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-04140 If the bound graphics pipeline state was created with the   and  & dynamic states enabled then the  viewportCount) parameter in the last call to   must! be greater than or equal to the  viewportCount) parameter in the last call to  VUID-vkCmdDrawIndirectByteCountEXT-VkPipelineVieportCreateInfo-04141 If the bound graphics pipeline state was created with the  4 dynamic state enabled and an instance of  chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with :: viewportCount greater or equal to the  viewportCount) parameter in the last call to  VUID-vkCmdDrawIndirectByteCountEXT-VkPipelineVieportCreateInfo-04142 If the bound graphics pipeline state was created with the  4 dynamic state enabled and an instance of  chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with ::exclusiveScissorCount greater or equal to the  viewportCount) parameter in the last call to  :VUID-vkCmdDrawIndirectByteCountEXT-primitiveTopology-03420 If the bound graphics pipeline state was created with the  & dynamic state enabled then   must have been called in the current command buffer prior to this drawing command, and the primitiveTopology parameter of   must be of the same  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-classtopology class as the pipeline 8::topology state-VUID-vkCmdDrawIndirectByteCountEXT-None-04875 If the bound graphics pipeline state was created with the  & dynamic state enabled then   must have been called in the current command buffer prior to this drawing command-VUID-vkCmdDrawIndirectByteCountEXT-None-04876 If the bound graphics pipeline state was created with the  & dynamic state enabled then  must have been called in the current command buffer prior to this drawing command-VUID-vkCmdDrawIndirectByteCountEXT-None-04877 If the bound graphics pipeline state was created with the  & dynamic state enabled then  must have been called in the current command buffer prior to this drawing command0VUID-vkCmdDrawIndirectByteCountEXT-logicOp-04878 If the bound graphics pipeline state was created with the  & dynamic state enabled then   must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid   value-VUID-vkCmdDrawIndirectByteCountEXT-None-04879 If the bound graphics pipeline state was created with the  & dynamic state enabled then  must have been called in the current command buffer prior to this drawing commandVUID-vkCmdDrawIndirectByteCountEXT-primitiveFragmentShadingRateWithMultipleViewports-04552 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports1primitiveFragmentShadingRateWithMultipleViewports limit is not supported, the bound graphics pipeline was created with the   dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the PrimitiveShadingRateKHR built-in, then   must have been called in the current command buffer prior to this drawing command, and the  viewportCount parameter of   must be 14VUID-vkCmdDrawIndirectByteCountEXT-blendEnable-04727 If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features do not contain  , then the  blendEnable1 member of the corresponding element of the  pAttachments member of pColorBlendState must be /=VUID-vkCmdDrawIndirectByteCountEXT-rasterizationSamples-04740 If rasterization is not disabled in the bound graphics pipeline, and neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples# extensions are enabled, then 8::rasterizationSamples must be the same as the current subpass color and/or depth/stencil attachments-VUID-vkCmdDrawIndirectByteCountEXT-None-04912 If the bound graphics pipeline was created with both the   and  ( dynamic states enabled, then   must have been called in the current command buffer prior to this draw command1VUID-vkCmdDrawIndirectByteCountEXT-pStrides-04913? If the bound graphics pipeline was created with the  . dynamic state enabled, but not the  ' dynamic state enabled, then  must have been called in the current command buffer prior to this draw command, and the pStrides parameter of  must not be NULL-VUID-vkCmdDrawIndirectByteCountEXT-None-04914 If the bound graphics pipeline state was created with the  ' dynamic state enabled, then   must have been called in the current command buffer prior to this draw command-VUID-vkCmdDrawIndirectByteCountEXT-None-04007 All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point@s interface must have either valid or  buffers bound-VUID-vkCmdDrawIndirectByteCountEXT-None-04008 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point@s interface must not be -VUID-vkCmdDrawIndirectByteCountEXT-None-02721 For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input???:VUID-vkCmdDrawIndirectByteCountEXT-transformFeedback-02287 ::transformFeedback must be enabled>VUID-vkCmdDrawIndirectByteCountEXT-transformFeedbackDraw-02288 The implementation must support ::transformFeedbackDraw5VUID-vkCmdDrawIndirectByteCountEXT-vertexStride-02289  vertexStride must2 be greater than 0 and less than or equal to  ::$maxTransformFeedbackBufferDataStride6VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-04567 If  counterBuffer is non-sparse then it must7 be bound completely and contiguously to a single 0  object6VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-02290  counterBuffer must! have been created with the   bit set?pvulkanVkPhysicalDeviceToolPropertiesEXT - Structure providing information about an active toolValid Usage (Implicit)See Also, 9, 99vulkanVkToolPurposeFlagBitsEXT - Bitmask specifying the purposes of an active toolSee Also99vulkanname is a null-terminated UTF-8 string containing the name of the tool.9vulkanversion is a null-terminated UTF-8 string containing the version of the tool.9vulkanpurposes is a bitmask of 99 which is populated with purposes supported by the tool.9vulkan description is a null-terminated UTF-8 string containing a description of the tool.9vulkanlayer is a null-terminated UTF-8 string that contains the name of the layer implementing the tool, if the tool is implemented in a layer - otherwise it may be an empty string.9vulkan9 specifies that the tool reports additional information to the application via callbacks specified by   or  9vulkan9# specifies that the tool consumes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-debug-markers debug markers or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-object-debug-annotationobject debug annotation,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-queue-labels queue labels, or https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-command-buffer-labelscommand buffer labels9vulkan9 specifies that the tool modifies the API features/limits/extensions presented to the application.9vulkan9 specifies that the tool provides additional API features/extensions on top of the underlying implementation.9vulkan9 specifies that the tool is capturing data about the application@s API usage, including anything from simple logging to capturing data for later replay.9vulkan9: specifies that the tool provides profiling of API usage.9vulkan9; specifies that the tool provides validation of API usage.9vulkanvkGetPhysicalDeviceToolPropertiesEXT - Reports properties of tools active on the specified physical device DescriptionIf pToolProperties is NULL0, then the number of tools currently active on physicalDevice is returned in  pToolCount. Otherwise,  pToolCount must point to a variable set by the user to the number of elements in the pToolProperties array, and on return the variable is overwritten with the number of structures actually written to pToolProperties. If  pToolCount= is less than the number of currently active tools, at most  pToolCount structures will be written.)The count and properties of active tools may change in response to events outside the scope of the specification. An application should9 assume these properties might change at any given time.Valid Usage (Implicit)VUID-vkGetPhysicalDeviceToolPropertiesEXT-physicalDevice-parameter physicalDevice must be a valid  handle>VUID-vkGetPhysicalDeviceToolPropertiesEXT-pToolCount-parameter  pToolCount must be a valid pointer to a uint32_t valueVUID-vkGetPhysicalDeviceToolPropertiesEXT-pToolProperties-parameter! If the value referenced by  pToolCount is not 0 , and pToolProperties is not NULL, pToolProperties must( be a valid pointer to an array of  pToolCount  structures Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, 9vulkanphysicalDevice is the handle to the physical device to query for active tools.9999999999999999999999999999999999999999999999999None( #$&'(./0289:<>?vulkanVkSubpassSampleLocationsEXT - Structure specifying the sample locations state to use for layout transitions of attachments performed after a given subpass DescriptionIf the image referenced by the depth/stencil attachment used in the subpass identified by  subpassIndex was not created with   or if the subpass does not use a depth/stencil attachment, and ::variableSampleLocations is / then the values specified in sampleLocationsInfo are ignored.Valid Usage (Implicit)See Also, vulkanVkSampleLocationsInfoEXT - Structure specifying a set of sample locations DescriptionThis structure can be used either to specify the sample locations to be used for rendering or to specify the set of sample locations an image subresource has been last rendered with for the purposes of layout transitions of depth/stencil images created with  .The sample locations in pSampleLocations specify sampleLocationsPerPixel number of sample locations for each pixel in the grid of the size specified in sampleLocationGridSize. The sample location for sample i at the pixel grid location (x,y) is taken from pSampleLocations [(x + y  sampleLocationGridSize.width)  sampleLocationsPerPixel + i].If the render pass has a fragment density map, the implementation will choose the sample locations for the fragment and the contents of pSampleLocations may be ignored. Valid Usage;VUID-VkSampleLocationsInfoEXT-sampleLocationsPerPixel-01526 sampleLocationsPerPixel must$ be a bit value that is set in ::sampleLocationSampleCounts8VUID-VkSampleLocationsInfoEXT-sampleLocationsCount-01527 sampleLocationsCount must equal sampleLocationsPerPixel  sampleLocationGridSize.width  sampleLocationGridSize.heightValid Usage (Implicit))VUID-VkSampleLocationsInfoEXT-sType-sType sType must be  8VUID-VkSampleLocationsInfoEXT-pSampleLocations-parameter If sampleLocationsCount is not 0, pSampleLocations must( be a valid pointer to an array of sampleLocationsCount  structuresSee Also, v, , b, , , , 9vulkanVkSampleLocationEXT - Structure specifying the coordinates of a sample location DescriptionThe domain space of the sample location coordinates has an upper-left origin within the pixel in framebuffer space.The values specified in a  structure are always clamped to the implementation-dependent sample location coordinate range [sampleLocationCoordinateRange[0],sampleLocationCoordinateRange [1]] that can be queried using .See AlsovulkanVkRenderPassSampleLocationsBeginInfoEXT - Structure specifying sample locations to use for the layout transition of custom sample locations compatible depth/stencil attachmentsValid Usage (Implicit)8VUID-VkRenderPassSampleLocationsBeginInfoEXT-sType-sType sType must be  VUID-VkRenderPassSampleLocationsBeginInfoEXT-pAttachmentInitialSampleLocations-parameter If %attachmentInitialSampleLocationsCount is not 0, !pAttachmentInitialSampleLocations must( be a valid pointer to an array of %attachmentInitialSampleLocationsCount valid  structuresVUID-VkRenderPassSampleLocationsBeginInfoEXT-pPostSubpassSampleLocations-parameter If postSubpassSampleLocationsCount is not 0, pPostSubpassSampleLocations must( be a valid pointer to an array of postSubpassSampleLocationsCount valid  structuresSee Also, , vulkanVkPipelineSampleLocationsStateCreateInfoEXT - Structure specifying sample locations for a pipelineValid Usage (Implicit)See Alsoq, , vulkanVkPhysicalDeviceSampleLocationsPropertiesEXT - Structure describing sample location limits that can be supported by an implementation DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.Valid Usage (Implicit)See Alsoq, v, c, vulkanVkMultisamplePropertiesEXT - Structure returning information about sample count specific additional multisampling capabilitiesValid Usage (Implicit)See Alsov, , 9vulkanVkAttachmentSampleLocationsEXT - Structure specifying the sample locations state to use in the initial layout transition of attachments DescriptionIf the image referenced by the framebuffer attachment at index attachmentIndex was not created with   then the values specified in sampleLocationsInfo are ignored.Valid Usage (Implicit)See Also, 9vulkanmaxSampleLocationGridSize is the maximum size of the pixel grid in which sample locations can vary.9vulkan!limits-sampleLocationSampleCounts sampleLocationSampleCounts is a bitmask of b indicating the sample counts supporting custom sample locations.9vulkan limits-maxSampleLocationGridSize maxSampleLocationGridSize is the maximum size of the pixel grid in which sample locations can2 vary that is supported for all sample counts in sampleLocationSampleCounts.9vulkan$limits-sampleLocationCoordinateRange sampleLocationCoordinateRange;[2] is the range of supported sample location coordinates.9vulkan!limits-sampleLocationSubPixelBits sampleLocationSubPixelBits is the number of bits of subpixel precision for sample locations.9vulkanlimits-variableSampleLocations variableSampleLocations specifies whether the sample locations used by all pipelines that will be bound to a command buffer during a subpass must match. If set to /, the implementation supports variable sample locations in a subpass. If set to /, then the sample locations must stay constant in each subpass.9vulkansampleLocationsEnable8 controls whether custom sample locations are used. If sampleLocationsEnable is /, the default sample locations are used and the values specified in sampleLocationsInfo are ignored.9vulkansampleLocationsInfo9 is the sample locations to use during rasterization if sampleLocationsEnable is /1 and the graphics pipeline is not created with .VUID-VkPipelineSampleLocationsStateCreateInfoEXT-sampleLocationsInfo-parameter sampleLocationsInfo must be a valid  structure9vulkan!pAttachmentInitialSampleLocations is a pointer to an array of %attachmentInitialSampleLocationsCount  structures specifying the attachment indices and their corresponding sample location state. Each element of !pAttachmentInitialSampleLocations can specify the sample location state to use in the automatic layout transition performed to transition a depth/stencil attachment from the initial layout of the attachment to the image layout specified for the attachment in the first subpass using it.9vulkanpPostSubpassSampleLocations is a pointer to an array of postSubpassSampleLocationsCount  structures specifying the subpass indices and their corresponding sample location state. Each element of pPostSubpassSampleLocations can specify the sample location state to use in the automatic layout transition performed to transition the depth/stencil attachment used by the specified subpass to the image layout specified in a dependent subpass or to the final layout of the attachment in case the specified subpass is the last subpass using that attachment. In addition, if ::variableSampleLocations is /, each element of pPostSubpassSampleLocations must specify the sample location state that matches the sample locations used by all pipelines that will be bound to a command buffer during the specified subpass. If variableSampleLocations is /, the sample locations used for rasterization do not depend on pPostSubpassSampleLocations.9vulkan subpassIndex is the index of the subpass for which the sample locations state is provided.3VUID-VkSubpassSampleLocationsEXT-subpassIndex-01532  subpassIndex must be less than the  subpassCount specified in 7 the render pass specified by :: renderPass was created with9vulkansampleLocationsInfo is the sample locations state to use for the layout transition of the depth/stencil attachment away from the image layout the attachment is used with in the subpass specified in  subpassIndex.>VUID-VkSubpassSampleLocationsEXT-sampleLocationsInfo-parameter sampleLocationsInfo must be a valid  structure9vulkanattachmentIndex is the index of the attachment for which the sample locations state is provided.9VUID-VkAttachmentSampleLocationsEXT-attachmentIndex-01531 attachmentIndex must be less than the attachmentCount specified in 7 the render pass specified by :: renderPass was created with9vulkansampleLocationsInfo is the sample locations state to use for the layout transition of the given attachment from the initial layout of the attachment to the image layout specified for the attachment in the first subpass using it.VUID-VkAttachmentSampleLocationsEXT-sampleLocationsInfo-parameter sampleLocationsInfo must be a valid  structure9vulkansampleLocationsPerPixel is a b< value specifying the number of sample locations per pixel.9vulkansampleLocationGridSize is the size of the sample location grid to select custom sample locations for.9vulkanpSampleLocations is a pointer to an array of sampleLocationsCount  structures.9vulkanx7 is the horizontal coordinate of the sample@s location.9vulkany5 is the vertical coordinate of the sample@s location.9vulkanvkCmdSetSampleLocationsEXT - Set the dynamic sample locations state Valid Usage=VUID-vkCmdSetSampleLocationsEXT-sampleLocationsPerPixel-01529 The sampleLocationsPerPixel member of pSampleLocationsInfo must equal the rasterizationSamples member of the 8 structure the bound graphics pipeline has been created with=VUID-vkCmdSetSampleLocationsEXT-variableSampleLocations-01530 If ::variableSampleLocations is /# then the current render pass must& have been begun by specifying a  structure whose pPostSubpassSampleLocations( member contains an element with a  subpassIndex1 matching the current subpass index and the sampleLocationsInfo member of that element must5 match the sample locations state pointed to by pSampleLocationsInfoValid Usage (Implicit)7VUID-vkCmdSetSampleLocationsEXT-commandBuffer-parameter  commandBuffer must be a valid  handle>VUID-vkCmdSetSampleLocationsEXT-pSampleLocationsInfo-parameter pSampleLocationsInfo must$ be a valid pointer to a valid  structure7VUID-vkCmdSetSampleLocationsEXT-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state5VUID-vkCmdSetSampleLocationsEXT-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth  Graphics See Also, 9vulkanvkGetPhysicalDeviceMultisamplePropertiesEXT - Report sample count specific multisampling capabilities of a physical deviceValid Usage (Implicit)See Also, , b9vulkan commandBuffer is the command buffer into which the command will be recorded.vulkanpSampleLocationsInfo& is the sample locations state to set.9vulkanphysicalDevice is the physical device from which to query the additional multisampling capabilities.VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-physicalDevice-parameter physicalDevice must be a valid  handlevulkansamples is a b> value specifying the sample count to query capabilities for.VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-samples-parameter samples must be a valid b value)999999999999999999999999999999999)999999999999999999999999999999999None( #$&'(./0289:<>?ٟ vulkanVkPhysicalDeviceMultiDrawPropertiesEXT - Structure describing multidraw limits of an implementationMembersThe members of the , structure describe the following features: DescriptionIf the 0VkPhysicalDeviceMultiDrawPropertiesPropertiesEXT structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.Valid Usage (Implicit)See AlsovulkanVkPhysicalDeviceMultiDrawFeaturesEXT - Structure describing whether the implementation supports multi draw functionalityMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkan>VkMultiDrawInfoEXT - Structure specifying a multi-draw command DescriptionThe members of  have the same meaning as the  firstVertex and  vertexCount parameters in  .See Also:vulkanVkMultiDrawIndexedInfoEXT - Structure specifying a multi-draw command DescriptionThe  firstIndex,  indexCount, and  vertexOffset members of  have the same meaning as the  firstIndex,  indexCount, and  vertexOffset parameters, respectively, of  .See Also::vulkanfeatures-multiDraw  multiDraw- indicates that the implementation supports : and :.:vulkanlimits-maxMultiDrawCount maxMultiDrawCount3 indicates the maximum number of draw calls which can$ be batched into a single multidraw.:vulkan firstIndex is the first index to draw.:vulkan indexCount# is the number of vertices to draw.:vulkan vertexOffset is the value added to the vertex index before indexing into the vertex buffer for indexed multidraws.:vulkan firstVertex is the first vertex to draw.:vulkan vertexCount# is the number of vertices to draw.:vulkan#vkCmdDrawMultiEXT - Draw primitives Description drawCount/ draws are executed with parameters taken from  pVertexInfo+. The number of draw commands recorded is  drawCount., with each command reading, sequentially, a  firstVertex and a  vertexCount from  pVertexInfo. Valid Usage&VUID-vkCmdDrawMultiEXT-magFilter-04553 If a 0  created with  magFilter or  minFilter equal to   and  compareEnable equal to / is used to sample a 0> as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain ?'VUID-vkCmdDrawMultiEXT-mipmapMode-04770 If a 0  created with  mipmapMode equal to   and  compareEnable equal to / is used to sample a 0> as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain !VUID-vkCmdDrawMultiEXT-None-02691 If a 0 is accessed using atomic operations as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain  !VUID-vkCmdDrawMultiEXT-None-02692 If a 0 is sampled with  > as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain  (VUID-vkCmdDrawMultiEXT-filterCubic-02694 Any 0 being sampled with  " as a result of this command must have a   and format that supports cubic filtering, as specified by :: filterCubic returned by U .VUID-vkCmdDrawMultiEXT-filterCubicMinmax-02695 Any 0 being sampled with  + with a reduction mode of either   or  " as a result of this command must have a   and format that supports cubic filtering together with minmax filtering, as specified by ::filterCubicMinmax returned by U "VUID-vkCmdDrawMultiEXT-flags-02696 Any 0 created with a 1::flags containing * sampled as a result of this command must only be sampled using a   of  !VUID-vkCmdDrawMultiEXT-None-02697 For each set n% that is statically used by the 0  bound to the pipeline bind point used by this command, a descriptor set must have been bound to n. at the same pipeline bind point, with a 0 ! that is compatible for set n , with the 0 ! used to create the current 0 , as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???!VUID-vkCmdDrawMultiEXT-None-02698< For each push constant that is statically used by the 0  bound to the pipeline bind point used by this command, a push constant value must= have been set for the same pipeline bind point, with a 0 6 that is compatible for push constants, with the 0 ! used to create the current 0 , as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???!VUID-vkCmdDrawMultiEXT-None-02699 Descriptors in each bound descriptor set, specified via  , must7 be valid if they are statically used by the 0 ; bound to the pipeline bind point used by this command!VUID-vkCmdDrawMultiEXT-None-02700 A valid pipeline must> be bound to the pipeline bind point used by this command*VUID-vkCmdDrawMultiEXT-commandBuffer-02701 If the 0  object bound to the pipeline bind point used by this command requires any dynamic state, that state must) have been set or inherited (if the  VK_NV_inherited_viewport_scissor extension is enabled) for  commandBuffer, and done so after any previously bound pipeline with the corresponding state not specified as dynamic!VUID-vkCmdDrawMultiEXT-None-02859 There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the 0  object bound to the pipeline bind point used by this command, since that pipeline was bound!VUID-vkCmdDrawMultiEXT-None-02702 If the 0  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must% not be used to sample from any 0 with a 0 of the type  ,  ,  ,   or  , in any shader stage!VUID-vkCmdDrawMultiEXT-None-02703 If the 0  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj# in their name, in any shader stage!VUID-vkCmdDrawMultiEXT-None-02704 If the 0  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions that includes a LOD bias or any offset values, in any shader stage!VUID-vkCmdDrawMultiEXT-None-02705 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the 0  object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point!VUID-vkCmdDrawMultiEXT-None-02706 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the 0  object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point*VUID-vkCmdDrawMultiEXT-commandBuffer-02707 If  commandBuffer is an unprotected command buffer, any resource accessed by the 0  object bound to the pipeline bind point used by this command must not be a protected resource!VUID-vkCmdDrawMultiEXT-None-04115 If a 0 is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction must have at least as many components as the image view@s format)VUID-vkCmdDrawMultiEXT-OpImageWrite-04469 If a 0  is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction must have at least as many components as the buffer view@s format(VUID-vkCmdDrawMultiEXT-SampledType-04470 If a 0 with a  that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64(VUID-vkCmdDrawMultiEXT-SampledType-04471 If a 0 with a  that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32(VUID-vkCmdDrawMultiEXT-SampledType-04472 If a 0  with a  that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64(VUID-vkCmdDrawMultiEXT-SampledType-04473 If a 0  with a  that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 324VUID-vkCmdDrawMultiEXT-sparseImageInt64Atomics-04474 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, 0$ objects created with the   flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command4VUID-vkCmdDrawMultiEXT-sparseImageInt64Atomics-04475 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, 0 $ objects created with the   flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command'VUID-vkCmdDrawMultiEXT-renderPass-02684 The current render pass must be  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible with the  renderPass member of the 8, structure specified when creating the 0  bound to  $VUID-vkCmdDrawMultiEXT-subpass-026853 The subpass index of the current render pass must be equal to the subpass member of the 8, structure specified when creating the 0  bound to  !VUID-vkCmdDrawMultiEXT-None-026869 Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor set!VUID-vkCmdDrawMultiEXT-None-04584 Image subresources used as attachments in the current render pass must not be accessed in any way other than as an attachment by this command, except for cases involving read-only access to depth/stencil attachments as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass chapter6VUID-vkCmdDrawMultiEXT-maxMultiviewInstanceIndex-02688 If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to X::maxMultiviewInstanceIndex2VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-02689; If the bound graphics pipeline was created with ::sampleLocationsEnable set to / and the current subpass has a depth/stencil attachment, then that attachment must& have been created with the   bit set*VUID-vkCmdDrawMultiEXT-viewportCount-03417 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  ' dynamic state enabled, then   must have been called in the current command buffer prior to this drawing command, and the  viewportCount parameter of   must match the 8:: scissorCount of the pipeline)VUID-vkCmdDrawMultiEXT-scissorCount-03418 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  ' dynamic state enabled, then  must have been called in the current command buffer prior to this drawing command, and the  scissorCount parameter of  must match the 8:: viewportCount of the pipeline*VUID-vkCmdDrawMultiEXT-viewportCount-03419 If the bound graphics pipeline state was created with both the   and  , dynamic states enabled then both   and  must have been called in the current command buffer prior to this drawing command, and the  viewportCount parameter of   must match the  scissorCount parameter of *VUID-vkCmdDrawMultiEXT-viewportCount-04137 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  > dynamic state enabled, then the bound graphics pipeline must" have been created with :: viewportCount greater or equal to the  viewportCount) parameter in the last call to  *VUID-vkCmdDrawMultiEXT-viewportCount-04138 If the bound graphics pipeline state was created with the   and  & dynamic states enabled then the  viewportCount) parameter in the last call to   must! be greater than or equal to the  viewportCount) parameter in the last call to  *VUID-vkCmdDrawMultiEXT-viewportCount-04139 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  > dynamic state enabled, then the bound graphics pipeline must" have been created with :: viewportCount greater or equal to the  viewportCount) parameter in the last call to  *VUID-vkCmdDrawMultiEXT-viewportCount-04140 If the bound graphics pipeline state was created with the   and  & dynamic states enabled then the  viewportCount) parameter in the last call to   must! be greater than or equal to the  viewportCount) parameter in the last call to  8VUID-vkCmdDrawMultiEXT-VkPipelineVieportCreateInfo-04141 If the bound graphics pipeline state was created with the  4 dynamic state enabled and an instance of  chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with :: viewportCount greater or equal to the  viewportCount) parameter in the last call to  8VUID-vkCmdDrawMultiEXT-VkPipelineVieportCreateInfo-04142 If the bound graphics pipeline state was created with the  4 dynamic state enabled and an instance of  chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with ::exclusiveScissorCount greater or equal to the  viewportCount) parameter in the last call to  .VUID-vkCmdDrawMultiEXT-primitiveTopology-03420 If the bound graphics pipeline state was created with the  & dynamic state enabled then   must have been called in the current command buffer prior to this drawing command, and the primitiveTopology parameter of   must be of the same  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-classtopology class as the pipeline 8::topology state!VUID-vkCmdDrawMultiEXT-None-04875 If the bound graphics pipeline state was created with the  & dynamic state enabled then   must have been called in the current command buffer prior to this drawing command!VUID-vkCmdDrawMultiEXT-None-04876 If the bound graphics pipeline state was created with the  & dynamic state enabled then  must have been called in the current command buffer prior to this drawing command!VUID-vkCmdDrawMultiEXT-None-04877 If the bound graphics pipeline state was created with the  & dynamic state enabled then  must have been called in the current command buffer prior to this drawing command$VUID-vkCmdDrawMultiEXT-logicOp-04878 If the bound graphics pipeline state was created with the  & dynamic state enabled then   must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid   value!VUID-vkCmdDrawMultiEXT-None-04879 If the bound graphics pipeline state was created with the  & dynamic state enabled then  must have been called in the current command buffer prior to this drawing commandVUID-vkCmdDrawMultiEXT-primitiveFragmentShadingRateWithMultipleViewports-04552 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports1primitiveFragmentShadingRateWithMultipleViewports limit is not supported, the bound graphics pipeline was created with the   dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the PrimitiveShadingRateKHR built-in, then   must have been called in the current command buffer prior to this drawing command, and the  viewportCount parameter of   must be 1(VUID-vkCmdDrawMultiEXT-blendEnable-04727 If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features do not contain  , then the  blendEnable1 member of the corresponding element of the  pAttachments member of pColorBlendState must be /1VUID-vkCmdDrawMultiEXT-rasterizationSamples-04740 If rasterization is not disabled in the bound graphics pipeline, and neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples# extensions are enabled, then 8::rasterizationSamples must be the same as the current subpass color and/or depth/stencil attachments!VUID-vkCmdDrawMultiEXT-None-04912 If the bound graphics pipeline was created with both the   and  ( dynamic states enabled, then   must have been called in the current command buffer prior to this draw command%VUID-vkCmdDrawMultiEXT-pStrides-04913? If the bound graphics pipeline was created with the  . dynamic state enabled, but not the  ' dynamic state enabled, then  must have been called in the current command buffer prior to this draw command, and the pStrides parameter of  must not be NULL!VUID-vkCmdDrawMultiEXT-None-04914 If the bound graphics pipeline state was created with the  ' dynamic state enabled, then   must have been called in the current command buffer prior to this draw command*VUID-vkCmdDrawMultiEXT-commandBuffer-02712 If  commandBuffer is a protected command buffer, any resource written to by the 0  object bound to the pipeline bind point used by this command must not be an unprotected resource*VUID-vkCmdDrawMultiEXT-commandBuffer-02713 If  commandBuffer is a protected command buffer, pipeline stages other than the framebuffer-space and compute stages in the 0  object bound to the pipeline bind point used by this command must not write to any resource*VUID-vkCmdDrawMultiEXT-commandBuffer-04617) If any of the shader stages of the 0  bound to the pipeline bind point used by this command uses the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-RayQueryKHR RayQueryKHR capability, then  commandBuffer must' not be a protected command buffer!VUID-vkCmdDrawMultiEXT-None-04007 All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point@s interface must have either valid or  buffers bound!VUID-vkCmdDrawMultiEXT-None-04008 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point@s interface must not be !VUID-vkCmdDrawMultiEXT-None-02721 For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input???!VUID-vkCmdDrawMultiEXT-None-04933 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiDraw multiDraw feature must be enabled&VUID-vkCmdDrawMultiEXT-drawCount-04934  drawCount must be less than ::maxMultiDrawCount&VUID-vkCmdDrawMultiEXT-drawCount-04935 If  drawCount is greater than zero,  pVertexInfo must be a valid pointer to memory containing one or more valid instances of  structures#VUID-vkCmdDrawMultiEXT-stride-04936 stride must be a multiple of 4Valid Usage (Implicit).VUID-vkCmdDrawMultiEXT-commandBuffer-parameter  commandBuffer must be a valid  handle.VUID-vkCmdDrawMultiEXT-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state,VUID-vkCmdDrawMultiEXT-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operations!VUID-vkCmdDrawMultiEXT-renderpass This command must5 only be called inside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryInside  Graphics See Also, :vulkan*vkCmdDrawMultiIndexedEXT - Draw primitives Description drawCount8 indexed draws are executed with parameters taken from  pIndexInfo*. The number of draw commands recorded is  drawCount., with each command reading, sequentially, a  firstIndex and an  indexCount from  pIndexInfo. If  pVertexOffset is NULL, a  vertexOffset is also read from  pIndexInfo*, otherwise the value from dereferencing  pVertexOffset is used. Valid Usage-VUID-vkCmdDrawMultiIndexedEXT-magFilter-04553 If a 0  created with  magFilter or  minFilter equal to   and  compareEnable equal to / is used to sample a 0> as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain .VUID-vkCmdDrawMultiIndexedEXT-mipmapMode-04770 If a 0  created with  mipmapMode equal to   and  compareEnable equal to / is used to sample a 0> as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain (VUID-vkCmdDrawMultiIndexedEXT-None-02691 If a 0 is accessed using atomic operations as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain  (VUID-vkCmdDrawMultiIndexedEXT-None-02692 If a 0 is sampled with  > as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain  /VUID-vkCmdDrawMultiIndexedEXT-filterCubic-02694 Any 0 being sampled with  " as a result of this command must have a   and format that supports cubic filtering, as specified by :: filterCubic returned by U 5VUID-vkCmdDrawMultiIndexedEXT-filterCubicMinmax-02695 Any 0 being sampled with  + with a reduction mode of either   or  " as a result of this command must have a   and format that supports cubic filtering together with minmax filtering, as specified by ::filterCubicMinmax returned by U )VUID-vkCmdDrawMultiIndexedEXT-flags-02696 Any 0 created with a 1::flags containing * sampled as a result of this command must only be sampled using a   of  (VUID-vkCmdDrawMultiIndexedEXT-None-02697 For each set n% that is statically used by the 0  bound to the pipeline bind point used by this command, a descriptor set must have been bound to n. at the same pipeline bind point, with a 0 ! that is compatible for set n , with the 0 ! used to create the current 0 , as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???(VUID-vkCmdDrawMultiIndexedEXT-None-02698< For each push constant that is statically used by the 0  bound to the pipeline bind point used by this command, a push constant value must= have been set for the same pipeline bind point, with a 0 ; that is compatible for push constants, with the 0 ! used to create the current 0 , as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???(VUID-vkCmdDrawMultiIndexedEXT-None-02699 Descriptors in each bound descriptor set, specified via  , must7 be valid if they are statically used by the 0 ; bound to the pipeline bind point used by this command(VUID-vkCmdDrawMultiIndexedEXT-None-02700 A valid pipeline must> be bound to the pipeline bind point used by this command1VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-02701 If the 0  object bound to the pipeline bind point used by this command requires any dynamic state, that state must) have been set or inherited (if the  VK_NV_inherited_viewport_scissor extension is enabled) for  commandBuffer, and done so after any previously bound pipeline with the corresponding state not specified as dynamic(VUID-vkCmdDrawMultiIndexedEXT-None-02859 There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the 0  object bound to the pipeline bind point used by this command, since that pipeline was bound(VUID-vkCmdDrawMultiIndexedEXT-None-02702 If the 0  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must% not be used to sample from any 0 with a 0 of the type  ,  ,  ,   or  , in any shader stage(VUID-vkCmdDrawMultiIndexedEXT-None-02703 If the 0  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj# in their name, in any shader stage(VUID-vkCmdDrawMultiIndexedEXT-None-02704 If the 0  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions that includes a LOD bias or any offset values, in any shader stage(VUID-vkCmdDrawMultiIndexedEXT-None-02705 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the 0  object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point(VUID-vkCmdDrawMultiIndexedEXT-None-02706 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the 0  object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point1VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-02707 If  commandBuffer is an unprotected command buffer, any resource accessed by the 0  object bound to the pipeline bind point used by this command must! not be a protected resource(VUID-vkCmdDrawMultiIndexedEXT-None-04115 If a 0 is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction must have at least as many components as the image view@s format0VUID-vkCmdDrawMultiIndexedEXT-OpImageWrite-04469 If a 0  is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction must have at least as many components as the buffer view@s format/VUID-vkCmdDrawMultiIndexedEXT-SampledType-04470 If a 0 with a  that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64/VUID-vkCmdDrawMultiIndexedEXT-SampledType-04471 If a 0 with a  that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32/VUID-vkCmdDrawMultiIndexedEXT-SampledType-04472 If a 0  with a  that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64/VUID-vkCmdDrawMultiIndexedEXT-SampledType-04473 If a 0  with a  that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32;VUID-vkCmdDrawMultiIndexedEXT-sparseImageInt64Atomics-04474 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, 0$ objects created with the   flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command;VUID-vkCmdDrawMultiIndexedEXT-sparseImageInt64Atomics-04475 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, 0 $ objects created with the   flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command.VUID-vkCmdDrawMultiIndexedEXT-renderPass-02684 The current render pass must be  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible with the  renderPass member of the 8, structure specified when creating the 0  bound to  +VUID-vkCmdDrawMultiIndexedEXT-subpass-026853 The subpass index of the current render pass must be equal to the subpass member of the 8, structure specified when creating the 0  bound to  (VUID-vkCmdDrawMultiIndexedEXT-None-026869 Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor set(VUID-vkCmdDrawMultiIndexedEXT-None-04584 Image subresources used as attachments in the current render pass must not be accessed in any way other than as an attachment by this command, except for cases involving read-only access to depth/stencil attachments as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass chapter=VUID-vkCmdDrawMultiIndexedEXT-maxMultiviewInstanceIndex-02688 If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to X::maxMultiviewInstanceIndex9VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-02689; If the bound graphics pipeline was created with ::sampleLocationsEnable set to / and the current subpass has a depth/stencil attachment, then that attachment must& have been created with the   bit set1VUID-vkCmdDrawMultiIndexedEXT-viewportCount-03417 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  ' dynamic state enabled, then   must have been called in the current command buffer prior to this drawing command, and the  viewportCount parameter of   must match the 8:: scissorCount of the pipeline0VUID-vkCmdDrawMultiIndexedEXT-scissorCount-03418 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  ' dynamic state enabled, then  must have been called in the current command buffer prior to this drawing command, and the  scissorCount parameter of  must match the 8:: viewportCount of the pipeline1VUID-vkCmdDrawMultiIndexedEXT-viewportCount-03419 If the bound graphics pipeline state was created with both the   and  , dynamic states enabled then both   and  must have been called in the current command buffer prior to this drawing command, and the  viewportCount parameter of   must match the  scissorCount parameter of 1VUID-vkCmdDrawMultiIndexedEXT-viewportCount-04137 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  > dynamic state enabled, then the bound graphics pipeline must" have been created with :: viewportCount greater or equal to the  viewportCount) parameter in the last call to  1VUID-vkCmdDrawMultiIndexedEXT-viewportCount-04138 If the bound graphics pipeline state was created with the   and  & dynamic states enabled then the  viewportCount) parameter in the last call to   must! be greater than or equal to the  viewportCount) parameter in the last call to  1VUID-vkCmdDrawMultiIndexedEXT-viewportCount-04139 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  > dynamic state enabled, then the bound graphics pipeline must" have been created with :: viewportCount greater or equal to the  viewportCount) parameter in the last call to  1VUID-vkCmdDrawMultiIndexedEXT-viewportCount-04140 If the bound graphics pipeline state was created with the   and  & dynamic states enabled then the  viewportCount) parameter in the last call to   must! be greater than or equal to the  viewportCount) parameter in the last call to  ?VUID-vkCmdDrawMultiIndexedEXT-VkPipelineVieportCreateInfo-04141 If the bound graphics pipeline state was created with the  4 dynamic state enabled and an instance of  chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with :: viewportCount greater or equal to the  viewportCount) parameter in the last call to  ?VUID-vkCmdDrawMultiIndexedEXT-VkPipelineVieportCreateInfo-04142 If the bound graphics pipeline state was created with the  4 dynamic state enabled and an instance of  chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with ::exclusiveScissorCount greater or equal to the  viewportCount) parameter in the last call to  5VUID-vkCmdDrawMultiIndexedEXT-primitiveTopology-03420 If the bound graphics pipeline state was created with the  & dynamic state enabled then   must have been called in the current command buffer prior to this drawing command, and the primitiveTopology parameter of   must be of the same  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-classtopology class as the pipeline 8::topology state(VUID-vkCmdDrawMultiIndexedEXT-None-04875 If the bound graphics pipeline state was created with the  & dynamic state enabled then   must have been called in the current command buffer prior to this drawing command(VUID-vkCmdDrawMultiIndexedEXT-None-04876 If the bound graphics pipeline state was created with the  & dynamic state enabled then  must have been called in the current command buffer prior to this drawing command(VUID-vkCmdDrawMultiIndexedEXT-None-04877 If the bound graphics pipeline state was created with the  & dynamic state enabled then  must have been called in the current command buffer prior to this drawing command+VUID-vkCmdDrawMultiIndexedEXT-logicOp-04878 If the bound graphics pipeline state was created with the  & dynamic state enabled then   must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid   value(VUID-vkCmdDrawMultiIndexedEXT-None-04879 If the bound graphics pipeline state was created with the  & dynamic state enabled then  must have been called in the current command buffer prior to this drawing commandVUID-vkCmdDrawMultiIndexedEXT-primitiveFragmentShadingRateWithMultipleViewports-04552 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports1primitiveFragmentShadingRateWithMultipleViewports limit is not supported, the bound graphics pipeline was created with the   dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the PrimitiveShadingRateKHR built-in, then   must have been called in the current command buffer prior to this drawing command, and the  viewportCount parameter of   must be 1/VUID-vkCmdDrawMultiIndexedEXT-blendEnable-04727 If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features do not contain  , then the  blendEnable1 member of the corresponding element of the  pAttachments member of pColorBlendState must be /8VUID-vkCmdDrawMultiIndexedEXT-rasterizationSamples-04740 If rasterization is not disabled in the bound graphics pipeline, and neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples# extensions are enabled, then 8::rasterizationSamples must be the same as the current subpass color and/or depth/stencil attachments(VUID-vkCmdDrawMultiIndexedEXT-None-04912 If the bound graphics pipeline was created with both the   and  ( dynamic states enabled, then   must have been called in the current command buffer prior to this draw command,VUID-vkCmdDrawMultiIndexedEXT-pStrides-04913? If the bound graphics pipeline was created with the  . dynamic state enabled, but not the  ' dynamic state enabled, then  must have been called in the current command buffer prior to this draw command, and the pStrides parameter of  must not be NULL(VUID-vkCmdDrawMultiIndexedEXT-None-04914 If the bound graphics pipeline state was created with the  ' dynamic state enabled, then   must have been called in the current command buffer prior to this draw command1VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-02712 If  commandBuffer is a protected command buffer, any resource written to by the 0  object bound to the pipeline bind point used by this command must$ not be an unprotected resource1VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-02713 If  commandBuffer is a protected command buffer, pipeline stages other than the framebuffer-space and compute stages in the 0  object bound to the pipeline bind point used by this command must not write to any resource1VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-04617) If any of the shader stages of the 0  bound to the pipeline bind point used by this command uses the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-RayQueryKHR RayQueryKHR capability, then  commandBuffer must' not be a protected command buffer(VUID-vkCmdDrawMultiIndexedEXT-None-04007 All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point@s interface must have either valid or  buffers bound(VUID-vkCmdDrawMultiIndexedEXT-None-04008 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point@s interface must not be (VUID-vkCmdDrawMultiIndexedEXT-None-02721 For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input???(VUID-vkCmdDrawMultiIndexedEXT-None-04937 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiDraw multiDraw feature must be enabled.VUID-vkCmdDrawMultiIndexedEXT-firstIndex-04938 ( indexSize  ( firstIndex +  indexCount) + offset) must be less than or equal to the size of the bound index buffer, with  indexSize+ being based on the type specified by  indexType, where the index buffer,  indexType, and offset are specified via -VUID-vkCmdDrawMultiIndexedEXT-drawCount-04939  drawCount must be less than ::maxMultiDrawCount-VUID-vkCmdDrawMultiIndexedEXT-drawCount-04940 If  drawCount is greater than zero,  pIndexInfo must be a valid pointer to memory containing one or more valid instances of  structures*VUID-vkCmdDrawMultiIndexedEXT-stride-04941 stride must be a multiple of 4Valid Usage (Implicit)5VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-parameter  commandBuffer must be a valid  handle5VUID-vkCmdDrawMultiIndexedEXT-pVertexOffset-parameter If  pVertexOffset is not NULL,  pVertexOffset must$ be a valid pointer to a valid int32_t value5VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state3VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operations(VUID-vkCmdDrawMultiIndexedEXT-renderpass This command must5 only be called inside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryInside  Graphics See Also, :vulkan commandBuffer; is the command buffer into which the command is recorded.vulkan pVertexInfo is a pointer to an array of & with vertex information to be drawn.vulkan instanceCount$ is the number of instances to draw.vulkan firstInstance2 is the instance ID of the first instance to draw.vulkanstride5 is the byte stride between consecutive elements of  pVertexInfo.:vulkan commandBuffer; is the command buffer into which the command is recorded.vulkan pIndexInfo is a pointer to an array of % with index information to be drawn.vulkan instanceCount$ is the number of instances to draw.vulkan firstInstance2 is the instance ID of the first instance to draw.vulkanstride5 is the byte stride between consecutive elements of  pIndexInfo.vulkan pVertexOffset is NULL or a pointer to the value added to the vertex index before indexing into the vertex buffer. When specified, ::offset is ignored.::::::::::::::::::::::::::::::::::None( #$&'(./0289:<>?OvulkanVkPipelineRasterizationLineStateCreateInfoEXT - Structure specifying parameters of a newly created pipeline line rasterization state DescriptionIf stippledLineEnable is /, the values of lineStippleFactor and lineStipplePattern are ignored. Valid UsageVUID-VkPipelineRasterizationLineStateCreateInfoEXT-lineRasterizationMode-02768 If lineRasterizationMode is :, then the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rectangularLinesrectangularLines feature must be enabledVUID-VkPipelineRasterizationLineStateCreateInfoEXT-lineRasterizationMode-02769 If lineRasterizationMode is :, then the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bresenhamLinesbresenhamLines feature must be enabledVUID-VkPipelineRasterizationLineStateCreateInfoEXT-lineRasterizationMode-02770 If lineRasterizationMode is :, then the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bresenhamLines smoothLines feature must be enabledVUID-VkPipelineRasterizationLineStateCreateInfoEXT-stippledLineEnable-02771 If stippledLineEnable is / and lineRasterizationMode is :, then the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLinesstippledRectangularLines feature must be enabledVUID-VkPipelineRasterizationLineStateCreateInfoEXT-stippledLineEnable-02772 If stippledLineEnable is / and lineRasterizationMode is :, then the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLinesstippledBresenhamLines feature must be enabledVUID-VkPipelineRasterizationLineStateCreateInfoEXT-stippledLineEnable-02773 If stippledLineEnable is / and lineRasterizationMode is :, then the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLinesstippledSmoothLines feature must be enabledVUID-VkPipelineRasterizationLineStateCreateInfoEXT-stippledLineEnable-02774 If stippledLineEnable is / and lineRasterizationMode is :, then the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLinesstippledRectangularLines feature must be enabled and  :: strictLines must be /Valid Usage (Implicit)>VUID-VkPipelineRasterizationLineStateCreateInfoEXT-sType-sType sType must be  VUID-VkPipelineRasterizationLineStateCreateInfoEXT-lineRasterizationMode-parameter lineRasterizationMode must be a valid : valueSee Alsoq, :, vulkanVkPhysicalDeviceLineRasterizationPropertiesEXT - Structure describing line rasterization properties supported by an implementation DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.Valid Usage (Implicit)See AlsovulkanVkPhysicalDeviceLineRasterizationFeaturesEXT - Structure describing the line rasterization features that can be supported by an implementationMembers0This structure describes the following features: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, :vulkan5VkLineRasterizationModeEXT - Line rasterization modesSee Also:vulkanlineRasterizationMode is a :2 value selecting the style of line rasterization.:vulkanstippledLineEnable enables  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-stipplestippled line rasterization.:vulkanlineStippleFactor; is the repeat factor used in stippled line rasterization.:vulkanlineStipplePattern9 is the bit pattern used in stippled line rasterization.:vulkan limits-lineSubPixelPrecisionBits lineSubPixelPrecisionBits is the number of bits of subpixel precision in framebuffer coordinates xf and yf when rasterizing  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines line segments.:vulkanfeatures-rectangularLines rectangularLines1 indicates whether the implementation supports  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-linesrectangular line rasterization.:vulkanfeatures-bresenhamLines bresenhamLines1 indicates whether the implementation supports  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-bresenham"Bresenham-style line rasterization.:vulkanfeatures-smoothLines  smoothLines1 indicates whether the implementation supports  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-smoothsmooth line rasterization.:vulkan!features-stippledRectangularLines stippledRectangularLines1 indicates whether the implementation supports  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-stipplestippled line rasterization with : lines, or with : lines if  :: strictLines is /.:vulkanfeatures-stippledBresenhamLines stippledBresenhamLines1 indicates whether the implementation supports  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-stipplestippled line rasterization with : lines.:vulkanfeatures-stippledSmoothLines stippledSmoothLines1 indicates whether the implementation supports  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-stipplestippled line rasterization with : lines.:vulkan: specifies lines drawn if they were rectangles extruded from the line, with alpha falloff, as defined in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-smooth Smooth Lines.:vulkan: specifies lines drawn by determining which pixel diamonds the line intersects and exits, as defined in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-bresenham$Bresenham Line Segment Rasterization.:vulkan: specifies lines drawn as if they were rectangles extruded from the line:vulkan: is equivalent to : if  :: strictLines is /$, otherwise lines are drawn as non- strictLines5 parallelograms. Both of these modes are defined in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-basic Basic Line Segment Rasterization.:vulkan9vkCmdSetLineStippleEXT - Set the dynamic line width state Valid Usage3VUID-vkCmdSetLineStippleEXT-lineStippleFactor-02776 lineStippleFactor must be in the range [1,256]Valid Usage (Implicit)3VUID-vkCmdSetLineStippleEXT-commandBuffer-parameter  commandBuffer must be a valid  handle3VUID-vkCmdSetLineStippleEXT-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state1VUID-vkCmdSetLineStippleEXT-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth  Graphics See Also:vulkan commandBuffer is the command buffer into which the command will be recorded.vulkanlineStippleFactor; is the repeat factor used in stippled line rasterization.vulkanlineStipplePattern9 is the bit pattern used in stippled line rasterization.::::::::::::::::::::::::: :::::::::::::::::::::::::::::None( #$&'(./0289:<>?vulkanVkPhysicalDeviceExternalMemoryHostPropertiesEXT - Structure describing external memory host pointer limits that can be supported by an implementation DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.Valid Usage (Implicit)See Alsoo, vulkanVkMemoryHostPointerPropertiesEXT - Properties of external memory host pointer DescriptionThe value returned by memoryTypeBits must only include bits that identify memory types which are host visible.Valid Usage (Implicit)See Also, :vulkanVkImportMemoryHostPointerInfoEXT - Import memory from a host pointer DescriptionImporting memory from a host pointer shares ownership of the memory between the host and the Vulkan implementation. The application can continue to access the memory through the host pointer but it is the application@s responsibility to synchronize device and non-device access to the payload as defined in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-device-hostaccess$Host Access to Device Memory Objects. Applications can import the same payload into multiple instances of Vulkan and multiple times into a given Vulkan instance. However, implementations may fail to import the same payload multiple times into a given physical device due to platform constraints.0Importing memory from a particular host pointer may not be possible due to additional platform-specific restrictions beyond the scope of this specification in which case the implementation must8 fail the memory import operation with the error code .Whether device memory objects imported from a host pointer hold a reference to their payload is undefined. As such, the application must ensure that the imported memory range remains valid and accessible for the lifetime of the imported memory object. Valid Usage6VUID-VkImportMemoryHostPointerInfoEXT-handleType-01747 If  handleType is not 0, it must3 be supported for import, as reported in Q6VUID-VkImportMemoryHostPointerInfoEXT-handleType-01748 If  handleType is not 0, it must be  or 8VUID-VkImportMemoryHostPointerInfoEXT-pHostPointer-01749  pHostPointer must5 be a pointer aligned to an integer multiple of ::minImportedHostPointerAlignment6VUID-VkImportMemoryHostPointerInfoEXT-handleType-01750 If  handleType is ,  pHostPointer must be a pointer to allocationSize, number of bytes of host memory, where allocationSize is the member of the 4, structure this structure is chained to6VUID-VkImportMemoryHostPointerInfoEXT-handleType-01751 If  handleType is ,  pHostPointer must be a pointer to allocationSize; number of bytes of host mapped foreign memory, where allocationSize is the member of the 4, structure this structure is chained toValid Usage (Implicit)1VUID-VkImportMemoryHostPointerInfoEXT-sType-sType sType must be  :VUID-VkImportMemoryHostPointerInfoEXT-handleType-parameter  handleType must be a valid  valueSee Also, :vulkan&limits-minImportedHostPointerAlignment minImportedHostPointerAlignment is the minimum required alignment, in bytes, for the base address and size of host pointers that can3 be imported to a Vulkan memory object. The value must be a power of two.:vulkanmemoryTypeBits is a bitmask containing one bit set for every memory type which the specified host pointer can be imported as.:vulkan handleType is a # value specifying the handle type.:vulkan pHostPointer$ is the host pointer to import from.:vulkanvkGetMemoryHostPointerPropertiesEXT - Get properties of external memory host pointer Valid Usage9VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01752  handleType must be  or ;VUID-vkGetMemoryHostPointerPropertiesEXT-pHostPointer-01753  pHostPointer must5 be a pointer aligned to an integer multiple of ::minImportedHostPointerAlignment9VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01754 If  handleType is ,  pHostPointer must be a pointer to host memory9VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01755 If  handleType is ,  pHostPointer must+ be a pointer to host mapped foreign memoryValid Usage (Implicit)9VUID-vkGetMemoryHostPointerPropertiesEXT-device-parameter device must be a valid  handle=VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-parameter  handleType must be a valid  valueVUID-vkGetMemoryHostPointerPropertiesEXT-pMemoryHostPointerProperties-parameter pMemoryHostPointerProperties must be a valid pointer to a  structure Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , :vulkandevice. is the logical device that will be importing  pHostPointer.vulkan handleType is a * value specifying the type of the handle  pHostPointer.vulkan pHostPointer$ is the host pointer to import from.::::::::::::::::::::::::None( #$&'(./0289:<>?F vulkanVkPhysicalDeviceExtendedDynamicState2FeaturesEXT - Structure describing what extended dynamic state can be usedMembers0This structure describes the following features: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, ;vulkanfeatures-extendedDynamicState2 extendedDynamicState2 indicates that the implementation supports the following dynamic states:   ;vulkan%features-extendedDynamicState2LogicOp extendedDynamicState2LogicOp indicates that the implementation supports the following dynamic state: ;vulkan0features-extendedDynamicState2PatchControlPoints 'extendedDynamicState2PatchControlPoints indicates that the implementation supports the following dynamic state: ;vulkanvkCmdSetPatchControlPointsEXT - Specify the number of control points per patch DescriptionThis command sets the state for a given draw when the graphics pipeline is created with   set in 8::pDynamicStates. Valid Usage-VUID-vkCmdSetPatchControlPointsEXT-None-04873 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicState2PatchControlPoints'extendedDynamicState2PatchControlPoints feature must be enabled;VUID-vkCmdSetPatchControlPointsEXT-patchControlPoints-04874 patchControlPoints must: be greater than zero and less than or equal to  ::maxTessellationPatchSizeValid Usage (Implicit):VUID-vkCmdSetPatchControlPointsEXT-commandBuffer-parameter  commandBuffer must be a valid  handle:VUID-vkCmdSetPatchControlPointsEXT-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state8VUID-vkCmdSetPatchControlPointsEXT-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth  Graphics See Also;vulkanvkCmdSetRasterizerDiscardEnableEXT - Control whether primitives are discarded before the rasterization stage for a command buffer DescriptionThis command sets the state for a given draw when the graphics pipeline is created with   set in 8::pDynamicStates. Valid Usage2VUID-vkCmdSetRasterizerDiscardEnableEXT-None-04871 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicState2extendedDynamicState2 feature must be enabledValid Usage (Implicit)?VUID-vkCmdSetRasterizerDiscardEnableEXT-commandBuffer-parameter  commandBuffer must be a valid  handle?VUID-vkCmdSetRasterizerDiscardEnableEXT-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state=VUID-vkCmdSetRasterizerDiscardEnableEXT-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth  Graphics See Alsoq, ;vulkanvkCmdSetDepthBiasEnableEXT - Controls whether to bias fragment depth values for a command buffer DescriptionThis command sets the state for a given draw when the graphics pipeline is created with   set in 8::pDynamicStates. Valid Usage*VUID-vkCmdSetDepthBiasEnableEXT-None-04872 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicState2extendedDynamicState2 feature must be enabledValid Usage (Implicit)7VUID-vkCmdSetDepthBiasEnableEXT-commandBuffer-parameter  commandBuffer must be a valid  handle7VUID-vkCmdSetDepthBiasEnableEXT-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state5VUID-vkCmdSetDepthBiasEnableEXT-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth  Graphics See Alsoq, ;vulkanvkCmdSetLogicOpEXT - Select which logical operation to apply for blend state DescriptionThis command sets the state for a given draw when the graphics pipeline is created with   set in 8::pDynamicStates. Valid Usage"VUID-vkCmdSetLogicOpEXT-None-04867 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicState2LogicOpextendedDynamicState2LogicOp feature must be enabledValid Usage (Implicit)/VUID-vkCmdSetLogicOpEXT-commandBuffer-parameter  commandBuffer must be a valid  handle)VUID-vkCmdSetLogicOpEXT-logicOp-parameter logicOp must be a valid U value/VUID-vkCmdSetLogicOpEXT-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state-VUID-vkCmdSetLogicOpEXT-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth  Graphics See Also, U;vulkanvkCmdSetPrimitiveRestartEnableEXT - Control whether a special vertex index value is treated as restarting the assembly of primitives DescriptionThis command sets the state for a given draw when the graphics pipeline is created with   set in 8::pDynamicStates. Valid Usage1VUID-vkCmdSetPrimitiveRestartEnableEXT-None-04866 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicState2extendedDynamicState2 feature must be enabledValid Usage (Implicit)>VUID-vkCmdSetPrimitiveRestartEnableEXT-commandBuffer-parameter  commandBuffer must be a valid  handle>VUID-vkCmdSetPrimitiveRestartEnableEXT-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state?]1 vulkanVkPipelineDiscardRectangleStateCreateInfoEXT - Structure specifying discard rectangle DescriptionIf the / dynamic state is enabled for a pipeline, the pDiscardRectangles member is ignored.'When this structure is included in the pNext chain of 8, it defines parameters of the discard rectangle test. If this structure is not included in the pNext> chain, it is equivalent to specifying this structure with a discardRectangleCount of 0.Valid Usage (Implicit)See Also;, ;, r, vulkanVkPhysicalDeviceDiscardRectanglePropertiesEXT - Structure describing discard rectangle limits that can be supported by an implementation DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.Valid Usage (Implicit)See Also;vulkan>VkDiscardRectangleModeEXT - Specify the discard rectangle modeSee Also;vulkanVkPipelineDiscardRectangleStateCreateFlagsEXT - Reserved for future use Description; is a bitmask type for setting a mask, but is currently reserved for future use.See Also;vulkanflags is reserved for future use.VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-flags-zerobitmask flags must be 0;vulkandiscardRectangleMode is a ; value determining whether the discard rectangle test is inclusive or exclusive.VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-discardRectangleMode-parameter discardRectangleMode must be a valid ; value;vulkanpDiscardRectangles is a pointer to an array of r) structures defining discard rectangles.;vulkanlimits-maxDiscardRectangles maxDiscardRectangles: is the maximum number of active discard rectangles that can be specified.;vulkan;9 specifies that the discard rectangle test is exclusive.;vulkan;9 specifies that the discard rectangle test is inclusive.;vulkanvkCmdSetDiscardRectangleEXT - Set discard rectangles dynamically Description.The discard rectangle taken from element i of pDiscardRectangles replace the current state for the discard rectangle at index firstDiscardRectangle + i, for i in [0, discardRectangleCount).This command sets the state for a given draw when the graphics pipeline is created with  set in 8::pDynamicStates. Valid Usage?vulkanVkPhysicalDeviceConditionalRenderingFeaturesEXT - Structure describing if a secondary command buffer can be executed if conditional rendering is active in the primary command bufferMembers0This structure describes the following features: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkanVkConditionalRenderingBeginInfoEXT - Structure specifying conditional rendering begin information DescriptionIf the 32-bit value at offset in buffer memory is zero, then the rendering commands are discarded, otherwise they are executed as normal. If the value of the predicate in buffer memory changes while conditional rendering is active, the rendering commands may be discarded in an implementation-dependent way. Some implementations may latch the value of the predicate upon beginning conditional rendering while others may read it before every rendering command. Valid Usage4VUID-VkConditionalRenderingBeginInfoEXT-buffer-01981 If buffer is non-sparse then it must7 be bound completely and contiguously to a single 0  object4VUID-VkConditionalRenderingBeginInfoEXT-buffer-01982 buffer must! have been created with the  bit set4VUID-VkConditionalRenderingBeginInfoEXT-offset-01983 offset must be less than the size of buffer by at least 32 bits4VUID-VkConditionalRenderingBeginInfoEXT-offset-01984 offset must be a multiple of 4Valid Usage (Implicit)3VUID-VkConditionalRenderingBeginInfoEXT-sType-sType sType must be  3VUID-VkConditionalRenderingBeginInfoEXT-pNext-pNext pNext must be NULL8VUID-VkConditionalRenderingBeginInfoEXT-buffer-parameter buffer must be a valid  handle7VUID-VkConditionalRenderingBeginInfoEXT-flags-parameter flags must be a valid combination of ; valuesSee Also, ;, o, , ;vulkanVkCommandBufferInheritanceConditionalRenderingInfoEXT - Structure specifying command buffer inheritance information Description9If this structure is not present, the behavior is as if conditionalRenderingEnable is /. Valid UsageVUID-VkCommandBufferInheritanceConditionalRenderingInfoEXT-conditionalRenderingEnable-01977 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-inheritedConditionalRenderinginherited conditional rendering feature is not enabled, conditionalRenderingEnable must be /Valid Usage (Implicit)VUID-VkCommandBufferInheritanceConditionalRenderingInfoEXT-sType-sType sType must be  See Alsoq, ;vulkanVkConditionalRenderingFlagBitsEXT - Specify the behavior of conditional renderingSee Also;;vulkanfeatures-conditionalRendering conditionalRendering7 specifies whether conditional rendering is supported.;vulkan&features-inheritedConditionalRendering inheritedConditionalRendering/ specifies whether a secondary command buffer can be executed while conditional rendering is active in the primary command buffer.;vulkanconditionalRenderingEnable& specifies whether the command buffer can be executed while conditional rendering is active in the primary command buffer. If this is /, then this command buffer can be executed whether the primary command buffer has active conditional rendering or not. If this is /#, then the primary command buffer must' not have conditional rendering active.;vulkanbuffer is a buffer containing the predicate for conditional rendering.;vulkanoffset is the byte offset into buffer! where the predicate is located.;vulkanflags is a bitmask of ;3 specifying the behavior of conditional rendering.;vulkan; specifies the condition used to determine whether to discard rendering commands or not. That is, if the 32-bit predicate read from buffer memory at offset is zero, the rendering commands are not discarded, and if non zero, then they are discarded.;vulkanvkCmdBeginConditionalRenderingEXT - Define the beginning of a conditional rendering block Valid Usage1VUID-vkCmdBeginConditionalRenderingEXT-None-01980 Conditional rendering must not already be https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#active-conditional-renderingactiveValid Usage (Implicit)>VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-parameter  commandBuffer must be a valid  handleVUID-vkCmdBeginConditionalRenderingEXT-pConditionalRenderingBegin-parameter pConditionalRenderingBegin must$ be a valid pointer to a valid  structure>VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThis function will call the supplied action between calls to ; and ; Note that ; is *not* called if an exception is thrown by the inner action.;vulkanvkCmdEndConditionalRenderingEXT - Define the end of a conditional rendering block Description3Once ended, conditional rendering becomes inactive. Valid Usage/VUID-vkCmdEndConditionalRenderingEXT-None-01985 Conditional rendering must be https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#active-conditional-renderingactive/VUID-vkCmdEndConditionalRenderingEXT-None-01986- If conditional rendering was made  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#active-conditional-renderingactive, outside of a render pass instance, it must0 not be ended inside a render pass instance/VUID-vkCmdEndConditionalRenderingEXT-None-01987- If conditional rendering was made  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#active-conditional-renderingactive within a subpass it must be ended in the same subpassValid Usage (Implicit)?vulkanVkPipelineColorWriteCreateInfoEXT - Structure specifying color write state of a newly created pipeline Description'When this structure is included in the pNext chain of 8, it defines per-attachment color write state. If this structure is not included in the pNext< chain, it is equivalent to specifying this structure with attachmentCount equal to the attachmentCount member of 8, and pColorWriteEnables" pointing to an array of as many  values.If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnablecolorWriteEnable- feature is not enabled on the device, all q elements in the pColorWriteEnables array must be .'Color Write Enable interacts with the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-color-write-maskColor Write Mask as follows:If colorWriteEnable is 6, writes to the attachment are determined by the colorWriteMask.If colorWriteEnable is  , the colorWriteMask is ignored and writes to all components of the attachment are disabled. This is equivalent to specifying a colorWriteMask of 0. Valid Usage9VUID-VkPipelineColorWriteCreateInfoEXT-pAttachments-04801 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnablecolorWriteEnable. feature is not enabled, all elements of pColorWriteEnables must be ? vulkan(VkTimeDomainEXT - Supported time domains DescriptionNoteAn implementation supporting VK_EXT_calibrated_timestamps, will use the same time domain for all its 0 ( so that timestamp values reported for <4 can be matched to any timestamp captured through   or   . struct timespec tv; clock_gettime(CLOCK_MONOTONIC, &tv); return tv.tv_nsec + tv.tv_sec*1000000000ull; struct timespec tv; clock_gettime(CLOCK_MONOTONIC_RAW, &tv); return tv.tv_nsec + tv.tv_sec*1000000000ull; LARGE_INTEGER counter; QueryPerformanceCounter(&counter); return counter.QuadPart;See Also, <vulkanVkCalibratedTimestampInfoEXT - Structure specifying the input parameters of a calibrated timestamp queryValid Usage (Implicit)See Also, , <<vulkan timeDomain is a  value specifying the time domain from which the calibrated timestamp value should be returned.2VUID-VkCalibratedTimestampInfoEXT-timeDomain-02354  timeDomain must be one of the  values returned by <6VUID-VkCalibratedTimestampInfoEXT-timeDomain-parameter  timeDomain must be a valid  value<vulkan< specifies the performance counter (QPC) time domain available on Windows. Timestamp values in this time domain are in the same units as those provided by the Windows QueryPerformanceCounter API and are comparable with platform timestamp values captured using that API as computed by this example:<vulkan< specifies the CLOCK_MONOTONIC_RAW time domain available on POSIX platforms. Timestamp values in this time domain are in units of nanoseconds and are comparable with platform timestamp values captured using the POSIX clock_gettime API as computed by this example:<vulkan< specifies the CLOCK_MONOTONIC time domain available on POSIX platforms. Timestamp values in this time domain are in units of nanoseconds and are comparable with platform timestamp values captured using the POSIX clock_gettime API as computed by this example:<vulkan< specifies the device time domain. Timestamp values in this time domain use the same units and are comparable with device timestamp values captured using   or  7 and are defined to be incrementing according to the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-timestampPeriodtimestampPeriod of the device.<vulkanvkGetPhysicalDeviceCalibrateableTimeDomainsEXT - Query calibrateable time domains DescriptionIf  pTimeDomains is NULL, then the number of calibrateable time domains supported for the given physicalDevice is returned in pTimeDomainCount . Otherwise, pTimeDomainCount must point to a variable set by the user to the number of elements in the  pTimeDomains array, and on return the variable is overwritten with the number of values actually written to  pTimeDomains. If the value of pTimeDomainCount is less than the number of calibrateable time domains supported, at most pTimeDomainCount values will be written to  pTimeDomains, and  will be returned instead of , to indicate that not all the available time domains were returned.Valid Usage (Implicit)VUID-vkGetPhysicalDeviceCalibrateableTimeDomainsEXT-physicalDevice-parameter physicalDevice must be a valid  handleVUID-vkGetPhysicalDeviceCalibrateableTimeDomainsEXT-pTimeDomainCount-parameter pTimeDomainCount must be a valid pointer to a uint32_t valueVUID-vkGetPhysicalDeviceCalibrateableTimeDomainsEXT-pTimeDomains-parameter! If the value referenced by pTimeDomainCount is not 0 , and  pTimeDomains is not NULL,  pTimeDomains must( be a valid pointer to an array of pTimeDomainCount  values Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, <vulkan:vkGetCalibratedTimestampsEXT - Query calibrated timestamps DescriptionNoteThe maximum deviation may vary between calls to < even for the same set of time domains due to implementation and platform specific reasons. It is the application@s responsibility to assess whether the returned maximum deviation makes the timestamp values suitable for any particular purpose and can choose to re-issue the timestamp calibration call pursuing a lower devation value.Calibrated timestamp values can be extrapolated to estimate future coinciding timestamp values, however, depending on the nature of the time domains and other properties of the platform extrapolating values over a sufficiently long period of time may no longer be accurate enough to fit any particular purpose, so applications are expected to re-calibrate the timestamps on a regular basis. Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, <vulkanphysicalDevice is the physical device from which to query the set of calibrateable time domains.<vulkandevice1 is the logical device used to perform the query.2VUID-vkGetCalibratedTimestampsEXT-device-parameter device must be a valid  handlevulkanpTimestampInfos is a pointer to an array of timestampCount  structures, describing the time domains the calibrated timestamps should be captured from.;VUID-vkGetCalibratedTimestampsEXT-pTimestampInfos-parameter pTimestampInfos must$ be a valid pointer to an array of timestampCount valid  structures<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<None( #$&'(./0289:<>?vulkanVkShaderInfoTypeAMD - Enum specifying which type of shader information to querySee Also<vulkanVkShaderStatisticsInfoAMD - Statistical information about a particular shader within a pipeline DescriptionSome implementations may merge multiple logical shader stages together in a single shader. In such cases, shaderStageMask will contain a bitmask of all of the stages that are active within that shader. Consequently, if specifying those stages as input to <, the same output information may0 be returned for all such shader stage queries.)The number of available VGPRs and SGPRs (numAvailableVgprs and numAvailableSgprs respectively) are the shader-addressable subset of physical registers that is given as a limit to the compiler for register assignment. These values may further be limited by implementations due to performance optimizations where register pressure is a bottleneck.See Also, evulkanVkShaderResourceUsageAMD - Resource usage information about a particular shader within a pipelineSee Also<vulkanshaderStageMask are the combination of logical shader stages contained within this shader.<vulkan resourceUsage is a  structure describing internal physical device resources used by this shader.<vulkannumPhysicalVgprs is the maximum number of vector instruction general-purpose registers (VGPRs) available to the physical device.<vulkannumPhysicalSgprs is the maximum number of scalar instruction general-purpose registers (SGPRs) available to the physical device.<vulkannumAvailableVgprs is the maximum limit of VGPRs made available to the shader compiler.<vulkannumAvailableSgprs is the maximum limit of SGPRs made available to the shader compiler.<vulkancomputeWorkGroupSize is the local workgroup size of this shader in { X, Y, Z } dimensions.<vulkan numUsedVgprs is the number of vector instruction general-purpose registers used by this shader.<vulkan numUsedSgprs is the number of scalar instruction general-purpose registers used by this shader.<vulkanldsSizePerLocalWorkGroup? is the maximum local data store size per work group in bytes.<vulkanldsUsageSizeInBytes? is the LDS usage size in bytes per work group by this shader.<vulkanscratchMemUsageInBytes6 is the scratch memory usage in bytes by this shader.<vulkan<9 specifies that human-readable dissassembly of a shader.<vulkan< specifies that implementation-specific information will be queried.<vulkan< specifies that device resources used by a shader will be queried.<vulkanvkGetShaderInfoAMD - Get information about a shader in a pipeline DescriptionIf pInfo is NULL1, then the maximum size of the information that can: be retrieved about the shader, in bytes, is returned in  pInfoSize . Otherwise,  pInfoSize must point to a variable set by the user to the size of the buffer, in bytes, pointed to by pInfo, and on return the variable is overwritten with the amount of data actually written to pInfo. If  pInfoSize% is less than the maximum size that can2 be retrieved by the pipeline cache, then at most  pInfoSize bytes will be written to pInfo, and  will be returned, instead of , to indicate that not all required of the pipeline cache was returned.Not all information is available for every shader and implementations may not support all kinds of information for any shader. When a certain type of information is unavailable, the function returns .If information is successfully and fully queried, the function will return .For infoType <, a 8 structure will be written to the buffer pointed to by pInfo. This structure will be populated with statistics regarding the physical device resources used by that shader along with other miscellaneous information and is described in further detail below.For infoType <, pInfo is a pointer to a UTF-8 null-terminated string containing human-readable disassembly. The exact formatting and contents of the disassembly string are vendor-specific.The formatting and contents of all other types of information, including infoType <, are left to the vendor and are not further specified by this extension.Valid Usage (Implicit)(VUID-vkGetShaderInfoAMD-device-parameter device must be a valid  handle*VUID-vkGetShaderInfoAMD-pipeline-parameter pipeline must be a valid  handle-VUID-vkGetShaderInfoAMD-shaderStage-parameter  shaderStage must be a valid d value*VUID-vkGetShaderInfoAMD-infoType-parameter infoType must be a valid  value+VUID-vkGetShaderInfoAMD-pInfoSize-parameter  pInfoSize must be a valid pointer to a size_t value'VUID-vkGetShaderInfoAMD-pInfo-parameter! If the value referenced by  pInfoSize is not 0, and pInfo is not NULL, pInfo must( be a valid pointer to an array of  pInfoSize bytes'VUID-vkGetShaderInfoAMD-pipeline-parent pipeline must6 have been created, allocated, or retrieved from device Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , d<vulkandevice is the device that created pipeline.vulkanpipeline is the target of the query.vulkan shaderStage is a d specifying the particular shader within the pipeline about which information is being queried.vulkaninfoType5 describes what kind of information is being queried.<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<None( #$&'(./0289:<>?<vulkanvkCmdWriteBufferMarkerAMD - Execute a pipelined write of a marker value into a buffer DescriptionThe command will write the 32-bit marker value into the buffer only after all preceding commands have finished executing up to at least the specified pipeline stage. This includes the completion of other preceding < commands so long as their specified pipeline stages occur either at the same time or earlier than this command@s specified  pipelineStage.5While consecutive buffer marker writes with the same  pipelineStage parameter are implicitly complete in submission order, memory and execution dependencies between buffer marker writes and other operations must still be explicitly ordered using synchronization commands. The access scope for buffer marker writes falls under the , and the pipeline stages for identifying the synchronization scope must include both  pipelineStage and .Note Similar to  , if an implementation is unable to write a marker at any specific pipeline stage, it may, instead do so at any logically later stage.NoteImplementations may only support a limited number of pipelined marker write operations in flight at a given time, thus excessive number of marker write operations may' degrade command execution performance. Valid Usage2VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04074  pipelineStage must be a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported valid stage for the queue family that was used to create the command pool that  commandBuffer was allocated from 2VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04075 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled,  pipelineStage must not be 2VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04076 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled,  pipelineStage must not be  or 2VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04077 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRenderingconditional rendering feature is not enabled,  pipelineStage must not be 2VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04078 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapfragment density map feature is not enabled,  pipelineStage must not be 2VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04079 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedbacktransform feedback feature is not enabled,  pipelineStage must not be 2VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04080 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled,  pipelineStage must not be  or 2VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04081 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshading rate image feature is not enabled,  pipelineStage must not be .VUID-vkCmdWriteBufferMarkerAMD-dstOffset-01798  dstOffset must+ be less than or equal to the size of  dstBuffer minus 4.VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-01799  dstBuffer must" have been created with  usage flag.VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-01800 If  dstBuffer is non-sparse then it must7 be bound completely and contiguously to a single 0  object.VUID-vkCmdWriteBufferMarkerAMD-dstOffset-01801  dstOffset must be a multiple of 4Valid Usage (Implicit)6VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-parameter  commandBuffer must be a valid  handle6VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-parameter  pipelineStage must be a valid Y value2VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-parameter  dstBuffer must be a valid  handle6VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state4VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must7 support transfer, graphics, or compute operations+VUID-vkCmdWriteBufferMarkerAMD-commonparent Both of  commandBuffer, and  dstBuffer must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary Secondary Both Transfer Graphics ComputeSee Also, , o, Y<vulkan commandBuffer is the command buffer into which the command will be recorded.vulkan pipelineStage is a Y value specifying the pipeline stage whose completion triggers the marker write.vulkan dstBuffer3 is the buffer where the marker will be written to.vulkan dstOffset is the byte offset into the buffer where the marker will be written to.vulkanmarker# is the 32-bit value of the marker.<<<<<<<<<<nNone( #$&'(./0289:<>?JvulkanVkTimelineSemaphoreSubmitInfo - Structure specifying signal and wait values for timeline semaphores DescriptionIf the semaphore in <::pWaitSemaphores or <::pSignalSemaphores corresponding to an entry in pWaitSemaphoreValues or pSignalSemaphoreValues' respectively was not created with a  of , the implementation must ignore the value in the pWaitSemaphoreValues or pSignalSemaphoreValues entry.Valid Usage (Implicit).VUID-VkTimelineSemaphoreSubmitInfo-sType-sType sType must be  VUID-VkTimelineSemaphoreSubmitInfo-pWaitSemaphoreValues-parameter If waitSemaphoreValueCount is not 0, and pWaitSemaphoreValues is not NULL, pWaitSemaphoreValues must( be a valid pointer to an array of waitSemaphoreValueCount uint64_t valuesVUID-VkTimelineSemaphoreSubmitInfo-pSignalSemaphoreValues-parameter If signalSemaphoreValueCount is not 0 , and pSignalSemaphoreValues is not NULL, pSignalSemaphoreValues must# be a valid pointer to an array of signalSemaphoreValueCount uint64_t valuesSee AlsovulkanVkSemaphoreWaitInfo - Structure containing information about the semaphore wait condition Valid Usage*VUID-VkSemaphoreWaitInfo-pSemaphores-03256 All of the elements of  pSemaphores must4 reference a semaphore that was created with a  of Valid Usage (Implicit)$VUID-VkSemaphoreWaitInfo-sType-sType sType must be  $VUID-VkSemaphoreWaitInfo-pNext-pNext pNext must be NULL(VUID-VkSemaphoreWaitInfo-flags-parameter flags must% be a valid combination of  values.VUID-VkSemaphoreWaitInfo-pSemaphores-parameter  pSemaphores must# be a valid pointer to an array of semaphoreCount valid x handles*VUID-VkSemaphoreWaitInfo-pValues-parameter pValues must( be a valid pointer to an array of semaphoreCount uint64_t values3VUID-VkSemaphoreWaitInfo-semaphoreCount-arraylength semaphoreCount must be greater than 0See Alsox, , , <,  vulkanVkSemaphoreTypeCreateInfo - Structure specifying the type of a newly created semaphore Description1To create a semaphore of a specific type, add a  structure to the =::pNext chain.If no  structure is included in the pNext chain of =3, then the created semaphore will have a default  of . Valid Usage6VUID-VkSemaphoreTypeCreateInfo-timelineSemaphore-03252 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-timelineSemaphoretimelineSemaphore feature is not enabled,  semaphoreType must not equal 2VUID-VkSemaphoreTypeCreateInfo-semaphoreType-03279 If  semaphoreType is ,  initialValue must be zeroValid Usage (Implicit)*VUID-VkSemaphoreTypeCreateInfo-sType-sType sType must be  6VUID-VkSemaphoreTypeCreateInfo-semaphoreType-parameter  semaphoreType must be a valid  valueSee Also, vulkanVkSemaphoreSignalInfo - Structure containing information about a semaphore signal operationValid Usage (Implicit)See Alsox, , <,  vulkanVkPhysicalDeviceTimelineSemaphoreProperties - Structure describing timeline semaphore properties that can be supported by an implementation DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.Valid Usage (Implicit)See AlsovulkanVkPhysicalDeviceTimelineSemaphoreFeatures - Structure describing timeline semaphore features that can be supported by an implementationMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, <vulkan semaphore* is the handle of the semaphore to signal.*VUID-VkSemaphoreSignalInfo-semaphore-03257  semaphore must have been created with a  of .VUID-VkSemaphoreSignalInfo-semaphore-parameter  semaphore must be a valid x handle<vulkanvalue is the value to signal.&VUID-VkSemaphoreSignalInfo-value-03258 value must> have a value greater than the current value of the semaphore&VUID-VkSemaphoreSignalInfo-value-03259 value must be less than the value of any pending semaphore signal operations&VUID-VkSemaphoreSignalInfo-value-03260 value must have a value which does not differ from the current value of the semaphore or the value of any outstanding semaphore wait or signal operation on  semaphore by more than https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference#maxTimelineSemaphoreValueDifference<vulkanflags is a bitmask of  specifying additional parameters for the semaphore wait operation.<vulkan pSemaphores is a pointer to an array of semaphoreCount semaphore handles to wait on.<vulkanpValues is a pointer to an array of semaphoreCount timeline semaphore values.<vulkanwaitSemaphoreValueCount6 is the number of semaphore wait values specified in pWaitSemaphoreValues.<vulkanpWaitSemaphoreValues is a pointer to an array of waitSemaphoreValueCount- values for the corresponding semaphores in <::pWaitSemaphores to wait for.<vulkansignalSemaphoreValueCount8 is the number of semaphore signal values specified in pSignalSemaphoreValues.<vulkanpSignalSemaphoreValues is a pointer to an array signalSemaphoreValueCount- values for the corresponding semaphores in <::pSignalSemaphores to set when signaled.<vulkan semaphoreType is a - value specifying the type of the semaphore.<vulkan initialValue! is the initial payload value if  semaphoreType is .<vulkan4extension-limits-maxTimelineSemaphoreValueDifference #maxTimelineSemaphoreValueDifference indicates the maximum difference allowed by the implementation between the current value of a timeline semaphore and any pending signal or wait operations.<vulkan$extension-features-timelineSemaphore timelineSemaphore/ indicates whether semaphores created with a  of  are supported.<vulkanvkGetSemaphoreCounterValue - Query the current state of a timeline semaphore DescriptionNoteIf a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-submissionqueue submission command is pending execution, then the value returned by this command may immediately be out of date. Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, x<vulkan;vkWaitSemaphores - Wait for timeline semaphores on the host Description#If the condition is satisfied when < is called, then < returns immediately. If the condition is not satisfied at the time < is called, then <> will block and wait until the condition is satisfied or the timeout# has expired, whichever is sooner.If timeout is zero, then < does not wait, but simply returns information about the current state of the semaphores.  will be returned in this case if the condition is not satisfied, even though no actual wait was performed.)If the condition is satisfied before the timeout has expired, < returns . Otherwise, < returns  after the timeout has expired.If device loss occurs (see  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-lost-device Lost Device#) before the timeout has expired, < must$ return in finite time with either  or . Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, <vulkan A variant of < which makes a *safe* FFI call<vulkan;vkSignalSemaphore - Signal a timeline semaphore on the host DescriptionWhen < is executed on the host, it defines and immediately executes a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signalingsemaphore signal operation7 which sets the timeline semaphore to the given value.The first synchronization scope is defined by the host execution model, but includes execution of <3 on the host and anything that happened-before it.*The second synchronization scope is empty. Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, <vulkandevice/ is the logical device that owns the semaphore.0VUID-vkGetSemaphoreCounterValue-device-parameter device must be a valid  handlevulkan semaphore) is the handle of the semaphore to query./VUID-vkGetSemaphoreCounterValue-semaphore-03255  semaphore must have been created with a  of 3VUID-vkGetSemaphoreCounterValue-semaphore-parameter  semaphore must be a valid x handle0VUID-vkGetSemaphoreCounterValue-semaphore-parent  semaphore must2 have been created, allocated, or retrieved from device<vulkandevice0 is the logical device that owns the semaphores.&VUID-vkWaitSemaphores-device-parameter device must be a valid  handlevulkan pWaitInfo is a pointer to a < structure containing information about the wait condition.)VUID-vkWaitSemaphores-pWaitInfo-parameter  pWaitInfo must be a valid pointer to a valid  structurevulkantimeout0 is the timeout period in units of nanoseconds. timeout is adjusted to the closest value allowed by the implementation-dependent timeout accuracy, which may3 be substantially longer than one nanosecond, and may% be longer than the requested period.<vulkandevice0 is the logical device that owns the semaphores.&VUID-vkWaitSemaphores-device-parameter device must be a valid  handlevulkan pWaitInfo is a pointer to a < structure containing information about the wait condition.)VUID-vkWaitSemaphores-pWaitInfo-parameter  pWaitInfo must be a valid pointer to a valid  structurevulkantimeout0 is the timeout period in units of nanoseconds. timeout is adjusted to the closest value allowed by the implementation-dependent timeout accuracy, which may3 be substantially longer than one nanosecond, and may% be longer than the requested period.<vulkandevice/ is the logical device that owns the semaphore.'VUID-vkSignalSemaphore-device-parameter device must be a valid  handlevulkan pSignalInfo is a pointer to a > structure containing information about the signal operation.,VUID-vkSignalSemaphore-pSignalInfo-parameter  pSignalInfo must be a valid pointer to a valid  structure<<<<<<<<<<<<<<<<<<< <<<<<<<<<<<<<<<<<<<<<<<<<<<  None( #$&'(./0289:<>?&==================================================hNone( #$&'(./0289:<>?:' vulkanVkRenderPassAttachmentBeginInfo - Structure specifying images to be used as framebuffer attachments Valid Usage7VUID-VkRenderPassAttachmentBeginInfo-pAttachments-03218 Each element of  pAttachments must only specify a single mip level7VUID-VkRenderPassAttachmentBeginInfo-pAttachments-03219 Each element of  pAttachments must1 have been created with the identity swizzle7VUID-VkRenderPassAttachmentBeginInfo-pAttachments-04114 Each element of  pAttachments must have been created with 2::viewType not equal to  Valid Usage (Implicit)0VUID-VkRenderPassAttachmentBeginInfo-sType-sType sType must be  ;VUID-VkRenderPassAttachmentBeginInfo-pAttachments-parameter If attachmentCount is not 0,  pAttachments must( be a valid pointer to an array of attachmentCount valid  handlesSee Also, vulkanVkPhysicalDeviceImagelessFramebufferFeatures - Structure indicating support for imageless framebuffersMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkanVkFramebufferAttachmentsCreateInfo - Structure specifying parameters of images that will be used with a framebufferValid Usage (Implicit)3VUID-VkFramebufferAttachmentsCreateInfo-sType-sType sType must be  VUID-VkFramebufferAttachmentsCreateInfo-pAttachmentImageInfos-parameter If attachmentImageInfoCount is not 0, pAttachmentImageInfos must# be a valid pointer to an array of attachmentImageInfoCount valid  structuresSee Also, vulkanVkFramebufferAttachmentImageInfo - Structure specifying parameters of an image that will be used with a framebuffer Description Images that can be used with the framebuffer when beginning a render pass, as specified by , must be created with parameters that are identical to those specified here.Valid Usage (Implicit)1VUID-VkFramebufferAttachmentImageInfo-sType-sType sType must be  1VUID-VkFramebufferAttachmentImageInfo-pNext-pNext pNext must be NULL5VUID-VkFramebufferAttachmentImageInfo-flags-parameter flags must be a valid combination of  values5VUID-VkFramebufferAttachmentImageInfo-usage-parameter usage must be a valid combination of   values;VUID-VkFramebufferAttachmentImageInfo-usage-requiredbitmask usage must not be 0?G ============= =============None( #$&'(./0289:<>?=vulkanvkCmdDrawIndirectCount - Draw primitives with indirect parameters and draw count Description= behaves similarly to  except that the draw count is read by the device from a buffer during execution. The command will read an unsigned 32-bit integer from  countBuffer located at countBufferOffset and use this as the draw count. Valid Usage+VUID-vkCmdDrawIndirectCount-magFilter-04553 If a 0  created with  magFilter or  minFilter equal to   and  compareEnable equal to / is used to sample a 0> as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain ,VUID-vkCmdDrawIndirectCount-mipmapMode-04770 If a 0  created with  mipmapMode equal to   and  compareEnable equal to / is used to sample a 0> as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain &VUID-vkCmdDrawIndirectCount-None-02691 If a 0 is accessed using atomic operations as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain  &VUID-vkCmdDrawIndirectCount-None-02692 If a 0 is sampled with  > as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain  -VUID-vkCmdDrawIndirectCount-filterCubic-02694 Any 0 being sampled with  " as a result of this command must have a   and format that supports cubic filtering, as specified by :: filterCubic returned by U 3VUID-vkCmdDrawIndirectCount-filterCubicMinmax-02695 Any 0 being sampled with  + with a reduction mode of either   or  " as a result of this command must have a   and format that supports cubic filtering together with minmax filtering, as specified by ::filterCubicMinmax returned by U 'VUID-vkCmdDrawIndirectCount-flags-02696 Any 0 created with a 1::flags containing * sampled as a result of this command must only be sampled using a   of  &VUID-vkCmdDrawIndirectCount-None-02697 For each set n% that is statically used by the 0  bound to the pipeline bind point used by this command, a descriptor set must have been bound to n. at the same pipeline bind point, with a 0 ! that is compatible for set n , with the 0 ! used to create the current 0 , as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???&VUID-vkCmdDrawIndirectCount-None-02698< For each push constant that is statically used by the 0  bound to the pipeline bind point used by this command, a push constant value must= have been set for the same pipeline bind point, with a 0 6 that is compatible for push constants, with the 0 ! used to create the current 0 , as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???&VUID-vkCmdDrawIndirectCount-None-02699 Descriptors in each bound descriptor set, specified via  , must7 be valid if they are statically used by the 0 ; bound to the pipeline bind point used by this command&VUID-vkCmdDrawIndirectCount-None-02700 A valid pipeline must> be bound to the pipeline bind point used by this command/VUID-vkCmdDrawIndirectCount-commandBuffer-02701 If the 0  object bound to the pipeline bind point used by this command requires any dynamic state, that state must) have been set or inherited (if the  VK_NV_inherited_viewport_scissor extension is enabled) for  commandBuffer, and done so after any previously bound pipeline with the corresponding state not specified as dynamic&VUID-vkCmdDrawIndirectCount-None-02859 There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the 0  object bound to the pipeline bind point used by this command, since that pipeline was bound&VUID-vkCmdDrawIndirectCount-None-02702 If the 0  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must% not be used to sample from any 0 with a 0 of the type  ,  ,  ,   or  , in any shader stage&VUID-vkCmdDrawIndirectCount-None-02703 If the 0  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj# in their name, in any shader stage&VUID-vkCmdDrawIndirectCount-None-02704 If the 0  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions that includes a LOD bias or any offset values, in any shader stage&VUID-vkCmdDrawIndirectCount-None-02705 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the 0  object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point&VUID-vkCmdDrawIndirectCount-None-02706 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the 0  object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point/VUID-vkCmdDrawIndirectCount-commandBuffer-02707 If  commandBuffer is an unprotected command buffer, any resource accessed by the 0  object bound to the pipeline bind point used by this command must not be a protected resource&VUID-vkCmdDrawIndirectCount-None-04115 If a 0 is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction must have at least as many components as the image view@s format.VUID-vkCmdDrawIndirectCount-OpImageWrite-04469 If a 0  is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction must have at least as many components as the buffer view@s format-VUID-vkCmdDrawIndirectCount-SampledType-04470 If a 0 with a  that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64-VUID-vkCmdDrawIndirectCount-SampledType-04471 If a 0 with a  that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32-VUID-vkCmdDrawIndirectCount-SampledType-04472 If a 0  with a  that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64-VUID-vkCmdDrawIndirectCount-SampledType-04473 If a 0  with a  that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 329VUID-vkCmdDrawIndirectCount-sparseImageInt64Atomics-04474 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, 0$ objects created with the   flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command9VUID-vkCmdDrawIndirectCount-sparseImageInt64Atomics-04475 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, $ objects created with the   flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command,VUID-vkCmdDrawIndirectCount-renderPass-02684 The current render pass must be  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible with the  renderPass member of the 8, structure specified when creating the 0  bound to  )VUID-vkCmdDrawIndirectCount-subpass-026853 The subpass index of the current render pass must be equal to the subpass member of the 8, structure specified when creating the 0  bound to  &VUID-vkCmdDrawIndirectCount-None-026869 Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor set&VUID-vkCmdDrawIndirectCount-None-04584 Image subresources used as attachments in the current render pass must not be accessed in any way other than as an attachment by this command, except for cases involving read-only access to depth/stencil attachments as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass chapter;VUID-vkCmdDrawIndirectCount-maxMultiviewInstanceIndex-02688 If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to X::maxMultiviewInstanceIndex7VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-02689; If the bound graphics pipeline was created with ::sampleLocationsEnable set to / and the current subpass has a depth/stencil attachment, then that attachment must& have been created with the   bit set/VUID-vkCmdDrawIndirectCount-viewportCount-03417 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  ' dynamic state enabled, then   must have been called in the current command buffer prior to this drawing command, and the  viewportCount parameter of   must match the 8:: scissorCount of the pipeline.VUID-vkCmdDrawIndirectCount-scissorCount-03418 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  ' dynamic state enabled, then  must have been called in the current command buffer prior to this drawing command, and the  scissorCount parameter of  must match the 8:: viewportCount of the pipeline/VUID-vkCmdDrawIndirectCount-viewportCount-03419 If the bound graphics pipeline state was created with both the   and  , dynamic states enabled then both   and  must have been called in the current command buffer prior to this drawing command, and the  viewportCount parameter of   must match the  scissorCount parameter of /VUID-vkCmdDrawIndirectCount-viewportCount-04137 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  > dynamic state enabled, then the bound graphics pipeline must" have been created with :: viewportCount greater or equal to the  viewportCount) parameter in the last call to  /VUID-vkCmdDrawIndirectCount-viewportCount-04138 If the bound graphics pipeline state was created with the   and  & dynamic states enabled then the  viewportCount) parameter in the last call to   must! be greater than or equal to the  viewportCount) parameter in the last call to  /VUID-vkCmdDrawIndirectCount-viewportCount-04139 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  > dynamic state enabled, then the bound graphics pipeline must" have been created with :: viewportCount greater or equal to the  viewportCount) parameter in the last call to  /VUID-vkCmdDrawIndirectCount-viewportCount-04140 If the bound graphics pipeline state was created with the   and  & dynamic states enabled then the  viewportCount) parameter in the last call to   must! be greater than or equal to the  viewportCount) parameter in the last call to  =VUID-vkCmdDrawIndirectCount-VkPipelineVieportCreateInfo-04141 If the bound graphics pipeline state was created with the  4 dynamic state enabled and an instance of  chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with :: viewportCount greater or equal to the  viewportCount) parameter in the last call to  =VUID-vkCmdDrawIndirectCount-VkPipelineVieportCreateInfo-04142 If the bound graphics pipeline state was created with the  4 dynamic state enabled and an instance of  chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with ::exclusiveScissorCount greater or equal to the  viewportCount) parameter in the last call to  3VUID-vkCmdDrawIndirectCount-primitiveTopology-03420 If the bound graphics pipeline state was created with the  & dynamic state enabled then   must have been called in the current command buffer prior to this drawing command, and the primitiveTopology parameter of   must be of the same  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-classtopology class as the pipeline 8::topology state&VUID-vkCmdDrawIndirectCount-None-04875 If the bound graphics pipeline state was created with the  & dynamic state enabled then   must have been called in the current command buffer prior to this drawing command&VUID-vkCmdDrawIndirectCount-None-04876 If the bound graphics pipeline state was created with the  & dynamic state enabled then  must have been called in the current command buffer prior to this drawing command&VUID-vkCmdDrawIndirectCount-None-04877 If the bound graphics pipeline state was created with the  & dynamic state enabled then  must have been called in the current command buffer prior to this drawing command)VUID-vkCmdDrawIndirectCount-logicOp-04878 If the bound graphics pipeline state was created with the  & dynamic state enabled then   must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid   value&VUID-vkCmdDrawIndirectCount-None-04879 If the bound graphics pipeline state was created with the  & dynamic state enabled then  must have been called in the current command buffer prior to this drawing commandVUID-vkCmdDrawIndirectCount-primitiveFragmentShadingRateWithMultipleViewports-04552 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports1primitiveFragmentShadingRateWithMultipleViewports limit is not supported, the bound graphics pipeline was created with the   dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the PrimitiveShadingRateKHR built-in, then   must have been called in the current command buffer prior to this drawing command, and the  viewportCount parameter of   must be 1-VUID-vkCmdDrawIndirectCount-blendEnable-04727 If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features do not contain  , then the  blendEnable1 member of the corresponding element of the  pAttachments member of pColorBlendState must be /6VUID-vkCmdDrawIndirectCount-rasterizationSamples-04740 If rasterization is not disabled in the bound graphics pipeline, and neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples# extensions are enabled, then 8::rasterizationSamples must be the same as the current subpass color and/or depth/stencil attachments&VUID-vkCmdDrawIndirectCount-None-04912 If the bound graphics pipeline was created with both the   and  ( dynamic states enabled, then   must have been called in the current command buffer prior to this draw command*VUID-vkCmdDrawIndirectCount-pStrides-04913? If the bound graphics pipeline was created with the  . dynamic state enabled, but not the  ' dynamic state enabled, then  must have been called in the current command buffer prior to this draw command, and the pStrides parameter of  must not be NULL&VUID-vkCmdDrawIndirectCount-None-04914 If the bound graphics pipeline state was created with the  ' dynamic state enabled, then   must have been called in the current command buffer prior to this draw command&VUID-vkCmdDrawIndirectCount-None-04007 All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point@s interface must have either valid or  buffers bound&VUID-vkCmdDrawIndirectCount-None-04008 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point@s interface must not be &VUID-vkCmdDrawIndirectCount-None-02721 For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input???(VUID-vkCmdDrawIndirectCount-buffer-02708 If buffer is non-sparse then it must7 be bound completely and contiguously to a single 0  object(VUID-vkCmdDrawIndirectCount-buffer-02709 buffer must& have been created with the   bit set(VUID-vkCmdDrawIndirectCount-offset-02710 offset must be a multiple of 4/VUID-vkCmdDrawIndirectCount-commandBuffer-02711  commandBuffer must" not be a protected command buffer-VUID-vkCmdDrawIndirectCount-countBuffer-02714 If  countBuffer is non-sparse then it must7 be bound completely and contiguously to a single 0  object-VUID-vkCmdDrawIndirectCount-countBuffer-02715  countBuffer must& have been created with the   bit set3VUID-vkCmdDrawIndirectCount-countBufferOffset-02716 countBufferOffset must be a multiple of 4-VUID-vkCmdDrawIndirectCount-countBuffer-02717 The count stored in  countBuffer must be less than or equal to  ::maxDrawIndirectCount3VUID-vkCmdDrawIndirectCount-countBufferOffset-04129 (countBufferOffset + sizeof (uint32_t)) must+ be less than or equal to the size of  countBuffer&VUID-vkCmdDrawIndirectCount-None-04445 If  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectCountdrawIndirectCount# is not enabled this function must not be used(VUID-vkCmdDrawIndirectCount-stride-03110 stride must be a multiple of 4 and must) be greater than or equal to sizeof(6).VUID-vkCmdDrawIndirectCount-maxDrawCount-03111 If  maxDrawCount" is greater than or equal to 1, (stride  ( maxDrawCount - 1) + offset + sizeof(6)) must& be less than or equal to the size of buffer-VUID-vkCmdDrawIndirectCount-countBuffer-03121 If the count stored in  countBuffer is equal to 1, (offset + sizeof(6)) must+ be less than or equal to the size of buffer-VUID-vkCmdDrawIndirectCount-countBuffer-03122 If the count stored in  countBuffer is greater than 1, (stride  ( drawCount - 1) + offset + sizeof(6)) must& be less than or equal to the size of bufferValid Usage (Implicit)3VUID-vkCmdDrawIndirectCount-commandBuffer-parameter  commandBuffer must be a valid  handle,VUID-vkCmdDrawIndirectCount-buffer-parameter buffer must be a valid  handle1VUID-vkCmdDrawIndirectCount-countBuffer-parameter  countBuffer must be a valid  handle3VUID-vkCmdDrawIndirectCount-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state1VUID-vkCmdDrawIndirectCount-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operations&VUID-vkCmdDrawIndirectCount-renderpass This command must5 only be called inside of a render pass instance(VUID-vkCmdDrawIndirectCount-commonparent Each of buffer,  commandBuffer, and  countBuffer must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryInside  Graphics See Also, , o=vulkanvkCmdDrawIndexedIndirectCount - Draw parameters with indirect parameters, indexed vertices, and draw count Description= behaves similarly to  except that the draw count is read by the device from a buffer during execution. The command will read an unsigned 32-bit integer from  countBuffer located at countBufferOffset and use this as the draw count. Valid Usage2VUID-vkCmdDrawIndexedIndirectCount-magFilter-04553 If a 0  created with  magFilter or  minFilter equal to   and  compareEnable equal to / is used to sample a 0> as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain 3VUID-vkCmdDrawIndexedIndirectCount-mipmapMode-04770 If a 0  created with  mipmapMode equal to   and  compareEnable equal to / is used to sample a 0> as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain -VUID-vkCmdDrawIndexedIndirectCount-None-02691 If a 0 is accessed using atomic operations as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain  -VUID-vkCmdDrawIndexedIndirectCount-None-02692 If a 0 is sampled with  > as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain  4VUID-vkCmdDrawIndexedIndirectCount-filterCubic-02694 Any 0 being sampled with  " as a result of this command must have a   and format that supports cubic filtering, as specified by :: filterCubic returned by U :VUID-vkCmdDrawIndexedIndirectCount-filterCubicMinmax-02695 Any 0 being sampled with  + with a reduction mode of either   or  " as a result of this command must have a   and format that supports cubic filtering together with minmax filtering, as specified by ::filterCubicMinmax returned by U .VUID-vkCmdDrawIndexedIndirectCount-flags-02696 Any 0 created with a 1::flags containing * sampled as a result of this command must only be sampled using a   of  -VUID-vkCmdDrawIndexedIndirectCount-None-02697 For each set n% that is statically used by the 0  bound to the pipeline bind point used by this command, a descriptor set must have been bound to n. at the same pipeline bind point, with a 0 ! that is compatible for set n , with the 0 ! used to create the current 0 , as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???-VUID-vkCmdDrawIndexedIndirectCount-None-02698 For each push constant that is statically used by the 0  bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a 0 6 that is compatible for push constants, with the 0 ! used to create the current 0 , as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???-VUID-vkCmdDrawIndexedIndirectCount-None-02699 Descriptors in each bound descriptor set, specified via  , must7 be valid if they are statically used by the 0 ; bound to the pipeline bind point used by this command-VUID-vkCmdDrawIndexedIndirectCount-None-02700 A valid pipeline must9 be bound to the pipeline bind point used by this command6VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-02701 If the 0  object bound to the pipeline bind point used by this command requires any dynamic state, that state must) have been set or inherited (if the  VK_NV_inherited_viewport_scissor extension is enabled) for  commandBuffer, and done so after any previously bound pipeline with the corresponding state not specified as dynamic-VUID-vkCmdDrawIndexedIndirectCount-None-02859 There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the 0  object bound to the pipeline bind point used by this command, since that pipeline was bound-VUID-vkCmdDrawIndexedIndirectCount-None-02702 If the 0  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must% not be used to sample from any 0 with a 0 of the type  ,  ,  ,   or  , in any shader stage-VUID-vkCmdDrawIndexedIndirectCount-None-02703 If the 0  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj# in their name, in any shader stage-VUID-vkCmdDrawIndexedIndirectCount-None-02704 If the 0  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions that includes a LOD bias or any offset values, in any shader stage-VUID-vkCmdDrawIndexedIndirectCount-None-02705 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the 0  object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point-VUID-vkCmdDrawIndexedIndirectCount-None-02706 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the 0  object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point6VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-02707 If  commandBuffer is an unprotected command buffer, any resource accessed by the 0  object bound to the pipeline bind point used by this command must! not be a protected resource-VUID-vkCmdDrawIndexedIndirectCount-None-04115 If a 0 is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction must have at least as many components as the image view@s format5VUID-vkCmdDrawIndexedIndirectCount-OpImageWrite-04469 If a 0  is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction must have at least as many components as the buffer view@s format4VUID-vkCmdDrawIndexedIndirectCount-SampledType-04470 If a 0 with a  that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 644VUID-vkCmdDrawIndexedIndirectCount-SampledType-04471 If a 0 with a  that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 324VUID-vkCmdDrawIndexedIndirectCount-SampledType-04472 If a 0  with a  that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 644VUID-vkCmdDrawIndexedIndirectCount-SampledType-04473 If a 0  with a  that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32VUID-vkCmdDrawIndexedIndirectCount-sparseImageInt64Atomics-04474 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, 0$ objects created with the   flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this commandVUID-vkCmdDrawIndexedIndirectCount-sparseImageInt64Atomics-04475 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, $ objects created with the   flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command3VUID-vkCmdDrawIndexedIndirectCount-renderPass-02684 The current render pass must be  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible with the  renderPass member of the 8, structure specified when creating the 0  bound to  0VUID-vkCmdDrawIndexedIndirectCount-subpass-026853 The subpass index of the current render pass must be equal to the subpass member of the 8, structure specified when creating the 0  bound to  -VUID-vkCmdDrawIndexedIndirectCount-None-026869 Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor set-VUID-vkCmdDrawIndexedIndirectCount-None-04584 Image subresources used as attachments in the current render pass must not be accessed in any way other than as an attachment by this command, except for cases involving read-only access to depth/stencil attachments as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass chapterVUID-vkCmdDrawIndexedIndirectCount-maxMultiviewInstanceIndex-02688 If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to X::maxMultiviewInstanceIndex>VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-02689; If the bound graphics pipeline was created with ::sampleLocationsEnable set to / and the current subpass has a depth/stencil attachment, then that attachment must& have been created with the   bit set6VUID-vkCmdDrawIndexedIndirectCount-viewportCount-03417 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  ' dynamic state enabled, then   must have been called in the current command buffer prior to this drawing command, and the  viewportCount parameter of   must match the 8:: scissorCount of the pipeline5VUID-vkCmdDrawIndexedIndirectCount-scissorCount-03418 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  ' dynamic state enabled, then  must have been called in the current command buffer prior to this drawing command, and the  scissorCount parameter of  must match the 8:: viewportCount of the pipeline6VUID-vkCmdDrawIndexedIndirectCount-viewportCount-03419 If the bound graphics pipeline state was created with both the   and  , dynamic states enabled then both   and  must have been called in the current command buffer prior to this drawing command, and the  viewportCount parameter of   must match the  scissorCount parameter of 6VUID-vkCmdDrawIndexedIndirectCount-viewportCount-04137 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  > dynamic state enabled, then the bound graphics pipeline must" have been created with :: viewportCount greater or equal to the  viewportCount) parameter in the last call to  6VUID-vkCmdDrawIndexedIndirectCount-viewportCount-04138 If the bound graphics pipeline state was created with the   and  & dynamic states enabled then the  viewportCount) parameter in the last call to   must! be greater than or equal to the  viewportCount) parameter in the last call to  6VUID-vkCmdDrawIndexedIndirectCount-viewportCount-04139 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  > dynamic state enabled, then the bound graphics pipeline must" have been created with :: viewportCount greater or equal to the  viewportCount) parameter in the last call to  6VUID-vkCmdDrawIndexedIndirectCount-viewportCount-04140 If the bound graphics pipeline state was created with the   and  & dynamic states enabled then the  viewportCount) parameter in the last call to   must! be greater than or equal to the  viewportCount) parameter in the last call to  VUID-vkCmdDrawIndexedIndirectCount-VkPipelineVieportCreateInfo-04141 If the bound graphics pipeline state was created with the  4 dynamic state enabled and an instance of  chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with :: viewportCount greater or equal to the  viewportCount) parameter in the last call to  VUID-vkCmdDrawIndexedIndirectCount-VkPipelineVieportCreateInfo-04142 If the bound graphics pipeline state was created with the  4 dynamic state enabled and an instance of  chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with ::exclusiveScissorCount greater or equal to the  viewportCount) parameter in the last call to  :VUID-vkCmdDrawIndexedIndirectCount-primitiveTopology-03420 If the bound graphics pipeline state was created with the  & dynamic state enabled then   must have been called in the current command buffer prior to this drawing command, and the primitiveTopology parameter of   must be of the same  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-classtopology class as the pipeline 8::topology state-VUID-vkCmdDrawIndexedIndirectCount-None-04875 If the bound graphics pipeline state was created with the  & dynamic state enabled then   must have been called in the current command buffer prior to this drawing command-VUID-vkCmdDrawIndexedIndirectCount-None-04876 If the bound graphics pipeline state was created with the  & dynamic state enabled then  must have been called in the current command buffer prior to this drawing command-VUID-vkCmdDrawIndexedIndirectCount-None-04877 If the bound graphics pipeline state was created with the  & dynamic state enabled then  must have been called in the current command buffer prior to this drawing command0VUID-vkCmdDrawIndexedIndirectCount-logicOp-04878 If the bound graphics pipeline state was created with the  & dynamic state enabled then   must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid   value-VUID-vkCmdDrawIndexedIndirectCount-None-04879 If the bound graphics pipeline state was created with the  & dynamic state enabled then  must have been called in the current command buffer prior to this drawing commandVUID-vkCmdDrawIndexedIndirectCount-primitiveFragmentShadingRateWithMultipleViewports-04552 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports1primitiveFragmentShadingRateWithMultipleViewports limit is not supported, the bound graphics pipeline was created with the   dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the PrimitiveShadingRateKHR built-in, then   must have been called in the current command buffer prior to this drawing command, and the  viewportCount parameter of   must be 14VUID-vkCmdDrawIndexedIndirectCount-blendEnable-04727 If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features do not contain  , then the  blendEnable1 member of the corresponding element of the  pAttachments member of pColorBlendState must be /=VUID-vkCmdDrawIndexedIndirectCount-rasterizationSamples-04740 If rasterization is not disabled in the bound graphics pipeline, and neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples# extensions are enabled, then 8::rasterizationSamples must be the same as the current subpass color and/or depth/stencil attachments-VUID-vkCmdDrawIndexedIndirectCount-None-04912 If the bound graphics pipeline was created with both the   and  ( dynamic states enabled, then   must have been called in the current command buffer prior to this draw command1VUID-vkCmdDrawIndexedIndirectCount-pStrides-04913? If the bound graphics pipeline was created with the  . dynamic state enabled, but not the  ' dynamic state enabled, then  must have been called in the current command buffer prior to this draw command, and the pStrides parameter of  must not be NULL-VUID-vkCmdDrawIndexedIndirectCount-None-04914 If the bound graphics pipeline state was created with the  ' dynamic state enabled, then   must have been called in the current command buffer prior to this draw command-VUID-vkCmdDrawIndexedIndirectCount-None-04007 All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point@s interface must have either valid or  buffers bound-VUID-vkCmdDrawIndexedIndirectCount-None-04008 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point@s interface must not be -VUID-vkCmdDrawIndexedIndirectCount-None-02721 For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input???/VUID-vkCmdDrawIndexedIndirectCount-buffer-02708 If buffer is non-sparse then it must7 be bound completely and contiguously to a single 0  object/VUID-vkCmdDrawIndexedIndirectCount-buffer-02709 buffer must& have been created with the   bit set/VUID-vkCmdDrawIndexedIndirectCount-offset-02710 offset must be a multiple of 46VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-02711  commandBuffer must" not be a protected command buffer4VUID-vkCmdDrawIndexedIndirectCount-countBuffer-02714 If  countBuffer is non-sparse then it must7 be bound completely and contiguously to a single 0  object4VUID-vkCmdDrawIndexedIndirectCount-countBuffer-02715  countBuffer must! have been created with the   bit set:VUID-vkCmdDrawIndexedIndirectCount-countBufferOffset-02716 countBufferOffset must be a multiple of 44VUID-vkCmdDrawIndexedIndirectCount-countBuffer-02717 The count stored in  countBuffer must be less than or equal to  ::maxDrawIndirectCount:VUID-vkCmdDrawIndexedIndirectCount-countBufferOffset-04129 (countBufferOffset + sizeof (uint32_t)) must+ be less than or equal to the size of  countBuffer-VUID-vkCmdDrawIndexedIndirectCount-None-04445 If  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectCountdrawIndirectCount# is not enabled this function must not be used/VUID-vkCmdDrawIndexedIndirectCount-stride-03142 stride must be a multiple of 4 and must) be greater than or equal to sizeof(6)5VUID-vkCmdDrawIndexedIndirectCount-maxDrawCount-03143 If  maxDrawCount is greater than or equal to 1, (stride  ( maxDrawCount - 1) + offset + sizeof(6)) must& be less than or equal to the size of buffer4VUID-vkCmdDrawIndexedIndirectCount-countBuffer-03153 If count stored in  countBuffer is equal to 1, (offset + sizeof(6)) must& be less than or equal to the size of buffer4VUID-vkCmdDrawIndexedIndirectCount-countBuffer-03154 If count stored in  countBuffer is greater than 1, (stride  ( drawCount - 1) + offset + sizeof(6)) must& be less than or equal to the size of bufferValid Usage (Implicit):VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-parameter  commandBuffer must be a valid  handle3VUID-vkCmdDrawIndexedIndirectCount-buffer-parameter buffer must be a valid  handle8VUID-vkCmdDrawIndexedIndirectCount-countBuffer-parameter  countBuffer must be a valid  handle:VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state8VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operations-VUID-vkCmdDrawIndexedIndirectCount-renderpass This command must5 only be called inside of a render pass instance/VUID-vkCmdDrawIndexedIndirectCount-commonparent Each of buffer,  commandBuffer, and  countBuffer must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryInside  Graphics See Also, , o=vulkan commandBuffer; is the command buffer into which the command is recorded.vulkanbuffer* is the buffer containing draw parameters.vulkanoffset is the byte offset into buffer where parameters begin.vulkan countBuffer) is the buffer containing the draw count.vulkancountBufferOffset is the byte offset into  countBuffer where the draw count begins.vulkan maxDrawCount specifies the maximum number of draws that will be executed. The actual number of executed draw calls is the minimum of the count specified in  countBuffer and  maxDrawCount.vulkanstride? is the byte stride between successive sets of draw parameters.=vulkan commandBuffer; is the command buffer into which the command is recorded.vulkanbuffer* is the buffer containing draw parameters.vulkanoffset is the byte offset into buffer where parameters begin.vulkan countBuffer) is the buffer containing the draw count.vulkancountBufferOffset is the byte offset into  countBuffer where the draw count begins.vulkan maxDrawCount specifies the maximum number of draws that will be executed. The actual number of executed draw calls is the minimum of the count specified in  countBuffer and  maxDrawCount.vulkanstride? is the byte stride between successive sets of draw parameters.====None( #$&'(./0289:<>?J============None( #$&'(./0289:<>?============cNone( #$&'(./0289:<>?KvulkanVkPhysicalDeviceBufferDeviceAddressFeatures - Structure describing buffer address features that can be supported by an implementationMembers0This structure describes the following features: DescriptionNotebufferDeviceAddressMultiDevice exists to allow certain legacy platforms to be able to support bufferDeviceAddress without needing to support shared GPU virtual addresses for multi-device configurations.See = for more information.If the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkanVkMemoryOpaqueCaptureAddressAllocateInfo - Request a specific address for a memory allocation DescriptionIf opaqueCaptureAddress+ is zero, no specific address is requested.If opaqueCaptureAddress is not zero, it should be an address retrieved from = on an identically created memory allocation on the same implementation.Note.In most cases, it is expected that a non-zero  opaqueAddress is an address retrieved from = on an identically created memory allocation. If this is not the case, it is likely that  errors will occur.This is, however, not a strict requirement because trace capture/replay tools may need to adjust memory allocation parameters for imported memory..If this structure is not present, it is as if opaqueCaptureAddress is zero.Valid Usage (Implicit)See AlsovulkanVkDeviceMemoryOpaqueCaptureAddressInfo - Structure specifying the memory object to query an address forValid Usage (Implicit)See Also, , =,  vulkanVkBufferOpaqueCaptureAddressCreateInfo - Request a specific address for a buffer DescriptionIf opaqueCaptureAddress+ is zero, no specific address is requested.If opaqueCaptureAddress is not zero, then it should be an address retrieved from =? for an identically created buffer on the same implementation..If this structure is not present, it is as if opaqueCaptureAddress is zero.Apps should avoid creating buffers with app-provided addresses and implementation-provided addresses in the same process, to reduce the likelihood of  errors.NoteThe expected usage for this is that a trace capture/replay tool will add the * flag to all buffers that use *, and during capture will save the queried opaque device addresses in the trace. During replay, the buffers will be created specifying the original address so any address values stored in the trace data will remain valid.Implementations are expected to separate such buffers in the GPU address space so normal allocations will avoid using these addresses. Apps/tools should avoid mixing app-provided and implementation-provided addresses for buffers created with */, to avoid address space allocation conflicts.Valid Usage (Implicit)See AlsovulkanVkBufferDeviceAddressInfo - Structure specifying the buffer to query an address for Valid Usage+VUID-VkBufferDeviceAddressInfo-buffer-02600 If buffer6 is non-sparse and was not created with the * flag, then it must7 be bound completely and contiguously to a single  object+VUID-VkBufferDeviceAddressInfo-buffer-02601 buffer must" have been created with *Valid Usage (Implicit)*VUID-VkBufferDeviceAddressInfo-sType-sType sType must be  *VUID-VkBufferDeviceAddressInfo-pNext-pNext pNext must be NULL/VUID-VkBufferDeviceAddressInfo-buffer-parameter buffer must be a valid  handleSee Also, , =,  ,  , =,  =vulkanmemory5 specifies the memory whose address is being queried.8VUID-VkDeviceMemoryOpaqueCaptureAddressInfo-memory-03336 memory must have been allocated with buffer.4If the buffer was created with a non-zero value of ::opaqueCaptureAddress the return value must be the same address. Valid Usage/VUID-vkGetBufferOpaqueCaptureAddress-None-03326 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressbufferDeviceAddress feature must be enabled1VUID-vkGetBufferOpaqueCaptureAddress-device-03327 If device was created with multiple physical devices, then the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevicebufferDeviceAddressMultiDevice feature must be enabledValid Usage (Implicit)5VUID-vkGetBufferOpaqueCaptureAddress-device-parameter device must be a valid  handle4VUID-vkGetBufferOpaqueCaptureAddress-pInfo-parameter pInfo must be a valid pointer to a valid  structureSee Also, =vulkan7vkGetBufferDeviceAddress - Query an address of a buffer Description6The 64-bit return value is an address of the start of  pInfo->buffer. The address range starting at this value and whose size is the size of the buffer can be used in a shader to access the memory bound to that buffer, using the SPV_KHR_physical_storage_buffer extension or the equivalent SPV_EXT_physical_storage_buffer extension and the PhysicalStorageBuffer( storage class. For example, this value can0 be stored in a uniform buffer, and the shader can read the value from the uniform buffer and use it to do a dependent read/write to this buffer. A value of zero is reserved as a @null@ pointer and must not be returned as a valid buffer device address. All loads, stores, and atomics in a shader through PhysicalStorageBuffer pointers must7 access addresses in the address range of some buffer.4If the buffer was created with a non-zero value of ::opaqueCaptureAddress or :: deviceAddress the return value will be the same address that was returned at capture time. Valid Usage7VUID-vkGetBufferDeviceAddress-bufferDeviceAddress-03324 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressbufferDeviceAddress or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressEXT::bufferDeviceAddress feature must be enabled*VUID-vkGetBufferDeviceAddress-device-03325 If device was created with multiple physical devices, then the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevicebufferDeviceAddressMultiDevice or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDeviceEXT ::bufferDeviceAddressMultiDevice feature must be enabledValid Usage (Implicit).VUID-vkGetBufferDeviceAddress-device-parameter device must be a valid  handle-VUID-vkGetBufferDeviceAddress-pInfo-parameter pInfo must$ be a valid pointer to a valid  structureSee Also, =vulkanvkGetDeviceMemoryOpaqueCaptureAddress - Query an opaque capture address of a memory object DescriptionThe 64-bit return value is an opaque address representing the start of  pInfo->memory.=If the memory object was allocated with a non-zero value of ::opaqueCaptureAddress, the return value must be the same address.NoteThe expected usage for these opaque addresses is only for trace capture/replay tools to store these addresses in a trace and subsequently specify them during replay. Valid Usage5VUID-vkGetDeviceMemoryOpaqueCaptureAddress-None-03334 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressbufferDeviceAddress feature must be enabled7VUID-vkGetDeviceMemoryOpaqueCaptureAddress-device-03335 If device; was created with multiple physical devices, then the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevicebufferDeviceAddressMultiDevice feature must be enabledValid Usage (Implicit);VUID-vkGetDeviceMemoryOpaqueCaptureAddress-device-parameter device must be a valid  handle:VUID-vkGetDeviceMemoryOpaqueCaptureAddress-pInfo-parameter pInfo must$ be a valid pointer to a valid  structureSee Also, =vulkandevice6 is the logical device that the buffer was created on.vulkanpInfo is a pointer to a = structure specifying the buffer to retrieve an address for.=vulkandevice6 is the logical device that the buffer was created on.vulkanpInfo is a pointer to a = structure specifying the buffer to retrieve an address for.=vulkandevice? is the logical device that the memory object was allocated on.vulkanpInfo is a pointer to a  structure specifying the memory object to retrieve an address for.a============ ***************************=== ===============  a************************************************None( #$&'(./0289:<>?Zo>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>None( #$&'(./0289:<>?e[vulkanVkPhysicalDeviceBufferDeviceAddressFeaturesEXT - Structure describing buffer address features that can be supported by an implementationMembers0This structure describes the following features: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.NoteThe ) structure has the same members as the c structure, but the functionality indicated by the members is expressed differently. The features indicated by the c structure requires additional flags to be passed at memory allocation time, and the capture and replay mechanism is built around opaque capture addresses for buffer and memory objects.Valid Usage (Implicit)See Alsoq, vulkanVkBufferDeviceAddressCreateInfoEXT - Request a specific address for a buffer DescriptionIf  deviceAddress+ is zero, no specific address is requested.If  deviceAddress is not zero, then it must be an address retrieved from an identically created buffer on the same implementation. The buffer must* also be bound to an identically created 0  object..If this structure is not present, it is as if  deviceAddress is zero.Apps should avoid creating buffers with app-provided addresses and implementation-provided addresses in the same process, to reduce the likelihood of > errors.Valid Usage (Implicit)See Alsop, >vulkan deviceAddress0 is the device address requested for the buffer.>vulkanfeatures-bufferDeviceAddressEXT bufferDeviceAddress indicates that the implementation supports accessing buffer memory in shaders as storage buffers via an address queried from >.>vulkan,features-bufferDeviceAddressCaptureReplayEXT  bufferDeviceAddressCaptureReplay indicates that the implementation supports saving and reusing buffer addresses, e.g. for trace capture and replay.>vulkan*features-bufferDeviceAddressMultiDeviceEXT bufferDeviceAddressMultiDevice1 indicates that the implementation supports the bufferDeviceAddress feature for logical devices created with multiple physical devices. If this feature is not supported, buffer addresses must not be queried on a logical device created with more than one physical device.>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>^None( #$&'(./0289:<>?pvulkanVkPhysicalDeviceHostQueryResetFeatures - Structure describing whether queries can be reset from the hostMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, >vulkan!extension-features-hostQueryReset hostQueryReset indicates that the implementation supports resetting queries from the host with >.>vulkan0vkResetQueryPool - Reset queries in a query pool Description/This command sets the status of query indices [ firstQuery,  firstQuery +  queryCount - 1] to unavailable.If  queryPool is $1 this command sets the status of query indices [ firstQuery,  firstQuery +  queryCount# - 1] to unavailable for each pass. Valid Usage VUID-vkResetQueryPool-None-02665 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-hostQueryResethostQueryReset feature must be enabled&VUID-vkResetQueryPool-firstQuery-02666  firstQuery must, be less than the number of queries in  queryPool&VUID-vkResetQueryPool-firstQuery-02667 The sum of  firstQuery and  queryCount must8 be less than or equal to the number of queries in  queryPool&VUID-vkResetQueryPool-firstQuery-02741> Submitted commands that refer to the range specified by  firstQuery and  queryCount in  queryPool must have completed execution&VUID-vkResetQueryPool-firstQuery-02742( The range of queries specified by  firstQuery and  queryCount in  queryPool must not be in use by calls to ; or > in other threadsValid Usage (Implicit)&VUID-vkResetQueryPool-device-parameter device must be a valid  handle)VUID-vkResetQueryPool-queryPool-parameter  queryPool must be a valid } handle&VUID-vkResetQueryPool-queryPool-parent  queryPool must6 have been created, allocated, or retrieved from deviceSee Also, }>vulkandevice0 is the logical device that owns the query pool.vulkan queryPool is the handle of the query pool managing the queries being reset.vulkan firstQuery% is the initial query index to reset.vulkan queryCount# is the number of queries to reset.>> >>>>  None( #$&'(./0289:<>?}>>>>>>>>>>>>>>None( #$&'(./0289:<>?J>vulkan'vkTrimCommandPool - Trim a command pool DescriptionTrimming a command pool recycles unused memory from the command pool back to the system. Command buffers allocated from the pool are not affected by the command.NoteThis command provides applications with some control over the internal memory allocations used by command pools.Unused memory normally arises from command buffers that have been recorded and later reset, such that they are no longer using the memory. On reset, a command buffer can return memory to its command pool, but the only way to release memory from a command pool to the system requires calling  , which cannot be executed while any command buffers from that pool are still in use. Subsequent recording operations into command buffers will re-use this memory but since total memory requirements fluctuate over time, unused memory can accumulate.+In this situation, trimming a command pool may be useful to return unused memory back to the system, returning the total outstanding memory allocated by the pool back to a more @average@ value.Implementations utilize many internal allocation strategies that make it impossible to guarantee that all unused memory is released back to the system. For instance, an implementation of a command pool may involve allocating memory in bulk from the system and sub-allocating from that memory. In such an implementation any live command buffer that holds a reference to a bulk allocation would prevent that allocation from being freed, even if only a small proportion of the bulk allocation is in use.In most cases trimming will result in a reduction in allocated but unused memory, but it does not guarantee the @ideal@ behavior. Trimming may be an expensive operation, and should% not be called frequently. Trimming should be treated as a way to relieve memory pressure after application-known points when there exists enough unused memory that the cost of trimming is @worth@ it.Valid Usage (Implicit)'VUID-vkTrimCommandPool-device-parameter device must be a valid  handle,VUID-vkTrimCommandPool-commandPool-parameter  commandPool must be a valid  handle(VUID-vkTrimCommandPool-flags-zerobitmask flags must be 0)VUID-vkTrimCommandPool-commandPool-parent  commandPool must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  commandPool must be externally synchronizedSee Also, , >vulkandevice2 is the logical device that owns the command pool.vulkan commandPool is the command pool to trim.vulkanflags is reserved for future use.M""""""""""""""""Na##############################>>aM"""""""""""""""""""""""""""""""N#########################################################None( #$&'(./0289:<>? >>>>>>>>>> >>>>>>>>>>QNone( #$&'(./0289:<>?vulkanVkPhysicalDeviceIDProperties - Structure specifying IDs related to the physical device Description deviceUUID is an array of , uint8_t values representing a universally unique identifier for the device. driverUUID is an array of , uint8_t values representing a universally unique identifier for the driver build in use by the device. deviceLUID is an array of , uint8_t values representing a locally unique identifier for the device.deviceNodeMask is a uint32_t bitfield identifying the node within a linked device adapter corresponding to the device.deviceLUIDValid& is a boolean value that will be / if  deviceLUID contains a valid LUID and deviceNodeMask& contains a valid node mask, and / if they do not.If the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property. deviceUUID must be immutable for a given device across instances, processes, driver APIs, driver versions, and system reboots. Applications can compare the  driverUUID4 value across instance and process boundaries, and can make similar queries in external APIs to determine whether they are capable of sharing memory objects and resources using them with the device. deviceUUID and/or  driverUUID must be used to determine whether a particular external object can be shared between driver components, where such a restriction exists as defined in the compatibility table for the particular object type: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-memory-handle-types-compatibility*External memory handle types compatibility https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility-External semaphore handle types compatibility https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-fence-handle-types-compatibility)External fence handle types compatibilityIf deviceLUIDValid is /, the values of  deviceLUID and deviceNodeMask are undefined. If deviceLUIDValid is / and Vulkan is running on the Windows operating system, the contents of  deviceLUID can be cast to an LUID object and must1 be equal to the locally unique identifier of a  IDXGIAdapter1 object that corresponds to physicalDevice. If deviceLUIDValid is /, deviceNodeMask must contain exactly one bit. If Vulkan is running on an operating system that supports the Direct3D 12 API and physicalDevice corresponds to an individual device in a linked device adapter, deviceNodeMask3 identifies the Direct3D 12 node corresponding to physicalDevice. Otherwise, deviceNodeMask must be 1.Note,Although they have identical descriptions, :: deviceUUID may differ from U::pipelineCacheUUID. The former is intended to identify and correlate devices across API and driver boundaries, while the latter is used to identify a compatible device and driver combination to use when serializing and de-serializing pipeline state.Implementations should return  deviceUUID values which are likely to be unique even in the presence of multiple Vulkan implementations (such as a GPU driver and a software renderer; two drivers for different GPUs; or the same Vulkan driver running on two logically different devices).4Khronos' conformance testing can not guarantee that  deviceUUID values are actually unique, so implementors should make their own best efforts to ensure this. In particular, hard-coded  deviceUUID values, especially all-0 bits, should never be used.A combination of values unique to the vendor, the driver, and the hardware environment can be used to provide a  deviceUUID which is unique to a high degree of certainty. Some possible inputs to such a computation are:Information reported by  PCI device ID (if defined)8PCI bus ID, or similar system configuration information.Driver binary checksums.NoteWhile :: deviceUUID is specified to remain consistent across driver versions and system reboots, it is not intended to be usable as a serializable persistent identifier for a device. It may change when a device is physically added to, removed from, or moved to a different connector in a system while that system is powered down. Further, there is no reasonable way to verify with conformance testing that a given device retains the same UUID in a given system across all driver versions supported in that system. While implementations should make every effort to report consistent device UUIDs across driver versions, applications should avoid relying on the persistence of this value for uses other than identifying compatible devices for external object sharing purposes.Valid Usage (Implicit)-VUID-VkPhysicalDeviceIDProperties-sType-sType sType must be  See Alsoq, vulkanVkPhysicalDeviceExternalImageFormatInfo - Structure specifying external image creation parameters DescriptionIf  handleType is 0, U  will behave as if  was not present, and  will be ignored.If  handleType is not compatible with the format, type, tiling, usage, and flags specified in U , then U  returns %.Valid Usage (Implicit)8VUID-VkPhysicalDeviceExternalImageFormatInfo-sType-sType sType must be  VUID-VkPhysicalDeviceExternalImageFormatInfo-handleType-parameter If  handleType is not 0,  handleType must be a valid  valueSee Also, vulkanVkPhysicalDeviceExternalBufferInfo - Structure specifying buffer creation parametersValid Usage (Implicit)See Also*, *, , , >,  vulkanVkExternalMemoryProperties - Structure specifying external memory handle type capabilities DescriptioncompatibleHandleTypes must include at least  handleType!. Inclusion of a handle type in compatibleHandleTypes) does not imply the values returned in U will be the same when :: handleType is set to that type. The application is responsible for querying the capabilities of all handle types intended for concurrent use in a single image and intersecting them to obtain the compatible set of capabilities.See Also, , , vulkanVkExternalImageFormatProperties - Structure specifying supported external handle propertiesValid Usage (Implicit)See Also, vulkanVkExternalBufferProperties - Structure specifying supported external handle capabilitiesValid Usage (Implicit)See Also, , >,  >vulkanexternalMemoryProperties is a  structure specifying various capabilities of the external handle type when used with the specified buffer creation parameters.>vulkanflags is a bitmask of  describing additional parameters of the buffer, corresponding to ::flags.7VUID-VkPhysicalDeviceExternalBufferInfo-flags-parameter flags must be a valid combination of  values>vulkanusage is a bitmask of  describing the intended usage of the buffer, corresponding to ::usage.7VUID-VkPhysicalDeviceExternalBufferInfo-usage-parameter usage must be a valid combination of  values=VUID-VkPhysicalDeviceExternalBufferInfo-usage-requiredbitmask usage must not be 0>vulkan handleType is a  value specifying the memory handle type that will be used with the memory associated with the buffer.vulkanexternalMemoryProperties is a  structure specifying various capabilities of the external handle type when used with the specified image creation parameters.>vulkan handleType is a  value specifying the memory handle type that will be used with the memory associated with the image.>vulkanexternalMemoryFeatures is a bitmask of  specifying the features of  handleType.>vulkanexportFromImportedHandleTypes is a bitmask of , specifying which types of imported handle  handleType can be exported from.>vulkancompatibleHandleTypes is a bitmask of  specifying handle types which can# be specified at the same time as  handleType8 when creating an image compatible with external memory.>vulkanvkGetPhysicalDeviceExternalBufferProperties - Query external handle types supported by buffersValid Usage (Implicit)See Also, , >vulkanphysicalDevice is the physical device from which to query the buffer capabilities.VUID-vkGetPhysicalDeviceExternalBufferProperties-physicalDevice-parameter physicalDevice must be a valid  handlevulkanpExternalBufferInfo is a pointer to a  structure describing the parameters that would be consumed by  .VUID-vkGetPhysicalDeviceExternalBufferProperties-pExternalBufferInfo-parameter pExternalBufferInfo must be a valid pointer to a valid  structure>>>>>>>>>>>>>>>>>>>> ,,>>>>>>>>>>>>>>>>>>>>>>  ,,None( #$&'(./0289:<>?3??????????????????????????????????????????????????????????????ONone( #$&'(./0289:<>?˒vulkanVkPhysicalDeviceExternalFenceInfo - Structure specifying fence creation parameters. DescriptionNoteHandles of type  generated by the implementation may represent either Linux Sync Files or Android Fences at the implementation@s discretion. Applications should only use operations defined for both types of file descriptors, unless they know via means external to Vulkan the type of the file descriptor, or are prepared to deal with the system-defined operation failures resulting from using the wrong type.Valid Usage (Implicit)See Also, , ?,  vulkanVkExternalFenceProperties - Structure describing supported external fence handle features DescriptionIf  handleType/ is not supported by the implementation, then ::externalFenceFeatures will be set to zero.Valid Usage (Implicit)See Also, , , ?,  ?vulkanexportFromImportedHandleTypes is a bitmask of , indicating which types of imported handle  handleType can be exported from.?vulkancompatibleHandleTypes is a bitmask of  specifying handle types which can# be specified at the same time as  handleType when creating a fence.?vulkanexternalFenceFeatures is a bitmask of  indicating the features of  handleType.?vulkan handleType is a  value specifying an external fence handle type for which capabilities will be returned.;VUID-VkPhysicalDeviceExternalFenceInfo-handleType-parameter  handleType must be a valid  value?vulkanvkGetPhysicalDeviceExternalFenceProperties - Function for querying external fence handle capabilities.Valid Usage (Implicit)See Also, , ?vulkanphysicalDevice is the physical device from which to query the fence capabilities.VUID-vkGetPhysicalDeviceExternalFenceProperties-physicalDevice-parameter physicalDevice must be a valid  handlevulkanpExternalFenceInfo is a pointer to a  structure describing the parameters that would be consumed by - .VUID-vkGetPhysicalDeviceExternalFenceProperties-pExternalFenceInfo-parameter pExternalFenceInfo must be a valid pointer to a valid  structure?????? ????????  None( #$&'(./0289:<>?؏????????????????????????????????????????????MNone( #$&'(./0289:<>?+vulkanVkPhysicalDeviceGroupProperties - Structure specifying physical device group propertiesValid Usage (Implicit)See Alsoq, 0 , , ?,  vulkanVkDeviceGroupDeviceCreateInfo - Create a logical device from multiple physical devices DescriptionThe elements of the pPhysicalDevices array are an ordered list of the physical devices that the logical device represents. These must be a subset of a single device group, and need not be in the same order as they were enumerated. The order of the physical devices in the pPhysicalDevices array determines the  device index of each physical device, with element i being assigned a device index of i. Certain commands and structures refer to one or more physical devices by using device indices or  device masks formed using device indices.'A logical device created without using  , or with physicalDeviceCount$ equal to zero, is equivalent to a physicalDeviceCount of one and pPhysicalDevices pointing to the physicalDevice parameter to  . In particular, the device index of that physical device is zero. Valid Usage9VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-00375 Each element of pPhysicalDevices must be unique9VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-00376 All elements of pPhysicalDevices must3 be in the same device group as enumerated by ? is less than the number of device groups available, at most pPhysicalDeviceGroupCount" structures will be written, and  will be returned instead of , to indicate that not all the available device groups were returned.Every physical device must be in exactly one device group.Valid Usage (Implicit)7VUID-vkEnumeratePhysicalDeviceGroups-instance-parameter instance must be a valid  handleVUID-vkEnumeratePhysicalDeviceGroups-pPhysicalDeviceGroupCount-parameter pPhysicalDeviceGroupCount must be a valid pointer to a uint32_t valueVUID-vkEnumeratePhysicalDeviceGroups-pPhysicalDeviceGroupProperties-parameter! If the value referenced by pPhysicalDeviceGroupCount is not 0 , and pPhysicalDeviceGroupProperties is not NULL, pPhysicalDeviceGroupProperties must( be a valid pointer to an array of pPhysicalDeviceGroupCount  structures Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, ?vulkaninstance; is a handle to a Vulkan instance previously created with  .??????  ,,????????   ,,None( #$&'(./0289:<>? ??????????? ???????????KNone( #$&'(./0289:<>?hmvulkanVkMemoryAllocateFlagsInfo - Structure controlling how many instances of memory will be allocated DescriptionIf  is not set, the number of instances allocated depends on whether  ! is set in the memory heap. If   is set, then memory is allocated for every physical device in the logical device (as if  deviceMask, has bits set for all device indices). If   is not set, then a single instance of memory is allocated (as if  deviceMask is set to one).On some implementations, allocations from a multi-instance heap may5 consume memory on all physical devices even if the  deviceMask excludes some devices. If M::subsetAllocation is /, then memory is only consumed for the devices in the device mask.NoteIn practice, most allocations on a multi-instance heap will be allocated across all physical devices. Unicast allocation support is an optional optimization for a minority of allocations. Valid Usage/VUID-VkMemoryAllocateFlagsInfo-deviceMask-00675 If  is set,  deviceMask must be a valid device mask/VUID-VkMemoryAllocateFlagsInfo-deviceMask-00676 If  is set,  deviceMask must not be zeroValid Usage (Implicit)*VUID-VkMemoryAllocateFlagsInfo-sType-sType sType must be .VUID-VkMemoryAllocateFlagsInfo-flags-parameter flags must% be a valid combination of  valuesSee Also, vulkanVkDeviceGroupSubmitInfo - Structure indicating which physical devices execute semaphore operations and command buffers DescriptionIf this structure is not present, semaphore operations and command buffers execute on device index zero. Valid Usage5VUID-VkDeviceGroupSubmitInfo-waitSemaphoreCount-00082 waitSemaphoreCount must equal <::waitSemaphoreCount5VUID-VkDeviceGroupSubmitInfo-commandBufferCount-00083 commandBufferCount must equal <::commandBufferCount7VUID-VkDeviceGroupSubmitInfo-signalSemaphoreCount-00084 signalSemaphoreCount must equal <::signalSemaphoreCount>VUID-VkDeviceGroupSubmitInfo-pWaitSemaphoreDeviceIndices-00085 All elements of pWaitSemaphoreDeviceIndices and pSignalSemaphoreDeviceIndices must be valid device indices as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain $'VUID-vkCmdDispatchBase-mipmapMode-04770 If a 0  created with  mipmapMode equal to   and  compareEnable equal to / is used to sample a 0> as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain !VUID-vkCmdDispatchBase-None-02691 If a 0 is accessed using atomic operations as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain  !VUID-vkCmdDispatchBase-None-02692 If a 0 is sampled with  > as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain  (VUID-vkCmdDispatchBase-filterCubic-02694 Any 0 being sampled with  " as a result of this command must have a   and format that supports cubic filtering, as specified by :: filterCubic returned by U .VUID-vkCmdDispatchBase-filterCubicMinmax-02695 Any 0 being sampled with  + with a reduction mode of either   or  " as a result of this command must have a   and format that supports cubic filtering together with minmax filtering, as specified by ::filterCubicMinmax returned by U "VUID-vkCmdDispatchBase-flags-02696 Any 0 created with a 1::flags containing * sampled as a result of this command must only be sampled using a   of  !VUID-vkCmdDispatchBase-None-02697 For each set n% that is statically used by the 0  bound to the pipeline bind point used by this command, a descriptor set must have been bound to n. at the same pipeline bind point, with a 0 ! that is compatible for set n , with the 0 ! used to create the current 0 , as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???!VUID-vkCmdDispatchBase-None-02698< For each push constant that is statically used by the 0  bound to the pipeline bind point used by this command, a push constant value must= have been set for the same pipeline bind point, with a 0 6 that is compatible for push constants, with the 0 ! used to create the current 0 , as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???!VUID-vkCmdDispatchBase-None-02699 Descriptors in each bound descriptor set, specified via  , must7 be valid if they are statically used by the 0 ; bound to the pipeline bind point used by this command!VUID-vkCmdDispatchBase-None-02700 A valid pipeline must> be bound to the pipeline bind point used by this command*VUID-vkCmdDispatchBase-commandBuffer-02701 If the 0  object bound to the pipeline bind point used by this command requires any dynamic state, that state must) have been set or inherited (if the  VK_NV_inherited_viewport_scissor extension is enabled) for  commandBuffer, and done so after any previously bound pipeline with the corresponding state not specified as dynamic!VUID-vkCmdDispatchBase-None-02859 There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the 0  object bound to the pipeline bind point used by this command, since that pipeline was bound!VUID-vkCmdDispatchBase-None-02702 If the 0  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must% not be used to sample from any 0 with a 0 of the type  ,  ,  ,   or  , in any shader stage!VUID-vkCmdDispatchBase-None-02703 If the 0  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj# in their name, in any shader stage!VUID-vkCmdDispatchBase-None-02704 If the 0  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions that includes a LOD bias or any offset values, in any shader stage!VUID-vkCmdDispatchBase-None-02705 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the 0  object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point!VUID-vkCmdDispatchBase-None-02706 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the 0  object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point*VUID-vkCmdDispatchBase-commandBuffer-02707 If  commandBuffer is an unprotected command buffer, any resource accessed by the 0  object bound to the pipeline bind point used by this command must not be a protected resource!VUID-vkCmdDispatchBase-None-04115 If a 0 is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction must have at least as many components as the image view@s format)VUID-vkCmdDispatchBase-OpImageWrite-04469 If a 0  is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction must have at least as many components as the buffer view@s format(VUID-vkCmdDispatchBase-SampledType-04470 If a 0 with a  that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64(VUID-vkCmdDispatchBase-SampledType-04471 If a 0 with a  that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32(VUID-vkCmdDispatchBase-SampledType-04472 If a 0  with a  that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64(VUID-vkCmdDispatchBase-SampledType-04473 If a 0  with a  that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 324VUID-vkCmdDispatchBase-sparseImageInt64Atomics-04474 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, 0$ objects created with the   flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command4VUID-vkCmdDispatchBase-sparseImageInt64Atomics-04475 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, 0 $ objects created with the   flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command*VUID-vkCmdDispatchBase-commandBuffer-02712 If  commandBuffer is a protected command buffer, any resource written to by the 0  object bound to the pipeline bind point used by this command must not be an unprotected resource*VUID-vkCmdDispatchBase-commandBuffer-02713 If  commandBuffer is a protected command buffer, pipeline stages other than the framebuffer-space and compute stages in the 0  object bound to the pipeline bind point used by this command must not write to any resource*VUID-vkCmdDispatchBase-commandBuffer-04617) If any of the shader stages of the 0  bound to the pipeline bind point used by this command uses the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-RayQueryKHR RayQueryKHR capability, then  commandBuffer must' not be a protected command buffer'VUID-vkCmdDispatchBase-baseGroupX-00421  baseGroupX must be less than  ::maxComputeWorkGroupCount[0]'VUID-vkCmdDispatchBase-baseGroupX-00422  baseGroupY must be less than  ::maxComputeWorkGroupCount[1]'VUID-vkCmdDispatchBase-baseGroupZ-00423  baseGroupZ must be less than  ::maxComputeWorkGroupCount[2](VUID-vkCmdDispatchBase-groupCountX-00424  groupCountX must$ be less than or equal to  ::maxComputeWorkGroupCount[0] minus  baseGroupX(VUID-vkCmdDispatchBase-groupCountY-00425  groupCountY must$ be less than or equal to  ::maxComputeWorkGroupCount[1] minus  baseGroupY(VUID-vkCmdDispatchBase-groupCountZ-00426  groupCountZ must$ be less than or equal to  ::maxComputeWorkGroupCount[2] minus  baseGroupZ'VUID-vkCmdDispatchBase-baseGroupX-00427 If any of  baseGroupX,  baseGroupY, or  baseGroupZ4 are not zero, then the bound compute pipeline must! have been created with the ? flagValid Usage (Implicit).VUID-vkCmdDispatchBase-commandBuffer-parameter  commandBuffer must be a valid  handle.VUID-vkCmdDispatchBase-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state,VUID-vkCmdDispatchBase-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support compute operations!VUID-vkCmdDispatchBase-renderpass This command must6 only be called outside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryOutside Compute See Also@vulkandevice, is the logical device that owns the memory.8VUID-vkGetDeviceGroupPeerMemoryFeatures-device-parameter device must be a valid  handlevulkan heapIndex is the index of the memory heap from which the memory is allocated.7VUID-vkGetDeviceGroupPeerMemoryFeatures-heapIndex-00691  heapIndex must be less than memoryHeapCountvulkanlocalDeviceIndex is the device index of the physical device that performs the memory access.>VUID-vkGetDeviceGroupPeerMemoryFeatures-localDeviceIndex-00692 localDeviceIndex must be a valid device index>VUID-vkGetDeviceGroupPeerMemoryFeatures-localDeviceIndex-00694 localDeviceIndex must not equal remoteDeviceIndexvulkanremoteDeviceIndex is the device index of the physical device that the memory is allocated for.?VUID-vkGetDeviceGroupPeerMemoryFeatures-remoteDeviceIndex-00693 remoteDeviceIndex must be a valid device index@vulkan commandBuffer9 is command buffer whose current device mask is modified.vulkan deviceMask- is the new value of the current device mask.@vulkan commandBuffer is the command buffer into which the command will be recorded.vulkan baseGroupX+ is the start value for the X component of  WorkgroupId.vulkan baseGroupY+ is the start value for the Y component of  WorkgroupId.vulkan baseGroupZ+ is the start value for the Z component of  WorkgroupId.vulkan groupCountX is the number of local workgroups to dispatch in the X dimension.vulkan groupCountY is the number of local workgroups to dispatch in the Y dimension.vulkan groupCountZ is the number of local workgroups to dispatch in the Z dimension.G((((H??????????????? ?@@@@@@????????????????  G(((((((HINone( #$&'(./0289:<>?vulkanVkMemoryDedicatedRequirements - Structure describing dedicated allocation requirements of buffer and image resources DescriptionTo determine the dedicated allocation requirements of a buffer or image resource, add a  structure to the pNext chain of the T structure passed as the pMemoryRequirements parameter of T  or T , respectively. used to create the buffer being queried included a P? structure, and any of the handle types specified in P:: handleTypes9 requires dedicated allocation, as reported by Q  in Q::/externalMemoryProperties.externalMemoryFeatures. Otherwise, requiresDedicatedAllocation will be /.When the implementation sets requiresDedicatedAllocation to /, it must also set prefersDedicatedAllocation to /.If  was set in ::flags when buffer was created, then both prefersDedicatedAllocation and requiresDedicatedAllocation will be /.;Constraints on the values returned for image resources are:requiresDedicatedAllocation may be / if the pNext chain of 1 for the call to 1 = used to create the image being queried included a P? structure, and any of the handle types specified in P:: handleTypes9 requires dedicated allocation, as reported by U  in Q::/externalMemoryProperties.externalMemoryFeatures. Otherwise, requiresDedicatedAllocation will be /.If   was set in 1::flags when image was created, then both prefersDedicatedAllocation and requiresDedicatedAllocation will be /.Valid Usage (Implicit).VUID-VkMemoryDedicatedRequirements-sType-sType sType must be See Alsoq, vulkanVkMemoryDedicatedAllocateInfo - Specify a dedicated memory allocation resource Valid Usage.VUID-VkMemoryDedicatedAllocateInfo-image-01432 At least one of image and buffer must be  .VUID-VkMemoryDedicatedAllocateInfo-image-02964 If image is not  and the memory is not an imported Android Hardware Buffer, 4::allocationSize must equal the 5::size of the image.VUID-VkMemoryDedicatedAllocateInfo-image-01434 If image is not , image must% have been created without   set in 1::flags/VUID-VkMemoryDedicatedAllocateInfo-buffer-02965 If buffer is not  and the memory is not an imported Android Hardware Buffer, 4::allocationSize must equal the 5::size of the buffer/VUID-VkMemoryDedicatedAllocateInfo-buffer-01436 If buffer is not , buffer must% have been created without  set in ::flags.VUID-VkMemoryDedicatedAllocateInfo-image-01876 If image is not  and 4> defines a memory import operation with handle type B, B, B , B , B, or B, and the external handle was created by the Vulkan API, then the memory being imported must/ also be a dedicated image allocation and image must be identical to the image associated with the imported memory/VUID-VkMemoryDedicatedAllocateInfo-buffer-01877 If buffer is not  and 4> defines a memory import operation with handle type B, B, B , B , B, or B, and the external handle was created by the Vulkan API, then the memory being imported must0 also be a dedicated buffer allocation and buffer must be identical to the buffer associated with the imported memory.VUID-VkMemoryDedicatedAllocateInfo-image-01878 If image is not  and 4> defines a memory import operation with handle type B!, the memory being imported must/ also be a dedicated image allocation and image must be identical to the image associated with the imported memory/VUID-VkMemoryDedicatedAllocateInfo-buffer-01879 If buffer is not  and 4> defines a memory import operation with handle type B!, the memory being imported must0 also be a dedicated buffer allocation and buffer must be identical to the buffer associated with the imported memory.VUID-VkMemoryDedicatedAllocateInfo-image-01797 If image is not , image must& not have been created with   set in 1::flags.VUID-VkMemoryDedicatedAllocateInfo-image-04751 If image is not  and 4> defines a memory import operation with handle type B!, the memory being imported must/ also be a dedicated image allocation and image must be identical to the image associated with the imported memory/VUID-VkMemoryDedicatedAllocateInfo-buffer-04752 If buffer is not  and 4> defines a memory import operation with handle type B!, the memory being imported must0 also be a dedicated buffer allocation and buffer must be identical to the buffer associated with the imported memoryValid Usage (Implicit).VUID-VkMemoryDedicatedAllocateInfo-sType-sType sType must be 2VUID-VkMemoryDedicatedAllocateInfo-image-parameter If image is not , image must be a valid  handle3VUID-VkMemoryDedicatedAllocateInfo-buffer-parameter If buffer is not , buffer must be a valid  handle/VUID-VkMemoryDedicatedAllocateInfo-commonparent Both of buffer , and image2 that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same 0See Also, , @vulkanimage is = or a handle of an image which this memory will be bound to.@vulkanbuffer is = or a handle of a buffer which this memory will be bound to.@vulkanprefersDedicatedAllocation specifies that the implementation would prefer a dedicated allocation for this resource. The application is still free to suballocate the resource but it may; get better performance if a dedicated allocation is used.@vulkanrequiresDedicatedAllocation specifies that a dedicated allocation is required for this resource.@@@@@@ @@@@@@  None( #$&'(./0289:<>?@@@@@@@@@@@@@@@@ENone( #$&'(./0289:<>? vulkanVkProtectedSubmitInfo - Structure indicating whether the submission is protected Valid Usage0VUID-VkProtectedSubmitInfo-protectedSubmit-018166 If the protected memory feature is not enabled, protectedSubmit must not be /Valid Usage (Implicit)&VUID-VkProtectedSubmitInfo-sType-sType sType must be  See Alsoq, vulkanVkPhysicalDeviceProtectedMemoryProperties - Structure describing protected memory properties that can be supported by an implementation DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.Valid Usage (Implicit)See Alsoq, vulkanVkPhysicalDeviceProtectedMemoryFeatures - Structure describing protected memory features that can be supported by an implementationMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkanVkDeviceQueueInfo2 - Structure specifying the parameters used for device queue creation DescriptionThe queue returned by @ must have the same flags value from this structure as that used at device creation time in a   instance. If no matching flags were specified at device creation time, then the handle returned in pQueue must be NULL.Valid Usage (Implicit)See Also', , @@vulkanflags is a '= value indicating the flags used to create the device queue.#VUID-VkDeviceQueueInfo2-flags-06225 flags must be equal to  ::flags for a  . structure for the queue family indicated by queueFamilyIndex when device was created'VUID-VkDeviceQueueInfo2-flags-parameter flags must be a valid combination of ' values@vulkanqueueFamilyIndex> is the index of the queue family to which the queue belongs..VUID-VkDeviceQueueInfo2-queueFamilyIndex-01842 queueFamilyIndex must3 be one of the queue family indices specified when device was created, via the   structure@vulkan queueIndex is the index within this queue family of the queue to retrieve.(VUID-VkDeviceQueueInfo2-queueIndex-01843  queueIndex must be less than  :: queueCount< for the corresponding queue family and flags indicated by queueFamilyIndex and flags when device was created@vulkanprotectedNoFault4 specifies the behavior of the implementation when  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-protected-access-rulesprotected memory access rules are broken. If protectedNoFault is /, breaking those rules will not result in process termination or device loss.@vulkan"extension-features-protectedMemory protectedMemory2 specifies whether protected memory is supported.@vulkanprotectedSubmit/ specifies whether the batch is protected. If protectedSubmit is /, the batch is protected. If protectedSubmit is /$, the batch is unprotected. If the <::pNext chain does not include this structure, the batch is unprotected.@vulkan4vkGetDeviceQueue2 - Get a queue handle from a deviceValid Usage (Implicit)See Also, , |@vulkandevice+ is the logical device that owns the queue.'VUID-vkGetDeviceQueue2-device-parameter device must be a valid  handlevulkan pQueueInfo is a pointer to a  structure, describing parameters of the device queue to be retrieved.+VUID-vkGetDeviceQueue2-pQueueInfo-parameter  pQueueInfo must be a valid pointer to a valid  structureM""""""""""""""""N@@@@@@@@@@  ''''))))))********@ @@@@@@@@@@@  ''''' *************M"""""""""""""""""""""""""""""""N)))))))))DNone( #$&'(./0289:<>?vulkanVkSamplerYcbcrConversion - Opaque handle to a device-specific sampler Y@CBCR conversion descriptionSee AlsoY, Y ,  , Y ,  vulkanVkDescriptorUpdateTemplate - Opaque handle to a descriptor update templateSee Also , J ,  , J ,  , J ,  (y1|111~1111111111111111111@@(@@111111111|1111111111~1y111qNone( #$&'(./0289:<>?' vulkanVkValidationCacheEXT - Opaque handle to a validation cache objectSee Also,  ,  ,  ,  vulkan4VkSwapchainKHR - Opaque handle to a swapchain object DescriptionA swapchain is an abstraction for an array of presentable images that are associated with a surface. The presentable images are represented by 4 objects created by the platform. One image (which can be an array image for multiview/stereoscopic-3D surfaces) is displayed at a time, but multiple images can be queued for presentation. An application renders to the image, and then queues the image for presentation to the surface.A native window cannot be associated with more than one non-retired swapchain at a time. Further, swapchains cannot be created for native windows that have a non-Vulkan graphics API surface associated with them.NoteThe presentation engine is an abstraction for the platform@s compositor or display engine.The presentation engine may be synchronous or asynchronous with respect to the application and/or logical device.Some implementations may use the device@s graphics queue or dedicated presentation hardware to perform presentation.The presentable images of a swapchain are owned by the presentation engine. An application can acquire use of a presentable image from the presentation engine. Use of a presentable image must- occur only after the image is returned by   , and before it is released by . This includes transitioning the image layout and rendering commands.An application can* acquire use of a presentable image with  . After acquiring a presentable image and before modifying it, the application must use a synchronization primitive to ensure that the presentation engine has finished reading from the image. The application can then transition the image@s layout, queue rendering commands to it, etc. Finally, the application presents the image with /, which releases the acquisition of the image.The presentation engine controls the order in which presentable images are acquired for use by the application.NoteThis allows the platform to handle situations which require out-of-order return of images after presentation. At the same time, it allows the application to generate command buffers referencing all of the images in the swapchain at initialization time, rather than in its main loop.See Also, , , , ,  ,  ,  , ,  ,  ,  ,  ,  ,  ,  ,  , s,  vulkan0VkSurfaceKHR - Opaque handle to a surface object DescriptionThe VK_KHR_surface extension declares the 1 object, and provides a function for destroying  objects. Separate platform-specific extensions each provide a function for creating a  object for the respective platform. From the application@s perspective this is an opaque handle, just like the handles of other Vulkan objects.See Also, ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  , ,  ,  ,  ,  , vulkanVkPrivateDataSlotEXT - Opaque handle to a private data slot objectSee Also ,  ,  ,  vulkanVkPerformanceConfigurationINTEL - Device configuration for performance queriesSee Also ,  ,  vulkanVkIndirectCommandsLayoutNV - Opaque handle to an indirect commands layout objectSee Also, ,  ,  vulkan9VkDisplayModeKHR - Opaque handle to a display mode objectSee Also, , ,  ,  vulkan0VkDisplayKHR - Opaque handle to a display objectSee Also, ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  vulkan-VkDeferredOperationKHR - A deferred operation DescriptionThis handle refers to a tracking structure which manages the execution state for a deferred command.See Also ,  ,  ,  ,  , ,  ,  ,  ,  vulkanVkDebugUtilsMessengerEXT - Opaque handle to a debug messenger object DescriptionThe debug messenger will provide detailed feedback on the application@s use of Vulkan when events of interest occur. When an event of interest does occur, the debug messenger will submit a debug message to the debug callback that was provided during its creation. Additionally, the debug messenger is responsible with filtering out debug messages that the callback is not interested in and will only provide desired debug messages.See Also ,  vulkanVkDebugReportCallbackEXT - Opaque handle to a debug report callback objectSee Also ,  vulkanVkAccelerationStructureNV - Opaque handle to an acceleration structure objectSee Also, , , ,  ,  ,  ,  ,  vulkanVkAccelerationStructureKHR - Opaque handle to an acceleration structure objectSee Also, , , , , ,  ,  ,  ,  w1x1y1z1|111}1~11111111111111111111111111@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@111111111|111111111111w11~1y1111x11}11z11@@None( #$&'(./0289:<>?:vulkanVkScreenSurfaceCreateInfoQNX - Structure specifying parameters of a newly created QNX Screen surface objectValid Usage (Implicit)See AlsoA, , AAvulkan7VkScreenSurfaceCreateFlagsQNX - Reserved for future use DescriptionA is a bitmask type for setting a mask, but is currently reserved for future use.See AlsoAvulkanflags is reserved for future use.3VUID-VkScreenSurfaceCreateInfoQNX-flags-zerobitmask flags must be 0Avulkancontext and window are QNX Screen context and window to associate the surface with./VUID-VkScreenSurfaceCreateInfoQNX-context-04741 context must point to a valid QNX Screen struct _screen_contextAvulkan.VUID-VkScreenSurfaceCreateInfoQNX-window-04742 window must point to a valid QNX Screen struct _screen_windowAvulkan%vkCreateScreenSurfaceQNX - Create a  object for a QNX Screen windowValid Usage (Implicit)0VUID-vkCreateScreenSurfaceQNX-instance-parameter instance must be a valid  handle3VUID-vkCreateScreenSurfaceQNX-pCreateInfo-parameter  pCreateInfo must be a valid pointer to a valid  structure2VUID-vkCreateScreenSurfaceQNX-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure0VUID-vkCreateScreenSurfaceQNX-pSurface-parameter pSurface must be a valid pointer to a  handle Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , AvulkanvkGetPhysicalDeviceScreenPresentationSupportQNX - Query physical device for presentation to QNX Screen Description This platform-specific function can( be called prior to creating a surface.Valid Usage (Implicit)See AlsoAvulkaninstance/ is the instance to associate the surface with.vulkan pCreateInfo is a pointer to a  structure containing parameters affecting the creation of the surface object.vulkan pAllocator is the allocator used for host memory allocated for the surface object when there is no more specific allocator available (see  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation).AvulkanphysicalDevice is the physical device.VUID-vkGetPhysicalDeviceScreenPresentationSupportQNX-physicalDevice-parameter physicalDevice must be a valid  handlevulkanqueueFamilyIndex is the queue family index.VUID-vkGetPhysicalDeviceScreenPresentationSupportQNX-queueFamilyIndex-04743 queueFamilyIndex must be less than pQueueFamilyPropertyCount returned by   for the given physicalDevicevulkanwindow is the QNX Screen window object.VUID-vkGetPhysicalDeviceScreenPresentationSupportQNX-window-parameter window must be a valid pointer to a  value@AAAAAAAAAAAAAAAAAAAAAAAAAA@None( #$&'(./0289:<>?_Bvulkan:vkAcquireWinrtDisplayNV - Acquire access to a VkDisplayKHR DescriptionAll permissions necessary to control the display are granted to the Vulkan instance associated with physicalDevice until the display is released or the application is terminated. Permission to access the display may be revoked by events that cause Windows 10 itself to lose access to display. If this has happened, operations which require access to the display must? fail with an appropriate error code. If permission to access display8 has already been acquired by another entity, the call must return the error code .Note+The Vulkan instance acquires control of a  https://docs.microsoft.com/en-us/uwp/api/windows.devices.display.core.displaytarget7@winrt::Windows::Devices::Display::Core::DisplayTarget@, by performing an operation equivalent to  https://docs.microsoft.com/en-us/uwp/api/windows.devices.display.core.displaymanager.tryacquiretarget@winrt::Windows::Devices::Display::Core::DisplayManager.TryAcquireTarget()@ on the @DisplayTarget@.NoteOne example of when Windows 10 loses access to a display is when the display is hot-unplugged.NoteOne example of when a display has already been acquired by another entity is when the Windows desktop compositor (DWM) is in control of the display. Beginning with Windows 10 version 2004 it is possible to cause DWM to release a display by using the @Advanced display settings@ sub-page of the @Display settings@ control panel. B does not itself cause DWM to release a display; this action must be performed outside of Vulkan. Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, BvulkanvkGetWinrtDisplayNV - Query the VkDisplayKHR corresponding to a WinRT DisplayTarget DescriptionIf there is no  corresponding to deviceRelativeId on physicalDevice,  must be returned in pDisplay. Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, BvulkanphysicalDevice' The physical device the display is on.5VUID-vkAcquireWinrtDisplayNV-physicalDevice-parameter physicalDevice must be a valid  handlevulkandisplay4 The display the caller wishes to control in Vulkan..VUID-vkAcquireWinrtDisplayNV-display-parameter display must be a valid  handle+VUID-vkAcquireWinrtDisplayNV-display-parent display must2 have been created, allocated, or retrieved from physicalDeviceBvulkanphysicalDevice; The physical device on which to query the display handle.1VUID-vkGetWinrtDisplayNV-physicalDevice-parameter physicalDevice must be a valid  handlevulkandeviceRelativeId The value of the  https://docs.microsoft.com/en-us/uwp/api/windows.devices.display.core.displaytarget.adapterrelativeid@AdapterRelativeId@ property of a  https://docs.microsoft.com/en-us/uwp/api/windows.devices.display.core.displaytarget@DisplayTarget@ that is enumerated by a  https://docs.microsoft.com/en-us/uwp/api/windows.devices.display.core.displayadapter@DisplayAdapter@ with an  https://docs.microsoft.com/en-us/uwp/api/windows.devices.display.core.displayadapter.id@Id@ property matching the  deviceLUID property of a Q for physicalDevice.@AAABBBBBABAA@None( #$&'(./0289:<>?vulkanVkViSurfaceCreateInfoNN - Structure specifying parameters of a newly created VI surface objectValid Usage (Implicit)See Also, B, BBvulkan2VkViSurfaceCreateFlagsNN - Reserved for future use DescriptionB is a bitmask type for setting a mask, but is currently reserved for future use.See AlsoBvulkanflags is reserved for future use..VUID-VkViSurfaceCreateInfoNN-flags-zerobitmask flags must be 0Bvulkanwindow is the nn::vi::NativeWindowHandle for the nn::vi::Layer% with which to associate the surface.)VUID-VkViSurfaceCreateInfoNN-window-01318 window must be a valid nn::vi::NativeWindowHandleBvulkanvkCreateViSurfaceNN - Create a  object for a VI layer Description=During the lifetime of a surface created using a particular nn::vi::NativeWindowHandle, applications must5 not attempt to create another surface for the same nn::vi::Layer$ or attempt to connect to the same nn::vi::Layer$ through other platform mechanisms.7If the native window is created with a specified size,  currentExtent will reflect that size. In this case, applications should use the same size for the swapchain@s  imageExtent. Otherwise, the  currentExtent will have the special value (0xFFFFFFFF, 0xFFFFFFFF), indicating that applications are expected to choose an appropriate size for the swapchain@s  imageExtent- (e.g., by matching the result of a call to nn::vi::GetDisplayResolution).Valid Usage (Implicit)+VUID-vkCreateViSurfaceNN-instance-parameter instance must be a valid  handle.VUID-vkCreateViSurfaceNN-pCreateInfo-parameter  pCreateInfo must be a valid pointer to a valid  structure-VUID-vkCreateViSurfaceNN-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure+VUID-vkCreateViSurfaceNN-pSurface-parameter pSurface must be a valid pointer to a  handle Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , Bvulkaninstance5 is the instance with which to associate the surface.vulkan pCreateInfo is a pointer to a  structure containing parameters affecting the creation of the surface object.vulkan pAllocator is the allocator used for host memory allocated for the surface object when there is no more specific allocator available (see  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation). @BBBBBBBBBB BBBBBBBBBB@None( #$&'(./0289:<>?vulkanVkMacOSSurfaceCreateInfoMVK - Structure specifying parameters of a newly created macOS surface object Valid Usage,VUID-VkMacOSSurfaceCreateInfoMVK-pView-04144 If pView is a  object, it must be a valid ,VUID-VkMacOSSurfaceCreateInfoMVK-pView-01317 If pView is an NSView object, it must be a valid NSView, must be backed by a CALayer object of type  , and B must be called on the main threadValid Usage (Implicit),VUID-VkMacOSSurfaceCreateInfoMVK-sType-sType sType must be  ,VUID-VkMacOSSurfaceCreateInfoMVK-pNext-pNext pNext must be NULL2VUID-VkMacOSSurfaceCreateInfoMVK-flags-zerobitmask flags must be 0See AlsoB, , BBvulkan6VkMacOSSurfaceCreateFlagsMVK - Reserved for future use DescriptionB is a bitmask type for setting a mask, but is currently reserved for future use.See AlsoBvulkanflags is reserved for future use.BvulkanpView is a reference to either a  object or an NSView object.BvulkanvkCreateMacOSSurfaceMVK - Create a VkSurfaceKHR object for a macOS NSView ParametersNoteThe B function is considered deprecated and has been superseded by   from the VK_EXT_metal_surface extension. Descriptioninstance5 is the instance with which to associate the surface. pCreateInfo is a pointer to a  structure containing parameters affecting the creation of the surface object. pAllocator is the allocator used for host memory allocated for the surface object when there is no more specific allocator available (see  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation).pSurface is a pointer to a = handle in which the created surface object is returned.Valid Usage (Implicit)/VUID-vkCreateMacOSSurfaceMVK-instance-parameter instance must be a valid  handle2VUID-vkCreateMacOSSurfaceMVK-pCreateInfo-parameter  pCreateInfo must be a valid pointer to a valid  structure1VUID-vkCreateMacOSSurfaceMVK-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure/VUID-vkCreateMacOSSurfaceMVK-pSurface-parameter pSurface must be a valid pointer to a  handle Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , ,  @BBBBBBBBBB BBBBBBBBBB@None( #$&'(./0289:<>?vulkanVkIOSSurfaceCreateInfoMVK - Structure specifying parameters of a newly created iOS surface object Valid Usage*VUID-VkIOSSurfaceCreateInfoMVK-pView-04143 If pView is a  object, it must be a valid *VUID-VkIOSSurfaceCreateInfoMVK-pView-01316 If pView is a UIView object, it must be a valid UIView, must be backed by a CALayer object of type  , and B must be called on the main threadValid Usage (Implicit)*VUID-VkIOSSurfaceCreateInfoMVK-sType-sType sType must be  *VUID-VkIOSSurfaceCreateInfoMVK-pNext-pNext pNext must be NULL0VUID-VkIOSSurfaceCreateInfoMVK-flags-zerobitmask flags must be 0See AlsoB, , BBvulkan4VkIOSSurfaceCreateFlagsMVK - Reserved for future use DescriptionB is a bitmask type for setting a mask, but is currently reserved for future use.See AlsoBvulkanflags is reserved for future use.BvulkanpView is a reference to either a  object or a UIView object.BvulkanvkCreateIOSSurfaceMVK - Create a VkSurfaceKHR object for an iOS UIView ParametersNoteThe B function is considered deprecated and has been superseded by   from the VK_EXT_metal_surface extension. Descriptioninstance5 is the instance with which to associate the surface. pCreateInfo is a pointer to a  structure containing parameters affecting the creation of the surface object. pAllocator is the allocator used for host memory allocated for the surface object when there is no more specific allocator available (see  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation).pSurface is a pointer to a = handle in which the created surface object is returned.Valid Usage (Implicit)-VUID-vkCreateIOSSurfaceMVK-instance-parameter instance must be a valid  handle0VUID-vkCreateIOSSurfaceMVK-pCreateInfo-parameter  pCreateInfo must be a valid pointer to a valid  structure/VUID-vkCreateIOSSurfaceMVK-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure-VUID-vkCreateIOSSurfaceMVK-pSurface-parameter pSurface must be a valid pointer to a  handle Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , ,  @BBBBBBBBBB BBBBBBBBBB@None( #$&'(./0289:<>?,vulkanVkXlibSurfaceCreateInfoKHR - Structure specifying parameters of a newly created Xlib surface objectValid Usage (Implicit)See Also, B, BBvulkan5VkXlibSurfaceCreateFlagsKHR - Reserved for future use DescriptionB is a bitmask type for setting a mask, but is currently reserved for future use.See AlsoBvulkanflags is reserved for future use.1VUID-VkXlibSurfaceCreateInfoKHR-flags-zerobitmask flags must be 0Bvulkandpy is a pointer to an Xlib  connection to the X server.)VUID-VkXlibSurfaceCreateInfoKHR-dpy-01313 dpy must point to a valid Xlib Bvulkanwindow is an Xlib B to associate the surface with.,VUID-VkXlibSurfaceCreateInfoKHR-window-01314 window must be a valid Xlib BBvulkan"vkCreateXlibSurfaceKHR - Create a > object for an X11 window, using the Xlib client-side libraryValid Usage (Implicit).VUID-vkCreateXlibSurfaceKHR-instance-parameter instance must be a valid  handle1VUID-vkCreateXlibSurfaceKHR-pCreateInfo-parameter  pCreateInfo must be a valid pointer to a valid  structure0VUID-vkCreateXlibSurfaceKHR-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure.VUID-vkCreateXlibSurfaceKHR-pSurface-parameter pSurface must be a valid pointer to a  handle Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , BvulkanvkGetPhysicalDeviceXlibPresentationSupportKHR - Query physical device for presentation to X11 server using Xlib Description This platform-specific function can( be called prior to creating a surface.Valid Usage (Implicit)See AlsoBvulkaninstance/ is the instance to associate the surface with.vulkan pCreateInfo is a pointer to a  structure containing the parameters affecting the creation of the surface object.vulkan pAllocator is the allocator used for host memory allocated for the surface object when there is no more specific allocator available (see  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation).BvulkanphysicalDevice is the physical device.VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-physicalDevice-parameter physicalDevice must be a valid  handlevulkanqueueFamilyIndex is the queue family index.VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-queueFamilyIndex-01315 queueFamilyIndex must be less than pQueueFamilyPropertyCount returned by   for the given physicalDevicevulkandpy is a pointer to an Xlib  connection to the server.VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-dpy-parameter dpy must be a valid pointer to a  value@BBBBBBBBBBBBBBBBBBBBBBBBBB@None( #$&'(./0289:<>?;vulkanVkXcbSurfaceCreateInfoKHR - Structure specifying parameters of a newly created Xcb surface objectValid Usage (Implicit)See Also, B, BBvulkan4VkXcbSurfaceCreateFlagsKHR - Reserved for future use DescriptionB is a bitmask type for setting a mask, but is currently reserved for future use.See AlsoBvulkanflags is reserved for future use.0VUID-VkXcbSurfaceCreateInfoKHR-flags-zerobitmask flags must be 0Bvulkan connection is a pointer to an xcb_connection_t to the X server./VUID-VkXcbSurfaceCreateInfoKHR-connection-01310  connection must point to a valid X11 xcb_connection_tBvulkanwindow is the  xcb_window_t3 for the X11 window to associate the surface with.+VUID-VkXcbSurfaceCreateInfoKHR-window-01311 window must be a valid X11  xcb_window_tBvulkan!vkCreateXcbSurfaceKHR - Create a < object for a X11 window, using the XCB client-side libraryValid Usage (Implicit)-VUID-vkCreateXcbSurfaceKHR-instance-parameter instance must be a valid  handle0VUID-vkCreateXcbSurfaceKHR-pCreateInfo-parameter  pCreateInfo must be a valid pointer to a valid  structure/VUID-vkCreateXcbSurfaceKHR-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure-VUID-vkCreateXcbSurfaceKHR-pSurface-parameter pSurface must be a valid pointer to a  handle Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , BvulkanvkGetPhysicalDeviceXcbPresentationSupportKHR - Query physical device for presentation to X11 server using XCB Description This platform-specific function can( be called prior to creating a surface.Valid Usage (Implicit)See AlsoBvulkaninstance/ is the instance to associate the surface with.vulkan pCreateInfo is a pointer to a  structure containing parameters affecting the creation of the surface object.vulkan pAllocator is the allocator used for host memory allocated for the surface object when there is no more specific allocator available (see  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation).BvulkanphysicalDevice is the physical device.VUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-physicalDevice-parameter physicalDevice must be a valid  handlevulkanqueueFamilyIndex is the queue family index.VUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-queueFamilyIndex-01312 queueFamilyIndex must be less than pQueueFamilyPropertyCount returned by   for the given physicalDevicevulkan connection is a pointer to an xcb_connection_t to the X server.VUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-connection-parameter  connection must be a valid pointer to an xcb_connection_t valuevulkan visual_id is an X11 visual (xcb_visualid_t).@BBBBBBBBBBBBBBBBBBBBBBBBBB@None( #$&'(./0289:<>?H$vulkanVkWin32SurfaceCreateInfoKHR - Structure specifying parameters of a newly created Win32 surface objectValid Usage (Implicit)See Also, C, CCvulkan6VkWin32SurfaceCreateFlagsKHR - Reserved for future use DescriptionC is a bitmask type for setting a mask, but is currently reserved for future use.See AlsoCvulkanflags is reserved for future use.2VUID-VkWin32SurfaceCreateInfoKHR-flags-zerobitmask flags must be 0Cvulkan hinstance is the Win32 B/ for the window to associate the surface with.0VUID-VkWin32SurfaceCreateInfoKHR-hinstance-01307  hinstance must be a valid Win32 BCvulkanhwnd is the Win32 B. for the window to associate the surface with.+VUID-VkWin32SurfaceCreateInfoKHR-hwnd-01308 hwnd must be a valid Win32 BCvulkan$vkCreateWin32SurfaceKHR - Create a " object for an Win32 native windowValid Usage (Implicit)/VUID-vkCreateWin32SurfaceKHR-instance-parameter instance must be a valid  handle2VUID-vkCreateWin32SurfaceKHR-pCreateInfo-parameter  pCreateInfo must be a valid pointer to a valid  structure1VUID-vkCreateWin32SurfaceKHR-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure/VUID-vkCreateWin32SurfaceKHR-pSurface-parameter pSurface must be a valid pointer to a  handle Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , CvulkanvkGetPhysicalDeviceWin32PresentationSupportKHR - query queue family support for presentation on a Win32 display Description This platform-specific function can( be called prior to creating a surface.Valid Usage (Implicit)See AlsoCvulkaninstance/ is the instance to associate the surface with.vulkan pCreateInfo is a pointer to a  structure containing parameters affecting the creation of the surface object.vulkan pAllocator is the allocator used for host memory allocated for the surface object when there is no more specific allocator available (see  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation).CvulkanphysicalDevice is the physical device.VUID-vkGetPhysicalDeviceWin32PresentationSupportKHR-physicalDevice-parameter physicalDevice must be a valid  handlevulkanqueueFamilyIndex is the queue family index.VUID-vkGetPhysicalDeviceWin32PresentationSupportKHR-queueFamilyIndex-01309 queueFamilyIndex must be less than pQueueFamilyPropertyCount returned by   for the given physicalDevice@CCCCBBCCCCCCCCCCCCCCCCCCCCBB@None( #$&'(./0289:<>?VGvulkanVkWaylandSurfaceCreateInfoKHR - Structure specifying parameters of a newly created Wayland surface objectValid Usage (Implicit)See Also, C, CCvulkan8VkWaylandSurfaceCreateFlagsKHR - Reserved for future use DescriptionC is a bitmask type for setting a mask, but is currently reserved for future use.See AlsoCvulkanflags is reserved for future use.4VUID-VkWaylandSurfaceCreateInfoKHR-flags-zerobitmask flags must be 0Cvulkandisplay and surface are pointers to the Wayland  wl_display and  wl_surface to associate the surface with.0VUID-VkWaylandSurfaceCreateInfoKHR-display-01304 display must point to a valid Wayland  wl_displayCvulkan0VUID-VkWaylandSurfaceCreateInfoKHR-surface-01305 surface must point to a valid Wayland  wl_surfaceCvulkan&vkCreateWaylandSurfaceKHR - Create a  object for a Wayland windowValid Usage (Implicit)1VUID-vkCreateWaylandSurfaceKHR-instance-parameter instance must be a valid  handle4VUID-vkCreateWaylandSurfaceKHR-pCreateInfo-parameter  pCreateInfo must be a valid pointer to a valid  structure3VUID-vkCreateWaylandSurfaceKHR-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure1VUID-vkCreateWaylandSurfaceKHR-pSurface-parameter pSurface must be a valid pointer to a  handle Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , CvulkanvkGetPhysicalDeviceWaylandPresentationSupportKHR - Query physical device for presentation to Wayland Description This platform-specific function can( be called prior to creating a surface.Valid Usage (Implicit)See AlsoCvulkaninstance/ is the instance to associate the surface with.vulkan pCreateInfo is a pointer to a  structure containing parameters affecting the creation of the surface object.vulkan pAllocator is the allocator used for host memory allocated for the surface object when there is no more specific allocator available (see  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation).CvulkanphysicalDevice is the physical device.VUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-physicalDevice-parameter physicalDevice must be a valid  handlevulkanqueueFamilyIndex is the queue family index.VUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-queueFamilyIndex-01306 queueFamilyIndex must be less than pQueueFamilyPropertyCount returned by   for the given physicalDevicevulkandisplay is a pointer to the  wl_display' associated with a Wayland compositor.VUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-display-parameter display must be a valid pointer to a  wl_display value@CCCCCCCCCCCCCCCCCCCCCCCCCC@None( #$&'(./0289:<>?:vulkanVUID-vkGetPhysicalDeviceSurfaceSupportKHR-pSupported-parameter  pSupported must be a valid pointer to a q value6VUID-vkGetPhysicalDeviceSurfaceSupportKHR-commonparent Both of physicalDevice, and surface must? have been created, allocated, or retrieved from the same  Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Alsoq, , CvulkanvkGetPhysicalDeviceSurfaceCapabilitiesKHR - Query surface capabilities Valid Usage, to indicate that not all the available modes were returned. Valid Usage?vulkanVkCopyCommandTransformInfoQCOM - Structure describing transform parameters of rotated copy commandValid Usage (Implicit)See Also, CDvulkan transform is a C/ value describing the transform to be applied.3VUID-VkCopyCommandTransformInfoQCOM-transform-04560  transform must be C, C, C, or CDDCCCCCCCCCCCCDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCNone( #$&'(./0289:<>?ɡvulkanVkRenderPassTransformBeginInfoQCOM - Structure describing transform parameters of a render pass instance Valid Usage7VUID-VkRenderPassTransformBeginInfoQCOM-transform-02871  transform must be C, C, C, or C3VUID-VkRenderPassTransformBeginInfoQCOM-flags-02872 The  renderpass must have been created with 7::flags containing Valid Usage (Implicit)3VUID-VkRenderPassTransformBeginInfoQCOM-sType-sType sType must be  See Also, CvulkanVkCommandBufferInheritanceRenderPassTransformInfoQCOM - Structure describing transformed render pass parameters command buffer DescriptionWhen the secondary is recorded to execute within a render pass instance using , the render pass transform parameters of the secondary command buffer must be consistent with the render pass transform parameters specified for the render pass instance. In particular, the  transform and  renderArea for command buffer must be identical to the  transform and  renderArea of the render pass instance.Valid Usage (Implicit)See Alsor, , CDvulkan transform is a C value describing the transform to be applied to the render pass.VUID-VkCommandBufferInheritanceRenderPassTransformInfoQCOM-transform-02864  transform must be C, C, C, or CDvulkan renderArea; is the render area that is affected by the command buffer.Dvulkan transform is a C value describing the transform to be applied to rasterization.DDDDDCCCCCCCCCCCCDDDD DDDDDDDDDCCCCCCCCCCCCCCCCCCCCCNone( #$&'(./0289:<>??vulkanVkDeviceGroupPresentModeFlagBitsKHR - Bitmask specifying supported device group present modesSee Also, vulkanVkSwapchainCreateInfoKHR - Structure specifying parameters of a newly created swapchain object Description Upon calling D with an  oldSwapchain that is not ,  oldSwapchain is retired@@@even if creation of the new swapchain fails. The new swapchain is created in the non-retired state whether or not  oldSwapchain is . Upon calling D with an  oldSwapchain that is not , any images from  oldSwapchain+ that are not acquired by the application may( be freed by the implementation, which may occur even if creation of the new swapchain fails. The application can destroy  oldSwapchain% to free all memory associated with  oldSwapchain.NoteMultiple retired swapchains can be associated with the same  through multiple uses of  oldSwapchain that outnumber calls to D.After  oldSwapchain is retired, the application can pass to D* any images it had already acquired from  oldSwapchain. E.g., an application may present an image from the old swapchain before an image from the new swapchain is ready to be presented. As usual, D may fail if  oldSwapchain# has entered a state that causes  to be returned.The application can; continue to use a shared presentable image obtained from  oldSwapchain until a presentable image is acquired from the new swapchain, as long as it has not entered a state that causes it to return . Valid Usage+VUID-VkSwapchainCreateInfoKHR-surface-01270 surface must be a surface that is supported by the device as determined using 1VUID-VkSwapchainCreateInfoKHR-minImageCount-01272  minImageCount must9 be less than or equal to the value returned in the  maxImageCount member of the ! structure returned by  & for the surface if the returned  maxImageCount is not zero/VUID-VkSwapchainCreateInfoKHR-presentMode-02839 If  presentMode is not C nor C , then  minImageCount must< be greater than or equal to the value returned in the  minImageCount member of the ! structure returned by   for the surface1VUID-VkSwapchainCreateInfoKHR-minImageCount-01383  minImageCount must be 1 if  presentMode is either C or C/VUID-VkSwapchainCreateInfoKHR-imageFormat-01273  imageFormat and imageColorSpace must match the format and  colorSpace0 members, respectively, of one of the  " structures returned by   for the surface/VUID-VkSwapchainCreateInfoKHR-imageExtent-01274  imageExtent must be between minImageExtent and maxImageExtent, inclusive, where minImageExtent and maxImageExtent are members of the ! structure returned by   for the surface/VUID-VkSwapchainCreateInfoKHR-imageExtent-01689  imageExtent members width and height must both be non-zero4VUID-VkSwapchainCreateInfoKHR-imageArrayLayers-01275 imageArrayLayers must be greater than 0$ and less than or equal to the maxImageArrayLayers member of the ! structure returned by   for the surface/VUID-VkSwapchainCreateInfoKHR-presentMode-01427 If  presentMode is C, C, C or C,  imageUsage must> be a subset of the supported usage flags present in the supportedUsageFlags member of the ! structure returned by   for surface.VUID-VkSwapchainCreateInfoKHR-imageUsage-01384 If  presentMode is C or C,  imageUsage must> be a subset of the supported usage flags present in the  sharedPresentSupportedUsageFlags member of the ! structure returned by   for surface4VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01277 If imageSharingMode is , pQueueFamilyIndices must( be a valid pointer to an array of queueFamilyIndexCount uint32_t values4VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01278 If imageSharingMode is , queueFamilyIndexCount must be greater than 14VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01428 If imageSharingMode is , each element of pQueueFamilyIndices must be unique and must be less than pQueueFamilyPropertyCount returned by either   or U  for the physicalDevice that was used to create device0VUID-VkSwapchainCreateInfoKHR-preTransform-01279  preTransform must# be one of the bits present in the supportedTransforms member of the ! structure returned by   for the surface2VUID-VkSwapchainCreateInfoKHR-compositeAlpha-01280 compositeAlpha must( be one of the bits present in the supportedCompositeAlpha member of the ! structure returned by   for the surface/VUID-VkSwapchainCreateInfoKHR-presentMode-01281  presentMode must be one of the  values returned by   for the surface7VUID-VkSwapchainCreateInfoKHR-physicalDeviceCount-014292 If the logical device was created with M::physicalDeviceCount equal to 1, flags must not contain D0VUID-VkSwapchainCreateInfoKHR-oldSwapchain-01933 If  oldSwapchain is not ,  oldSwapchain must be a non-retired swapchain associated with native window referred to by surface/VUID-VkSwapchainCreateInfoKHR-imageFormat-01778 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#swapchain-wsi-image-create-info!implied image creation parameters of the swapchain must" be supported as reported by  )VUID-VkSwapchainCreateInfoKHR-flags-03168 If flags contains D then the pNext chain must include a  structure with a viewFormatCount greater than zero and  pViewFormats must have an element equal to  imageFormat)VUID-VkSwapchainCreateInfoKHR-pNext-04099 If a $ structure was included in the pNext chain and ::viewFormatCount2 is not zero then all of the formats in :: pViewFormats must be compatible with the format as described in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibilitycompatibility table)VUID-VkSwapchainCreateInfoKHR-flags-04100 If flags does not contain D and the pNext chain include a  structure then ::viewFormatCount must be 0 or 1)VUID-VkSwapchainCreateInfoKHR-flags-03187 If flags contains D , then ::supportsProtected must be / in the ! structure returned by   for surface)VUID-VkSwapchainCreateInfoKHR-pNext-02679 If the pNext chain includes a  structure with its fullScreenExclusive member set to  , and surface was created using   , a  structure must be included in the pNext chainValid Usage (Implicit))VUID-VkSwapchainCreateInfoKHR-sType-sType sType must be  )VUID-VkSwapchainCreateInfoKHR-pNext-pNext Each pNext: member of any structure (including this one) in the pNext chain must be either NULL* or a pointer to a valid instance of , , , , , or *VUID-VkSwapchainCreateInfoKHR-sType-unique The sType" value of each struct in the pNext chain must be unique-VUID-VkSwapchainCreateInfoKHR-flags-parameter flags must be a valid combination of D values/VUID-VkSwapchainCreateInfoKHR-surface-parameter surface must be a valid  handle3VUID-VkSwapchainCreateInfoKHR-imageFormat-parameter  imageFormat must be a valid K value7VUID-VkSwapchainCreateInfoKHR-imageColorSpace-parameter imageColorSpace must be a valid C value2VUID-VkSwapchainCreateInfoKHR-imageUsage-parameter  imageUsage must be a valid combination of   values8VUID-VkSwapchainCreateInfoKHR-imageUsage-requiredbitmask  imageUsage must not be 08VUID-VkSwapchainCreateInfoKHR-imageSharingMode-parameter imageSharingMode must be a valid  value4VUID-VkSwapchainCreateInfoKHR-preTransform-parameter  preTransform must be a valid C value6VUID-VkSwapchainCreateInfoKHR-compositeAlpha-parameter compositeAlpha must be a valid C value3VUID-VkSwapchainCreateInfoKHR-presentMode-parameter  presentMode must be a valid  value4VUID-VkSwapchainCreateInfoKHR-oldSwapchain-parameter If  oldSwapchain is not ,  oldSwapchain must be a valid  handle1VUID-VkSwapchainCreateInfoKHR-oldSwapchain-parent If  oldSwapchain is a valid handle, it must6 have been created, allocated, or retrieved from surface*VUID-VkSwapchainCreateInfoKHR-commonparent Both of  oldSwapchain , and surface7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same 0See Alsoq, C, C, v, K, S, , , , , C, D, ,  , DvulkanVkPresentInfoKHR - Structure describing parameters of a queue presentation DescriptionBefore an application can& present an image, the image@s layout must be transitioned to the 1 layout, or for a shared presentable image the  layout.Note!When transitioning the image to  or , there is no need to delay subsequent processing, or perform any visibility operations (as D performs automatic visibility operations). To achieve this, the  dstAccessMask member of the 6 should be set to 0 , and the  dstStageMask parameter should be set to  . Valid Usage)VUID-VkPresentInfoKHR-pImageIndices-01430 Each element of  pImageIndices must be the index of a presentable image acquired from the swapchain specified by the corresponding element of the  pSwapchains, array, and the presented image subresource must be in the  or = layout at the time the operation is executed on a !VUID-VkPresentInfoKHR-pNext-06235 If a # structure is included in the pNext chain, and the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-presentId presentId# feature is not enabled, each  presentIds entry in that structure must be NULLValid Usage (Implicit)!VUID-VkPresentInfoKHR-sType-sType sType must be  !VUID-VkPresentInfoKHR-pNext-pNext Each pNext: member of any structure (including this one) in the pNext chain must be either NULL* or a pointer to a valid instance of , , , ,  , or "VUID-VkPresentInfoKHR-sType-unique The sType" value of each struct in the pNext chain must be unique/VUID-VkPresentInfoKHR-pWaitSemaphores-parameter If waitSemaphoreCount is not 0, pWaitSemaphores must( be a valid pointer to an array of waitSemaphoreCount valid x handles+VUID-VkPresentInfoKHR-pSwapchains-parameter  pSwapchains must( be a valid pointer to an array of swapchainCount valid  handles-VUID-VkPresentInfoKHR-pImageIndices-parameter  pImageIndices must# be a valid pointer to an array of swapchainCount uint32_t values(VUID-VkPresentInfoKHR-pResults-parameter If pResults is not NULL, pResults must( be a valid pointer to an array of swapchainCount a values0VUID-VkPresentInfoKHR-swapchainCount-arraylength swapchainCount must be greater than 0"VUID-VkPresentInfoKHR-commonparent Both of the elements of  pSwapchains, and the elements of pWaitSemaphores7 that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same 0See Alsoa, x, , , DvulkanVkImageSwapchainCreateInfoKHR - Specify that an image will be bound to swapchain memory Valid Usage2VUID-VkImageSwapchainCreateInfoKHR-swapchain-00995 If  swapchain is not , the fields of 1 must match the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#swapchain-wsi-image-create-info!implied image creation parameters of the swapchainValid Usage (Implicit).VUID-VkImageSwapchainCreateInfoKHR-sType-sType sType must be  6VUID-VkImageSwapchainCreateInfoKHR-swapchain-parameter If  swapchain is not ,  swapchain must be a valid  handleSee Also, vulkanVkDeviceGroupSwapchainCreateInfoKHR - Structure specifying parameters of a newly created swapchain object Description"If this structure is not present, modes is considered to be D.Valid Usage (Implicit)See Also, vulkanVkDeviceGroupPresentInfoKHR - Mode and mask controlling which physical devices' images are presented DescriptionIf mode is D, then each element of  pDeviceMasks selects which instance of the swapchain image is presented. Each element of  pDeviceMasks must have exactly one bit set, and the corresponding physical device must, have a presentation engine as reported by .If mode is D, then each element of  pDeviceMasks selects which instance of the swapchain image is presented. Each element of  pDeviceMasks must have exactly one bit set, and some physical device in the logical device must include that bit in its :: presentMask.If mode is D, then each element of  pDeviceMasks selects which instances of the swapchain image are component-wise summed and the sum of those images is presented. If the sum in any component is outside the representable range, the value of that component is undefined. Each element of  pDeviceMasks must have a value for which all set bits are set in one of the elements of :: presentMask.If mode is D, then each element of  pDeviceMasks selects which instance(s) of the swapchain images are presented. For each bit set in each element of  pDeviceMasks$, the corresponding physical device must, have a presentation engine as reported by .If  is not provided or swapchainCount. is zero then the masks are considered to be 1. If  is not provided, mode is considered to be D. Valid Usage5VUID-VkDeviceGroupPresentInfoKHR-swapchainCount-01297 swapchainCount must equal 0 or ::swapchainCount+VUID-VkDeviceGroupPresentInfoKHR-mode-01298 If mode is D, then each element of  pDeviceMasks must have exactly one bit set, and the corresponding element of :: presentMask must be non-zero+VUID-VkDeviceGroupPresentInfoKHR-mode-01299 If mode is D, then each element of  pDeviceMasks must have exactly one bit set, and some physical device in the logical device must include that bit in its :: presentMask+VUID-VkDeviceGroupPresentInfoKHR-mode-01300 If mode is D, then each element of  pDeviceMasks must have a value for which all set bits are set in one of the elements of :: presentMask+VUID-VkDeviceGroupPresentInfoKHR-mode-01301 If mode is D0, then for each bit set in each element of  pDeviceMasks$, the corresponding element of :: presentMask must be non-zero3VUID-VkDeviceGroupPresentInfoKHR-pDeviceMasks-01302# The value of each element of  pDeviceMasks must, be equal to the device mask passed in :: deviceMask, when the image index was last acquired+VUID-VkDeviceGroupPresentInfoKHR-mode-01303 mode must- have exactly one bit set, and that bit must have been included in ::modesValid Usage (Implicit),VUID-VkDeviceGroupPresentInfoKHR-sType-sType sType must be  7VUID-VkDeviceGroupPresentInfoKHR-pDeviceMasks-parameter If swapchainCount is not 0,  pDeviceMasks must( be a valid pointer to an array of swapchainCount uint32_t values/VUID-VkDeviceGroupPresentInfoKHR-mode-parameter mode must be a valid  valueSee Also, vulkanVkDeviceGroupPresentCapabilitiesKHR - Present capabilities from other physical devices Descriptionmodes always has D set.The present mode flags are also used when presenting an image, in ::mode.?If a device group only includes a single physical device, then modes must equal D.Valid Usage (Implicit)See Also, , EvulkanVkBindImageMemorySwapchainInfoKHR - Structure specifying swapchain image memory to bind to DescriptionIf  swapchain is not NULL, the  swapchain and  imageIndex are used to determine the memory that the image is bound to, instead of memory and  memoryOffset.Memory can% be bound to a swapchain and use the pDeviceIndices or pSplitInstanceBindRegions members of L. Valid Usage7VUID-VkBindImageMemorySwapchainInfoKHR-imageIndex-01644  imageIndex must& be less than the number of images in  swapchainValid Usage (Implicit)2VUID-VkBindImageMemorySwapchainInfoKHR-sType-sType sType must be  :VUID-VkBindImageMemorySwapchainInfoKHR-swapchain-parameter  swapchain must be a valid  handleHost SynchronizationHost access to  swapchain must be externally synchronizedSee Also, vulkanVkAcquireNextImageInfoKHR - Structure specifying parameters of the acquire DescriptionIf D is used, the device mask is considered to include all physical devices in the logical device.NoteE signals at most one semaphore, even if the application requests waiting for multiple physical devices to be ready via the  deviceMask). However, only a single physical device can wait on that semaphore, since the semaphore becomes unsignaled when the wait succeeds. For other physical devices to wait for the image to be ready, it is necessary for the application to submit semaphore signal operation(s) to that first physical device to signal additional semaphore(s) after the wait succeeds, which the other physical device(s) can wait upon. Valid Usage.VUID-VkAcquireNextImageInfoKHR-swapchain-01675  swapchain must! not be in the retired state.VUID-VkAcquireNextImageInfoKHR-semaphore-01288 If  semaphore is not  it must be unsignaled.VUID-VkAcquireNextImageInfoKHR-semaphore-01781 If  semaphore is not  it must not have any uncompleted signal or wait operations pending*VUID-VkAcquireNextImageInfoKHR-fence-01289 If fence is not  it must be unsignaled and must not be associated with any other queue command that has not yet completed execution on that queue.VUID-VkAcquireNextImageInfoKHR-semaphore-01782  semaphore and fence must not both be equal to /VUID-VkAcquireNextImageInfoKHR-deviceMask-01290  deviceMask must be a valid device mask/VUID-VkAcquireNextImageInfoKHR-deviceMask-01291  deviceMask must not be zero.VUID-VkAcquireNextImageInfoKHR-semaphore-03266  semaphore must have a   of  Valid Usage (Implicit)*VUID-VkAcquireNextImageInfoKHR-sType-sType sType must be  *VUID-VkAcquireNextImageInfoKHR-pNext-pNext pNext must be NULL2VUID-VkAcquireNextImageInfoKHR-swapchain-parameter  swapchain must be a valid  handle2VUID-VkAcquireNextImageInfoKHR-semaphore-parameter If  semaphore is not ,  semaphore must be a valid x handle.VUID-VkAcquireNextImageInfoKHR-fence-parameter If fence is not , fence must be a valid  handle+VUID-VkAcquireNextImageInfoKHR-commonparent Each of fence,  semaphore, and  swapchain7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  swapchain must be externally synchronizedHost access to  semaphore must be externally synchronizedHost access to fence must be externally synchronizedSee Also, x, , , EDvulkanVkSwapchainCreateFlagBitsKHR - Bitmask controlling swapchain creationSee AlsoDDvulkanmodes+ is a bitfield of modes that the swapchain can be used with.8VUID-VkDeviceGroupSwapchainCreateInfoKHR-modes-parameter modes must be a valid combination of  values>VUID-VkDeviceGroupSwapchainCreateInfoKHR-modes-requiredbitmask modes must not be 0Dvulkan pDeviceMasks is a pointer to an array of device masks, one for each element of ::pSwapchains.Dvulkanmode is a  value specifying the device group present mode that will be used for this present.Dvulkan swapchain< is a non-retired swapchain from which an image is acquired.Dvulkantimeout specifies how long the function waits, in nanoseconds, if no image is available.Dvulkan semaphore is  or a semaphore to signal.Dvulkanfence is  or a fence to signal.Dvulkan deviceMask is a mask of physical devices for which the swapchain image will be ready to use when the semaphore or fence is signaled.Dvulkan swapchain is  or a swapchain handle.Dvulkan imageIndex is an image index within  swapchain.Dvulkan swapchain is = or a handle of a swapchain that the image will be bound to.Dvulkan presentMask is an array of , uint32_t masks, where the mask at element i is non-zero if physical device i has a presentation engine, and where bit j is set in element i if physical device i can present swapchain images from physical device j. If element i is non-zero, then bit i must be set.Dvulkanmodes is a bitmask of  indicating which device group presentation modes are supported.DvulkanpNext is NULL6 or a pointer to a structure extending this structure.DvulkanpWaitSemaphores is NULL or a pointer to an array of x objects with waitSemaphoreCount entries, and specifies the semaphores to wait for before issuing the present request.Dvulkan pSwapchains is a pointer to an array of  objects with swapchainCount entries. A given swapchain must) not appear in this list more than once.Dvulkan pImageIndices is a pointer to an array of indices into the array of each swapchain@s presentable images, with swapchainCount entries. Each entry in this array identifies the image to present on the corresponding entry in the  pSwapchains array.DvulkanpResults is a pointer to an array of a typed elements with swapchainCount? entries. Applications that do not need per-swapchain results can use NULL for pResults . If non-NULL, each entry in pResults will be set to the a for presenting the swapchain corresponding to the same index in  pSwapchains.DvulkanpNext is NULL6 or a pointer to a structure extending this structure.Dvulkanflags is a bitmask of D2 indicating parameters of the swapchain creation.Dvulkansurface is the surface onto which the swapchain will present images. If the creation succeeds, the swapchain becomes associated with surface.Dvulkan minImageCount is the minimum number of presentable images that the application needs. The implementation will either create the swapchain with at least that many images, or it will fail to create the swapchain.Dvulkan imageFormat is a K value specifying the format the swapchain image(s) will be created with.DvulkanimageColorSpace is a C? value specifying the way the swapchain interprets image data.Dvulkan imageExtent is the size (in pixels) of the swapchain image(s). The behavior is platform-dependent if the image extent does not match the surface@s  currentExtent as returned by  .Note%On some platforms, it is normal that maxImageExtent may become (0, 0), for example when the window is minimized. In such a case, it is not possible to create a swapchain due to the Valid Usage requirements.DvulkanimageArrayLayers is the number of views in a multiview/stereo surface. For non-stereoscopic-3D applications, this value is 1.Dvulkan imageUsage is a bitmask of   describing the intended usage of the (acquired) swapchain images.DvulkanimageSharingMode= is the sharing mode used for the image(s) of the swapchain.DvulkanpQueueFamilyIndices is a pointer to an array of queue family indices having access to the images(s) of the swapchain when imageSharingMode is .Dvulkan preTransform is a C value describing the transform, relative to the presentation engine@s natural orientation, applied to the image content prior to presentation. If it does not match the currentTransform value returned by  , the presentation engine will transform the image content as part of the presentation operation.DvulkancompositeAlpha is a C value indicating the alpha compositing mode to use when this surface is composited together with other surfaces on certain window systems.Dvulkan presentMode is the presentation mode the swapchain will use. A swapchain@s present mode determines how incoming present requests will be processed and queued internally.Dvulkanclipped specifies whether the Vulkan implementation is allowed to discard rendering operations that affect regions of the surface that are not visible. If set to /<, the presentable images associated with the swapchain may not own all of their pixels. Pixels in the presentable images that correspond to regions of the target surface obscured by another window on the desktop, or subject to some other clipping mechanism will have undefined content when read back. Fragment shaders may not execute for these pixels, and thus any side effects they would have had will not occur. Setting / does not guarantee any clipping will occur, but allows more efficient presentation methods to be used on some platforms. If set to /, presentable images associated with the swapchain will own all of the pixels they contain.Note Applications should set this value to / if they do not expect to read back the content of presentable images before presenting them or after reacquiring them, and if their fragment shaders do not have any side effects that require them to run for all pixels in the presentable image.Dvulkan oldSwapchain is , or the existing non-retired swapchain currently associated with surface. Providing a valid  oldSwapchain may aid in the resource reuse, and also allows the application to still present any images that are already acquired from it.DvulkanD specifies that images created from the swapchain are protected images.DvulkanD specifies that images created from the swapchain (i.e. with the  swapchain member of ! set to this swapchain@s handle) must use .DvulkanD- specifies that the images of the swapchain can be used to create a 0 with a different format than what the swapchain was created with. The list of allowed image view formats is specified by adding a  structure to the pNext chain of <. In addition, this flag also specifies that the swapchain can be created with usage flags that are not supported for the format the swapchain is created with but are supported for at least one of the allowed image view formats.DvulkanD specifies that multiple physical devices with a presentation engine can* each present their own swapchain images.DvulkanD specifies that any physical device with a presentation engine can present the sum of swapchain images from any physical devices in its  presentMask.DvulkanD specifies that any physical device with a presentation engine can; present swapchain images from any physical device in its  presentMask.DvulkanD specifies that any physical device with a presentation engine can# present its own swapchain images.Dvulkan)vkCreateSwapchainKHR - Create a swapchain DescriptionIf the  oldSwapchain parameter of  pCreateInfo is a valid swapchain, which has exclusive full-screen access, that access is released from  oldSwapchain. If the command succeeds in this case, the newly created swapchain will automatically acquire exclusive full-screen access from  oldSwapchain.NoteThis implicit transfer is intended to avoid exiting and entering full-screen exclusive mode, which may otherwise cause unwanted visual updates to the display."In some cases, swapchain creation may fail if exclusive full-screen mode is requested for application control, but for some implementation-specific reason exclusive full-screen access is unavailable for the particular combination of parameters provided. If this occurs,  will be returned.Note#In particular, it will fail if the  imageExtent member of  pCreateInfo does not match the extents of the monitor. Other reasons for failure may include the app not being set as high-dpi aware, or if the physical device and monitor are not compatible in this mode. When the  in ! is a display surface, then the q  in display surface@s " is associated with a particular q . Swapchain creation may fail if that q 8 is not acquired by the application. In this scenario  is returned.Valid Usage (Implicit)*VUID-vkCreateSwapchainKHR-device-parameter device must be a valid  handle/VUID-vkCreateSwapchainKHR-pCreateInfo-parameter  pCreateInfo must be a valid pointer to a valid  structure.VUID-vkCreateSwapchainKHR-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure.VUID-vkCreateSwapchainKHR-pSwapchain-parameter  pSwapchain must be a valid pointer to a  handleHost SynchronizationHost access to pCreateInfo->surface must be externally synchronizedHost access to pCreateInfo->oldSwapchain must be externally synchronized Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , Dvulkan=A convenience wrapper to make a compatible pair of calls to D and DTo ensure that D is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.Dvulkan2vkDestroySwapchainKHR - Destroy a swapchain object DescriptionThe application must not destroy a swapchain until after completion of all outstanding operations on images that were acquired from the swapchain.  swapchain and all associated  handles are destroyed, and must not be acquired or used any more by the application. The memory of each  will only be freed after that image is no longer used by the presentation engine. For example, if one image of the swapchain is being displayed in a window, the memory for that image may not be freed until the window is destroyed, or another swapchain is created for the window. Destroying the swapchain does not invalidate the parent , and a new swapchain can be created with it.When a swapchain associated with a display surface is destroyed, if the image most recently presented to the display surface is from the swapchain being destroyed, then either any display resources modified by presenting images from any swapchain associated with the display surface must be reverted by the implementation to their state prior to the first present performed on one of these swapchains, or such resources must be left in their current state.If  swapchain has exclusive full-screen access, it is released before the swapchain is destroyed. Valid Usage*VUID-vkDestroySwapchainKHR-swapchain-012823 All uses of presentable images acquired from  swapchain must have completed execution*VUID-vkDestroySwapchainKHR-swapchain-01283 If  were provided when  swapchain1 was created, a compatible set of callbacks must be provided here*VUID-vkDestroySwapchainKHR-swapchain-01284 If no  were provided when  swapchain was created,  pAllocator must be NULLValid Usage (Implicit)+VUID-vkDestroySwapchainKHR-device-parameter device must be a valid  handle.VUID-vkDestroySwapchainKHR-swapchain-parameter If  swapchain is not ,  swapchain must be a valid  handle/VUID-vkDestroySwapchainKHR-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure'VUID-vkDestroySwapchainKHR-commonparent Both of device , and  swapchain2 that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  swapchain must be externally synchronizedSee Also, , DvulkanvkGetSwapchainImagesKHR - Obtain the array of presentable images associated with a swapchain DescriptionIf pSwapchainImages is NULL-, then the number of presentable images for  swapchain is returned in pSwapchainImageCount. Otherwise, pSwapchainImageCount must point to a variable set by the user to the number of elements in the pSwapchainImages array, and on return the variable is overwritten with the number of structures actually written to pSwapchainImages. If the value of pSwapchainImageCount4 is less than the number of presentable images for  swapchain , at most pSwapchainImageCount" structures will be written, and  will be returned instead of , to indicate that not all the available presentable images were returned.Valid Usage (Implicit)-VUID-vkGetSwapchainImagesKHR-device-parameter device must be a valid  handle0VUID-vkGetSwapchainImagesKHR-swapchain-parameter  swapchain must be a valid  handle;VUID-vkGetSwapchainImagesKHR-pSwapchainImageCount-parameter pSwapchainImageCount must be a valid pointer to a uint32_t value7VUID-vkGetSwapchainImagesKHR-pSwapchainImages-parameter! If the value referenced by pSwapchainImageCount is not 0 , and pSwapchainImages is not NULL, pSwapchainImages must( be a valid pointer to an array of pSwapchainImageCount  handles)VUID-vkGetSwapchainImagesKHR-commonparent Both of device , and  swapchain must? have been created, allocated, or retrieved from the same 0 Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , DvulkanvkAcquireNextImageKHR - Retrieve the index of the next available presentable image Valid Usage*VUID-vkAcquireNextImageKHR-swapchain-01285  swapchain must! not be in the retired state*VUID-vkAcquireNextImageKHR-semaphore-01286 If  semaphore is not  it must be unsignaled*VUID-vkAcquireNextImageKHR-semaphore-01779 If  semaphore is not  it must not have any uncompleted signal or wait operations pending&VUID-vkAcquireNextImageKHR-fence-01287 If fence is not  it must be unsignaled and must not be associated with any other queue command that has not yet completed execution on that queue*VUID-vkAcquireNextImageKHR-semaphore-01780  semaphore and fence must not both be equal to *VUID-vkAcquireNextImageKHR-swapchain-01802 If the number of currently acquired images is greater than the difference between the number of images in  swapchain and the value of :: minImageCount$ as returned by a call to   with the surface used to create  swapchain, timeout must not be  UINT64_MAX*VUID-vkAcquireNextImageKHR-semaphore-03265  semaphore must have a   of  Valid Usage (Implicit)+VUID-vkAcquireNextImageKHR-device-parameter device must be a valid  handle.VUID-vkAcquireNextImageKHR-swapchain-parameter  swapchain must be a valid  handle.VUID-vkAcquireNextImageKHR-semaphore-parameter If  semaphore is not ,  semaphore must be a valid x handle*VUID-vkAcquireNextImageKHR-fence-parameter If fence is not , fence must be a valid  handle0VUID-vkAcquireNextImageKHR-pImageIndex-parameter  pImageIndex must be a valid pointer to a uint32_t value+VUID-vkAcquireNextImageKHR-semaphore-parent If  semaphore is a valid handle, it must6 have been created, allocated, or retrieved from device'VUID-vkAcquireNextImageKHR-fence-parent If fence is a valid handle, it must6 have been created, allocated, or retrieved from device'VUID-vkAcquireNextImageKHR-commonparent Both of device , and  swapchain2 that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  swapchain must be externally synchronizedHost access to  semaphore must be externally synchronizedHost access to fence must be externally synchronized Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , x, Dvulkan A variant of D which makes a *safe* FFI callDvulkan3vkQueuePresentKHR - Queue an image for presentation DescriptionNoteThere is no requirement for an application to present images in the same order that they were acquired - applications can arbitrarily present any image that is currently acquired. Valid Usage(VUID-vkQueuePresentKHR-pSwapchains-01292 Each element of  pSwapchains member of  pPresentInfo must be a swapchain that is created for a surface for which presentation is supported from queue$ as determined using a call to (VUID-vkQueuePresentKHR-pSwapchains-01293! If more than one member of  pSwapchains was created from a display surface, all display surfaces referenced that refer to the same display must use the same display mode,VUID-vkQueuePresentKHR-pWaitSemaphores-01294 When a semaphore wait operation referring to a binary semaphore defined by the elements of the pWaitSemaphores member of  pPresentInfo executes on queue , there must1 be no other queues waiting on the same semaphore,VUID-vkQueuePresentKHR-pWaitSemaphores-01295 All elements of the pWaitSemaphores member of  pPresentInfo must4 be semaphores that are signaled, or have  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signalingsemaphore signal operations( previously submitted for execution,VUID-vkQueuePresentKHR-pWaitSemaphores-03267 All elements of the pWaitSemaphores member of  pPresentInfo must be created with a   of  ,VUID-vkQueuePresentKHR-pWaitSemaphores-03268 All elements of the pWaitSemaphores member of  pPresentInfo must reference a semaphore signal operation that has been submitted for execution and any semaphore signal operations on which it depends (if any) must, have also been submitted for execution;Any writes to memory backing the images referenced by the  pImageIndices and  pSwapchains members of  pPresentInfo, that are available before D is executed, are automatically made visible to the read access performed by the presentation engine. This automatic visibility operation for an image happens-after the semaphore signal operation, and happens-before the presentation engine accesses the image.4Queueing an image for presentation defines a set of queue operations, including waiting on the semaphores and submitting a presentation request to the presentation engine. However, the scope of this set of queue operations does not include the actual processing of the image by the presentation engine.NoteThe origin of the native orientation of the surface coordinate system is not specified in the Vulkan specification; it depends on the platform. For most platforms the origin is by default upper-left, meaning the pixel of the presented  at coordinates (0,0) would appear at the upper left pixel of the platform surface (assuming C., and the display standing the right way up).If D fails to enqueue the corresponding set of queue operations, it may return  or ". If it does, the implementation must ensure that the state and contents of any resources or synchronization primitives referenced is unaffected by the call or its failure.If D fails in such a way that the implementation is unable to make that guarantee, the implementation must return .However, if the presentation request is rejected by the presentation engine with an error , , or , the set of queue operations are still considered to be enqueued and thus any semaphore wait operation specified in  will execute when the corresponding queue operation is complete. Calls to D may block, but must return in finite time.If any  swapchain member of  pPresentInfo was created with ,  will be returned if that swapchain does not have exclusive full-screen access, possibly for implementation-specific reasons outside of the application@s control.Valid Usage (Implicit)&VUID-vkQueuePresentKHR-queue-parameter queue must be a valid | handle-VUID-vkQueuePresentKHR-pPresentInfo-parameter  pPresentInfo must be a valid pointer to a valid  structureHost SynchronizationHost access to queue must be externally synchronizedHost access to pPresentInfo->pWaitSemaphores[] must be externally synchronizedHost access to pPresentInfo->pSwapchains[] must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types--Any Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, |EvulkanvkGetDeviceGroupPresentCapabilitiesKHR - Query present capabilities from other physical devices Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, EvulkanvkGetDeviceGroupSurfacePresentModesKHR - Query present capabilities for a surface Description:The modes returned by this command are not invariant, and may change in response to the surface being moved, resized, or occluded. These modes must' be a subset of the modes returned by E. Valid Usage9VUID-vkGetDeviceGroupSurfacePresentModesKHR-surface-06212 surface must; be supported by all physical devices associated with device, as reported by 2 or an equivalent platform-specific mechanismValid Usage (Implicit)VUID-vkGetPhysicalDevicePresentRectanglesKHR-surface-parameter surface must be a valid  handleVUID-vkGetPhysicalDevicePresentRectanglesKHR-pRectCount-parameter  pRectCount must be a valid pointer to a uint32_t value=VUID-vkGetPhysicalDevicePresentRectanglesKHR-pRects-parameter! If the value referenced by  pRectCount is not 0, and pRects is not NULL, pRects must( be a valid pointer to an array of  pRectCount r structures9VUID-vkGetPhysicalDevicePresentRectanglesKHR-commonparent Both of physicalDevice, and surface must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to surface must be externally synchronized Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, r,  Dvulkandevice+ is the device to create the swapchain for.vulkan pCreateInfo is a pointer to a ? structure specifying the parameters of the created swapchain.vulkan pAllocator is the allocator used for host memory allocated for the swapchain object when there is no more specific allocator available (see  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation).Dvulkandevice is the  associated with  swapchain.vulkan swapchain is the swapchain to destroy.vulkan pAllocator is the allocator used for host memory allocated for the swapchain object when there is no more specific allocator available (see  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation).Dvulkandevice is the device associated with  swapchain.vulkan swapchain is the swapchain to query.Dvulkandevice is the device associated with  swapchain.vulkan swapchain is the non-retired swapchain from which an image is being acquired.vulkantimeout specifies how long the function waits, in nanoseconds, if no image is available.vulkan semaphore is  or a semaphore to signal.vulkanfence is  or a fence to signal.Dvulkandevice is the device associated with  swapchain.vulkan swapchain is the non-retired swapchain from which an image is being acquired.vulkantimeout specifies how long the function waits, in nanoseconds, if no image is available.vulkan semaphore is  or a semaphore to signal.vulkanfence is  or a fence to signal.Dvulkanqueue is a queue that is capable of presentation to the target surface@s platform on the same device as the image@s swapchain.vulkan pPresentInfo is a pointer to a 6 structure specifying parameters of the presentation.Evulkandevice is the logical device.? DDDDDDEEEE EEEEDDDDDDDDDNone( #$&'(./0289:<>?.CCCCCCCCCCCCCCCCCCEEEEE'EEEEECCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCNone( #$&'(./0289:<>?TvulkanVkSharedPresentSurfaceCapabilitiesKHR - structure describing capabilities of a surface for shared presentationValid Usage (Implicit)See AlsoS, Evulkan sharedPresentSupportedUsageFlags is a bitmask of  ( representing the ways the application can use the shared presentable image from a swapchain created with  set to C or C, for the surface on the specified device.   must, be included in the set but implementations may support additional usages.Evulkan2vkGetSwapchainStatusKHR - Get a swapchain@s statusValid Usage (Implicit)-VUID-vkGetSwapchainStatusKHR-device-parameter device must be a valid  handle0VUID-vkGetSwapchainStatusKHR-swapchain-parameter  swapchain must be a valid  handle)VUID-vkGetSwapchainStatusKHR-commonparent Both of device , and  swapchain must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  swapchain must be externally synchronized Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, Evulkandevice is the device associated with  swapchain.vulkan swapchain is the swapchain to query.@EECCCCCCCEEEEEEEEEEEE@CCCCCCCCCCCCCNone( #$&'(./0289:<>?ɕvulkanVkPhysicalDevicePresentWaitFeaturesKHR - Structure indicating support for present waitMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, Evulkanfeatures-presentWait  presentWait- indicates that the implementation supports E.Evulkan+vkWaitForPresentKHR - Wait for presentation DescriptionE) waits for the presentId associated with  swapchain; to be increased in value so that it is at least equal to  presentId.For  (or other present mode where images may be replaced in the presentation queue) any wait of this type associated with such an image must be signaled no later than a wait associated with the replacing image would be signaled.When the presentation has completed, the presentId associated with the related  pSwapChains entry will be increased in value so that it is at least equal to the value provided in the  structure.There is no requirement for any precise timing relationship between the presentation of the image to the user and the update of the presentId value, but implementations should make this as close as possible to the presentation of the first pixel in the new image to the user. The call to E8 will block until either the presentId associated with  swapchain is greater than or equal to  presentId, or timeout nanoseconds passes. When the swapchain becomes OUT_OF_DATE, the call will either return  (if the image was delivered to the presentation engine and may have been presented to the user) or will return early with status / (if the image was not presented to the user).As an exception to the normal rules for objects which are externally synchronized, the  swapchain passed to E may be simultaneously used by other threads in calls to functions other than  ?. Access to the swapchain data associated with this extension must& be atomic within the implementation. Valid Usage(VUID-vkWaitForPresentKHR-swapchain-04997  swapchain must! not be in the retired state*VUID-vkWaitForPresentKHR-presentWait-06234 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-presentWait presentWait feature must be enabledValid Usage (Implicit))VUID-vkWaitForPresentKHR-device-parameter device must be a valid  handle,VUID-vkWaitForPresentKHR-swapchain-parameter  swapchain must be a valid  handle%VUID-vkWaitForPresentKHR-commonparent Both of device , and  swapchain must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  swapchain must be externally synchronized Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, Evulkan A variant of E which makes a *safe* FFI callEvulkandevice is the device associated with  swapchain.vulkan swapchain is the non-retired swapchain on which an image was queued for presentation.vulkan presentId+ is the presentation presentId to wait for.vulkantimeout0 is the timeout period in units of nanoseconds. timeout is adjusted to the closest value allowed by the implementation-dependent timeout accuracy, which may3 be substantially longer than one nanosecond, and may% be longer than the requested period.Evulkandevice is the device associated with  swapchain.vulkan swapchain is the non-retired swapchain on which an image was queued for presentation.vulkan presentId+ is the presentation presentId to wait for.vulkantimeout0 is the timeout period in units of nanoseconds. timeout is adjusted to the closest value allowed by the implementation-dependent timeout accuracy, which may3 be substantially longer than one nanosecond, and may% be longer than the requested period. @EEEEEEEE EEEEEEEE@None( #$&'(./0289:<>? vulkanVkSurfaceFormat2KHR - Structure describing a supported swapchain format tupleValid Usage (Implicit)See Also, , EvulkanVkSurfaceCapabilities2KHR - Structure describing capabilities of a surfaceValid Usage (Implicit)*VUID-VkSurfaceCapabilities2KHR-sType-sType sType must be  *VUID-VkSurfaceCapabilities2KHR-pNext-pNext Each pNext: member of any structure (including this one) in the pNext chain must be either NULL* or a pointer to a valid instance of , , , or +VUID-VkSurfaceCapabilities2KHR-sType-unique The sType" value of each struct in the pNext chain must be uniqueSee Also, , EvulkanVkPhysicalDeviceSurfaceInfo2KHR - Structure specifying a surface and related swapchain creation parameters DescriptionThe members of " correspond to the arguments to  , with sType and pNext added for extensibility.%Additional capabilities of a surface may be available to swapchains created with different full-screen exclusive settings - particularly if exclusive full-screen access is application controlled. These additional capabilities can be queried by adding a  structure to the pNext chain of this structure when used to query surface properties. Additionally, for Win32 surfaces with application controlled exclusive full-screen access, chaining a  structure may also report additional surface capabilities. These additional capabilities only apply to swapchains created with the same parameters included in the pNext chain of . Valid Usage0VUID-VkPhysicalDeviceSurfaceInfo2KHR-pNext-02672 If the pNext chain includes a  structure with its fullScreenExclusive member set to  , and surface was created using   , a  structure must be included in the pNext chainValid Usage (Implicit)0VUID-VkPhysicalDeviceSurfaceInfo2KHR-sType-sType sType must be  0VUID-VkPhysicalDeviceSurfaceInfo2KHR-pNext-pNext Each pNext: member of any structure (including this one) in the pNext chain must be either NULL* or a pointer to a valid instance of  or 1VUID-VkPhysicalDeviceSurfaceInfo2KHR-sType-unique The sType" value of each struct in the pNext chain must be unique6VUID-VkPhysicalDeviceSurfaceInfo2KHR-surface-parameter surface must be a valid  handleSee Also, ,  , E, E,  Evulkan surfaceFormat is a  structure describing a format-color space pair that is compatible with the specified surface.EvulkanpNext is NULL6 or a pointer to a structure extending this structure.EvulkansurfaceCapabilities is a  structure describing the capabilities of the specified surface.EvulkanpNext is NULL6 or a pointer to a structure extending this structure.Evulkansurface; is the surface that will be associated with the swapchain.EvulkanvkGetPhysicalDeviceSurfaceCapabilities2KHR - Reports capabilities of a surface on a physical device DescriptionE behaves similarly to  , with the ability to specify extended inputs via chained input structures, and to return extended information via chained output structures. Valid UsageVUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pSurfaceInfo-06210 pSurfaceInfo->surface must be supported by physicalDevice, as reported by 2 or an equivalent platform-specific mechanism;VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pNext-02671 If a # structure is included in the pNext chain of pSurfaceCapabilities , a  structure must be included in the pNext chain of  pSurfaceInfoValid Usage (Implicit)VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-physicalDevice-parameter physicalDevice must be a valid  handleVUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pSurfaceInfo-parameter  pSurfaceInfo must$ be a valid pointer to a valid  structureVUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pSurfaceCapabilities-parameter pSurfaceCapabilities must be a valid pointer to a  structure Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , EvulkanvkGetPhysicalDeviceSurfaceFormats2KHR - Query color formats supported by surface DescriptionE behaves similarly to  ', with the ability to be extended via pNext chains.If pSurfaceFormats is NULL<, then the number of format tuples supported for the given surface is returned in pSurfaceFormatCount. Otherwise, pSurfaceFormatCount must point to a variable set by the user to the number of elements in the pSurfaceFormats array, and on return the variable is overwritten with the number of structures actually written to pSurfaceFormats. If the value of pSurfaceFormatCount> is less than the number of format tuples supported, at most pSurfaceFormatCount" structures will be written, and  will be returned instead of ?, to indicate that not all the available values were returned. Valid Usage=VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceInfo-06210 pSurfaceInfo->surface must be supported by physicalDevice, as reported by 2 or an equivalent platform-specific mechanismValid Usage (Implicit)VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-physicalDevice-parameter physicalDevice must be a valid  handleVUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceInfo-parameter  pSurfaceInfo must$ be a valid pointer to a valid  structureVUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceFormatCount-parameter pSurfaceFormatCount must be a valid pointer to a uint32_t valueVUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceFormats-parameter! If the value referenced by pSurfaceFormatCount is not 0 , and pSurfaceFormats is not NULL, pSurfaceFormats must( be a valid pointer to an array of pSurfaceFormatCount  structures Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , EvulkanphysicalDevice is the physical device that will be associated with the swapchain to be created, as described for .vulkan pSurfaceInfo is a pointer to a  structure describing the surface and other fixed parameters that would be consumed by .EvulkanphysicalDevice is the physical device that will be associated with the swapchain to be created, as described for .vulkan pSurfaceInfo is a pointer to a  structure describing the surface and other fixed parameters that would be consumed by .@EEEEEEEECCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCEEEEEEEEEEEEEEEEEEEE@CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCNone( #$&'(./0289:<>?vulkanVkDisplayPresentInfoKHR - Structure describing parameters of a queue presentation to a swapchain DescriptionIf the extent of the srcRect and dstRect are not equal, the presented pixels will be scaled accordingly. Valid Usage*VUID-VkDisplayPresentInfoKHR-srcRect-01257 srcRect must specify a rectangular region that is a subset of the image being presented*VUID-VkDisplayPresentInfoKHR-dstRect-01258 dstRect must; specify a rectangular region that is a subset of the  visibleRegion parameter of the display mode the swapchain being presented uses4VUID-VkDisplayPresentInfoKHR-persistentContent-01259 If the persistentContent member of the ! structure returned by  < for the display the present operation targets is /, then  persistent must be /Valid Usage (Implicit)(VUID-VkDisplayPresentInfoKHR-sType-sType sType must be  See Alsoq, r, FvulkansrcRect2 is a rectangular region of pixels to present. It must/ be a subset of the image being presented. If  is not specified, this region will be assumed to be the entire presentable image.FvulkandstRect is a rectangular region within the visible region of the swapchain@s display mode. If  is not specified, this region will be assumed to be the entire visible region of the swapchain@s mode. If the specified rectangle is a subset of the display mode@s visible region, content from display planes below the swapchain@s plane will be visible outside the rectangle. If there are no planes below the swapchain@s, the area outside the specified rectangle will be black. If portions of the specified rectangle are outside of the display@s visible region, pixels mapping only to those portions of the rectangle will be discarded.Fvulkan persistent : If this is /, the display engine will enable buffered mode on displays that support it. This allows the display engine to stop sending content to the display until a new image is presented. The display will instead maintain a copy of the last presented image. This allows less power to be used, but may# increase presentation latency. If 5 is not specified, persistent mode will not be used.FvulkanvkCreateSharedSwapchainsKHR - Create multiple swapchains that share presentable images DescriptionF is similar to %, except that it takes an array of 8 structures, and returns an array of swapchain objects.The swapchain creation parameters that affect the properties and number of presentable images must match between all the swapchains. If the displays used by any of the swapchains do not use the same presentable image layout or are incompatible in a way that prevents sharing images, swapchain creation will fail with the result code . If any error occurs, no swapchains will be created. Images presented to multiple swapchains must be re-acquired from all of them before transitioning away from . After destroying one or more of the swapchains, the remaining swapchains and the presentable images can continue to be used.Valid Usage (Implicit)1VUID-vkCreateSharedSwapchainsKHR-device-parameter device must be a valid  handle7VUID-vkCreateSharedSwapchainsKHR-pCreateInfos-parameter  pCreateInfos must( be a valid pointer to an array of swapchainCount valid  structures5VUID-vkCreateSharedSwapchainsKHR-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure6VUID-vkCreateSharedSwapchainsKHR-pSwapchains-parameter  pSwapchains must( be a valid pointer to an array of swapchainCount  handles;VUID-vkCreateSharedSwapchainsKHR-swapchainCount-arraylength swapchainCount must be greater than 0Host SynchronizationHost access to  pCreateInfos [].surface must be externally synchronizedHost access to  pCreateInfos[].oldSwapchain must be externally synchronized Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , Fvulkandevice, is the device to create the swapchains for.vulkan pCreateInfos is a pointer to an array of  structures specifying the parameters of the created swapchains.vulkan pAllocator is the allocator used for host memory allocated for the swapchain objects when there is no more specific allocator available (see  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation).@@FFFFCCCCCCCDDDDDDDDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDFFFFFFFFFFFFFF@@DDDDDDDDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDNone( #$&'(./0289:<>?c2vulkanVkDisplaySurfaceCreateInfoKHR - Structure specifying parameters of a newly created display plane surface object DescriptionNoteCreating a display surface must not modify the state of the displays, planes, or other resources it names. For example, it must not apply the specified mode to be set on the associated display. Application of display configuration occurs as a side effect of presenting to a display surface. Valid Usage3VUID-VkDisplaySurfaceCreateInfoKHR-planeIndex-01252  planeIndex must be less than the number of display planes supported by the device as determined by calling F=VUID-VkDisplaySurfaceCreateInfoKHR-planeReorderPossible-01253 If the planeReorderPossible member of the  structure returned by F' for the display corresponding to  displayMode is / then planeStackIndex must be less than the number of display planes supported by the device as determined by calling F; otherwise planeStackIndex must equal the currentStackIndex member of  returned by F- for the display plane corresponding to  displayMode2VUID-VkDisplaySurfaceCreateInfoKHR-alphaMode-01254 If  alphaMode is F then  globalAlpha must be between 0 and 1 , inclusive2VUID-VkDisplaySurfaceCreateInfoKHR-alphaMode-01255  alphaMode must# be one of the bits present in the supportedAlpha member of - for the display plane corresponding to  displayMode.VUID-VkDisplaySurfaceCreateInfoKHR-width-01256 The width and height members of  imageExtent must be less than or equal to  ::maxImageDimension2DValid Usage (Implicit).VUID-VkDisplaySurfaceCreateInfoKHR-sType-sType sType must be  .VUID-VkDisplaySurfaceCreateInfoKHR-pNext-pNext pNext must be NULL4VUID-VkDisplaySurfaceCreateInfoKHR-flags-zerobitmask flags must be 08VUID-VkDisplaySurfaceCreateInfoKHR-displayMode-parameter  displayMode must be a valid  handle6VUID-VkDisplaySurfaceCreateInfoKHR-transform-parameter  transform must be a valid C value6VUID-VkDisplaySurfaceCreateInfoKHR-alphaMode-parameter  alphaMode must be a valid F valueSee Also, F, F, v, , C, FvulkanVkDisplayPropertiesKHR - Structure describing an available display device DescriptionNoteFor devices which have no natural value to return here, implementations should) return the maximum resolution supported.NotePersistent presents may have higher latency, and may use less power when the screen content is updated infrequently, or when only a portion of the screen needs to be updated in most frames.See Alsoq, , , v, C, FvulkanVkDisplayPlanePropertiesKHR - Structure describing display plane propertiesSee Also, , FvulkanVkDisplayPlaneCapabilitiesKHR - Structure describing capabilities of a mode and plane combination DescriptionThe minimum and maximum position and extent fields describe the implementation limits, if any, as they apply to the specified display mode and plane. Vendors may support displaying a subset of a swapchain@s presentable images on the specified display plane. This is expressed by returning minSrcPosition, maxSrcPosition,  minSrcExtent, and  maxSrcExtent values that indicate a range of possible positions and sizes which may be used to specify the region within the presentable images that source pixels will be read from when creating a swapchain on the specified display mode and plane.Vendors may also support mapping the presentable images@ content to a subset or superset of the visible region in the specified display mode. This is expressed by returning minDstPosition, maxDstPosition,  minDstExtent and  maxDstExtent values that indicate a range of possible positions and sizes which may be used to describe the region within the display mode that the source pixels will be mapped to.Other vendors may support only a 1-1 mapping between pixels in the presentable images and the display mode. This may& be indicated by returning (0,0) for minSrcPosition, maxSrcPosition, minDstPosition, and maxDstPosition5, and (display mode width, display mode height) for  minSrcExtent,  maxSrcExtent,  minDstExtent, and  maxDstExtent. The value supportedAlpha must contain at least one valid F bit.These values indicate the limits of the implementation@s individual fields. Not all combinations of values within the offset and extent ranges returned in  are guaranteed to be supported. Presentation requests specifying unsupported combinations may fail.See AlsoF, , v, t, FvulkanVkDisplayModePropertiesKHR - Structure describing display mode propertiesSee Also, , , FvulkanVkDisplayModeParametersKHR - Structure describing display parameters associated with a display mode DescriptionNote0For example, a 60Hz display mode would report a  refreshRate of 60,000. Valid Usage+VUID-VkDisplayModeParametersKHR-width-01990 The width member of  visibleRegion must be greater than 0,VUID-VkDisplayModeParametersKHR-height-01991 The height member of  visibleRegion must be greater than 01VUID-VkDisplayModeParametersKHR-refreshRate-01992  refreshRate must be greater than 0See Also, , vvulkanVkDisplayModeCreateInfoKHR - Structure specifying parameters of a newly created display mode objectValid Usage (Implicit)See AlsoF, , , FFvulkan4VkDisplayPlaneAlphaFlagBitsKHR - Alpha blending typeSee AlsoF, Fvulkan8VkDisplaySurfaceCreateFlagsKHR - Reserved for future use DescriptionF is a bitmask type for setting a mask, but is currently reserved for future use.See AlsoFvulkan5VkDisplayModeCreateFlagsKHR - Reserved for future use DescriptionF is a bitmask type for setting a mask, but is currently reserved for future use.See AlsoFvulkanflags! is reserved for future use, and must be zero.Fvulkan displayMode is a  handle specifying the mode to use when displaying this surface.Fvulkan planeIndex, is the plane on which this surface appears.FvulkanplaneStackIndex is the z-order of the plane.Fvulkan transform is a C value specifying the transformation to apply to images as part of the scanout operation.Fvulkan globalAlpha6 is the global alpha value. This value is ignored if  alphaMode is not F.Fvulkan alphaMode is a F5 value specifying the type of alpha blending to use.Fvulkan imageExtent is the size of the presentable images to use with the surface.FvulkansupportedAlpha is a bitmask of F0 describing the supported alpha blending modes.FvulkanminSrcPosition is the minimum source rectangle offset supported by this plane using the specified mode.FvulkanmaxSrcPosition is the maximum source rectangle offset supported by this plane using the specified mode. The x and y components of maxSrcPosition must& each be greater than or equal to the x and y components of minSrcPosition, respectively.Fvulkan minSrcExtent is the minimum source rectangle size supported by this plane using the specified mode.Fvulkan maxSrcExtent is the maximum source rectangle size supported by this plane using the specified mode.FvulkanminDstPosition, maxDstPosition,  minDstExtent,  maxDstExtent4 all have similar semantics to their corresponding *Src* equivalents, but apply to the output region within the mode rather than the input region within the source image. Unlike the *Src* offsets, minDstPosition and maxDstPosition may contain negative values.Fvulkanflags! is reserved for future use, and must be zero.1VUID-VkDisplayModeCreateInfoKHR-flags-zerobitmask flags must be 0Fvulkan parameters is a  structure describing the display parameters to use in creating the new mode. If the parameters are not compatible with the specified display, the implementation must return .4VUID-VkDisplayModeCreateInfoKHR-parameters-parameter  parameters must be a valid  structureFvulkan displayMode is a handle to the display mode described in this structure. This handle will be valid for the lifetime of the Vulkan instance.Fvulkan parameters is a > structure describing the display parameters associated with  displayMode.Fvulkan visibleRegion) is the 2D extents of the visible region.Fvulkan refreshRate is a uint32_t that is the number of times the display is refreshed each second multiplied by 1000.FvulkancurrentDisplay is the handle of the display the plane is currently associated with. If the plane is not currently attached to any displays, this will be .FvulkancurrentStackIndex is the current z-order of the plane. This will be between 0 and the value returned by F in pPropertyCount.Fvulkandisplay is a handle that is used to refer to the display described here. This handle will be valid for the lifetime of the Vulkan instance.Fvulkan displayName is NULL or a pointer to a null-terminated UTF-8 string containing the name of the display. Generally, this will be the name provided by the display@s EDID. If NULL), no suitable name is available. If not NULL, the string pointed to must. remain accessible and unmodified as long as display is valid.FvulkanphysicalDimensions describes the physical width and height of the visible portion of the display, in millimeters.FvulkanphysicalResolution describes the physical, native, or preferred resolution of the display.FvulkansupportedTransforms is a bitmask of C< describing which transforms are supported by this display.FvulkanplaneReorderPossible* tells whether the planes on this display can* have their z order changed. If this is /, the application can re-arrange the planes on this display in any order relative to each other.FvulkanpersistentContent tells whether the display supports self-refresh/internal buffering. If this is true, the application can submit persistent present operations on swapchains created against this display.FvulkanF is equivalent to F, except the source alpha values are assumed to be premultiplied into the source image@s other color channels.FvulkanF specifies that the alpha value will be determined by the alpha channel of the source image@s pixels. If the source format contains no alpha values, no blending will be applied. The source alpha values are not premultiplied into the source image@s other color channels.FvulkanF& specifies that a global alpha value must be specified that will be applied to all pixels in the source image.FvulkanF< specifies that the source image will be treated as opaque.FvulkanvkGetPhysicalDeviceDisplayPropertiesKHR - Query information about the available displays DescriptionIf  pProperties is NULL4, then the number of display devices available for physicalDevice is returned in pPropertyCount. Otherwise, pPropertyCount must point to a variable set by the user to the number of elements in the  pProperties array, and on return the variable is overwritten with the number of structures actually written to  pProperties. If the value of pPropertyCount1 is less than the number of display devices for physicalDevice , at most pPropertyCount" structures will be written, and  will be returned instead of , to indicate that not all the available properties were returned.Valid Usage (Implicit)VUID-vkGetPhysicalDeviceDisplayPropertiesKHR-physicalDevice-parameter physicalDevice must be a valid  handleVUID-vkGetPhysicalDeviceDisplayPropertiesKHR-pPropertyCount-parameter pPropertyCount must be a valid pointer to a uint32_t valueVUID-vkGetPhysicalDeviceDisplayPropertiesKHR-pProperties-parameter! If the value referenced by pPropertyCount is not 0 , and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pPropertyCount  structures Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, FvulkanvkGetPhysicalDeviceDisplayPlanePropertiesKHR - Query the plane properties DescriptionIf  pProperties is NULL3, then the number of display planes available for physicalDevice is returned in pPropertyCount. Otherwise, pPropertyCount must point to a variable set by the user to the number of elements in the  pProperties array, and on return the variable is overwritten with the number of structures actually written to  pProperties. If the value of pPropertyCount0 is less than the number of display planes for physicalDevice , at most pPropertyCount structures will be written.Valid Usage (Implicit)VUID-vkGetPhysicalDeviceDisplayPlanePropertiesKHR-physicalDevice-parameter physicalDevice must be a valid  handleVUID-vkGetPhysicalDeviceDisplayPlanePropertiesKHR-pPropertyCount-parameter pPropertyCount must be a valid pointer to a uint32_t valueVUID-vkGetPhysicalDeviceDisplayPlanePropertiesKHR-pProperties-parameter! If the value referenced by pPropertyCount is not 0 , and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pPropertyCount  structures Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, FvulkanvkGetDisplayPlaneSupportedDisplaysKHR - Query the list of displays a plane supports DescriptionIf  pDisplays is NULL9, then the number of displays usable with the specified  planeIndex for physicalDevice is returned in  pDisplayCount . Otherwise,  pDisplayCount must point to a variable set by the user to the number of elements in the  pDisplays array, and on return the variable is overwritten with the number of handles actually written to  pDisplays. If the value of  pDisplayCount< is less than the number of usable display-plane pairs for physicalDevice , at most  pDisplayCount handles will be written, and  will be returned instead of >, to indicate that not all the available pairs were returned. Valid Usage;VUID-vkGetDisplayPlaneSupportedDisplaysKHR-planeIndex-01249  planeIndex must be less than the number of display planes supported by the device as determined by calling FValid Usage (Implicit)VUID-vkGetDisplayPlaneSupportedDisplaysKHR-physicalDevice-parameter physicalDevice must be a valid  handleVUID-vkGetDisplayPlaneSupportedDisplaysKHR-pDisplayCount-parameter  pDisplayCount must be a valid pointer to a uint32_t value>VUID-vkGetDisplayPlaneSupportedDisplaysKHR-pDisplays-parameter! If the value referenced by  pDisplayCount is not 0, and  pDisplays is not NULL,  pDisplays must( be a valid pointer to an array of  pDisplayCount  handles Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, FvulkanvkGetDisplayModePropertiesKHR - Query the set of mode properties supported by the display DescriptionIf  pProperties is NULL?, then the number of display modes available on the specified display for physicalDevice is returned in pPropertyCount . Otherwise, pPropertyCount must point to a variable set by the user to the number of elements in the  pProperties array, and on return the variable is overwritten with the number of structures actually written to  pProperties. If the value of pPropertyCount/ is less than the number of display modes for physicalDevice , at most pPropertyCount" structures will be written, and  will be returned instead of , to indicate that not all the available display modes were returned.Valid Usage (Implicit);VUID-vkGetDisplayModePropertiesKHR-physicalDevice-parameter physicalDevice must be a valid  handle4VUID-vkGetDisplayModePropertiesKHR-display-parameter display must be a valid  handle;VUID-vkGetDisplayModePropertiesKHR-pPropertyCount-parameter pPropertyCount must be a valid pointer to a uint32_t value8VUID-vkGetDisplayModePropertiesKHR-pProperties-parameter! If the value referenced by pPropertyCount is not 0, and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pPropertyCount  structures1VUID-vkGetDisplayModePropertiesKHR-display-parent display must6 have been created, allocated, or retrieved from physicalDevice Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , Fvulkan.vkCreateDisplayModeKHR - Create a display modeValid Usage (Implicit)4VUID-vkCreateDisplayModeKHR-physicalDevice-parameter physicalDevice must be a valid  handle-VUID-vkCreateDisplayModeKHR-display-parameter display must be a valid  handle1VUID-vkCreateDisplayModeKHR-pCreateInfo-parameter  pCreateInfo must be a valid pointer to a valid  structure0VUID-vkCreateDisplayModeKHR-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure+VUID-vkCreateDisplayModeKHR-pMode-parameter pMode must be a valid pointer to a  handle*VUID-vkCreateDisplayModeKHR-display-parent display must6 have been created, allocated, or retrieved from physicalDeviceHost SynchronizationHost access to display must be externally synchronized Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , , FvulkanvkGetDisplayPlaneCapabilitiesKHR - Query capabilities of a mode and plane combinationValid Usage (Implicit)>VUID-vkGetDisplayPlaneCapabilitiesKHR-physicalDevice-parameter physicalDevice must be a valid  handle4VUID-vkGetDisplayPlaneCapabilitiesKHR-mode-parameter mode must be a valid  handle=VUID-vkGetDisplayPlaneCapabilitiesKHR-pCapabilities-parameter  pCapabilities must be a valid pointer to a  structureHost SynchronizationHost access to mode must be externally synchronized Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , Fvulkan+vkCreateDisplayPlaneSurfaceKHR - Create a 1 structure representing a display plane and modeValid Usage (Implicit)6VUID-vkCreateDisplayPlaneSurfaceKHR-instance-parameter instance must be a valid  handle9VUID-vkCreateDisplayPlaneSurfaceKHR-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid  structure8VUID-vkCreateDisplayPlaneSurfaceKHR-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure6VUID-vkCreateDisplayPlaneSurfaceKHR-pSurface-parameter pSurface must be a valid pointer to a  handle Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , FvulkanphysicalDevice is a physical device.FvulkanphysicalDevice is a physical device.FvulkanphysicalDevice is a physical device.vulkan planeIndex8 is the plane which the application wishes to use, and must6 be in the range [0, physical device plane count - 1].FvulkanphysicalDevice( is the physical device associated with display.vulkandisplay is the display to query.FvulkanphysicalDevice( is the physical device associated with display.vulkandisplay1 is the display to create an additional mode for.vulkan pCreateInfo is a pointer to a . structure describing the new mode to create.vulkan pAllocator is the allocator used for host memory allocated for the display mode object when there is no more specific allocator available (see  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation).FvulkanphysicalDevice is the physical device associated with the display specified by modevulkanmode is the display mode the application intends to program when using the specified plane. Note this parameter also implicitly specifies a display.vulkan planeIndex is the plane which the application intends to use with the display, and is less than the number of display planes supported by the device.Fvulkaninstance is the instance corresponding to the physical device the targeted display is on.vulkan pCreateInfo is a pointer to a  structure specifying which mode, plane, and other parameters to use, as described below.vulkan pAllocator is the allocator used for host memory allocated for the surface object when there is no more specific allocator available (see  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation).@@@FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCCCCCCCCCCCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF@@@CCCCCCCCCCCCCCCCCCCCCNone( #$&'(./0289:<>?fvulkanVkDisplayProperties2KHR - Structure describing an available display deviceValid Usage (Implicit)See Also, , GvulkanVkDisplayPlaneProperties2KHR - Structure describing an available display planeValid Usage (Implicit)See Also, , GvulkanVkDisplayPlaneInfo2KHR - Structure defining the intended configuration of a display plane DescriptionNote3This parameter also implicitly specifies a display. planeIndex is the plane which the application intends to use with the display.The members of ! correspond to the arguments to  , with sType and pNext added for extensibility.Valid Usage (Implicit)'VUID-VkDisplayPlaneInfo2KHR-sType-sType sType must be  'VUID-VkDisplayPlaneInfo2KHR-pNext-pNext pNext must be NULL*VUID-VkDisplayPlaneInfo2KHR-mode-parameter mode must be a valid  handleHost SynchronizationHost access to mode must be externally synchronizedSee Also, , GvulkanVkDisplayPlaneCapabilities2KHR - Structure describing the capabilities of a mode and plane combinationValid Usage (Implicit)See Also, , GvulkanVkDisplayModeProperties2KHR - Structure describing an available display modeValid Usage (Implicit)See Also, , GGvulkan capabilities is a  structure.Gvulkanmode is the display mode the application intends to program when using the specified plane.GvulkandisplayModeProperties is a  structure.GvulkandisplayPlaneProperties is a  structure.GvulkandisplayProperties is a  structure.GvulkanvkGetPhysicalDeviceDisplayProperties2KHR - Query information about the available displays DescriptionG behaves similarly to  , with the ability to return extended information via chained output structures.Valid Usage (Implicit)VUID-vkGetPhysicalDeviceDisplayProperties2KHR-physicalDevice-parameter physicalDevice must be a valid  handleVUID-vkGetPhysicalDeviceDisplayProperties2KHR-pPropertyCount-parameter pPropertyCount must be a valid pointer to a uint32_t valueVUID-vkGetPhysicalDeviceDisplayProperties2KHR-pProperties-parameter! If the value referenced by pPropertyCount is not 0 , and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pPropertyCount  structures Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, GvulkanvkGetPhysicalDeviceDisplayPlaneProperties2KHR - Query information about the available display planes. DescriptionG behaves similarly to  , with the ability to return extended information via chained output structures.Valid Usage (Implicit)VUID-vkGetPhysicalDeviceDisplayPlaneProperties2KHR-physicalDevice-parameter physicalDevice must be a valid  handleVUID-vkGetPhysicalDeviceDisplayPlaneProperties2KHR-pPropertyCount-parameter pPropertyCount must be a valid pointer to a uint32_t valueVUID-vkGetPhysicalDeviceDisplayPlaneProperties2KHR-pProperties-parameter! If the value referenced by pPropertyCount is not 0 , and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pPropertyCount  structures Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, GvulkanvkGetDisplayModeProperties2KHR - Query information about the available display modes. DescriptionG behaves similarly to  , with the ability to return extended information via chained output structures.Valid Usage (Implicit)?@@DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG@@DDDDDDDDDDDDDDDDDDDEEEEEDDDDDDDDDDDDDDDDDDNone( #$&'(./0289:<>?GvulkanvkCreateDeferredOperationKHR - Create a deferred operation handleValid Usage (Implicit)2VUID-vkCreateDeferredOperationKHR-device-parameter device must be a valid  handle6VUID-vkCreateDeferredOperationKHR-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure>VUID-vkCreateDeferredOperationKHR-pDeferredOperation-parameter pDeferredOperation must be a valid pointer to a  handle Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , Gvulkan=A convenience wrapper to make a compatible pair of calls to G and GTo ensure that G is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.GvulkanvkDestroyDeferredOperationKHR - Destroy a deferred operation handle Valid Usage2VUID-vkDestroyDeferredOperationKHR-operation-03434 If  were provided when  operation1 was created, a compatible set of callbacks must be provided here2VUID-vkDestroyDeferredOperationKHR-operation-03435 If no  were provided when  operation was created,  pAllocator must be NULL2VUID-vkDestroyDeferredOperationKHR-operation-03436  operation must be completedValid Usage (Implicit)3VUID-vkDestroyDeferredOperationKHR-device-parameter device must be a valid  handle6VUID-vkDestroyDeferredOperationKHR-operation-parameter If  operation is not ,  operation must be a valid  handle7VUID-vkDestroyDeferredOperationKHR-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure3VUID-vkDestroyDeferredOperationKHR-operation-parent If  operation is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  operation must be externally synchronizedSee Also, , GvulkanvkGetDeferredOperationMaxConcurrencyKHR - Query the maximum concurrency on a deferred operation DescriptionThe returned value is the maximum number of threads that can usefully execute a deferred operation concurrently, reported for the state of the deferred operation at the point this command is called. This value is intended to be used to better schedule work onto available threads. Applications can join any number of threads to the deferred operation and expect it to eventually complete, though excessive joins may return ) immediately, performing no useful work.If  operation is complete, G returns zero.If  operation is currently joined to any threads, the value returned by this command may immediately be out of date.If  operation is pending, implementations must not return zero unless at least one thread is currently executing G on  operation0. If there are such threads, the implementation should return an estimate of the number of additional threads which it could profitably use.Implementations may return 232-1 to indicate that the maximum concurrency is unknown and cannot be easily derived. Implementations may return values larger than the maximum concurrency available on the host CPU. In these situations, an application should clamp the return value rather than oversubscribing the machine.NoteThe recommended usage pattern for applications is to query this value once, after deferral, and schedule no more than the specified number of threads to join the operation. Each time a joined thread receives , the application should schedule an additional join at some point in the future, but is not required to do so.Valid Usage (Implicit)See Also, GvulkanvkGetDeferredOperationResultKHR - Query the result of a deferred operation Description#If no command has been deferred on  operation, G returns .&If the deferred operation is pending, G returns .If the deferred operation is complete, it returns the appropriate return value from the original command. This value must be one of the a values which could have been returned by the original command if the operation had not been deferred. Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessSee Also, GvulkanvkDeferredOperationJoinKHR - Assign a thread to a deferred operation DescriptionThe G command will execute a portion of the deferred operation on the calling thread..The return value will be one of the following:A return value of  indicates that  operation is complete. The application should use G to retrieve the result of  operation.A return value of  indicates that the deferred operation is not complete, but there is no work remaining to assign to threads. Future calls to G are not necessary and will simply harm performance. This situation may) occur when other threads executing G are about to complete  operation, and the implementation is unable to partition the workload any further.A return value of  indicates that the deferred operation is not complete, and there is no work for the thread to do at the time of the call. This situation may occur if the operation encounters a temporary reduction in parallelism. By returning , the implementation is signaling that it expects that more opportunities for parallelism will emerge as execution progresses, and that future calls to G can6 be beneficial. In the meantime, the application can* perform other work on the calling thread.Implementations must guarantee forward progress by enforcing the following invariants: If only one thread has invoked G( on a given operation, that thread must5 execute the operation to completion and return .3If multiple threads have concurrently invoked G7 on the same operation, then at least one of them must( complete the operation and return .Valid Usage (Implicit)0VUID-vkDeferredOperationJoinKHR-device-parameter device must be a valid  handle3VUID-vkDeferredOperationJoinKHR-operation-parameter  operation must be a valid  handle0VUID-vkDeferredOperationJoinKHR-operation-parent  operation must1 have been created, allocated, or retrieved from device Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, Gvulkandevice is the device which owns  operation.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.Gvulkandevice is the device which owns  operation.vulkan operation, is the completed operation to be destroyed.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.Gvulkandevice is the device which owns  operation.=VUID-vkGetDeferredOperationMaxConcurrencyKHR-device-parameter device must be a valid  handlevulkan operation) is the deferred operation to be queried.VUID-vkGetDeferredOperationMaxConcurrencyKHR-operation-parameter  operation must be a valid  handle=VUID-vkGetDeferredOperationMaxConcurrencyKHR-operation-parent  operation must2 have been created, allocated, or retrieved from deviceGvulkandevice is the device which owns  operation.5VUID-vkGetDeferredOperationResultKHR-device-parameter device must be a valid  handlevulkan operation9 is the operation whose deferred result is being queried.8VUID-vkGetDeferredOperationResultKHR-operation-parameter  operation must be a valid  handle5VUID-vkGetDeferredOperationResultKHR-operation-parent  operation must1 have been created, allocated, or retrieved from deviceGvulkandevice is the device which owns  operation.vulkan operation is the deferred operation that the calling thread should work on. @GGGGGGGGGG GGGGGGGGGG@None( #$&'(./0289:<>?vulkanVkAndroidSurfaceCreateInfoKHR - Structure specifying parameters of a newly created Android surface objectValid Usage (Implicit)See AlsoG, , GGvulkan8VkAndroidSurfaceCreateFlagsKHR - Reserved for future use DescriptionG is a bitmask type for setting a mask, but is currently reserved for future use.See AlsoGvulkanflags is reserved for future use.4VUID-VkAndroidSurfaceCreateInfoKHR-flags-zerobitmask flags must be 0Gvulkanwindow is a pointer to the G to associate the surface with./VUID-VkAndroidSurfaceCreateInfoKHR-window-01248 window must point to a valid Android GGvulkan&vkCreateAndroidSurfaceKHR - Create a % object for an Android native window Description=During the lifetime of a surface created using a particular G= handle any attempts to create another surface for the same G* and any attempts to connect to the same G- through other platform mechanisms will fail.NoteIn particular, only one  can exist at a time for a given window. Similarly, a native window cannot be used by both a  and  EGLSurface simultaneously.If successful, G increments the G@s reference count, and   will decrement it.On Android, when a swapchain@s  imageExtent does not match the surface@s  currentExtent, the presentable images will be scaled to the surface@s dimensions during presentation. minImageExtent is (1,1), and maxImageExtent is the maximum image size supported by the consumer. For the system compositor,  currentExtent: is the window size (i.e. the consumer@s preferred size).Valid Usage (Implicit)1VUID-vkCreateAndroidSurfaceKHR-instance-parameter instance must be a valid  handle4VUID-vkCreateAndroidSurfaceKHR-pCreateInfo-parameter  pCreateInfo must be a valid pointer to a valid  structure3VUID-vkCreateAndroidSurfaceKHR-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure1VUID-vkCreateAndroidSurfaceKHR-pSurface-parameter pSurface must be a valid pointer to a  handle Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , Gvulkaninstance/ is the instance to associate the surface with.vulkan pCreateInfo is a pointer to a  structure containing parameters affecting the creation of the surface object.vulkan pAllocator is the allocator used for host memory allocated for the surface object when there is no more specific allocator available (see  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation).@GGGGGGGGGGGGGGGGGGGGGG@None( #$&'(./0289:<>?$vulkanVkPerformanceParameterTypeINTEL - Parameters that can be queriedSee AlsoHvulkanVkQueryPoolPerformanceQueryCreateInfoINTEL - Structure specifying parameters to create a pool of performance queriesMembers5To create a pool for Intel performance queries, set ;:: queryType to $ and add a  structure to the pNext chain of the ; structure.Valid Usage (Implicit)See AlsoH, vulkanVkPerformanceValueINTEL - Container for value and types of parameters that can be queriedValid Usage (Implicit)+VUID-VkPerformanceValueINTEL-type-parameter type must be a valid G value2VUID-VkPerformanceValueINTEL-valueString-parameter If type is H, the  valueString member of data must" be a null-terminated UTF-8 stringSee AlsoH, G, HvulkanVkPerformanceStreamMarkerInfoINTEL - Structure specifying stream performance markers Valid Usage4VUID-VkPerformanceStreamMarkerInfoINTEL-marker-027350 The value written by the application into marker must. only used the valid bits as reported by H with the HValid Usage (Implicit)3VUID-VkPerformanceStreamMarkerInfoINTEL-sType-sType sType must be  3VUID-VkPerformanceStreamMarkerInfoINTEL-pNext-pNext pNext must be NULLSee Also, HvulkanVkPerformanceOverrideInfoINTEL - Performance override informationValid Usage (Implicit)See Alsoq, G, , HvulkanVkPerformanceMarkerInfoINTEL - Structure specifying performance markersValid Usage (Implicit)See Also, HvulkanVkPerformanceConfigurationAcquireInfoINTEL - Acquire a configuration to capture performance dataValid Usage (Implicit)See AlsoH, , HvulkanVkInitializePerformanceApiInfoINTEL - Structure specifying parameters of initialize of the deviceValid Usage (Implicit)See Also, HGvulkanVkPerformanceValueTypeINTEL - Type of the parameters that can be queriedSee AlsoGvulkan:VkPerformanceOverrideTypeINTEL - Performance override typeSee AlsoHvulkanVkQueryPoolSamplingModeINTEL - Enum specifying how performance queries should be capturedSee AlsoHvulkanVkPerformanceConfigurationTypeINTEL - Type of performance configurationSee AlsoHvulkantype is one of the H: type of performance configuration that will be acquired.>VUID-VkPerformanceConfigurationAcquireInfoINTEL-type-parameter type must be a valid H valueHvulkantype is the particular G to set.2VUID-VkPerformanceOverrideInfoINTEL-type-parameter type must be a valid G valueHvulkanenable) defines whether the override is enabled.Hvulkan parameter4 is a potential required parameter for the override.Hvulkanmarker is the marker value that will be recorded into the reports consumed by an external application.Hvulkanmarker is the marker value that will be recorded into the opaque query results.HvulkanperformanceCountersSampling6 describe how performance queries should be captured.VUID-VkQueryPoolPerformanceQueryCreateInfoINTEL-performanceCountersSampling-parameter performanceCountersSampling must be a valid H valueHvulkan pUserData# is a pointer for application data.Hvulkantype is a G1 value specifying the type of the returned data.Hvulkandata is a H2 union specifying the value of the returned data.HvulkanH has a 32 bits integer result which tells how many bits can be written into the  value.HvulkanH has a boolean result which tells whether hardware counters can be captured.HvulkanH stalls the stream of commands until all previously emitted commands have completed and all caches been flushed and invalidated.HvulkanH+ turns all rendering operations into noop.HvulkanH5 is the default mode in which the application calls   and   to record performance data.HvulkanvkInitializePerformanceApiINTEL - Initialize a device for performance queries Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, HvulkanvkUninitializePerformanceApiINTEL - Uninitialize a device for performance queriesValid Usage (Implicit)See AlsoHvulkan(vkCmdSetPerformanceMarkerINTEL - Markers ParametersThe last marker set onto a command buffer before the end of a query will be part of the query result.Valid Usage (Implicit);VUID-vkCmdSetPerformanceMarkerINTEL-commandBuffer-parameter  commandBuffer must be a valid  handle9VUID-vkCmdSetPerformanceMarkerINTEL-pMarkerInfo-parameter  pMarkerInfo must$ be a valid pointer to a valid  structure;VUID-vkCmdSetPerformanceMarkerINTEL-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state9VUID-vkCmdSetPerformanceMarkerINTEL-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must7 support graphics, compute, or transfer operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary Secondary Both Graphics Compute Transfer Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, Hvulkan.vkCmdSetPerformanceStreamMarkerINTEL - MarkersValid Usage (Implicit)VUID-vkCmdSetPerformanceStreamMarkerINTEL-commandBuffer-parameter  commandBuffer must be a valid  handle?VUID-vkCmdSetPerformanceStreamMarkerINTEL-pMarkerInfo-parameter  pMarkerInfo must$ be a valid pointer to a valid  structureVUID-vkCmdSetPerformanceStreamMarkerINTEL-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state?VUID-vkCmdSetPerformanceStreamMarkerINTEL-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must7 support graphics, compute, or transfer operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary Secondary Both Graphics Compute Transfer Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, HvulkanvkCmdSetPerformanceOverrideINTEL - Performance override settings Valid Usage9VUID-vkCmdSetPerformanceOverrideINTEL-pOverrideInfo-02736  pOverrideInfo must not be used with a G( that is not reported available by HValid Usage (Implicit)=VUID-vkCmdSetPerformanceOverrideINTEL-commandBuffer-parameter  commandBuffer must be a valid  handle=VUID-vkCmdSetPerformanceOverrideINTEL-pOverrideInfo-parameter  pOverrideInfo must$ be a valid pointer to a valid  structure=VUID-vkCmdSetPerformanceOverrideINTEL-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state;VUID-vkCmdSetPerformanceOverrideINTEL-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must7 support graphics, compute, or transfer operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary Secondary Both Graphics Compute Transfer Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, HvulkanvkAcquirePerformanceConfigurationINTEL - Acquire the performance query capability Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , HvulkanvkReleasePerformanceConfigurationINTEL - Release a configuration to capture performance data Valid Usage?VUID-vkReleasePerformanceConfigurationINTEL-configuration-02737  configuration must not be released before all command buffers submitted while the configuration was set are in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending stateValid Usage (Implicit)VUID-vkInitializePerformanceApiINTEL-pInitializeInfo-parameter pInitializeInfo must be a valid pointer to a valid  structureHvulkandevice, is the logical device used for the queries.7VUID-vkUninitializePerformanceApiINTEL-device-parameter device must be a valid  handleHvulkan commandBuffer6 is the command buffer where the override takes place.vulkan pOverrideInfo is a pointer to a 0 structure selecting the parameter to override.Hvulkandevice is the logical device that the performance query commands will be submitted to.?vulkanVkRefreshCycleDurationGOOGLE - Structure containing the RC duration of a displaySee AlsoIvulkanVkPresentTimesInfoGOOGLE - The earliest time each image should be presented Valid Usage2VUID-VkPresentTimesInfoGOOGLE-swapchainCount-01247 swapchainCount must be the same value as ::swapchainCount , where  is included in the pNext chain of this  structureValid Usage (Implicit))VUID-VkPresentTimesInfoGOOGLE-sType-sType sType must be  .VUID-VkPresentTimesInfoGOOGLE-pTimes-parameter If pTimes is not NULL, pTimes must( be a valid pointer to an array of swapchainCount  structures8VUID-VkPresentTimesInfoGOOGLE-swapchainCount-arraylength swapchainCount must be greater than 0See Also, vulkanVkPresentTimeGOOGLE - The earliest time image should be presented Description 6but does not need a specific pname:desiredPresentTime.See AlsovulkanVkPastPresentationTimingGOOGLE - Structure containing timing information about a previously-presented image DescriptionThe results for a given  swapchain and  presentID are only returned once from I.The application can use the < values to occasionally adjust its timing. For example, if actualPresentTime# is later than expected (e.g. one refreshDuration late), the application may increase its target IPD to a higher multiple of refreshDuration7 (e.g. decrease its frame rate from 60Hz to 30Hz). If actualPresentTime and earliestPresentTime% are consistently different, and if  presentMargin is consistently large enough, the application may decrease its target IPD to a smaller multiple of refreshDuration7 (e.g. increase its frame rate from 30Hz to 60Hz). If actualPresentTime and earliestPresentTime are same, and if  presentMargin is consistently high, the application may delay the start of its input-render-present loop in order to decrease the latency between user input and the corresponding present (always leaving some margin in case a new image takes longer to render than the previous image). An application that desires its target IPD to always be the same as refreshDuration", can also adjust features until actualPresentTime is never late and  presentMargin is satisfactory.See AlsoIHvulkan presentID7 is an application-provided identification value, that can be used with the results of I, in order to uniquely identify this present. In order to be useful to the application, it should be unique within some period of time that is meaningful to the application.HvulkandesiredPresentTime specifies that the image given should; not be displayed to the user any earlier than this time. desiredPresentTime is a time in nanoseconds, relative to a monotonically-increasing clock (e.g. CLOCK_MONOTONIC (see clock_gettime(2)) on Android and Linux). A value of zero specifies that the presentation engine may display the image at any time. This is useful when the application desires to provide  presentID,IvulkanswapchainCount is the number of swapchains being presented to by this command.IvulkanpTimes is NULL or a pointer to an array of  elements with swapchainCount entries. If not NULL, each element of pTimes contains the earliest time to present the image corresponding to the entry in the :: pImageIndices array.Ivulkan presentID is an application-provided value that was given to a previous  command via :: presentID (see below). It can< be used to uniquely identify a previous present with the  command.IvulkandesiredPresentTime is an application-provided value that was given to a previous  command via ::desiredPresentTime. If non-zero, it was used by the application to indicate that an image not be presented any sooner than desiredPresentTime.IvulkanactualPresentTime# is the time when the image of the  swapchain was actually displayed.IvulkanearliestPresentTime# is the time when the image of the  swapchain" could have been displayed. This may differ from actualPresentTime if the application requested that the image be presented no sooner than ::desiredPresentTime.Ivulkan presentMargin$ is an indication of how early the  command was processed compared to how soon it needed to be processed, and still be presented at earliestPresentTime.IvulkanrefreshDuration is the number of nanoseconds from the start of one refresh cycle to the next.IvulkanvkGetRefreshCycleDurationGOOGLE - Obtain the RC duration of the PE@s displayValid Usage (Implicit)5VUID-vkGetRefreshCycleDurationGOOGLE-device-parameter device must be a valid  handle8VUID-vkGetRefreshCycleDurationGOOGLE-swapchain-parameter  swapchain must be a valid  handleVUID-vkGetRefreshCycleDurationGOOGLE-pDisplayTimingProperties-parameter pDisplayTimingProperties must be a valid pointer to a  structure1VUID-vkGetRefreshCycleDurationGOOGLE-commonparent Both of device, and  swapchain must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  swapchain must be externally synchronized Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , IvulkanvkGetPastPresentationTimingGOOGLE - Obtain timing of a previously-presented image DescriptionIf pPresentationTimings is NULL, then the number of newly-available timing records for the given  swapchain is returned in pPresentationTimingCount . Otherwise, pPresentationTimingCount must point to a variable set by the user to the number of elements in the pPresentationTimings array, and on return the variable is overwritten with the number of structures actually written to pPresentationTimings. If the value of pPresentationTimingCount is less than the number of newly-available timing records, at most pPresentationTimingCount" structures will be written, and  will be returned instead of , to indicate that not all the available timing records were returned.Valid Usage (Implicit)7VUID-vkGetPastPresentationTimingGOOGLE-device-parameter device must be a valid  handle:VUID-vkGetPastPresentationTimingGOOGLE-swapchain-parameter  swapchain must be a valid  handleVUID-vkGetPastPresentationTimingGOOGLE-pPresentationTimingCount-parameter pPresentationTimingCount must be a valid pointer to a uint32_t valueVUID-vkGetPastPresentationTimingGOOGLE-pPresentationTimings-parameter! If the value referenced by pPresentationTimingCount is not 0 , and pPresentationTimings is not NULL, pPresentationTimings must# be a valid pointer to an array of pPresentationTimingCount  structures3VUID-vkGetPastPresentationTimingGOOGLE-commonparent Both of device, and  swapchain must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  swapchain must be externally synchronized Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , Ivulkandevice is the device associated with  swapchain.vulkan swapchain5 is the swapchain to obtain the refresh duration for.Ivulkandevice is the device associated with  swapchain.vulkan swapchain is the swapchain to obtain presentation timing information duration for.@IIIIIHHHIIIIIIHHIIIIIIIIIIIIIIIIIHHHHIHI@None( #$&'(./0289:<>?&8vulkanVkStreamDescriptorSurfaceCreateInfoGGP - Structure specifying parameters of a newly created Google Games Platform stream surface objectValid Usage (Implicit)See AlsoI, , IIvulkanVkStreamDescriptorSurfaceCreateFlagsGGP - Reserved for future use DescriptionI is a bitmask type for setting a mask, but is currently reserved for future use.See AlsoIvulkanflags is reserved for future use.=VUID-VkStreamDescriptorSurfaceCreateInfoGGP-flags-zerobitmask flags must be 0IvulkanstreamDescriptor is a I referring to the GGP stream descriptor to associate with the surface.VUID-VkStreamDescriptorSurfaceCreateInfoGGP-streamDescriptor-02681 streamDescriptor must be a valid IIvulkan/vkCreateStreamDescriptorSurfaceGGP - Create a + object for a Google Games Platform streamValid Usage (Implicit):VUID-vkCreateStreamDescriptorSurfaceGGP-instance-parameter instance must be a valid  handle=VUID-vkCreateStreamDescriptorSurfaceGGP-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid  structure?/vulkanVkImagePipeSurfaceCreateInfoFUCHSIA - Structure specifying parameters of a newly created ImagePipe surface objectValid Usage (Implicit)See AlsoI, , IIvulkan>VkImagePipeSurfaceCreateFlagsFUCHSIA - Reserved for future use DescriptionI is a bitmask type for setting a mask, but is currently reserved for future use.See AlsoIvulkanflags is reserved for future use.:VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-flags-zerobitmask flags must be 0IvulkanimagePipeHandle is a  zx_handle_t; referring to the ImagePipe to associate with the surface.>VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-imagePipeHandle-04863 imagePipeHandle must be a valid  zx_handle_tIvulkan,vkCreateImagePipeSurfaceFUCHSIA - Create a  object for a Fuchsia ImagePipeValid Usage (Implicit)7VUID-vkCreateImagePipeSurfaceFUCHSIA-instance-parameter instance must be a valid  handle:VUID-vkCreateImagePipeSurfaceFUCHSIA-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid  structure9VUID-vkCreateImagePipeSurfaceFUCHSIA-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure7VUID-vkCreateImagePipeSurfaceFUCHSIA-pSurface-parameter pSurface must be a valid pointer to a  handle Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , Ivulkaninstance/ is the instance to associate with the surface.vulkan pCreateInfo is a pointer to a  structure containing parameters affecting the creation of the surface object.vulkan pAllocator is the allocator used for host memory allocated for the surface object when there is no more specific allocator available (see  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation).@IIIIIIIIIIIIIIIIIIII@None( #$&'(./0289:<>?R vulkanVkSemaphoreGetZirconHandleInfoFUCHSIA - Structure describing a Zircon event handle semaphore export operation DescriptionThe properties of the Zircon event handle returned depend on the value of  handleType. See  for a description of the properties of the defined external semaphore handle types. Valid Usage;VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-handleType-04758  handleType must have been included in R:: handleTypes when  semaphore@s current payload was created:VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-semaphore-04759  semaphore must not currently have its payload replaced by an imported payload as described below in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importingImporting Semaphore Payloads unless that imported payload@s handle type was included in S::exportFromImportedHandleTypes for  handleType;VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-handleType-04760 If  handleType refers to a handle type with copy payload transference semantics, as defined below in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importingImporting Semaphore Payloads , there must be no queue waiting on  semaphore;VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-handleType-04761 If  handleType refers to a handle type with copy payload transference semantics,  semaphore must) be signaled, or have an associated  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signalingsemaphore signal operation pending execution;VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-handleType-04762  handleType must$ be defined as a Zircon event handle:VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-semaphore-04763  semaphore must have been created with a   of  Valid Usage (Implicit)6VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-sType-sType sType must be  6VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-pNext-pNext pNext must be NULL>VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-semaphore-parameter  semaphore must be a valid x handle?VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-handleType-parameter  handleType must be a valid  valueSee Also, x, , IvulkanVkImportSemaphoreZirconHandleInfoFUCHSIA - Structure specifying Zircon event handle to import to a semaphore DescriptionThe handle types supported by  handleType are: Handle Type  Transference Permanence Supported ReferenceTemporary,PermanentHandle Types Supported by  Valid Usage>VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-handleType-04765  handleType must! be a value included in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphore-handletypes-zircon-handleHandle Types Supported by tableVUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-zirconHandle-04766  zirconHandle must" obey any requirements listed for  handleType in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility-external semaphore handle types compatibilityVUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-zirconHandle-04767  zirconHandle must have ZX_RIGHTS_BASIC and ZX_RIGHTS_SIGNAL rightsVUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-semaphoreType-04768 The n:: semaphoreType field must not be  Valid Usage (Implicit)9VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-sType-sType sType must be  9VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-pNext-pNext pNext must be NULLVUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-semaphore-parameter  semaphore must be a valid x handle=VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-flags-parameter flags must be a valid combination of   valuesVUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-handleType-parameter  handleType must be a valid  valueHost SynchronizationHost access to  semaphore must be externally synchronizedSee Also, x, , , IIvulkan semaphore4 is the semaphore from which state will be exported.Ivulkan handleType is a 0 value specifying the type of handle requested.Ivulkan semaphore: is the semaphore into which the payload will be imported.Ivulkanflags is a bitmask of   specifying additional parameters for the semaphore payload import operation.Ivulkan handleType is a  value specifying the type of  zirconHandle.Ivulkan zirconHandle" is the external handle to import.IvulkanvkGetSemaphoreZirconHandleFUCHSIA - Get a Zircon event handle for a semaphore Description Each call to I must create a Zircon event handle and transfer ownership of it to the application. To avoid leaking resources, the application must release ownership of the Zircon event handle when it is no longer needed.NoteOwnership can be released in many ways. For example, the application can call zx_handle_close() on the file descriptor, or transfer ownership back to Vulkan by using the file descriptor to import a semaphore payload.1Exporting a Zircon event handle from a semaphore may have side effects depending on the transference of the specified handle type, as described in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importingImporting Semaphore State. Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, IvulkanvkImportSemaphoreZirconHandleFUCHSIA - Import a semaphore from a Zircon event handle DescriptionImporting a semaphore payload from a Zircon event handle transfers ownership of the handle from the application to the Vulkan implementation. The application must not perform any operations on the handle after a successful import. Applications can import the same semaphore payload into multiple instances of Vulkan, into the same instance from which it was exported, and multiple times into a given Vulkan instance. Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, Ivulkandevice is the logical device that created the semaphore being exported.7VUID-vkGetSemaphoreZirconHandleFUCHSIA-device-parameter device must be a valid  handlevulkanpGetZirconHandleInfo is a pointer to a : structure containing parameters of the export operation.VUID-vkGetSemaphoreZirconHandleFUCHSIA-pGetZirconHandleInfo-parameter pGetZirconHandleInfo must be a valid pointer to a valid  structureIvulkandevice2 is the logical device that created the semaphore.:VUID-vkImportSemaphoreZirconHandleFUCHSIA-device-parameter device must be a valid  handlevulkan pImportSemaphoreZirconHandleInfo is a pointer to a ; structure specifying the semaphore and import parameters.VUID-vkImportSemaphoreZirconHandleFUCHSIA-pImportSemaphoreZirconHandleInfo-parameter  pImportSemaphoreZirconHandleInfo must be a valid pointer to a valid  structureIIIIIIIIIIIIIIIIIIIIIIIIIIIINone( #$&'(./0289:<>?b vulkanVkMemoryZirconHandlePropertiesFUCHSIA - Structure specifying Zircon handle compatible external memoryValid Usage (Implicit)See Also, IvulkanVkMemoryGetZirconHandleInfoFUCHSIA - Structure specifying export parameters for Zircon handle to device memoryValid Usage (Implicit)See Also, , , IvulkanVkImportMemoryZirconHandleInfoFUCHSIA - Structure specifying import parameters for Zircon handle to external memory Valid Usage;VUID-VkImportMemoryZirconHandleInfoFUCHSIA-handleType-04771  handleType must be 7VUID-VkImportMemoryZirconHandleInfoFUCHSIA-handle-04772 handle must be a valid VMO handleValid Usage (Implicit)6VUID-VkImportMemoryZirconHandleInfoFUCHSIA-sType-sType sType must be  ?VUID-VkImportMemoryZirconHandleInfoFUCHSIA-handleType-parameter If  handleType is not 0,  handleType must be a valid  valueSee Also, Ivulkanmemory the  being exported.8VUID-VkMemoryGetZirconHandleInfoFUCHSIA-memory-parameter memory must be a valid  handleIvulkan handleType is a 9 value specifying the type of the handle pointed to by I:: pZirconHandle.8VUID-VkMemoryGetZirconHandleInfoFUCHSIA-handleType-04775  handleType must be 8VUID-VkMemoryGetZirconHandleInfoFUCHSIA-handleType-04776  handleType must have been included in the  handleTypes field of the P2 structure when the external memory was allocatedVUID-vkGetMemoryZirconHandlePropertiesFUCHSIA-device-parameter device must be a valid  handlevulkan handleType is a  value specifying the type of  zirconHandle>VUID-vkGetMemoryZirconHandlePropertiesFUCHSIA-handleType-04773  handleType must be VUID-vkGetMemoryZirconHandlePropertiesFUCHSIA-handleType-parameter  handleType must be a valid  valuevulkan zirconHandle is a  zx_handle_t+ (Zircon) handle to the external resource.VUID-vkGetMemoryZirconHandlePropertiesFUCHSIA-zirconHandle-04774  zirconHandle must reference a valid VMOIIIIIIIIIIIIIIIIIIIIIIIIIIIINone( #$&'(./0289:<>?vulkanVkValidationCacheCreateInfoEXT - Structure specifying parameters of a newly created validation cache Valid Usage9VUID-VkValidationCacheCreateInfoEXT-initialDataSize-01534 If initialDataSize is not 0, it must be equal to the size of  pInitialData, as returned by J when  pInitialData was originally retrieved9VUID-VkValidationCacheCreateInfoEXT-initialDataSize-01535 If initialDataSize is not 0,  pInitialData must2 have been retrieved from a previous call to JValid Usage (Implicit)/VUID-VkValidationCacheCreateInfoEXT-sType-sType sType must be  /VUID-VkValidationCacheCreateInfoEXT-pNext-pNext pNext must be NULL5VUID-VkValidationCacheCreateInfoEXT-flags-zerobitmask flags must be 0:VUID-VkValidationCacheCreateInfoEXT-pInitialData-parameter If initialDataSize is not 0,  pInitialData must( be a valid pointer to an array of initialDataSize bytesSee Also, J, JvulkanVkShaderModuleValidationCacheCreateInfoEXT - Specify validation cache to use during shader module creationValid Usage (Implicit)See Also, JvulkanVkValidationCacheHeaderVersionEXT - Encode validation cache versionSee AlsoJ, JJvulkan9VkValidationCacheCreateFlagsEXT - Reserved for future use DescriptionJ is a bitmask type for setting a mask, but is currently reserved for future use.See AlsoJvulkanvalidationCache is the validation cache object from which the results of prior validation attempts will be written, and to which new validation results for this 0 + will be written (if not already present).VUID-VkShaderModuleValidationCacheCreateInfoEXT-validationCache-parameter validationCache must be a valid  handleJvulkanflags is reserved for future use.JvulkaninitialDataSize is the number of bytes in  pInitialData. If initialDataSize7 is zero, the validation cache will initially be empty.Jvulkan pInitialData is a pointer to previously retrieved validation cache data. If the validation cache data is incompatible (as defined below) with the device, the validation cache will be initially empty. If initialDataSize is zero,  pInitialData is ignored.JvulkanJ0 specifies version one of the validation cache.Jvulkan;vkCreateValidationCacheEXT - Creates a new validation cache DescriptionNote Applications can track and manage the total host memory size of a validation cache object using the  pAllocator. Applications can limit the amount of data retrieved from a validation cache object in J. Implementations should not internally limit the total number of entries added to a validation cache object or the total host memory consumed.!Once created, a validation cache can be passed to the ? ' command by adding this object to the ? structure@s pNext chain. If a  object is included in the ?::pNext chain, and its validationCache field is not , the implementation will query it for possible reuse opportunities and update it with new content. The use of the validation cache object in these commands is internally synchronized, and the same validation cache object can- be used in multiple threads simultaneously.NoteImplementations should make every effort to limit any critical sections to the actual accesses to the cache, which is expected to be significantly shorter than the duration of the ?  command.Valid Usage (Implicit)0VUID-vkCreateValidationCacheEXT-device-parameter device must be a valid  handle5VUID-vkCreateValidationCacheEXT-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid  structure4VUID-vkCreateValidationCacheEXT-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure:VUID-vkCreateValidationCacheEXT-pValidationCache-parameter pValidationCache must be a valid pointer to a  handle Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , Jvulkan=A convenience wrapper to make a compatible pair of calls to J and JTo ensure that J is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.Jvulkan?vkDestroyValidationCacheEXT - Destroy a validation cache object Valid Usage6VUID-vkDestroyValidationCacheEXT-validationCache-01537 If  were provided when validationCache1 was created, a compatible set of callbacks must be provided here6VUID-vkDestroyValidationCacheEXT-validationCache-01538 If no  were provided when validationCache was created,  pAllocator must be NULLValid Usage (Implicit)1VUID-vkDestroyValidationCacheEXT-device-parameter device must be a valid  handle:VUID-vkDestroyValidationCacheEXT-validationCache-parameter If validationCache is not , validationCache must be a valid  handle5VUID-vkDestroyValidationCacheEXT-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure7VUID-vkDestroyValidationCacheEXT-validationCache-parent If validationCache is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to validationCache must be externally synchronizedSee Also, , JvulkanvkGetValidationCacheDataEXT - Get the data store from a validation cache DescriptionIf pData is NULL), then the maximum size of the data that can be retrieved from the validation cache, in bytes, is returned in  pDataSize . Otherwise,  pDataSize must point to a variable set by the user to the size of the buffer, in bytes, pointed to by pData, and on return the variable is overwritten with the amount of data actually written to pData. If  pDataSize% is less than the maximum size that can/ be retrieved by the validation cache, at most  pDataSize bytes will be written to pData, and J will return  instead of , to indicate that not all of the validation cache was returned.Any data written to pData is valid and can be provided as the  pInitialData member of the  structure passed to J. Two calls to J with the same parameters must retrieve the same data unless a command that modifies the contents of the cache is called between them. Applications can store the data retrieved from the validation cache, and use these data, possibly in a future run of the application, to populate new validation cache objects. The results of validation, however, may depend on the vendor ID, device ID, driver version, and other details of the device. To enable applications to detect when previously retrieved data is incompatible with the device, the initial bytes written to pData must2 be a header consisting of the following members:OffsetSizeMeaning0 4 length in bytes of the entire validation cache header written as a stream of bytes, with the least significant byte first4 4 a J value written as a stream of bytes, with the least significant byte first8  a layer commit ID expressed as a UUID, which uniquely identifies the version of the validation layers used to generate these validation results,Layout for validation cache header version JThe first four bytes encode the length of the entire validation cache header, in bytes. This value includes all fields in the header including the validation cache version field and the size of the length field.The next four bytes encode the validation cache version, as described for J&. A consumer of the validation cache should use the cache version to interpret the remainder of the cache header.If  pDataSize is less than what is necessary to store this header, nothing will be written to pData and zero will be written to  pDataSize.Valid Usage (Implicit)1VUID-vkGetValidationCacheDataEXT-device-parameter device must be a valid  handle:VUID-vkGetValidationCacheDataEXT-validationCache-parameter validationCache must be a valid  handle4VUID-vkGetValidationCacheDataEXT-pDataSize-parameter  pDataSize must be a valid pointer to a size_t value0VUID-vkGetValidationCacheDataEXT-pData-parameter! If the value referenced by  pDataSize is not 0, and pData is not NULL, pData must# be a valid pointer to an array of  pDataSize bytes7VUID-vkGetValidationCacheDataEXT-validationCache-parent validationCache must6 have been created, allocated, or retrieved from device Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, JvulkanvkMergeValidationCachesEXT - Combine the data stores of validation caches DescriptionNoteThe details of the merge operation are implementation-dependent, but implementations should merge the contents of the specified validation caches and prune duplicate entries. Valid Usage.VUID-vkMergeValidationCachesEXT-dstCache-01536 dstCache must- not appear in the list of source cachesValid Usage (Implicit)0VUID-vkMergeValidationCachesEXT-device-parameter device must be a valid  handle2VUID-vkMergeValidationCachesEXT-dstCache-parameter dstCache must be a valid  handle4VUID-vkMergeValidationCachesEXT-pSrcCaches-parameter  pSrcCaches must# be a valid pointer to an array of  srcCacheCount valid  handles9VUID-vkMergeValidationCachesEXT-srcCacheCount-arraylength  srcCacheCount must be greater than 0/VUID-vkMergeValidationCachesEXT-dstCache-parent dstCache must6 have been created, allocated, or retrieved from device1VUID-vkMergeValidationCachesEXT-pSrcCaches-parent Each element of  pSrcCaches must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to dstCache must be externally synchronized Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, Jvulkandevice is the logical device that creates the validation cache object.vulkan pCreateInfo is a pointer to a  structure containing the initial parameters for the validation cache object.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.Jvulkandevice is the logical device that destroys the validation cache object.vulkanvalidationCache2 is the handle of the validation cache to destroy.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.Jvulkandevice6 is the logical device that owns the validation cache.vulkanvalidationCache/ is the validation cache to retrieve data from.Jvulkandevice> is the logical device that owns the validation cache objects.vulkandstCache= is the handle of the validation cache to merge results into.vulkan pSrcCaches is a pointer to an array of validation cache handles, which will be merged into dstCache. The previous contents of dstCache are included after the merge.@JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ@None( #$&'(./0289:<>? vulkanVkPrivateDataSlotCreateInfoEXT - Structure specifying the parameters of private data slot constructionValid Usage (Implicit)See AlsoJ, , JvulkanVkPhysicalDevicePrivateDataFeaturesEXT - Structure specifying physical device supportMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkan=VkDevicePrivateDataCreateInfoEXT - Reserve private data slotsValid Usage (Implicit)See AlsoJvulkanVkPrivateDataSlotCreateFlagBitsEXT - Bitmask specifying additional parameters for private data slot creationSee AlsoJJvulkanfeatures-privateData  privateData indicates whether the implementation supports private data. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#private-data Private Data.Jvulkanflags is a bitmask of J? specifying additional parameters of the new private data slot5VUID-VkPrivateDataSlotCreateInfoEXT-flags-zerobitmask flags must be 0JvulkanprivateDataSlotRequestCount# is the amount of slots to reserve.JvulkanvkCreatePrivateDataSlotEXT - Create a slot for private data storage Valid Usage1VUID-vkCreatePrivateDataSlotEXT-privateData-04564 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-privateData privateData feature must be enabledValid Usage (Implicit)0VUID-vkCreatePrivateDataSlotEXT-device-parameter device must be a valid  handle5VUID-vkCreatePrivateDataSlotEXT-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid  structure4VUID-vkCreatePrivateDataSlotEXT-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure:VUID-vkCreatePrivateDataSlotEXT-pPrivateDataSlot-parameter pPrivateDataSlot must be a valid pointer to a  handle Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , Jvulkan=A convenience wrapper to make a compatible pair of calls to J and JTo ensure that J is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.Jvulkan9vkDestroyPrivateDataSlotEXT - Destroy a private data slot Valid Usage6VUID-vkDestroyPrivateDataSlotEXT-privateDataSlot-04062 If  were provided when privateDataSlot1 was created, a compatible set of callbacks must be provided here6VUID-vkDestroyPrivateDataSlotEXT-privateDataSlot-04063 If no  were provided when privateDataSlot was created,  pAllocator must be NULLValid Usage (Implicit)1VUID-vkDestroyPrivateDataSlotEXT-device-parameter device must be a valid  handle:VUID-vkDestroyPrivateDataSlotEXT-privateDataSlot-parameter If privateDataSlot is not , privateDataSlot must be a valid  handle5VUID-vkDestroyPrivateDataSlotEXT-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure7VUID-vkDestroyPrivateDataSlotEXT-privateDataSlot-parent If privateDataSlot is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to privateDataSlot must be externally synchronizedSee Also, , Jvulkan9vkSetPrivateDataEXT - Associate data with a Vulkan object Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, W, JvulkanvkGetPrivateDataEXT - Retrieve data associated with a Vulkan object DescriptionNoteDue to platform details on Android, implementations might not be able to reliably return 0 from calls to J for q objects on which J has not previously been called. This erratum is exclusive to the Android platform and objects of type q.Valid Usage (Implicit)See Also, W, Jvulkandevice is the logical device associated with the creation of the object(s) holding the private data slot.vulkan pCreateInfo is a pointer to a vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.Jvulkandevice is the logical device associated with the creation of the object(s) holding the private data slot.vulkanprivateDataSlot% is the private data slot to destroy.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.Jvulkandevice' is the device that created the object.)VUID-vkSetPrivateDataEXT-device-parameter device must be a valid  handlevulkan objectType is a W7 specifying the type of object to associate data with.-VUID-vkSetPrivateDataEXT-objectType-parameter  objectType must be a valid W valuevulkan objectHandle2 is a handle to the object to associate data with.+VUID-vkSetPrivateDataEXT-objectHandle-04016  objectHandle must be device or a child of device+VUID-vkSetPrivateDataEXT-objectHandle-04017  objectHandle must) be a valid handle to an object of type  objectTypevulkanprivateDataSlot is a handle to a . specifying location of private data storage.2VUID-vkSetPrivateDataEXT-privateDataSlot-parameter privateDataSlot must be a valid  handle/VUID-vkSetPrivateDataEXT-privateDataSlot-parent privateDataSlot must1 have been created, allocated, or retrieved from devicevulkandata is user defined data to associate the object with. This data will be stored at privateDataSlot.Jvulkandevice& is the device that created the object)VUID-vkGetPrivateDataEXT-device-parameter device must be a valid  handlevulkan objectType is a W8 specifying the type of object data is associated with.)VUID-vkGetPrivateDataEXT-objectType-04018  objectType must be  %, or an object type whose parent is -VUID-vkGetPrivateDataEXT-objectType-parameter  objectType must be a valid W valuevulkan objectHandle3 is a handle to the object data is associated with.vulkanprivateDataSlot is a handle to a 6 specifying location of private data pointer storage.2VUID-vkGetPrivateDataEXT-privateDataSlot-parameter privateDataSlot must be a valid  handle/VUID-vkGetPrivateDataEXT-privateDataSlot-parent privateDataSlot must1 have been created, allocated, or retrieved from device@JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ@None( #$&'(./0289:<>?vulkanVkMetalSurfaceCreateInfoEXT - Structure specifying parameters of a newly created Metal surface objectValid Usage (Implicit)See AlsoJ, , JJvulkan6VkMetalSurfaceCreateFlagsEXT - Reserved for future use DescriptionJ is a bitmask type for setting a mask, but is currently reserved for future use.See AlsoJvulkanflags is reserved for future use.2VUID-VkMetalSurfaceCreateInfoEXT-flags-zerobitmask flags must be 0JvulkanpLayer is a reference to a J+ object representing a renderable surface.JvulkanvkCreateMetalSurfaceEXT - Create a VkSurfaceKHR object for CAMetalLayerValid Usage (Implicit)/VUID-vkCreateMetalSurfaceEXT-instance-parameter instance must be a valid  handle2VUID-vkCreateMetalSurfaceEXT-pCreateInfo-parameter  pCreateInfo must be a valid pointer to a valid  structure1VUID-vkCreateMetalSurfaceEXT-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure/VUID-vkCreateMetalSurfaceEXT-pSurface-parameter pSurface must be a valid pointer to a  handle Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , Jvulkaninstance5 is the instance with which to associate the surface.vulkan pCreateInfo is a pointer to a  structure specifying parameters affecting the creation of the surface object.vulkan pAllocator is the allocator used for host memory allocated for the surface object when there is no more specific allocator available (see  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation).@JJJJJJJJJJJJJJJJJJJJJJ@None( #$&'(./0289:<>?ʀvulkanVkHeadlessSurfaceCreateInfoEXT - Structure specifying parameters of a newly created headless surface objectValid Usage (Implicit)See AlsoK, , KKvulkan9VkHeadlessSurfaceCreateFlagsEXT - Reserved for future use DescriptionK is a bitmask type for setting a mask, but is currently reserved for future use.See AlsoKvulkanflags is reserved for future use.5VUID-VkHeadlessSurfaceCreateInfoEXT-flags-zerobitmask flags must be 0Kvulkan0vkCreateHeadlessSurfaceEXT - Create a headless  objectValid Usage (Implicit)2VUID-vkCreateHeadlessSurfaceEXT-instance-parameter instance must be a valid  handle5VUID-vkCreateHeadlessSurfaceEXT-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid  structure4VUID-vkCreateHeadlessSurfaceEXT-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure2VUID-vkCreateHeadlessSurfaceEXT-pSurface-parameter pSurface must be a valid pointer to a  handle Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , Kvulkaninstance/ is the instance to associate the surface with.vulkan pCreateInfo is a pointer to a  structure containing parameters affecting the creation of the surface object.vulkan pAllocator is the allocator used for host memory allocated for the surface object when there is no more specific allocator available (see  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation). @KKKKKKKKK KKKKKKKKK@None( #$&'(./0289:<>?Ӫ vulkan3VkXYColorEXT - Specify X,Y chromaticity coordinatesSee Alsovulkan'VkHdrMetadataEXT - Specify Hdr metadataValid Usage (Implicit)NoteThe validity and use of this data is outside the scope of Vulkan.See Also, , KKvulkandisplayPrimaryRed is the reference monitor@s red primary in chromaticity coordinatesKvulkandisplayPrimaryGreen is the reference monitor@s green primary in chromaticity coordinatesKvulkandisplayPrimaryBlue is the reference monitor@s blue primary in chromaticity coordinatesKvulkan whitePoint is the reference monitor@s white-point in chromaticity coordinatesKvulkan maxLuminance: is the maximum luminance of the reference monitor in nitsKvulkan minLuminance: is the minimum luminance of the reference monitor in nitsKvulkanmaxContentLightLevel' is content@s maximum luminance in nitsKvulkanmaxFrameAverageLightLevel2 is the maximum frame average light level in nitsKvulkan&vkSetHdrMetadataEXT - Set Hdr metadataValid Usage (Implicit))VUID-vkSetHdrMetadataEXT-device-parameter device must be a valid  handle.VUID-vkSetHdrMetadataEXT-pSwapchains-parameter  pSwapchains must# be a valid pointer to an array of swapchainCount valid  handles,VUID-vkSetHdrMetadataEXT-pMetadata-parameter  pMetadata must( be a valid pointer to an array of swapchainCount valid  structures3VUID-vkSetHdrMetadataEXT-swapchainCount-arraylength swapchainCount must be greater than 0%VUID-vkSetHdrMetadataEXT-commonparent Both of device, and the elements of  pSwapchains must? have been created, allocated, or retrieved from the same 0See Also, , Kvulkandevice; is the logical device where the swapchain(s) were created.vulkan pSwapchains is a pointer to an array of swapchainCount  handles.vulkan pMetadata is a pointer to an array of swapchainCount  structures.@KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK@None( #$&'(./0289:<>?!vulkanVkSurfaceFullScreenExclusiveWin32InfoEXT - Structure specifying additional creation parameters specific to Win32 fullscreen exclusive mode DescriptionNoteIf hmonitor is invalidated (e.g. the monitor is unplugged) during the lifetime of a swapchain created with this structure, operations on that swapchain will return .NoteIt is the responsibility of the application to change the display settings of the targeted Win32 display using the appropriate platform APIs. Such changes may alter the surface capabilities reported for the created surface.Valid Usage (Implicit)See AlsovulkanVkSurfaceFullScreenExclusiveInfoEXT - Structure specifying the preferred full-screen transition behavior Description"If this structure is not present, fullScreenExclusive is considered to be K.Valid Usage (Implicit)See AlsoK, vulkanVkSurfaceCapabilitiesFullScreenExclusiveEXT - Structure describing full screen exclusive capabilities of a surface DescriptionThis structure can be included in the pNext chain of = to determine support for exclusive full-screen access. If fullScreenExclusiveSupported is /, it indicates that exclusive full-screen access is not obtainable for this surface. Applications must( not attempt to create swapchains with K set if fullScreenExclusiveSupported is /.Valid Usage (Implicit)See Alsoq, KvulkanVkFullScreenExclusiveEXT - Hint values an application can specify affecting full-screen transition behaviorSee AlsoKvulkanhmonitor is the Win32 K< handle identifying the display to create the surface with.surface must be supported by physicalDevice, as reported by 2 or an equivalent platform-specific mechanismValid Usage (Implicit)VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-physicalDevice-parameter physicalDevice must be a valid  handleVUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-pSurfaceInfo-parameter  pSurfaceInfo must$ be a valid pointer to a valid  structureVUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-pPresentModeCount-parameter pPresentModeCount must be a valid pointer to a uint32_t valueVUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-pPresentModes-parameter! If the value referenced by pPresentModeCount is not 0 , and  pPresentModes is not NULL,  pPresentModes must( be a valid pointer to an array of pPresentModeCount  values Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , KvulkanvkGetDeviceGroupSurfacePresentModes2EXT - Query device group present capabilities for a surface DescriptionK behaves similarly to  , with the ability to specify extended inputs via chained input structures. Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , KvulkanvkAcquireFullScreenExclusiveModeEXT - Acquire full-screen exclusive mode for a swapchain Valid Usage8VUID-vkAcquireFullScreenExclusiveModeEXT-swapchain-02674  swapchain must not be in the retired state8VUID-vkAcquireFullScreenExclusiveModeEXT-swapchain-02675  swapchain must$ be a swapchain created with a  structure, with fullScreenExclusive set to K8VUID-vkAcquireFullScreenExclusiveModeEXT-swapchain-02676  swapchain must0 not currently have exclusive full-screen accessA return value of  indicates that the  swapchain successfully acquired exclusive full-screen access. The swapchain will retain this exclusivity until either the application releases exclusive full-screen access with K, destroys the swapchain, or if any of the swapchain commands return  indicating that the mode was lost because of platform-specific changes.If the swapchain was unable to acquire exclusive full-screen access to the display then  is returned. An application can attempt to acquire exclusive full-screen access again for the same swapchain even if this command fails, or if + has been returned by a swapchain command.Valid Usage (Implicit)9VUID-vkAcquireFullScreenExclusiveModeEXT-device-parameter device must be a valid  handle?]vulkan?3JvulkanVkSwapchainCounterCreateInfoEXT - Specify the surface counters desired Valid Usage:VUID-VkSwapchainCounterCreateInfoEXT-surfaceCounters-01244 The bits in surfaceCounters must be supported by ::surface, as reported by  Valid Usage (Implicit)0VUID-VkSwapchainCounterCreateInfoEXT-sType-sType sType must be  >VUID-VkSwapchainCounterCreateInfoEXT-surfaceCounters-parameter surfaceCounters must be a valid combination of  valuesSee Also, vulkan=VkDisplayPowerInfoEXT - Describe the power state of a displayValid Usage (Implicit)See AlsoL, , Lvulkan:VkDisplayEventInfoEXT - Describe a display event to createValid Usage (Implicit)See AlsoL, , Lvulkan8VkDeviceEventInfoEXT - Describe a device event to createValid Usage (Implicit)See AlsoL, , LLvulkanVkDisplayEventTypeEXT - Events that can occur on a display objectSee AlsoLvulkan?VkDeviceEventTypeEXT - Events that can occur on a device objectSee AlsoLvulkan?AvulkanVkDirectFBSurfaceCreateInfoEXT - Structure specifying parameters of a newly created DirectFB surface objectValid Usage (Implicit)See AlsoL, , LLvulkan9VkDirectFBSurfaceCreateFlagsEXT - Reserved for future use DescriptionL is a bitmask type for setting a mask, but is currently reserved for future use.See AlsoLvulkanflags is reserved for future use.5VUID-VkDirectFBSurfaceCreateInfoEXT-flags-zerobitmask flags must be 0Lvulkandfb is a pointer to the  main interface of DirectFB.-VUID-VkDirectFBSurfaceCreateInfoEXT-dfb-04117 dfb must point to a valid DirectFB Lvulkansurface is a pointer to a L surface interface.1VUID-VkDirectFBSurfaceCreateInfoEXT-surface-04118 surface must point to a valid DirectFB LLvulkan'vkCreateDirectFBSurfaceEXT - Create a  object for a DirectFB surfaceValid Usage (Implicit)2VUID-vkCreateDirectFBSurfaceEXT-instance-parameter instance must be a valid  handle5VUID-vkCreateDirectFBSurfaceEXT-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid  structure4VUID-vkCreateDirectFBSurfaceEXT-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure2VUID-vkCreateDirectFBSurfaceEXT-pSurface-parameter pSurface must be a valid pointer to a  handle Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , LvulkanvkGetPhysicalDeviceDirectFBPresentationSupportEXT - Query physical device for presentation with DirectFB Description This platform-specific function can( be called prior to creating a surface.Valid Usage (Implicit)See AlsoLvulkaninstance/ is the instance to associate the surface with.vulkan pCreateInfo is a pointer to a  structure containing parameters affecting the creation of the surface object.vulkan pAllocator is the allocator used for host memory allocated for the surface object when there is no more specific allocator available (see  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation).LvulkanphysicalDevice is the physical device.VUID-vkGetPhysicalDeviceDirectFBPresentationSupportEXT-physicalDevice-parameter physicalDevice must be a valid  handlevulkanqueueFamilyIndex is the queue family index.VUID-vkGetPhysicalDeviceDirectFBPresentationSupportEXT-queueFamilyIndex-04119 queueFamilyIndex must be less than pQueueFamilyPropertyCount returned by   for the given physicalDevicevulkandfb is a pointer to the  main interface of DirectFB.VUID-vkGetPhysicalDeviceDirectFBPresentationSupportEXT-dfb-parameter dfb must be a valid pointer to an  value@LLLLLLLLLLLLLLLLLLLLLLLLLL@None( #$&'(./0289:<>?E'LvulkanvkReleaseDisplayEXT - Release access to an acquired VkDisplayKHR Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessSee Also, LvulkanphysicalDevice' The physical device the display is on.1VUID-vkReleaseDisplayEXT-physicalDevice-parameter physicalDevice must be a valid  handlevulkandisplay# The display to release control of.*VUID-vkReleaseDisplayEXT-display-parameter display must be a valid  handle'VUID-vkReleaseDisplayEXT-display-parent display must2 have been created, allocated, or retrieved from physicalDevice@LLLLLLLLLL@None( #$&'(./0289:<>?4vulkanVkDebugUtilsMessageTypeFlagBitsEXT - Bitmask specifying which types of events cause a debug messenger callbackSee AlsovulkanVkDebugUtilsMessageSeverityFlagBitsEXT - Bitmask specifying which severities of events cause a debug messenger callback DescriptionNoteThe values of  are sorted based on severity. The higher the flag value, the more severe the message. This allows for simple boolean operation comparisons when looking at  values. For example:  if (messageSeverity >= VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT) { // Do something for warnings and errors }In addition, space has been left between the enums to allow for later addition of new severities in between the existing values.See Also, MvulkanVkDebugUtilsObjectTagInfoEXT - Specify parameters of a tag to attach to an object DescriptionThe tagName parameter gives a name or identifier to the type of data being tagged. This can be used by debugging layers to easily filter for only data that can be used by that implementation.Valid Usage (Implicit)See AlsoW, , MvulkanVkDebugUtilsObjectNameInfoEXT - Specify parameters of a name to give to an object Description Applications may> change the name associated with an object simply by calling M again with a new string. If  pObjectName is either NULL> or an empty string, then any previously set name is removed. Valid Usage3VUID-VkDebugUtilsObjectNameInfoEXT-objectType-02589 If  objectType is ,  objectHandle must not be 3VUID-VkDebugUtilsObjectNameInfoEXT-objectType-02590 If  objectType is not ,  objectHandle must be ; or a valid Vulkan handle of the type associated with  objectType as defined in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-object-typesand Vulkan Handle Relationship tableValid Usage (Implicit).VUID-VkDebugUtilsObjectNameInfoEXT-sType-sType sType must be  .VUID-VkDebugUtilsObjectNameInfoEXT-pNext-pNext pNext must be NULL7VUID-VkDebugUtilsObjectNameInfoEXT-objectType-parameter  objectType must be a valid W value8VUID-VkDebugUtilsObjectNameInfoEXT-pObjectName-parameter If  pObjectName is not NULL,  pObjectName must' be a null-terminated UTF-8 stringSee Also, W, , MvulkanVkDebugUtilsMessengerCreateInfoEXT - Structure specifying parameters of a newly created debug messenger Description For each  that is created the ::messageSeverity and :: messageType determine when that ::pfnUserCallback4 is called. The process to determine if the user@s pfnUserCallback2 is triggered when an event occurs is as follows: The implementation will perform a bitwise AND of the event@s  with the messageSeverity+ provided during creation of the  object. *If the value is 0, the message is skipped.The implementation will perform bitwise AND of the event@s  with the  messageType/ provided during the creation of the  object. *If the value is 0, the message is skipped.?The callback will trigger a debug message for the current eventThe callback will come directly from the component that detected the event, unless some other layer intercepts the calls for its own purposes (filter them in a different way, log to a system error log, etc.).An application can) receive multiple callbacks if multiple  objects are created. A callback will always be executed in the same thread as the originating Vulkan call. A callback can be called from multiple threads simultaneously (if the application is making Vulkan calls from multiple threads).Valid Usage (Implicit)See AlsoL, , , L, , MvulkanVkDebugUtilsMessengerCallbackDataEXT - Structure specifying parameters returned to the callback DescriptionNoteThis structure should only be considered valid during the lifetime of the triggered callback.Since adding queue and command buffer labels behaves like pushing and popping onto a stack, the order of both  pQueueLabels and  pCmdBufLabels is based on the order the labels were defined. The result is that the first label in either  pQueueLabels or  pCmdBufLabels will be the first defined (and therefore the oldest) while the last label in each list will be the most recent.Note pQueueLabels will only be non-NULL if one of the objects in pObjects' can be related directly to a defined |6 which has had one or more labels associated with it. Likewise,  pCmdBufLabels will only be non-NULL if one of the objects in pObjects' can be related directly to a defined  which has had one or more labels associated with it. Additionally, while command buffer labels allow for beginning and ending across different command buffers, the debug messaging framework cannot guarantee that labels in  pCmdBufLables will contain those defined outside of the associated command buffer. This is partially due to the fact that the association of one command buffer with another may not have been defined at the time the debug message is triggered.Valid Usage (Implicit)5VUID-VkDebugUtilsMessengerCallbackDataEXT-sType-sType sType must be  5VUID-VkDebugUtilsMessengerCallbackDataEXT-pNext-pNext pNext must be NULL;VUID-VkDebugUtilsMessengerCallbackDataEXT-flags-zerobitmask flags must be 0VUID-VkDebugUtilsMessengerCallbackDataEXT-pMessageIdName-parameter If pMessageIdName is not NULL, pMessageIdName must' be a null-terminated UTF-8 string is a null-terminated string detailing the trigger conditions.Lvulkan pQueueLabels is NULL or a pointer to an array of  active in the current |4 at the time the callback was triggered. Refer to  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-queue-labels Queue Labels for more information.Lvulkan pCmdBufLabels is NULL or a pointer to an array of  active in the current 4 at the time the callback was triggered. Refer to  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-command-buffer-labelsCommand Buffer Labels for more information.LvulkanpObjects is a pointer to an array of  objects related to the detected issue. The array is roughly in order or importance, but the 0th element is always guaranteed to be the most important object for this message.Lvulkanflags is 0 and is reserved for future use.9VUID-VkDebugUtilsMessengerCreateInfoEXT-flags-zerobitmask flags must be 0LvulkanmessageSeverity is a bitmask of  specifying which severity of event(s) will cause this callback to be called.VUID-VkDebugUtilsMessengerCreateInfoEXT-messageSeverity-parameter messageSeverity must be a valid combination of  valuesVUID-VkDebugUtilsMessengerCreateInfoEXT-messageSeverity-requiredbitmask messageSeverity must not be 0Lvulkan messageType is a bitmask of  specifying which type of event(s) will cause this callback to be called.=VUID-VkDebugUtilsMessengerCreateInfoEXT-messageType-parameter  messageType must be a valid combination of  valuesVUID-VkDebugUtilsMessengerCreateInfoEXT-messageType-requiredbitmask  messageType must not be 0LvulkanpfnUserCallback. is the application callback function to call.=VUID-VkDebugUtilsMessengerCreateInfoEXT-pfnUserCallback-01914 pfnUserCallback must be a valid LVUID-VkDebugUtilsMessengerCreateInfoEXT-pfnUserCallback-parameter pfnUserCallback must be a valid L valueMvulkan pUserData+ is user data to be passed to the callback.Mvulkan pLabelName is a pointer to a null-terminated UTF-8 string containing the name of the label..VUID-VkDebugUtilsLabelEXT-pLabelName-parameter  pLabelName must# be a null-terminated UTF-8 stringMvulkancolor is an optional RGBA color value that can be associated with the label. A particular implementation may choose to ignore this color value. The values contain RGBA values in order, in the range 0.0 to 1.0. If all elements in color# are set to 0.0 then it is ignored.Mvulkan objectType is a W0 specifying the type of the object to be named.2VUID-VkDebugUtilsObjectTagInfoEXT-objectType-01908  objectType must not be 6VUID-VkDebugUtilsObjectTagInfoEXT-objectType-parameter  objectType must be a valid W valueMvulkan objectHandle is the object to be tagged.4VUID-VkDebugUtilsObjectTagInfoEXT-objectHandle-01910  objectHandle must6 be a valid Vulkan handle of the type associated with  objectType as defined in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-object-typesand Vulkan Handle Relationship tableMvulkantagName& is a numerical identifier of the tag.MvulkantagSize8 is the number of bytes of data to attach to the object.5VUID-VkDebugUtilsObjectTagInfoEXT-tagSize-arraylength tagSize must be greater than 0MvulkanpTag is a pointer to an array of tagSize= bytes containing the data to be associated with the object.0VUID-VkDebugUtilsObjectTagInfoEXT-pTag-parameter pTag must$ be a valid pointer to an array of tagSize bytesMvulkan objectType is a W0 specifying the type of the object to be named.Mvulkan objectHandle is the object to be named.Mvulkan pObjectName is either NULL or a null-terminated UTF-8 string specifying the name to apply to  objectHandle.MvulkanM specifies a potentially non-optimal use of Vulkan, e.g. using   when setting 7::loadOp to  would have worked.MvulkanM specifies that something has occurred during validation against the Vulkan specification that may indicate invalid behavior.MvulkanM specifies that some general event has occurred. This is typically a non-specification, non-performance event.MvulkanM specifies that the application has violated a valid usage condition of the specification.MvulkanM specifies use of Vulkan that may expose an app bug. Such cases may not be immediately harmful, such as a fragment shader outputting to a location with no attachment. Other cases may point to behavior that is almost certainly bad when unintended such as using an image whose memory has not been filled. In general if you see a warning but you know that the behavior is intended/desired, then simply ignore the warning.MvulkanM specifies an informational message such as resource details that may be handy when debugging an application.MvulkanM specifies the most verbose output indicating all diagnostic messages from the Vulkan loader, layers, and drivers should be captured.MvulkanvkSetDebugUtilsObjectNameEXT - Give a user-friendly name to an object Valid Usage1VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-02587 pNameInfo->objectType must not be 1VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-02588 pNameInfo->objectHandle must not be Valid Usage (Implicit)2VUID-vkSetDebugUtilsObjectNameEXT-device-parameter device must be a valid  handle5VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-parameter  pNameInfo must be a valid pointer to a valid  structureHost SynchronizationHost access to pNameInfo->objectHandle must be externally synchronized Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, MvulkanvkSetDebugUtilsObjectTagEXT - Attach arbitrary data to an objectValid Usage (Implicit)1VUID-vkSetDebugUtilsObjectTagEXT-device-parameter device must be a valid  handle3VUID-vkSetDebugUtilsObjectTagEXT-pTagInfo-parameter pTagInfo must be a valid pointer to a valid  structureHost SynchronizationHost access to pTagInfo->objectHandle must be externally synchronized Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, MvulkanvkQueueBeginDebugUtilsLabelEXT - Open a queue debug label regionCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types--AnySee Also, |Mvulkan?vkQueueEndDebugUtilsLabelEXT - Close a queue debug label region Description The calls to M and M must be matched and balanced. Valid Usage,VUID-vkQueueEndDebugUtilsLabelEXT-None-01911 There must be an outstanding M command prior to the M on the queueValid Usage (Implicit)1VUID-vkQueueEndDebugUtilsLabelEXT-queue-parameter queue must be a valid | handleCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types--AnySee Also|Mvulkan=vkQueueInsertDebugUtilsLabelEXT - Insert a label into a queueCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types--AnySee Also, |MvulkanvkCmdBeginDebugUtilsLabelEXT - Open a command buffer debug label regionValid Usage (Implicit)9VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-parameter  commandBuffer must be a valid  handle6VUID-vkCmdBeginDebugUtilsLabelEXT-pLabelInfo-parameter  pLabelInfo must$ be a valid pointer to a valid  structure9VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state7VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must( support graphics, or compute operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth Graphics ComputeSee Also, Mvulkan>This function will call the supplied action between calls to M and M Note that M is *not* called if an exception is thrown by the inner action.MvulkanvkCmdEndDebugUtilsLabelEXT - Close a command buffer label region DescriptionAn application may open a debug label region in one command buffer and close it in another, or otherwise split debug label regions across multiple command buffers or multiple queue submissions. When viewed from the linear series of submissions to a single queue, the calls to M and M must be matched and balanced. Valid Usage3VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-01912 There must be an outstanding M command prior to the M on the queue that  commandBuffer is submitted to3VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-01913 If  commandBuffer& is a secondary command buffer, there must be an outstanding M command recorded to  commandBuffer6 that has not previously been ended by a call to MValid Usage (Implicit)7VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-parameter  commandBuffer must be a valid  handle7VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state5VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must( support graphics, or compute operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth Graphics ComputeSee AlsoMvulkanvkCmdInsertDebugUtilsLabelEXT - Insert a label into a command bufferValid Usage (Implicit):VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-parameter  commandBuffer must be a valid  handle7VUID-vkCmdInsertDebugUtilsLabelEXT-pLabelInfo-parameter  pLabelInfo must$ be a valid pointer to a valid  structure:VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state8VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must( support graphics, or compute operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth Graphics ComputeSee Also, MvulkanvkCreateDebugUtilsMessengerEXT - Create a debug messenger objectValid Usage (Implicit)6VUID-vkCreateDebugUtilsMessengerEXT-instance-parameter instance must be a valid  handle9VUID-vkCreateDebugUtilsMessengerEXT-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid  structure8VUID-vkCreateDebugUtilsMessengerEXT-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure8VUID-vkCreateDebugUtilsMessengerEXT-pMessenger-parameter  pMessenger must be a valid pointer to a  handle Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureThe application must ensure that M is not executed in parallel with any Vulkan command that is also called with instance or child of instance as the dispatchable argument.See Also, , , Mvulkan=A convenience wrapper to make a compatible pair of calls to M and MTo ensure that M is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.MvulkanvkDestroyDebugUtilsMessengerEXT - Destroy a debug messenger object Valid Usage4VUID-vkDestroyDebugUtilsMessengerEXT-messenger-01915 If  were provided when  messenger1 was created, a compatible set of callbacks must be provided here4VUID-vkDestroyDebugUtilsMessengerEXT-messenger-01916 If no  were provided when  messenger was created,  pAllocator must be NULLValid Usage (Implicit)7VUID-vkDestroyDebugUtilsMessengerEXT-instance-parameter instance must be a valid  handle8VUID-vkDestroyDebugUtilsMessengerEXT-messenger-parameter If  messenger is not ,  messenger must be a valid  handle9VUID-vkDestroyDebugUtilsMessengerEXT-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure5VUID-vkDestroyDebugUtilsMessengerEXT-messenger-parent If  messenger is a valid handle, it must6 have been created, allocated, or retrieved from instanceHost SynchronizationHost access to  messenger must be externally synchronizedThe application must ensure that M is not executed in parallel with any Vulkan command that is also called with instance or child of instance as the dispatchable argument.See Also, , MvulkanvkSubmitDebugUtilsMessageEXT - Inject a message into a debug stream DescriptionThe call will propagate through the layers and generate callback(s) as indicated by the message@s flags. The parameters are passed on to the callback in addition to the  pUserData value that was defined at the time the messenger was registered. Valid Usage2VUID-vkSubmitDebugUtilsMessageEXT-objectType-02591 The  objectType member of each element of pCallbackData->pObjects must not be Valid Usage (Implicit)4VUID-vkSubmitDebugUtilsMessageEXT-instance-parameter instance must be a valid  handle;VUID-vkSubmitDebugUtilsMessageEXT-messageSeverity-parameter messageSeverity must be a valid  value8VUID-vkSubmitDebugUtilsMessageEXT-messageTypes-parameter  messageTypes must be a valid combination of  values>VUID-vkSubmitDebugUtilsMessageEXT-messageTypes-requiredbitmask  messageTypes must not be 09VUID-vkSubmitDebugUtilsMessageEXT-pCallbackData-parameter  pCallbackData must$ be a valid pointer to a valid  structureSee Also, , ,  Mvulkandevice' is the device that created the object.vulkan pNameInfo is a pointer to a  structure specifying parameters of the name to set on the object.Mvulkandevice' is the device that created the object.vulkanpTagInfo is a pointer to a  structure specifying parameters of the tag to attach to the object.Mvulkanqueue5 is the queue in which to start a debug label region.3VUID-vkQueueBeginDebugUtilsLabelEXT-queue-parameter queue must be a valid | handlevulkan pLabelInfo is a pointer to a > structure specifying parameters of the label region to open.8VUID-vkQueueBeginDebugUtilsLabelEXT-pLabelInfo-parameter  pLabelInfo must be a valid pointer to a valid  structureMvulkanqueue= is the queue in which a debug label region should be closed.Mvulkanqueue8 is the queue into which a debug label will be inserted.4VUID-vkQueueInsertDebugUtilsLabelEXT-queue-parameter queue must be a valid | handlevulkan pLabelInfo is a pointer to a 9 structure specifying parameters of the label to insert.9VUID-vkQueueInsertDebugUtilsLabelEXT-pLabelInfo-parameter  pLabelInfo must be a valid pointer to a valid  structureMvulkan commandBuffer; is the command buffer into which the command is recorded.vulkan pLabelInfo is a pointer to a > structure specifying parameters of the label region to open.Mvulkan commandBuffer; is the command buffer into which the command is recorded.Mvulkan commandBuffer; is the command buffer into which the command is recorded.Mvulkaninstance1 is the instance the messenger will be used with.vulkan pCreateInfo is a pointer to a  structure containing the callback pointer, as well as defining conditions under which this messenger will trigger the callback.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.Mvulkaninstance0 is the instance where the callback was created.vulkan messenger is the  object to destroy.  messenger+ is an externally synchronized object and must not be used on more than one thread at a time. This means that M must* not be called when a callback is active.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.Mvulkaninstance is the debug stream@s .vulkanmessageSeverity is a 6 value specifying the severity of this event/message.vulkan messageTypes is a bitmask of  specifying which type of event(s) to identify with this message.vulkan pCallbackData0 contains all the callback related data in the  structure.@MMMLMMMMLMMMMMMMMMMLLLMLLLLLLLLLLMMMLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMLLLMLLLLLLLLLLLLLLMMMMLMMMMMMMLMMMLLLMLM@None( #$&'(./0289:<>?vulkanVkDebugReportObjectTypeEXT - Specify the type of an object handle Description'Vulkan Handle Type NUnknown/Undefined HandleNN0 N0N0 N0 N0 N0 N0 N0 N0N0 M0 M0 M0M0 M0M0 M0 M0 M0 M0 M0 M0 M0 M0 Mq MqMMq Mq MD  and Vulkan Handle RelationshipNoteThe primary expected use of  is for validation layer testing. It is not expected that an application would see this error code during normal use of the validation layers.See Also, , NvulkanVkDebugReportFlagBitsEXT - Bitmask specifying events which cause a debug report callbackSee AlsovulkanVkDebugReportCallbackCreateInfoEXT - Structure specifying parameters of a newly created debug report callback Description For each  that is created the ::flags determine when that :: pfnCallback is called. When an event happens, the implementation will do a bitwise AND of the event@s  flags to each  object@s flags. For each non-zero result the corresponding callback will be called. The callback will come directly from the component that detected the event, unless some other layer intercepts the calls for its own purposes (filter them in a different way, log to a system error log, etc.).An application may) receive multiple callbacks if multiple  objects were created. A callback will always be executed in the same thread as the originating Vulkan call.A callback may be called from multiple threads simultaneously (if the application is making Vulkan calls from multiple threads).Valid Usage (Implicit)See AlsoM, , , NMvulkanPFN_vkDebugReportCallbackEXT - Application-defined debug report callback function Description The callback must not call N.The callback returns a q, which is interpreted in a layer-specified manner. The application should always return /. The /1 value is reserved for use in layer development.object must be a Vulkan object or . If  objectType is not N and object is not , object must? be a Vulkan object of the corresponding type associated with  objectType as defined in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debug-report-object-types.See AlsoMvulkanflags is a bitmask of  specifying which event(s) will cause this callback to be called.7VUID-VkDebugReportCallbackCreateInfoEXT-flags-parameter flags must be a valid combination of  valuesMvulkan pfnCallback. is the application callback function to call.=VUID-VkDebugReportCallbackCreateInfoEXT-pfnCallback-parameter  pfnCallback must be a valid M valueMvulkan pUserData+ is user data to be passed to the callback.NvulkanN specifies diagnostic information from the implementation and layers.NvulkanN specifies that the application has violated a valid usage condition of the specification.NvulkanN specifies a potentially non-optimal use of Vulkan, e.g. using   when setting 7::loadOp to  would have worked.NvulkanN specifies use of Vulkan that may expose an app bug. Such cases may not be immediately harmful, such as a fragment shader outputting to a location with no attachment. Other cases may point to behavior that is almost certainly bad when unintended such as using an image whose memory has not been filled. In general if you see a warning but you know that the behavior is intended/desired, then simply ignore the warning.NvulkanN specifies an informational message such as resource details that may be handy when debugging an application.NvulkanvkCreateDebugReportCallbackEXT - Create a debug report callback objectValid Usage (Implicit)6VUID-vkCreateDebugReportCallbackEXT-instance-parameter instance must be a valid  handle9VUID-vkCreateDebugReportCallbackEXT-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid  structure8VUID-vkCreateDebugReportCallbackEXT-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure7VUID-vkCreateDebugReportCallbackEXT-pCallback-parameter  pCallback must be a valid pointer to a  handle Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , Nvulkan=A convenience wrapper to make a compatible pair of calls to N and NTo ensure that N is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.NvulkanvkDestroyDebugReportCallbackEXT - Destroy a debug report callback object Valid Usage3VUID-vkDestroyDebugReportCallbackEXT-instance-01242 If  were provided when callback1 was created, a compatible set of callbacks must be provided here3VUID-vkDestroyDebugReportCallbackEXT-instance-01243 If no  were provided when callback was created,  pAllocator must be NULLValid Usage (Implicit)7VUID-vkDestroyDebugReportCallbackEXT-instance-parameter instance must be a valid  handle7VUID-vkDestroyDebugReportCallbackEXT-callback-parameter If callback is not , callback must be a valid  handle9VUID-vkDestroyDebugReportCallbackEXT-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure4VUID-vkDestroyDebugReportCallbackEXT-callback-parent If callback is a valid handle, it must6 have been created, allocated, or retrieved from instanceHost SynchronizationHost access to callback must be externally synchronizedSee Also, , Nvulkan>vkDebugReportMessageEXT - Inject a message into a debug stream DescriptionThe call will propagate through the layers and generate callback(s) as indicated by the message@s flags. The parameters are passed on to the callback in addition to the  pUserData value that was defined at the time the callback was registered. Valid Usage)VUID-vkDebugReportMessageEXT-object-01241 object must be a Vulkan object or -VUID-vkDebugReportMessageEXT-objectType-01498 If  objectType is not N and object is not , object must be a Vulkan object of the corresponding type associated with  objectType as defined in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debug-report-object-typesValid Usage (Implicit)/VUID-vkDebugReportMessageEXT-instance-parameter instance must be a valid  handle,VUID-vkDebugReportMessageEXT-flags-parameter flags must be a valid combination of  values2VUID-vkDebugReportMessageEXT-flags-requiredbitmask flags must not be 01VUID-vkDebugReportMessageEXT-objectType-parameter  objectType must be a valid  value3VUID-vkDebugReportMessageEXT-pLayerPrefix-parameter  pLayerPrefix must" be a null-terminated UTF-8 string/VUID-vkDebugReportMessageEXT-pMessage-parameter pMessage must' be a null-terminated UTF-8 stringSee Also, , Nvulkaninstance0 is the instance the callback will be logged on.vulkan pCreateInfo is a pointer to a  structure defining the conditions under which this callback will be called.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.Nvulkaninstance0 is the instance where the callback was created.vulkancallback is the  object to destroy. callback+ is an externally synchronized object and must not be used on more than one thread at a time. This means that N must* not be called when a callback is active.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.Nvulkaninstance is the debug stream@s .vulkanflags specifies the ' classification of this event/message.vulkan objectType is a  specifying the type of object being used or created at the time the event was triggered.vulkanobject- is the object where the issue was detected. object can be 2 if there is no object associated with the event.vulkanlocation! is an application defined value.vulkan messageCode! is an application defined value.vulkan pLayerPrefix is the abbreviation of the component making this event/message.vulkanpMessage> is a null-terminated string detailing the trigger conditions.@NNNNNNNNNNNNMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNMMMMMMMMMMMNNNNNNNNNNNNNNMMMMNNNNNMNNNNNNNNNNNNNNNNNMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM@None( #$&'(./0289:<>?Nvulkan=A convenience wrapper to make a compatible pair of calls to N and NTo ensure that N is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.Nvulkan=A convenience wrapper to make a compatible pair of calls to N and NTo ensure that N is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.@@MNNNNNNNNNNNNMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN@@MNNNNNNNNNNNNMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNMMMMMMMMMMMMMMMMMMMMMMMMMMNone( #$&'(./0289:<>?vulkanVkGeometryTypeKHR - Enum specifying which type of geometry is providedSee Also, vulkan?VkAccelerationStructureTypeKHR - Type of acceleration structureSee Also, vulkanVkBuildAccelerationStructureFlagBitsKHR - Bitmask specifying additional parameters for acceleration structure builds DescriptionNoteO and O may8 take more time and memory than a normal build, and so should. only be used when those features are needed.See Alsovulkan2VkGeometryInstanceFlagBitsKHR - Instance flag bits DescriptionO and O must not be used in the same flag.See AlsovulkanVkGeometryFlagBitsKHR - Bitmask specifying additional parameters for a geometrySee AlsovulkanVkCopyAccelerationStructureModeKHR - Acceleration structure copy modeSee Also, , ,  vulkanVkAccelerationStructureCompatibilityKHR - Acceleration structure compatibilitySee AlsoOvulkanVkAccelerationStructureBuildTypeKHR - Acceleration structure build typeSee AlsoOvulkanVkWriteDescriptorSetAccelerationStructureKHR - Structure specifying acceleration structure descriptor information Valid UsageVUID-VkWriteDescriptorSetAccelerationStructureKHR-accelerationStructureCount-02236 accelerationStructureCount must be equal to descriptorCount in the extended structureVUID-VkWriteDescriptorSetAccelerationStructureKHR-pAccelerationStructures-03579% Each acceleration structure in pAccelerationStructures must have been created with a type of O or OVUID-VkWriteDescriptorSetAccelerationStructureKHR-pAccelerationStructures-03580 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor. feature is not enabled, each element of pAccelerationStructures must not be Valid Usage (Implicit)=VUID-VkWriteDescriptorSetAccelerationStructureKHR-sType-sType sType must be  VUID-VkWriteDescriptorSetAccelerationStructureKHR-pAccelerationStructures-parameter pAccelerationStructures must( be a valid pointer to an array of accelerationStructureCount valid or   handlesVUID-VkWriteDescriptorSetAccelerationStructureKHR-accelerationStructureCount-arraylength accelerationStructureCount must be greater than 0See Also, vulkanVkTransformMatrixKHR - Structure specifying a 3x4 affine transformation matrix Valid Usage&VUID-VkTransformMatrixKHR-matrix-03799! The first three columns of matrix must define an invertible 3x3 matrixSee Also, vulkanVkPhysicalDeviceAccelerationStructurePropertiesKHR - Properties of the physical device for acceleration structure DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.#Limits specified by this structure must/ match those specified with the same name in .Valid Usage (Implicit)See AlsovulkanVkPhysicalDeviceAccelerationStructureFeaturesKHR - Structure describing the acceleration structure features that can be supported by an implementationMembers0This structure describes the following features: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkanVkCopyMemoryToAccelerationStructureInfoKHR - Parameters for deserializing an acceleration structure Valid Usage9VUID-VkCopyMemoryToAccelerationStructureInfoKHR-src-04960& The source memory pointed to by src must/ contain data previously serialized using O, potentially modified to relocate acceleration structure references as described in that command:VUID-VkCopyMemoryToAccelerationStructureInfoKHR-mode-03413 mode must be O;VUID-VkCopyMemoryToAccelerationStructureInfoKHR-pInfo-03414 The data in src must have a format compatible with the destination physical device as returned by O9VUID-VkCopyMemoryToAccelerationStructureInfoKHR-dst-03746 dst must have been created with a size greater than or equal to that used to serialize the data in srcValid Usage (Implicit);VUID-VkCopyMemoryToAccelerationStructureInfoKHR-sType-sType sType must be  ;VUID-VkCopyMemoryToAccelerationStructureInfoKHR-pNext-pNext pNext must be NULL=VUID-VkCopyMemoryToAccelerationStructureInfoKHR-dst-parameter dst must be a valid  handle>VUID-VkCopyMemoryToAccelerationStructureInfoKHR-mode-parameter mode must be a valid  valueSee Also, , N, , O, OvulkanVkCopyAccelerationStructureToMemoryInfoKHR - Parameters for serializing an acceleration structure Valid Usage9VUID-VkCopyAccelerationStructureToMemoryInfoKHR-src-04959( The source acceleration structure src must have been constructed prior to the execution of this command9VUID-VkCopyAccelerationStructureToMemoryInfoKHR-dst-03561 The memory pointed to by dst must8 be at least as large as the serialization size of src, as reported by O or O with a query type of :VUID-VkCopyAccelerationStructureToMemoryInfoKHR-mode-03412 mode must be OValid Usage (Implicit);VUID-VkCopyAccelerationStructureToMemoryInfoKHR-sType-sType sType must be  ;VUID-VkCopyAccelerationStructureToMemoryInfoKHR-pNext-pNext pNext must be NULL=VUID-VkCopyAccelerationStructureToMemoryInfoKHR-src-parameter src must be a valid  handle>VUID-VkCopyAccelerationStructureToMemoryInfoKHR-mode-parameter mode must be a valid  valueSee Also, , N, , O, OvulkanVkCopyAccelerationStructureInfoKHR - Parameters for copying an acceleration structure Valid Usage2VUID-VkCopyAccelerationStructureInfoKHR-mode-03410 mode must be O or O1VUID-VkCopyAccelerationStructureInfoKHR-src-04963( The source acceleration structure src must have been constructed prior to the execution of this command1VUID-VkCopyAccelerationStructureInfoKHR-src-03411 If mode is O, src must& have been constructed with O in the build4VUID-VkCopyAccelerationStructureInfoKHR-buffer-03718 The buffer used to create src must be bound to device memory4VUID-VkCopyAccelerationStructureInfoKHR-buffer-03719 The buffer used to create dst must be bound to device memoryValid Usage (Implicit)3VUID-VkCopyAccelerationStructureInfoKHR-sType-sType sType must be  3VUID-VkCopyAccelerationStructureInfoKHR-pNext-pNext pNext must be NULL5VUID-VkCopyAccelerationStructureInfoKHR-src-parameter src must be a valid  handle5VUID-VkCopyAccelerationStructureInfoKHR-dst-parameter dst must be a valid  handle6VUID-VkCopyAccelerationStructureInfoKHR-mode-parameter mode must be a valid  value4VUID-VkCopyAccelerationStructureInfoKHR-commonparent Both of dst, and src must? have been created, allocated, or retrieved from the same See Also, , , O, OvulkanVkAccelerationStructureVersionInfoKHR - Acceleration structure version information DescriptionNote pVersionData is a pointer to an array of 2*, uint8_t values instead of two , arrays as the expected use case for this member is to be pointed at the header of an previously serialized acceleration structure (via O or O) that is loaded in memory. Using arrays would necessitate extra memory copies of the UUIDs.Valid Usage (Implicit)See Also, OvulkanVkAccelerationStructureInstanceKHR - Structure specifying a single acceleration structure instance for building into an acceleration structure geometry DescriptionThe C language specification does not define the ordering of bit-fields, but in practice, this struct produces the correct layout with existing compilers. The intended bit pattern is for the following:If a compiler produces code that diverges from that pattern, applications must employ another method to set values according to the correct bit pattern.Valid Usage (Implicit)See Also, , vulkanVkAccelerationStructureGeometryTrianglesDataKHR - Structure specifying a triangle geometry in a bottom-level acceleration structure DescriptionNote)Unlike the stride for vertex buffers in 8/ for graphics pipelines which must not exceed maxVertexInputBindingStride,  vertexStride for acceleration structure geometry is instead restricted to being a 32-bit value. Valid UsageVUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexStride-03735  vertexStride must be a multiple of the size in bytes of the smallest component of  vertexFormatVUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexStride-03819  vertexStride must be less than or equal to 232-1VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexFormat-03797  vertexFormat must support the  in   ::bufferFeatures as returned by U VUID-VkAccelerationStructureGeometryTrianglesDataKHR-indexType-03798  indexType must be ,  , or Valid Usage (Implicit)VUID-VkAccelerationStructureGeometryTrianglesDataKHR-sType-sType sType must be  VUID-VkAccelerationStructureGeometryTrianglesDataKHR-pNext-pNext pNext must be NULL* or a pointer to a valid instance of VUID-VkAccelerationStructureGeometryTrianglesDataKHR-sType-unique The sType value of each struct in the pNext chain must be uniqueVUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexFormat-parameter  vertexFormat must be a valid K valueVUID-VkAccelerationStructureGeometryTrianglesDataKHR-indexType-parameter  indexType must be a valid T valueSee AlsoN, N, o, K, T, vulkanVkAccelerationStructureGeometryKHR - Structure specifying geometries to be built into an acceleration structureValid Usage (Implicit)3VUID-VkAccelerationStructureGeometryKHR-sType-sType sType must be  3VUID-VkAccelerationStructureGeometryKHR-pNext-pNext pNext must be NULL>VUID-VkAccelerationStructureGeometryKHR-geometryType-parameter  geometryType must be a valid  value;VUID-VkAccelerationStructureGeometryKHR-triangles-parameter If  geometryType is O, the  triangles member of geometry must be a valid  structure7VUID-VkAccelerationStructureGeometryKHR-aabbs-parameter If  geometryType is O, the aabbs member of geometry must be a valid  structure;VUID-VkAccelerationStructureGeometryKHR-instances-parameter If  geometryType is O, the  instances member of geometry must be a valid  structure7VUID-VkAccelerationStructureGeometryKHR-flags-parameter flags must be a valid combination of  valuesSee Also, N, , , vulkanVkAccelerationStructureGeometryInstancesDataKHR - Structure specifying a geometry consisting of instances of other acceleration structuresValid Usage (Implicit)See AlsoN, q, N, vulkanVkAccelerationStructureGeometryAabbsDataKHR - Structure specifying axis-aligned bounding box geometry in a bottom-level acceleration structureValid Usage (Implicit)See AlsoN, N, o, vulkanVkAccelerationStructureDeviceAddressInfoKHR - Structure specifying the acceleration structure to query an address forValid Usage (Implicit)See Also, , OvulkanVkAccelerationStructureCreateInfoKHR - Structure specifying the parameters of a newly created acceleration structure object DescriptionIf  deviceAddress+ is zero, no specific address is requested.If  deviceAddress is not zero,  deviceAddress must be an address retrieved from an identically created acceleration structure on the same implementation. The acceleration structure must+ also be placed on an identically created buffer and at the same offset. Applications should avoid creating acceleration structures with application-provided addresses and implementation-provided addresses in the same process, to reduce the likelihood of  errors.NoteThe expected usage for this is that a trace capture/replay tool will add the  flag to all buffers that use  , and will add   to all buffers used as storage for an acceleration structure where  deviceAddress is not zero. During capture the tool will save the queried opaque device addresses in the trace. During replay, the buffers will be created specifying the original address so any address values stored in the trace data will remain valid.Implementations are expected to separate such buffers in the GPU address space so normal allocations will avoid using these addresses. Apps/tools should avoid mixing app-provided and implementation-provided addresses for buffers created with /, to avoid address space allocation conflicts. Applications should3 create an acceleration structure with a specific  other than O.If the acceleration structure will be the target of a build operation, the required size for an acceleration structure can be queried with O. If the acceleration structure is going to be the target of a compacting copy, O or O can0 be used to obtain the compacted size required.If the acceleration structure will be the target of a build operation with O it must include O in flags and include  as an extension structure in pNext: with the number of instances as metadata for the object. Valid Usage=VUID-VkAccelerationStructureCreateInfoKHR-deviceAddress-03612 If  deviceAddress is not zero,  createFlags must include O;VUID-VkAccelerationStructureCreateInfoKHR-createFlags-03613 If  createFlags includes O, ::"accelerationStructureCaptureReplay must be /6VUID-VkAccelerationStructureCreateInfoKHR-buffer-03614 buffer must have been created with a usage value containing 6VUID-VkAccelerationStructureCreateInfoKHR-buffer-03615 buffer must! not have been created with  6VUID-VkAccelerationStructureCreateInfoKHR-offset-03616 The sum of offset and size must be less than the size of buffer6VUID-VkAccelerationStructureCreateInfoKHR-offset-03734 offset must be a multiple of 256 bytes5VUID-VkAccelerationStructureCreateInfoKHR-flags-04954 If O is set in flags and type is O, one member of the pNext chain must* be a pointer to a valid instance of 5VUID-VkAccelerationStructureCreateInfoKHR-flags-04955$ If any geometry includes  then flags must contain OValid Usage (Implicit)5VUID-VkAccelerationStructureCreateInfoKHR-sType-sType sType must be  5VUID-VkAccelerationStructureCreateInfoKHR-pNext-pNext pNext must be NULL* or a pointer to a valid instance of 6VUID-VkAccelerationStructureCreateInfoKHR-sType-unique The sType" value of each struct in the pNext chain must be unique?VUID-VkAccelerationStructureCreateInfoKHR-createFlags-parameter  createFlags must be a valid combination of N values:VUID-VkAccelerationStructureCreateInfoKHR-buffer-parameter buffer must be a valid  handle8VUID-VkAccelerationStructureCreateInfoKHR-type-parameter type must be a valid  valueSee AlsoN, , , p, o, , OvulkanVkAccelerationStructureBuildSizesInfoKHR - Structure specifying build sizes for an acceleration structureValid Usage (Implicit)See Alsoo, , OvulkanVkAccelerationStructureBuildRangeInfoKHR - Structure specifying build offsets and counts for acceleration structure builds DescriptionThe primitive count and primitive offset are interpreted differently depending on the  used:For geometries of type O, primitiveCount is the number of triangles to be built, where each triangle is treated as 3 vertices.If the geometry uses indices, primitiveCount'  3 indices are consumed from :: indexData, starting at an offset of primitiveOffset. The value of  firstVertex; is added to the index values before fetching vertices.&If the geometry does not use indices, primitiveCount(  3 vertices are consumed from :: vertexData, starting at an offset of primitiveOffset + :: vertexStride   firstVertex. A single  structure is consumed from :: transformData, at an offset of transformOffset:. This transformation matrix is used by all triangles.For geometries of type O, primitiveCount4 is the number of axis-aligned bounding boxes. primitiveCount # structures are consumed from ::data , starting at an offset of primitiveOffset.For geometries of type O, primitiveCount0 is the number of acceleration structures. primitiveCount  or ( structures are consumed from ::data , starting at an offset of primitiveOffset. Valid UsageVUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03656 For geometries of type O0, if the geometry uses indices, the offset primitiveOffset from :: indexData must0 be a multiple of the element size of :: indexTypeVUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03657 For geometries of type O8, if the geometry does not use indices, the offset primitiveOffset from :: vertexData must2 be a multiple of the component size of :: vertexFormatVUID-VkAccelerationStructureBuildRangeInfoKHR-transformOffset-03658 For geometries of type O, the offset transformOffset from :: transformData must be a multiple of 16VUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03659 For geometries of type O, the offset primitiveOffset from ::data must be a multiple of 8VUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03660 For geometries of type O, the offset primitiveOffset from ::data must be a multiple of 16See AlsoO, OvulkanVkAccelerationStructureBuildGeometryInfoKHR - Structure specifying the geometry data used to build an acceleration structure Description Only one of  pGeometries or  ppGeometries can be a valid pointer, the other must be NULL. Each element of the non-NULL array describes the data used to build each acceleration structure geometry.!The index of each element of the  pGeometries or  ppGeometries members of  is used as the /geometry index/ during ray traversal. The geometry index is available in ray shaders via the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-raygeometryindexRayGeometryIndexKHR built-in , and is  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shader-binding-table-hit-shader-indexingused to determine hit and intersection shaders executed during traversal;. The geometry index is available to ray queries via the )OpRayQueryGetIntersectionGeometryIndexKHR instruction.Setting O in flags indicates that this build is a motion top level acceleration structure. A motion top level uses instances of format  if ::arrayOfPointers is /.If ::arrayOfPointers is /, the pointer for any given element of the array of instance pointers consists of 4 bits of  in the low 4 bits of the pointer identifying the type of structure at the pointer. The device address accessed is the value in the array with the low 4 bits set to zero. The structure at the pointer is one of ,  or 9, depending on the type value encoded in the low 4 bits.A top level acceleration structure with either motion instances or vertex motion in its instances must set O in flags. Valid Usage;VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03654 type must not be O VUID-VkAccelerationStructureBuildGeometryInfoKHR-pGeometries-03788 Only one of  pGeometries or  ppGeometries can$ be a valid pointer, the other must be NULL;VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03789 If type is O , the  geometryType member of elements of either  pGeometries or  ppGeometries must be O;VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03790 If type is O,  geometryCount must be 1;VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03791 If type is O the  geometryType member of elements of either  pGeometries or  ppGeometries must not be O;VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03792 If type is O then the  geometryType# member of each geometry in either  pGeometries or  ppGeometries must be the same;VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03793 If type is O then  geometryCount must be less than or equal to ::maxGeometryCount;VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03794 If type is O and the  geometryType member of either  pGeometries or  ppGeometries is O3, the total number of AABBs in all geometries must be less than or equal to ::maxPrimitiveCount;VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03795 If type is O and the  geometryType member of either  pGeometries or  ppGeometries is O7, the total number of triangles in all geometries must be less than or equal to ::maxPrimitiveCountfeatures-descriptorBindingAccelerationStructureUpdateAfterBind 5descriptorBindingAccelerationStructureUpdateAfterBind indicates whether the implementation supports updating acceleration structure descriptors after a set is bound. If this feature is not enabled,  must not be used with  .OvulkanpAccelerationStructures is a pointer to an array of > structures specifying the acceleration structures to update.OvulkanO if the  pVersionData8 version acceleration structure is not compatible with device.OvulkanO if the  pVersionData4 version acceleration structure is compatible with device.OvulkanO requests the memory requirement for operations performed by either the host, or the device.OvulkanO requests the memory requirement for operations performed by the device.OvulkanO requests the memory requirement for operations performed by the host.OvulkanO specifies a geometry type consisting of acceleration structure instances.OvulkanO specifies a geometry type consisting of axis-aligned bounding boxes.OvulkanO4 specifies a geometry type consisting of triangles.OvulkanO is an acceleration structure whose type is determined at build time used for special circumstances.OvulkanO is a bottom-level acceleration structure containing the AABBs or geometry to be intersected.OvulkanO is a top-level acceleration structure containing instance data referring to bottom-level acceleration structures.OvulkanO specifies that the destination acceleration structure will be built using data in a source acceleration structure, updated by the specified geometries.OvulkanO specifies that the destination acceleration structure will be built using the specified geometries.OvulkanO deserializes the semi-opaque serialization format in the buffer to the acceleration structure.OvulkanO serializes the acceleration structure to a semi-opaque format which can be reloaded on a compatible implementation.OvulkanO> creates a more compact version of an acceleration structure src into dst. The acceleration structure dst must have been created with a size at least as large as that returned by O or O= after the build of the acceleration structure specified by src. If src8 contains references to other acceleration structures, dst2 will reference the same acceleration structures.OvulkanO creates a direct copy of the acceleration structure specified in src into the one specified by dst. The dst acceleration structure must0 have been created with the same parameters as src. If src8 contains references to other acceleration structures, dst2 will reference the same acceleration structures.OvulkanO6 specifies that the acceleration structure@s address can* be saved and reused on a subsequent run.OvulkanO- indicates that this acceleration structure should minimize the size of the scratch memory and the final result acceleration structure, potentially at the expense of build time or trace performance.OvulkanO8 indicates that the given acceleration structure build should/ prioritize build time over trace performance.OvulkanO8 indicates that the given acceleration structure build should/ prioritize trace performance over build time.OvulkanO6 indicates that the specified acceleration structure can act as the source for a copy acceleration structure command with mode of O0 to produce a compacted acceleration structure.OvulkanO6 indicates that the specified acceleration structure can be updated with update of / in O or  .OvulkanO$ indicates that the implementation must only call the any-hit shader a single time for each primitive in this geometry. If this bit is absent an implementation may< invoke the any-hit shader more than once for this geometry.OvulkanO indicates that this geometry does not invoke the any-hit shaders even if present in a hit group.OvulkanO( causes this instance to act as though O were not specified on all geometries referenced by this instance. This behavior can be overridden by the SPIR-V  OpaqueKHR ray flag.OvulkanO( causes this instance to act as though O were specified on all geometries referenced by this instance. This behavior can be overridden by the SPIR-V  NoOpaqueKHR ray flag.OvulkanO indicates that the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-traversal-culling-facefacing determination for geometry in this instance is inverted. Because the facing is determined in object space, an instance transform does not change the winding, but a geometry transform does.OvulkanO* disables face culling for this instance.OvulkanvkDestroyAccelerationStructureKHR - Destroy an acceleration structure object Valid UsageVUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02442+ All submitted commands that refer to accelerationStructure must have completed executionVUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02443 If  were provided when accelerationStructure1 was created, a compatible set of callbacks must be provided hereVUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02444 If no  were provided when accelerationStructure was created,  pAllocator must be NULLValid Usage (Implicit)7VUID-vkDestroyAccelerationStructureKHR-device-parameter device must be a valid  handleVUID-vkDestroyAccelerationStructureKHR-accelerationStructure-parameter If accelerationStructure is not , accelerationStructure must be a valid  handle;VUID-vkDestroyAccelerationStructureKHR-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structureVUID-vkDestroyAccelerationStructureKHR-accelerationStructure-parent If accelerationStructure is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to accelerationStructure must be externally synchronizedSee Also, , OvulkanvkCmdCopyAccelerationStructureKHR - Copy an acceleration structure DescriptionThis command copies the  pInfo->src acceleration structure to the  pInfo->dst4 acceleration structure in the manner specified by  pInfo->mode. Accesses to  pInfo->src and  pInfo->dst must be  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized with the     https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stagespipeline stage and an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type of  or  as appropriate. Valid Usage3VUID-vkCmdCopyAccelerationStructureKHR-buffer-03737 The buffer used to create  pInfo->src must be bound to device memory3VUID-vkCmdCopyAccelerationStructureKHR-buffer-03738 The buffer used to create  pInfo->dst must be bound to device memoryValid Usage (Implicit)>VUID-vkCmdCopyAccelerationStructureKHR-commandBuffer-parameter  commandBuffer must be a valid  handle6VUID-vkCmdCopyAccelerationStructureKHR-pInfo-parameter pInfo must$ be a valid pointer to a valid  structure>VUID-vkCmdCopyAccelerationStructureKHR-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording statesrc must' be bound to host-visible device memory0VUID-vkCopyAccelerationStructureKHR-buffer-03728 The buffer used to create  pInfo->dst must' be bound to host-visible device memoryVUID-vkCopyAccelerationStructureKHR-accelerationStructureHostCommands-03582 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructureHostCommands#::accelerationStructureHostCommands feature must be enabled0VUID-vkCopyAccelerationStructureKHR-buffer-03780 The buffer used to create  pInfo->src must be bound to memory that was not allocated with multiple instances0VUID-vkCopyAccelerationStructureKHR-buffer-03781 The buffer used to create  pInfo->dst must be bound to memory that was not allocated with multiple instancesValid Usage (Implicit)4VUID-vkCopyAccelerationStructureKHR-device-parameter device must be a valid  handle?VUID-vkCopyAccelerationStructureKHR-deferredOperation-parameter If deferredOperation is not , deferredOperation must be a valid  handle3VUID-vkCopyAccelerationStructureKHR-pInfo-parameter pInfo must$ be a valid pointer to a valid  structuresrc must be  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized with the     https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stagespipeline stage and an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type of '. Accesses to the buffer indicated by pInfo->dst.deviceAddress must be synchronized with the   ( pipeline stage and an access type of .+This command produces the same results as O, but writes its result to a device address, and is executed on the device rather than the host. The output may not necessarily be bit-for-bit identical, but it can be equally used by either O or O.The defined header structure for the serialized data consists of:, bytes of data matching Q:: driverUUID, bytes of data identifying the compatibility for comparison using OA 64-bit integer of the total size matching the value queried using A 64-bit integer of the deserialized size to be passed in to ::sizeA 64-bit integer of the count of the number of acceleration structure handles following. This will be zero for a bottom-level acceleration structure. For top-level acceleration structures this number is implementation-dependent; the number of and ordering of the handles may not match the instance descriptions which were used to build the acceleration structure.;The corresponding handles matching the values returned by O or   are tightly packed in the buffer following the count. The application is expected to store a mapping between those handles and the original application-generated bottom-level acceleration structures to provide when deserializing. The serialized data is written to the buffer (or read from the buffer) according to the host endianness. Valid Usage:VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-03739 pInfo->dst.deviceAddress must be a valid device address for a buffer bound to device memory:VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-03740 pInfo->dst.deviceAddress must be aligned to 256 bytes:VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-03741" If the buffer pointed to by pInfo->dst.deviceAddress is non-sparse then it must7 be bound completely and contiguously to a single 0  object9VUID-vkCmdCopyAccelerationStructureToMemoryKHR-None-03559 The buffer used to create  pInfo->src must be bound to device memoryValid Usage (Implicit)VUID-vkCmdCopyAccelerationStructureToMemoryKHR-commandBuffer-parameter  commandBuffer must be a valid  handle>VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-parameter pInfo must$ be a valid pointer to a valid  structureVUID-vkCmdCopyAccelerationStructureToMemoryKHR-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateVUID-vkCmdCopyAccelerationStructureToMemoryKHR-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support compute operations9VUID-vkCmdCopyAccelerationStructureToMemoryKHR-renderpass This command must1 only be called outside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryOutside Compute See Also, OvulkanvkCopyAccelerationStructureToMemoryKHR - Serialize an acceleration structure on the host Description(This command fulfills the same task as O but is executed by the host.+This command produces the same results as O, but writes its result directly to a host pointer, and is executed on the host rather than the device. The output may not necessarily be bit-for-bit identical, but it can be equally used by either O or O. Valid UsageVUID-vkCopyAccelerationStructureToMemoryKHR-deferredOperation-03677 If deferredOperation is not , it must be a valid  objectVUID-vkCopyAccelerationStructureToMemoryKHR-deferredOperation-03678 Any previous deferred operation that was associated with deferredOperation must be complete8VUID-vkCopyAccelerationStructureToMemoryKHR-buffer-03731 The buffer used to create  pInfo->src must, be bound to host-visible device memory7VUID-vkCopyAccelerationStructureToMemoryKHR-pInfo-03732 pInfo->dst.hostAddress must be a valid host pointer7VUID-vkCopyAccelerationStructureToMemoryKHR-pInfo-03751 pInfo->dst.hostAddress must be aligned to 16 bytesVUID-vkCopyAccelerationStructureToMemoryKHR-accelerationStructureHostCommands-03584 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructureHostCommands#::accelerationStructureHostCommands feature must be enabled8VUID-vkCopyAccelerationStructureToMemoryKHR-buffer-03783 The buffer used to create  pInfo->src must be bound to memory that was not allocated with multiple instancesValid Usage (Implicit)dst must be  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized with the     https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stagespipeline stage and an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type of '. Accesses to the buffer indicated by pInfo->src.deviceAddress must be synchronized with the   ( pipeline stage and an access type of .This command can accept acceleration structures produced by either O or O.The structure provided as input to deserialize is as described in O, with any acceleration structure handles filled in with the newly-queried handles to bottom level acceleration structures created before deserialization. These do not need to be built at deserialize time, but must be created. Valid Usage:VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-03742 pInfo->src.deviceAddress must be a valid device address for a buffer bound to device memory:VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-03743 pInfo->src.deviceAddress must be aligned to 256 bytes:VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-03744" If the buffer pointed to by pInfo->src.deviceAddress is non-sparse then it must7 be bound completely and contiguously to a single 0  object;VUID-vkCmdCopyMemoryToAccelerationStructureKHR-buffer-03745 The buffer used to create  pInfo->dst must be bound to device memoryValid Usage (Implicit)VUID-vkCmdCopyMemoryToAccelerationStructureKHR-commandBuffer-parameter  commandBuffer must be a valid  handle>VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-parameter pInfo must$ be a valid pointer to a valid  structureVUID-vkCmdCopyMemoryToAccelerationStructureKHR-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateVUID-vkCmdCopyMemoryToAccelerationStructureKHR-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support compute operations9VUID-vkCmdCopyMemoryToAccelerationStructureKHR-renderpass This command must1 only be called outside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryOutside Compute See Also, OvulkanvkCopyMemoryToAccelerationStructureKHR - Deserialize an acceleration structure on the host Description(This command fulfills the same task as O but is executed by the host.This command can accept acceleration structures produced by either O or O. Valid UsageVUID-vkCopyMemoryToAccelerationStructureKHR-deferredOperation-03677 If deferredOperation is not , it must be a valid  objectVUID-vkCopyMemoryToAccelerationStructureKHR-deferredOperation-03678 Any previous deferred operation that was associated with deferredOperation must be complete7VUID-vkCopyMemoryToAccelerationStructureKHR-pInfo-03729 pInfo->src.hostAddress must be a valid host pointer7VUID-vkCopyMemoryToAccelerationStructureKHR-pInfo-03750 pInfo->src.hostAddress must be aligned to 16 bytes8VUID-vkCopyMemoryToAccelerationStructureKHR-buffer-03730 The buffer used to create  pInfo->dst must, be bound to host-visible device memoryVUID-vkCopyMemoryToAccelerationStructureKHR-accelerationStructureHostCommands-03583 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructureHostCommands#::accelerationStructureHostCommands feature must be enabled8VUID-vkCopyMemoryToAccelerationStructureKHR-buffer-03782 The buffer used to create  pInfo->dst must be bound to memory that was not allocated with multiple instancesValid Usage (Implicit)VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-query-04880 The sum of query plus accelerationStructureCount must8 be less than or equal to the number of queries in  queryPoolVUID-vkCmdWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-04964% All acceleration structures in pAccelerationStructures must< have been built prior to the execution of this commandVUID-vkCmdWriteAccelerationStructuresPropertiesKHR-accelerationStructures-03431% All acceleration structures in pAccelerationStructures must have been built with O if  queryType is VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryType-03432  queryType must be  or Valid Usage (Implicit)VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commandBuffer-parameter  commandBuffer must be a valid  handleVUID-vkCmdWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-parameter pAccelerationStructures must( be a valid pointer to an array of accelerationStructureCount valid  handlesVUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryType-parameter  queryType must be a valid ` valueVUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryPool-parameter  queryPool must be a valid } handleVUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateVUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support compute operations=VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-renderpass This command must1 only be called outside of a render pass instanceVUID-vkCmdWriteAccelerationStructuresPropertiesKHR-accelerationStructureCount-arraylength accelerationStructureCount must be greater than 0?VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commonparent Each of  commandBuffer,  queryPool, and the elements of pAccelerationStructures must? have been created, allocated, or retrieved from the same Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryOutside Compute See Also, , }, `OvulkanvkWriteAccelerationStructuresPropertiesKHR - Query acceleration structure meta-data on the host Description(This command fulfills the same task as O but is executed by the host. Valid UsageVUID-vkWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-04964% All acceleration structures in pAccelerationStructures must< have been built prior to the execution of this command VUID-vkWriteAccelerationStructuresPropertiesKHR-accelerationStructures-03431% All acceleration structures in pAccelerationStructures must have been built with O if  queryType is ?VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03432  queryType must be  or ?VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03448 If  queryType is  , then stride must# be a multiple of the size of o?VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03449 If  queryType is  , then data must point to a o?VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03450 If  queryType is  , then stride must# be a multiple of the size of o?VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03451 If  queryType is  , then data must point to a o>VUID-vkWriteAccelerationStructuresPropertiesKHR-dataSize-03452 dataSize must" be greater than or equal to accelerationStructureCount*strideVUID-vkCmdBuildAccelerationStructuresKHR-srcAccelerationStructure-04629 If the srcAccelerationStructure member of any element of pInfos is not  , the srcAccelerationStructure member must be a valid  handle5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-04630 For each element of pInfos , if its mode member is O , its srcAccelerationStructure member must not be 5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03403 The srcAccelerationStructure member of any element of pInfos must9 not be the same acceleration structure as the dstAccelerationStructure member of any other element of pInfosVUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03698 The dstAccelerationStructure member of any element of pInfos must4 not be the same acceleration structure as the dstAccelerationStructure member of any other element of pInfosVUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03800 The dstAccelerationStructure member of any element of pInfos must be a valid  handle5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03699 For each element of pInfos , if its type member is O , its dstAccelerationStructure member must( have been created with a value of ::type equal to either O or O5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03700 For each element of pInfos , if its type member is O , its dstAccelerationStructure member must( have been created with a value of ::type equal to either O or O5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03663 For each element of pInfos , if its mode member is O,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-primsinactive primitives in its srcAccelerationStructure member must not be made active5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03664 For each element of pInfos , if its mode member is O , active primitives in its srcAccelerationStructure member must not be made https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-primsinactive3VUID-vkCmdBuildAccelerationStructuresKHR-None-03407 The dstAccelerationStructure member of any element of pInfos must not be referenced by the geometry.instances.data member of any element of  pGeometries or  ppGeometries with a  geometryType of O in any other element of pInfosVUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03701& The range of memory backing the dstAccelerationStructure member of any element of pInfos" that is accessed by this command must) not overlap the memory backing the srcAccelerationStructure% member of any other element of pInfos with a mode equal to O(, which is accessed by this commandVUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03702& The range of memory backing the dstAccelerationStructure member of any element of pInfos" that is accessed by this command must) not overlap the memory backing the dstAccelerationStructure% member of any other element of pInfos#, which is accessed by this commandVUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03703& The range of memory backing the dstAccelerationStructure member of any element of pInfos" that is accessed by this command must) not overlap the memory backing the  scratchData member of any element of pInfos (including the same element), which is accessed by this command:VUID-vkCmdBuildAccelerationStructuresKHR-scratchData-03704& The range of memory backing the  scratchData member of any element of pInfos" that is accessed by this command must) not overlap the memory backing the  scratchData% member of any other element of pInfos#, which is accessed by this command:VUID-vkCmdBuildAccelerationStructuresKHR-scratchData-03705& The range of memory backing the  scratchData member of any element of pInfos" that is accessed by this command must) not overlap the memory backing the srcAccelerationStructure member of any element of pInfos with a mode equal to O (including the same element), which is accessed by this commandVUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03706& The range of memory backing the dstAccelerationStructure member of any element of pInfos" that is accessed by this command must not overlap the memory backing any acceleration structure referenced by the geometry.instances.data member of any element of  pGeometries or  ppGeometries with a  geometryType of O in any other element of pInfos(, which is accessed by this command5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03667 For each element of pInfos , if its mode member is O , its srcAccelerationStructure member must, have previously been constructed with O set in ::flags in the build5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03668 For each element of pInfos , if its mode member is O , its srcAccelerationStructure and dstAccelerationStructure members must either be the same , or not have any https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasingmemory aliasing5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03758 For each element of pInfos , if its mode member is O, its  geometryCount member must3 have the same value which was specified when srcAccelerationStructure was last built5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03759 For each element of pInfos , if its mode member is O, its flags member must3 have the same value which was specified when srcAccelerationStructure was last built5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03760 For each element of pInfos , if its mode member is O, its type member must3 have the same value which was specified when srcAccelerationStructure was last built5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03761 For each element of pInfos , if its mode member is O, then for each # structure referred to by its  pGeometries or  ppGeometries members, its  geometryType member must3 have the same value which was specified when srcAccelerationStructure was last built5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03762 For each element of pInfos , if its mode member is O, then for each # structure referred to by its  pGeometries or  ppGeometries members, its flags member must8 have the same value which was specified when srcAccelerationStructure was last built5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03763 For each element of pInfos , if its mode member is O, then for each # structure referred to by its  pGeometries or  ppGeometries members, if  geometryType is O, its geometry.triangles.vertexFormat member must3 have the same value which was specified when srcAccelerationStructure was last built5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03764 For each element of pInfos , if its mode member is O, then for each # structure referred to by its  pGeometries or  ppGeometries members, if  geometryType is O, its geometry.triangles.maxVertex member must3 have the same value which was specified when srcAccelerationStructure was last built5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03765 For each element of pInfos , if its mode member is O, then for each # structure referred to by its  pGeometries or  ppGeometries members, if  geometryType is O, its geometry.triangles.indexType member must3 have the same value which was specified when srcAccelerationStructure was last built5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03766 For each element of pInfos , if its mode member is O, then for each # structure referred to by its  pGeometries or  ppGeometries members, if  geometryType is O, if its  geometry.triangles.transformData address was NULL when srcAccelerationStructure was last built, then it must be NULL5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03767 For each element of pInfos , if its mode member is O, then for each # structure referred to by its  pGeometries or  ppGeometries members, if  geometryType is O, if its  geometry.triangles.transformData address was not NULL when srcAccelerationStructure was last built, then it must not be NULL5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03768 For each element of pInfos , if its mode member is O, then for each # structure referred to by its  pGeometries or  ppGeometries members, if  geometryType is O, and geometry.triangles.indexType is not /, then the value of each index referenced must8 be the same as the corresponding index value when srcAccelerationStructure was last built=VUID-vkCmdBuildAccelerationStructuresKHR-primitiveCount-03769 For each & referenced by this command, its primitiveCount member must3 have the same value which was specified when srcAccelerationStructure was last built:VUID-vkCmdBuildAccelerationStructuresKHR-firstVertex-03770 For each  referenced by this command, if the corresponding geometry uses indices, its  firstVertex member must3 have the same value which was specified when srcAccelerationStructure was last built5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03801 For each element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O, the corresponding ppBuildRangeInfos[i][j].primitiveCount must$ be less than or equal to ::maxInstanceCount5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03707 For each element of pInfos, the buffer used to create its dstAccelerationStructure member must be bound to device memory5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03708 For each element of pInfos , if its mode member is O the buffer used to create its srcAccelerationStructure member must be bound to device memory5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03709 For each element of pInfos, the buffer used to create each acceleration structure referenced by the geometry.instances.data member of any element of  pGeometries or  ppGeometries with a  geometryType of O must be bound to device memory5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03671 If pInfos[i].mode is O, all addresses between pInfos[i].scratchData.deviceAddress and pInfos[i].scratchData.deviceAddress + N - 1 must be in the buffer device address range of the same buffer, where N is given by the buildScratchSize member of the ( structure returned from a call to O with an identical # structure and primitive count5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03672 If pInfos[i].mode is O, all addresses between pInfos[i].scratchData.deviceAddress and pInfos[i].scratchData.deviceAddress + N - 1 must be in the buffer device address range of the same buffer, where N is given by the updateScratchSize member of the ( structure returned from a call to O with an identical # structure and primitive count7VUID-vkCmdBuildAccelerationStructuresKHR-geometry-03673 The buffers from which the buffer device addresses for all of the geometry.triangles.vertexData, geometry.triangles.indexData,  geometry.triangles.transformData, geometry.aabbs.data , and geometry.instances.data members of all pInfos[i]. pGeometries and pInfos[i]. ppGeometries are queried must& have been created with the  usage flag5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03674; The buffer from which the buffer device address pInfos[i].scratchData.deviceAddress is queried must" have been created with  usage flag5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03802 For each element of pInfos, its scratchData.deviceAddress member must3 be a valid device address obtained from c 5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03803 For each element of pInfos, if scratchData.deviceAddress4 is the address of a non-sparse buffer then it must7 be bound completely and contiguously to a single 0  object5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03710 For each element of pInfos, its scratchData.deviceAddress member must be a multiple of ::.minAccelerationStructureScratchOffsetAlignment5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03804 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O, +geometry.triangles.vertexData.deviceAddress must3 be a valid device address obtained from c 5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03805 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O , if +geometry.triangles.vertexData.deviceAddress4 is the address of a non-sparse buffer then it must7 be bound completely and contiguously to a single 0  object5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03711 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O, +geometry.triangles.vertexData.deviceAddress must be aligned to the size in bytes of the smallest component of the format in  vertexFormat5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03806 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O , if geometry.triangles.indexType is not , *geometry.triangles.indexData.deviceAddress must3 be a valid device address obtained from c 5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03807 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O , if geometry.triangles.indexType is not  , if *geometry.triangles.indexData.deviceAddress4 is the address of a non-sparse buffer then it must7 be bound completely and contiguously to a single 0  object5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03712 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O, and with geometry.triangles.indexType not equal to , *geometry.triangles.indexData.deviceAddress must5 be aligned to the size in bytes of the type in  indexType5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03808 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O , if .geometry.triangles.transformData.deviceAddress is not 0 , it must. be a valid device address obtained from c 5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03809 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O , if .geometry.triangles.transformData.deviceAddress4 is the address of a non-sparse buffer then it must7 be bound completely and contiguously to a single 0  object5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03810 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O , if .geometry.triangles.transformData.deviceAddress is not 0 , it must be aligned to 16 bytes5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03811 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O, !geometry.aabbs.data.deviceAddress must3 be a valid device address obtained from c 5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03812 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O , if !geometry.aabbs.data.deviceAddress4 is the address of a non-sparse buffer then it must7 be bound completely and contiguously to a single 0  object5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03714 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O, !geometry.aabbs.data.deviceAddress must be aligned to 8 bytes5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03715 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O , if geometry.arrayOfPointers is /, %geometry.instances.data.deviceAddress must be aligned to 16 bytes5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03716 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O , if geometry.arrayOfPointers is /, %geometry.instances.data.deviceAddress must be aligned to 8 bytes5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03717 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O , if geometry.arrayOfPointers is /, each element of %geometry.instances.data.deviceAddress in device memory must be aligned to 16 bytes5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03813 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O, %geometry.instances.data.deviceAddress must3 be a valid device address obtained from c 5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03814 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O , if %geometry.instances.data.deviceAddress4 is the address of a non-sparse buffer then it must7 be bound completely and contiguously to a single 0  object5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03815 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O , each ::accelerationStructureReference value in %geometry.instances.data.deviceAddress must be a valid device address containing a value obtained from O5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03675 For each pInfos[i], dstAccelerationStructure must( have been created with a value of ::size greater than or equal to the memory size required by the build operation, as returned by O with  pBuildInfo = pInfos&[i] and with each element of the pMaxPrimitiveCounts4 array greater than or equal to the equivalent ppBuildRangeInfos[i][j].primitiveCount values for j in [0,pInfos[i]. geometryCount)VUID-vkCmdBuildAccelerationStructuresKHR-ppBuildRangeInfos-03676 Each element of ppBuildRangeInfos[i] must( be a valid pointer to an array of pInfos[i]. geometryCount  structuresValid Usage (Implicit)VUID-vkCmdBuildAccelerationStructuresKHR-commandBuffer-parameter  commandBuffer must be a valid  handle9VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-parameter pInfos must# be a valid pointer to an array of  infoCount valid  structuresVUID-vkCmdBuildAccelerationStructuresKHR-ppBuildRangeInfos-parameter ppBuildRangeInfos must( be a valid pointer to an array of  infoCount  structuresVUID-vkCmdBuildAccelerationStructuresKHR-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state>VUID-vkCmdBuildAccelerationStructuresKHR-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support compute operations3VUID-vkCmdBuildAccelerationStructuresKHR-renderpass This command must1 only be called outside of a render pass instance>VUID-vkCmdBuildAccelerationStructuresKHR-infoCount-arraylength  infoCount must be greater than 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryOutside Compute See Also, , OvulkanvkCmdBuildAccelerationStructuresIndirectKHR - Build an acceleration structure with some parameters provided on the device DescriptionAccesses to acceleration structures, scratch buffers, vertex buffers, index buffers, and instance buffers must be synchronized as with O.Accesses to any element of pIndirectDeviceAddresses must be  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized with the     https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stagespipeline stage and an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type of . Valid Usage;VUID-vkCmdBuildAccelerationStructuresIndirectKHR-mode-04628 The mode member of each element of pInfos must be a valid N valueVUID-vkCmdBuildAccelerationStructuresIndirectKHR-srcAccelerationStructure-04629 If the srcAccelerationStructure member of any element of pInfos is not  , the srcAccelerationStructure member must be a valid  handle=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-04630 For each element of pInfos , if its mode member is O , its srcAccelerationStructure member must not be =VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03403 The srcAccelerationStructure member of any element of pInfos must9 not be the same acceleration structure as the dstAccelerationStructure member of any other element of pInfosVUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03698 The dstAccelerationStructure member of any element of pInfos must4 not be the same acceleration structure as the dstAccelerationStructure member of any other element of pInfosVUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03800 The dstAccelerationStructure member of any element of pInfos must be a valid  handle=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03699 For each element of pInfos , if its type member is O , its dstAccelerationStructure member must( have been created with a value of ::type equal to either O or O=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03700 For each element of pInfos , if its type member is O , its dstAccelerationStructure member must( have been created with a value of ::type equal to either O or O=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03663 For each element of pInfos , if its mode member is O,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-primsinactive primitives in its srcAccelerationStructure member must not be made active=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03664 For each element of pInfos , if its mode member is O , active primitives in its srcAccelerationStructure member must not be made https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-primsinactive;VUID-vkCmdBuildAccelerationStructuresIndirectKHR-None-03407 The dstAccelerationStructure member of any element of pInfos must not be referenced by the geometry.instances.data member of any element of  pGeometries or  ppGeometries with a  geometryType of O in any other element of pInfosVUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03701& The range of memory backing the dstAccelerationStructure member of any element of pInfos" that is accessed by this command must) not overlap the memory backing the srcAccelerationStructure% member of any other element of pInfos with a mode equal to O(, which is accessed by this commandVUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03702& The range of memory backing the dstAccelerationStructure member of any element of pInfos" that is accessed by this command must) not overlap the memory backing the dstAccelerationStructure% member of any other element of pInfos#, which is accessed by this commandVUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03703& The range of memory backing the dstAccelerationStructure member of any element of pInfos" that is accessed by this command must) not overlap the memory backing the  scratchData member of any element of pInfos (including the same element), which is accessed by this commandVUID-vkCmdBuildAccelerationStructuresIndirectKHR-scratchData-03704& The range of memory backing the  scratchData member of any element of pInfos" that is accessed by this command must) not overlap the memory backing the  scratchData% member of any other element of pInfos#, which is accessed by this commandVUID-vkCmdBuildAccelerationStructuresIndirectKHR-scratchData-03705& The range of memory backing the  scratchData member of any element of pInfos" that is accessed by this command must) not overlap the memory backing the srcAccelerationStructure member of any element of pInfos with a mode equal to O (including the same element), which is accessed by this commandVUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03706& The range of memory backing the dstAccelerationStructure member of any element of pInfos" that is accessed by this command must not overlap the memory backing any acceleration structure referenced by the geometry.instances.data member of any element of  pGeometries or  ppGeometries with a  geometryType of O in any other element of pInfos(, which is accessed by this command=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03667 For each element of pInfos , if its mode member is O , its srcAccelerationStructure member must, have previously been constructed with O set in ::flags in the build=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03668 For each element of pInfos , if its mode member is O , its srcAccelerationStructure and dstAccelerationStructure members must either be the same , or not have any https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasingmemory aliasing=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03758 For each element of pInfos , if its mode member is O, its  geometryCount member must3 have the same value which was specified when srcAccelerationStructure was last built=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03759 For each element of pInfos , if its mode member is O, its flags member must3 have the same value which was specified when srcAccelerationStructure was last built=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03760 For each element of pInfos , if its mode member is O, its type member must3 have the same value which was specified when srcAccelerationStructure was last built=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03761 For each element of pInfos , if its mode member is O, then for each # structure referred to by its  pGeometries or  ppGeometries members, its  geometryType member must3 have the same value which was specified when srcAccelerationStructure was last built=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03762 For each element of pInfos , if its mode member is O, then for each # structure referred to by its  pGeometries or  ppGeometries members, its flags member must8 have the same value which was specified when srcAccelerationStructure was last built=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03763 For each element of pInfos , if its mode member is O, then for each # structure referred to by its  pGeometries or  ppGeometries members, if  geometryType is O, its geometry.triangles.vertexFormat member must3 have the same value which was specified when srcAccelerationStructure was last built=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03764 For each element of pInfos , if its mode member is O, then for each # structure referred to by its  pGeometries or  ppGeometries members, if  geometryType is O, its geometry.triangles.maxVertex member must3 have the same value which was specified when srcAccelerationStructure was last built=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03765 For each element of pInfos , if its mode member is O, then for each # structure referred to by its  pGeometries or  ppGeometries members, if  geometryType is O, its geometry.triangles.indexType member must3 have the same value which was specified when srcAccelerationStructure was last built=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03766 For each element of pInfos , if its mode member is O, then for each # structure referred to by its  pGeometries or  ppGeometries members, if  geometryType is O, if its  geometry.triangles.transformData address was NULL when srcAccelerationStructure was last built, then it must be NULL=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03767 For each element of pInfos , if its mode member is O, then for each # structure referred to by its  pGeometries or  ppGeometries members, if  geometryType is O, if its  geometry.triangles.transformData address was not NULL when srcAccelerationStructure was last built, then it must not be NULL=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03768 For each element of pInfos , if its mode member is O, then for each # structure referred to by its  pGeometries or  ppGeometries members, if  geometryType is O, and geometry.triangles.indexType is not /, then the value of each index referenced must8 be the same as the corresponding index value when srcAccelerationStructure was last builtVUID-vkCmdBuildAccelerationStructuresIndirectKHR-primitiveCount-03769 For each & referenced by this command, its primitiveCount member must3 have the same value which was specified when srcAccelerationStructure was last builtVUID-vkCmdBuildAccelerationStructuresIndirectKHR-firstVertex-03770 For each  referenced by this command, if the corresponding geometry uses indices, its  firstVertex member must3 have the same value which was specified when srcAccelerationStructure was last built=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03801 For each element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O, the corresponding ppMaxPrimitiveCounts[i][j] must be less than or equal to ::maxInstanceCount=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03707 For each element of pInfos, the buffer used to create its dstAccelerationStructure member must be bound to device memory=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03708 For each element of pInfos , if its mode member is O the buffer used to create its srcAccelerationStructure member must be bound to device memory=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03709 For each element of pInfos, the buffer used to create each acceleration structure referenced by the geometry.instances.data member of any element of  pGeometries or  ppGeometries with a  geometryType of O must be bound to device memory=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03671 If pInfos[i].mode is O, all addresses between pInfos[i].scratchData.deviceAddress and pInfos[i].scratchData.deviceAddress + N - 1 must be in the buffer device address range of the same buffer, where N is given by the buildScratchSize member of the ( structure returned from a call to O with an identical # structure and primitive count=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03672 If pInfos[i].mode is O, all addresses between pInfos[i].scratchData.deviceAddress and pInfos[i].scratchData.deviceAddress + N - 1 must be in the buffer device address range of the same buffer, where N is given by the updateScratchSize member of the ( structure returned from a call to O with an identical # structure and primitive count?VUID-vkCmdBuildAccelerationStructuresIndirectKHR-geometry-03673 The buffers from which the buffer device addresses for all of the geometry.triangles.vertexData, geometry.triangles.indexData,  geometry.triangles.transformData, geometry.aabbs.data , and geometry.instances.data members of all pInfos[i]. pGeometries and pInfos[i]. ppGeometries are queried must& have been created with the  usage flag=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03674; The buffer from which the buffer device address pInfos[i].scratchData.deviceAddress is queried must" have been created with  usage flag=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03802 For each element of pInfos, its scratchData.deviceAddress member must. be a valid device address obtained from c =VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03803 For each element of pInfos, if scratchData.deviceAddress4 is the address of a non-sparse buffer then it must7 be bound completely and contiguously to a single 0  object=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03710 For each element of pInfos, its scratchData.deviceAddress member must be a multiple of ::.minAccelerationStructureScratchOffsetAlignment=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03804 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O, +geometry.triangles.vertexData.deviceAddress must3 be a valid device address obtained from c =VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03805 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O , if +geometry.triangles.vertexData.deviceAddress4 is the address of a non-sparse buffer then it must7 be bound completely and contiguously to a single 0  object=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03711 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O, +geometry.triangles.vertexData.deviceAddress must be aligned to the size in bytes of the smallest component of the format in  vertexFormat=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03806 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O, if geometry.triangles.indexType is not , *geometry.triangles.indexData.deviceAddress must3 be a valid device address obtained from c =VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03807 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O, if geometry.triangles.indexType is not  , if *geometry.triangles.indexData.deviceAddress4 is the address of a non-sparse buffer then it must7 be bound completely and contiguously to a single 0  object=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03712 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O, and with geometry.triangles.indexType not equal to , *geometry.triangles.indexData.deviceAddress must5 be aligned to the size in bytes of the type in  indexType=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03808 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O , if .geometry.triangles.transformData.deviceAddress is not 0 , it must. be a valid device address obtained from c =VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03809 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O , if .geometry.triangles.transformData.deviceAddress4 is the address of a non-sparse buffer then it must7 be bound completely and contiguously to a single 0  object=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03810 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O , if .geometry.triangles.transformData.deviceAddress is not 0 , it must be aligned to 16 bytes=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03811 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O, !geometry.aabbs.data.deviceAddress must. be a valid device address obtained from c =VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03812 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O, if !geometry.aabbs.data.deviceAddress4 is the address of a non-sparse buffer then it must< be bound completely and contiguously to a single 0  object=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03714 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O, !geometry.aabbs.data.deviceAddress must be aligned to 8 bytes=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03715 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O, if geometry.arrayOfPointers is /, %geometry.instances.data.deviceAddress must be aligned to 16 bytes=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03716 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O, if geometry.arrayOfPointers is /, %geometry.instances.data.deviceAddress must be aligned to 8 bytes=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03717 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O, if geometry.arrayOfPointers is /, each element of %geometry.instances.data.deviceAddress in device memory must be aligned to 16 bytes=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03813 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O, %geometry.instances.data.deviceAddress must3 be a valid device address obtained from c =VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03814 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O , if %geometry.instances.data.deviceAddress4 is the address of a non-sparse buffer then it must7 be bound completely and contiguously to a single 0  object=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03815 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O , each ::accelerationStructureReference value in %geometry.instances.data.deviceAddress must be a valid device address containing a value obtained from OVUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03645 For any element of pIndirectDeviceAddresses, if the buffer from which it was queried is non-sparse then it must< be bound completely and contiguously to a single 0  objectVUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03646 For any element of pIndirectDeviceAddresses'[i], all device addresses between pIndirectDeviceAddresses [i] and pIndirectDeviceAddresses[i] + (pInfos[i]. geometryCount  pIndirectStrides [i]) - 1 must> be in the buffer device address range of the same bufferVUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03647 For any element of pIndirectDeviceAddresses,, the buffer from which it was queried must! have been created with the   bit setVUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03648 Each element of pIndirectDeviceAddresses must be a multiple of 4VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectStrides-03787 Each element of pIndirectStrides must be a multiple of 4VUID-vkCmdBuildAccelerationStructuresIndirectKHR-commandBuffer-03649  commandBuffer must" not be a protected command bufferVUID-vkCmdBuildAccelerationStructuresIndirectKHR-accelerationStructureIndirectBuild-03650 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructureIndirectBuild$::accelerationStructureIndirectBuild feature must be enabledVUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03651 Each - structure referenced by any element of pIndirectDeviceAddresses must be a valid  structure=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03652 pInfos[i].dstAccelerationStructure must( have been created with a value of ::size greater than or equal to the memory size required by the build operation, as returned by O with  pBuildInfo = pInfos[i] and pMaxPrimitiveCounts = ppMaxPrimitiveCounts[i]VUID-vkCmdBuildAccelerationStructuresIndirectKHR-ppMaxPrimitiveCounts-03653 Each ppMaxPrimitiveCounts[i][j] must* be greater than or equal to the the primitiveCount value specified by the  structure located at pIndirectDeviceAddresses[i] + (j  pIndirectStrides[i])Valid Usage (Implicit)VUID-vkCmdBuildAccelerationStructuresIndirectKHR-commandBuffer-parameter  commandBuffer must be a valid  handleVUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-parameter pInfos must# be a valid pointer to an array of  infoCount valid  structuresVUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-parameter pIndirectDeviceAddresses must( be a valid pointer to an array of  infoCount p valuesVUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectStrides-parameter pIndirectStrides must( be a valid pointer to an array of  infoCount uint32_t valuesVUID-vkCmdBuildAccelerationStructuresIndirectKHR-ppMaxPrimitiveCounts-parameter ppMaxPrimitiveCounts must( be a valid pointer to an array of  infoCount uint32_t valuesVUID-vkCmdBuildAccelerationStructuresIndirectKHR-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateVUID-vkCmdBuildAccelerationStructuresIndirectKHR-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support compute operations;VUID-vkCmdBuildAccelerationStructuresIndirectKHR-renderpass This command must1 only be called outside of a render pass instanceVUID-vkCmdBuildAccelerationStructuresIndirectKHR-infoCount-arraylength  infoCount must be greater than 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryOutside Compute See Also, , pOvulkanvkBuildAccelerationStructuresKHR - Build an acceleration structure on the host Description(This command fulfills the same task as O but is executed by the host.The O command provides the ability to initiate multiple acceleration structures builds, however there is no ordering or synchronization implied between any of the individual acceleration structure builds.NoteThis means that an application cannot7 build a top-level acceleration structure in the same O call as the associated bottom-level or instance acceleration structures are being built. There also cannot be any memory aliasing between any acceleration structure memories or scratch memories being used by any of the builds. Valid Usage0VUID-vkBuildAccelerationStructuresKHR-mode-04628 The mode member of each element of pInfos must be a valid N value4VUID-vkBuildAccelerationStructuresKHR-srcAccelerationStructure-04629 If the srcAccelerationStructure member of any element of pInfos is not  , the srcAccelerationStructure member must be a valid  handle2VUID-vkBuildAccelerationStructuresKHR-pInfos-04630 For each element of pInfos , if its mode member is O , its srcAccelerationStructure member must not be 2VUID-vkBuildAccelerationStructuresKHR-pInfos-03403 The srcAccelerationStructure member of any element of pInfos must9 not be the same acceleration structure as the dstAccelerationStructure member of any other element of pInfosVUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03698 The dstAccelerationStructure member of any element of pInfos must4 not be the same acceleration structure as the dstAccelerationStructure member of any other element of pInfosVUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03800 The dstAccelerationStructure member of any element of pInfos must be a valid  handle2VUID-vkBuildAccelerationStructuresKHR-pInfos-03699 For each element of pInfos , if its type member is O , its dstAccelerationStructure member must( have been created with a value of ::type equal to either O or O2VUID-vkBuildAccelerationStructuresKHR-pInfos-03700 For each element of pInfos , if its type member is O , its dstAccelerationStructure member must( have been created with a value of ::type equal to either O or O2VUID-vkBuildAccelerationStructuresKHR-pInfos-03663 For each element of pInfos , if its mode member is O,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-primsinactive primitives in its srcAccelerationStructure member must not be made active2VUID-vkBuildAccelerationStructuresKHR-pInfos-03664 For each element of pInfos , if its mode member is O , active primitives in its srcAccelerationStructure member must not be made https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-primsinactive0VUID-vkBuildAccelerationStructuresKHR-None-03407 The dstAccelerationStructure member of any element of pInfos must not be referenced by the geometry.instances.data member of any element of  pGeometries or  ppGeometries with a  geometryType of O in any other element of pInfosVUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03701& The range of memory backing the dstAccelerationStructure member of any element of pInfos" that is accessed by this command must) not overlap the memory backing the srcAccelerationStructure% member of any other element of pInfos with a mode equal to O(, which is accessed by this commandVUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03702& The range of memory backing the dstAccelerationStructure member of any element of pInfos" that is accessed by this command must) not overlap the memory backing the dstAccelerationStructure% member of any other element of pInfos#, which is accessed by this commandVUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03703& The range of memory backing the dstAccelerationStructure member of any element of pInfos" that is accessed by this command must) not overlap the memory backing the  scratchData member of any element of pInfos (including the same element), which is accessed by this command7VUID-vkBuildAccelerationStructuresKHR-scratchData-03704& The range of memory backing the  scratchData member of any element of pInfos" that is accessed by this command must) not overlap the memory backing the  scratchData% member of any other element of pInfos#, which is accessed by this command7VUID-vkBuildAccelerationStructuresKHR-scratchData-03705& The range of memory backing the  scratchData member of any element of pInfos" that is accessed by this command must) not overlap the memory backing the srcAccelerationStructure member of any element of pInfos with a mode equal to O (including the same element), which is accessed by this commandVUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03706& The range of memory backing the dstAccelerationStructure member of any element of pInfos" that is accessed by this command must not overlap the memory backing any acceleration structure referenced by the geometry.instances.data member of any element of  pGeometries or  ppGeometries with a  geometryType of O in any other element of pInfos(, which is accessed by this command2VUID-vkBuildAccelerationStructuresKHR-pInfos-03667 For each element of pInfos , if its mode member is O , its srcAccelerationStructure member must, have previously been constructed with O set in ::flags in the build2VUID-vkBuildAccelerationStructuresKHR-pInfos-03668 For each element of pInfos , if its mode member is O , its srcAccelerationStructure and dstAccelerationStructure members must either be the same , or not have any https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasingmemory aliasing2VUID-vkBuildAccelerationStructuresKHR-pInfos-03758 For each element of pInfos , if its mode member is O, its  geometryCount member must3 have the same value which was specified when srcAccelerationStructure was last built2VUID-vkBuildAccelerationStructuresKHR-pInfos-03759 For each element of pInfos , if its mode member is O, its flags member must3 have the same value which was specified when srcAccelerationStructure was last built2VUID-vkBuildAccelerationStructuresKHR-pInfos-03760 For each element of pInfos , if its mode member is O, its type member must3 have the same value which was specified when srcAccelerationStructure was last built2VUID-vkBuildAccelerationStructuresKHR-pInfos-03761 For each element of pInfos , if its mode member is O, then for each # structure referred to by its  pGeometries or  ppGeometries members, its  geometryType member must3 have the same value which was specified when srcAccelerationStructure was last built2VUID-vkBuildAccelerationStructuresKHR-pInfos-03762 For each element of pInfos , if its mode member is O, then for each # structure referred to by its  pGeometries or  ppGeometries members, its flags member must8 have the same value which was specified when srcAccelerationStructure was last built2VUID-vkBuildAccelerationStructuresKHR-pInfos-03763 For each element of pInfos , if its mode member is O, then for each # structure referred to by its  pGeometries or  ppGeometries members, if  geometryType is O, its geometry.triangles.vertexFormat member must3 have the same value which was specified when srcAccelerationStructure was last built2VUID-vkBuildAccelerationStructuresKHR-pInfos-03764 For each element of pInfos , if its mode member is O, then for each # structure referred to by its  pGeometries or  ppGeometries members, if  geometryType is O, its geometry.triangles.maxVertex member must3 have the same value which was specified when srcAccelerationStructure was last built2VUID-vkBuildAccelerationStructuresKHR-pInfos-03765 For each element of pInfos , if its mode member is O, then for each # structure referred to by its  pGeometries or  ppGeometries members, if  geometryType is O, its geometry.triangles.indexType member must3 have the same value which was specified when srcAccelerationStructure was last built2VUID-vkBuildAccelerationStructuresKHR-pInfos-03766 For each element of pInfos , if its mode member is O, then for each # structure referred to by its  pGeometries or  ppGeometries members, if  geometryType is O, if its  geometry.triangles.transformData address was NULL when srcAccelerationStructure was last built, then it must be NULL2VUID-vkBuildAccelerationStructuresKHR-pInfos-03767 For each element of pInfos , if its mode member is O, then for each # structure referred to by its  pGeometries or  ppGeometries members, if  geometryType is O, if its  geometry.triangles.transformData address was not NULL when srcAccelerationStructure was last built, then it must not be NULL2VUID-vkBuildAccelerationStructuresKHR-pInfos-03768 For each element of pInfos , if its mode member is O, then for each # structure referred to by its  pGeometries or  ppGeometries members, if  geometryType is O, and geometry.triangles.indexType is not /, then the value of each index referenced must8 be the same as the corresponding index value when srcAccelerationStructure was last built:VUID-vkBuildAccelerationStructuresKHR-primitiveCount-03769 For each & referenced by this command, its primitiveCount member must3 have the same value which was specified when srcAccelerationStructure was last built7VUID-vkBuildAccelerationStructuresKHR-firstVertex-03770 For each  referenced by this command, if the corresponding geometry uses indices, its  firstVertex member must3 have the same value which was specified when srcAccelerationStructure was last built2VUID-vkBuildAccelerationStructuresKHR-pInfos-03801 For each element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O, the corresponding ppBuildRangeInfos[i][j].primitiveCount must$ be less than or equal to ::maxInstanceCount2VUID-vkBuildAccelerationStructuresKHR-pInfos-03675 For each pInfos[i], dstAccelerationStructure must( have been created with a value of ::size greater than or equal to the memory size required by the build operation, as returned by O with  pBuildInfo = pInfos&[i] and with each element of the pMaxPrimitiveCounts4 array greater than or equal to the equivalent ppBuildRangeInfos[i][j].primitiveCount values for j in [0,pInfos[i]. geometryCount)=VUID-vkBuildAccelerationStructuresKHR-ppBuildRangeInfos-03676 Each element of ppBuildRangeInfos[i] must( be a valid pointer to an array of pInfos[i]. geometryCount  structures=VUID-vkBuildAccelerationStructuresKHR-deferredOperation-03677 If deferredOperation is not  , it must be a valid  object=VUID-vkBuildAccelerationStructuresKHR-deferredOperation-03678 Any previous deferred operation that was associated with deferredOperation must be complete2VUID-vkBuildAccelerationStructuresKHR-pInfos-03722 For each element of pInfos, the buffer used to create its dstAccelerationStructure member must, be bound to host-visible device memory2VUID-vkBuildAccelerationStructuresKHR-pInfos-03723 For each element of pInfos , if its mode member is O the buffer used to create its srcAccelerationStructure member must, be bound to host-visible device memory2VUID-vkBuildAccelerationStructuresKHR-pInfos-03724 For each element of pInfos, the buffer used to create each acceleration structure referenced by the geometry.instances.data member of any element of  pGeometries or  ppGeometries with a  geometryType of O must, be bound to host-visible device memoryVUID-vkBuildAccelerationStructuresKHR-accelerationStructureHostCommands-03581 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructureHostCommands#::accelerationStructureHostCommands feature must be enabled2VUID-vkBuildAccelerationStructuresKHR-pInfos-03725 If pInfos[i].mode is O, all addresses between pInfos[i].scratchData.hostAddress and pInfos[i].scratchData.hostAddress + N - 1 must4 be valid host memory, where N is given by the buildScratchSize member of the ( structure returned from a call to O with an identical # structure and primitive count2VUID-vkBuildAccelerationStructuresKHR-pInfos-03726 If pInfos[i].mode is O, all addresses between pInfos[i].scratchData.hostAddress and pInfos[i].scratchData.hostAddress + N - 1 must4 be valid host memory, where N is given by the updateScratchSize member of the ( structure returned from a call to O with an identical # structure and primitive count2VUID-vkBuildAccelerationStructuresKHR-pInfos-03771 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O, )geometry.triangles.vertexData.hostAddress must be a valid host address2VUID-vkBuildAccelerationStructuresKHR-pInfos-03772 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O , if geometry.triangles.indexType is not , (geometry.triangles.indexData.hostAddress must be a valid host address2VUID-vkBuildAccelerationStructuresKHR-pInfos-03773 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O , if ,geometry.triangles.transformData.hostAddress is not 0, it must be a valid host address2VUID-vkBuildAccelerationStructuresKHR-pInfos-03774 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O, geometry.aabbs.data.hostAddress must be a valid host address2VUID-vkBuildAccelerationStructuresKHR-pInfos-03775 For each element of pInfos, the buffer used to create its dstAccelerationStructure member must be bound to memory that was not allocated with multiple instances2VUID-vkBuildAccelerationStructuresKHR-pInfos-03776 For each element of pInfos , if its mode member is O the buffer used to create its srcAccelerationStructure member must be bound to memory that was not allocated with multiple instances2VUID-vkBuildAccelerationStructuresKHR-pInfos-03777 For each element of pInfos, the buffer used to create each acceleration structure referenced by the geometry.instances.data member of any element of  pGeometries or  ppGeometries with a  geometryType of O must be bound to memory that was not allocated with multiple instances2VUID-vkBuildAccelerationStructuresKHR-pInfos-03778 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O, #geometry.instances.data.hostAddress must be a valid host address2VUID-vkBuildAccelerationStructuresKHR-pInfos-03779 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O , each ::accelerationStructureReference value in #geometry.instances.data.hostAddress must be a valid  object2VUID-vkBuildAccelerationStructuresKHR-pInfos-04930 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of O with O set, each accelerationStructureReference in any structure in  value in #geometry.instances.data.hostAddress must be a valid  objectValid Usage (Implicit)6VUID-vkBuildAccelerationStructuresKHR-device-parameter device must be a valid  handleVUID-vkBuildAccelerationStructuresKHR-deferredOperation-parameter If deferredOperation is not , deferredOperation must be a valid  handle6VUID-vkBuildAccelerationStructuresKHR-pInfos-parameter pInfos must# be a valid pointer to an array of  infoCount valid  structuresVUID-vkBuildAccelerationStructuresKHR-ppBuildRangeInfos-parameter ppBuildRangeInfos must( be a valid pointer to an array of  infoCount  structures;VUID-vkBuildAccelerationStructuresKHR-infoCount-arraylength  infoCount must be greater than 0>VUID-vkBuildAccelerationStructuresKHR-deferredOperation-parent If deferredOperation is a valid handle, it must6 have been created, allocated, or retrieved from device Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , OvulkanvkGetAccelerationStructureDeviceAddressKHR - Query an address of a acceleration structure DescriptionThe 64-bit return value is an address of the acceleration structure, which can be used for device and shader operations that involve acceleration structures, such as ray traversal and acceleration structure building.If the acceleration structure was created with a non-zero value of :: deviceAddress-, the return value will be the same address.1If the acceleration structure was created with a type of O, the returned address must be consistent with the relative offset to other acceleration structures with type O allocated with the same . That is, the difference in returned addresses between the two must be the same as the difference in offsets provided at acceleration structure creation.Note*The acceleration structure device address may be different from the buffer device address corresponding to the acceleration structure@s start offset in its storage buffer for acceleration structure types other than O. Valid UsagegeometryCount is not 0, pMaxPrimitiveCounts must( be a valid pointer to an array of pBuildInfo->geometryCount uint32_t values=VUID-vkGetAccelerationStructureBuildSizesKHR-pBuildInfo-03785 If pBuildInfo->pGeometries or pBuildInfo->ppGeometries has a  geometryType of O , each pMaxPrimitiveCounts[i] must be less than or equal to ::maxInstanceCountValid Usage (Implicit)=VUID-vkGetAccelerationStructureBuildSizesKHR-device-parameter device must be a valid  handleVUID-vkGetAccelerationStructureBuildSizesKHR-buildType-parameter  buildType must be a valid  valueVUID-vkGetAccelerationStructureBuildSizesKHR-pBuildInfo-parameter  pBuildInfo must$ be a valid pointer to a valid  structureVUID-vkGetAccelerationStructureBuildSizesKHR-pMaxPrimitiveCounts-parameter If pMaxPrimitiveCounts is not NULL, pMaxPrimitiveCounts must( be a valid pointer to an array of pBuildInfo->geometryCount uint32_t valuesVUID-vkGetAccelerationStructureBuildSizesKHR-pSizeInfo-parameter  pSizeInfo must be a valid pointer to a  structureSee Also, , , Ovulkandevice is the logical device that destroys the acceleration structure.vulkanaccelerationStructure* is the acceleration structure to destroy.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.Ovulkan commandBuffer is the command buffer into which the command will be recorded.vulkanpInfo is a pointer to a ( structure defining the copy operation.Ovulkandevice6 is the device which owns the acceleration structures.vulkandeferredOperation is an optional  to  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operations-requestingrequest deferral for this command.vulkanpInfo is a pointer to a ( structure defining the copy operation.Ovulkan commandBuffer is the command buffer into which the command will be recorded.vulkanpInfo is an a pointer to a ( structure defining the copy operation.Ovulkandevice is the device which owns  pInfo->src.vulkandeferredOperation is an optional  to  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operations-requestingrequest deferral for this command.vulkanpInfo is a pointer to a ( structure defining the copy operation.Ovulkan commandBuffer is the command buffer into which the command will be recorded.vulkanpInfo is a pointer to a ( structure defining the copy operation.Ovulkandevice is the device which owns  pInfo->dst.vulkandeferredOperation is an optional  to  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operations-requestingrequest deferral for this command.vulkanpInfo is a pointer to a ( structure defining the copy operation.Ovulkan commandBuffer is the command buffer into which the command will be recorded.vulkanpAccelerationStructures is a pointer to an array of existing previously built acceleration structures.vulkan queryType is a `; value specifying the type of queries managed by the pool.vulkan queryPool= is the query pool that will manage the results of the query.vulkan firstQuery is the first query index within the query pool that will contain the accelerationStructureCount number of results.Ovulkandevice: is the device which owns the acceleration structures in pAccelerationStructures.vulkanpAccelerationStructures is a pointer to an array of existing previously built acceleration structures.vulkan queryType is a `. value specifying the property to be queried.vulkandataSize2 is the size in bytes of the buffer pointed to by pData.vulkanpData is a pointer to a user-allocated buffer where the results will be written.vulkanstride is the stride in bytes between results for individual queries within pData.Ovulkandevice, is the device to check the version against.vulkan pVersionInfo is a pointer to a  structure specifying version information to check against the device.Ovulkandevice is the logical device that creates the acceleration structure object.vulkan pCreateInfo is a pointer to a  structure containing parameters affecting creation of the acceleration structure.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.Ovulkan commandBuffer is the command buffer into which the command will be recorded.vulkanpInfos is a pointer to an array of  infoCount  structures defining the geometry used to build each acceleration structure.vulkanppBuildRangeInfos is a pointer to an array of  infoCount pointers to arrays of  structures. Each ppBuildRangeInfos![i] is a pointer to an array of pInfos[i]. geometryCount  structures defining dynamic offsets to the addresses where geometry data is stored, as defined by pInfos[i].Ovulkan commandBuffer is the command buffer into which the command will be recorded.vulkanpInfos is a pointer to an array of  infoCount  structures defining the geometry used to build each acceleration structure.vulkanpIndirectDeviceAddresses is a pointer to an array of  infoCount) buffer device addresses which point to pInfos[i]. geometryCount  structures defining dynamic offsets to the addresses where geometry data is stored, as defined by pInfos[i].vulkanpIndirectStrides is a pointer to an array of  infoCount# byte strides between elements of pIndirectDeviceAddresses.vulkanppMaxPrimitiveCounts is a pointer to an array of  infoCount pointers to arrays of pInfos[i]. geometryCount values indicating the maximum number of primitives that will be built by this command for each geometry.Ovulkandevice is the 8 for which the acceleration structures are being built.vulkandeferredOperation is an optional  to  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operations-requestingrequest deferral for this command.vulkanpInfos is a pointer to an array of  infoCount  structures defining the geometry used to build each acceleration structure.vulkanppBuildRangeInfos is a pointer to an array of  infoCount pointers to arrays of  structures. Each ppBuildRangeInfos![i] is a pointer to an array of pInfos[i]. geometryCount  structures defining dynamic offsets to the addresses where geometry data is stored, as defined by pInfos[i].Ovulkandevice is the logical device that the acceleration structure was created on.vulkanpInfo is a pointer to a  structure specifying the acceleration structure to retrieve an address for.Ovulkandevice is the logical device that will be used for creating the acceleration structure.vulkan buildType defines whether host or device operations (or both) are being queried for.vulkan pBuildInfo is a pointer to a 7 structure describing parameters of a build operation.vulkanpMaxPrimitiveCounts is a pointer to an array of pBuildInfo->geometryCount uint32_t values defining the number of primitives built into each geometry.@@MNNNNNNNNNNNNMMMMMMMMMMMMMMMMMMMMMMMMMMOOONOOONOOOOOONOOOONOONOOOONOONOOONOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOONOOOOOOOOONNNNOOOOOOOOOOOOOOOOOOOONNNOONNOONNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONOOOOOONOOOOOOOONOOOOOONNOONOOOOOONOOOONOONOOOOONOOOOOONOOOOOONOOOOONOONONO@@MNNNNNNNNNNNNMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNMMMMMMMMMMMMMMMMMMMMMMMMMMNone( #$&'(./0289:<>?1vulkanVkSRTDataNV - Structure specifying a transform in SRT decomposition DescriptionThis transform decomposition consists of three elements. The first is a matrix S, consisting of a scale, shear, and translation, usually used to define the pivot point of the following rotation. This matrix is constructed from the parameters above by:[S = left( begin{matrix} sx & a & b & pvx -- 0 & sy & c & pvy -- 0 & 0 & sz & pvzvulkanVkPhysicalDeviceRayTracingMotionBlurFeaturesNV - Structure describing the ray tracing motion blur features that can be supported by an implementationMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkanVkAccelerationStructureSRTMotionInstanceNV - Structure specifying a single acceleration structure SRT motion instance for building into an acceleration structure geometry DescriptionThe C language specification does not define the ordering of bit-fields, but in practice, this struct produces the correct layout with existing compilers. The intended bit pattern is for the following:If a compiler produces code that diverges from that pattern, applications must employ another method to set values according to the correct bit pattern.The transform for a SRT motion instance at a point in time is derived from component-wise linear interpolation of the two SRT transforms. That is, for a time$ in [0,1] the resulting transform is transformT0  (1 - time) +  transformT1  timeValid Usage (Implicit)See AlsoQ, , vulkanVkAccelerationStructureMotionInstanceNV - Structure specifying a single acceleration structure motion instance for building into an acceleration structure geometry DescriptionNoteIf writing this other than with a standard C compiler, note that the final structure should be 152 bytes in size.Valid Usage (Implicit);VUID-VkAccelerationStructureMotionInstanceNV-type-parameter type must be a valid Q value>VUID-VkAccelerationStructureMotionInstanceNV-flags-zerobitmask flags must be 0VUID-VkAccelerationStructureMotionInstanceNV-staticInstance-parameter If type is Q , the staticInstance member of data must be a valid  structureVUID-VkAccelerationStructureMotionInstanceNV-matrixMotionInstance-parameter If type is Q , the matrixMotionInstance member of data must be a valid  structureVUID-VkAccelerationStructureMotionInstanceNV-srtMotionInstance-parameter If type is Q , the srtMotionInstance member of data must be a valid  structureSee AlsoQ, Q, QvulkanVkAccelerationStructureMotionInfoNV - Structure specifying the parameters of a newly created acceleration structure objectValid Usage (Implicit)See AlsoQ, vulkanVkAccelerationStructureMatrixMotionInstanceNV - Structure specifying a single acceleration structure matrix motion instance for building into an acceleration structure geometry DescriptionThe C language specification does not define the ordering of bit-fields, but in practice, this struct produces the correct layout with existing compilers. The intended bit pattern is for the following:If a compiler produces code that diverges from that pattern, applications must employ another method to set values according to the correct bit pattern.The transform for a matrix motion instance at a point in time is derived by component-wise linear interpolation of the two transforms. That is, for a time$ in [0,1] the resulting transform is transformT0  (1 - time) +  transformT1  timeValid Usage (Implicit)See AlsoQ, , vulkanVkAccelerationStructureGeometryMotionTrianglesDataNV - Structure specifying vertex motion in a bottom-level acceleration structure DescriptionIf  is included in the pNext chain of a  structure, the basic vertex positions are used for the position of the triangles in the geometry at time 0.0 and the  vertexData in  is used for the vertex positions at time 1.0, with positions linearly interpolated at intermediate times. Indexing for   vertexData1 is equivalent to the basic vertex position data.Valid Usage (Implicit)See AlsoN, QvulkanVkAccelerationStructureMotionInstanceTypeNV - Enum specifying a type of acceleration structure motion instance data for building into an acceleration structure geometrySee AlsoQvulkantype is a Q enumerant identifying which type of motion instance this is and which type of the union is valid.Qvulkanflags is currently unused, but is required to keep natural alignment of data.Qvulkandata is a Q4 containing motion instance data for this instance.Qvulkan transformT0 is a  structure describing a transformation to be applied to the acceleration structure at time 0.Qvulkan transformT1 is a  structure describing a transformation to be applied to the acceleration structure at time 1.QvulkaninstanceCustomIndex is a 24-bit user-specified index value accessible to ray shaders in the InstanceCustomIndexKHR built-in.instanceCustomIndex and mask( occupy the same memory as if a single uint32_t was specified in their placeinstanceCustomIndex; occupies the 24 least significant bits of that memorymask4 occupies the 8 most significant bits of that memoryQvulkanmask< is an 8-bit visibility mask for the geometry. The instance may only be hit if rayMask & instance.mask != 0Qvulkan&instanceShaderBindingTableRecordOffset is a 24-bit offset used in calculating the hit shader binding table index.&instanceShaderBindingTableRecordOffset and flags( occupy the same memory as if a single uint32_t was specified in their place&instanceShaderBindingTableRecordOffset; occupies the 24 least significant bits of that memoryflags4 occupies the 8 most significant bits of that memoryQvulkanflags is an 8-bit mask of # values to apply to this instance.VUID-VkAccelerationStructureMatrixMotionInstanceNV-flags-parameter flags must be a valid combination of  valuesQvulkanaccelerationStructureReference is either:9a device address containing the value obtained from   or   (used by device operations which reference acceleration structures) or,a q  object (used by host operations which reference acceleration structures).Qvulkan transformT0 is a  structure describing a transformation to be applied to the acceleration structure at time 0.Qvulkan transformT1 is a  structure describing a transformation to be applied to the acceleration structure at time 1.QvulkaninstanceCustomIndex is a 24-bit user-specified index value accessible to ray shaders in the InstanceCustomIndexKHR built-in.instanceCustomIndex and mask( occupy the same memory as if a single uint32_t was specified in their placeinstanceCustomIndex; occupies the 24 least significant bits of that memorymask4 occupies the 8 most significant bits of that memoryQvulkanmask< is an 8-bit visibility mask for the geometry. The instance may only be hit if rayMask & instance.mask != 0Qvulkan&instanceShaderBindingTableRecordOffset is a 24-bit offset used in calculating the hit shader binding table index.&instanceShaderBindingTableRecordOffset and flags( occupy the same memory as if a single uint32_t was specified in their place&instanceShaderBindingTableRecordOffset; occupies the 24 least significant bits of that memoryflags4 occupies the 8 most significant bits of that memoryQvulkanflags is an 8-bit mask of # values to apply to this instance.?VUID-VkAccelerationStructureSRTMotionInstanceNV-flags-parameter flags must be a valid combination of  valuesQvulkanaccelerationStructureReference is either:9a device address containing the value obtained from   or   (used by device operations which reference acceleration structures) or,a q  object (used by host operations which reference acceleration structures).Qvulkansx1 is the x component of the scale of the transformQvulkana0 is one component of the shear for the transformQvulkanb0 is one component of the shear for the transformQvulkanpvx7 is the x component of the pivot point of the transformQvulkansy1 is the y component of the scale of the transformQvulkanc0 is one component of the shear for the transformQvulkanpvy7 is the y component of the pivot point of the transformQvulkansz1 is the z component of the scale of the transformQvulkanpvz7 is the z component of the pivot point of the transformQvulkanqx. is the x component of the rotation quaternionQvulkanqy. is the y component of the rotation quaternionQvulkanqz. is the z component of the rotation quaternionQvulkanqw. is the w component of the rotation quaternionQvulkantx4 is the x component of the post-rotation translationQvulkanty4 is the y component of the post-rotation translationQvulkantz4 is the z component of the post-rotation translationQvulkan maxInstances) is the maximum number of instances that may9 be used in the motion top-level acceleration structure.Qvulkanflags" is 0 and reserved for future use.:VUID-VkAccelerationStructureMotionInfoNV-flags-zerobitmask flags must be 0Qvulkan vertexData: is a pointer to vertex data for this geometry at time 1.0Qvulkanfeatures-rayTracingMotionBlur rayTracingMotionBlur indicates whether the implementation supports the motion blur feature.Qvulkan6features-rayTracingMotionBlurPipelineTraceRaysIndirect -rayTracingMotionBlurPipelineTraceRaysIndirect indicates whether the implementation supports indirect ray tracing commands with the motion blur feature enabled.QvulkanQ specifies that the instance is a motion instance with motion specified by interpolation in the SRT decomposition.QvulkanQ specifies that the instance is a motion instance with motion specified by interpolation between two matrices.QvulkanQ specifies that the instance is a static instance with no instance motion.NOOOOOONOOOOOOOOOOOOOOOQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQNNOONNNNQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQOOOOOOOOOOONNNNOOOOOOOONOOOOOOOOOOOONNOOOONNone( #$&'(./0289:<>?vulkanVkDebugMarkerObjectTagInfoEXT - Specify parameters of a tag to attach to an object DescriptionThe tagName parameter gives a name or identifier to the type of data being tagged. This can be used by debugging layers to easily filter for only data that can be used by that implementation.Valid Usage (Implicit)See Also, , RvulkanVkDebugMarkerObjectNameInfoEXT - Specify parameters of a name to give to an object Description Applications may> change the name associated with an object simply by calling R< again with a new string. To remove a previously set name,  pObjectName should be set to an empty string.Valid Usage (Implicit)See Also, , RvulkanVkDebugMarkerMarkerInfoEXT - Specify parameters of a command buffer marker regionValid Usage (Implicit)See Also, R, RRvulkan pMarkerName is a pointer to a null-terminated UTF-8 string containing the name of the marker.5VUID-VkDebugMarkerMarkerInfoEXT-pMarkerName-parameter  pMarkerName must" be a null-terminated UTF-8 stringRvulkancolor is an optional RGBA color value that can be associated with the marker. A particular implementation may choose to ignore this color value. The values contain RGBA values in order, in the range 0.0 to 1.0. If all elements in color# are set to 0.0 then it is ignored.Rvulkan objectType is a 0 specifying the type of the object to be named.3VUID-VkDebugMarkerObjectTagInfoEXT-objectType-01493  objectType must not be N7VUID-VkDebugMarkerObjectTagInfoEXT-objectType-parameter  objectType must be a valid  valueRvulkanobject is the object to be tagged./VUID-VkDebugMarkerObjectTagInfoEXT-object-01494 object must not be /VUID-VkDebugMarkerObjectTagInfoEXT-object-01495 object must1 be a Vulkan object of the type associated with  objectType as defined in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debug-report-object-typesRvulkantagName& is a numerical identifier of the tag.RvulkantagSize8 is the number of bytes of data to attach to the object.6VUID-VkDebugMarkerObjectTagInfoEXT-tagSize-arraylength tagSize must be greater than 0RvulkanpTag is a pointer to an array of tagSize= bytes containing the data to be associated with the object.1VUID-VkDebugMarkerObjectTagInfoEXT-pTag-parameter pTag must$ be a valid pointer to an array of tagSize bytesRvulkan objectType is a 0 specifying the type of the object to be named.4VUID-VkDebugMarkerObjectNameInfoEXT-objectType-01490  objectType must not be N8VUID-VkDebugMarkerObjectNameInfoEXT-objectType-parameter  objectType must be a valid  valueRvulkanobject is the object to be named.0VUID-VkDebugMarkerObjectNameInfoEXT-object-01491 object must not be 0VUID-VkDebugMarkerObjectNameInfoEXT-object-01492 object must1 be a Vulkan object of the type associated with  objectType as defined in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debug-report-object-typesRvulkan pObjectName is a null-terminated UTF-8 string specifying the name to apply to object.9VUID-VkDebugMarkerObjectNameInfoEXT-pObjectName-parameter  pObjectName must" be a null-terminated UTF-8 stringRvulkanvkDebugMarkerSetObjectNameEXT - Give a user-friendly name to an objectValid Usage (Implicit)3VUID-vkDebugMarkerSetObjectNameEXT-device-parameter device must be a valid  handle6VUID-vkDebugMarkerSetObjectNameEXT-pNameInfo-parameter  pNameInfo must be a valid pointer to a valid  structureHost SynchronizationHost access to pNameInfo->object must be externally synchronized Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, RvulkanvkDebugMarkerSetObjectTagEXT - Attach arbitrary data to an objectValid Usage (Implicit)2VUID-vkDebugMarkerSetObjectTagEXT-device-parameter device must be a valid  handle4VUID-vkDebugMarkerSetObjectTagEXT-pTagInfo-parameter pTagInfo must be a valid pointer to a valid  structureHost SynchronizationHost access to pTagInfo->object must be externally synchronized Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, Rvulkan>vkCmdDebugMarkerBeginEXT - Open a command buffer marker regionValid Usage (Implicit)5VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-parameter  commandBuffer must be a valid  handle3VUID-vkCmdDebugMarkerBeginEXT-pMarkerInfo-parameter  pMarkerInfo must be a valid pointer to a valid  structure5VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state3VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must( support graphics, or compute operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth Graphics ComputeSee Also, Rvulkan=vkCmdDebugMarkerEndEXT - Close a command buffer marker region DescriptionAn application may open a marker region in one command buffer and close it in another, or otherwise split marker regions across multiple command buffers or multiple queue submissions. When viewed from the linear series of submissions to a single queue, the calls to R and R must be matched and balanced. Valid Usage/VUID-vkCmdDebugMarkerEndEXT-commandBuffer-01239 There must be an outstanding R command prior to the R on the queue that  commandBuffer is submitted to/VUID-vkCmdDebugMarkerEndEXT-commandBuffer-01240 If  commandBuffer+ is a secondary command buffer, there must be an outstanding R command recorded to  commandBuffer6 that has not previously been ended by a call to RValid Usage (Implicit)3VUID-vkCmdDebugMarkerEndEXT-commandBuffer-parameter  commandBuffer must be a valid  handle3VUID-vkCmdDebugMarkerEndEXT-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state1VUID-vkCmdDebugMarkerEndEXT-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must( support graphics, or compute operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth Graphics ComputeSee AlsoRvulkanvkCmdDebugMarkerInsertEXT - Insert a marker label into a command bufferValid Usage (Implicit)6VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-parameter  commandBuffer must be a valid  handle4VUID-vkCmdDebugMarkerInsertEXT-pMarkerInfo-parameter  pMarkerInfo must be a valid pointer to a valid  structure6VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state4VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must( support graphics, or compute operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth Graphics ComputeSee Also, Rvulkandevice' is the device that created the object.vulkan pNameInfo is a pointer to a  structure specifying the parameters of the name to set on the object.Rvulkandevice' is the device that created the object.vulkanpTagInfo is a pointer to a  structure specifying the parameters of the tag to attach to the object.Rvulkan commandBuffer; is the command buffer into which the command is recorded.vulkan pMarkerInfo is a pointer to a  structure specifying the parameters of the marker region to open.Rvulkan commandBuffer; is the command buffer into which the command is recorded.Rvulkan commandBuffer; is the command buffer into which the command is recorded.vulkan pMarkerInfo is a pointer to a > structure specifying the parameters of the marker to insert.RRRRRRRRRRRRRMNNNNNNNNNNNNMMMMMMMMMMMMMMMMMMMMMMMMMMRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRMNNNNNNNNNNNNMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNMMMMMMMMMMMMMMMMMMMMMMMMMMNone( #$&'(./0289:<>?RvulkanvkAcquireXlibDisplayEXT - Acquire access to a VkDisplayKHR using Xlib DescriptionAll permissions necessary to control the display are granted to the Vulkan instance associated with physicalDevice until the display is released or the X11 connection specified by dpy2 is terminated. Permission to access the display may be temporarily revoked during periods when the X11 server from which control was acquired itself loses access to display. During such periods, operations which require access to the display must fail with an approriate error code. If the X11 server associated with dpy does not own display, or if permission to access it has already been acquired by another entity, the call must return the error code .NoteOne example of when an X11 server loses access to a display is when it loses ownership of its virtual terminal. Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, RvulkanvkGetRandROutputDisplayEXT - Query the VkDisplayKHR corresponding to an X11 RandR Output DescriptionIf there is no  corresponding to rrOutput on physicalDevice,  must be returned in pDisplay. Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, RvulkanphysicalDevice' The physical device the display is on.5VUID-vkAcquireXlibDisplayEXT-physicalDevice-parameter physicalDevice must be a valid  handlevulkandpy4 A connection to the X11 server that currently owns display.*VUID-vkAcquireXlibDisplayEXT-dpy-parameter dpy must be a valid pointer to a  valuevulkandisplay4 The display the caller wishes to control in Vulkan..VUID-vkAcquireXlibDisplayEXT-display-parameter display must be a valid  handle+VUID-vkAcquireXlibDisplayEXT-display-parent display must2 have been created, allocated, or retrieved from physicalDeviceRvulkanphysicalDevice4 The physical device to query the display handle on.8VUID-vkGetRandROutputDisplayEXT-physicalDevice-parameter physicalDevice must be a valid  handlevulkandpy+ A connection to the X11 server from which rrOutput was queried.-VUID-vkGetRandROutputDisplayEXT-dpy-parameter dpy must be a valid pointer to a  valuevulkanrrOutput An X11 RandR output ID. @RRRRRR RRRRRR@None( #$&'(./0289:<>?RRvulkanvkAcquireDrmDisplayEXT - Acquire access to a VkDisplayKHR using DRM DescriptionAll permissions necessary to control the display are granted to the Vulkan instance associated with the provided physicalDevice until the display is either released or the connector is unplugged. The provided drmFd) must correspond to the one owned by the physicalDevice. If not, the error code  must be returned. The DRM FD must have DRM master permissions. If any error is encountered during the acquisition of the display, the call must return the error code .The provided DRM fd should not be closed before the display is released, attempting to do it may result in undefined behaviour. Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, RvulkanvkGetDrmDisplayEXT - Query the VkDisplayKHR corresponding to a DRM connector ID DescriptionIf there is no  corresponding to the  connectorId on the physicalDevice, the returning display must be set to . The provided drmFd* must correspond to the one owned by the physicalDevice. If not, the error code  must be returned. Master permissions are not required, because the file descriptor is just used for information gathering purposes. The given  connectorId+ must be a resource owned by the provided drmFd. If not, the error code  must be returned. If any error is encountered during the identification of the display, the call must return the error code . Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, RvulkanphysicalDevice' The physical device the display is on.4VUID-vkAcquireDrmDisplayEXT-physicalDevice-parameter physicalDevice must be a valid  handlevulkandrmFd DRM primary file descriptor.vulkandisplay1 The display the caller wishes Vulkan to control.-VUID-vkAcquireDrmDisplayEXT-display-parameter display must be a valid  handle*VUID-vkAcquireDrmDisplayEXT-display-parent display must2 have been created, allocated, or retrieved from physicalDeviceRvulkanphysicalDevice/ The physical device to query the display from.0VUID-vkGetDrmDisplayEXT-physicalDevice-parameter physicalDevice must be a valid  handlevulkandrmFd DRM primary file descriptor.vulkan connectorId+ Identifier of the specified DRM connector.@RRRRRRRRRRRR@sNone( #$&'(./0289:<>? vulkanVkSwapchainDisplayNativeHdrCreateInfoAMD - Structure specifying display native HDR parameters of a newly created swapchain object DescriptionIf the pNext chain of 9 does not include this structure, the default value for localDimmingEnable is , meaning local dimming is initially enabled for the swapchain.Valid Usage (Implicit)9VUID-VkSwapchainDisplayNativeHdrCreateInfoAMD-sType-sType sType must be   Valid UsageVUID-VkSwapchainDisplayNativeHdrCreateInfoAMD-localDimmingEnable-04449 It is only valid to set localDimmingEnable to  if ::localDimmingSupport is supportedSee Alsoq, vulkanVkDisplayNativeHdrSurfaceCapabilitiesAMD - Structure describing display native HDR specific capabilities of a surfaceValid Usage (Implicit)See Alsoq, RvulkanlocalDimmingEnable? specifies whether local dimming is enabled for the swapchain.RvulkanlocalDimmingSupport specifies whether the surface supports local dimming. If this is ,  can be used to explicitly enable or disable local dimming for the surface. Local dimming may also be overriden by R' during the lifetime of the swapchain.Rvulkan(vkSetLocalDimmingAMD - Set Local DimmingValid Usage (Implicit)*VUID-vkSetLocalDimmingAMD-device-parameter device must be a valid  handle-VUID-vkSetLocalDimmingAMD-swapChain-parameter  swapChain must be a valid  handle&VUID-vkSetLocalDimmingAMD-commonparent Both of device , and  swapChain must? have been created, allocated, or retrieved from the same 0 Valid Usage3VUID-vkSetLocalDimmingAMD-localDimmingSupport-04618 ::localDimmingSupport must be supportedSee Alsoq, , Rvulkandevice is the device associated with  swapChain.vulkan swapChain handle to enable local dimming.vulkanlocalDimmingEnable? specifies whether local dimming is enabled for the swapchain.@RRRRCCCCCCCCCCCCCCCCCCRRRRR/RRRRRRRRR@CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCJNone( #$&'(./0289:<>?JwvulkanVkDescriptorUpdateTemplateEntry - Describes a single descriptor update of the descriptor update template Valid Usage5VUID-VkDescriptorUpdateTemplateEntry-dstBinding-00354  dstBinding must be a valid binding in the descriptor set layout implicitly specified when using a descriptor update template to update descriptors:VUID-VkDescriptorUpdateTemplateEntry-dstArrayElement-00355 dstArrayElement and descriptorCount must be less than or equal to the number of array elements in the descriptor set binding implicitly specified when using a descriptor update template to update descriptors, and all applicable consecutive bindings, as described by https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-updates-consecutive5VUID-VkDescriptorUpdateTemplateEntry-descriptor-02226 If  descriptor type is , dstArrayElement must be an integer multiple of 45VUID-VkDescriptorUpdateTemplateEntry-descriptor-02227 If  descriptor type is , descriptorCount must be an integer multiple of 4Valid Usage (Implicit)=VUID-VkDescriptorUpdateTemplateEntry-descriptorType-parameter descriptorType must be a valid ' valueSee Also', vulkanVkDescriptorUpdateTemplateCreateInfo - Structure specifying parameters of a newly created descriptor update template Valid UsageVUID-vkUpdateDescriptorSetWithTemplate-descriptorSet-parameter  descriptorSet must be a valid  handleVUID-vkUpdateDescriptorSetWithTemplate-descriptorUpdateTemplate-parameter descriptorUpdateTemplate must be a valid  handleVUID-vkUpdateDescriptorSetWithTemplate-descriptorUpdateTemplate-parent descriptorUpdateTemplate must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  descriptorSet must be externally synchronized API example struct AppBufferView { VkBufferView bufferView; uint32_t applicationRelatedInformation; }; struct AppDataStructure { VkDescriptorImageInfo imageInfo; // a single image info VkDescriptorBufferInfo bufferInfoArray[3]; // 3 buffer infos in an array AppBufferView bufferView[2]; // An application defined structure containing a bufferView // ... some more application related data }; const VkDescriptorUpdateTemplateEntry descriptorUpdateTemplateEntries[] = { // binding to a single image descriptor { 0, // binding 0, // dstArrayElement 1, // descriptorCount VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, // descriptorType offsetof(AppDataStructure, imageInfo), // offset 0 // stride is not required if descriptorCount is 1 }, // binding to an array of buffer descriptors { 1, // binding 0, // dstArrayElement 3, // descriptorCount VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, // descriptorType offsetof(AppDataStructure, bufferInfoArray), // offset sizeof(VkDescriptorBufferInfo) // stride, descriptor buffer infos are compact }, // binding to an array of buffer views { 2, // binding 0, // dstArrayElement 2, // descriptorCount VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, // descriptorType offsetof(AppDataStructure, bufferView) + offsetof(AppBufferView, bufferView), // offset sizeof(AppBufferView) // stride, bufferViews do not have to be compact }, }; // create a descriptor update template for descriptor set updates const VkDescriptorUpdateTemplateCreateInfo createInfo = { VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO, // sType NULL, // pNext 0, // flags 3, // descriptorUpdateEntryCount descriptorUpdateTemplateEntries, // pDescriptorUpdateEntries VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET, // templateType myLayout, // descriptorSetLayout 0, // pipelineBindPoint, ignored by given templateType 0, // pipelineLayout, ignored by given templateType 0, // set, ignored by given templateType }; VkDescriptorUpdateTemplate myDescriptorUpdateTemplate; myResult = vkCreateDescriptorUpdateTemplate( myDevice, &createInfo, NULL, &myDescriptorUpdateTemplate); AppDataStructure appData; // fill appData here or cache it in your engine vkUpdateDescriptorSetWithTemplate(myDevice, myDescriptorSet, myDescriptorUpdateTemplate, &appData);See Also, , Rvulkandevice is the logical device that creates the descriptor update template.vulkan pCreateInfo is a pointer to a  structure specifying the set of descriptors to update with a single call to   or R.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.Rvulkandevice is the logical device that has been used to create the descriptor update templatevulkandescriptorUpdateTemplate. is the descriptor update template to destroy.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.Rvulkandevice7 is the logical device that updates the descriptor set.vulkan descriptorSet is the descriptor set to updatevulkandescriptorUpdateTemplate is a / object specifying the update mapping between pData" and the descriptor set to update.vulkanpData0 is a pointer to memory containing one or more   ,  , or 0  structures or q  or q ( handles used to write the descriptors.W @RRRRRRRRRRRRRRR RRRR RRRRRRRRRRRRRRRRRRR@  W  :None( #$&'(./0289:<>? vulkanVkPushConstantRange - Structure specifying a push constant rangeValid Usage (Implicit)See Also, evulkanVkPipelineLayoutCreateInfo - Structure specifying the parameters of a newly created pipeline layout object Valid Usage4VUID-VkPipelineLayoutCreateInfo-setLayoutCount-00286 setLayoutCount must be less than or equal to  ::maxBoundDescriptorSets)4VUID-VkPipelineLayoutCreateInfo-descriptorType-03016 The total number of descriptors in descriptor set layouts created without the  bit set with a descriptorType of   and   accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to  ::maxPerStageDescriptorSamplers4VUID-VkPipelineLayoutCreateInfo-descriptorType-03017 The total number of descriptors in descriptor set layouts created without the  bit set with a descriptorType of   and   accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to  ::#maxPerStageDescriptorUniformBuffers4VUID-VkPipelineLayoutCreateInfo-descriptorType-03018 The total number of descriptors in descriptor set layouts created without the  bit set with a descriptorType of   and   accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to  ::#maxPerStageDescriptorStorageBuffers4VUID-VkPipelineLayoutCreateInfo-descriptorType-03019 The total number of descriptors in descriptor set layouts created without the  bit set with a descriptorType of  ,  , and   accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to  ::"maxPerStageDescriptorSampledImages4VUID-VkPipelineLayoutCreateInfo-descriptorType-03020 The total number of descriptors in descriptor set layouts created without the  bit set with a descriptorType of  , and   accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to  ::"maxPerStageDescriptorStorageImages4VUID-VkPipelineLayoutCreateInfo-descriptorType-03021 The total number of descriptors in descriptor set layouts created without the  bit set with a descriptorType of   accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to  ::%maxPerStageDescriptorInputAttachments4VUID-VkPipelineLayoutCreateInfo-descriptorType-02214 The total number of bindings in descriptor set layouts created without the  bit set with a descriptorType of  accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to ::(maxPerStageDescriptorInlineUniformBlocks4VUID-VkPipelineLayoutCreateInfo-descriptorType-03022- The total number of descriptors with a descriptorType of   and   accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to ]::,maxPerStageDescriptorUpdateAfterBindSamplers4VUID-VkPipelineLayoutCreateInfo-descriptorType-03023- The total number of descriptors with a descriptorType of   and   accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to ]::2maxPerStageDescriptorUpdateAfterBindUniformBuffers4VUID-VkPipelineLayoutCreateInfo-descriptorType-03024- The total number of descriptors with a descriptorType of   and   accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to ]::2maxPerStageDescriptorUpdateAfterBindStorageBuffers4VUID-VkPipelineLayoutCreateInfo-descriptorType-03025- The total number of descriptors with a descriptorType of  ,  , and   accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to ]::1maxPerStageDescriptorUpdateAfterBindSampledImages4VUID-VkPipelineLayoutCreateInfo-descriptorType-03026- The total number of descriptors with a descriptorType of  , and   accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to ]::1maxPerStageDescriptorUpdateAfterBindStorageImages4VUID-VkPipelineLayoutCreateInfo-descriptorType-03027- The total number of descriptors with a descriptorType of   accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to ]::4maxPerStageDescriptorUpdateAfterBindInputAttachments4VUID-VkPipelineLayoutCreateInfo-descriptorType-02215* The total number of bindings with a descriptorType of  accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to ::7maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks4VUID-VkPipelineLayoutCreateInfo-descriptorType-03028 The total number of descriptors in descriptor set layouts created without the  bit set with a descriptorType of   and   accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to  ::maxDescriptorSetSamplers4VUID-VkPipelineLayoutCreateInfo-descriptorType-03029 The total number of descriptors in descriptor set layouts created without the  bit set with a descriptorType of   accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to  ::maxDescriptorSetUniformBuffers4VUID-VkPipelineLayoutCreateInfo-descriptorType-03030 The total number of descriptors in descriptor set layouts created without the  bit set with a descriptorType of   accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to  ::%maxDescriptorSetUniformBuffersDynamic4VUID-VkPipelineLayoutCreateInfo-descriptorType-03031 The total number of descriptors in descriptor set layouts created without the  bit set with a descriptorType of   accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to  ::maxDescriptorSetStorageBuffers4VUID-VkPipelineLayoutCreateInfo-descriptorType-03032 The total number of descriptors in descriptor set layouts created without the  bit set with a descriptorType of   accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to  ::%maxDescriptorSetStorageBuffersDynamic4VUID-VkPipelineLayoutCreateInfo-descriptorType-03033 The total number of descriptors in descriptor set layouts created without the  bit set with a descriptorType of  ,  , and   accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to  ::maxDescriptorSetSampledImages4VUID-VkPipelineLayoutCreateInfo-descriptorType-03034 The total number of descriptors in descriptor set layouts created without the  bit set with a descriptorType of  , and   accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to  ::maxDescriptorSetStorageImages4VUID-VkPipelineLayoutCreateInfo-descriptorType-03035 The total number of descriptors in descriptor set layouts created without the  bit set with a descriptorType of   accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to  :: maxDescriptorSetInputAttachments4VUID-VkPipelineLayoutCreateInfo-descriptorType-02216 The total number of bindings in descriptor set layouts created without the  bit set with a descriptorType of  accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to ::#maxDescriptorSetInlineUniformBlocks1VUID-VkPipelineLayoutCreateInfo-pSetLayouts-030367 The total number of descriptors of the type   and   accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to ]::'maxDescriptorSetUpdateAfterBindSamplers1VUID-VkPipelineLayoutCreateInfo-pSetLayouts-030377 The total number of descriptors of the type   accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to ]::-maxDescriptorSetUpdateAfterBindUniformBuffers1VUID-VkPipelineLayoutCreateInfo-pSetLayouts-030387 The total number of descriptors of the type   accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to ]::4maxDescriptorSetUpdateAfterBindUniformBuffersDynamic1VUID-VkPipelineLayoutCreateInfo-pSetLayouts-030397 The total number of descriptors of the type   accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to ]::-maxDescriptorSetUpdateAfterBindStorageBuffers1VUID-VkPipelineLayoutCreateInfo-pSetLayouts-030407 The total number of descriptors of the type   accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to ]::4maxDescriptorSetUpdateAfterBindStorageBuffersDynamic1VUID-VkPipelineLayoutCreateInfo-pSetLayouts-030417 The total number of descriptors of the type  ,  , and   accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to ]::,maxDescriptorSetUpdateAfterBindSampledImages1VUID-VkPipelineLayoutCreateInfo-pSetLayouts-030427 The total number of descriptors of the type  , and   accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to ]::,maxDescriptorSetUpdateAfterBindStorageImages1VUID-VkPipelineLayoutCreateInfo-pSetLayouts-030437 The total number of descriptors of the type   accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to ]::/maxDescriptorSetUpdateAfterBindInputAttachments4VUID-VkPipelineLayoutCreateInfo-descriptorType-02217* The total number of bindings with a descriptorType of  accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to ::2maxDescriptorSetUpdateAfterBindInlineUniformBlocks9VUID-VkPipelineLayoutCreateInfo-pPushConstantRanges-00292 Any two elements of pPushConstantRanges must$ not include the same stage in  stageFlags1VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00293  pSetLayouts must not contain more than one descriptor set layout that was created with  set4VUID-VkPipelineLayoutCreateInfo-descriptorType-03571 The total number of bindings in descriptor set layouts created without the  bit set with a descriptorType of   accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to ::+maxPerStageDescriptorAccelerationStructures4VUID-VkPipelineLayoutCreateInfo-descriptorType-03572* The total number of bindings with a descriptorType of   accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to :::maxPerStageDescriptorUpdateAfterBindAccelerationStructures4VUID-VkPipelineLayoutCreateInfo-descriptorType-03573 The total number of bindings in descriptor set layouts created without the  bit set with a descriptorType of   accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to ::&maxDescriptorSetAccelerationStructures4VUID-VkPipelineLayoutCreateInfo-descriptorType-03574* The total number of bindings with a descriptorType of   accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to ::5maxDescriptorSetUpdateAfterBindAccelerationStructures4VUID-VkPipelineLayoutCreateInfo-descriptorType-02381* The total number of bindings with a descriptorType of   accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to ::&maxDescriptorSetAccelerationStructures8VUID-VkPipelineLayoutCreateInfo-pImmutableSamplers-03566 The total number of pImmutableSamplers created with flags containing   or  : across all shader stages and across all elements of  pSetLayouts must be less than or equal to https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxDescriptorSetSubsampledSamplers$::maxDescriptorSetSubsampledSamplers1VUID-VkPipelineLayoutCreateInfo-pSetLayouts-04606 Any element of  pSetLayouts must% not have been created with the   bit setValid Usage (Implicit)+VUID-VkPipelineLayoutCreateInfo-sType-sType sType must be  +VUID-VkPipelineLayoutCreateInfo-pNext-pNext pNext must be NULL1VUID-VkPipelineLayoutCreateInfo-flags-zerobitmask flags must be 05VUID-VkPipelineLayoutCreateInfo-pSetLayouts-parameter If setLayoutCount is not 0,  pSetLayouts must( be a valid pointer to an array of setLayoutCount valid  handles=VUID-VkPipelineLayoutCreateInfo-pPushConstantRanges-parameter If pushConstantRangeCount is not 0, pPushConstantRanges must( be a valid pointer to an array of pushConstantRangeCount valid  structuresSee Also, , , , SRvulkanflags is reserved for future use.Svulkan pSetLayouts is a pointer to an array of  objects.SvulkanpPushConstantRanges is a pointer to an array of  structures defining a set of push constant ranges for use in a single pipeline layout. In addition to descriptor set layouts, a pipeline layout also describes how many push constants can, be accessed by each stage of the pipeline.NotePush constants represent a high speed path to modify constant data in pipelines that is expected to outperform memory-backed resource updates.Svulkan stageFlags is a set of stage flags describing the shader stages that will access a range of push constants. If a particular stage is not included in the range, then accessing members of that range of push constants from the corresponding shader stage will return undefined values.-VUID-VkPushConstantRange-stageFlags-parameter  stageFlags must be a valid combination of '  values3VUID-VkPushConstantRange-stageFlags-requiredbitmask  stageFlags must not be 0Svulkanoffset and size are the start offset and size, respectively, consumed by the range. Both offset and size are in units of bytes and must be a multiple of 4. The layout of the push constant variables is specified in the shader.%VUID-VkPushConstantRange-offset-00294 offset must be less than  ::maxPushConstantsSize%VUID-VkPushConstantRange-offset-00295 offset must be a multiple of 4Svulkan#VUID-VkPushConstantRange-size-00296 size must be greater than 0#VUID-VkPushConstantRange-size-00297 size must be a multiple of 4#VUID-VkPushConstantRange-size-00298 size must be less than or equal to  ::maxPushConstantsSize minus offsetSvulkan=vkCreatePipelineLayout - Creates a new pipeline layout objectValid Usage (Implicit),VUID-vkCreatePipelineLayout-device-parameter device must be a valid  handle1VUID-vkCreatePipelineLayout-pCreateInfo-parameter  pCreateInfo must be a valid pointer to a valid  structure0VUID-vkCreatePipelineLayout-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure5VUID-vkCreatePipelineLayout-pPipelineLayout-parameter pPipelineLayout must be a valid pointer to a ~ handle Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , ~, Svulkan=A convenience wrapper to make a compatible pair of calls to S and STo ensure that S is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.Svulkan:vkDestroyPipelineLayout - Destroy a pipeline layout object Valid Usage1VUID-vkDestroyPipelineLayout-pipelineLayout-00299 If  were provided when pipelineLayout1 was created, a compatible set of callbacks must be provided here1VUID-vkDestroyPipelineLayout-pipelineLayout-00300 If no  were provided when pipelineLayout was created,  pAllocator must be NULL1VUID-vkDestroyPipelineLayout-pipelineLayout-02004 pipelineLayout must not have been passed to any vkCmd* command for any command buffers that are still in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state when S is calledValid Usage (Implicit)-VUID-vkDestroyPipelineLayout-device-parameter device must be a valid  handle5VUID-vkDestroyPipelineLayout-pipelineLayout-parameter If pipelineLayout is not , pipelineLayout must be a valid ~ handle1VUID-vkDestroyPipelineLayout-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure2VUID-vkDestroyPipelineLayout-pipelineLayout-parent If pipelineLayout is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to pipelineLayout must be externally synchronizedSee Also, , ~Svulkandevice8 is the logical device that creates the pipeline layout.vulkan pCreateInfo is a pointer to a ? structure specifying the state of the pipeline layout object.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.Svulkandevice9 is the logical device that destroys the pipeline layout.vulkanpipelineLayout# is the pipeline layout to destroy.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.~1SSSSRRSSSSSSSSSSSSRRSS~19None( #$&'(./0289:<>? vulkanVkPipelineCacheCreateInfo - Structure specifying parameters of a newly created pipeline cache Valid Usage4VUID-VkPipelineCacheCreateInfo-initialDataSize-00768 If initialDataSize is not 0, it must be equal to the size of  pInitialData, as returned by S when  pInitialData was originally retrieved4VUID-VkPipelineCacheCreateInfo-initialDataSize-00769 If initialDataSize is not 0,  pInitialData must2 have been retrieved from a previous call to SVUID-VkPipelineCacheCreateInfo-pipelineCreationCacheControl-02892 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineCreationCacheControlpipelineCreationCacheControl feature is not enabled, flags must not include Valid Usage (Implicit)*VUID-VkPipelineCacheCreateInfo-sType-sType sType must be  *VUID-VkPipelineCacheCreateInfo-pNext-pNext pNext must be NULL.VUID-VkPipelineCacheCreateInfo-flags-parameter flags must% be a valid combination of  values5VUID-VkPipelineCacheCreateInfo-pInitialData-parameter If initialDataSize is not 0,  pInitialData must( be a valid pointer to an array of initialDataSize bytesSee Also, , SSvulkanflags is a bitmask of 0 specifying the behavior of the pipeline cache.SvulkaninitialDataSize is the number of bytes in  pInitialData. If initialDataSize5 is zero, the pipeline cache will initially be empty.Svulkan pInitialData is a pointer to previously retrieved pipeline cache data. If the pipeline cache data is incompatible (as defined below) with the device, the pipeline cache will be initially empty. If initialDataSize is zero,  pInitialData is ignored.Svulkan4vkCreatePipelineCache - Creates a new pipeline cache DescriptionNote Applications can track and manage the total host memory size of a pipeline cache object using the  pAllocator. Applications can limit the amount of data retrieved from a pipeline cache object in S. Implementations should not internally limit the total number of entries added to a pipeline cache object or the total host memory consumed.Once created, a pipeline cache can be passed to the 8 , , and 8 commands. If the pipeline cache passed into these commands is not , the implementation will query it for possible reuse opportunities and update it with new content. The use of the pipeline cache object in these commands is internally synchronized, and the same pipeline cache object can- be used in multiple threads simultaneously.If flags of  pCreateInfo includes ?, all commands that modify the returned pipeline cache object must be  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-threadingbehaviorexternally synchronized.NoteImplementations should make every effort to limit any critical sections to the actual accesses to the cache, which is expected to be significantly shorter than the duration of the vkCreate*Pipelines commands.Valid Usage (Implicit)+VUID-vkCreatePipelineCache-device-parameter device must be a valid  handle0VUID-vkCreatePipelineCache-pCreateInfo-parameter  pCreateInfo must be a valid pointer to a valid  structure/VUID-vkCreatePipelineCache-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure3VUID-vkCreatePipelineCache-pPipelineCache-parameter pPipelineCache must be a valid pointer to a  handle Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , Svulkan=A convenience wrapper to make a compatible pair of calls to S and STo ensure that S is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.Svulkan8vkDestroyPipelineCache - Destroy a pipeline cache object Valid Usage/VUID-vkDestroyPipelineCache-pipelineCache-00771 If  were provided when  pipelineCache1 was created, a compatible set of callbacks must be provided here/VUID-vkDestroyPipelineCache-pipelineCache-00772 If no  were provided when  pipelineCache was created,  pAllocator must be NULLValid Usage (Implicit),VUID-vkDestroyPipelineCache-device-parameter device must be a valid  handle3VUID-vkDestroyPipelineCache-pipelineCache-parameter If  pipelineCache is not ,  pipelineCache must be a valid  handle0VUID-vkDestroyPipelineCache-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure0VUID-vkDestroyPipelineCache-pipelineCache-parent If  pipelineCache is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  pipelineCache must be externally synchronizedSee Also, , SvulkanvkGetPipelineCacheData - Get the data store from a pipeline cache DescriptionIf pData is NULL), then the maximum size of the data that can be retrieved from the pipeline cache, in bytes, is returned in  pDataSize. Otherwise,  pDataSize must point to a variable set by the user to the size of the buffer, in bytes, pointed to by pData, and on return the variable is overwritten with the amount of data actually written to pData. If  pDataSize$ is less than the maximum size that can. be retrieved by the pipeline cache, at most  pDataSize bytes will be written to pData, and  will be returned instead of ?, to indicate that not all of the pipeline cache was returned.Any data written to pData is valid and can be provided as the  pInitialData member of the  structure passed to S. Two calls to S with the same parameters must retrieve the same data unless a command that modifies the contents of the cache is called between them.The initial bytes written to pData must# be a header as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-cache-headerPipeline Cache Header section.If  pDataSize is less than what is necessary to store this header, nothing will be written to pData and zero will be written to  pDataSize.Valid Usage (Implicit),VUID-vkGetPipelineCacheData-device-parameter device must be a valid  handle3VUID-vkGetPipelineCacheData-pipelineCache-parameter  pipelineCache must be a valid  handle/VUID-vkGetPipelineCacheData-pDataSize-parameter  pDataSize must be a valid pointer to a size_t value+VUID-vkGetPipelineCacheData-pData-parameter! If the value referenced by  pDataSize is not 0, and pData is not NULL, pData must# be a valid pointer to an array of  pDataSize bytes0VUID-vkGetPipelineCacheData-pipelineCache-parent  pipelineCache must1 have been created, allocated, or retrieved from device Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, SvulkanvkMergePipelineCaches - Combine the data stores of pipeline caches DescriptionNoteThe details of the merge operation are implementation-dependent, but implementations should merge the contents of the specified pipelines and prune duplicate entries. Valid Usage)VUID-vkMergePipelineCaches-dstCache-00770 dstCache must- not appear in the list of source cachesValid Usage (Implicit)+VUID-vkMergePipelineCaches-device-parameter device must be a valid  handle-VUID-vkMergePipelineCaches-dstCache-parameter dstCache must be a valid  handle/VUID-vkMergePipelineCaches-pSrcCaches-parameter  pSrcCaches must# be a valid pointer to an array of  srcCacheCount valid  handles4VUID-vkMergePipelineCaches-srcCacheCount-arraylength  srcCacheCount must be greater than 0*VUID-vkMergePipelineCaches-dstCache-parent dstCache must6 have been created, allocated, or retrieved from device,VUID-vkMergePipelineCaches-pSrcCaches-parent Each element of  pSrcCaches must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to dstCache must be externally synchronized Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, Svulkandevice> is the logical device that creates the pipeline cache object.vulkan pCreateInfo is a pointer to a  structure containing initial parameters for the pipeline cache object.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.Svulkandevice? is the logical device that destroys the pipeline cache object.vulkan pipelineCache0 is the handle of the pipeline cache to destroy.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.Svulkandevice4 is the logical device that owns the pipeline cache.vulkan pipelineCache- is the pipeline cache to retrieve data from.Svulkandevice< is the logical device that owns the pipeline cache objects.vulkandstCache; is the handle of the pipeline cache to merge results into.vulkan pSrcCaches is a pointer to an array of pipeline cache handles, which will be merged into dstCache. The previous contents of dstCache are included after the merge.1SSSSSSSSSSSSSSSSSS15None( #$&'(./0289:<>?vulkan?VkMemoryRequirements - Structure specifying memory requirementsSee Alsoo, T, S, SSvulkansize1 is the size, in bytes, of the memory allocation required for the resource.Svulkan alignment is the alignment, in bytes, of the offset within the allocation required for the resource.SvulkanmemoryTypeBits is a bitmask and contains one bit set for every supported memory type for the resource. Bit i( is set if and only if the memory type i in the   structure for the physical device is supported for the resource.SvulkanvkGetBufferMemoryRequirements - Returns the memory requirements for specified Vulkan objectValid Usage (Implicit)See Also, , Svulkan:vkBindBufferMemory - Bind device memory to a buffer object DescriptionS7 is equivalent to passing the same parameters through H to H . Valid Usage$VUID-vkBindBufferMemory-buffer-01029 buffer must. not already be backed by a memory object$VUID-vkBindBufferMemory-buffer-01030 buffer must not have been created with any sparse memory binding flags*VUID-vkBindBufferMemory-memoryOffset-01031  memoryOffset must be less than the size of memory$VUID-vkBindBufferMemory-memory-01035 memory must have been allocated using one of the memory types allowed in the memoryTypeBits member of the ( structure returned from a call to S with buffer*VUID-vkBindBufferMemory-memoryOffset-01036  memoryOffset must$ be an integer multiple of the  alignment member of the ( structure returned from a call to S with buffer"VUID-vkBindBufferMemory-size-01037 The size member of the ( structure returned from a call to S with buffer must+ be less than or equal to the size of memory minus  memoryOffset$VUID-vkBindBufferMemory-buffer-01444 If buffer; requires a dedicated allocation (as reported by T  in I::requiresDedicatedAllocation for buffer), memory must have been allocated with I::buffer equal to buffer$VUID-vkBindBufferMemory-memory-01508 If the 4 provided when memory$ was allocated included a I structure in its pNext chain, and I::buffer was not , then buffer must equal I::buffer , and  memoryOffset must be zero"VUID-vkBindBufferMemory-None-01898 If buffer was created with the  bit set, the buffer must be bound to a memory object allocated with a memory type that reports "VUID-vkBindBufferMemory-None-01899 If buffer was created with the  bit not set, the buffer must not be bound to a memory object allocated with a memory type that reports $VUID-vkBindBufferMemory-buffer-01038 If buffer was created with ::dedicatedAllocation equal to /, memory must$ have been allocated with ::buffer equal to a buffer handle created with identical creation parameters to buffer and  memoryOffset must be zero$VUID-vkBindBufferMemory-memory-02726 If the value of P:: handleTypes used to allocate memory is not 0, it must6 include at least one of the handles set in P:: handleTypes when buffer was created$VUID-vkBindBufferMemory-memory-02985 If memory was allocated by a memory import operation, that is not  with a non-NULL buffer= value, the external handle type of the imported memory must also have been set in P:: handleTypes when buffer was created$VUID-vkBindBufferMemory-memory-02986 If memory" was allocated with the ) memory import operation with a non-NULL buffer value, B  must also have been set in P:: handleTypes when buffer was created1VUID-vkBindBufferMemory-bufferDeviceAddress-03339 If the c::bufferDeviceAddress feature is enabled and buffer was created with the   bit set, memory must# have been allocated with the  bit setValid Usage (Implicit)(VUID-vkBindBufferMemory-device-parameter device must be a valid  handle(VUID-vkBindBufferMemory-buffer-parameter buffer must be a valid  handle(VUID-vkBindBufferMemory-memory-parameter memory must be a valid  handle%VUID-vkBindBufferMemory-buffer-parent buffer must6 have been created, allocated, or retrieved from device%VUID-vkBindBufferMemory-memory-parent memory must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to buffer must be externally synchronized Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , oSvulkanvkGetImageMemoryRequirements - Returns the memory requirements for specified Vulkan object Valid Usage-VUID-vkGetImageMemoryRequirements-image-01588 image must* not have been created with the   flag set-VUID-vkGetImageMemoryRequirements-image-04004 If image was created with the B ( external memory handle type, then image must be bound to memoryValid Usage (Implicit)2VUID-vkGetImageMemoryRequirements-device-parameter device must be a valid  handle1VUID-vkGetImageMemoryRequirements-image-parameter image must be a valid  handle?VUID-vkGetImageMemoryRequirements-pMemoryRequirements-parameter pMemoryRequirements must be a valid pointer to a  structure.VUID-vkGetImageMemoryRequirements-image-parent image must6 have been created, allocated, or retrieved from deviceSee Also, , Svulkan9vkBindImageMemory - Bind device memory to an image object DescriptionS7 is equivalent to passing the same parameters through H to H . Valid Usage"VUID-vkBindImageMemory-image-01044 image must. not already be backed by a memory object"VUID-vkBindImageMemory-image-01045 image must not have been created with any sparse memory binding flags)VUID-vkBindImageMemory-memoryOffset-01046  memoryOffset must be less than the size of memory"VUID-vkBindImageMemory-image-01445 If image; requires a dedicated allocation (as reported by T  in I::requiresDedicatedAllocation for image), memory must have been created with I::image equal to image#VUID-vkBindImageMemory-memory-02628 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dedicatedAllocationImageAliasing#dedicated allocation image aliasing+ feature is not enabled, and the 4 provided when memory$ was allocated included a I structure in its pNext chain, and I::image was not , then image must equal I::image and  memoryOffset must be zero#VUID-vkBindImageMemory-memory-02629 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dedicatedAllocationImageAliasing#dedicated allocation image aliasing' feature is enabled, and the 4 provided when memory$ was allocated included a I structure in its pNext chain, and I::image was not  , then  memoryOffset must be zero, and image must be either equal to I::image or an image that was created using the same parameters in 1, with the exception that extent and  arrayLayers may differ subject to the following restrictions: every dimension in the extent) parameter of the image being bound must be equal to or smaller than the original image for which the allocation was created; and the  arrayLayers) parameter of the image being bound must be equal to or smaller than the original image for which the allocation was created!VUID-vkBindImageMemory-None-01901$ If image was created with the  bit set, the image must be bound to a memory object allocated with a memory type that reports !VUID-vkBindImageMemory-None-01902$ If image was created with the  bit not set, the image must not be bound to a memory object created with a memory type that reports "VUID-vkBindImageMemory-image-01050 If image was created with ::dedicatedAllocation equal to /, memory must" have been created with ::image equal to an image handle created with identical creation parameters to image and  memoryOffset must be zero#VUID-vkBindImageMemory-memory-02728 If the value of P:: handleTypes used to allocate memory is not 0, it must6 include at least one of the handles set in P:: handleTypes when image was created#VUID-vkBindImageMemory-memory-02989 If memory was created by a memory import operation, that is not  with a non-NULL buffer= value, the external handle type of the imported memory must also have been set in P:: handleTypes when image was created#VUID-vkBindImageMemory-memory-02990 If memory was created with the ) memory import operation with a non-NULL buffer value, B  must also have been set in P:: handleTypes when image was created"VUID-vkBindImageMemory-image-01608 image must* not have been created with the   set#VUID-vkBindImageMemory-memory-01047 memory must have been allocated using one of the memory types allowed in the memoryTypeBits member of the ( structure returned from a call to S with image)VUID-vkBindImageMemory-memoryOffset-01048  memoryOffset must$ be an integer multiple of the  alignment member of the ( structure returned from a call to S with image!VUID-vkBindImageMemory-size-01049$ The difference of the size of memory and  memoryOffset must& be greater than or equal to the size member of the ( structure returned from a call to S with the same imageValid Usage (Implicit)'VUID-vkBindImageMemory-device-parameter device must be a valid  handle&VUID-vkBindImageMemory-image-parameter image must be a valid  handle'VUID-vkBindImageMemory-memory-parameter memory must be a valid  handle#VUID-vkBindImageMemory-image-parent image must6 have been created, allocated, or retrieved from device$VUID-vkBindImageMemory-memory-parent memory must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to image must be externally synchronized Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , o, Svulkandevice, is the logical device that owns the buffer.3VUID-vkGetBufferMemoryRequirements-device-parameter device must be a valid  handlevulkanbuffer is the buffer to query.3VUID-vkGetBufferMemoryRequirements-buffer-parameter buffer must be a valid  handle0VUID-vkGetBufferMemoryRequirements-buffer-parent buffer must2 have been created, allocated, or retrieved from deviceSvulkandevice7 is the logical device that owns the buffer and memory.vulkanbuffer( is the buffer to be attached to memory.vulkanmemory is a 0 object describing the device memory to attach.vulkan memoryOffset& is the start offset of the region of memory which is to be bound to the buffer. The number of bytes returned in the ::size member in memory, starting from  memoryOffset. bytes, will be bound to the specified buffer.Svulkandevice+ is the logical device that owns the image.vulkanimage is the image to query.Svulkandevice6 is the logical device that owns the image and memory.vulkanimage is the image.vulkanmemory is the 0 object describing the device memory to attach.vulkan memoryOffset& is the start offset of the region of memory which is to be bound to the image. The number of bytes returned in the ::size member in memory, starting from  memoryOffset- bytes, will be bound to the specified image. 1SSSSSSSS SSSSSSSS13None( #$&'(./0289:<>?*vulkan9VkLayerProperties - Structure specifying layer propertiesSee AlsoS, SSvulkan layerName is an array of , char containing a null-terminated UTF-8 string which is the name of the layer. Use this name in the ppEnabledLayerNames array passed in the  1 structure to enable this layer for an instance.Svulkan specVersion is the Vulkan version the layer was written to, encoded as described in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-coreversions-versionnumbers.SvulkanimplementationVersion is the version of this layer. It is an integer, increasing with backward compatible changes.Svulkan description is an array of , char containing a null-terminated UTF-8 string which provides additional details that can2 be used by the application to identify the layer.SvulkanvkEnumerateInstanceLayerProperties - Returns up to requested number of global layer properties DescriptionIf  pProperties is NULL, then the number of layer properties available is returned in pPropertyCount . Otherwise, pPropertyCount must point to a variable set by the user to the number of elements in the  pProperties array, and on return the variable is overwritten with the number of structures actually written to  pProperties. If pPropertyCount is less than the number of layer properties available, at most pPropertyCount" structures will be written, and  will be returned instead of , to indicate that not all the available properties were returned.The list of available layers may change at any time due to actions outside of the Vulkan implementation, so two calls to S with the same parameters may2 return different results, or retrieve different pPropertyCount values or  pProperties contents. Once an instance has been created, the layers enabled for that instance will continue to be enabled and valid for the lifetime of that instance, even if some of them become unavailable for future instances.Valid Usage (Implicit)VUID-vkEnumerateInstanceLayerProperties-pPropertyCount-parameter pPropertyCount must be a valid pointer to a uint32_t value=VUID-vkEnumerateInstanceLayerProperties-pProperties-parameter! If the value referenced by pPropertyCount is not 0 , and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pPropertyCount  structures Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee AlsoSvulkanvkEnumerateDeviceLayerProperties - Returns properties of available physical device layers DescriptionIf  pProperties is NULL, then the number of layer properties available is returned in pPropertyCount . Otherwise, pPropertyCount must point to a variable set by the user to the number of elements in the  pProperties array, and on return the variable is overwritten with the number of structures actually written to  pProperties. If pPropertyCount is less than the number of layer properties available, at most pPropertyCount" structures will be written, and  will be returned instead of , to indicate that not all the available properties were returned.!The list of layers enumerated by S must be exactly the sequence of layers enabled for the instance. The members of  for each enumerated layer must be the same as the properties when the layer was enumerated by S.Valid Usage (Implicit)>VUID-vkEnumerateDeviceLayerProperties-physicalDevice-parameter physicalDevice must be a valid  handle>VUID-vkEnumerateDeviceLayerProperties-pPropertyCount-parameter pPropertyCount must be a valid pointer to a uint32_t value;VUID-vkEnumerateDeviceLayerProperties-pProperties-parameter! If the value referenced by pPropertyCount is not 0, and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pPropertyCount  structures Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, SSSSSSSSSSSSSS,None( #$&'(./0289:<>?BkvulkanVkExtensionProperties - Structure specifying an extension propertiesSee Also https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264CapabilitiesEXT VkVideoDecodeH264CapabilitiesEXT,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264SessionCreateInfoEXT%VkVideoDecodeH264SessionCreateInfoEXT,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265CapabilitiesEXT VkVideoDecodeH265CapabilitiesEXT,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265SessionCreateInfoEXT%VkVideoDecodeH265SessionCreateInfoEXT,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264CapabilitiesEXT VkVideoEncodeH264CapabilitiesEXT,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264SessionCreateInfoEXT%VkVideoEncodeH264SessionCreateInfoEXT, S, SSvulkan extensionName is an array of , char containing a null-terminated UTF-8 string which is the name of the extension.Svulkan specVersion is the version of this extension. It is an integer, incremented with backward compatible changes.SvulkanvkEnumerateInstanceExtensionProperties - Returns up to requested number of global extension properties DescriptionWhen  pLayerName parameter is NULL, only extensions provided by the Vulkan implementation or by implicitly enabled layers are returned. When  pLayerName is the name of a layer, the instance extensions provided by that layer are returned.If  pProperties is NULL, then the number of extensions properties available is returned in pPropertyCount . Otherwise, pPropertyCount must point to a variable set by the user to the number of elements in the  pProperties array, and on return the variable is overwritten with the number of structures actually written to  pProperties. If pPropertyCount is less than the number of extension properties available, at most pPropertyCount" structures will be written, and  will be returned instead of , to indicate that not all the available properties were returned.Because the list of available layers may change externally between calls to S1, two calls may retrieve different results if a  pLayerName is available in one call but not in another. The extensions supported by a layer may also change between two calls, e.g. if the layer implementation is replaced by a different version between those calls.Implementations must not advertise any pair of extensions that cannot be enabled together due to behavioral differences, or any extension that cannot be enabled against the advertised version.Valid Usage (Implicit)VUID-vkEnumerateInstanceExtensionProperties-pLayerName-parameter If  pLayerName is not NULL,  pLayerName must' be a null-terminated UTF-8 stringVUID-vkEnumerateInstanceExtensionProperties-pPropertyCount-parameter pPropertyCount must be a valid pointer to a uint32_t valueVUID-vkEnumerateInstanceExtensionProperties-pProperties-parameter! If the value referenced by pPropertyCount is not 0 , and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pPropertyCount k structures Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee AlsokSvulkanvkEnumerateDeviceExtensionProperties - Returns properties of available physical device extensions DescriptionWhen  pLayerName parameter is NULL, only extensions provided by the Vulkan implementation or by implicitly enabled layers are returned. When  pLayerName is the name of a layer, the device extensions provided by that layer are returned.Implementations must not advertise any pair of extensions that cannot be enabled together due to behavioral differences, or any extension that cannot be enabled against the advertised version.Valid Usage (Implicit)VUID-vkEnumerateDeviceExtensionProperties-physicalDevice-parameter physicalDevice must be a valid  handle>VUID-vkEnumerateDeviceExtensionProperties-pLayerName-parameter If  pLayerName is not NULL,  pLayerName must' be a null-terminated UTF-8 stringVUID-vkEnumerateDeviceExtensionProperties-pPropertyCount-parameter pPropertyCount must be a valid pointer to a uint32_t value?VUID-vkEnumerateDeviceExtensionProperties-pProperties-parameter! If the value referenced by pPropertyCount is not 0 , and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pPropertyCount k structures Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Alsok, Svulkan pLayerName is either NULL or a pointer to a null-terminated UTF-8 string naming the layer to retrieve extensions from.SvulkanphysicalDevice- is the physical device that will be queried.vulkan pLayerName is either NULL or a pointer to a null-terminated UTF-8 string naming the layer to retrieve extensions from.kSSSSSSSkSSS+None( #$&'(./0289:<>?fYjvulkanVkEventCreateInfo - Structure specifying parameters of a newly created eventValid Usage (Implicit)See Also&, , SSvulkanflags is a bitmask of &* defining additional creation parameters.&VUID-VkEventCreateInfo-flags-parameter flags must be a valid combination of & valuesSvulkan)vkCreateEvent - Create a new event object Description:When created, the event object is in the unsignaled state. Valid UsageVUID-vkCreateEvent-events-04468 If the VK_KHR_portability_subset% extension is enabled, and ::events is /5, then the implementation does not support  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-eventsevents , and S must not be usedValid Usage (Implicit)#VUID-vkCreateEvent-device-parameter device must be a valid  handle(VUID-vkCreateEvent-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid j structure'VUID-vkCreateEvent-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure#VUID-vkCreateEvent-pEvent-parameter pEvent must be a valid pointer to a  handle Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , jSvulkan=A convenience wrapper to make a compatible pair of calls to S and STo ensure that S is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.Svulkan(vkDestroyEvent - Destroy an event object Valid UsageVUID-vkDestroyEvent-event-01145+ All submitted commands that refer to event must have completed executionVUID-vkDestroyEvent-event-01146 If  were provided when event1 was created, a compatible set of callbacks must be provided hereVUID-vkDestroyEvent-event-01147 If no  were provided when event was created,  pAllocator must be NULLValid Usage (Implicit)$VUID-vkDestroyEvent-device-parameter device must be a valid  handle#VUID-vkDestroyEvent-event-parameter If event is not , event must be a valid  handle(VUID-vkDestroyEvent-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure VUID-vkDestroyEvent-event-parent If event is a valid handle, it must1 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to event must be externally synchronizedSee Also, , Svulkan9vkGetEventStatus - Retrieve the status of an event object DescriptionUpon success, S returns the state of the event object with the following return codes:StatusMeaning The event specified by event is signaled. The event specified by event is unsignaled.Event Object Status CodesIf a   or  1 command is in a command buffer that is in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state+, then the value returned by this command may immediately be out of date.The state of an event can be updated by the host. The state of the event is immediately changed, and subsequent calls to S will return the new state. If an event is already in the requested state, then updating it to the same state has no effect. Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, Svulkan+vkSetEvent - Set an event to signaled state DescriptionWhen S is executed on the host, it defines an /event signal operation/ which sets the event to the signaled state.If event' is already in the signaled state when S is executed, then S5 has no effect, and no event signal operation occurs. Valid UsageVUID-vkSetEvent-event-03941 event must& not have been created with &Valid Usage (Implicit) VUID-vkSetEvent-device-parameter device must be a valid  handleVUID-vkSetEvent-event-parameter event must be a valid  handleVUID-vkSetEvent-event-parent event must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to event must be externally synchronized Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, Svulkan3vkResetEvent - Reset an event to non-signaled state DescriptionWhen S is executed on the host, it defines an /event unsignal operation/ which resets the event to the unsignaled state.If event) is already in the unsignaled state when S is executed, then S8 has no effect, and no event unsignal operation occurs. Valid UsageVUID-vkResetEvent-event-03821 There must) be an execution dependency between S and the execution of any   that includes event in its pEvents parameterVUID-vkResetEvent-event-03822 There must) be an execution dependency between S and the execution of any   that includes event in its pEvents parameterVUID-vkResetEvent-event-03823 event must& not have been created with &Valid Usage (Implicit)"VUID-vkResetEvent-device-parameter device must be a valid  handle!VUID-vkResetEvent-event-parameter event must be a valid  handleVUID-vkResetEvent-event-parent event must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to event must be externally synchronized Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, Svulkandevice. is the logical device that creates the event.vulkan pCreateInfo is a pointer to a j structure containing information about how the event is to be created.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.Svulkandevice/ is the logical device that destroys the event.vulkanevent' is the handle of the event to destroy.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.Svulkandevice+ is the logical device that owns the event.&VUID-vkGetEventStatus-device-parameter device must be a valid  handlevulkanevent% is the handle of the event to query.!VUID-vkGetEventStatus-event-03940 event must not have been created with &%VUID-vkGetEventStatus-event-parameter event must be a valid  handle"VUID-vkGetEventStatus-event-parent event must2 have been created, allocated, or retrieved from deviceSvulkandevice+ is the logical device that owns the event.vulkanevent is the event to set.Svulkandevice+ is the logical device that owns the event.vulkanevent is the event to reset.jSS1&&&&SSSSSSSSSSSSjSS1&&&&& None( #$&'(./0289:<>?j(vulkanVkCommandPoolCreateInfo - Structure specifying parameters of a newly created command pool Valid Usage(VUID-VkCommandPoolCreateInfo-flags-02860? If the protected memory feature is not enabled, the ) bit of flags must not be setValid Usage (Implicit)(VUID-VkCommandPoolCreateInfo-sType-sType sType must be  (VUID-VkCommandPoolCreateInfo-pNext-pNext pNext must be NULL,VUID-VkCommandPoolCreateInfo-flags-parameter flags must% be a valid combination of ) valuesSee Also), , SSvulkanflags is a bitmask of ) indicating usage behavior for the pool and command buffers allocated from it.SvulkanqueueFamilyIndex4 designates a queue family as described in section  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-queuepropsQueue Family Properties8. All command buffers allocated from this command pool must4 be submitted on queues from the same queue family.Svulkan6vkCreateCommandPool - Create a new command pool object Valid Usage/VUID-vkCreateCommandPool-queueFamilyIndex-01937 pCreateInfo->queueFamilyIndex must be the index of a queue family available in the logical device deviceValid Usage (Implicit))VUID-vkCreateCommandPool-device-parameter device must be a valid  handle.VUID-vkCreateCommandPool-pCreateInfo-parameter  pCreateInfo must be a valid pointer to a valid ( structure-VUID-vkCreateCommandPool-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure/VUID-vkCreateCommandPool-pCommandPool-parameter  pCommandPool must be a valid pointer to a  handle Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , (, Svulkan=A convenience wrapper to make a compatible pair of calls to S and STo ensure that S is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.Svulkan4vkDestroyCommandPool - Destroy a command pool object DescriptionWhen a pool is destroyed, all command buffers allocated from the pool are  vkFreeCommandBuffers.htmlfreed.3Any primary command buffer allocated from another  that is in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording or executable state4 and has a secondary command buffer allocated from  commandPool recorded into it, becomes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycleinvalid. Valid Usage+VUID-vkDestroyCommandPool-commandPool-00041 All 0  objects allocated from  commandPool must not be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state+VUID-vkDestroyCommandPool-commandPool-00042 If  were provided when  commandPool1 was created, a compatible set of callbacks must be provided here+VUID-vkDestroyCommandPool-commandPool-00043 If no  were provided when  commandPool was created,  pAllocator must be NULLValid Usage (Implicit)*VUID-vkDestroyCommandPool-device-parameter device must be a valid  handle/VUID-vkDestroyCommandPool-commandPool-parameter If  commandPool is not ,  commandPool must be a valid  handle.VUID-vkDestroyCommandPool-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure,VUID-vkDestroyCommandPool-commandPool-parent If  commandPool is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  commandPool must be externally synchronizedSee Also, , Svulkan)vkResetCommandPool - Reset a command pool DescriptionResetting a command pool recycles all of the resources from all of the command buffers allocated from the command pool back to the command pool. All command buffers that have been allocated from the command pool are put in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle initial state.3Any primary command buffer allocated from another  that is in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording or executable state4 and has a secondary command buffer allocated from  commandPool recorded into it, becomes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycleinvalid. Valid Usage)VUID-vkResetCommandPool-commandPool-00040 All 0  objects allocated from  commandPool must not be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending stateValid Usage (Implicit)(VUID-vkResetCommandPool-device-parameter device must be a valid  handle-VUID-vkResetCommandPool-commandPool-parameter  commandPool must be a valid  handle'VUID-vkResetCommandPool-flags-parameter flags must% be a valid combination of B values*VUID-vkResetCommandPool-commandPool-parent  commandPool must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  commandPool must be externally synchronized Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, C, Svulkandevice5 is the logical device that creates the command pool.vulkan pCreateInfo is a pointer to a (< structure specifying the state of the command pool object.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.Svulkandevice6 is the logical device that destroys the command pool.vulkan commandPool. is the handle of the command pool to destroy.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.Svulkandevice2 is the logical device that owns the command pool.vulkan commandPool is the command pool to reset.vulkanflags is a bitmask of B" controlling the reset operation.(SSSB))C1))))))SSSSSSSS(SSS1)))))))))B)))CNone( #$&'(./0289:<>? vulkanVkBufferViewCreateInfo - Structure specifying parameters of a newly created buffer view Valid Usage(VUID-VkBufferViewCreateInfo-offset-00925 offset must be less than the size of buffer 'VUID-VkBufferViewCreateInfo-range-00928 If range is not equal to  , range must be greater than 0'VUID-VkBufferViewCreateInfo-range-00929 If range is not equal to  , range must8 be an integer multiple of the texel block size of format'VUID-VkBufferViewCreateInfo-range-00930 If range is not equal to  6, the number of texel buffer elements given by (Frange / (texel block size)F  (texels per block)) where texel block size and texels per block are as defined in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibilityCompatible Formats table for format, must be less than or equal to  ::maxTexelBufferElements(VUID-VkBufferViewCreateInfo-offset-00931 If range is not equal to   , the sum of offset and range must& be less than or equal to the size of buffer'VUID-VkBufferViewCreateInfo-range-04059 If range is equal to  >, the number of texel buffer elements given by (F(size - offset) / (texel block size)F  (texels per block)) where size is the size of buffer, and texel block size and texels per block are as defined in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibilityCompatible Formats table for format, must be less than or equal to  ::maxTexelBufferElements(VUID-VkBufferViewCreateInfo-buffer-00932 buffer must have been created with a usage' value containing at least one of  or (VUID-VkBufferViewCreateInfo-buffer-00933 If buffer was created with usage containing , format must be supported for uniform texel buffers, as specified by the  flag in   ::bufferFeatures returned by  (VUID-VkBufferViewCreateInfo-buffer-00934 If buffer was created with usage containing , format must be supported for storage texel buffers, as specified by the  flag in   ::bufferFeatures returned by  (VUID-VkBufferViewCreateInfo-buffer-00935 If buffer is non-sparse then it must7 be bound completely and contiguously to a single 0  object(VUID-VkBufferViewCreateInfo-offset-02749 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-texelBufferAlignmenttexelBufferAlignment feature is not enabled, offset must be a multiple of  ::minTexelBufferOffsetAlignment(VUID-VkBufferViewCreateInfo-buffer-02750 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-texelBufferAlignmenttexelBufferAlignment feature is enabled and if buffer was created with usage containing , offset must% be a multiple of the lesser of ::&storageTexelBufferOffsetAlignmentBytes or, if ::,storageTexelBufferOffsetSingleTexelAlignment is /,, the size of a texel of the requested format. If the size of a texel is a multiple of three bytes, then the size of a single component of format is used instead(VUID-VkBufferViewCreateInfo-buffer-02751 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-texelBufferAlignmenttexelBufferAlignment feature is enabled and if buffer was created with usage containing , offset must% be a multiple of the lesser of ::&uniformTexelBufferOffsetAlignmentBytes or, if ::,uniformTexelBufferOffsetSingleTexelAlignment is /,, the size of a texel of the requested format. If the size of a texel is a multiple of three bytes, then the size of a single component of format is used insteadValid Usage (Implicit)'VUID-VkBufferViewCreateInfo-sType-sType sType must be  'VUID-VkBufferViewCreateInfo-pNext-pNext pNext must be NULL-VUID-VkBufferViewCreateInfo-flags-zerobitmask flags must be 0,VUID-VkBufferViewCreateInfo-buffer-parameter buffer must be a valid  handle,VUID-VkBufferViewCreateInfo-format-parameter format must be a valid K valueSee Also, *, o, K, , SSvulkanflags is reserved for future use.Svulkanbuffer is a $ on which the view will be created.Svulkanformat is a K; describing the format of the data elements in the buffer.Svulkanoffset is an offset in bytes from the base address of the buffer. Accesses to the buffer view from shaders use addressing that is relative to this starting offset.Svulkanrange+ is a size in bytes of the buffer view. If range is equal to  , the range from offset' to the end of the buffer is used. If   is used and the remaining size of the buffer is not a multiple of the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#texel-block-sizetexel block size of format', the nearest smaller multiple is used.Svulkan4vkCreateBufferView - Create a new buffer view objectValid Usage (Implicit)(VUID-vkCreateBufferView-device-parameter device must be a valid  handle-VUID-vkCreateBufferView-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid  structure,VUID-vkCreateBufferView-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure'VUID-vkCreateBufferView-pView-parameter pView must be a valid pointer to a  handle Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , Svulkan=A convenience wrapper to make a compatible pair of calls to S and STo ensure that S is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.Svulkan2vkDestroyBufferView - Destroy a buffer view object Valid Usage)VUID-vkDestroyBufferView-bufferView-00936+ All submitted commands that refer to  bufferView must have completed execution)VUID-vkDestroyBufferView-bufferView-00937 If  were provided when  bufferView1 was created, a compatible set of callbacks must be provided here)VUID-vkDestroyBufferView-bufferView-00938 If no  were provided when  bufferView was created,  pAllocator must be NULLValid Usage (Implicit))VUID-vkDestroyBufferView-device-parameter device must be a valid  handle-VUID-vkDestroyBufferView-bufferView-parameter If  bufferView is not ,  bufferView must be a valid  handle-VUID-vkDestroyBufferView-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure*VUID-vkDestroyBufferView-bufferView-parent If  bufferView is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  bufferView must be externally synchronizedSee Also, , Svulkandevice4 is the logical device that creates the buffer view.vulkan pCreateInfo is a pointer to a  structure containing parameters to be used to create the buffer view.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.Svulkandevice5 is the logical device that destroys the buffer view.vulkan bufferView is the buffer view to destroy.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.SSSSSS1**SSSSSSSSSSSS1**SNone( #$&'(./0289:<>?vulkanVkPhysicalDeviceExternalSemaphoreInfo - Structure specifying semaphore creation parameters.Valid Usage (Implicit)6VUID-VkPhysicalDeviceExternalSemaphoreInfo-sType-sType sType must be  6VUID-VkPhysicalDeviceExternalSemaphoreInfo-pNext-pNext pNext must be NULL* or a pointer to a valid instance of 7VUID-VkPhysicalDeviceExternalSemaphoreInfo-sType-unique The sType value of each struct in the pNext chain must be unique?VUID-VkPhysicalDeviceExternalSemaphoreInfo-handleType-parameter  handleType must be a valid  valueSee Also, , S,  vulkanVkExternalSemaphoreProperties - Structure describing supported external semaphore handle features DescriptionIf  handleType/ is not supported by the implementation, then ::externalSemaphoreFeatures will be set to zero.Valid Usage (Implicit)See Also, , , S,  SvulkanexportFromImportedHandleTypes is a bitmask of , specifying which types of imported handle  handleType can be exported from.SvulkancompatibleHandleTypes is a bitmask of  specifying handle types which can# be specified at the same time as  handleType when creating a semaphore.SvulkanexternalSemaphoreFeatures is a bitmask of  describing the features of  handleType.SvulkanpNext is NULL6 or a pointer to a structure extending this structure.Svulkan handleType is a  value specifying the external semaphore handle type for which capabilities will be returned.SvulkanvkGetPhysicalDeviceExternalSemaphoreProperties - Function for querying external semaphore handle capabilities.Valid Usage (Implicit)See Also, , SvulkanphysicalDevice is the physical device from which to query the semaphore capabilities.VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-physicalDevice-parameter physicalDevice must be a valid  handlevulkanpExternalSemaphoreInfo is a pointer to a  structure describing the parameters that would be consumed by = .VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-pExternalSemaphoreInfo-parameter pExternalSemaphoreInfo must be a valid pointer to a valid  structureSSSSSSS SSSSSSSSS  None( #$&'(./0289:<>?µ???TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT???HNone( #$&'(./0289:<>? vulkanVkBindImageMemoryInfo - Structure specifying how to bind an image to memory Valid Usage&VUID-VkBindImageMemoryInfo-image-01044 image must. not already be backed by a memory object&VUID-VkBindImageMemoryInfo-image-01045 image must not have been created with any sparse memory binding flags-VUID-VkBindImageMemoryInfo-memoryOffset-01046  memoryOffset must be less than the size of memory&VUID-VkBindImageMemoryInfo-image-01445 If image; requires a dedicated allocation (as reported by T  in I::requiresDedicatedAllocation for image), memory must have been created with I::image equal to image'VUID-VkBindImageMemoryInfo-memory-02628 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dedicatedAllocationImageAliasing#dedicated allocation image aliasing+ feature is not enabled, and the 4 provided when memory$ was allocated included a I structure in its pNext chain, and I::image was not , then image must equal I::image and  memoryOffset must be zero'VUID-VkBindImageMemoryInfo-memory-02629 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dedicatedAllocationImageAliasing#dedicated allocation image aliasing' feature is enabled, and the 4 provided when memory$ was allocated included a I structure in its pNext chain, and I::image was not  , then  memoryOffset must be zero, and image must be either equal to I::image or an image that was created using the same parameters in 1, with the exception that extent and  arrayLayers may differ subject to the following restrictions: every dimension in the extent) parameter of the image being bound must be equal to or smaller than the original image for which the allocation was created; and the  arrayLayers) parameter of the image being bound must be equal to or smaller than the original image for which the allocation was created%VUID-VkBindImageMemoryInfo-None-01901) If image was created with the " bit set, the image must be bound to a memory object allocated with a memory type that reports %VUID-VkBindImageMemoryInfo-None-01902) If image was created with the " bit not set, the image must not be bound to a memory object created with a memory type that reports &VUID-VkBindImageMemoryInfo-image-01050 If image was created with ::dedicatedAllocation equal to /, memory must" have been created with ::image equal to an image handle created with identical creation parameters to image and  memoryOffset must be zero'VUID-VkBindImageMemoryInfo-memory-02728 If the value of P:: handleTypes used to allocate memory is not 0, it must6 include at least one of the handles set in P:: handleTypes when image was created'VUID-VkBindImageMemoryInfo-memory-02989 If memory was created by a memory import operation, that is not  with a non-NULL buffer= value, the external handle type of the imported memory must also have been set in P:: handleTypes when image was created'VUID-VkBindImageMemoryInfo-memory-02990 If memory was created with the ) memory import operation with a non-NULL buffer value, B  must also have been set in P:: handleTypes when image was created&VUID-VkBindImageMemoryInfo-pNext-01615 If the pNext$ chain does not include a  structure, memory must have been allocated using one of the memory types allowed in the memoryTypeBits member of the 5- structure returned from a call to T  with image&VUID-VkBindImageMemoryInfo-pNext-01616 If the pNext$ chain does not include a  structure,  memoryOffset must$ be an integer multiple of the  alignment member of the 5- structure returned from a call to T  with image&VUID-VkBindImageMemoryInfo-pNext-01617 If the pNext$ chain does not include a / structure, the difference of the size of memory and  memoryOffset must! be greater than or equal to the size member of the 5- structure returned from a call to T  with the same image&VUID-VkBindImageMemoryInfo-pNext-01618 If the pNext chain includes a  structure, image must! have been created with the " bit set&VUID-VkBindImageMemoryInfo-pNext-01619 If the pNext chain includes a  structure, memory must have been allocated using one of the memory types allowed in the memoryTypeBits member of the 5- structure returned from a call to T  with image and where :: planeAspect corresponds to the Y:: planeAspect in the T structure@s pNext chain&VUID-VkBindImageMemoryInfo-pNext-01620 If the pNext chain includes a  structure,  memoryOffset must$ be an integer multiple of the  alignment member of the 5- structure returned from a call to T  with image and where :: planeAspect corresponds to the Y:: planeAspect in the T structure@s pNext chain&VUID-VkBindImageMemoryInfo-pNext-01621 If the pNext chain includes a / structure, the difference of the size of memory and  memoryOffset must! be greater than or equal to the size member of the 5- structure returned from a call to T  with the same image and where :: planeAspect corresponds to the Y:: planeAspect in the T structure@s pNext chain&VUID-VkBindImageMemoryInfo-pNext-01626 If the pNext chain includes a " structure, all instances of memory specified by ::pDeviceIndices must have been allocated&VUID-VkBindImageMemoryInfo-pNext-01627 If the pNext chain includes a  structure, and ::splitInstanceBindRegionCount is not zero, then image must! have been created with the " bit set&VUID-VkBindImageMemoryInfo-pNext-01628 If the pNext chain includes a & structure, all elements of ::pSplitInstanceBindRegions must= be valid rectangles contained within the dimensions of image&VUID-VkBindImageMemoryInfo-pNext-01629 If the pNext chain includes a  structure, the union of the areas of all elements of ::pSplitInstanceBindRegions. that correspond to the same instance of image must cover the entire image&VUID-VkBindImageMemoryInfo-image-01630 If image8 was created with a valid swapchain handle in :: swapchain, then the pNext chain must include a 4 structure containing the same swapchain handle&VUID-VkBindImageMemoryInfo-pNext-01631 If the pNext chain includes a  structure, memory must be &VUID-VkBindImageMemoryInfo-pNext-01632 If the pNext$ chain does not include a  structure, memory must be a valid  handleValid Usage (Implicit)&VUID-VkBindImageMemoryInfo-sType-sType sType must be &VUID-VkBindImageMemoryInfo-pNext-pNext Each pNext: member of any structure (including this one) in the pNext chain must be either NULL* or a pointer to a valid instance of , , or 'VUID-VkBindImageMemoryInfo-sType-unique The sType" value of each struct in the pNext chain must be unique*VUID-VkBindImageMemoryInfo-image-parameter image must be a valid  handle'VUID-VkBindImageMemoryInfo-commonparent Both of image , and memory2 that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same See Also, o, , , T,  vulkanVkBindBufferMemoryInfo - Structure specifying how to bind a buffer to memory Valid Usage(VUID-VkBindBufferMemoryInfo-buffer-01029 buffer must. not already be backed by a memory object(VUID-VkBindBufferMemoryInfo-buffer-01030 buffer must not have been created with any sparse memory binding flags.VUID-VkBindBufferMemoryInfo-memoryOffset-01031  memoryOffset must be less than the size of memory(VUID-VkBindBufferMemoryInfo-memory-01035 memory must have been allocated using one of the memory types allowed in the memoryTypeBits member of the 5- structure returned from a call to 5  with buffer.VUID-VkBindBufferMemoryInfo-memoryOffset-01036  memoryOffset must be an integer multiple of the  alignment member of the 5- structure returned from a call to 5  with buffer&VUID-VkBindBufferMemoryInfo-size-01037 The size member of the 5- structure returned from a call to 5  with buffer must& be less than or equal to the size of memory minus  memoryOffset(VUID-VkBindBufferMemoryInfo-buffer-01444 If buffer; requires a dedicated allocation (as reported by T  in I::requiresDedicatedAllocation for buffer), memory must have been allocated with I::buffer equal to buffer(VUID-VkBindBufferMemoryInfo-memory-01508 If the 4 provided when memory$ was allocated included a I structure in its pNext chain, and I::buffer was not , then buffer must equal I::buffer , and  memoryOffset must be zero&VUID-VkBindBufferMemoryInfo-None-01898 If buffer was created with the  bit set, the buffer must be bound to a memory object allocated with a memory type that reports &VUID-VkBindBufferMemoryInfo-None-01899 If buffer was created with the  bit not set, the buffer must not be bound to a memory object allocated with a memory type that reports (VUID-VkBindBufferMemoryInfo-buffer-01038 If buffer was created with ::dedicatedAllocation equal to /, memory must$ have been allocated with ::buffer equal to a buffer handle created with identical creation parameters to buffer and  memoryOffset must be zero(VUID-VkBindBufferMemoryInfo-memory-02726 If the value of P:: handleTypes used to allocate memory is not 0, it must6 include at least one of the handles set in P:: handleTypes when buffer was created(VUID-VkBindBufferMemoryInfo-memory-02985 If memory was allocated by a memory import operation, that is not  with a non-NULL buffer= value, the external handle type of the imported memory must also have been set in P:: handleTypes when buffer was created(VUID-VkBindBufferMemoryInfo-memory-02986 If memory" was allocated with the ) memory import operation with a non-NULL buffer value, B  must also have been set in P:: handleTypes when buffer was created5VUID-VkBindBufferMemoryInfo-bufferDeviceAddress-03339 If the c::bufferDeviceAddress feature is enabled and buffer was created with the   bit set, memory must# have been allocated with the  bit set'VUID-VkBindBufferMemoryInfo-pNext-01605 If the pNext chain includes a " structure, all instances of memory specified by ::pDeviceIndices must have been allocatedValid Usage (Implicit)'VUID-VkBindBufferMemoryInfo-sType-sType sType must be 'VUID-VkBindBufferMemoryInfo-pNext-pNext pNext must be NULL/ or a pointer to a valid instance of (VUID-VkBindBufferMemoryInfo-sType-unique The sType" value of each struct in the pNext chain must be unique,VUID-VkBindBufferMemoryInfo-buffer-parameter buffer must be a valid  handle,VUID-VkBindBufferMemoryInfo-memory-parameter memory must be a valid  handle(VUID-VkBindBufferMemoryInfo-commonparent Both of buffer , and memory must? have been created, allocated, or retrieved from the same See Also, , o, , T,  TvulkanpNext is NULL6 or a pointer to a structure extending this structure.Tvulkanimage' is the image to be attached to memory.Tvulkanmemory is a 0 object describing the device memory to attach.Tvulkan memoryOffset& is the start offset of the region of memory which is to be bound to the image. The number of bytes returned in the 5::size member in memory, starting from  memoryOffset. bytes, will be bound to the specified image.TvulkanpNext is NULL6 or a pointer to a structure extending this structure.Tvulkanbuffer( is the buffer to be attached to memory.Tvulkanmemory is a 0 object describing the device memory to attach.Tvulkan memoryOffset& is the start offset of the region of memory which is to be bound to the buffer. The number of bytes returned in the 5::size member in memory, starting from  memoryOffset/ bytes, will be bound to the specified buffer.Tvulkan:vkBindBufferMemory2 - Bind device memory to buffer objects DescriptionOn some implementations, it may be more efficient to batch memory bindings into a single command. Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, Tvulkan8vkBindImageMemory2 - Bind device memory to image objects DescriptionOn some implementations, it may be more efficient to batch memory bindings into a single command. Valid Usage(VUID-vkBindImageMemory2-pBindInfos-02858 If any ::image was created with " then all planes of ::image must( be bound individually in separate  pBindInfos(VUID-vkBindImageMemory2-pBindInfos-04006  pBindInfos must< not refer to the same image subresource more than onceValid Usage (Implicit)(VUID-vkBindImageMemory2-device-parameter device must be a valid  handle,VUID-vkBindImageMemory2-pBindInfos-parameter  pBindInfos must( be a valid pointer to an array of  bindInfoCount valid  structures1VUID-vkBindImageMemory2-bindInfoCount-arraylength  bindInfoCount must be greater than 0 Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, Tvulkandevice8 is the logical device that owns the buffers and memory.)VUID-vkBindBufferMemory2-device-parameter device must be a valid  handlevulkan pBindInfos is a pointer to an array of  bindInfoCount 2 structures describing buffers and memory to bind.-VUID-vkBindBufferMemory2-pBindInfos-parameter  pBindInfos must$ be a valid pointer to an array of  bindInfoCount valid  structuresTvulkandevice7 is the logical device that owns the images and memory.vulkan pBindInfos is a pointer to an array of 3 structures, describing images and memory to bind.M""""""""""""""""NTTTTTTTTTT TTTTTTTTTTTTTT  M"""""""""""""""""""""""""""""""NNone( #$&'(./0289:<>? TTTTTTTTTTT TTTTTTTTTTT@None( #$&'(./0289:<>?.vulkanVkSparseMemoryBind - Structure specifying a sparse memory bind operation DescriptionThe  binding range [resourceOffset, resourceOffset + size&) has different constraints based on flags. If flags contains , the binding range must be within the mip tail region of the metadata aspect. This metadata region is defined by:metadataRegion = [base, base + imageMipTailSize)base = imageMipTailOffset + imageMipTailStride  nand imageMipTailOffset, imageMipTailSize, and imageMipTailStride values are from the  corresponding to the metadata aspect of the image, and n is a valid array layer index for the image,imageMipTailStride- is considered to be zero for aspects where ::formatProperties.flags contains .If flags does not contain , the binding range must be within the range [0,5::size). Valid Usage$VUID-VkSparseMemoryBind-memory-01096 If memory is not , memory and  memoryOffset must match the memory requirements of the resource, as described in section https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-association$VUID-VkSparseMemoryBind-memory-01097 If memory is not , memory must not have been created with a memory type that reports   bit set"VUID-VkSparseMemoryBind-size-01098 size must be greater than 0,VUID-VkSparseMemoryBind-resourceOffset-01099 resourceOffset must& be less than the size of the resource"VUID-VkSparseMemoryBind-size-01100 size must> be less than or equal to the size of the resource minus resourceOffset*VUID-VkSparseMemoryBind-memoryOffset-01101  memoryOffset must be less than the size of memory"VUID-VkSparseMemoryBind-size-01102 size must+ be less than or equal to the size of memory minus  memoryOffset$VUID-VkSparseMemoryBind-memory-02730 If memory was created with P:: handleTypes not equal to 0(, at least one handle type it contained must! also have been set in P:: handleTypes or P:: handleTypes# when the resource was created$VUID-VkSparseMemoryBind-memory-02731 If memory was created by a memory import operation, the external handle type of the imported memory must also have been set in P:: handleTypes or P:: handleTypes# when the resource was createdValid Usage (Implicit)(VUID-VkSparseMemoryBind-memory-parameter If memory is not , memory must be a valid  handle'VUID-VkSparseMemoryBind-flags-parameter flags must% be a valid combination of  valuesSee Also, o, , , vulkanVkSparseImageOpaqueMemoryBindInfo - Structure specifying sparse image opaque memory bind information Valid Usage3VUID-VkSparseImageOpaqueMemoryBindInfo-pBinds-01103 If the flags member of any element of pBinds contains !, the binding range defined must> be within the mip tail region of the metadata aspect of imageValid Usage (Implicit)6VUID-VkSparseImageOpaqueMemoryBindInfo-image-parameter image must be a valid  handle7VUID-VkSparseImageOpaqueMemoryBindInfo-pBinds-parameter pBinds must# be a valid pointer to an array of  bindCount valid  structuresVkImageSubresource - Structure specifying an image subresourceValid Usage (Implicit)See Also", , 1 vulkanVkBindSparseInfo - Structure specifying a sparse binding operation Valid Usage+VUID-VkBindSparseInfo-pWaitSemaphores-03246 If any element of pWaitSemaphores or pSignalSemaphores was created with a   of   then the pNext chain must include a  structure!VUID-VkBindSparseInfo-pNext-03247 If the pNext. chain of this structure includes a # structure and any element of pWaitSemaphores was created with a   of   then its waitSemaphoreValueCount member must equal waitSemaphoreCount!VUID-VkBindSparseInfo-pNext-03248 If the pNext. chain of this structure includes a # structure and any element of pSignalSemaphores was created with a   of   then its signalSemaphoreValueCount member must equal signalSemaphoreCount-VUID-VkBindSparseInfo-pSignalSemaphores-03249 For each element of pSignalSemaphores created with a   of  ( the corresponding element of ::pSignalSemaphoreValues must have a value greater than the current value of the semaphore when the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signalingsemaphore signal operation is executed+VUID-VkBindSparseInfo-pWaitSemaphores-03250 For each element of pWaitSemaphores created with a   of  ( the corresponding element of ::pWaitSemaphoreValues must have a value which does not differ from the current value of the semaphore or from the value of any outstanding semaphore wait or signal operation on that semaphore by more than https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference#maxTimelineSemaphoreValueDifference-VUID-VkBindSparseInfo-pSignalSemaphores-03251 For each element of pSignalSemaphores created with a   of  ( the corresponding element of ::pSignalSemaphoreValues must have a value which does not differ from the current value of the semaphore or from the value of any outstanding semaphore wait or signal operation on that semaphore by more than https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference#maxTimelineSemaphoreValueDifferenceValid Usage (Implicit)!VUID-VkBindSparseInfo-sType-sType sType must be  !VUID-VkBindSparseInfo-pNext-pNext Each pNext: member of any structure (including this one) in the pNext chain must be either NULL* or a pointer to a valid instance of  or "VUID-VkBindSparseInfo-sType-unique The sType" value of each struct in the pNext chain must be unique/VUID-VkBindSparseInfo-pWaitSemaphores-parameter If waitSemaphoreCount is not 0, pWaitSemaphores must( be a valid pointer to an array of waitSemaphoreCount valid x handles,VUID-VkBindSparseInfo-pBufferBinds-parameter If bufferBindCount is not 0,  pBufferBinds must( be a valid pointer to an array of bufferBindCount valid  structures1VUID-VkBindSparseInfo-pImageOpaqueBinds-parameter If imageOpaqueBindCount is not 0, pImageOpaqueBinds must( be a valid pointer to an array of imageOpaqueBindCount valid  structures+VUID-VkBindSparseInfo-pImageBinds-parameter If imageBindCount is not 0,  pImageBinds must( be a valid pointer to an array of imageBindCount valid  structures1VUID-VkBindSparseInfo-pSignalSemaphores-parameter If signalSemaphoreCount is not 0, pSignalSemaphores must( be a valid pointer to an array of signalSemaphoreCount valid x handles"VUID-VkBindSparseInfo-commonparent Both of the elements of pSignalSemaphores, and the elements of pWaitSemaphores7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same See Alsox, , , , , TTvulkanpNext is NULL6 or a pointer to a structure extending this structure.TvulkanpWaitSemaphores is a pointer to an array of semaphores upon which to wait on before the sparse binding operations for this batch begin execution. If semaphores to wait on are provided, they define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-waitingsemaphore wait operation.Tvulkan pBufferBinds is a pointer to an array of  structures.TvulkanpImageOpaqueBinds is a pointer to an array of  structures, indicating opaque sparse image bindings to perform.Tvulkan pImageBinds is a pointer to an array of : structures, indicating sparse image bindings to perform.TvulkanpSignalSemaphores is a pointer to an array of semaphores which will be signaled when the sparse binding operations for this batch have completed execution. If semaphores to be signaled are provided, they define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signalingsemaphore signal operation.Tvulkanimage is the  object to be boundTvulkanpBinds is a pointer to an array of  structuresTvulkanimage is the  object to be bound.TvulkanpBinds is a pointer to an array of  structures.Tvulkanbuffer is the  object to be bound.2VUID-VkSparseBufferMemoryBindInfo-buffer-parameter buffer must be a valid  handleTvulkanpBinds is a pointer to an array of  structures.2VUID-VkSparseBufferMemoryBindInfo-pBinds-parameter pBinds must$ be a valid pointer to an array of  bindCount valid  structuresTvulkan subresource is the image aspect% and region of interest in the image.Tvulkanoffset are the coordinates of the first texel within the image subresource to bind.Tvulkanextent is the size in texels of the region within the image subresource to bind. The extent must be a multiple of the sparse image block dimensions, except when binding sparse image blocks along the edge of an image subresource it can) instead be such that any coordinate of offset + extent? equals the corresponding dimensions of the image subresource.Tvulkanmemory is the  object that the sparse image blocks of the image are bound to. If memory is ', the sparse image blocks are unbound.Tvulkan memoryOffset is an offset into  object. If memory is , this value is ignored.Tvulkanflags! are sparse memory binding flags.TvulkanresourceOffset! is the offset into the resource.Tvulkansize. is the size of the memory region to be bound.Tvulkanmemory is the 8 object that the range of the resource is bound to. If memory is , the range is unbound.Tvulkan memoryOffset is the offset into the + object to bind the resource range to. If memory is , this value is ignored.Tvulkanflags is a bitmask of , specifying usage of the binding operation.Tvulkan aspectMask is a " value selecting the image aspect.,VUID-VkImageSubresource-aspectMask-parameter  aspectMask must be a valid combination of " values2VUID-VkImageSubresource-aspectMask-requiredbitmask  aspectMask must not be 0TvulkanmipLevel selects the mipmap level.Tvulkan arrayLayer selects the array layer.TvulkanformatProperties is a 6 structure specifying properties of the image format.TvulkanimageMipTailFirstLod is the first mip level at which image subresources are included in the mip tail region.TvulkanimageMipTailSize; is the memory size (in bytes) of the mip tail region. If formatProperties.flags contains , this is the size of the whole mip tail, otherwise this is the size of the mip tail of a single array layer. This value is guaranteed to be a multiple of the sparse block size in bytes.TvulkanimageMipTailOffset( is the opaque memory offset used with  to bind the mip tail region(s).TvulkanimageMipTailStride? is the offset stride between each array-layer@s mip tail, if formatProperties.flags does not contain % (otherwise the value is undefined).Tvulkan aspectMask is a bitmask " specifying which aspects of the image the properties apply to.TvulkanimageGranularity is the width, height, and depth of the sparse image block in texels or compressed texel blocks.Tvulkanflags is a bitmask of > specifying additional information about the sparse resource.TvulkanvkGetImageSparseMemoryRequirements - Query the memory requirements for a sparse image DescriptionIf pSparseMemoryRequirements is NULL, then the number of sparse memory requirements available is returned in pSparseMemoryRequirementCount. Otherwise, pSparseMemoryRequirementCount must point to a variable set by the user to the number of elements in the pSparseMemoryRequirements array, and on return the variable is overwritten with the number of structures actually written to pSparseMemoryRequirements. If pSparseMemoryRequirementCount is less than the number of sparse memory requirements available, at most pSparseMemoryRequirementCount structures will be written.#If the image was not created with   then pSparseMemoryRequirementCount will be set to zero and pSparseMemoryRequirements will not be written to.Note?It is legal for an implementation to report a larger value in 5::size than would be obtained by adding together memory sizes for all  returned by T. This may occur when the implementation requires unused padding in the address range describing the resource.Valid Usage (Implicit)8VUID-vkGetImageSparseMemoryRequirements-device-parameter device must be a valid  handle7VUID-vkGetImageSparseMemoryRequirements-image-parameter image must be a valid  handleVUID-vkGetImageSparseMemoryRequirements-pSparseMemoryRequirementCount-parameter pSparseMemoryRequirementCount must be a valid pointer to a uint32_t valueVUID-vkGetImageSparseMemoryRequirements-pSparseMemoryRequirements-parameter! If the value referenced by pSparseMemoryRequirementCount is not 0, and pSparseMemoryRequirements is not NULL, pSparseMemoryRequirements must( be a valid pointer to an array of pSparseMemoryRequirementCount  structures4VUID-vkGetImageSparseMemoryRequirements-image-parent image must1 have been created, allocated, or retrieved from deviceSee Also, , TvulkanvkGetPhysicalDeviceSparseImageFormatProperties - Retrieve properties of an image format applied to sparse images DescriptionIf  pProperties is NULL, then the number of sparse format properties available is returned in pPropertyCount . Otherwise, pPropertyCount must point to a variable set by the user to the number of elements in the  pProperties array, and on return the variable is overwritten with the number of structures actually written to  pProperties. If pPropertyCount is less than the number of sparse format properties available, at most pPropertyCount structures will be written.If  , is not supported for the given arguments, pPropertyCount will be set to zero upon return, and no data will be written to  pProperties.Multiple aspects are returned for depth/stencil images that are implemented as separate planes by the implementation. The depth and stencil data planes each have unique  data.Depth/stencil images with depth and stencil data interleaved into a single plane will return a single  structure with the  aspectMask set to " | ". Valid UsageVUID-vkGetPhysicalDeviceSparseImageFormatProperties-samples-01094 samples must$ be a bit value that is set in  :: sampleCounts returned by   with format, type, tiling, and usage) equal to those in this command and flags( equal to the value that is set in 1::flags when the image is createdValid Usage (Implicit)VUID-vkGetPhysicalDeviceSparseImageFormatProperties-physicalDevice-parameter physicalDevice must be a valid  handleVUID-vkGetPhysicalDeviceSparseImageFormatProperties-format-parameter format must be a valid K valueVUID-vkGetPhysicalDeviceSparseImageFormatProperties-type-parameter type must be a valid Q valueVUID-vkGetPhysicalDeviceSparseImageFormatProperties-samples-parameter samples must be a valid b valueVUID-vkGetPhysicalDeviceSparseImageFormatProperties-usage-parameter usage must be a valid combination of R valuesVUID-vkGetPhysicalDeviceSparseImageFormatProperties-usage-requiredbitmask usage must not be 0VUID-vkGetPhysicalDeviceSparseImageFormatProperties-tiling-parameter tiling must be a valid P valueVUID-vkGetPhysicalDeviceSparseImageFormatProperties-pPropertyCount-parameter pPropertyCount must be a valid pointer to a uint32_t valueVUID-vkGetPhysicalDeviceSparseImageFormatProperties-pProperties-parameter! If the value referenced by pPropertyCount is not 0 , and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pPropertyCount  structuresSee AlsoK, P, Q, S, , b, TvulkanvkQueueBindSparse - Bind device memory to a sparse resource object DescriptionT is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-submissionqueue submission command,, with each batch defined by an element of  pBindInfo as a  structure. Batches begin execution in the order they appear in  pBindInfo, but may complete out of order.,Within a batch, a given range of a resource must not be bound more than once. Across batches, if a range is to be bound to one allocation and offset and then to another allocation and offset, then the application must guarantee (usually using semaphores) that the binding operations are executed in the correct order, as well as to order binding operations against the execution of command buffer submissions.As no operation to T causes any pipeline stage to access memory, synchronization primitives used in this command effectively only define execution dependencies.Additional information about fence and semaphore operation is described in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronizationthe synchronization chapter. Valid Usage"VUID-vkQueueBindSparse-fence-01113 If fence is not , fence must be unsignaled"VUID-vkQueueBindSparse-fence-01114 If fence is not , fence must not be associated with any other queue command that has not yet completed execution on that queue.VUID-vkQueueBindSparse-pSignalSemaphores-01115 Each element of the pSignalSemaphores member of each element of  pBindInfo must be unsignaled when the semaphore signal operation it defines is executed on the device,VUID-vkQueueBindSparse-pWaitSemaphores-01116 When a semaphore wait operation referring to a binary semaphore defined by any element of the pWaitSemaphores member of any element of  pBindInfo executes on queue, there must6 be no other queues waiting on the same semaphore,VUID-vkQueueBindSparse-pWaitSemaphores-01117 All elements of the pWaitSemaphores member of all elements of the  pBindInfo0 parameter referring to a binary semaphore must4 be semaphores that are signaled, or have  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signalingsemaphore signal operations( previously submitted for execution,VUID-vkQueueBindSparse-pWaitSemaphores-03245 All elements of the pWaitSemaphores member of all elements of  pBindInfo created with a   of   must reference a semaphore signal operation that has been submitted for execution and any semaphore signal operations on which it depends (if any) must' have also been submitted for executionValid Usage (Implicit)&VUID-vkQueueBindSparse-queue-parameter queue must be a valid | handle*VUID-vkQueueBindSparse-pBindInfo-parameter If  bindInfoCount is not 0,  pBindInfo must( be a valid pointer to an array of  bindInfoCount valid  structures&VUID-vkQueueBindSparse-fence-parameter If fence is not , fence must be a valid  handle VUID-vkQueueBindSparse-queuetype The queue must' support sparse binding operations#VUID-vkQueueBindSparse-commonparent Both of fence, and queue7 that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same Host SynchronizationHost access to queue must be externally synchronizedHost access to  pBindInfo[].pBufferBinds[].buffer must be externally synchronizedHost access to  pBindInfo[].pImageOpaqueBinds[].image must be externally synchronizedHost access to  pBindInfo[].pImageBinds[].image must be externally synchronizedHost access to fence must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types--SPARSE_BINDING Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , |Tvulkandevice+ is the logical device that owns the image.vulkanimage is the , object to get the memory requirements for.TvulkanphysicalDevice is the physical device from which to query the sparse image format properties.vulkanformat is the image format.vulkantype is the dimensionality of image.vulkansamples is a b3 value specifying the number of samples per texel.vulkanusage9 is a bitmask describing the intended usage of the image.vulkantiling9 is the tiling arrangement of the texel blocks in memory.Tvulkanqueue is the queue that the sparse binding operations will be submitted to.vulkan pBindInfo is a pointer to an array of  structures, each specifying a sparse binding submission batch.vulkanfence is an optional& handle to a fence to be signaled. If fence is not , it defines a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-signalingfence signal operation.TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT""""""""""""""TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"""""""""""""""""""""""""TNone( #$&'(./0289:<>?<vulkan)VkSparseImageMemoryRequirements2 - (None)Valid Usage (Implicit)See Also, , U,  vulkanVkMemoryRequirements2 - Structure specifying memory requirementsValid Usage (Implicit)&VUID-VkMemoryRequirements2-sType-sType sType must be  &VUID-VkMemoryRequirements2-pNext-pNext pNext must be NULL/ or a pointer to a valid instance of 'VUID-VkMemoryRequirements2-sType-unique The sType" value of each struct in the pNext chain must be uniqueSee Also, ,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoGetMemoryPropertiesKHRVkVideoGetMemoryPropertiesKHR, U,  ,  , U,  vulkan-VkImageSparseMemoryRequirementsInfo2 - (None)Valid Usage (Implicit)See Also, , U,  vulkan'VkImageMemoryRequirementsInfo2 - (None) Valid Usage/VUID-VkImageMemoryRequirementsInfo2-image-01589 If image was created with a  multi-planar format and the   flag, there must be a  included in the pNext chain of the  structure/VUID-VkImageMemoryRequirementsInfo2-image-02279 If image was created with   and with , then there must be a  included in the pNext chain of the  structure/VUID-VkImageMemoryRequirementsInfo2-image-01590 If image$ was not created with the   flag, there must not be a  included in the pNext chain of the  structure/VUID-VkImageMemoryRequirementsInfo2-image-02280 If image: was created with a single-plane format and with any tiling other than , then there must not be a  included in the pNext chain of the  structure/VUID-VkImageMemoryRequirementsInfo2-image-01897 If image was created with the B ( external memory handle type, then image must be bound to memoryValid Usage (Implicit)/VUID-VkImageMemoryRequirementsInfo2-sType-sType sType must be  /VUID-VkImageMemoryRequirementsInfo2-pNext-pNext pNext must be NULL* or a pointer to a valid instance of 0VUID-VkImageMemoryRequirementsInfo2-sType-unique The sType" value of each struct in the pNext chain must be unique3VUID-VkImageMemoryRequirementsInfo2-image-parameter image must be a valid  handleSee Also, , U,  vulkan(VkBufferMemoryRequirementsInfo2 - (None)Valid Usage (Implicit)See Also, , U,  UvulkanmemoryRequirements is a  structure describing the memory requirements of the sparse image.UvulkanpNext is NULL6 or a pointer to a structure extending this structure.UvulkanmemoryRequirements is a ? structure describing the memory requirements of the resource.Uvulkanimage is the image to query.9VUID-VkImageSparseMemoryRequirementsInfo2-image-parameter image must be a valid  handleUvulkanpNext is NULL6 or a pointer to a structure extending this structure.Uvulkanimage is the image to query.Uvulkanbuffer is the buffer to query.5VUID-VkBufferMemoryRequirementsInfo2-buffer-parameter buffer must be a valid  handleUvulkanvkGetBufferMemoryRequirements2 - Returns the memory requirements for specified Vulkan objectValid Usage (Implicit)See Also, , UvulkanvkGetImageMemoryRequirements2 - Returns the memory requirements for specified Vulkan objectValid Usage (Implicit)See Also, , UvulkanvkGetImageSparseMemoryRequirements2 - Query the memory requirements for a sparse imageValid Usage (Implicit)9VUID-vkGetImageSparseMemoryRequirements2-device-parameter device must be a valid  handle8VUID-vkGetImageSparseMemoryRequirements2-pInfo-parameter pInfo must$ be a valid pointer to a valid  structureVUID-vkGetImageSparseMemoryRequirements2-pSparseMemoryRequirementCount-parameter pSparseMemoryRequirementCount must be a valid pointer to a uint32_t valueVUID-vkGetImageSparseMemoryRequirements2-pSparseMemoryRequirements-parameter! If the value referenced by pSparseMemoryRequirementCount is not 0, and pSparseMemoryRequirements is not NULL, pSparseMemoryRequirements must( be a valid pointer to an array of pSparseMemoryRequirementCount  structuresSee Also, , Uvulkandevice, is the logical device that owns the buffer.4VUID-vkGetBufferMemoryRequirements2-device-parameter device must be a valid  handlevulkanpInfo is a pointer to a  structure containing parameters required for the memory requirements query.3VUID-vkGetBufferMemoryRequirements2-pInfo-parameter pInfo must be a valid pointer to a valid  structureUvulkandevice+ is the logical device that owns the image.3VUID-vkGetImageMemoryRequirements2-device-parameter device must be a valid  handlevulkanpInfo is a pointer to a  structure containing parameters required for the memory requirements query.2VUID-vkGetImageMemoryRequirements2-pInfo-parameter pInfo must be a valid pointer to a valid  structureUvulkandevice+ is the logical device that owns the image.vulkanpInfo is a pointer to a  structure containing parameters required for the memory requirements query.UUUUUUUUUUUU UUUUUUUUUUUUUUUUUU  None( #$&'(./0289:<>?)UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU?None( #$&'(./0289:<>?>vulkanVkShaderModuleCreateInfo - Structure specifying parameters of a newly created shader module Valid Usage,VUID-VkShaderModuleCreateInfo-codeSize-01085 codeSize must be greater than 0 )VUID-VkShaderModuleCreateInfo-pCode-01376 If pCode# is a pointer to SPIR-V code, codeSize must be a multiple of 4)VUID-VkShaderModuleCreateInfo-pCode-01377 pCode must point to either valid SPIR-V code, formatted and packed as described by the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirv-specKhronos SPIR-V Specification or valid GLSL code which must be written to the GL_KHR_vulkan_glsl extension specification)VUID-VkShaderModuleCreateInfo-pCode-01378 If pCode- is a pointer to SPIR-V code, that code must; adhere to the validation rules described by the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-module-validation Validation Rules within a Module section of the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilitiesSPIR-V Environment appendix)VUID-VkShaderModuleCreateInfo-pCode-01379 If pCode$ is a pointer to GLSL code, it must( be valid GLSL code written to the GL_KHR_vulkan_glsl GLSL extension specification)VUID-VkShaderModuleCreateInfo-pCode-01089 pCode must declare the Shader capability for SPIR-V code)VUID-VkShaderModuleCreateInfo-pCode-01090 pCode must not declare any capability that is not supported by the API, as described by the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-module-validation Capabilities section of the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilitiesSPIR-V Environment appendix)VUID-VkShaderModuleCreateInfo-pCode-01091 If pCode: declares any of the capabilities listed in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-tableSPIR-V Environment6 appendix, one of the corresponding requirements must be satisfied)VUID-VkShaderModuleCreateInfo-pCode-04146 pCode must not declare any SPIR-V extension that is not supported by the API, as described by the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-extensions Extension section of the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilitiesSPIR-V Environment appendix)VUID-VkShaderModuleCreateInfo-pCode-04147 If pCode? declares any of the SPIR-V extensions listed in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-extensions-tableSPIR-V Environment6 appendix, one of the corresponding requirements must be satisfiedValid Usage (Implicit))VUID-VkShaderModuleCreateInfo-sType-sType sType must be  )VUID-VkShaderModuleCreateInfo-pNext-pNext pNext must be NULL/ or a pointer to a valid instance of *VUID-VkShaderModuleCreateInfo-sType-unique The sType" value of each struct in the pNext chain must be unique/VUID-VkShaderModuleCreateInfo-flags-zerobitmask flags must be 0-VUID-VkShaderModuleCreateInfo-pCode-parameter pCode must( be a valid pointer to an array of \textrm{codeSize} \over 4 uint32_t valuesSee Also, , UUvulkanpNext is NULL6 or a pointer to a structure extending this structure.Uvulkanflags is reserved for future use.UvulkanpCode is a pointer to code that is used to create the shader module. The type and format of the code is determined from the content of the memory addressed by pCode.Uvulkan9vkCreateShaderModule - Creates a new shader module object DescriptionOnce a shader module has been created, any entry points it contains can4 be used in pipeline shader stages as described in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-computeCompute Pipelines and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-graphicsGraphics Pipelines.Valid Usage (Implicit)*VUID-vkCreateShaderModule-device-parameter device must be a valid  handle/VUID-vkCreateShaderModule-pCreateInfo-parameter  pCreateInfo must be a valid pointer to a valid  structure.VUID-vkCreateShaderModule-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure1VUID-vkCreateShaderModule-pShaderModule-parameter  pShaderModule must be a valid pointer to a w handle Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , w, Uvulkan=A convenience wrapper to make a compatible pair of calls to U and UTo ensure that U is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.Uvulkan/vkDestroyShaderModule - Destroy a shader module DescriptionA shader module can be destroyed while pipelines created using its shaders are still in use. Valid Usage-VUID-vkDestroyShaderModule-shaderModule-01092 If  were provided when  shaderModule1 was created, a compatible set of callbacks must be provided here-VUID-vkDestroyShaderModule-shaderModule-01093 If no  were provided when  shaderModule was created,  pAllocator must be NULLValid Usage (Implicit)+VUID-vkDestroyShaderModule-device-parameter device must be a valid  handle1VUID-vkDestroyShaderModule-shaderModule-parameter If  shaderModule is not ,  shaderModule must be a valid w handle/VUID-vkDestroyShaderModule-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure.VUID-vkDestroyShaderModule-shaderModule-parent If  shaderModule is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  shaderModule must be externally synchronizedSee Also, , wUvulkandevice6 is the logical device that creates the shader module.vulkan pCreateInfo is a pointer to a  structure.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.Uvulkandevice7 is the logical device that destroys the shader module.vulkan shaderModule/ is the handle of the shader module to destroy.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter. w1UUUUUUU UUUUUUUw1>None( #$&'(./0289:<>? vulkanVkSamplerCreateInfo - Structure specifying parameters of a newly created sampler Description(Mapping of OpenGL to Vulkan filter modes magFilter values of & and & directly correspond to  GL_NEAREST and  GL_LINEAR magnification filters.  minFilter and  mipmapMode combine to correspond to the similarly named OpenGL minification filter of GL_minFilter_MIPMAP_mipmapMode (e.g.  minFilter of & and  mipmapMode of  correspond to GL_LINEAR_MIPMAP_NEAREST).There are no Vulkan filter modes that directly correspond to OpenGL minification filters of  GL_LINEAR or  GL_NEAREST , but they can be emulated using , minLod = 0, and maxLod = 0.25, and using  minFilter = & or  minFilter = &, respectively.Note that using a maxLod of zero would cause  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-texel-filtering magnification" to always be performed, and the  magFilter to always be used. This is valid, just not an exact match for OpenGL behavior. Clamping the maximum LOD to 0.25 allows the  value to be non-zero and minification to be performed, while still always rounding down to the base level. If the  minFilter and  magFilter are equal, then using a maxLod of zero also works.,The maximum number of sampler objects which can be simultaneously created on a device is implementation-dependent and specified by the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxSamplerAllocationCountmaxSamplerAllocationCount member of the   structure.NoteFor historical reasons, if maxSamplerAllocationCount0 is exceeded, some implementations may return . Exceeding this limit will result in undefined behavior, and an application should not rely on the use of the returned error code in order to identify when the limit is reached.Since y5 is a non-dispatchable handle type, implementations may return the same handle for sampler state vectors that are identical. In such cases, all such objects would only count once against the maxSamplerAllocationCount limit. Valid Usage)VUID-VkSamplerCreateInfo-mipLodBias-01069 The absolute value of  mipLodBias must be less than or equal to  ::maxSamplerLodBias0VUID-VkSamplerCreateInfo-samplerMipLodBias-04467 If the VK_KHR_portability_subset extension is enabled, and ::samplerMipLodBias is /,  mipLodBias must be zero%VUID-VkSamplerCreateInfo-maxLod-01973 maxLod must" be greater than or equal to minLod/VUID-VkSamplerCreateInfo-anisotropyEnable-01070 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-samplerAnisotropyanisotropic sampling feature is not enabled, anisotropyEnable must be //VUID-VkSamplerCreateInfo-anisotropyEnable-01071 If anisotropyEnable is /,  maxAnisotropy must be between 1.0 and  ::maxSamplerAnisotropy, inclusive(VUID-VkSamplerCreateInfo-minFilter-01645 If  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y@CBCR conversion is enabled and the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-featurespotential format features; of the sampler Y@CBCR conversion do not support ,  minFilter and  magFilter must2 be equal to the sampler Y@CBCR conversion@s  chromaFilter6VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01072 If unnormalizedCoordinates is /,  minFilter and  magFilter must be equal6VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01073 If unnormalizedCoordinates is /,  mipmapMode must be 6VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01074 If unnormalizedCoordinates is /, minLod and maxLod must be zero6VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01075 If unnormalizedCoordinates is /,  addressModeU and  addressModeV must each be either  or 6VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01076 If unnormalizedCoordinates is /, anisotropyEnable must be /6VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01077 If unnormalizedCoordinates is /,  compareEnable must be /+VUID-VkSamplerCreateInfo-addressModeU-01078 If any of  addressModeU,  addressModeV or  addressModeW are ,  borderColor must be a valid * value+VUID-VkSamplerCreateInfo-addressModeU-01646 If  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y@CBCR conversion is enabled,  addressModeU,  addressModeV, and  addressModeW must be , anisotropyEnable must be / , and unnormalizedCoordinates must be /#VUID-VkSamplerCreateInfo-None-01647! The sampler reduction mode must be set to  if  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y@CBCR conversion is enabled+VUID-VkSamplerCreateInfo-addressModeU-01079 If  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-samplerMirrorClampToEdgesamplerMirrorClampToEdge! is not enabled, and if the #VK_KHR_sampler_mirror_clamp_to_edge extension is not enabled,  addressModeU,  addressModeV and  addressModeW must not be ,VUID-VkSamplerCreateInfo-compareEnable-01080 If  compareEnable is /,  compareOp must be a valid D value(VUID-VkSamplerCreateInfo-magFilter-01081 If either  magFilter or  minFilter is  , anisotropyEnable must be /,VUID-VkSamplerCreateInfo-compareEnable-01423 If  compareEnable is /, the  reductionMode member of  must be $VUID-VkSamplerCreateInfo-flags-02574 If flags includes  , then  minFilter and  magFilter must be equal$VUID-VkSamplerCreateInfo-flags-02575 If flags includes  , then  mipmapMode must be $VUID-VkSamplerCreateInfo-flags-02576 If flags includes  , then minLod and maxLod must be zero$VUID-VkSamplerCreateInfo-flags-02577 If flags includes  , then  addressModeU and  addressModeV must each be either  or $VUID-VkSamplerCreateInfo-flags-02578 If flags includes  , then anisotropyEnable must be /$VUID-VkSamplerCreateInfo-flags-02579 If flags includes  , then  compareEnable must be /$VUID-VkSamplerCreateInfo-flags-02580 If flags includes  , then unnormalizedCoordinates must be /*VUID-VkSamplerCreateInfo-borderColor-04011 If  borderColor is one of * or *, then a  must be included in the pNext chain1VUID-VkSamplerCreateInfo-customBorderColors-04085 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-customBorderColorscustomBorderColors feature is not enabled,  borderColor must not be * or **VUID-VkSamplerCreateInfo-borderColor-04442 If  borderColor is one of * or *, and ::format is not , ::customBorderColor must0 be within the range of values representable in format#VUID-VkSamplerCreateInfo-None-04012 The maximum number of samplers with custom border colors which can be simultaneously created on a device is implementation-dependent and specified by the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxCustomBorderColorSamplersmaxCustomBorderColorSamplers member of the  structureValid Usage (Implicit)$VUID-VkSamplerCreateInfo-sType-sType sType must be   $VUID-VkSamplerCreateInfo-pNext-pNext Each pNext: member of any structure (including this one) in the pNext chain must be either NULL* or a pointer to a valid instance of , , or %VUID-VkSamplerCreateInfo-sType-unique The sType" value of each struct in the pNext chain must be unique(VUID-VkSamplerCreateInfo-flags-parameter flags must% be a valid combination of  values,VUID-VkSamplerCreateInfo-magFilter-parameter  magFilter must be a valid J value,VUID-VkSamplerCreateInfo-minFilter-parameter  minFilter must be a valid J value-VUID-VkSamplerCreateInfo-mipmapMode-parameter  mipmapMode must be a valid  value/VUID-VkSamplerCreateInfo-addressModeU-parameter  addressModeU must be a valid  value/VUID-VkSamplerCreateInfo-addressModeV-parameter  addressModeV must be a valid  value/VUID-VkSamplerCreateInfo-addressModeW-parameter  addressModeW must be a valid  valueSee Alsoq, *, D, J, , , , , UUvulkanpNext is NULL6 or a pointer to a structure extending this structure.Uvulkanflags is a bitmask of 2 describing additional parameters of the sampler.Uvulkan magFilter is a J value specifying the magnification filter to apply to lookups.Uvulkan minFilter is a J? value specifying the minification filter to apply to lookups.Uvulkan mipmapMode is a 9 value specifying the mipmap filter to apply to lookups.Uvulkan addressModeU is a  value specifying the addressing mode for outside [0..1] range for U coordinate.Uvulkan addressModeV is a  value specifying the addressing mode for outside [0..1] range for V coordinate.Uvulkan addressModeW is a  value specifying the addressing mode for outside [0..1] range for W coordinate.Uvulkansamplers-mipLodBias  mipLodBias is the bias to be added to mipmap LOD (level-of-detail) calculation and bias provided by image sampling functions in SPIR-V, as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-level-of-detail-operationLevel-of-Detail Operation section.Uvulkansamplers-maxAnisotropy anisotropyEnable is /8 to enable anisotropic filtering, as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-texel-anisotropic-filteringTexel Anisotropic Filtering section, or / otherwise.Uvulkan maxAnisotropy9 is the anisotropy value clamp used by the sampler when anisotropyEnable is /. If anisotropyEnable is /,  maxAnisotropy is ignored.Uvulkan compareEnable is / to enable comparison against a reference value during lookups, or / otherwise.Note: Some implementations will default to shader state if this member does not match.Uvulkan compareOp is a D value specifying the comparison function to apply to fetched data before filtering as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-depth-compare-operationDepth Compare Operation section.UvulkanminLod is used to clamp the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-level-of-detail-operation!minimum of the computed LOD value.UvulkanmaxLod is used to clamp the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-level-of-detail-operation!maximum of the computed LOD value,. To avoid clamping the maximum value, set maxLod to the constant .Uvulkan borderColor is a *6 value specifying the predefined border color to use.Uvulkan samplers-unnormalizedCoordinates unnormalizedCoordinates controls whether to use unnormalized or normalized texel coordinates to address texels of the image. When set to /, the range of the image coordinates used to lookup the texel is in the range of zero to the image dimensions for x, y and z. When set to /0 the range of image coordinates is zero to one.When unnormalizedCoordinates is /, images the sampler is used with in the shader have the following requirements:The viewType must be either  or  .The image view must, have a single layer and a single mip level.When unnormalizedCoordinates is /, image built-in functions in the shader that use the sampler have the following requirements:The functions must not use projection.The functions must not use offsets.Uvulkan-vkCreateSampler - Create a new sampler object Valid Usage4VUID-vkCreateSampler-maxSamplerAllocationCount-04110 There must be less than  ::maxSamplerAllocationCount y- objects currently created on the deviceValid Usage (Implicit)%VUID-vkCreateSampler-device-parameter device must be a valid  handle*VUID-vkCreateSampler-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid  structure)VUID-vkCreateSampler-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure'VUID-vkCreateSampler-pSampler-parameter pSampler must be a valid pointer to a y handle Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , y, Uvulkan=A convenience wrapper to make a compatible pair of calls to U and UTo ensure that U is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.Uvulkan+vkDestroySampler - Destroy a sampler object Valid Usage#VUID-vkDestroySampler-sampler-01082+ All submitted commands that refer to sampler must have completed execution#VUID-vkDestroySampler-sampler-01083 If  were provided when sampler1 was created, a compatible set of callbacks must be provided here#VUID-vkDestroySampler-sampler-01084 If no  were provided when sampler was created,  pAllocator must be NULLValid Usage (Implicit)&VUID-vkDestroySampler-device-parameter device must be a valid  handle'VUID-vkDestroySampler-sampler-parameter If sampler is not , sampler must be a valid y handle*VUID-vkDestroySampler-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure$VUID-vkDestroySampler-sampler-parent If sampler is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to sampler must be externally synchronizedSee Also, , yUvulkandevice0 is the logical device that creates the sampler.vulkan pCreateInfo is a pointer to a 7 structure specifying the state of the sampler object.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.Uvulkandevice1 is the logical device that destroys the sampler.vulkansampler is the sampler to destroy.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.7J&&&&y1UUUUUUUUUUUUUUUUUU**********UUUUUUUUUUUUUUUUUUUUUUUUy1******************J&&&&&&&=None( #$&'(./0289:<>? 0vulkanVkSemaphoreCreateInfo - Structure specifying parameters of a newly created semaphoreValid Usage (Implicit)&VUID-VkSemaphoreCreateInfo-sType-sType sType must be  &VUID-VkSemaphoreCreateInfo-pNext-pNext Each pNext: member of any structure (including this one) in the pNext chain must be either NULL* or a pointer to a valid instance of , , or 'VUID-VkSemaphoreCreateInfo-sType-unique The sType" value of each struct in the pNext chain must be unique,VUID-VkSemaphoreCreateInfo-flags-zerobitmask flags must be 0See Also, , UUvulkanpNext is NULL6 or a pointer to a structure extending this structure.Uvulkanflags is reserved for future use.Uvulkan7vkCreateSemaphore - Create a new queue semaphore objectValid Usage (Implicit)'VUID-vkCreateSemaphore-device-parameter device must be a valid  handle,VUID-vkCreateSemaphore-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid  structure+VUID-vkCreateSemaphore-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure+VUID-vkCreateSemaphore-pSemaphore-parameter  pSemaphore must be a valid pointer to a x handle Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , x, Uvulkan=A convenience wrapper to make a compatible pair of calls to U and UTo ensure that U is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.Uvulkan/vkDestroySemaphore - Destroy a semaphore object Valid Usage'VUID-vkDestroySemaphore-semaphore-01137* All submitted batches that refer to  semaphore must have completed execution'VUID-vkDestroySemaphore-semaphore-01138 If  were provided when  semaphore1 was created, a compatible set of callbacks must be provided here'VUID-vkDestroySemaphore-semaphore-01139 If no  were provided when  semaphore was created,  pAllocator must be NULLValid Usage (Implicit)(VUID-vkDestroySemaphore-device-parameter device must be a valid  handle+VUID-vkDestroySemaphore-semaphore-parameter If  semaphore is not ,  semaphore must be a valid x handle,VUID-vkDestroySemaphore-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure(VUID-vkDestroySemaphore-semaphore-parent If  semaphore is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  semaphore must be externally synchronizedSee Also, , xUvulkandevice2 is the logical device that creates the semaphore.vulkan pCreateInfo is a pointer to a  structure containing information about how the semaphore is to be created.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.Uvulkandevice3 is the logical device that destroys the semaphore.vulkan semaphore+ is the handle of the semaphore to destroy.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter. x1UUUUUU UUUUUUx1<None( #$&'(./0289:<>?  vulkanpCommandBuffers includes a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-acquire'Queue Family Transfer Acquire Operation , there must# exist a previously submitted  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-release'Queue Family Transfer Release Operation on a queue in the queue family identified by the acquire operation, with parameters matching the acquire operation as defined in the definition of such  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-acquireacquire operations5, and which happens-before the acquire operation(VUID-vkQueueSubmit-pCommandBuffers-032200 If a command recorded into any element of pCommandBuffers was a   whose  queryPool was created with a  queryType of $, the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#profiling-lockprofiling lock must) have been held continuously on the  that queue was retrieved from, throughout recording of those command buffers!VUID-vkQueueSubmit-pSubmits-02808 Any resource created with 0 that is read by an operation specified by pSubmits must not be owned by any queue family other than the one which queue, belongs to, at the time it is executed!VUID-vkQueueSubmit-pSubmits-04626 Any resource created with 4 that is accessed by an operation specified by pSubmits must( have included the queue family of queue at resource creation timeValid Usage (Implicit)"VUID-vkQueueSubmit-queue-parameter queue must be a valid | handle%VUID-vkQueueSubmit-pSubmits-parameter If  submitCount is not 0, pSubmits must# be a valid pointer to an array of  submitCount valid  structures"VUID-vkQueueSubmit-fence-parameter If fence is not , fence must be a valid  handleVUID-vkQueueSubmit-commonparent Both of fence, and queue7 that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same Host SynchronizationHost access to queue must be externally synchronizedHost access to fence must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types--Any Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, |, Vvulkan1vkQueueWaitIdle - Wait for a queue to become idle DescriptionV is equivalent to having submitted a valid fence to every previously executed  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-submissionqueue submission command that accepts a fence, then waiting for all of those fences to signal using - with an infinite timeout and waitAll set to /.Valid Usage (Implicit)$VUID-vkQueueWaitIdle-queue-parameter queue must be a valid | handleHost SynchronizationHost access to queue must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types--Any Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also|Vvulkan A variant of V which makes a *safe* FFI callVvulkan3vkDeviceWaitIdle - Wait for a device to become idle DescriptionV is equivalent to calling V for all queues owned by device.Valid Usage (Implicit)&VUID-vkDeviceWaitIdle-device-parameter device must be a valid  handleHost SynchronizationHost access to all | objects created from device must be externally synchronized Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee AlsoVvulkan A variant of V which makes a *safe* FFI callVvulkandevice+ is the logical device that owns the queue.vulkanqueueFamilyIndex> is the index of the queue family to which the queue belongs.vulkan queueIndex is the index within this queue family of the queue to retrieve.Vvulkanqueue< is the queue that the command buffers will be submitted to.vulkanpSubmits is a pointer to an array of  structures, each specifying a command buffer submission batch.vulkanfence is an optional handle to a fence to be signaled once all submitted command buffers have completed execution. If fence is not , it defines a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-signalingfence signal operation.Vvulkanqueue is the queue on which to wait.Vvulkanqueue is the queue on which to wait.Vvulkandevice is the logical device to idle.Vvulkandevice is the logical device to idle./YZ|111UUUVUVVVVVVVVVVVVVUUUVUV|111YZ;None( #$&'(./0289:<>? vulkanVkQueryPoolCreateInfo - Structure specifying parameters of a newly created query pool DescriptionpipelineStatistics is ignored if  queryType is not . Valid Usage*VUID-VkQueryPoolCreateInfo-queryType-00791 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineStatisticsQuerypipeline statistics queries feature is not enabled,  queryType must not be *VUID-VkQueryPoolCreateInfo-queryType-00792 If  queryType is , pipelineStatistics must be a valid combination of  values*VUID-VkQueryPoolCreateInfo-queryType-03222 If  queryType is  , the pNext chain must include a  structure+VUID-VkQueryPoolCreateInfo-queryCount-02763  queryCount must be greater than 0Valid Usage (Implicit)&VUID-VkQueryPoolCreateInfo-sType-sType sType must be  &VUID-VkQueryPoolCreateInfo-pNext-pNext Each pNext: member of any structure (including this one) in the pNext chain must be either NULL* or a pointer to a valid instance of , , or https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileKHRVkVideoProfileKHR'VUID-VkQueryPoolCreateInfo-sType-unique The sType" value of each struct in the pNext chain must be unique,VUID-VkQueryPoolCreateInfo-flags-zerobitmask flags must be 0.VUID-VkQueryPoolCreateInfo-queryType-parameter  queryType must be a valid ` valueSee Also, , `, , VVvulkanpNext is NULL6 or a pointer to a structure extending this structure.Vvulkanflags is reserved for future use.Vvulkan queryType is a `; value specifying the type of queries managed by the pool.Vvulkan queryCount. is the number of queries managed by the pool.VvulkanpipelineStatistics is a bitmask of  specifying which counters will be returned in queries on the new pool, as described below in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-pipestats.Vvulkan2vkCreateQueryPool - Create a new query pool objectValid Usage (Implicit)'VUID-vkCreateQueryPool-device-parameter device must be a valid  handle,VUID-vkCreateQueryPool-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid  structure+VUID-vkCreateQueryPool-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure+VUID-vkCreateQueryPool-pQueryPool-parameter  pQueryPool must be a valid pointer to a } handle Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , }, Vvulkan=A convenience wrapper to make a compatible pair of calls to V and VTo ensure that V is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.Vvulkan0vkDestroyQueryPool - Destroy a query pool object Valid Usage'VUID-vkDestroyQueryPool-queryPool-00793+ All submitted commands that refer to  queryPool must have completed execution'VUID-vkDestroyQueryPool-queryPool-00794 If  were provided when  queryPool1 was created, a compatible set of callbacks must be provided here'VUID-vkDestroyQueryPool-queryPool-00795 If no  were provided when  queryPool was created,  pAllocator must be NULLValid Usage (Implicit)(VUID-vkDestroyQueryPool-device-parameter device must be a valid  handle+VUID-vkDestroyQueryPool-queryPool-parameter If  queryPool is not ,  queryPool must be a valid } handle,VUID-vkDestroyQueryPool-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure(VUID-vkDestroyQueryPool-queryPool-parent If  queryPool is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  queryPool must be externally synchronizedSee Also, , }VvulkanvkGetQueryPoolResults - Copy results of queries in a query pool to a host memory region Description)The range of queries read is defined by [ firstQuery,  firstQuery +  queryCount - 1]. For pipeline statistics queries, each query index in the pool contains one integer value for each bit that is enabled in ::pipelineStatistics when the pool is created.If no bits are set in flags, and all requested queries are in the available state, results are written as an array of 32-bit unsigned integer values. The behavior when not all queries are available, is described  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-wait-bit-not-setbelow.If  is not set and the result overflows a 32-bit value, the value may* either wrap or saturate. Similarly, if < is set and the result overflows a 64-bit value, the value may either wrap or saturate.If  is set, Vulkan will wait for each query to be in the available state before retrieving the numerical results for that query. In this case, V& is guaranteed to succeed and return  if the queries become available in a finite time (i.e. if they have been issued and not reset). If queries will never finish (e.g. due to being reset but not issued), then V may not return in finite time.If  and 8 are both not set then no result values are written to pData for queries that are in the unavailable state at the time of the call, and V returns 3. However, availability state is still written to pData for those queries if  is set.If  is not set, V may return 0 if there are queries in the unavailable state.Note Applications must& take care to ensure that use of the  bit has the desired effect.For example, if a query has been used previously and a command buffer records the commands  ,  , and   for that query, then the query will remain in the available state until ^  is called or the  , command executes on a queue. Applications can use fences or events to ensure that a query has already been reset before checking for its results or availability status. Otherwise, a stale value could be returned from a previous use of the query.The above also applies when  is used in combination with 2. In this case, the returned availability status may< reflect the result of a previous use of the query unless ^  is called or the  < command has been executed since the last use of the query.Note Applications can double-buffer query pool usage, with a pool per frame, and reset queries at the end of the frame in which they are read.If  is set,  is not set, and the query@s status is unavailable, an intermediate result value between zero and the final result value is written to pData for that query.If  is set, the final integer value written for each query is non-zero if the query@s status was available or zero if the status was unavailable. When  is used, implementations must guarantee that if they return a non-zero availability value then the numerical results must be valid, assuming the results are not reset by a subsequent command.NoteSatisfying this guarantee may require careful ordering by the application, e.g. to read the availability status before reading the results. Valid Usage+VUID-vkGetQueryPoolResults-firstQuery-00813  firstQuery must, be less than the number of queries in  queryPool &VUID-vkGetQueryPoolResults-flags-02828 If  is not set in flags and the  queryType used to create  queryPool was not  , then pData and stride must be multiples of 4&VUID-vkGetQueryPoolResults-flags-00815 If  is set in flags then pData and stride must be multiples of 8*VUID-vkGetQueryPoolResults-queryType-03229 If the  queryType used to create  queryPool was  , then pData and stride must" be multiples of the size of *VUID-vkGetQueryPoolResults-queryType-04519 If the  queryType used to create  queryPool was  , then stride must! be large enough to contain ::counterIndexCount used to create  queryPool times the size of +VUID-vkGetQueryPoolResults-firstQuery-00816 The sum of  firstQuery and  queryCount must8 be less than or equal to the number of queries in  queryPool)VUID-vkGetQueryPoolResults-dataSize-00817 dataSize must be large enough to contain the result of each query, as described https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-memorylayouthere*VUID-vkGetQueryPoolResults-queryType-00818 If the  queryType used to create  queryPool was , flags must not contain *VUID-vkGetQueryPoolResults-queryType-03230 If the  queryType used to create  queryPool was , flags must not contain ,  or *VUID-vkGetQueryPoolResults-queryType-03231 If the  queryType used to create  queryPool was  , the  queryPool must have been recorded once for each pass as retrieved via a call to  Valid Usage (Implicit)+VUID-vkGetQueryPoolResults-device-parameter device must be a valid  handle.VUID-vkGetQueryPoolResults-queryPool-parameter  queryPool must be a valid } handle*VUID-vkGetQueryPoolResults-pData-parameter pData must( be a valid pointer to an array of dataSize bytes*VUID-vkGetQueryPoolResults-flags-parameter flags must% be a valid combination of ^ values/VUID-vkGetQueryPoolResults-dataSize-arraylength dataSize must be greater than 0+VUID-vkGetQueryPoolResults-queryPool-parent  queryPool must6 have been created, allocated, or retrieved from device Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, o, }, _Vvulkandevice3 is the logical device that creates the query pool.vulkan pCreateInfo is a pointer to a  structure containing the number and type of queries to be managed by the pool.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.Vvulkandevice4 is the logical device that destroys the query pool.vulkan queryPool is the query pool to destroy.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.Vvulkandevice0 is the logical device that owns the query pool.vulkan queryPool is the query pool managing the queries containing the desired results.vulkan firstQuery is the initial query index.vulkan queryCount" is the number of queries to read.vulkandataSize2 is the size in bytes of the buffer pointed to by pData.vulkanpData is a pointer to a user-allocated buffer where the results will be writtenvulkanstride is the stride in bytes between results for individual queries within pData.vulkanflags is a bitmask of ^/ specifying how and when results are returned./^_`}1VVVVVVVVVVVVVVVVVVVV}1`^_8None( #$&'(./0289:<>?"縉vulkan,VkViewport - Structure specifying a viewport DescriptionNoteDespite their names, minDepth can* be less than, equal to, or greater than maxDepth.!The framebuffer depth coordinate zf may be represented using either a fixed-point or floating-point representation. However, a floating-point representation must be used if the depth/stencil attachment has a floating-point depth component. If an m-bit fixed-point representation is used, we assume that it represents each value \frac{k}{2^m - 1}, where k D { 0, 1, @@, 2m-1 }, as k (e.g. 1.0 is represented in binary as a string of all ones).The viewport parameters shown in the above equations are found from these values asox = x + width / 2oy = y + height / 2oz = minDepthpx = widthpy = heightpz = maxDepth - minDepth.If a render pass transform is enabled, the values (px,py) and (ox, oy) defining the viewport are transformed as described in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-renderpass-transformrender pass transform1 before participating in the viewport transform.The application can specify a negative term for height, which has the effect of negating the y coordinate in clip space before performing the transform. When using a negative height, the application should also adjust the y value to point to the lower left corner of the viewport instead of the upper left corner. Using the negative height allows the application to avoid having to negate the y component of the Position output from the last  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader stage.The width and height of the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxViewportDimensions4implementation-dependent maximum viewport dimensions must be greater than or equal to the width and height of the largest image which can* be created and attached to a framebuffer. plus the size of the vertex attribute data described by format must not be greater than stride in the  referenced in bindingValid Usage (Implicit)7VUID-VkVertexInputAttributeDescription-format-parameter format must be a valid K valueSee AlsoK, vulkan?VkStencilOpState - Structure specifying stencil operation stateValid Usage (Implicit)See AlsoD, , hvulkanVkSpecializationMapEntry - Structure specifying a specialization map entry DescriptionIf a  constantID value is not a specialization constant ID used in the shader, that map entry does not affect the behavior of the pipeline. Valid Usage.VUID-VkSpecializationMapEntry-constantID-00776 For a  constantID4 specialization constant declared in a shader, size must! match the byte size of the  constantID1. If the specialization constant is of type boolean, size must be the byte size of qSee AlsovulkanVkSpecializationInfo - Structure specifying specialization information Valid Usage&VUID-VkSpecializationInfo-offset-00773 The offset member of each element of  pMapEntries must be less than dataSize+VUID-VkSpecializationInfo-pMapEntries-00774 The size member of each element of  pMapEntries must be less than or equal to dataSize minus offset*VUID-VkSpecializationInfo-constantID-04911 The  constantID value of each element of  pMapEntries must be unique within  pMapEntriesValid Usage (Implicit)/VUID-VkSpecializationInfo-pMapEntries-parameter If  mapEntryCount is not 0,  pMapEntries must( be a valid pointer to an array of  mapEntryCount valid  structures)VUID-VkSpecializationInfo-pData-parameter If dataSize is not 0, pData must# be a valid pointer to an array of dataSize bytesSee Also, vulkanVkPipelineViewportStateCreateInfo - Structure specifying parameters of a newly created pipeline viewport state Valid Usage:VUID-VkPipelineViewportStateCreateInfo-viewportCount-01216 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled,  viewportCount must not be greater than 1 9VUID-VkPipelineViewportStateCreateInfo-scissorCount-01217 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled,  scissorCount must not be greater than 1:VUID-VkPipelineViewportStateCreateInfo-viewportCount-01218  viewportCount must be less than or equal to  :: maxViewports9VUID-VkPipelineViewportStateCreateInfo-scissorCount-01219  scissorCount must be less than or equal to  :: maxViewports.VUID-VkPipelineViewportStateCreateInfo-x-02821 The x and y members of offset member of any element of  pScissors must" be greater than or equal to 03VUID-VkPipelineViewportStateCreateInfo-offset-02822 Evaluation of (offset.x +  extent.width) must not cause a signed integer addition overflow for any element of  pScissors3VUID-VkPipelineViewportStateCreateInfo-offset-02823 Evaluation of (offset.y +  extent.height) must not cause a signed integer addition overflow for any element of  pScissors9VUID-VkPipelineViewportStateCreateInfo-scissorCount-04134= If the graphics pipeline is being created without & and & set then  scissorCount and  viewportCount must be identical:VUID-VkPipelineViewportStateCreateInfo-viewportCount-04135: If the graphics pipeline is being created with & set then  viewportCount must be 0, otherwise it must be greater than 09VUID-VkPipelineViewportStateCreateInfo-scissorCount-04136: If the graphics pipeline is being created with & set then  scissorCount must be 0, otherwise it must be greater than 0VUID-VkPipelineViewportStateCreateInfo-viewportWScalingEnable-01726 If the viewportWScalingEnable member of a  structure included in the pNext chain is /, the  viewportCount member of the  structure must" be greater than or equal to :: viewportCountValid Usage (Implicit)2VUID-VkPipelineViewportStateCreateInfo-sType-sType sType must be  2VUID-VkPipelineViewportStateCreateInfo-pNext-pNext Each pNext: member of any structure (including this one) in the pNext chain must be either NULL* or a pointer to a valid instance of , , , , or 3VUID-VkPipelineViewportStateCreateInfo-sType-unique The sType" value of each struct in the pNext chain must be unique8VUID-VkPipelineViewportStateCreateInfo-flags-zerobitmask flags must be 0See Also, , r, , vulkanVkPipelineVertexInputStateCreateInfo - Structure specifying parameters of a newly created pipeline vertex input state Valid UsageVUID-VkPipelineVertexInputStateCreateInfo-vertexBindingDescriptionCount-00613 vertexBindingDescriptionCount must be less than or equal to  ::maxVertexInputBindingsVUID-VkPipelineVertexInputStateCreateInfo-vertexAttributeDescriptionCount-00614 vertexAttributeDescriptionCount must be less than or equal to  ::maxVertexInputAttributes7VUID-VkPipelineVertexInputStateCreateInfo-binding-00615 For every binding# specified by each element of pVertexAttributeDescriptions, a  must exist in pVertexBindingDescriptions with the same value of bindingVUID-VkPipelineVertexInputStateCreateInfo-pVertexBindingDescriptions-00616 All elements of pVertexBindingDescriptions must' describe distinct binding numbersVUID-VkPipelineVertexInputStateCreateInfo-pVertexAttributeDescriptions-00617 All elements of pVertexAttributeDescriptions must+ describe distinct attribute locationsValid Usage (Implicit)5VUID-VkPipelineVertexInputStateCreateInfo-sType-sType sType must be  5VUID-VkPipelineVertexInputStateCreateInfo-pNext-pNext pNext must be NULL* or a pointer to a valid instance of 6VUID-VkPipelineVertexInputStateCreateInfo-sType-unique The sType" value of each struct in the pNext chain must be unique;VUID-VkPipelineVertexInputStateCreateInfo-flags-zerobitmask flags must be 0VUID-VkPipelineVertexInputStateCreateInfo-pVertexBindingDescriptions-parameter If vertexBindingDescriptionCount is not 0, pVertexBindingDescriptions must( be a valid pointer to an array of vertexBindingDescriptionCount valid  structuresVUID-VkPipelineVertexInputStateCreateInfo-pVertexAttributeDescriptions-parameter If vertexAttributeDescriptionCount is not 0, pVertexAttributeDescriptions must( be a valid pointer to an array of vertexAttributeDescriptionCount valid  structuresSee Also, , , , , vulkanVkPipelineTessellationStateCreateInfo - Structure specifying parameters of a newly created pipeline tessellation state Valid UsageVUID-VkPipelineTessellationStateCreateInfo-patchControlPoints-01214 patchControlPoints must: be greater than zero and less than or equal to  ::maxTessellationPatchSizeValid Usage (Implicit)6VUID-VkPipelineTessellationStateCreateInfo-sType-sType sType must be  6VUID-VkPipelineTessellationStateCreateInfo-pNext-pNext pNext must be NULL* or a pointer to a valid instance of 7VUID-VkPipelineTessellationStateCreateInfo-sType-unique The sType value of each struct in the pNext chain must be uniqueVUID-VkPipelineRasterizationStateCreateInfo-cullMode-parameter cullMode must be a valid combination of E values?VUID-VkPipelineRasterizationStateCreateInfo-frontFace-parameter  frontFace must be a valid L valueSee Alsoq, F, L, , , , vulkanVkPipelineMultisampleStateCreateInfo - Structure specifying parameters of a newly created pipeline multisample state Description9Each bit in the sample mask is associated with a unique  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask sample index as defined for the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask coverage mask. Each bit b for mask word w in the sample mask corresponds to sample index i, where i = 32  w + b.  pSampleMask has a length equal to F rasterizationSamples / 32 F words.If  pSampleMask is NULL4, it is treated as if the mask has all bits set to 1. Valid UsageVUID-VkPipelineMultisampleStateCreateInfo-sampleShadingEnable-00784 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sampleRateShadingsample rate shading feature is not enabled, sampleShadingEnable must be /VUID-VkPipelineMultisampleStateCreateInfo-alphaToOneEnable-00785 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-alphaToOne alpha to one feature is not enabled, alphaToOneEnable must be /VUID-VkPipelineMultisampleStateCreateInfo-minSampleShading-00786 minSampleShading must be in the range [0,1]VUID-VkPipelineMultisampleStateCreateInfo-rasterizationSamples-01415 If the VK_NV_framebuffer_mixed_samples extension is enabled, and if the subpass has any color attachments and rasterizationSamples= is greater than the number of color samples, then sampleShadingEnable must be /Valid Usage (Implicit)5VUID-VkPipelineMultisampleStateCreateInfo-sType-sType sType must be  5VUID-VkPipelineMultisampleStateCreateInfo-pNext-pNext Each pNext: member of any structure (including this one) in the pNext chain must be either NULL* or a pointer to a valid instance of , , , or 6VUID-VkPipelineMultisampleStateCreateInfo-sType-unique The sType" value of each struct in the pNext chain must be unique;VUID-VkPipelineMultisampleStateCreateInfo-flags-zerobitmask flags must be 0VUID-VkPipelineMultisampleStateCreateInfo-rasterizationSamples-parameter rasterizationSamples must be a valid b value?VUID-VkPipelineMultisampleStateCreateInfo-pSampleMask-parameter If  pSampleMask is not NULL,  pSampleMask must- be a valid pointer to an array of 4\lceil{\mathit{rasterizationSamples} \over 32}\rceil  valuesSee Alsoq, , , b, , vulkanVkPipelineInputAssemblyStateCreateInfo - Structure specifying parameters of a newly created pipeline input assembly state DescriptionRestarting the assembly of primitives discards the most recent index values if those elements formed an incomplete primitive, and restarts the primitive assembly using the subsequent indices, but only assembling the immediately following element through the end of the originally specified elements. The primitive restart index value comparison is performed before adding the  vertexOffset value to the index value. Valid Usage:VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00428 If topology is , , , ,  or , primitiveRestartEnable must be /:VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00429 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled, topology must not be any of , ,  or :VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00430 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled, topology must not be >VUID-VkPipelineInputAssemblyStateCreateInfo-triangleFans-04452 If the VK_KHR_portability_subset extension is enabled, and :: triangleFans is /, topology must not be Valid Usage (Implicit)7VUID-VkPipelineInputAssemblyStateCreateInfo-sType-sType sType must be  7VUID-VkPipelineInputAssemblyStateCreateInfo-pNext-pNext pNext must be NULL=VUID-VkPipelineInputAssemblyStateCreateInfo-flags-zerobitmask flags must be 0>VUID-VkPipelineInputAssemblyStateCreateInfo-topology-parameter topology must be a valid [ valueSee Alsoq, , , [, vulkanVkPipelineDynamicStateCreateInfo - Structure specifying parameters of a newly created pipeline dynamic state Valid Usage:VUID-VkPipelineDynamicStateCreateInfo-pDynamicStates-01442 Each element of pDynamicStates must be uniqueValid Usage (Implicit)1VUID-VkPipelineDynamicStateCreateInfo-sType-sType sType must be  1VUID-VkPipelineDynamicStateCreateInfo-pNext-pNext pNext must be NULL7VUID-VkPipelineDynamicStateCreateInfo-flags-zerobitmask flags must be 0>VUID-VkPipelineDynamicStateCreateInfo-pDynamicStates-parameter If dynamicStateCount is not 0, pDynamicStates must( be a valid pointer to an array of dynamicStateCount valid & valuesSee Also&, , , , vulkanVkPipelineDepthStencilStateCreateInfo - Structure specifying parameters of a newly created pipeline depth stencil state Valid UsageVUID-VkPipelineDepthStencilStateCreateInfo-depthBoundsTestEnable-00598 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBoundsdepth bounds testing feature is not enabled, depthBoundsTestEnable must be /VUID-VkPipelineDepthStencilStateCreateInfo-separateStencilMaskRef-04453 If the VK_KHR_portability_subset extension is enabled, and ::separateStencilMaskRef is /, and the value of ::stencilTestEnable is /, and the value of ::cullMode is ), the value of  reference in each of the  structs in front and back must be the sameValid Usage (Implicit)6VUID-VkPipelineDepthStencilStateCreateInfo-sType-sType sType must be  6VUID-VkPipelineDepthStencilStateCreateInfo-pNext-pNext pNext must be NULLviewportCount valid  structures6VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-041311 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state, and no element of the pDynamicStates member of  pDynamicState is ' or & , the  pScissors member of pViewportState must( be a valid pointer to an array of pViewportState->scissorCount r structures6VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-007491 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state, and the wide lines feature is not enabled, and no element of the pDynamicStates member of  pDynamicState is ' , the  lineWidth member of pRasterizationState must be 1.0?VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-007501 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state, and the rasterizerDiscardEnable member of pRasterizationState is /, pViewportState must$ be a valid pointer to a valid  structure6VUID-VkGraphicsPipelineCreateInfo-pViewportState-048921 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state, and the graphics pipeline state was created with the ' dynamic state enabled, pViewportState must$ be a valid pointer to a valid  structure?VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-007511 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shaderfragment shader state, pMultisampleState must$ be a valid pointer to a valid  structure?VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-007521 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shaderfragment shader state , and subpass" uses a depth/stencil attachment, pDepthStencilState must$ be a valid pointer to a valid  structure?VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-007531 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-outputfragment output interface state , and subpass uses color attachments, pColorBlendState must$ be a valid pointer to a valid  structure?VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-044931 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-outputfragment output interface state, !pColorBlendState->attachmentCount must be greater than the index of all color attachments that are not  for the subpass index in  renderPass6VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-007541 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state, the depth bias clamping feature is not enabled, no element of the pDynamicStates member of  pDynamicState is ', and the depthBiasEnable member of pRasterizationState is /, the depthBiasClamp member of pRasterizationState must be 0.06VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-025101 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shaderfragment shader state, and the VK_EXT_depth_range_unrestricted5 extension is not enabled and no element of the pDynamicStates member of  pDynamicState is ', and the depthBoundsTestEnable member of pDepthStencilState is /, the minDepthBounds and maxDepthBounds members of pDepthStencilState must be between 0.0 and 1.0 , inclusive6VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-015211 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shaderfragment shader state, and no element of the pDynamicStates member of  pDynamicState is &, and the sampleLocationsEnable member of a  structure included in the pNext chain of pMultisampleState is /, 0sampleLocationsInfo.sampleLocationGridSize.width must evenly divide ::sampleLocationGridSize.width as returned by   with a samples parameter equaling rasterizationSamples6VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-015221 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shaderfragment shader state, and no element of the pDynamicStates member of  pDynamicState is &, and the sampleLocationsEnable member of a  structure included in the pNext chain of pMultisampleState is /, 1sampleLocationsInfo.sampleLocationGridSize.height must evenly divide ::sampleLocationGridSize.height as returned by   with a samples parameter equaling rasterizationSamples6VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-015231 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shaderfragment shader state, and no element of the pDynamicStates member of  pDynamicState is &, and the sampleLocationsEnable member of a  structure included in the pNext chain of pMultisampleState is /, +sampleLocationsInfo.sampleLocationsPerPixel must equal rasterizationSamples=VUID-VkGraphicsPipelineCreateInfo-sampleLocationsEnable-015241 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shaderfragment shader state, and the sampleLocationsEnable member of a  structure included in the pNext chain of pMultisampleState is / , the fragment shader code must2 not statically use the extended instruction InterpolateAtSample.VUID-VkGraphicsPipelineCreateInfo-layout-00756 layout must be  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency consistent$ with all shaders specified in pStages/VUID-VkGraphicsPipelineCreateInfo-subpass-007571 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shaderfragment shader state, and neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples% extensions are enabled, and if subpass< uses color and/or depth/stencil attachments, then the rasterizationSamples member of pMultisampleState must be the same as the sample count for those subpass attachments/VUID-VkGraphicsPipelineCreateInfo-subpass-015051 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shaderfragment shader state, and the VK_AMD_mixed_attachment_samples# extension is enabled, and if subpass< uses color and/or depth/stencil attachments, then the rasterizationSamples member of pMultisampleState must equal the maximum of the sample counts of those subpass attachments/VUID-VkGraphicsPipelineCreateInfo-subpass-014111 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shaderfragment shader state, and the VK_NV_framebuffer_mixed_samples# extension is enabled, and if subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled, then the rasterizationSamples member of pMultisampleState must be the same as the sample count of the depth/stencil attachment/VUID-VkGraphicsPipelineCreateInfo-subpass-014121 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shaderfragment shader state, and the VK_NV_framebuffer_mixed_samples# extension is enabled, and if subpass* has any color attachments, then the rasterizationSamples member of pMultisampleState must be greater than or equal to the sample count for those subpass attachments=VUID-VkGraphicsPipelineCreateInfo-coverageReductionMode-027221 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shaderfragment shader state, and the VK_NV_coverage_reduction_mode extension is enabled, the coverage reduction mode specified by ::coverageReductionMode , the rasterizationSamples member of pMultisampleState and the sample counts for the color and depth/stencil attachments (if the subpass has them) must) be a valid combination returned by  /VUID-VkGraphicsPipelineCreateInfo-subpass-007581 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shaderfragment shader state and subpass does not use any color and/or depth/stencil attachments, then the rasterizationSamples member of pMultisampleState must follow the rules for a https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachmentszero-attachment subpass/VUID-VkGraphicsPipelineCreateInfo-subpass-00759 subpass must be a valid subpass within  renderPass2VUID-VkGraphicsPipelineCreateInfo-renderPass-007601 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state, and the  renderPass has multiview enabled and subpass5 has more than one bit set in the view mask and multiviewTessellationShader is not enabled, then pStages must& not include tessellation shaders2VUID-VkGraphicsPipelineCreateInfo-renderPass-007611 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state, and the  renderPass has multiview enabled and subpass5 has more than one bit set in the view mask and multiviewGeometryShader is not enabled, then pStages must not include a geometry shader2VUID-VkGraphicsPipelineCreateInfo-renderPass-007621 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state, and the  renderPass has multiview enabled and subpass has more than one bit set in the view mask, shaders in the pipeline must not write to the Layer built-in output2VUID-VkGraphicsPipelineCreateInfo-renderPass-007631 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state, and the  renderPass) has multiview enabled, then all shaders must/ not include variables decorated with the Layer- built-in decoration in their interfaces-VUID-VkGraphicsPipelineCreateInfo-flags-00764 flags must not contain the K  flag/VUID-VkGraphicsPipelineCreateInfo-pStages-015651 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shaderfragment shader state3 and an input attachment was referenced by an  aspectMask at  renderPass$ creation time, the fragment shader must only read from the aspects that were specified for that input attachment.VUID-VkGraphicsPipelineCreateInfo-layout-01688! The number of resources in layout accessible to each shader stage that is used by the pipeline must be less than or equal to  ::maxPerStageResources6VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-017151 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state, and no element of the pDynamicStates member of  pDynamicState is &, and the viewportWScalingEnable member of a ! structure, included in the pNext chain of pViewportState , is /, the pViewportWScalings member of the  must" be a pointer to an array of :: viewportCount valid  structures6VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-040561 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state, and no element of the pDynamicStates member of  pDynamicState is &, and if pViewportState->pNext chain includes a  structure, and if its exclusiveScissorCount member is not 0, then its pExclusiveScissors member must( be a valid pointer to an array of exclusiveScissorCount r structures6VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-040571 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state, and no element of the pDynamicStates member of  pDynamicState is &, and if pViewportState->pNext chain includes a  structure, then its pShadingRatePalettes member must( be a valid pointer to an array of  viewportCount valid  structures6VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-040581 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state, and no element of the pDynamicStates member of  pDynamicState is &, and if pNext chain includes a  structure, and if its discardRectangleCount member is not 0, then its pDiscardRectangles member must( be a valid pointer to an array of discardRectangleCount r structures/VUID-VkGraphicsPipelineCreateInfo-pStages-020981 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-vertex-inputvertex input state, pInputAssemblyState must$ be a valid pointer to a valid  structure/VUID-VkGraphicsPipelineCreateInfo-pStages-023171 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state , the Xfb execution mode can7 be specified by no more than one shader stage in pStages/VUID-VkGraphicsPipelineCreateInfo-pStages-023181 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state, and any shader stage in pStages specifies Xfb execution mode it must be the last https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader stage;VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-023191 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state, and a ::rasterizationStream value other than zero is specified, all variables in the output interface of the entry point being compiled decorated with Position,  PointSize,  ClipDistance, or  CullDistance must" be decorated with identical Stream values that match the rasterizationStream;VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-023201 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state, and ::rasterizationStream is zero, or not specified, all variables in the output interface of the entry point being compiled decorated with Position,  PointSize,  ClipDistance, or  CullDistance must be decorated with a Stream value of zero, or must not specify the Stream decoration7VUID-VkGraphicsPipelineCreateInfo-geometryStreams-023211 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state, and the last  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader stage is a geometry shader, and that geometry shader uses the GeometryStreams capability, then ::geometryStreams feature must be enabled,VUID-VkGraphicsPipelineCreateInfo-None-023221 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state, and there are any mesh shader stages in the pipeline there must5 not be any shader stage in the pipeline with a Xfb execution mode=VUID-VkGraphicsPipelineCreateInfo-lineRasterizationMode-027661 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state and at least one of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-outputfragment output interface state or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shaderfragment shader state , the lineRasterizationMode member of a  structure included in the pNext chain of pRasterizationState is  or , then the alphaToCoverageEnable, alphaToOneEnable , and sampleShadingEnable members of pMultisampleState must all be /:VUID-VkGraphicsPipelineCreateInfo-stippledLineEnable-027671 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state , the stippledLineEnable member of  is /, and no element of the pDynamicStates member of  pDynamicState is &, then the lineStippleFactor member of  must be in the range [1,256]-VUID-VkGraphicsPipelineCreateInfo-flags-03371 flags must not include -VUID-VkGraphicsPipelineCreateInfo-flags-03372 flags must not include -VUID-VkGraphicsPipelineCreateInfo-flags-03373 flags must not include -VUID-VkGraphicsPipelineCreateInfo-flags-03374 flags must not include -VUID-VkGraphicsPipelineCreateInfo-flags-03375 flags must not include -VUID-VkGraphicsPipelineCreateInfo-flags-03376 flags must not include -VUID-VkGraphicsPipelineCreateInfo-flags-03377 flags must not include -VUID-VkGraphicsPipelineCreateInfo-flags-03577 flags must not include -VUID-VkGraphicsPipelineCreateInfo-flags-04947 flags must not include 6VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03378 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicStateextendedDynamicState$ feature is not enabled, there must be no element of the pDynamicStates member of  pDynamicState set to &, &, &, &, &, &, ', ', ', ', ' , or '6VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-033791 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state, and & is included in the pDynamicStates array then  viewportCount must be zero6VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-033801 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state, and & is included in the pDynamicStates array then  scissorCount must be zero6VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-041321 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state, and & is included in the pDynamicStates array then ' must not be present6VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-041331 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state, and & is included in the pDynamicStates array then ' must not be present6VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04868 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicState2extendedDynamicState2$ feature is not enabled, there must be no element of the pDynamicStates member of  pDynamicState set to ', ', or '6VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04869 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicState2LogicOpextendedDynamicState2LogicOp$ feature is not enabled, there must be no element of the pDynamicStates member of  pDynamicState set to '6VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04870 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicState2PatchControlPoints'extendedDynamicState2PatchControlPoints$ feature is not enabled, there must be no element of the pDynamicStates member of  pDynamicState set to '-VUID-VkGraphicsPipelineCreateInfo-flags-02877 If flags includes , then the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-deviceGeneratedCommands::deviceGeneratedCommands feature must be enabled-VUID-VkGraphicsPipelineCreateInfo-flags-029661 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state and flags includes , then all stages must not specify Xfb execution modeVUID-VkGraphicsPipelineCreateInfo-pipelineCreationCacheControl-02878 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineCreationCacheControlpipelineCreationCacheControl feature is not enabled, flags must not include  or 5VUID-VkGraphicsPipelineCreateInfo-pDynamicState-044941 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shaderfragment shader state and & is not included in pDynamicState->pDynamicStates, ::fragmentSize.width must be greater than or equal to 15VUID-VkGraphicsPipelineCreateInfo-pDynamicState-044951 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shaderfragment shader state and & is not included in pDynamicState->pDynamicStates, ::fragmentSize.height must be greater than or equal to 15VUID-VkGraphicsPipelineCreateInfo-pDynamicState-044961 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shaderfragment shader state and & is not included in pDynamicState->pDynamicStates, ::fragmentSize.width must be a power-of-two value5VUID-VkGraphicsPipelineCreateInfo-pDynamicState-044971 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shaderfragment shader state and & is not included in pDynamicState->pDynamicStates, ::fragmentSize.height must be a power-of-two value5VUID-VkGraphicsPipelineCreateInfo-pDynamicState-044981 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shaderfragment shader state and & is not included in pDynamicState->pDynamicStates, ::fragmentSize.width must be less than or equal to 45VUID-VkGraphicsPipelineCreateInfo-pDynamicState-044991 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shaderfragment shader state and & is not included in pDynamicState->pDynamicStates, ::fragmentSize.height must be less than or equal to 45VUID-VkGraphicsPipelineCreateInfo-pDynamicState-045001 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shaderfragment shader state and & is not included in pDynamicState->pDynamicStates, and the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate#pipelineFragmentShadingRate feature is not enabled, ::fragmentSize.width and ::fragmentSize.height must both be equal to 15VUID-VkGraphicsPipelineCreateInfo-pDynamicState-045011 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shaderfragment shader state and & is not included in pDynamicState->pDynamicStates, and the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-primitiveFragmentShadingRate$primitiveFragmentShadingRate feature is not enabled, :: combinerOps [0] must be 5VUID-VkGraphicsPipelineCreateInfo-pDynamicState-045021 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shaderfragment shader state and & is not included in pDynamicState->pDynamicStates, and the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-attachmentFragmentShadingRate%attachmentFragmentShadingRate feature is not enabled, :: combinerOps [1] must be VUID-VkGraphicsPipelineCreateInfo-primitiveFragmentShadingRateWithMultipleViewports-045031 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state and the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports1primitiveFragmentShadingRateWithMultipleViewports# limit is not supported, & is not included in pDynamicState->pDynamicStates , and :: viewportCount is greater than 1, entry points specified in pStages must not write to the PrimitiveShadingRateKHR built-inVUID-VkGraphicsPipelineCreateInfo-primitiveFragmentShadingRateWithMultipleViewports-045041 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state and the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports1primitiveFragmentShadingRateWithMultipleViewports< limit is not supported, and entry points specified in pStages write to the  ViewportIndex built-in, they must not also write to the PrimitiveShadingRateKHR built-inVUID-VkGraphicsPipelineCreateInfo-primitiveFragmentShadingRateWithMultipleViewports-045051 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state and the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports1primitiveFragmentShadingRateWithMultipleViewports< limit is not supported, and entry points specified in pStages write to the ViewportMaskNV built-in, they must not also write to the PrimitiveShadingRateKHR built-inVUID-VkGraphicsPipelineCreateInfo-fragmentShadingRateNonTrivialCombinerOps-045061 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shaderfragment shader state, the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-fragmentShadingRateNonTrivialCombinerOps(fragmentShadingRateNonTrivialCombinerOps' limit is not supported, and & is not included in pDynamicState->pDynamicStates, elements of :: combinerOps must be  or 5VUID-VkGraphicsPipelineCreateInfo-pDynamicState-045691 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shaderfragment shader state, and & is not included in pDynamicState->pDynamicStates, and the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentShadingRateEnums fragmentShadingRateEnums feature is not enabled, ::shadingRateType must be equal to 5VUID-VkGraphicsPipelineCreateInfo-pDynamicState-045701 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shaderfragment shader state, and & is not included in pDynamicState->pDynamicStates, and the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate#pipelineFragmentShadingRate feature is not enabled, :: shadingRate must be equal to 5VUID-VkGraphicsPipelineCreateInfo-pDynamicState-045711 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shaderfragment shader state, and & is not included in pDynamicState->pDynamicStates, and the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-primitiveFragmentShadingRate$primitiveFragmentShadingRate feature is not enabled, :: combinerOps [0] must be 5VUID-VkGraphicsPipelineCreateInfo-pDynamicState-045721 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shaderfragment shader state, and & is not included in pDynamicState->pDynamicStates, and the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-attachmentFragmentShadingRate%attachmentFragmentShadingRate feature is not enabled, :: combinerOps [1] must be VUID-VkGraphicsPipelineCreateInfo-fragmentShadingRateNonTrivialCombinerOps-045731 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shaderfragment shader state, and the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-fragmentShadingRateNonTrivialCombinerOps(fragmentShadingRateNonTrivialCombinerOps& limit is not supported and & is not included in pDynamicState->pDynamicStates, elements of :: combinerOps must be  or ,VUID-VkGraphicsPipelineCreateInfo-None-045741 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shaderfragment shader state, and the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-supersampleFragmentShadingRates'supersampleFragmentShadingRates feature is not enabled, :: shadingRate must not be equal to , , , or ,VUID-VkGraphicsPipelineCreateInfo-None-045751 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shaderfragment shader state, and the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-noInvocationFragmentShadingRates(noInvocationFragmentShadingRates feature is not enabled, :: shadingRate must not be equal to 6VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03578 All elements of the pDynamicStates member of  pDynamicState must not be &6VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-048071 If the pipeline is being created with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader state and the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-vertexInputDynamicStatevertexInputDynamicState$ feature is not enabled, there must be no element of the pDynamicStates member of  pDynamicState set to ',VUID-VkGraphicsPipelineCreateInfo-None-04893 The pipeline must be created with a https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-completecomplete set of state6VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04800 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnablecolorWriteEnable$ feature is not enabled, there must be no element of the pDynamicStates member of  pDynamicState set to '. It is ignored if the pipeline includes a mesh shader stage.VvulkanpTessellationState is a pointer to a  structure, and is ignored if the pipeline does not include a tessellation control shader stage and tessellation evaluation shader stage.VvulkanpViewportState is a pointer to a  structure, and is ignored if the pipeline has rasterization disabled.VvulkanpRasterizationState is a pointer to a  structure.VvulkanpMultisampleState is a pointer to a  structure, and is ignored if the pipeline has rasterization disabled.VvulkanpDepthStencilState is a pointer to a  structure, and is ignored if the pipeline has rasterization disabled or if the subpass of the render pass the pipeline is created against does not use a depth/stencil attachment.VvulkanpColorBlendState is a pointer to a  structure, and is ignored if the pipeline has rasterization disabled or if the subpass of the render pass the pipeline is created against does not use any color attachments.Vvulkan pDynamicState is a pointer to a  structure, and is used to indicate which properties of the pipeline state object are dynamic and can7 be changed independently of the pipeline state. This can be NULL>, which means no state in the pipeline is considered dynamic.Vvulkanlayout is the description of binding locations used by both the pipeline and descriptor sets used with the pipeline.Vvulkan renderPass is a handle to a render pass object describing the environment in which the pipeline will be used; the pipeline must only be used with an instance of any render pass compatible with the one provided. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibilityRender Pass Compatibility for more information.Vvulkansubpass is the index of the subpass in the render pass where this pipeline will be used.VvulkanbasePipelineHandle is a pipeline to derive from.VvulkanbasePipelineIndex is an index into the  pCreateInfos0 parameter to use as a pipeline to derive from.Vvulkanflags is reserved for future use.VvulkandepthTestEnable controls whether  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth depth testing is enabled.VvulkandepthWriteEnable controls whether  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes are enabled when depthTestEnable is /). Depth writes are always disabled when depthTestEnable is /.VvulkandepthCompareOp) is the comparison operator used in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth depth test.VvulkandepthBoundsTestEnable controls whether  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-dbtdepth bounds testing is enabled.VvulkanstencilTestEnable controls whether  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencilstencil testing is enabled.Vvulkanfront and back control the parameters of the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil stencil test.VvulkanminDepthBounds) is the minimum depth bound used in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-dbtdepth bounds test.VvulkanmaxDepthBounds) is the maximum depth bound used in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-dbtdepth bounds test.VvulkanfailOp is a h value specifying the action performed on samples that fail the stencil test.&VUID-VkStencilOpState-failOp-parameter failOp must be a valid h valueVvulkanpassOp is a h value specifying the action performed on samples that pass both the depth and stencil tests.&VUID-VkStencilOpState-passOp-parameter passOp must be a valid h valueVvulkan depthFailOp is a h value specifying the action performed on samples that pass the stencil test and fail the depth test.+VUID-VkStencilOpState-depthFailOp-parameter  depthFailOp must be a valid h valueVvulkan compareOp is a D value specifying the comparison operator used in the stencil test.)VUID-VkStencilOpState-compareOp-parameter  compareOp must be a valid D valueVvulkan compareMask selects the bits of the unsigned integer stencil values participating in the stencil test.Vvulkan writeMask selects the bits of the unsigned integer stencil values updated by the stencil test in the stencil framebuffer attachment.Vvulkan reference is an integer reference value that is used in the unsigned stencil comparison.Vvulkanflags is reserved for future use.VvulkanpDynamicStates is a pointer to an array of & values specifying which pieces of pipeline state will use the values from dynamic state commands rather than from pipeline state creation information.VvulkanpNext is NULL6 or a pointer to a structure extending this structure.Vvulkanflags is reserved for future use.Vvulkan logicOpEnable controls whether to apply  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-logicopLogical Operations.VvulkanlogicOp* selects which logical operation to apply.Vvulkan pAttachments: is a pointer to an array of per target attachment states.VvulkanblendConstants is a pointer to an array of four values used as the R, G, B, and A components of the blend constant that are used in blending, depending on the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blendfactors blend factor.Vvulkan blendEnable controls whether blending is enabled for the corresponding color attachment. If blending is not enabled, the source fragment@s color for that attachment is passed through unmodified.VvulkansrcColorBlendFactor selects which blend factor is used to determine the source factors (Sr,Sg,Sb).VvulkandstColorBlendFactor selects which blend factor is used to determine the destination factors (Dr,Dg,Db).Vvulkan colorBlendOp selects which blend operation is used to calculate the RGB values to write to the color attachment.VvulkansrcAlphaBlendFactor selects which blend factor is used to determine the source factor Sa.VvulkandstAlphaBlendFactor selects which blend factor is used to determine the destination factor Da.Vvulkan alphaBlendOp selects which blend operation is use to calculate the alpha values to write to the color attachment.VvulkancolorWriteMask is a bitmask of * specifying which of the R, G, B, and/or A components are enabled for writing, as described for the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-color-write-maskColor Write Mask.VvulkanpNext is NULL6 or a pointer to a structure extending this structure.Vvulkanflags is reserved for future use.VvulkanrasterizationSamples is a b? value specifying the number of samples used in rasterization.VvulkansampleShadingEnable can be used to enable  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshadingSample Shading.VvulkanminSampleShading4 specifies a minimum fraction of sample shading if sampleShadingEnable is set to /.Vvulkan pSampleMask is a pointer to an array of  values used in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-samplemasksample mask test.VvulkanalphaToCoverageEnable controls whether a temporary coverage value is generated based on the alpha component of the fragment@s first color output as specified in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-covgMultisample Coverage section.VvulkanalphaToOneEnable controls whether the alpha component of the fragment@s first color output is replaced with one as described in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-covgMultisample Coverage.VvulkanpNext is NULL6 or a pointer to a structure extending this structure.Vvulkanflags is reserved for future use.VvulkandepthClampEnable controls whether to clamp the fragment@s depth values as described in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth Depth Test(. If the pipeline is not created with  present then enabling depth clamp will also disable clipping primitives to the z planes of the frustrum as described in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-clippingPrimitive Clipping?. Otherwise depth clipping is controlled by the state set in .VvulkanrasterizerDiscardEnable controls whether primitives are discarded immediately before the rasterization stage.Vvulkan polygonMode& is the triangle rendering mode. See .VvulkancullMode is the triangle facing direction used for primitive culling. See E.Vvulkan frontFace is a L value specifying the front-facing triangle orientation to be used for culling.VvulkandepthBiasEnable0 controls whether to bias fragment depth values.VvulkandepthBiasConstantFactor is a scalar factor controlling the constant depth value added to each fragment.VvulkandepthBiasClamp6 is the maximum (or minimum) depth bias of a fragment.VvulkandepthBiasSlopeFactor is a scalar factor applied to a fragment@s slope in depth bias calculations.Vvulkan lineWidth* is the width of rasterized line segments.VvulkanpNext is NULL6 or a pointer to a structure extending this structure.Vvulkanflags is reserved for future use.Vvulkan viewportCount1 is the number of viewports used by the pipeline.Vvulkan pViewports is a pointer to an array of  structures, defining the viewport transforms. If the viewport state is dynamic, this member is ignored.Vvulkan scissorCount is the number of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-scissorscissors and must match the number of viewports.Vvulkan pScissors is a pointer to an array of r structures defining the rectangular bounds of the scissor for the corresponding viewport. If the scissor state is dynamic, this member is ignored.VvulkanpNext is NULL6 or a pointer to a structure extending this structure.Vvulkanflags is reserved for future use.VvulkanpatchControlPoints+ is the number of control points per patch.Vvulkanflags is reserved for future use.Vvulkantopology is a [6 defining the primitive topology, as described below.VvulkanprimitiveRestartEnable controls whether a special vertex index value is treated as restarting the assembly of primitives. This enable only applies to indexed draws ( ,  , and >), and the special index value is either 0xFFFFFFFF when the  indexType parameter of  is equal to  , 0xFF when  indexType is equal to  , or 0xFFFF when  indexType is equal to :. Primitive restart is not allowed for @list@ topologies.VvulkanpNext is NULL6 or a pointer to a structure extending this structure.Vvulkanflags is reserved for future use.VvulkanpVertexBindingDescriptions is a pointer to an array of  structures.VvulkanpVertexAttributeDescriptions is a pointer to an array of  structures.Vvulkanlocation8 is the shader input location number for this attribute.Wvulkanbinding is the binding number which this attribute takes its data from.Wvulkanformat3 is the size and type of the vertex attribute data.Wvulkanoffset is a byte offset of this attribute relative to the start of an element in the vertex input binding.Wvulkanbinding5 is the binding number that this structure describes.Wvulkanstride is the byte stride between consecutive elements within the buffer.Wvulkan inputRate is a  value specifying whether vertex attribute addressing is a function of the vertex index or of the instance index.WvulkanpNext is NULL6 or a pointer to a structure extending this structure.Wvulkanflags is a bitmask of 0 specifying how the pipeline will be generated.Wvulkanstage is a * structure describing the compute shader.Wvulkanlayout is the description of binding locations used by both the pipeline and descriptor sets used with the pipeline.WvulkanbasePipelineHandle is a pipeline to derive fromWvulkanbasePipelineIndex is an index into the  pCreateInfos/ parameter to use as a pipeline to derive fromWvulkanpNext is NULL6 or a pointer to a structure extending this structure.Wvulkanflags is a bitmask of = specifying how the pipeline shader stage will be generated.Wvulkanstage is a d+ value specifying a single pipeline stage.Wvulkanmodule is a w. object containing the shader for this stage.WvulkanpName is a pointer to a null-terminated UTF-8 string specifying the entry point name of the shader for this stage.WvulkanpSpecializationInfo is a pointer to a  structure, as described in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-specialization-constantsSpecialization Constants, or NULL.Wvulkan pMapEntries is a pointer to an array of 2 structures which map constant IDs to offsets in pData.WvulkandataSize is the byte size of the pData buffer.WvulkanpData8 contains the actual constant values to specialize with.Wvulkan constantID4 is the ID of the specialization constant in SPIR-V.Wvulkanoffset is the byte offset of the specialization constant value within the supplied data buffer.Wvulkansize is the byte size of the specialization constant value within the supplied data buffer.Wvulkanx and y, are the viewport@s upper left corner (x,y).Wvulkanwidth and height3 are the viewport@s width and height, respectively.WvulkanminDepth and maxDepth& are the depth range for the viewport.Wvulkan5vkCreateGraphicsPipelines - Create graphics pipelines DescriptionThe ! structure includes an array of  structures for each of the desired active shader stages, as well as creation information for all relevant fixed-function stages, and a pipeline layout. Valid Usage*VUID-vkCreateGraphicsPipelines-flags-00720 If the flags member of any element of  pCreateInfos contains the  flag, and the basePipelineIndex) member of that same element is not -1, basePipelineIndex must" be less than the index into  pCreateInfos! that corresponds to that element*VUID-vkCreateGraphicsPipelines-flags-00721 If the flags member of any element of  pCreateInfos contains the  flag, the base pipeline must! have been created with the  flag set2VUID-vkCreateGraphicsPipelines-pipelineCache-02876 If  pipelineCache was created with , host access to  pipelineCache must be https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-threadingbehaviorexternally synchronizedNoteAn implicit cache may be provided by the implementation or a layer. For this reason, it is still valid to set  on flags for any element of  pCreateInfos while passing  for  pipelineCache.Valid Usage (Implicit)/VUID-vkCreateGraphicsPipelines-device-parameter device must be a valid  handle6VUID-vkCreateGraphicsPipelines-pipelineCache-parameter If  pipelineCache is not ,  pipelineCache must be a valid  handle5VUID-vkCreateGraphicsPipelines-pCreateInfos-parameter  pCreateInfos must( be a valid pointer to an array of createInfoCount valid  structures3VUID-vkCreateGraphicsPipelines-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure3VUID-vkCreateGraphicsPipelines-pPipelines-parameter  pPipelines must# be a valid pointer to an array of createInfoCount  handles:VUID-vkCreateGraphicsPipelines-createInfoCount-arraylength createInfoCount must be greater than 03VUID-vkCreateGraphicsPipelines-pipelineCache-parent If  pipelineCache is a valid handle, it must6 have been created, allocated, or retrieved from device Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , , Wvulkan=A convenience wrapper to make a compatible pair of calls to W and WTo ensure that W is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.WvulkanvkCreateComputePipelines - Creates a new compute pipeline object Valid Usage)VUID-vkCreateComputePipelines-flags-00695 If the flags member of any element of  pCreateInfos contains the  flag, and the basePipelineIndex) member of that same element is not -1, basePipelineIndex must" be less than the index into  pCreateInfos! that corresponds to that element)VUID-vkCreateComputePipelines-flags-00696 If the flags member of any element of  pCreateInfos contains the  flag, the base pipeline must! have been created with the  flag set1VUID-vkCreateComputePipelines-pipelineCache-02873 If  pipelineCache was created with , host access to  pipelineCache must be https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-threadingbehaviorexternally synchronizedValid Usage (Implicit).VUID-vkCreateComputePipelines-device-parameter device must be a valid  handle5VUID-vkCreateComputePipelines-pipelineCache-parameter If  pipelineCache is not ,  pipelineCache must be a valid  handle4VUID-vkCreateComputePipelines-pCreateInfos-parameter  pCreateInfos must( be a valid pointer to an array of createInfoCount valid  structures2VUID-vkCreateComputePipelines-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure2VUID-vkCreateComputePipelines-pPipelines-parameter  pPipelines must# be a valid pointer to an array of createInfoCount  handles9VUID-vkCreateComputePipelines-createInfoCount-arraylength createInfoCount must be greater than 02VUID-vkCreateComputePipelines-pipelineCache-parent If  pipelineCache is a valid handle, it must6 have been created, allocated, or retrieved from device Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , , Wvulkan=A convenience wrapper to make a compatible pair of calls to W and WTo ensure that W is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.Wvulkan-vkDestroyPipeline - Destroy a pipeline object Valid Usage%VUID-vkDestroyPipeline-pipeline-00765+ All submitted commands that refer to pipeline must have completed execution%VUID-vkDestroyPipeline-pipeline-00766 If  were provided when pipeline1 was created, a compatible set of callbacks must be provided here%VUID-vkDestroyPipeline-pipeline-00767 If no  were provided when pipeline was created,  pAllocator must be NULLValid Usage (Implicit)'VUID-vkDestroyPipeline-device-parameter device must be a valid  handle)VUID-vkDestroyPipeline-pipeline-parameter If pipeline is not , pipeline must be a valid  handle+VUID-vkDestroyPipeline-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure&VUID-vkDestroyPipeline-pipeline-parent If pipeline is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to pipeline must be externally synchronizedSee Also, , Wvulkandevice; is the logical device that creates the graphics pipelines.vulkan pipelineCache is either , indicating that pipeline caching is disabled; or the handle of a valid  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-cachepipeline cache object, in which case use of that cache is enabled for the duration of the command.vulkan pCreateInfos is a pointer to an array of  structures.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.Wvulkandevice: is the logical device that creates the compute pipelines.vulkan pipelineCache is either , indicating that pipeline caching is disabled; or the handle of a valid  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-cachepipeline cache object, in which case use of that cache is enabled for the duration of the command.vulkan pCreateInfos is a pointer to an array of  structures.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.Wvulkandevice2 is the logical device that destroys the pipeline.vulkanpipeline* is the handle of the pipeline to destroy.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.D)))))))))E)))))FL###U !! [deh1WWWWWWWWWWWVWWVWVVVVVVVVWWWWWWWWVVVVVVVVVVVVVVVVWWWWWWWVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWW&&''''''''''''''''''''''&&&&&&&&&&&&&&&*********++++++++++*****************************************+++++++++++++++++++++WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWVWWVWVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV1[D)))))))))))))))))L#####++++++++++++++++++++++++++++++++++++++++**++++++++++*****************************************++++++++++*****************************************hU !! !! &&''''''''''''''''''''''&&&&&&&&&&&&&&&''''''''''''''''''''''&&&&&&&&&&&&&&&E)))))))))Fde***********None( #$&'(./0289:<>?#BvulkanVkPhysicalDeviceInheritedViewportScissorFeaturesNV - Structure describing the viewport scissor inheritance behavior for an implementationMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkanVkCommandBufferInheritanceViewportScissorInfoNV - Structure specifying command buffer inheritance information DescriptionIf the pNext chain of  includes a  structure, then that structure controls whether a command buffer can9 inherit the following state from other command buffers: as well as the following state, with restrictions on inherited depth values and viewport count: If viewportScissor2D is /, then the command buffer does not inherit the listed dynamic state, and should set this state itself. If this structure is not present, the behavior is as if viewportScissor2D is /.If viewportScissor2D is /, then the listed dynamic state is inherited, and the command buffer must not set this state, except that the viewport and scissor count may be set by binding a graphics pipeline that does not specify this state as dynamic.Note&Due to this restriction, applications should ensure either all or none of the graphics pipelines bound in this secondary command buffer use dynamic viewport/scissor counts.When the command buffer is executed as part of a the execution of a  command, the inherited state (if enabled) is determined by the following procedure, performed separately for each dynamic state, and separately for each value for dynamic state that consists of multiple values (e.g. multiple viewports).With i being the index of the executed command buffer in the pCommandBuffers array of , if i > 0 and any secondary command buffer from index 0 to i-1 modifies the state, the inherited state is provisionally set to the final value set by the last such secondary command buffer. Binding a graphics pipeline that defines the state statically is equivalent to setting the state to an undefined value.Otherwise, the tentatative inherited state is that of the primary command buffer at the point the  command was recorded; if the state is undefined, then so is the provisional inherited state.If the provisional inherited state is an undefined value, then the state is not inherited.If the provisional inherited state is a viewport, with n being its viewport index, then if n D viewportDepthCount, or if either ::minDepth or ::maxDepth are not equal to the respective values of the nth element of pViewportDepths', then the state is not inherited.If the provisional inherited state passes both checks, then it becomes the actual inherited state.NoteThere is no support for inheriting dynamic state from a secondary command buffer executed as part of a different  command. Valid UsageVUID-VkCommandBufferInheritanceViewportScissorInfoNV-viewportScissor2D-04782 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-inheritedViewportScissor2Dinherited viewport scissor feature is not enabled, viewportScissor2D must be /VUID-VkCommandBufferInheritanceViewportScissorInfoNV-viewportScissor2D-04783 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports! feature is not enabled and viewportScissor2D is /, then viewportDepthCount must be 1VUID-VkCommandBufferInheritanceViewportScissorInfoNV-viewportScissor2D-04784 If viewportScissor2D is / , then viewportDepthCount must be greater than 0VUID-VkCommandBufferInheritanceViewportScissorInfoNV-viewportScissor2D-04785 If viewportScissor2D is / , then pViewportDepths must( be a valid pointer to an array of viewportDepthCount valid - structures, except any requirements on x, y, width , and height do not applyVUID-VkCommandBufferInheritanceViewportScissorInfoNV-viewportScissor2D-04786 If viewportScissor2D is /, then the command buffer must be recorded with the Valid Usage (Implicit)VUID-VkCommandBufferInheritanceViewportScissorInfoNV-sType-sType sType must be  See Alsoq, , XvulkanviewportScissor2D: specifies whether the listed dynamic state is inherited.XvulkanviewportDepthCount= specifies the maximum number of viewports to inherit. When viewportScissor2D is /,, the behavior is as if this value is zero.XvulkanpViewportDepths is a pointer to a  structure specifying the expected depth range for each inherited viewport.Xvulkan#features-inheritedViewportScissor2D inheritedViewportScissor2D indicates whether secondary command buffers can inherit most of the dynamic state affected by  ,  , ,  or !, from a primary command buffer. XXXXXXXXXX XXXXXXXXXXNone( #$&'(./0289:<>?$]vulkanVkSetStateFlagsIndirectCommandNV - Structure specifying input data for a single state flag command tokenSee Also!No cross-references are availablevulkanVkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV - Structure describing push descriptor limits that can be supported by an implementation DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.Valid Usage (Implicit)See AlsovulkanVkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV - Structure describing the device-generated commands features that can be supported by an implementationMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkanVkIndirectCommandsStreamNV - Structure specifying input streams for generated command tokens Valid Usage,VUID-VkIndirectCommandsStreamNV-buffer-02942 The buffer@s usage flag must have the   bit set,VUID-VkIndirectCommandsStreamNV-offset-02943 The offset must be aligned to ::(minIndirectCommandsBufferOffsetAlignment,VUID-VkIndirectCommandsStreamNV-buffer-02975 If buffer is non-sparse then it must7 be bound completely and contiguously to a single 0  objectValid Usage (Implicit)0VUID-VkIndirectCommandsStreamNV-buffer-parameter buffer must be a valid  handleSee Also, o, vulkanVkIndirectCommandsLayoutTokenNV - Struct specifying the details of an indirect command layout token Valid Usage1VUID-VkIndirectCommandsLayoutTokenNV-stream-02951 stream must be smaller than :: streamCount 1VUID-VkIndirectCommandsLayoutTokenNV-offset-02952 offset must$ be less than or equal to ::maxIndirectCommandsTokenOffset4VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02976 If  tokenType is X, vertexBindingUnit must stay within device supported limits for the appropriate commands4VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02977 If  tokenType is X, pushconstantPipelineLayout must be valid4VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02978 If  tokenType is X, pushconstantOffset must be a multiple of 44VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02979 If  tokenType is X, pushconstantSize must be a multiple of 44VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02980 If  tokenType is X, pushconstantOffset must be less than  ::maxPushConstantsSize4VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02981 If  tokenType is X, pushconstantSize must be less than or equal to  ::maxPushConstantsSize minus pushconstantOffset4VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02982 If  tokenType is X/, for each byte in the range specified by pushconstantOffset and pushconstantSize# and for each shader stage in pushconstantShaderStageFlags, there must" be a push constant range in pushconstantPipelineLayout, that includes that byte and that stage4VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02983 If  tokenType is X/, for each byte in the range specified by pushconstantOffset and pushconstantSize and for each push constant range that overlaps that byte, pushconstantShaderStageFlags must< include all stages in that push constant range@s ::: stageFlags4VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02984 If  tokenType is X, indirectStateFlags must not be 0Valid Usage (Implicit)0VUID-VkIndirectCommandsLayoutTokenNV-sType-sType sType must be  0VUID-VkIndirectCommandsLayoutTokenNV-pNext-pNext pNext must be NULL8VUID-VkIndirectCommandsLayoutTokenNV-tokenType-parameter  tokenType must be a valid X valueVUID-VkIndirectCommandsLayoutTokenNV-pushconstantPipelineLayout-parameter If pushconstantPipelineLayout is not , pushconstantPipelineLayout must be a valid ~ handleVUID-VkIndirectCommandsLayoutTokenNV-pushconstantShaderStageFlags-parameter pushconstantShaderStageFlags must be a valid combination of '  valuesVUID-VkIndirectCommandsLayoutTokenNV-indirectStateFlags-parameter indirectStateFlags must be a valid combination of X values:VUID-VkIndirectCommandsLayoutTokenNV-pIndexTypes-parameter If indexTypeCount is not 0,  pIndexTypes must( be a valid pointer to an array of indexTypeCount valid T values?VUID-VkIndirectCommandsLayoutTokenNV-pIndexTypeValues-parameter If indexTypeCount is not 0, pIndexTypeValues must( be a valid pointer to an array of indexTypeCount uint32_t valuesSee Alsoq, T, , X, X, ~, e, vulkanVkIndirectCommandsLayoutCreateInfoNV - Structure specifying the parameters of a newly created indirect commands layout object Description1The following code illustrates some of the flags: void cmdProcessAllSequences(cmd, pipeline, indirectCommandsLayout, pIndirectCommandsTokens, sequencesCount, indexbuffer, indexbufferOffset) { for (s = 0; s < sequencesCount; s++) { sUsed = s; if (indirectCommandsLayout.flags & VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV) { sUsed = indexbuffer.load_uint32( sUsed * sizeof(uint32_t) + indexbufferOffset); } if (indirectCommandsLayout.flags & VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV) { sUsed = incoherent_implementation_dependent_permutation[ sUsed ]; } cmdProcessSequence( cmd, pipeline, indirectCommandsLayout, pIndirectCommandsTokens, sUsed ); } } Valid UsageVUID-VkIndirectCommandsLayoutCreateInfoNV-pipelineBindPoint-02930 The pipelineBindPoint must be :VUID-VkIndirectCommandsLayoutCreateInfoNV-tokenCount-02931  tokenCount must be greater than 0 and less than or equal to ::maxIndirectCommandsTokenCount7VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-02932 If pTokens contains an entry of X it must2 be the first element of the array and there must1 be only a single element of such token type7VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-02933 If pTokens contains an entry of X there must1 be only a single element of such token type7VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-02934 All state tokens in pTokens must) occur prior work provoking tokens (X, X, X)7VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-02935 The content of pTokens must include one single work provoking token that is compatible with the pipelineBindPoint;VUID-VkIndirectCommandsLayoutCreateInfoNV-streamCount-02936  streamCount must be greater than 0 and less or equal to ::maxIndirectCommandsStreamCount>VUID-VkIndirectCommandsLayoutCreateInfoNV-pStreamStrides-02937 each element of pStreamStrides must8 be greater than `0`and less than or equal to ::maxIndirectCommandsStreamStride5. Furthermore the alignment of each token input must be ensuredValid Usage (Implicit)5VUID-VkIndirectCommandsLayoutCreateInfoNV-sType-sType sType must be  5VUID-VkIndirectCommandsLayoutCreateInfoNV-pNext-pNext pNext must be NULL9VUID-VkIndirectCommandsLayoutCreateInfoNV-flags-parameter flags must be a valid combination of X valuesVUID-VkIndirectCommandsLayoutCreateInfoNV-pipelineBindPoint-parameter pipelineBindPoint must be a valid X value;VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-parameter pTokens must# be a valid pointer to an array of  tokenCount valid  structuresVUID-VkIndirectCommandsLayoutCreateInfoNV-pStreamStrides-parameter pStreamStrides must( be a valid pointer to an array of  streamCount uint32_t valuesVUID-VkIndirectCommandsLayoutCreateInfoNV-tokenCount-arraylength  tokenCount must be greater than 0VUID-VkIndirectCommandsLayoutCreateInfoNV-streamCount-arraylength  streamCount must be greater than 0See Also, X, X, , YvulkanVkGraphicsShaderGroupCreateInfoNV - Structure specifying override parameters for each shader group Valid Usage7VUID-VkGraphicsShaderGroupCreateInfoNV-stageCount-02888 For  stageCount#, the same restrictions as in 8:: stageCount apply4VUID-VkGraphicsShaderGroupCreateInfoNV-pStages-02889 For pStages#, the same restrictions as in 8::pStages apply>VUID-VkGraphicsShaderGroupCreateInfoNV-pVertexInputState-02890 For pVertexInputState#, the same restrictions as in 8::pVertexInputState apply?VUID-VkGraphicsShaderGroupCreateInfoNV-pTessellationState-02891 For pTessellationState#, the same restrictions as in 8::pTessellationState applyValid Usage (Implicit)2VUID-VkGraphicsShaderGroupCreateInfoNV-sType-sType sType must be  2VUID-VkGraphicsShaderGroupCreateInfoNV-pNext-pNext pNext must be NULL8VUID-VkGraphicsShaderGroupCreateInfoNV-pStages-parameter pStages must# be a valid pointer to an array of  stageCount valid  structures=VUID-VkGraphicsShaderGroupCreateInfoNV-stageCount-arraylength  stageCount must be greater than 0See Also, , , , vulkanVkGraphicsPipelineShaderGroupsCreateInfoNV - Structure specifying parameters of a newly created multi shader group pipeline DescriptionWhen referencing shader groups by index, groups defined in the referenced pipelines are treated as if they were defined as additional entries in pGroups5. They are appended in the order they appear in the  pPipelines array and in the pGroups* array when those pipelines were defined.The application must maintain the lifetime of all such referenced pipelines based on the pipelines that make use of them. Valid UsageVUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-groupCount-02879  groupCount must be at least 1 and as maximum ::maxGraphicsShaderGroupCountVUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-groupCount-02880 The sum of  groupCount3 including those groups added from referenced  pPipelines must also be as maximum ::maxGraphicsShaderGroupCount=VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02881( The state of the first element of pGroups must4 match its equivalent within the parent@s 8=VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02882 Each element of pGroups must in combination with the rest of the pipeline state yield a valid state configuration=VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02884 All elements of pGroups must use the same shader stage combinations unless any mesh shader stage is used, then either combination of task and mesh or just mesh shader is valid=VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02885 Mesh and regular primitive shading stages cannot be mixed across pGroupsVUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pPipelines-02886 Each element of  pPipelines must have been created with identical state to the pipeline currently created except the state that can be overridden by VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-deviceGeneratedCommands-02887 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-deviceGeneratedCommands::deviceGeneratedCommands feature must be enabledValid Usage (Implicit);VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-sType-sType sType must be  VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-parameter pGroups must# be a valid pointer to an array of  groupCount valid  structuresVUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pPipelines-parameter If  pipelineCount is not 0,  pPipelines must( be a valid pointer to an array of  pipelineCount valid  handlesVUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-groupCount-arraylength  groupCount must be greater than 0See Also, , vulkanVkGeneratedCommandsMemoryRequirementsInfoNV - Structure specifying parameters for the reservation of preprocess buffer space Valid UsageVUID-VkGeneratedCommandsMemoryRequirementsInfoNV-maxSequencesCount-02907 maxSequencesCount must be less or equal to ::maxIndirectSequenceCountValid Usage (Implicit)VkIndirectCommandsTokenTypeNV - Enum specifying token commands Description' Token typeEquivalent commandXYX-XXX XXX!Supported indirect command tokensSee AlsoXvulkanVkIndirectStateFlagBitsNV - Bitmask specifiying state that can be altered on the deviceSee AlsoXXvulkanVkIndirectCommandsLayoutUsageFlagBitsNV - Bitmask specifying allowed usage of an indirect commands layoutSee AlsoXXvulkanpipelineBindPoint is the X of the pipeline that this buffer memory is intended to be used with during the execution.Xvulkanpipeline is the  that this buffer memory is intended to be used with during the execution.XvulkanindirectCommandsLayout is the 6 that this buffer memory is intended to be used with.XvulkanmaxSequencesCount is the maximum number of sequences that this buffer memory in combination with the other state provided can be used with.XvulkanpipelineBindPoint is the X used for the pipeline.Xvulkanpipeline is the / used in the generation and execution process.XvulkanindirectCommandsLayout is the 1 that provides the command sequence to generate.XvulkanpStreams is a pointer to an array of  streamCount = structures providing the input data for the tokens used in indirectCommandsLayout.XvulkansequencesCount4 is the maximum number of sequences to reserve. If sequencesCountBuffer is 9, this is also the actual number of sequences generated.XvulkanpreprocessBuffer is the  that is used for preprocessing the input data for execution. If this structure is used with X with its isPreprocessed set to , then the preprocessing step is skipped and data is only read from this buffer.XvulkanpreprocessOffset is the byte offset into preprocessBuffer( where the preprocessed data is stored.XvulkanpreprocessSize% is the maximum byte size within the preprocessBuffer after the preprocessOffset% that is available for preprocessing.XvulkansequencesCountBuffer is a  in which the actual number of sequences is provided as single uint32_t value.XvulkansequencesCountOffset is the byte offset into sequencesCountBuffer" where the count value is stored.XvulkansequencesIndexBuffer is a , that encodes the used sequence indices as uint32_t array.XvulkansequencesIndexOffset is the byte offset into sequencesIndexBuffer where the index values start.Xvulkanflags is a bitmask of X( specifying usage hints of this layout.XvulkanpipelineBindPoint is the X that this layout targets.XvulkanpTokens; is an array describing each command token in detail. See X and  below for details.XvulkanpStreamStrides= is an array defining the byte stride for each input stream.Xvulkan tokenType" specifies the token command type.Xvulkanstream is the index of the input stream that contains the token argument data.Xvulkanoffset is a relative starting offset within the input stream memory for the token argument data.XvulkanvertexBindingUnit/ is used for the vertex buffer binding command.XvulkanvertexDynamicStride sets if the vertex buffer stride is provided by the binding command rather than the current bound graphics pipeline state.XvulkanpushconstantPipelineLayout is the ~% used for the push constant command.XvulkanpushconstantShaderStageFlags are the shader stage flags used for the push constant command.XvulkanpushconstantOffset2 is the offset used for the push constant command.XvulkanpushconstantSize0 is the size used for the push constant command.XvulkanindirectStateFlags2 are the active states for the state flag command.Xvulkan pIndexTypes is the used T for the corresponding uint32_t value entry in pIndexTypeValues.Xvulkanbuffer specifies the  storing the functional arguments for each sequence. These arguments can be written by the device.Xvulkanoffset specified an offset into buffer where the arguments start.Xvulkandata/ encodes packed state that this command alters.Bit 0: If set represents , otherwise Xvulkan bufferAddress& specifies a physical address of the  used as vertex input binding.Xvulkansize is the byte size range which is available for this operation from the provided address.Xvulkanstride> is the byte size stride for this vertex input binding as in 8::stride. It is only used if ::vertexDynamicStride was set, otherwise the stride is inherited from the current bound graphics pipeline.Xvulkan bufferAddress& specifies a physical address of the  used as index buffer.Xvulkansize is the byte size range which is available for this operation from the provided address.Xvulkan indexType is a T value specifying how indices are treated. Instead of the Vulkan enum values, a custom uint32_t value can be mapped to an T by specifying the :: pIndexTypes and ::pIndexTypeValues arrays.XvulkanpGroups is a pointer to an array of 5 structures specifying which state of the original 8 each shader group overrides.Xvulkan pPipelines' is a pointer to an array of graphics  structures which are referenced within the created pipeline, including all their shader groups.XvulkanpStages is a pointer to an array  structures specifying the set of the shader stages to be included in this shader group.XvulkanpVertexInputState is a pointer to a  structure.XvulkanpTessellationState is a pointer to a  structure, and is ignored if the shader group does not include a tessellation control shader stage and tessellation evaluation shader stage.XvulkanmaxGraphicsShaderGroupCount, is the maximum number of shader groups in .XvulkanmaxIndirectSequenceCount( is the maximum number of sequences in  and in .XvulkanmaxIndirectCommandsStreamCount& is the maximum number of streams in .XvulkanmaxIndirectCommandsTokenOffset is the maximum offset in .XvulkanmaxIndirectCommandsStreamStride" is the maximum stream stride in .Xvulkan(minIndirectCommandsBufferOffsetAlignment8 is the minimum alignment for memory addresses used in , and as preprocess buffer in .Xvulkan features-deviceGeneratedCommands deviceGeneratedCommands indicates whether the implementation supports functionality to generate commands on the device. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#device-generated-commandsDevice-Generated Commands.XvulkanX allows to toggle the 5 rasterization state for subsequent draw operations.XvulkanX- specifies that the processing of sequences can happen at an implementation-dependent order, which is not: guaranteed to be coherent using the same input data.XvulkanX specifies that the input data for the sequences is not implicitly indexed from 0..sequencesUsed but a user provided ! encoding the index is provided.XvulkanX specifies that the layout is always used with the manual preprocessing step through calling Y and executed by X with isPreprocessed set to .XvulkanvkCmdExecuteGeneratedCommandsNV - Generate and execute commands on the device Valid Usage4VUID-vkCmdExecuteGeneratedCommandsNV-magFilter-04553 If a 0  created with  magFilter or  minFilter equal to   and  compareEnable equal to  is used to sample a 0> as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain =5VUID-vkCmdExecuteGeneratedCommandsNV-mipmapMode-04770 If a 0  created with  mipmapMode equal to   and  compareEnable equal to  is used to sample a 0> as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain /VUID-vkCmdExecuteGeneratedCommandsNV-None-02691 If a 0 is accessed using atomic operations as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain  /VUID-vkCmdExecuteGeneratedCommandsNV-None-02692 If a 0 is sampled with  > as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain  6VUID-vkCmdExecuteGeneratedCommandsNV-filterCubic-02694 Any 0 being sampled with  " as a result of this command must have a   and format that supports cubic filtering, as specified by :: filterCubic returned by U  object that uses unnormalized coordinates, that sampler must% not be used to sample from any 0 with a 0 of the type  ,  ,  ,   or  , in any shader stage/VUID-vkCmdExecuteGeneratedCommandsNV-None-02703 If the  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj# in their name, in any shader stage/VUID-vkCmdExecuteGeneratedCommandsNV-None-02704 If the  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions that includes a LOD bias or any offset values, in any shader stage/VUID-vkCmdExecuteGeneratedCommandsNV-None-02705 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the  object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point/VUID-vkCmdExecuteGeneratedCommandsNV-None-02706 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the  object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point8VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-02707 If  commandBuffer is an unprotected command buffer, any resource accessed by the  object bound to the pipeline bind point used by this command must! not be a protected resource/VUID-vkCmdExecuteGeneratedCommandsNV-None-04115 If a 0 is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction must have at least as many components as the image view@s format7VUID-vkCmdExecuteGeneratedCommandsNV-OpImageWrite-04469 If a 0  is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction must have at least as many components as the buffer view@s format6VUID-vkCmdExecuteGeneratedCommandsNV-SampledType-04470 If a 0 with a  that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 646VUID-vkCmdExecuteGeneratedCommandsNV-SampledType-04471 If a 0 with a  that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 326VUID-vkCmdExecuteGeneratedCommandsNV-SampledType-04472 If a 0  with a  that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 646VUID-vkCmdExecuteGeneratedCommandsNV-SampledType-04473 If a 0  with a  that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32VUID-vkCmdExecuteGeneratedCommandsNV-sparseImageInt64Atomics-04474 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, 0$ objects created with the   flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this commandVUID-vkCmdExecuteGeneratedCommandsNV-sparseImageInt64Atomics-04475 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, $ objects created with the   flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command5VUID-vkCmdExecuteGeneratedCommandsNV-renderPass-02684 The current render pass must be  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible with the  renderPass member of the 8, structure specified when creating the  bound to 2VUID-vkCmdExecuteGeneratedCommandsNV-subpass-026853 The subpass index of the current render pass must be equal to the subpass member of the 81 structure specified when creating the  bound to /VUID-vkCmdExecuteGeneratedCommandsNV-None-026869 Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor set/VUID-vkCmdExecuteGeneratedCommandsNV-None-04584 Image subresources used as attachments in the current render pass must not be accessed in any way other than as an attachment by this command, except for cases involving read-only access to depth/stencil attachments as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass chapterVUID-vkCmdExecuteGeneratedCommandsNV-maxMultiviewInstanceIndex-02688 If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to X::maxMultiviewInstanceIndexVUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsEnable-02689; If the bound graphics pipeline was created with ::sampleLocationsEnable set to  and the current subpass has a depth/stencil attachment, then that attachment must& have been created with the   bit set8VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-03417 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  ' dynamic state enabled, then   must have been called in the current command buffer prior to this drawing command, and the  viewportCount parameter of   must match the 8:: scissorCount of the pipeline7VUID-vkCmdExecuteGeneratedCommandsNV-scissorCount-03418 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  ' dynamic state enabled, then  must have been called in the current command buffer prior to this drawing command, and the  scissorCount parameter of  must match the 8:: viewportCount of the pipeline8VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-03419 If the bound graphics pipeline state was created with both the   and  , dynamic states enabled then both   and  must have been called in the current command buffer prior to this drawing command, and the  viewportCount parameter of   must match the  scissorCount parameter of 8VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-04137 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  > dynamic state enabled, then the bound graphics pipeline must" have been created with :: viewportCount greater or equal to the  viewportCount) parameter in the last call to  8VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-04138 If the bound graphics pipeline state was created with the   and  & dynamic states enabled then the  viewportCount) parameter in the last call to   must! be greater than or equal to the  viewportCount) parameter in the last call to  8VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-04139 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  > dynamic state enabled, then the bound graphics pipeline must" have been created with :: viewportCount greater or equal to the  viewportCount) parameter in the last call to  8VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-04140 If the bound graphics pipeline state was created with the   and  & dynamic states enabled then the  viewportCount) parameter in the last call to   must! be greater than or equal to the  viewportCount) parameter in the last call to  VUID-vkCmdExecuteGeneratedCommandsNV-VkPipelineVieportCreateInfo-04141 If the bound graphics pipeline state was created with the  4 dynamic state enabled and an instance of  chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with :: viewportCount greater or equal to the  viewportCount) parameter in the last call to  VUID-vkCmdExecuteGeneratedCommandsNV-VkPipelineVieportCreateInfo-04142 If the bound graphics pipeline state was created with the  4 dynamic state enabled and an instance of  chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with ::exclusiveScissorCount greater or equal to the  viewportCount) parameter in the last call to  ?%`9vulkan3VkRayTracingShaderGroupTypeKHR - Shader group types DescriptionNoteFor current group types, the hit group type could be inferred from the presence or absence of the intersection shader, but we provide the type explicitly for future hit groups that do not have that property.See Also, vulkan-VkShaderGroupShaderKHR - Shader group shadersSee AlsoZvulkanVkTraceRaysIndirectCommandKHR - Structure specifying the parameters of an indirect ray tracing command DescriptionThe members of = have the same meaning as the similarly named parameters of Z. Valid Usage.VUID-VkTraceRaysIndirectCommandKHR-width-03638 width must$ be less than or equal to  ::maxComputeWorkGroupCount[0]   ::maxComputeWorkGroupSize[0]/VUID-VkTraceRaysIndirectCommandKHR-height-03639 height must$ be less than or equal to  ::maxComputeWorkGroupCount[1]   ::maxComputeWorkGroupSize[1].VUID-VkTraceRaysIndirectCommandKHR-depth-03640 depth must$ be less than or equal to  ::maxComputeWorkGroupCount[2]   ::maxComputeWorkGroupSize[2].VUID-VkTraceRaysIndirectCommandKHR-width-03641 width  height  depth must be less than or equal to ::maxRayDispatchInvocationCountSee Also!No cross-references are availablevulkanVkStridedDeviceAddressRegionKHR - Structure specifying a region of device addresses with a stride Valid Usage/VUID-VkStridedDeviceAddressRegionKHR-size-04631 If size) is not zero, all addresses between  deviceAddress and  deviceAddress + size - 1 must> be in the buffer device address range of the same buffer/VUID-VkStridedDeviceAddressRegionKHR-size-04632 If size is not zero, stride must be less than or equal to the size of the buffer from which  deviceAddress was queriedSee Alsop, o, Z, ZvulkanVkRayTracingShaderGroupCreateInfoKHR - Structure specifying shaders in a shader group Valid Usage4VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03474 If type is Z then  generalShader must be a valid index into ::pStages$ referring to a shader of ', ', or '4VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03475 If type is Z then closestHitShader,  anyHitShader, and intersectionShader must be ,4VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03476 If type is Z then intersectionShader must be a valid index into ::pStages$ referring to a shader of '4VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03477 If type is Z then intersectionShader must be ,VUID-VkRayTracingShaderGroupCreateInfoKHR-closestHitShader-03478 closestHitShader must be either , or a valid index into ::pStages$ referring to a shader of ', and the rest of the state identified by this structure must adhere to the pipeline linking rules described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfacesShader Interfaces chapter3VUID-VkRayTracingPipelineCreateInfoKHR-layout-03427 layout must be  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency consistent$ with all shaders specified in pStages3VUID-VkRayTracingPipelineCreateInfoKHR-layout-03428! The number of resources in layout accessible to each shader stage that is used by the pipeline must be less than or equal to  ::maxPerStageResources2VUID-VkRayTracingPipelineCreateInfoKHR-flags-02904 flags must not include VUID-VkRayTracingPipelineCreateInfoKHR-pipelineCreationCacheControl-02905 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineCreationCacheControlpipelineCreationCacheControl feature is not enabled, flags must not include  or 2VUID-VkRayTracingPipelineCreateInfoKHR-stage-03425 If flags does not include   , the stage# member of at least one element of pStages+, including those implicitly added by  pLibraryInfo, must be 'VUID-VkRayTracingPipelineCreateInfoKHR-maxPipelineRayRecursionDepth-03589 maxPipelineRayRecursionDepth must be less than or equal to ::maxRayRecursionDepth2VUID-VkRayTracingPipelineCreateInfoKHR-flags-03465 If flags includes  , pLibraryInterface must not be NULL9VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03590 If  pLibraryInfo is not NULL and its  libraryCount member is greater than 0, its pLibraryInterface member must not be NULL7VUID-VkRayTracingPipelineCreateInfoKHR-pLibraries-03591 Each element of pLibraryInfo->pLibraries must* have been created with the value of maxPipelineRayRecursionDepth$ equal to that in this pipeline9VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03592 If  pLibraryInfo is not NULL, each element of its  pLibraries member must have been created with a layout" that is compatible with the layout in this pipeline9VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03593 If  pLibraryInfo is not NULL, each element of its  pLibraries member must+ have been created with values of the maxPipelineRayPayloadSize and maxPipelineRayHitAttributeSize members of pLibraryInterface equal to those in this pipeline2VUID-VkRayTracingPipelineCreateInfoKHR-flags-03594 If flags includes , each element of pLibraryInfo->pLibraries must& have been created with the  bit set2VUID-VkRayTracingPipelineCreateInfoKHR-flags-04718 If flags includes , each element of pLibraryInfo->pLibraries must& have been created with the  bit set2VUID-VkRayTracingPipelineCreateInfoKHR-flags-04719 If flags includes , each element of pLibraryInfo->pLibraries must& have been created with the  bit set2VUID-VkRayTracingPipelineCreateInfoKHR-flags-04720 If flags includes , each element of pLibraryInfo->pLibraries must& have been created with the  bit set2VUID-VkRayTracingPipelineCreateInfoKHR-flags-04721 If flags includes , each element of pLibraryInfo->pLibraries must& have been created with the  bit set2VUID-VkRayTracingPipelineCreateInfoKHR-flags-04722 If flags includes , each element of pLibraryInfo->pLibraries must& have been created with the  bit set2VUID-VkRayTracingPipelineCreateInfoKHR-flags-04723 If flags includes , each element of pLibraryInfo->pLibraries must& have been created with the  bit set9VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03595 If the  VK_KHR_pipeline_library.htmlVK_KHR_pipeline_library extension is not enabled,  pLibraryInfo and pLibraryInterface must be NULL2VUID-VkRayTracingPipelineCreateInfoKHR-flags-03470 If flags includes , for any element of pGroups with a type of Z or Z , the  anyHitShader of that element must not be ,2VUID-VkRayTracingPipelineCreateInfoKHR-flags-03471 If flags includes , for any element of pGroups with a type of Z or Z , the closestHitShader of that element must not be ,VUID-VkRayTracingPipelineCreateInfoKHR-rayTraversalPrimitiveCulling-03596 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTraversalPrimitiveCullingrayTraversalPrimitiveCulling feature is not enabled, flags must not include VUID-VkRayTracingPipelineCreateInfoKHR-rayTraversalPrimitiveCulling-03597 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTraversalPrimitiveCullingrayTraversalPrimitiveCulling feature is not enabled, flags must not include 2VUID-VkRayTracingPipelineCreateInfoKHR-flags-03598 If flags includes ,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipelineShaderGroupHandleCaptureReplay0rayTracingPipelineShaderGroupHandleCaptureReplay must be enabledVUID-VkRayTracingPipelineCreateInfoKHR-rayTracingPipelineShaderGroupHandleCaptureReplay-03599 If ::0rayTracingPipelineShaderGroupHandleCaptureReplay is / and the pShaderGroupCaptureReplayHandle member of any element of pGroups is not NULL, flags must include 9VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03600 If  pLibraryInfo is not NULL and its  libraryCount is 0,  stageCount must not be 09VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03601 If  pLibraryInfo is not NULL and its  libraryCount is 0,  groupCount must not be 0;VUID-VkRayTracingPipelineCreateInfoKHR-pDynamicStates-03602 Any element of the pDynamicStates member of  pDynamicState must be Valid Usage (Implicit)2VUID-VkRayTracingPipelineCreateInfoKHR-sType-sType sType must be   2VUID-VkRayTracingPipelineCreateInfoKHR-pNext-pNext pNext must be NULL* or a pointer to a valid instance of 3VUID-VkRayTracingPipelineCreateInfoKHR-sType-unique The sType" value of each struct in the pNext chain must be unique6VUID-VkRayTracingPipelineCreateInfoKHR-flags-parameter flags must be a valid combination of  values8VUID-VkRayTracingPipelineCreateInfoKHR-pStages-parameter If  stageCount is not 0, pStages must( be a valid pointer to an array of  stageCount valid  structures8VUID-VkRayTracingPipelineCreateInfoKHR-pGroups-parameter If  groupCount is not 0, pGroups must( be a valid pointer to an array of  groupCount valid  structures=VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-parameter If  pLibraryInfo is not NULL,  pLibraryInfo must) be a valid pointer to a valid  structureVUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInterface-parameter If pLibraryInterface is not NULL, pLibraryInterface must) be a valid pointer to a valid  structure>VUID-VkRayTracingPipelineCreateInfoKHR-pDynamicState-parameter If  pDynamicState is not NULL,  pDynamicState must) be a valid pointer to a valid  structure7VUID-VkRayTracingPipelineCreateInfoKHR-layout-parameter layout must be a valid ~ handle3VUID-VkRayTracingPipelineCreateInfoKHR-commonparent Both of basePipelineHandle, and layout7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same See Also, , , ~, , , , , , ZvulkanVkPhysicalDeviceRayTracingPipelinePropertiesKHR - Properties of the physical device for ray tracing DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.#Limits specified by this structure must/ match those specified with the same name in .Valid Usage (Implicit)See AlsovulkanVkPhysicalDeviceRayTracingPipelineFeaturesKHR - Structure describing the ray tracing features that can be supported by an implementationMembers0This structure describes the following features: DescriptionsType is the type of this structure.pNext is NULL; or a pointer to a structure extending this structure.features-rayTracingPipeline rayTracingPipeline indicates whether the implementation supports the ray tracing pipeline functionality. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing Ray Tracing.9features-rayTracingPipelineShaderGroupHandleCaptureReplay 0rayTracingPipelineShaderGroupHandleCaptureReplay indicates whether the implementation supports saving and reusing shader group handles, e.g. for trace capture and replay.>features-rayTracingPipelineShaderGroupHandleCaptureReplayMixed 5rayTracingPipelineShaderGroupHandleCaptureReplayMixed indicates whether the implementation supports reuse of shader group handles being arbitrarily mixed with creation of non-reused shader group handles. If this is /', all reused shader group handles must1 be specified before any non-reused handles may be created.,features-rayTracingPipelineTraceRaysIndirect #rayTracingPipelineTraceRaysIndirect indicates whether the implementation supports indirect ray tracing commands, e.g. Z.%features-rayTraversalPrimitiveCulling rayTraversalPrimitiveCulling9 indicates whether the implementation supports  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-traversal-culling-primitive&primitive culling during ray traversal.If the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features. Valid UsageVUID-VkPhysicalDeviceRayTracingPipelineFeaturesKHR-rayTracingPipelineShaderGroupHandleCaptureReplayMixed-03575 If 5rayTracingPipelineShaderGroupHandleCaptureReplayMixed is /, 0rayTracingPipelineShaderGroupHandleCaptureReplay must also be /Valid Usage (Implicit)>VUID-VkPhysicalDeviceRayTracingPipelineFeaturesKHR-sType-sType sType must be  See Alsoq, YvulkanmaxPipelineRayPayloadSize is the maximum payload size in bytes used by any shader in the pipeline.YvulkanmaxPipelineRayHitAttributeSize is the maximum attribute structure size in bytes used by any shader in the pipeline.VUID-VkRayTracingPipelineInterfaceCreateInfoKHR-maxPipelineRayHitAttributeSize-03605 maxPipelineRayHitAttributeSize must be less than or equal to ::maxRayHitAttributeSizeYvulkanwidth0 is the width of the ray trace query dimensions.Yvulkanheight- is height of the ray trace query dimensions.Yvulkandepth, is depth of the ray trace query dimensions.Yvulkan deviceAddress, is the device address (as returned by the c  command) at which the region starts, or zero if the region is unused.Yvulkanstride1 is the byte stride between consecutive elements.Yvulkansize0 is the size in bytes of the region starting at  deviceAddress.YvulkanshaderGroupHandleSize+ is the size in bytes of the shader header.Yvulkanlimits-maxRayRecursionDepth maxRayRecursionDepth is the maximum number of levels of ray recursion allowed in a trace command.YvulkanmaxShaderGroupStride is the maximum stride in bytes allowed between shader groups in the shader binding table.YvulkanshaderGroupBaseAlignment is the required> alignment in bytes for the base of the shader binding table.Yvulkan"shaderGroupHandleCaptureReplaySize is the number of bytes for the information required to do capture and replay for shader group handles.YvulkanmaxRayDispatchInvocationCount is the maximum number of ray generation shader invocations which may be produced by a single Z or Z command.YvulkanshaderGroupHandleAlignment is the required9 alignment in bytes for each shader binding table entry.YvulkanmaxRayHitAttributeSize< is the maximum size in bytes for a ray attribute structureYvulkanpNext is NULL6 or a pointer to a structure extending this structure.Zvulkanflags is a bitmask of 0 specifying how the pipeline will be generated.ZvulkanpStages is a pointer to an array of  stageCount  structures describing the set of the shader stages to be included in the ray tracing pipeline.ZvulkanpGroups is a pointer to an array of  groupCount  structures describing the set of the shader stages to be included in each shader group in the ray tracing pipeline.ZvulkanmaxPipelineRayRecursionDepth is the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-recursion-depthmaximum recursion depth' of shaders executed by this pipeline.Zvulkan pLibraryInfo is a pointer to a 3 structure defining pipeline libraries to include.ZvulkanpLibraryInterface is a pointer to a  structure defining additional information when using pipeline libraries.Zvulkan pDynamicState is a pointer to a  structure, and is used to indicate which properties of the pipeline state object are dynamic and can7 be changed independently of the pipeline state. This can be NULL>, which means no state in the pipeline is considered dynamic.Zvulkanlayout is the description of binding locations used by both the pipeline and descriptor sets used with the pipeline.ZvulkanbasePipelineHandle is a pipeline to derive from.ZvulkanbasePipelineIndex is an index into the  pCreateInfos0 parameter to use as a pipeline to derive from.Zvulkantype6 is the type of hit group specified in this structure.Zvulkan generalShader is the index of the ray generation, miss, or callable shader from ::pStages' in the group if the shader group has type of Z, and , otherwise.ZvulkanclosestHitShader7 is the optional index of the closest hit shader from ::pStages' in the group if the shader group has type of Z or Z, and , otherwise.Zvulkan anyHitShader3 is the optional index of the any-hit shader from ::pStages' in the group if the shader group has type of Z or Z, and , otherwise.ZvulkanintersectionShader/ is the index of the intersection shader from ::pStages' in the group if the shader group has type of Z, and , otherwise.ZvulkanpShaderGroupCaptureReplayHandle is an optional pointer to replay information for this shader group. Ignored if ::0rayTracingPipelineShaderGroupHandleCaptureReplay is /.ZvulkanZ. uses the shader specified in the group with ::intersectionShaderZvulkanZ. uses the shader specified in the group with :: anyHitShaderZvulkanZ. uses the shader specified in the group with ::closestHitShaderZvulkanZ. uses the shader specified in the group with :: generalShaderZvulkanZ specifies a shader group that only intersects with custom geometry and must% contain an intersection shader and may* contain closest hit and any-hit shaders.ZvulkanZ8 specifies a shader group that only hits triangles and must not contain an intersection shader, only closest hit and any-hit shaders.ZvulkanZ* indicates a shader group with a single ', ', or ' shader in it.Zvulkan5vkCmdTraceRaysKHR - Initialize a ray tracing dispatch Description8When the command is executed, a ray generation group of width  height  depth rays is assembled. Valid Usage&VUID-vkCmdTraceRaysKHR-magFilter-04553 If a 0  created with  magFilter or  minFilter equal to   and  compareEnable equal to / is used to sample a 0> as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain <'VUID-vkCmdTraceRaysKHR-mipmapMode-04770 If a 0  created with  mipmapMode equal to   and  compareEnable equal to / is used to sample a 0> as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain !VUID-vkCmdTraceRaysKHR-None-02691 If a 0 is accessed using atomic operations as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain  !VUID-vkCmdTraceRaysKHR-None-02692 If a 0 is sampled with  > as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain  (VUID-vkCmdTraceRaysKHR-filterCubic-02694 Any 0 being sampled with  " as a result of this command must have a   and format that supports cubic filtering, as specified by :: filterCubic returned by U .VUID-vkCmdTraceRaysKHR-filterCubicMinmax-02695 Any 0 being sampled with  + with a reduction mode of either   or  " as a result of this command must have a   and format that supports cubic filtering together with minmax filtering, as specified by ::filterCubicMinmax returned by U "VUID-vkCmdTraceRaysKHR-flags-02696 Any 0 created with a 1::flags containing * sampled as a result of this command must only be sampled using a   of  !VUID-vkCmdTraceRaysKHR-None-02697 For each set n% that is statically used by the  bound to the pipeline bind point used by this command, a descriptor set must have been bound to n. at the same pipeline bind point, with a ~! that is compatible for set n , with the ~! used to create the current , as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???!VUID-vkCmdTraceRaysKHR-None-02698< For each push constant that is statically used by the  bound to the pipeline bind point used by this command, a push constant value must= have been set for the same pipeline bind point, with a ~6 that is compatible for push constants, with the ~! used to create the current , as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???!VUID-vkCmdTraceRaysKHR-None-02699 Descriptors in each bound descriptor set, specified via  , must7 be valid if they are statically used by the ; bound to the pipeline bind point used by this command!VUID-vkCmdTraceRaysKHR-None-02700 A valid pipeline must> be bound to the pipeline bind point used by this command*VUID-vkCmdTraceRaysKHR-commandBuffer-02701 If the  object bound to the pipeline bind point used by this command requires any dynamic state, that state must) have been set or inherited (if the  VK_NV_inherited_viewport_scissor extension is enabled) for  commandBuffer, and done so after any previously bound pipeline with the corresponding state not specified as dynamic!VUID-vkCmdTraceRaysKHR-None-02859 There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the  object bound to the pipeline bind point used by this command, since that pipeline was bound!VUID-vkCmdTraceRaysKHR-None-02702 If the  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must% not be used to sample from any 0 with a 0 of the type  ,  ,  ,   or  , in any shader stage!VUID-vkCmdTraceRaysKHR-None-02703 If the  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj# in their name, in any shader stage!VUID-vkCmdTraceRaysKHR-None-02704 If the  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions that includes a LOD bias or any offset values, in any shader stage!VUID-vkCmdTraceRaysKHR-None-02705 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the  object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point!VUID-vkCmdTraceRaysKHR-None-02706 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the  object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point*VUID-vkCmdTraceRaysKHR-commandBuffer-02707 If  commandBuffer is an unprotected command buffer, any resource accessed by the  object bound to the pipeline bind point used by this command must not be a protected resource!VUID-vkCmdTraceRaysKHR-None-04115 If a 0 is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction must have at least as many components as the image view@s format)VUID-vkCmdTraceRaysKHR-OpImageWrite-04469 If a 0  is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction must have at least as many components as the buffer view@s format(VUID-vkCmdTraceRaysKHR-SampledType-04470 If a 0 with a  that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64(VUID-vkCmdTraceRaysKHR-SampledType-04471 If a 0 with a  that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32(VUID-vkCmdTraceRaysKHR-SampledType-04472 If a 0  with a  that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64(VUID-vkCmdTraceRaysKHR-SampledType-04473 If a 0  with a  that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 324VUID-vkCmdTraceRaysKHR-sparseImageInt64Atomics-04474 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, 0$ objects created with the   flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command4VUID-vkCmdTraceRaysKHR-sparseImageInt64Atomics-04475 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, 0 $ objects created with the   flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command!VUID-vkCmdTraceRaysKHR-None-034296 Any shader group handle referenced by this call must have been queried from the currently bound ray tracing pipeline9VUID-vkCmdTraceRaysKHR-maxPipelineRayRecursionDepth-03679 This command must not cause a shader call instruction to be executed from a shader invocation with a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-recursion-depthrecursion depth greater than the value of maxPipelineRayRecursionDepth3 used to create the bound ray tracing pipeline6VUID-vkCmdTraceRaysKHR-pRayGenShaderBindingTable-03680 If the buffer from which (pRayGenShaderBindingTable->deviceAddress( was queried is non-sparse then it must7 be bound completely and contiguously to a single 0  object6VUID-vkCmdTraceRaysKHR-pRayGenShaderBindingTable-03681 The buffer from which the (pRayGenShaderBindingTable->deviceAddress is queried must! have been created with the  usage flag6VUID-vkCmdTraceRaysKHR-pRayGenShaderBindingTable-03682 (pRayGenShaderBindingTable->deviceAddress must be a multiple of ::shaderGroupBaseAlignment!VUID-vkCmdTraceRaysKHR-size-04023 The size member of pRayGenShaderBindingTable must be equal to its stride member4VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-03683 If the buffer from which &pMissShaderBindingTable->deviceAddress( was queried is non-sparse then it must7 be bound completely and contiguously to a single 0  object4VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-03684 The buffer from which the &pMissShaderBindingTable->deviceAddress is queried must! have been created with the  usage flag4VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-03685 &pMissShaderBindingTable->deviceAddress must be a multiple of ::shaderGroupBaseAlignment#VUID-vkCmdTraceRaysKHR-stride-03686 The stride member of pMissShaderBindingTable must be a multiple of ::shaderGroupHandleAlignment#VUID-vkCmdTraceRaysKHR-stride-04029 The stride member of pMissShaderBindingTable must be less than or equal to ::maxShaderGroupStride3VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-03687 If the buffer from which %pHitShaderBindingTable->deviceAddress( was queried is non-sparse then it must7 be bound completely and contiguously to a single 0  object3VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-03688 The buffer from which the %pHitShaderBindingTable->deviceAddress is queried must! have been created with the  usage flag3VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-03689 %pHitShaderBindingTable->deviceAddress must be a multiple of ::shaderGroupBaseAlignment#VUID-vkCmdTraceRaysKHR-stride-03690 The stride member of pHitShaderBindingTable must be a multiple of ::shaderGroupHandleAlignment#VUID-vkCmdTraceRaysKHR-stride-04035 The stride member of pHitShaderBindingTable must be less than or equal to ::maxShaderGroupStride8VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-03691 If the buffer from which *pCallableShaderBindingTable->deviceAddress( was queried is non-sparse then it must7 be bound completely and contiguously to a single 0  object8VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-03692 The buffer from which the *pCallableShaderBindingTable->deviceAddress is queried must! have been created with the  usage flag8VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-03693 *pCallableShaderBindingTable->deviceAddress must be a multiple of ::shaderGroupBaseAlignment#VUID-vkCmdTraceRaysKHR-stride-03694 The stride member of pCallableShaderBindingTable must be a multiple of ::shaderGroupHandleAlignment#VUID-vkCmdTraceRaysKHR-stride-04041 The stride member of pCallableShaderBindingTable must be less than or equal to ::maxShaderGroupStride"VUID-vkCmdTraceRaysKHR-flags-03696 If the currently bound ray tracing pipeline was created with flags that included  , the  deviceAddress member of pHitShaderBindingTable must not be zero"VUID-vkCmdTraceRaysKHR-flags-03697 If the currently bound ray tracing pipeline was created with flags that included  , the  deviceAddress member of pHitShaderBindingTable must not be zero"VUID-vkCmdTraceRaysKHR-flags-03511 If the currently bound ray tracing pipeline was created with flags that included -, the shader group handle identified by pMissShaderBindingTable must not be set to zero"VUID-vkCmdTraceRaysKHR-flags-03512 If the currently bound ray tracing pipeline was created with flags that included , entries in pHitShaderBindingTable accessed as a result of this command in order to execute an any-hit shader must not be set to zero"VUID-vkCmdTraceRaysKHR-flags-03513 If the currently bound ray tracing pipeline was created with flags that included , entries in pHitShaderBindingTable accessed as a result of this command in order to execute a closest hit shader must not be set to zero"VUID-vkCmdTraceRaysKHR-flags-03514 If the currently bound ray tracing pipeline was created with flags that included , entries in pHitShaderBindingTable accessed as a result of this command in order to execute an intersection shader must not be set to zero3VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-04735/ Any non-zero hit shader group entries in pHitShaderBindingTable3 accessed by this call from a geometry with a  geometryType of  must have been created with Z3VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-04736/ Any non-zero hit shader group entries in pHitShaderBindingTable3 accessed by this call from a geometry with a  geometryType of  must have been created with Z*VUID-vkCmdTraceRaysKHR-commandBuffer-04625  commandBuffer must' not be a protected command buffer"VUID-vkCmdTraceRaysKHR-width-03626 width must$ be less than or equal to  ::maxComputeWorkGroupCount[0]   ::maxComputeWorkGroupSize[0]#VUID-vkCmdTraceRaysKHR-height-03627 height must$ be less than or equal to  ::maxComputeWorkGroupCount[1]   ::maxComputeWorkGroupSize[1]"VUID-vkCmdTraceRaysKHR-depth-03628 depth must$ be less than or equal to  ::maxComputeWorkGroupCount[2]   ::maxComputeWorkGroupSize[2]"VUID-vkCmdTraceRaysKHR-width-03629 width  height  depth must be less than or equal to ::maxRayDispatchInvocationCountValid Usage (Implicit).VUID-vkCmdTraceRaysKHR-commandBuffer-parameter  commandBuffer must be a valid  handle:VUID-vkCmdTraceRaysKHR-pRaygenShaderBindingTable-parameter pRaygenShaderBindingTable must$ be a valid pointer to a valid  structure8VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-parameter pMissShaderBindingTable must$ be a valid pointer to a valid  structure7VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-parameter pHitShaderBindingTable must$ be a valid pointer to a valid  structure be less than or equal to the number of shader groups in pipeline8VUID-vkGetRayTracingShaderGroupHandlesKHR-dataSize-02420 dataSize must be at least ::shaderGroupHandleSize   groupCount8VUID-vkGetRayTracingShaderGroupHandlesKHR-pipeline-03482 pipeline must! have not been created with  Valid Usage (Implicit):VUID-vkGetRayTracingShaderGroupHandlesKHR-device-parameter device must be a valid  handleVUID-vkGetRayTracingShaderGroupHandlesKHR-dataSize-arraylength dataSize must be greater than 09VUID-vkGetRayTracingShaderGroupHandlesKHR-pipeline-parent pipeline must6 have been created, allocated, or retrieved from device Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, ZvulkanvkGetRayTracingCaptureReplayShaderGroupHandlesKHR - Query ray tracing capture replay pipeline shader group handles Valid UsageVUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-04620 pipeline must be a ray tracing pipelineVUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-firstGroup-04051  firstGroup must2 be less than the number of shader groups in pipelineVUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-firstGroup-03483 The sum of  firstGroup and  groupCount must> be less than or equal to the number of shader groups in pipelineVUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-dataSize-03484 dataSize must be at least ::"shaderGroupHandleCaptureReplaySize   groupCountVUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-rayTracingPipelineShaderGroupHandleCaptureReplay-03606 ::0rayTracingPipelineShaderGroupHandleCaptureReplay must! be enabled to call this functionVUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-03607 pipeline must have been created with a flags that included Valid Usage (Implicit)VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-device-parameter device must be a valid  handleVUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-parameter pipeline must be a valid  handleVUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pData-parameter pData must# be a valid pointer to an array of dataSize bytesVUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-dataSize-arraylength dataSize must be greater than 0VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-parent pipeline must6 have been created, allocated, or retrieved from device Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, ZvulkanvkCreateRayTracingPipelinesKHR - Creates a new ray tracing pipeline object DescriptionThe  error is returned if the implementation is unable to re-use the shader group handles provided in ::pShaderGroupCaptureReplayHandle when ::0rayTracingPipelineShaderGroupHandleCaptureReplay is enabled. Valid Usage/VUID-vkCreateRayTracingPipelinesKHR-flags-03415 If the flags member of any element of  pCreateInfos contains the  flag, and the basePipelineIndex) member of that same element is not -1, basePipelineIndex must" be less than the index into  pCreateInfos! that corresponds to that element/VUID-vkCreateRayTracingPipelinesKHR-flags-03416 If the flags member of any element of  pCreateInfos contains the  flag, the base pipeline must! have been created with the  flag set/VUID-vkCreateRayTracingPipelinesKHR-flags-03816 flags must not contain the K  flag7VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-02903 If  pipelineCache was created with , host access to  pipelineCache must be https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-threadingbehaviorexternally synchronized;VUID-vkCreateRayTracingPipelinesKHR-deferredOperation-03677 If deferredOperation is not  , it must be a valid  object;VUID-vkCreateRayTracingPipelinesKHR-deferredOperation-03678 Any previous deferred operation that was associated with deferredOperation must be complete as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain >/VUID-vkCmdTraceRaysIndirectKHR-mipmapMode-04770 If a 0  created with  mipmapMode equal to   and  compareEnable equal to / is used to sample a 0> as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain )VUID-vkCmdTraceRaysIndirectKHR-None-02691 If a 0 is accessed using atomic operations as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain  )VUID-vkCmdTraceRaysIndirectKHR-None-02692 If a 0 is sampled with  > as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain  0VUID-vkCmdTraceRaysIndirectKHR-filterCubic-02694 Any 0 being sampled with  " as a result of this command must have a   and format that supports cubic filtering, as specified by :: filterCubic returned by U 6VUID-vkCmdTraceRaysIndirectKHR-filterCubicMinmax-02695 Any 0 being sampled with  + with a reduction mode of either   or  " as a result of this command must have a   and format that supports cubic filtering together with minmax filtering, as specified by ::filterCubicMinmax returned by U *VUID-vkCmdTraceRaysIndirectKHR-flags-02696 Any 0 created with a 1::flags containing * sampled as a result of this command must only be sampled using a   of  )VUID-vkCmdTraceRaysIndirectKHR-None-02697 For each set n% that is statically used by the  bound to the pipeline bind point used by this command, a descriptor set must have been bound to n. at the same pipeline bind point, with a ~! that is compatible for set n , with the ~! used to create the current , as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???)VUID-vkCmdTraceRaysIndirectKHR-None-02698< For each push constant that is statically used by the  bound to the pipeline bind point used by this command, a push constant value must= have been set for the same pipeline bind point, with a ~; that is compatible for push constants, with the ~! used to create the current , as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???)VUID-vkCmdTraceRaysIndirectKHR-None-02699 Descriptors in each bound descriptor set, specified via  , must7 be valid if they are statically used by the ; bound to the pipeline bind point used by this command)VUID-vkCmdTraceRaysIndirectKHR-None-02700 A valid pipeline must> be bound to the pipeline bind point used by this command2VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-02701 If the  object bound to the pipeline bind point used by this command requires any dynamic state, that state must) have been set or inherited (if the  VK_NV_inherited_viewport_scissor extension is enabled) for  commandBuffer, and done so after any previously bound pipeline with the corresponding state not specified as dynamic)VUID-vkCmdTraceRaysIndirectKHR-None-02859 There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the  object bound to the pipeline bind point used by this command, since that pipeline was bound)VUID-vkCmdTraceRaysIndirectKHR-None-02702 If the  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must% not be used to sample from any 0 with a 0 of the type  ,  ,  ,   or  , in any shader stage)VUID-vkCmdTraceRaysIndirectKHR-None-02703 If the  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj# in their name, in any shader stage)VUID-vkCmdTraceRaysIndirectKHR-None-02704 If the  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions that includes a LOD bias or any offset values, in any shader stage)VUID-vkCmdTraceRaysIndirectKHR-None-02705 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the  object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point)VUID-vkCmdTraceRaysIndirectKHR-None-02706 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the  object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point2VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-02707 If  commandBuffer is an unprotected command buffer, any resource accessed by the  object bound to the pipeline bind point used by this command must! not be a protected resource)VUID-vkCmdTraceRaysIndirectKHR-None-04115 If a 0 is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction must have at least as many components as the image view@s format1VUID-vkCmdTraceRaysIndirectKHR-OpImageWrite-04469 If a 0  is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction must have at least as many components as the buffer view@s format0VUID-vkCmdTraceRaysIndirectKHR-SampledType-04470 If a 0 with a  that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 640VUID-vkCmdTraceRaysIndirectKHR-SampledType-04471 If a 0 with a  that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 320VUID-vkCmdTraceRaysIndirectKHR-SampledType-04472 If a 0  with a  that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 640VUID-vkCmdTraceRaysIndirectKHR-SampledType-04473 If a 0  with a  that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32VUID-vkCmdTraceRaysIndirectKHR-pRayGenShaderBindingTable-03680 If the buffer from which (pRayGenShaderBindingTable->deviceAddress( was queried is non-sparse then it must7 be bound completely and contiguously to a single 0  object>VUID-vkCmdTraceRaysIndirectKHR-pRayGenShaderBindingTable-03681 The buffer from which the (pRayGenShaderBindingTable->deviceAddress is queried must! have been created with the  usage flag>VUID-vkCmdTraceRaysIndirectKHR-pRayGenShaderBindingTable-03682 (pRayGenShaderBindingTable->deviceAddress must be a multiple of ::shaderGroupBaseAlignment)VUID-vkCmdTraceRaysIndirectKHR-size-04023 The size member of pRayGenShaderBindingTable must be equal to its stride memberdeviceAddress( was queried is non-sparse then it must7 be bound completely and contiguously to a single 0  objectdeviceAddress is queried must! have been created with the  usage flagdeviceAddress must be a multiple of ::shaderGroupBaseAlignment+VUID-vkCmdTraceRaysIndirectKHR-stride-03686 The stride member of pMissShaderBindingTable must be a multiple of ::shaderGroupHandleAlignment+VUID-vkCmdTraceRaysIndirectKHR-stride-04029 The stride member of pMissShaderBindingTable must be less than or equal to ::maxShaderGroupStride;VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-03687 If the buffer from which %pHitShaderBindingTable->deviceAddress( was queried is non-sparse then it must7 be bound completely and contiguously to a single 0  object;VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-03688 The buffer from which the %pHitShaderBindingTable->deviceAddress is queried must! have been created with the  usage flag;VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-03689 %pHitShaderBindingTable->deviceAddress must be a multiple of ::shaderGroupBaseAlignment+VUID-vkCmdTraceRaysIndirectKHR-stride-03690 The stride member of pHitShaderBindingTable must be a multiple of ::shaderGroupHandleAlignment+VUID-vkCmdTraceRaysIndirectKHR-stride-04035 The stride member of pHitShaderBindingTable must be less than or equal to ::maxShaderGroupStrideVUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-03691$ If the buffer from which *pCallableShaderBindingTable->deviceAddress( was queried is non-sparse then it must7 be bound completely and contiguously to a single 0  objectVUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-03692% The buffer from which the *pCallableShaderBindingTable->deviceAddress is queried must& have been created with the  usage flagVUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-03693 *pCallableShaderBindingTable->deviceAddress must be a multiple of ::shaderGroupBaseAlignment+VUID-vkCmdTraceRaysIndirectKHR-stride-03694 The stride member of pCallableShaderBindingTable must be a multiple of ::shaderGroupHandleAlignment+VUID-vkCmdTraceRaysIndirectKHR-stride-04041 The stride member of pCallableShaderBindingTable must be less than or equal to ::maxShaderGroupStride*VUID-vkCmdTraceRaysIndirectKHR-flags-03696 If the currently bound ray tracing pipeline was created with flags that included  , the  deviceAddress member of pHitShaderBindingTable must not be zero*VUID-vkCmdTraceRaysIndirectKHR-flags-03697 If the currently bound ray tracing pipeline was created with flags that included  , the  deviceAddress member of pHitShaderBindingTable must not be zero*VUID-vkCmdTraceRaysIndirectKHR-flags-03511 If the currently bound ray tracing pipeline was created with flags that included -, the shader group handle identified by pMissShaderBindingTable must not be set to zero*VUID-vkCmdTraceRaysIndirectKHR-flags-03512 If the currently bound ray tracing pipeline was created with flags that included , entries in pHitShaderBindingTable accessed as a result of this command in order to execute an any-hit shader must not be set to zero*VUID-vkCmdTraceRaysIndirectKHR-flags-03513 If the currently bound ray tracing pipeline was created with flags that included , entries in pHitShaderBindingTable accessed as a result of this command in order to execute a closest hit shader must not be set to zero*VUID-vkCmdTraceRaysIndirectKHR-flags-03514 If the currently bound ray tracing pipeline was created with flags that included , entries in pHitShaderBindingTable accessed as a result of this command in order to execute an intersection shader must not be set to zero;VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-04735/ Any non-zero hit shader group entries in pHitShaderBindingTable3 accessed by this call from a geometry with a  geometryType of  must have been created with Z;VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-04736/ Any non-zero hit shader group entries in pHitShaderBindingTable3 accessed by this call from a geometry with a  geometryType of  must have been created with Z:VUID-vkCmdTraceRaysIndirectKHR-indirectDeviceAddress-03632 If the buffer from which indirectDeviceAddress( was queried is non-sparse then it must7 be bound completely and contiguously to a single 0  object:VUID-vkCmdTraceRaysIndirectKHR-indirectDeviceAddress-03633 The buffer from which indirectDeviceAddress was queried must& have been created with the   bit set:VUID-vkCmdTraceRaysIndirectKHR-indirectDeviceAddress-03634 indirectDeviceAddress must be a multiple of 42VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-03635  commandBuffer must" not be a protected command buffer:VUID-vkCmdTraceRaysIndirectKHR-indirectDeviceAddress-03636# All device addresses between indirectDeviceAddress and indirectDeviceAddress + sizeof( ) - 1 must9 be in the buffer device address range of the same bufferVUID-vkCmdTraceRaysIndirectKHR-rayTracingPipelineTraceRaysIndirect-03637 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipelineTraceRaysIndirect%::rayTracingPipelineTraceRaysIndirect feature must be enabledVUID-vkCmdTraceRaysIndirectKHR-rayTracingMotionBlurPipelineTraceRaysIndirect-04951> If the bound ray tracing pipeline was created with  ::-rayTracingMotionBlurPipelineTraceRaysIndirect feature must be enabledValid Usage (Implicit)6VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-parameter  commandBuffer must be a valid  handleVUID-vkCmdTraceRaysIndirectKHR-pRaygenShaderBindingTable-parameter pRaygenShaderBindingTable must$ be a valid pointer to a valid  structureVUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-parameter pMissShaderBindingTable must$ be a valid pointer to a valid  structure?VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-parameter pHitShaderBindingTable must$ be a valid pointer to a valid  structureVUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-parameter pCallableShaderBindingTable must$ be a valid pointer to a valid  structure6VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state4VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support compute operations)VUID-vkCmdTraceRaysIndirectKHR-renderpass This command must6 only be called outside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryOutside Compute See Also, p, ZvulkanvkGetRayTracingShaderGroupStackSizeKHR - Query ray tracing pipeline shader group shader stack size DescriptionThe return value is the ray tracing pipeline stack size in bytes for the specified shader as called from the specified shader group. Valid Usage:VUID-vkGetRayTracingShaderGroupStackSizeKHR-pipeline-04622 pipeline must be a ray tracing pipeline7VUID-vkGetRayTracingShaderGroupStackSizeKHR-group-03608 The value of group7 must be less than the number of shader groups in pipeline=VUID-vkGetRayTracingShaderGroupStackSizeKHR-groupShader-03609 The shader identified by  groupShader in group must not be ,Valid Usage (Implicit)VUID-vkGetRayTracingShaderGroupStackSizeKHR-pipeline-parameter pipeline must be a valid  handleVUID-vkGetRayTracingShaderGroupStackSizeKHR-groupShader-parameter  groupShader must be a valid  value;VUID-vkGetRayTracingShaderGroupStackSizeKHR-pipeline-parent pipeline must6 have been created, allocated, or retrieved from deviceSee Also, , ZvulkanvkCmdSetRayTracingPipelineStackSizeKHR - Set the dynamic stack size for a ray tracing pipeline DescriptionSee  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-pipeline-stackRay Tracing Pipeline Stack for more on computing pipelineStackSize. Valid UsageVUID-vkCmdSetRayTracingPipelineStackSizeKHR-pipelineStackSize-03610 pipelineStackSize must be large enough for any dynamic execution through the shaders in the ray tracing pipeline used by a subsequent trace callValid Usage (Implicit)VUID-vkCmdSetRayTracingPipelineStackSizeKHR-commandBuffer-parameter  commandBuffer must be a valid  handleVUID-vkCmdSetRayTracingPipelineStackSizeKHR-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateVUID-vkCmdSetRayTracingPipelineStackSizeKHR-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support compute operations6VUID-vkCmdSetRayTracingPipelineStackSizeKHR-renderpass This command must1 only be called outside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryOutside Compute See AlsoZvulkan commandBuffer is the command buffer into which the command will be recorded.vulkanpRaygenShaderBindingTable is a  that holds the shader binding table data for the ray generation shader stage.vulkanpMissShaderBindingTable is a  that holds the shader binding table data for the miss shader stage.vulkanpHitShaderBindingTable is a  that holds the shader binding table data for the hit shader stage.vulkanpCallableShaderBindingTable is a  that holds the shader binding table data for the callable shader stage.vulkanwidth0 is the width of the ray trace query dimensions.vulkanheight- is height of the ray trace query dimensions.vulkandepth, is depth of the ray trace query dimensions.Zvulkandevice; is the logical device containing the ray tracing pipeline.vulkanpipeline; is the ray tracing pipeline object containing the shaders.vulkan firstGroup is the index of the first group to retrieve a handle for from the ::pGroups or ::pGroups array.vulkan groupCount- is the number of shader handles to retrieve.vulkandataSize2 is the size in bytes of the buffer pointed to by pData.vulkanpData is a pointer to a user-allocated buffer where the results will be written.Zvulkandevice; is the logical device containing the ray tracing pipeline.vulkanpipeline; is the ray tracing pipeline object containing the shaders.vulkan firstGroup is the index of the first group to retrieve a handle for from the ::pGroups array.vulkan groupCount- is the number of shader handles to retrieve.vulkandataSize2 is the size in bytes of the buffer pointed to by pData.vulkanpData is a pointer to a user-allocated buffer where the results will be written.Zvulkandevice> is the logical device that creates the ray tracing pipelines.vulkandeferredOperation is  or the handle of a valid   https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operations-requestingrequest deferral object for this command.vulkan pipelineCache is either , indicating that pipeline caching is disabled, or the handle of a valid  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-cachepipeline cache object, in which case use of that cache is enabled for the duration of the command.vulkan pCreateInfos is a pointer to an array of  structures.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.Zvulkan commandBuffer is the command buffer into which the command will be recorded.vulkanpRaygenShaderBindingTable is a  that holds the shader binding table data for the ray generation shader stage.vulkanpMissShaderBindingTable is a  that holds the shader binding table data for the miss shader stage.vulkanpHitShaderBindingTable is a  that holds the shader binding table data for the hit shader stage.vulkanpCallableShaderBindingTable is a  that holds the shader binding table data for the callable shader stage.vulkanindirectDeviceAddress5 is a buffer device address which is a pointer to a 0 structure containing the trace ray parameters.Zvulkandevice; is the logical device containing the ray tracing pipeline.vulkanpipeline is the ray tracing pipeline object containing the shaders groups.vulkangroup+ is the index of the shader group to query.vulkan groupShader/ is the type of shader from the group to query.Zvulkan commandBuffer is the command buffer into which the command will be recorded.vulkanpipelineStackSize is the stack size to use for subsequent ray tracing trace commands.@66ZZZYZZZZYYYYYYYYYZZZZZZZYYYYZYZZZZZZZZZYYYYYYYYYYYYYYY,,YYZZZZZZZZZZZZZZZZZZZZZZZZZYZYZZZZZZZZZYYYYYYYYYYYYYYYYYYYYYYYYYYZZZYZZZZZZZYZZZZYZYZ@66,,None( #$&'(./0289:<>?&AvulkanVkWriteDescriptorSetAccelerationStructureNV - Structure specifying acceleration structure descriptor information Valid UsageVUID-VkWriteDescriptorSetAccelerationStructureNV-accelerationStructureCount-03747 accelerationStructureCount must be equal to descriptorCount in the extended structureVUID-VkWriteDescriptorSetAccelerationStructureNV-pAccelerationStructures-03748% Each acceleration structure in pAccelerationStructures must" have been created with OVUID-VkWriteDescriptorSetAccelerationStructureNV-pAccelerationStructures-03749 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor- feature is not enabled, each member of pAccelerationStructures must not be Valid Usage (Implicit), and the rest of the state identified by this structure must adhere to the pipeline linking rules described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfacesShader Interfaces chapter2VUID-VkRayTracingPipelineCreateInfoNV-layout-03427 layout must be  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency consistent$ with all shaders specified in pStages2VUID-VkRayTracingPipelineCreateInfoNV-layout-03428! The number of resources in layout accessible to each shader stage that is used by the pipeline must be less than or equal to  ::maxPerStageResources1VUID-VkRayTracingPipelineCreateInfoNV-flags-02904 flags must not include VUID-VkRayTracingPipelineCreateInfoNV-pipelineCreationCacheControl-02905 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineCreationCacheControlpipelineCreationCacheControl feature is not enabled, flags must not include  or 1VUID-VkRayTracingPipelineCreateInfoNV-stage-06232 The stage( member of at least one element of pStages must be 1VUID-VkRayTracingPipelineCreateInfoNV-flags-03456 flags must not include  =VUID-VkRayTracingPipelineCreateInfoNV-maxRecursionDepth-03457 maxRecursionDepth must be less than or equal to ::maxRecursionDepth1VUID-VkRayTracingPipelineCreateInfoNV-flags-03458 flags must not include 1VUID-VkRayTracingPipelineCreateInfoNV-flags-03459 flags must not include 1VUID-VkRayTracingPipelineCreateInfoNV-flags-03460 flags must not include 1VUID-VkRayTracingPipelineCreateInfoNV-flags-03461 flags must not include 1VUID-VkRayTracingPipelineCreateInfoNV-flags-03462 flags must not include 1VUID-VkRayTracingPipelineCreateInfoNV-flags-03463 flags must not include 1VUID-VkRayTracingPipelineCreateInfoNV-flags-03588 flags must not include 1VUID-VkRayTracingPipelineCreateInfoNV-flags-04948 flags must not include 1VUID-VkRayTracingPipelineCreateInfoNV-flags-02957 flags must not include both  and  at the same timeValid Usage (Implicit)1VUID-VkRayTracingPipelineCreateInfoNV-sType-sType sType must be   1VUID-VkRayTracingPipelineCreateInfoNV-pNext-pNext pNext must be NULL* or a pointer to a valid instance of 2VUID-VkRayTracingPipelineCreateInfoNV-sType-unique The sType" value of each struct in the pNext chain must be unique5VUID-VkRayTracingPipelineCreateInfoNV-flags-parameter flags must be a valid combination of  values7VUID-VkRayTracingPipelineCreateInfoNV-pStages-parameter pStages must# be a valid pointer to an array of  stageCount valid  structures7VUID-VkRayTracingPipelineCreateInfoNV-pGroups-parameter pGroups must# be a valid pointer to an array of  groupCount valid  structures6VUID-VkRayTracingPipelineCreateInfoNV-layout-parameter layout must be a valid ~ handle alignment in bytes for the base of the shader binding table.ZvulkanmaxGeometryCount is the maximum number of geometries in the bottom level acceleration structure.ZvulkanmaxInstanceCount is the maximum number of instances in the top level acceleration structure.ZvulkanmaxTriangleCount is the maximum number of triangles in all geometries in the bottom level acceleration structure.Zvulkan&maxDescriptorSetAccelerationStructures is the maximum number of acceleration structure descriptors that are allowed in a descriptor set.Zvulkantype8 selects the type of memory requirement being queried. [: returns the memory requirements for the object itself. [ returns the memory requirements for the scratch memory when doing a build. [ returns the memory requirements for the scratch memory when doing an update.VUID-VkAccelerationStructureMemoryRequirementsInfoNV-type-parameter type must be a valid Z valueZvulkanaccelerationStructure is the acceleration structure to be queried for memory requirements.VUID-VkAccelerationStructureMemoryRequirementsInfoNV-accelerationStructure-parameter accelerationStructure must be a valid  handleZvulkanpAccelerationStructures is a pointer to an array of > structures specifying the acceleration structures to update.ZvulkanaccelerationStructure9 is the acceleration structure to be attached to memory.Zvulkanmemory is a 0 object describing the device memory to attach.Zvulkan memoryOffset is the start offset of the region of memory that is to be bound to the acceleration structure. The number of bytes returned in the 5::size member in memory, starting from  memoryOffset? bytes, will be bound to the specified acceleration structure.ZvulkanpDeviceIndices, is a pointer to an array of device indices.Zvulkan compactedSize! is the size from the result of [ if this acceleration structure is going to be the target of a compacting copy.Zvulkaninfo is the  structure specifying further parameters of the created acceleration structure.Zvulkantype is a Z value specifying the type of acceleration structure that will be created.Zvulkanflags is a bitmask of Z specifying additional parameters of the acceleration structure.[vulkan instanceCount specifies the number of instances that will be in the new acceleration structure.[vulkan pGeometries is a pointer to an array of  geometryCount  structures containing the scene data being passed into the acceleration structure.[vulkan geometryType specifies the  which this geometry refers to.$VUID-VkGeometryNV-geometryType-03503  geometryType must be [ or [(VUID-VkGeometryNV-geometryType-parameter  geometryType must be a valid  value[vulkangeometry, contains the geometry data as described in .$VUID-VkGeometryNV-geometry-parameter geometry must be a valid  structure[vulkanflags has ' describing options for this geometry.!VUID-VkGeometryNV-flags-parameter flags must be a valid combination of  values[vulkan triangles contains triangle data if :: geometryType is [.)VUID-VkGeometryDataNV-triangles-parameter  triangles must be a valid  structure[vulkanaabbs- contains axis-aligned bounding box data if :: geometryType is [.%VUID-VkGeometryDataNV-aabbs-parameter aabbs must be a valid  structure[vulkanaabbData9 is the buffer containing axis-aligned bounding box data.[vulkannumAABBs) is the number of AABBs in this geometry.[vulkanstride) is the stride in bytes between AABBs in aabbData.[vulkanoffset- is the offset in bytes of the first AABB in aabbData.[vulkan vertexData8 is the buffer containing vertex data for this geometry.[vulkan vertexOffset is the offset in bytes within  vertexData+ containing vertex data for this geometry.[vulkan vertexCount! is the number of valid vertices.[vulkan vertexStride, is the stride in bytes between each vertex.[vulkan vertexFormat is a K/ describing the format of each vertex element.[vulkan indexData7 is the buffer containing index data for this geometry.[vulkan indexOffset is the offset in bytes within  indexData* containing index data for this geometry.[vulkan indexCount6 is the number of indices to include in this geometry.[vulkan indexType is a T& describing the format of each index.[vulkan transformData% is an optional buffer containing an Z structure defining a transformation to be applied to this geometry.[vulkantransformOffset is the offset in bytes in  transformData/ of the transform information described above.[vulkanpNext is NULL6 or a pointer to a structure extending this structure.[vulkanflags is a bitmask of 0 specifying how the pipeline will be generated.[vulkanpStages is a pointer to an array of  structures specifying the set of the shader stages to be included in the ray tracing pipeline.[vulkanpGroups is a pointer to an array of  structures describing the set of the shader stages to be included in each shader group in the ray tracing pipeline.[vulkanmaxRecursionDepth is the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-recursion-depthmaximum recursion depth' of shaders executed by this pipeline.[vulkanlayout is the description of binding locations used by both the pipeline and descriptor sets used with the pipeline.[vulkanbasePipelineHandle is a pipeline to derive from.[vulkanbasePipelineIndex is an index into the  pCreateInfos0 parameter to use as a pipeline to derive from.[vulkantype6 is the type of hit group specified in this structure.[vulkan generalShader is the index of the ray generation, miss, or callable shader from ::pStages' in the group if the shader group has type of [, and  otherwise.[vulkanclosestHitShader7 is the optional index of the closest hit shader from ::pStages' in the group if the shader group has type of [ or [, and  otherwise.[vulkan anyHitShader3 is the optional index of the any-hit shader from ::pStages' in the group if the shader group has type of [ or [, and  otherwise.[vulkanintersectionShader/ is the index of the intersection shader from ::pStages' in the group if the shader group has type of [, and  otherwise.[vulkan[ requests the memory requirement for scratch space during an update.[vulkan[ requests the memory requirement for scratch space during the initial build.[vulkan[+ requests the memory requirement for the  backing store.[vulkan5vkCompileDeferredNV - Deferred compilation of shaders Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, [vulkanvkCreateAccelerationStructureNV - Create a new acceleration structure object DescriptionSimilarly to other objects in Vulkan, the acceleration structure creation merely creates an object with a specific @shape@ as specified by the information in  and  compactedSize in  pCreateInfo. Populating the data in the object after allocating and binding memory is done with [ and [.Acceleration structure creation uses the count and type information from the geometries, but does not use the data references in the structures.Valid Usage (Implicit)5VUID-vkCreateAccelerationStructureNV-device-parameter device must be a valid  handle:VUID-vkCreateAccelerationStructureNV-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid  structure9VUID-vkCreateAccelerationStructureNV-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structureVUID-vkCreateAccelerationStructureNV-pAccelerationStructure-parameter pAccelerationStructure must be a valid pointer to a  handle Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , [vulkan=A convenience wrapper to make a compatible pair of calls to [ and [To ensure that [ is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.[vulkanvkDestroyAccelerationStructureNV - Destroy an acceleration structure object Valid UsageVUID-vkDestroyAccelerationStructureNV-accelerationStructure-03752+ All submitted commands that refer to accelerationStructure must have completed executionVUID-vkDestroyAccelerationStructureNV-accelerationStructure-03753 If  were provided when accelerationStructure1 was created, a compatible set of callbacks must be provided hereVUID-vkDestroyAccelerationStructureNV-accelerationStructure-03754 If no  were provided when accelerationStructure was created,  pAllocator must be NULLValid Usage (Implicit)6VUID-vkDestroyAccelerationStructureNV-device-parameter device must be a valid  handleVUID-vkDestroyAccelerationStructureNV-accelerationStructure-parameter If accelerationStructure is not , accelerationStructure must be a valid  handle:VUID-vkDestroyAccelerationStructureNV-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structureVUID-vkDestroyAccelerationStructureNV-accelerationStructure-parent If accelerationStructure is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to accelerationStructure must be externally synchronizedSee Also, , [vulkanvkGetAccelerationStructureMemoryRequirementsNV - Get acceleration structure memory requirementsValid Usage (Implicit)See Also, , [vulkanvkBindAccelerationStructureMemoryNV - Bind acceleration structure memory Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, [vulkanvkCmdCopyAccelerationStructureNV - Copy an acceleration structure Description Accesses to src and dst must be  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized with the   https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stagespipeline stage and an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type of + or + as appropriate. Valid Usage0VUID-vkCmdCopyAccelerationStructureNV-mode-03410 mode must be O or O/VUID-vkCmdCopyAccelerationStructureNV-src-04963( The source acceleration structure src must have been constructed prior to the execution of this command/VUID-vkCmdCopyAccelerationStructureNV-src-03411 If mode is O, src must! have been constructed with O in the build2VUID-vkCmdCopyAccelerationStructureNV-buffer-03718 The buffer used to create src must be bound to device memory2VUID-vkCmdCopyAccelerationStructureNV-buffer-03719 The buffer used to create dst must be bound to device memoryValid Usage (Implicit)=VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-parameter  commandBuffer must be a valid  handle3VUID-vkCmdCopyAccelerationStructureNV-dst-parameter dst must be a valid  handle3VUID-vkCmdCopyAccelerationStructureNV-src-parameter src must be a valid  handle4VUID-vkCmdCopyAccelerationStructureNV-mode-parameter mode must be a valid  value=VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state;VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support compute operations0VUID-vkCmdCopyAccelerationStructureNV-renderpass This command must1 only be called outside of a render pass instance2VUID-vkCmdCopyAccelerationStructureNV-commonparent Each of  commandBuffer, dst, and src must? have been created, allocated, or retrieved from the same Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryOutside Compute See Also, , [vulkanvkCmdWriteAccelerationStructuresPropertiesNV - Write acceleration structure result parameters to query results. Description:Accesses to any of the acceleration structures listed in pAccelerationStructures must be  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized with the   https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stagespipeline stage and an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type of +. Valid UsageVUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-03755  queryPool must have been created with a  queryType matching  queryTypeVUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-03756 The queries identified by  queryPool and  firstQuery must be  unavailableVUID-vkCmdWriteAccelerationStructuresPropertiesNV-accelerationStructure-03757 accelerationStructure must7 be bound completely and contiguously to a single  object via [VUID-vkCmdWriteAccelerationStructuresPropertiesNV-pAccelerationStructures-04958% All acceleration structures in pAccelerationStructures must< have been built prior to the execution of this commandVUID-vkCmdWriteAccelerationStructuresPropertiesNV-pAccelerationStructures-06215% All acceleration structures in pAccelerationStructures must have been built with O if  queryType is VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryType-06216  queryType must be Valid Usage (Implicit)VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-parameter  commandBuffer must be a valid  handleVUID-vkCmdWriteAccelerationStructuresPropertiesNV-pAccelerationStructures-parameter pAccelerationStructures must( be a valid pointer to an array of accelerationStructureCount valid  handlesVUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryType-parameter  queryType must be a valid ` valueVUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-parameter  queryPool must be a valid } handleVUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateVUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support compute operationsVUID-vkCmdWriteAccelerationStructuresPropertiesNV-commonparent Each of  commandBuffer,  queryPool, and the elements of pAccelerationStructures must? have been created, allocated, or retrieved from the same Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryOutside Compute See Also, , }, `[vulkanvkCmdBuildAccelerationStructureNV - Build an acceleration structure Description Accesses to dst, src, and scratch must be  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized with the   https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stagespipeline stage and an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type of + or +. Valid Usage:VUID-vkCmdBuildAccelerationStructureNV-geometryCount-02241  geometryCount must be less than or equal to ::maxGeometryCount 0VUID-vkCmdBuildAccelerationStructureNV-dst-02488 dst must( have been created with compatible  where ::type and ::flags are identical, :: instanceCount and :: geometryCount for dst are greater than or equal to the build size and each geometry in :: pGeometries for dst has greater than or equal to the number of vertices, indices, and AABBs3VUID-vkCmdBuildAccelerationStructureNV-update-02489 If update is , src must not be 3VUID-vkCmdBuildAccelerationStructureNV-update-02490 If update is , src must1 have previously been constructed with [ set in ::flags in the original build3VUID-vkCmdBuildAccelerationStructureNV-update-02491 If update is , the size member of the 5- structure returned from a call to [ with ::accelerationStructure set to dst and ::type set to [ must& be less than or equal to the size of scratch minus  scratchOffset3VUID-vkCmdBuildAccelerationStructureNV-update-02492 If update is , the size member of the 5- structure returned from a call to [ with ::accelerationStructure set to dst and ::type set to [ must& be less than or equal to the size of scratch minus  scratchOffset4VUID-vkCmdBuildAccelerationStructureNV-scratch-03522 scratch must have been created with [ usage flag9VUID-vkCmdBuildAccelerationStructureNV-instanceData-03523 If  instanceData is not ,  instanceData must have been created with [ usage flagVUID-vkCmdBuildAccelerationStructureNV-accelerationStructureReference-03786 Each ::accelerationStructureReference value in  instanceData must be a valid device address containing a value obtained from [3VUID-vkCmdBuildAccelerationStructureNV-update-03524 If update is 0, then objects that were previously active must" not be made inactive as per https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims3VUID-vkCmdBuildAccelerationStructureNV-update-03525 If update is 2, then objects that were previously inactive must not be made active as per https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims3VUID-vkCmdBuildAccelerationStructureNV-update-03526 If update is , the src and dst objects must0 either be the same object or not have any https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasingmemory aliasingValid Usage (Implicit)>VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-parameter  commandBuffer must be a valid  handle 6VUID-vkCmdBuildAccelerationStructureNV-pInfo-parameter pInfo must be a valid pointer to a valid  structure=VUID-vkCmdBuildAccelerationStructureNV-instanceData-parameter If  instanceData is not ,  instanceData must be a valid  handle4VUID-vkCmdBuildAccelerationStructureNV-dst-parameter dst must be a valid  handle4VUID-vkCmdBuildAccelerationStructureNV-src-parameter If src is not , src must be a valid  handle8VUID-vkCmdBuildAccelerationStructureNV-scratch-parameter scratch must be a valid  handle>VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain 2&VUID-vkCmdTraceRaysNV-mipmapMode-04770 If a 0  created with  mipmapMode equal to   and  compareEnable equal to  is used to sample a 0> as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain  VUID-vkCmdTraceRaysNV-None-02691 If a 0 is accessed using atomic operations as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain   VUID-vkCmdTraceRaysNV-None-02692 If a 0 is sampled with  > as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain  'VUID-vkCmdTraceRaysNV-filterCubic-02694 Any 0 being sampled with  " as a result of this command must have a   and format that supports cubic filtering, as specified by :: filterCubic returned by U -VUID-vkCmdTraceRaysNV-filterCubicMinmax-02695 Any 0 being sampled with  + with a reduction mode of either   or  " as a result of this command must have a   and format that supports cubic filtering together with minmax filtering, as specified by ::filterCubicMinmax returned by U !VUID-vkCmdTraceRaysNV-flags-02696 Any 0 created with a 1::flags containing * sampled as a result of this command must only be sampled using a   of   VUID-vkCmdTraceRaysNV-None-02697 For each set n% that is statically used by the  bound to the pipeline bind point used by this command, a descriptor set must have been bound to n. at the same pipeline bind point, with a ~! that is compatible for set n , with the ~! used to create the current , as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility??? VUID-vkCmdTraceRaysNV-None-02698< For each push constant that is statically used by the  bound to the pipeline bind point used by this command, a push constant value must= have been set for the same pipeline bind point, with a ~6 that is compatible for push constants, with the ~! used to create the current , as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility??? VUID-vkCmdTraceRaysNV-None-02699 Descriptors in each bound descriptor set, specified via  , must7 be valid if they are statically used by the ; bound to the pipeline bind point used by this command VUID-vkCmdTraceRaysNV-None-02700 A valid pipeline must> be bound to the pipeline bind point used by this command)VUID-vkCmdTraceRaysNV-commandBuffer-02701 If the  object bound to the pipeline bind point used by this command requires any dynamic state, that state must) have been set or inherited (if the  VK_NV_inherited_viewport_scissor extension is enabled) for  commandBuffer, and done so after any previously bound pipeline with the corresponding state not specified as dynamic VUID-vkCmdTraceRaysNV-None-02859 There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the  object bound to the pipeline bind point used by this command, since that pipeline was bound VUID-vkCmdTraceRaysNV-None-02702 If the  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must% not be used to sample from any 0 with a 0 of the type  ,  ,  ,   or  , in any shader stage VUID-vkCmdTraceRaysNV-None-02703 If the  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj# in their name, in any shader stage VUID-vkCmdTraceRaysNV-None-02704 If the  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions that includes a LOD bias or any offset values, in any shader stage VUID-vkCmdTraceRaysNV-None-02705 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the  object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point VUID-vkCmdTraceRaysNV-None-02706 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the  object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point)VUID-vkCmdTraceRaysNV-commandBuffer-02707 If  commandBuffer is an unprotected command buffer, any resource accessed by the  object bound to the pipeline bind point used by this command must not be a protected resource VUID-vkCmdTraceRaysNV-None-04115 If a 0 is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction must have at least as many components as the image view@s format(VUID-vkCmdTraceRaysNV-OpImageWrite-04469 If a 0  is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction must have at least as many components as the buffer view@s format'VUID-vkCmdTraceRaysNV-SampledType-04470 If a 0 with a K that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64'VUID-vkCmdTraceRaysNV-SampledType-04471 If a 0 with a K that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32'VUID-vkCmdTraceRaysNV-SampledType-04472 If a 0  with a K that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64'VUID-vkCmdTraceRaysNV-SampledType-04473 If a 0  with a K that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 323VUID-vkCmdTraceRaysNV-sparseImageInt64Atomics-04474 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, 0$ objects created with the   flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command3VUID-vkCmdTraceRaysNV-sparseImageInt64Atomics-04475 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, $ objects created with the   flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command VUID-vkCmdTraceRaysNV-None-034296 Any shader group handle referenced by this call must have been queried from the currently bound ray tracing pipeline)VUID-vkCmdTraceRaysNV-commandBuffer-04624  commandBuffer must' not be a protected command buffer-VUID-vkCmdTraceRaysNV-maxRecursionDepth-03625 This command must not cause a pipeline trace ray instruction to be executed from a shader invocation with a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-recursion-depthrecursion depth greater than the value of maxRecursionDepth3 used to create the bound ray tracing pipeline:VUID-vkCmdTraceRaysNV-raygenShaderBindingTableBuffer-04042 If raygenShaderBindingTableBuffer is non-sparse then it must< be bound completely and contiguously to a single  object5VUID-vkCmdTraceRaysNV-raygenShaderBindingOffset-02455 raygenShaderBindingOffset must be less than the size of raygenShaderBindingTableBuffer5VUID-vkCmdTraceRaysNV-raygenShaderBindingOffset-02456 raygenShaderBindingOffset must be a multiple of ::shaderGroupBaseAlignment8VUID-vkCmdTraceRaysNV-missShaderBindingTableBuffer-04043 If missShaderBindingTableBuffer is non-sparse then it must< be bound completely and contiguously to a single  object3VUID-vkCmdTraceRaysNV-missShaderBindingOffset-02457 missShaderBindingOffset must be less than the size of missShaderBindingTableBuffer3VUID-vkCmdTraceRaysNV-missShaderBindingOffset-02458 missShaderBindingOffset must be a multiple of ::shaderGroupBaseAlignment7VUID-vkCmdTraceRaysNV-hitShaderBindingTableBuffer-04044 If hitShaderBindingTableBuffer is non-sparse then it must< be bound completely and contiguously to a single  object2VUID-vkCmdTraceRaysNV-hitShaderBindingOffset-02459 hitShaderBindingOffset must be less than the size of hitShaderBindingTableBuffer2VUID-vkCmdTraceRaysNV-hitShaderBindingOffset-02460 hitShaderBindingOffset must be a multiple of ::shaderGroupBaseAlignmentVUID-vkCmdTraceRaysNV-raygenShaderBindingTableBuffer-parameter raygenShaderBindingTableBuffer must be a valid  handleVUID-vkCreateRayTracingPipelinesNV-createInfoCount-arraylength createInfoCount must be greater than 07VUID-vkCreateRayTracingPipelinesNV-pipelineCache-parent If  pipelineCache is a valid handle, it must6 have been created, allocated, or retrieved from device Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , , [vulkan=A convenience wrapper to make a compatible pair of calls to [ and WTo ensure that W is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument. [vulkandevice; is the logical device containing the ray tracing pipeline.)VUID-vkCompileDeferredNV-device-parameter device must be a valid  handlevulkanpipeline; is the ray tracing pipeline object containing the shaders.'VUID-vkCompileDeferredNV-pipeline-04621 pipeline must be a ray tracing pipeline'VUID-vkCompileDeferredNV-pipeline-02237 pipeline must have been created with +VUID-vkCompileDeferredNV-pipeline-parameter pipeline must be a valid  handle(VUID-vkCompileDeferredNV-pipeline-parent pipeline must2 have been created, allocated, or retrieved from devicevulkanshader' is the index of the shader to compile.%VUID-vkCompileDeferredNV-shader-02238 shader must3 not have been called as a deferred compile before[vulkandevice6 is the logical device that creates the buffer object.vulkan pCreateInfo is a pointer to a  structure containing parameters affecting creation of the acceleration structure.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.[vulkandevice0 is the logical device that destroys the buffer.vulkanaccelerationStructure* is the acceleration structure to destroy.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.[vulkandevice is the logical device on which the acceleration structure was created.VUID-vkGetAccelerationStructureMemoryRequirementsNV-device-parameter device must be a valid  handlevulkanpInfo is a pointer to a  structure specifying the acceleration structure to get memory requirements for.VUID-vkGetAccelerationStructureMemoryRequirementsNV-pInfo-parameter pInfo must be a valid pointer to a valid  structure[vulkandevice is the logical device that owns the acceleration structures and memory.9VUID-vkBindAccelerationStructureMemoryNV-device-parameter device must be a valid  handlevulkan pBindInfos is a pointer to an array of  structures describing acceleration structures and memory to bind.=VUID-vkBindAccelerationStructureMemoryNV-pBindInfos-parameter  pBindInfos must# be a valid pointer to an array of  bindInfoCount valid  structures[vulkan commandBuffer is the command buffer into which the command will be recorded.vulkandst3 is the target acceleration structure for the copy.vulkansrc3 is the source acceleration structure for the copy.vulkanmode is a  value specifying additional operations to perform during the copy.[vulkan commandBuffer is the command buffer into which the command will be recorded.vulkanpAccelerationStructures is a pointer to an array of existing previously built acceleration structures.vulkan queryType is a `; value specifying the type of queries managed by the pool.vulkan queryPool= is the query pool that will manage the results of the query.vulkan firstQuery is the first query index within the query pool that will contain the accelerationStructureCount number of results.[ vulkan commandBuffer is the command buffer into which the command will be recorded.vulkanpInfo contains the shared information for the acceleration structure@s structure.vulkan instanceData' is the buffer containing an array of > structures defining acceleration structures. This parameter must be NULL* for bottom level acceleration structures.vulkaninstanceOffset3 is the offset in bytes (relative to the start of  instanceData() at which the instance data is located.vulkanupdate! specifies whether to update the dst* acceleration structure with the data in src.vulkandst is a pointer to the target acceleration structure for the build.vulkansrc is a pointer to an existing acceleration structure that is to be used to update the dst acceleration structure.vulkanscratch is the 4 that will be used as scratch memory for the build.vulkan scratchOffset2 is the offset in bytes relative to the start of scratch' that will be used as a scratch memory.[vulkan commandBuffer is the command buffer into which the command will be recorded.vulkanraygenShaderBindingTableBuffer is the buffer object that holds the shader binding table data for the ray generation shader stage.vulkanraygenShaderBindingOffset& is the offset in bytes (relative to raygenShaderBindingTableBuffer9) of the ray generation shader being used for the trace.vulkanmissShaderBindingTableBuffer is the buffer object that holds the shader binding table data for the miss shader stage.vulkanmissShaderBindingOffset& is the offset in bytes (relative to missShaderBindingTableBuffer/) of the miss shader being used for the trace.vulkanmissShaderBindingStride> is the size in bytes of each shader binding table record in missShaderBindingTableBuffer.vulkanhitShaderBindingTableBuffer is the buffer object that holds the shader binding table data for the hit shader stages.vulkanhitShaderBindingOffset& is the offset in bytes (relative to hitShaderBindingTableBuffer4) of the hit shader group being used for the trace.vulkanhitShaderBindingStride> is the size in bytes of each shader binding table record in hitShaderBindingTableBuffer. vulkan callableShaderBindingTableBuffer is the buffer object that holds the shader binding table data for the callable shader stage. vulkancallableShaderBindingOffset& is the offset in bytes (relative to  callableShaderBindingTableBuffer3) of the callable shader being used for the trace. vulkancallableShaderBindingStride> is the size in bytes of each shader binding table record in  callableShaderBindingTableBuffer. vulkanwidth0 is the width of the ray trace query dimensions. vulkanheight- is height of the ray trace query dimensions.vulkandepth, is depth of the ray trace query dimensions.[vulkandevice= is the logical device that owns the acceleration structures.8VUID-vkGetAccelerationStructureHandleNV-device-parameter device must be a valid  handlevulkanaccelerationStructure is the acceleration structure.VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-02787 accelerationStructure must3 be bound completely and contiguously to a single  object via [VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-parameter accelerationStructure must be a valid  handleVUID-vkGetAccelerationStructureHandleNV-accelerationStructure-parent accelerationStructure must2 have been created, allocated, or retrieved from devicevulkandataSize2 is the size in bytes of the buffer pointed to by pData.6VUID-vkGetAccelerationStructureHandleNV-dataSize-02240 dataSize must be large enough to contain the result of the query, as described above is the logical device that creates the ray tracing pipelines.vulkan pipelineCache is either , indicating that pipeline caching is disabled, or the handle of a valid  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-cachepipeline cache object, in which case use of that cache is enabled for the duration of the command.vulkan pCreateInfos is a pointer to an array of  structures.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.@MNNNNNNNNNNNNMMMMMMMMMMMMMMMMMMMMMMMMMMNOOONOOONOOOOOONOOOONOONOOOOOOOOOOOOOOOOOOOOOOYZZZZZ[[[[[[[[[[[[[[[ZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[ZZZZZZZZZZZ[[ZZZ,,OZZZZZZZZZZZZZZZZZ[[[Z[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ZZZ[[ZZZZZZZZZZZZZZZZZZZZZZZ[[[Z[[[ZZZZZZZZZZZZZZ[Z[@OOOOOOOOOOOOOOOOOOZMNNNNNNNNNNNNMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNMMMMMMMMMMMMMMMMMMMMMMMMMMNOOOOOOOONOOOONOOOOOOOOOOOONOOOOOOOONOOOOOONOOOOOOYZZZZZZO,,None( #$&'(./0289:<>?'vulkanVkPhysicalDeviceExtendedDynamicStateFeaturesEXT - Structure describing what extended dynamic state can be usedMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, \vulkanfeatures-extendedDynamicState extendedDynamicState indicates that the implementation supports the following dynamic states:     \vulkan0vkCmdSetCullModeEXT - Set the cull mode property Valid Usage#VUID-vkCmdSetCullModeEXT-None-03384 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicStateextendedDynamicState feature must be enabledValid Usage (Implicit)0VUID-vkCmdSetCullModeEXT-commandBuffer-parameter  commandBuffer must be a valid  handle+VUID-vkCmdSetCullModeEXT-cullMode-parameter cullMode must% be a valid combination of E values0VUID-vkCmdSetCullModeEXT-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state.VUID-vkCmdSetCullModeEXT-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth  Graphics See Also, F\vulkan2vkCmdSetFrontFaceEXT - Set the front face property Valid Usage$VUID-vkCmdSetFrontFaceEXT-None-03383 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicStateextendedDynamicState feature must be enabledValid Usage (Implicit)1VUID-vkCmdSetFrontFaceEXT-commandBuffer-parameter  commandBuffer must be a valid  handle-VUID-vkCmdSetFrontFaceEXT-frontFace-parameter  frontFace must be a valid L value1VUID-vkCmdSetFrontFaceEXT-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state/VUID-vkCmdSetFrontFaceEXT-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth  Graphics See Also, L\vulkan?vkCmdSetPrimitiveTopologyEXT - Set the primitive topology state Valid Usage,VUID-vkCmdSetPrimitiveTopologyEXT-None-03347 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicStateextendedDynamicState feature must be enabledValid Usage (Implicit)9VUID-vkCmdSetPrimitiveTopologyEXT-commandBuffer-parameter  commandBuffer must be a valid  handle=VUID-vkCmdSetPrimitiveTopologyEXT-primitiveTopology-parameter primitiveTopology must be a valid [ value9VUID-vkCmdSetPrimitiveTopologyEXT-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state7VUID-vkCmdSetPrimitiveTopologyEXT-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth  Graphics See Also, [\vulkanvkCmdSetViewportWithCountEXT - Set the viewport count and viewports Valid Usage,VUID-vkCmdSetViewportWithCountEXT-None-03393 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicStateextendedDynamicState feature must be enabled5VUID-vkCmdSetViewportWithCountEXT-viewportCount-03394  viewportCount must be between 1 and  :: maxViewports, inclusive5VUID-vkCmdSetViewportWithCountEXT-viewportCount-03395 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled,  viewportCount must be 15VUID-vkCmdSetViewportWithCountEXT-commandBuffer-04819  commandBuffer must not have ::viewportScissor2D enabledValid Usage (Implicit)9VUID-vkCmdSetViewportWithCountEXT-commandBuffer-parameter  commandBuffer must be a valid  handle6VUID-vkCmdSetViewportWithCountEXT-pViewports-parameter  pViewports must( be a valid pointer to an array of  viewportCount valid  structures9VUID-vkCmdSetViewportWithCountEXT-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state7VUID-vkCmdSetViewportWithCountEXT-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operations;VUID-vkCmdSetViewportWithCountEXT-viewportCount-arraylength  viewportCount must be greater than 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth  Graphics See Also, \vulkanvkCmdSetScissorWithCountEXT - Set the scissor count and scissors Valid Usage+VUID-vkCmdSetScissorWithCountEXT-None-03396 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicStateextendedDynamicState feature must be enabled3VUID-vkCmdSetScissorWithCountEXT-scissorCount-03397  scissorCount must be between 1 and  :: maxViewports, inclusive3VUID-vkCmdSetScissorWithCountEXT-scissorCount-03398 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled,  scissorCount must be 1(VUID-vkCmdSetScissorWithCountEXT-x-03399 The x and y members of offset member of any element of  pScissors must" be greater than or equal to 0-VUID-vkCmdSetScissorWithCountEXT-offset-03400 Evaluation of (offset.x +  extent.width) must not cause a signed integer addition overflow for any element of  pScissors-VUID-vkCmdSetScissorWithCountEXT-offset-03401 Evaluation of (offset.y +  extent.height) must not cause a signed integer addition overflow for any element of  pScissors4VUID-vkCmdSetScissorWithCountEXT-commandBuffer-04820  commandBuffer must not have ::viewportScissor2D enabledValid Usage (Implicit)8VUID-vkCmdSetScissorWithCountEXT-commandBuffer-parameter  commandBuffer must be a valid  handle4VUID-vkCmdSetScissorWithCountEXT-pScissors-parameter  pScissors must# be a valid pointer to an array of  scissorCount r structures8VUID-vkCmdSetScissorWithCountEXT-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state6VUID-vkCmdSetScissorWithCountEXT-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operations9VUID-vkCmdSetScissorWithCountEXT-scissorCount-arraylength  scissorCount must be greater than 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth  Graphics See Also, r\vulkanvkCmdBindVertexBuffers2EXT - Bind vertex buffers to a command buffer Description$The values taken from elements i of pBuffers and pOffsets9 replace the current state for the vertex input binding  firstBinding + i, for i in [0,  bindingCount). The vertex input binding is updated to start at the offset indicated by pOffsets"[i] from the start of the buffer pBuffers[i]. If pSizes is not NULL then pSizes[i] specifies the bound size of the vertex buffer starting from the corresponding elements of pBuffers [i] plus pOffsets[i]. All vertex input attributes that use each of these bindings will use these updated addresses in their address calculations for subsequent drawing commands. If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor" feature is enabled, elements of pBuffers can be , and can be used by the vertex shader. If a vertex input attribute is bound to a vertex input binding that is , the values taken from memory are considered to be zero, and missing G, B, or A components are  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-extractionfilled with (0,0,1).9If the bound pipeline state object was created with the   dynamic state enabled then pStrides[i] specifies the byte stride between consecutive elements within the corresponding buffer. In this case the 8::stride2 state from the pipeline state object is ignored.>If the bound pipeline state object was also created with the   dynamic state enabled then   can be used instead of \ to set the stride. Valid Usage2VUID-vkCmdBindVertexBuffers2EXT-firstBinding-03355  firstBinding must be less than  ::maxVertexInputBindings 2VUID-vkCmdBindVertexBuffers2EXT-firstBinding-03356 The sum of  firstBinding and  bindingCount must be less than or equal to  ::maxVertexInputBindings.VUID-vkCmdBindVertexBuffers2EXT-pOffsets-03357 All elements of pOffsets must< be less than the size of the corresponding element in pBuffers,VUID-vkCmdBindVertexBuffers2EXT-pSizes-03358 If pSizes is not NULL, all elements of pOffsets plus pSizes must be less than or equal to the size of the corresponding element in pBuffers.VUID-vkCmdBindVertexBuffers2EXT-pBuffers-03359 All elements of pBuffers must! have been created with the  flag.VUID-vkCmdBindVertexBuffers2EXT-pBuffers-03360 Each element of pBuffers that is non-sparse must7 be bound completely and contiguously to a single 0  object.VUID-vkCmdBindVertexBuffers2EXT-pBuffers-04111 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor. feature is not enabled, all elements of pBuffers must not be .VUID-vkCmdBindVertexBuffers2EXT-pBuffers-04112 If an element of pBuffers is ), then the corresponding element of pOffsets must be zero.VUID-vkCmdBindVertexBuffers2EXT-pStrides-03362 If pStrides is not NULL each element of pStrides must$ be less than or equal to  ::maxVertexInputBindingStride.VUID-vkCmdBindVertexBuffers2EXT-pStrides-06209 If pStrides is not NULL each element of pStrides must be either 0 or greater than or equal to the maximum extent of all vertex input attributes fetched from the corresponding binding, where the extent is calculated as the 8 ::offset plus 8 ::format sizeValid Usage (Implicit)7VUID-vkCmdBindVertexBuffers2EXT-commandBuffer-parameter  commandBuffer must be a valid  handle2VUID-vkCmdBindVertexBuffers2EXT-pBuffers-parameter pBuffers must# be a valid pointer to an array of  bindingCount valid or   handles2VUID-vkCmdBindVertexBuffers2EXT-pOffsets-parameter pOffsets must# be a valid pointer to an array of  bindingCount o values0VUID-vkCmdBindVertexBuffers2EXT-pSizes-parameter If pSizes is not NULL, pSizes must( be a valid pointer to an array of  bindingCount o values2VUID-vkCmdBindVertexBuffers2EXT-pStrides-parameter If pStrides is not NULL, pStrides must( be a valid pointer to an array of  bindingCount o values7VUID-vkCmdBindVertexBuffers2EXT-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state5VUID-vkCmdBindVertexBuffers2EXT-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operations8VUID-vkCmdBindVertexBuffers2EXT-bindingCount-arraylength If any of pSizes, or pStrides are not NULL,  bindingCount must be greater than 0,VUID-vkCmdBindVertexBuffers2EXT-commonparent Both of  commandBuffer, and the elements of pBuffers7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth  Graphics See Also, , o\vulkanvkCmdSetDepthTestEnableEXT - Set the depth test enable for a command buffer DescriptionThis command sets the state for a given draw when the graphics pipeline is created with  set in 8::pDynamicStates. Valid Usage*VUID-vkCmdSetDepthTestEnableEXT-None-03352 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicStateextendedDynamicState feature must be enabledValid Usage (Implicit)7VUID-vkCmdSetDepthTestEnableEXT-commandBuffer-parameter  commandBuffer must be a valid  handle7VUID-vkCmdSetDepthTestEnableEXT-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state5VUID-vkCmdSetDepthTestEnableEXT-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth  Graphics See Alsoq, \vulkanvkCmdSetDepthWriteEnableEXT - Set the depth write enable for the command buffer DescriptionThis command sets the state for a given draw when the graphics pipeline is created with  set in 8::pDynamicStates. Valid Usage+VUID-vkCmdSetDepthWriteEnableEXT-None-03354 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicStateextendedDynamicState feature must be enabledValid Usage (Implicit)8VUID-vkCmdSetDepthWriteEnableEXT-commandBuffer-parameter  commandBuffer must be a valid  handle8VUID-vkCmdSetDepthWriteEnableEXT-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state6VUID-vkCmdSetDepthWriteEnableEXT-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth  Graphics See Alsoq, \vulkanvkCmdSetDepthCompareOpEXT - Set the depth comparison operator for the command buffer DescriptionThis command sets the state for a given draw when the graphics pipeline is created with  set in 8::pDynamicStates. Valid Usage)VUID-vkCmdSetDepthCompareOpEXT-None-03353 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicStateextendedDynamicState feature must be enabledValid Usage (Implicit)6VUID-vkCmdSetDepthCompareOpEXT-commandBuffer-parameter  commandBuffer must be a valid  handle7VUID-vkCmdSetDepthCompareOpEXT-depthCompareOp-parameter depthCompareOp must be a valid D value6VUID-vkCmdSetDepthCompareOpEXT-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state4VUID-vkCmdSetDepthCompareOpEXT-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth  Graphics See Also, D\vulkanvkCmdSetDepthBoundsTestEnableEXT - Set the depth bounds test enable for a command buffer DescriptionThis command sets the state for a given draw when the graphics pipeline is created with  set in 8::pDynamicStates. Valid Usage0VUID-vkCmdSetDepthBoundsTestEnableEXT-None-03349 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicStateextendedDynamicState feature must be enabledValid Usage (Implicit)=VUID-vkCmdSetDepthBoundsTestEnableEXT-commandBuffer-parameter  commandBuffer must be a valid  handle=VUID-vkCmdSetDepthBoundsTestEnableEXT-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state;VUID-vkCmdSetDepthBoundsTestEnableEXT-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth  Graphics See Alsoq, \vulkanvkCmdSetStencilTestEnableEXT - Set the stencil test enable for the command buffer DescriptionThis command sets the state for a given draw when the graphics pipeline is created with  set in 8::pDynamicStates. Valid Usage,VUID-vkCmdSetStencilTestEnableEXT-None-03350 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicStateextendedDynamicState feature must be enabledValid Usage (Implicit)9VUID-vkCmdSetStencilTestEnableEXT-commandBuffer-parameter  commandBuffer must be a valid  handle9VUID-vkCmdSetStencilTestEnableEXT-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state7VUID-vkCmdSetStencilTestEnableEXT-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth  Graphics See Alsoq, \vulkanvkCmdSetStencilOpEXT - Set the stencil operation for the command buffer DescriptionThis command sets the state for a given draw when the graphics pipeline is created with  set in 8::pDynamicStates. Valid Usage$VUID-vkCmdSetStencilOpEXT-None-03351 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicStateextendedDynamicState feature must be enabledValid Usage (Implicit)1VUID-vkCmdSetStencilOpEXT-commandBuffer-parameter  commandBuffer must be a valid  handle,VUID-vkCmdSetStencilOpEXT-faceMask-parameter faceMask must% be a valid combination of f values2VUID-vkCmdSetStencilOpEXT-faceMask-requiredbitmask faceMask must not be 0*VUID-vkCmdSetStencilOpEXT-failOp-parameter failOp must be a valid h value*VUID-vkCmdSetStencilOpEXT-passOp-parameter passOp must be a valid h value/VUID-vkCmdSetStencilOpEXT-depthFailOp-parameter  depthFailOp must be a valid h value-VUID-vkCmdSetStencilOpEXT-compareOp-parameter  compareOp must be a valid D value1VUID-vkCmdSetStencilOpEXT-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state/VUID-vkCmdSetStencilOpEXT-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth  Graphics See Also, D, g, h \vulkan commandBuffer is the command buffer into which the command will be recorded.vulkancullMode5 specifies the cull mode property to use for drawing.\vulkan commandBuffer is the command buffer into which the command will be recorded.vulkan frontFace6 specifies the front face property to use for drawing.\vulkan commandBuffer is the command buffer into which the command will be recorded.\vulkan commandBuffer is the command buffer into which the command will be recorded.vulkan pViewports, specifies the viewports to use for drawing.\vulkan commandBuffer is the command buffer into which the command will be recorded.vulkan pScissors+ specifies the scissors to use for drawing.\vulkan commandBuffer; is the command buffer into which the command is recorded.vulkan firstBinding is the index of the first vertex input binding whose state is updated by the command.vulkanpBuffers, is a pointer to an array of buffer handles.vulkanpOffsets, is a pointer to an array of buffer offsets.vulkanpSizes is NULL or a pointer to an array of the size in bytes of vertex data bound from pBuffers.vulkanpStrides is NULL, or a pointer to an array of buffer strides.\vulkan commandBuffer is the command buffer into which the command will be recorded.vulkandepthTestEnable( specifies if the depth test is enabled.\vulkan commandBuffer is the command buffer into which the command will be recorded.vulkandepthWriteEnable' specifies if depth writes are enabled.\vulkan commandBuffer is the command buffer into which the command will be recorded.vulkandepthCompareOp) specifies the depth comparison operator.\vulkan commandBuffer is the command buffer into which the command will be recorded.vulkandepthBoundsTestEnable/ specifies if the depth bounds test is enabled.\vulkan commandBuffer is the command buffer into which the command will be recorded.vulkanstencilTestEnable* specifies if the stencil test is enabled.\vulkan commandBuffer is the command buffer into which the command will be recorded.vulkanfaceMask is a bitmask of f specifying the set of stencil state for which to update the stencil operation.vulkanfailOp is a h value specifying the action performed on samples that fail the stencil test.vulkanpassOp is a h value specifying the action performed on samples that pass both the depth and stencil tests.vulkan depthFailOp is a h value specifying the action performed on samples that pass the stencil test and fail the depth test.vulkan compareOp is a D value specifying the comparison operator used in the stencil test.\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\7None( #$&'(./0289:<>?(J0vulkanVkSubpassDescription - Structure specifying a subpass description DescriptionEach element of the pInputAttachments array corresponds to an input attachment index in a fragment shader, i.e. if a shader declares an image variable decorated with a InputAttachmentIndex value of X+, then it uses the attachment provided in pInputAttachments[X]. Input attachments must< also be bound to the pipeline in a descriptor set. If the  attachment member of any element of pInputAttachments is , the application must not read from the corresponding input attachment index. Fragment shaders can use subpass input variables to access the contents of an input attachment at the fragment@s (x, y, layer) framebuffer coordinates. Input attachments must not be used by any subpasses within a renderpass that enables  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-renderpass-transformrender pass transform.Each element of the pColorAttachments array corresponds to an output location in the shader, i.e. if the shader declares an output variable decorated with a Location value of X+, then it uses the attachment provided in pColorAttachments[X ]. If the  attachment member of any element of pColorAttachments is  , or if  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-color-write-enableColor Write Enable has been disabled for the corresponding attachment index, then writes to the corresponding location by a fragment shader are discarded.If flags does not include  , and if pResolveAttachments is not NULL, each of its elements corresponds to a color attachment (the element in pColorAttachments at the same index), and a multisample resolve operation is defined for each attachment. At the end of each subpass, multisample resolve operations read the subpass@s color attachments, and resolve the samples for each pixel within the render area to the same pixel location in the corresponding resolve attachments, unless the resolve attachment index is .Similarly, if flags does not include , and e::pDepthStencilResolveAttachment is not NULL and does not have the value 5, it corresponds to the depth/stencil attachment in pDepthStencilAttachment, and multisample resolve operations for depth and stencil are defined by e::depthResolveMode and e::stencilResolveMode, respectively. At the end of each subpass, multisample resolve operations read the subpass@s depth/stencil attachment, and resolve the samples for each pixel to the same pixel location in the corresponding resolve attachment. If e::depthResolveMode is , then the depth component of the resolve attachment is not written to and its contents are preserved. Similarly, if e::stencilResolveMode is , then the stencil component of the resolve attachment is not written to and its contents are preserved. e::depthResolveMode is ignored if the K of the pDepthStencilResolveAttachment/ does not have a depth component. Similarly, e::stencilResolveMode is ignored if the K of the pDepthStencilResolveAttachment# does not have a stencil component.If the image subresource range referenced by the depth/stencil attachment is created with  , then the multisample resolve operation uses the sample locations state specified in the sampleLocationsInfo member of the element of the ::pPostSubpassSampleLocations for the subpass.If pDepthStencilAttachment is NULL!, or if its attachment index is , it indicates that no depth/stencil attachment will be used in the subpass.The contents of an attachment within the render area become undefined at the start of a subpass S. if all of the following conditions are true:The attachment is used as a color, depth/stencil, or resolve attachment in any subpass in the render pass.There is a subpass S1 that uses or preserves the attachment, and a subpass dependency from S1 to S.3The attachment is not used or preserved in subpass S.In addition, the contents of an attachment within the render area become undefined at the start of a subpass S. if all of the following conditions are true: is set.The attachment is used as a color or depth/stencil in the subpass.?Once the contents of an attachment become undefined in subpass S, they remain undefined for subpasses in subpass dependency chains starting with subpass S until they are written again. However, they remain valid for subpasses in other subpass dependency chains starting with subpass S13 if those subpasses use or preserve the attachment. Valid Usage1VUID-VkSubpassDescription-pipelineBindPoint-00844 pipelineBindPoint must be 4VUID-VkSubpassDescription-colorAttachmentCount-00845 colorAttachmentCount must be less than or equal to  ::maxColorAttachments&VUID-VkSubpassDescription-loadOp-00846 If the first use of an attachment in this render pass is as an input attachment, and the attachment is not also used as a color or depth/stencil attachment in the same subpass, then loadOp must not be +3VUID-VkSubpassDescription-pResolveAttachments-00847 If pResolveAttachments is not NULL/, for each resolve attachment that is not *, the corresponding color attachment must not be 3VUID-VkSubpassDescription-pResolveAttachments-00848 If pResolveAttachments is not NULL/, for each resolve attachment that is not *, the corresponding color attachment must! not have a sample count of &3VUID-VkSubpassDescription-pResolveAttachments-00849 If pResolveAttachments is not NULL+, each resolve attachment that is not  must" have a sample count of &3VUID-VkSubpassDescription-pResolveAttachments-00850 If pResolveAttachments is not NULL+, each resolve attachment that is not  must have the same K+ as its corresponding color attachment1VUID-VkSubpassDescription-pColorAttachments-01417 All attachments in pColorAttachments that are not  must have the same sample count1VUID-VkSubpassDescription-pInputAttachments-02647 All attachments in pInputAttachments that are not  must$ have image formats whose  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-featurespotential format features contain at least  or 1VUID-VkSubpassDescription-pColorAttachments-02648 All attachments in pColorAttachments that are not  must$ have image formats whose  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-featurespotential format features contain 3VUID-VkSubpassDescription-pResolveAttachments-02649 All attachments in pResolveAttachments that are not  must$ have image formats whose  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-featurespotential format features contain 7VUID-VkSubpassDescription-pDepthStencilAttachment-02650 If pDepthStencilAttachment is not NULL and the attachment is not  then it must& have an image format whose  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-featurespotential format features contain 1VUID-VkSubpassDescription-pColorAttachments-01506 If the VK_AMD_mixed_attachment_samples3 extension is enabled, and all attachments in pColorAttachments that are not  must have a sample count that is smaller than or equal to the sample count of pDepthStencilAttachment if it is not 7VUID-VkSubpassDescription-pDepthStencilAttachment-01418 If neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples% extensions are enabled, and if pDepthStencilAttachment is not  and any attachments in pColorAttachments are not , they must have the same sample count*VUID-VkSubpassDescription-attachment-00853 Each element of pPreserveAttachments must not be 4VUID-VkSubpassDescription-pPreserveAttachments-00854 Each element of pPreserveAttachments must not also be an element of any other member of the subpass description&VUID-VkSubpassDescription-layout-025191 If any attachment is used by more than one  member, then each use must use the same layout$VUID-VkSubpassDescription-None-04437 Each attachment must follow the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#attachment-type-imagelayoutimage layout requirements' specified for its attachment type%VUID-VkSubpassDescription-flags-00856 If flags includes  , it must also include %VUID-VkSubpassDescription-flags-03341 If flags includes , and if pResolveAttachments is not NULL$, then each resolve attachment must be %VUID-VkSubpassDescription-flags-03342 If flags includes , and if !pDepthStencilResolveAttachmentKHR is not NULL1, then the depth/stencil resolve attachment must be %VUID-VkSubpassDescription-flags-03343 If flags includes , then the subpass must7 be the last subpass in a subpass dependency chain1VUID-VkSubpassDescription-pInputAttachments-02868. If the render pass is created with  each of the elements of pInputAttachments must be 7VUID-VkSubpassDescription-pDepthStencilAttachment-04438 pDepthStencilAttachment and pColorAttachments8 must not contain references to the same attachmentValid Usage (Implicit))VUID-VkSubpassDescription-flags-parameter flags must% be a valid combination of  values5VUID-VkSubpassDescription-pipelineBindPoint-parameter pipelineBindPoint must be a valid X value5VUID-VkSubpassDescription-pInputAttachments-parameter If inputAttachmentCount is not 0, pInputAttachments must( be a valid pointer to an array of inputAttachmentCount valid  structures5VUID-VkSubpassDescription-pColorAttachments-parameter If colorAttachmentCount is not 0, pColorAttachments must( be a valid pointer to an array of colorAttachmentCount valid  structures7VUID-VkSubpassDescription-pResolveAttachments-parameter If colorAttachmentCount is not 0, and pResolveAttachments is not NULL, pResolveAttachments must( be a valid pointer to an array of colorAttachmentCount valid  structures;VUID-VkSubpassDescription-pDepthStencilAttachment-parameter If pDepthStencilAttachment is not NULL, pDepthStencilAttachment must be a valid pointer to a valid  structure8VUID-VkSubpassDescription-pPreserveAttachments-parameter If preserveAttachmentCount is not 0, pPreserveAttachments must( be a valid pointer to an array of preserveAttachmentCount uint32_t valuesSee Also, X, , vulkan?VkSubpassDependency - Structure specifying a subpass dependency DescriptionIf  srcSubpass is equal to  dstSubpass then the  describes a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-barriers-subpass-self-dependenciessubpass self-dependency, and only constrains the pipeline barriers allowed within a subpass instance. Otherwise, when a render pass instance which includes a subpass dependency is submitted to a queue, it defines a memory dependency between the subpasses identified by  srcSubpass and  dstSubpass.If  srcSubpass is equal to  , the first  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope+ includes commands that occur earlier in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-ordersubmission order than the  used to begin the render pass instance. Otherwise, the first set of commands includes all commands submitted as part of the subpass instance identified by  srcSubpass and any load, store or multisample resolve operations on attachments used in  srcSubpass. In either case, the first synchronization scope is limited to operations on the pipeline stages determined by the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-maskssource stage mask specified by  srcStageMask.If  dstSubpass is equal to , the second  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope) includes commands that occur later in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-ordersubmission order than the  used to end the render pass instance. Otherwise, the second set of commands includes all commands submitted as part of the subpass instance identified by  dstSubpass and any load, store or multisample resolve operations on attachments used in  dstSubpass. In either case, the second synchronization scope is limited to operations on the pipeline stages determined by the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masksdestination stage mask specified by  dstStageMask. The first  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope is limited to accesses in the pipeline stages determined by the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-maskssource stage mask specified by  srcStageMask-. It is also limited to access types in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-maskssource access mask specified by  srcAccessMask. The second  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope is limited to accesses in the pipeline stages determined by the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masksdestination stage mask specified by  dstStageMask-. It is also limited to access types in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masksdestination access mask specified by  dstAccessMask.The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-available-and-visible&availability and visibility operations; defined by a subpass dependency affect the execution of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-layout-transitionsimage layout transitions within the render pass.NoteFor non-attachment resources, the memory dependency expressed by subpass dependency is nearly identical to that of a 6 (with matching  srcAccessMask and  dstAccessMask' parameters) submitted as a part of a   (with matching  srcStageMask and  dstStageMask parameters). The only difference being that its scopes are limited to the identified subpasses rather than potentially affecting everything before and after.For attachments however, subpass dependencies work more like a 6 defined similarly to the 6) above, the queue family indices set to , and layouts as follows:The equivalent to  oldLayout is the attachment@s layout according to the subpass description for  srcSubpass.The equivalent to  newLayout is the attachment@s layout according to the subpass description for  dstSubpass. Valid Usage+VUID-VkSubpassDependency-srcStageMask-00860 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled,  srcStageMask must not contain   +VUID-VkSubpassDependency-dstStageMask-00861 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled,  dstStageMask must not contain   +VUID-VkSubpassDependency-srcStageMask-00862 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled,  srcStageMask must not contain    or   +VUID-VkSubpassDependency-dstStageMask-00863 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled,  dstStageMask must not contain    or   )VUID-VkSubpassDependency-srcSubpass-00864  srcSubpass must be less than or equal to  dstSubpass, unless one of them is , to avoid cyclic dependencies and ensure a valid execution order)VUID-VkSubpassDependency-srcSubpass-00865  srcSubpass and  dstSubpass must not both be equal to )VUID-VkSubpassDependency-srcSubpass-00867 If  srcSubpass is equal to  dstSubpass and not all of the stages in  srcStageMask and  dstStageMask are  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regionsframebuffer-space stages, the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-orderlogically latest pipeline stage in  srcStageMask must be  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-orderlogically earlier than or equal to the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-orderlogically earliest pipeline stage in  dstStageMask,VUID-VkSubpassDependency-srcAccessMask-00868" Any access flag included in  srcAccessMask must4 be supported by one of the pipeline stages in  srcStageMask, as specified in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access types,VUID-VkSubpassDependency-dstAccessMask-00869" Any access flag included in  dstAccessMask must4 be supported by one of the pipeline stages in  dstStageMask, as specified in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access types)VUID-VkSubpassDependency-srcSubpass-02243 If  srcSubpass equals  dstSubpass, and  srcStageMask and  dstStageMask both include a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regionsframebuffer-space stage , then dependencyFlags must include (.VUID-VkSubpassDependency-dependencyFlags-02520 If dependencyFlags includes (,  srcSubpass must not be equal to .VUID-VkSubpassDependency-dependencyFlags-02521 If dependencyFlags includes (,  dstSubpass must not be equal to )VUID-VkSubpassDependency-srcSubpass-00872 If  srcSubpass equals  dstSubpass and that subpass has more than one bit set in the view mask, then dependencyFlags must include (+VUID-VkSubpassDependency-srcStageMask-02099 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled,  srcStageMask must not contain   +VUID-VkSubpassDependency-srcStageMask-02100 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders feature is not enabled,  srcStageMask must not contain   +VUID-VkSubpassDependency-dstStageMask-02101 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled,  dstStageMask must not contain   +VUID-VkSubpassDependency-dstStageMask-02102 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders feature is not enabled,  dstStageMask must not contain   /VUID-VkSubpassDependency-synchronization2-04984 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2synchronization2 feature is not enabled,  srcStageMask must not be 0/VUID-VkSubpassDependency-synchronization2-04985 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2synchronization2 feature is not enabled,  dstStageMask must not be 0Valid Usage (Implicit)/VUID-VkSubpassDependency-srcStageMask-parameter  srcStageMask must be a valid combination of   values/VUID-VkSubpassDependency-dstStageMask-parameter  dstStageMask must be a valid combination of   values0VUID-VkSubpassDependency-srcAccessMask-parameter  srcAccessMask must be a valid combination of + values0VUID-VkSubpassDependency-dstAccessMask-parameter  dstAccessMask must be a valid combination of + values2VUID-VkSubpassDependency-dependencyFlags-parameter dependencyFlags must be a valid combination of G valuesSee Also+, H, Z, vulkanVkRenderPassCreateInfo - Structure specifying parameters of a newly created render pass DescriptionNoteCare should be taken to avoid a data race here; if any subpasses access attachments with overlapping memory locations, and one of those accesses is a write, a subpass dependency needs to be included between them. Valid Usage,VUID-VkRenderPassCreateInfo-attachment-00834 If the  attachment member of any element of pInputAttachments, pColorAttachments, pResolveAttachments or pDepthStencilAttachment, or any element of pPreserveAttachments in any element of  pSubpasses is not , it must be less than attachmentCount.VUID-VkRenderPassCreateInfo-pAttachments-00836 For any member of  pAttachments with a loadOp equal to +(, the first use of that attachment must not specify a layout equal to  or .VUID-VkRenderPassCreateInfo-pAttachments-02511 For any member of  pAttachments with a  stencilLoadOp equal to +(, the first use of that attachment must not specify a layout equal to  or .VUID-VkRenderPassCreateInfo-pAttachments-01566 For any member of  pAttachments with a loadOp equal to +(, the first use of that attachment must not specify a layout equal to .VUID-VkRenderPassCreateInfo-pAttachments-01567 For any member of  pAttachments with a  stencilLoadOp equal to +(, the first use of that attachment must not specify a layout equal to 'VUID-VkRenderPassCreateInfo-pNext-01926 If the pNext chain includes a  structure, the subpass$ member of each element of its pAspectReferences member must be less than  subpassCount'VUID-VkRenderPassCreateInfo-pNext-01927 If the pNext chain includes a  structure, the inputAttachmentIndex$ member of each element of its pAspectReferences member must be less than the value of inputAttachmentCount in the element of  pSubpasses identified by its subpass member'VUID-VkRenderPassCreateInfo-pNext-01963 If the pNext chain includes a ( structure, for any element of the pInputAttachments member of any element of  pSubpasses where the  attachment member is not , the  aspectMask2 member of the corresponding element of ::pAspectReferences must only include aspects that are present in images of the format specified by the element of  pAttachments at  attachment'VUID-VkRenderPassCreateInfo-pNext-01928 If the pNext chain includes a  structure, and its  subpassCount& member is not zero, that member must be equal to the value of  subpassCount'VUID-VkRenderPassCreateInfo-pNext-01929 If the pNext chain includes a  structure, if its dependencyCount member is not zero, it must be equal to dependencyCount'VUID-VkRenderPassCreateInfo-pNext-01930 If the pNext chain includes a . structure, for each non-zero element of  pViewOffsets , the  srcSubpass and  dstSubpass members of  pDependencies at the same index must not be equal'VUID-VkRenderPassCreateInfo-pNext-02512 If the pNext chain includes a $ structure, for any element of  pDependencies with a dependencyFlags# member that does not include ((, the corresponding element of the  pViewOffsets member of that  instance must be 0'VUID-VkRenderPassCreateInfo-pNext-02513 If the pNext chain includes a ! structure, elements of its  pViewMasks member must either all be 0, or all not be 0'VUID-VkRenderPassCreateInfo-pNext-02514 If the pNext chain includes a ) structure, and each element of its  pViewMasks member is 0 , the dependencyFlags member of each element of  pDependencies must not include ('VUID-VkRenderPassCreateInfo-pNext-02515 If the pNext chain includes a ) structure, and each element of its  pViewMasks member is 0, correlatedViewMaskCount must be 0/VUID-VkRenderPassCreateInfo-pDependencies-00837 For any element of  pDependencies , if the  srcSubpass is not ', all stage flags included in the  srcStageMask member of that dependency must0 be a pipeline stage supported by the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-typespipeline identified by the pipelineBindPoint member of the source subpass/VUID-VkRenderPassCreateInfo-pDependencies-00838 For any element of  pDependencies , if the  dstSubpass is not ', all stage flags included in the  dstStageMask member of that dependency must0 be a pipeline stage supported by the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-typespipeline identified by the pipelineBindPoint' member of the destination subpass,VUID-VkRenderPassCreateInfo-srcSubpass-02517 The  srcSubpass member of each element of  pDependencies must be less than  subpassCount,VUID-VkRenderPassCreateInfo-dstSubpass-02518 The  dstSubpass member of each element of  pDependencies must be less than  subpassCountValid Usage (Implicit)'VUID-VkRenderPassCreateInfo-sType-sType sType must be  'VUID-VkRenderPassCreateInfo-pNext-pNext Each pNext: member of any structure (including this one) in the pNext chain must be either NULL* or a pointer to a valid instance of , , or (VUID-VkRenderPassCreateInfo-sType-unique The sType" value of each struct in the pNext chain must be unique+VUID-VkRenderPassCreateInfo-flags-parameter flags must% be a valid combination of  values2VUID-VkRenderPassCreateInfo-pAttachments-parameter If attachmentCount is not 0,  pAttachments must( be a valid pointer to an array of attachmentCount valid  structures0VUID-VkRenderPassCreateInfo-pSubpasses-parameter  pSubpasses must# be a valid pointer to an array of  subpassCount valid  structures3VUID-VkRenderPassCreateInfo-pDependencies-parameter If dependencyCount is not 0,  pDependencies must( be a valid pointer to an array of dependencyCount valid  structures4VUID-VkRenderPassCreateInfo-subpassCount-arraylength  subpassCount must be greater than 0See Also, , , , , \vulkanVkFramebufferCreateInfo - Structure specifying parameters of a newly created framebuffer Description5Other than the exceptions listed below, applications must ensure that all accesses to memory that backs image subresources used as attachments in a given renderpass instance either happen-before the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-opsload operations. for those attachments, or happen-after the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-opsstore operations for those attachments.'The exceptions to the general rule are:)For depth/stencil attachments, an aspect can be used separately as attachment and non-attachment if both accesses are read-only.+For depth/stencil attachments, each aspect can be used separately as attachment and non-attachment as long as the non-attachment accesses are also via an image subresource in either the  layout or the  layout, and the attachment resource uses whichever of those two layouts the image accesses do not.Use of non-attachment aspects in these cases is only well defined if the attachment is used in the subpass where the non-attachment access is being made, or the layout of the image subresource is constant throughout the entire render pass instance, including the  initialLayout and  finalLayout.NoteThese restrictions mean that the render pass has full knowledge of all uses of all of the attachments, so that the implementation is able to make correct decisions about when and how to perform layout transitions, when to overlap execution of subpasses, etc.It is legal for a subpass to use no color or depth/stencil attachments, either because it has no attachment references or because all of them are . This kind of subpass can use shader side effects such as image stores and atomics to produce an output. In this case, the subpass continues to use the width, height, and layers of the framebuffer to define the dimensions of the rendering area, and the rasterizationSamples from each pipeline@s 8 to define the number of samples used in rasterization; however, if  ::variableMultisampleRate is /3, then all pipelines to be bound with the subpass must have the same value for 8::rasterizationSamples. Valid Usage2VUID-VkFramebufferCreateInfo-attachmentCount-00876 attachmentCount must4 be equal to the attachment count specified in  renderPass4(VUID-VkFramebufferCreateInfo-flags-02778 If flags does not include # , and attachmentCount is not 0,  pAttachments must( be a valid pointer to an array of attachmentCount valid  handles/VUID-VkFramebufferCreateInfo-pAttachments-00877 If flags does not include #, each element of  pAttachments that is used as a color attachment or resolve attachment by  renderPass must have been created with a usage value including  /VUID-VkFramebufferCreateInfo-pAttachments-02633 If flags does not include #, each element of  pAttachments4 that is used as a depth/stencil attachment by  renderPass must have been created with a usage value including  /VUID-VkFramebufferCreateInfo-pAttachments-02634 If flags does not include #, each element of  pAttachments< that is used as a depth/stencil resolve attachment by  renderPass must have been created with a usage value including  /VUID-VkFramebufferCreateInfo-pAttachments-00879 If flags does not include #, each element of  pAttachments- that is used as an input attachment by  renderPass must have been created with a usage value including  /VUID-VkFramebufferCreateInfo-pAttachments-02552 Each element of  pAttachments; that is used as a fragment density map attachment by  renderPass must not have been created with a flags value including  -VUID-VkFramebufferCreateInfo-renderPass-02553 If  renderPass5 has a fragment density map attachment and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapNonSubsampledImagesnon-subsample image feature& is not enabled, each element of  pAttachments must have been created with a flags value including   unless that element is the fragment density map attachment/VUID-VkFramebufferCreateInfo-pAttachments-00880 If flags does not include #, each element of  pAttachments must have been created with a K value that matches the K% specified by the corresponding  in  renderPass/VUID-VkFramebufferCreateInfo-pAttachments-00881 If flags does not include #, each element of  pAttachments must have been created with a samples value that matches the samples+ value specified by the corresponding  in  renderPass(VUID-VkFramebufferCreateInfo-flags-04533 If flags does not include #, each element of  pAttachments that is used as an input, color, resolve, or depth/stencil attachment by  renderPass must have been created with a 1::width greater than or equal to width(VUID-VkFramebufferCreateInfo-flags-04534 If flags does not include #, each element of  pAttachments that is used as an input, color, resolve, or depth/stencil attachment by  renderPass must have been created with a 1::height greater than or equal to height(VUID-VkFramebufferCreateInfo-flags-04535 If flags does not include #, each element of  pAttachments that is used as an input, color, resolve, or depth/stencil attachment by  renderPass must$ have been created with a 2::subresourceRange.layerCount greater than or equal to layers-VUID-VkFramebufferCreateInfo-renderPass-04536 If  renderPass> was specified with non-zero view masks, each element of  pAttachments that is used as an input, color, resolve, or depth/stencil attachment by  renderPass must have a  layerCount greater than the index of the most significant bit set in any of those view masks-VUID-VkFramebufferCreateInfo-renderPass-02746 If  renderPass> was specified with non-zero view masks, each element of  pAttachments that is referenced by fragmentDensityMapAttachment must have a  layerCount equal to 1 or greater than the index of the most significant bit set in any of those view masks-VUID-VkFramebufferCreateInfo-renderPass-02747 If  renderPass was not specified with non-zero view masks, each element of  pAttachments that is referenced by fragmentDensityMapAttachment must have a  layerCount equal to 1/VUID-VkFramebufferCreateInfo-pAttachments-02555 If flags does not include #, an element of  pAttachments that is referenced by fragmentDensityMapAttachment must- have a width at least as large as \left\lceil{\frac{width}{maxFragmentDensityTexelSize_{width}}}\right\rceil/VUID-VkFramebufferCreateInfo-pAttachments-02556 If flags does not include #, an element of  pAttachments that is referenced by fragmentDensityMapAttachment must. have a height at least as large as \left\lceil{\frac{height}{maxFragmentDensityTexelSize_{height}}}\right\rceil(VUID-VkFramebufferCreateInfo-flags-04537 If flags does not include # , and  renderPass> was specified with non-zero view masks, each element of  pAttachments that is used as a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment by  renderPass must have a  layerCount that is either 1, or greater than the index of the most significant bit set in any of those view masks(VUID-VkFramebufferCreateInfo-flags-04538 If flags does not include # , and  renderPass was not specified with non-zero view masks, each element of  pAttachments that is used as a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment by  renderPass must have a  layerCount that is either 1, or greater than layers(VUID-VkFramebufferCreateInfo-flags-04539 If flags does not include #, an element of  pAttachments that is used as a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment must$ have a width at least as large as Fwidth /  texelWidthF, where  texelWidth is the largest value of $shadingRateAttachmentTexelSize.width in a & which references that attachment(VUID-VkFramebufferCreateInfo-flags-04540 If flags does not include #, an element of  pAttachments that is used as a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment must% have a height at least as large as Fheight /  texelHeight F, where  texelHeight is the largest value of %shadingRateAttachmentTexelSize.height in a & which references that attachment/VUID-VkFramebufferCreateInfo-pAttachments-00883 If flags does not include #, each element of  pAttachments must% only specify a single mip level/VUID-VkFramebufferCreateInfo-pAttachments-00884 If flags does not include #, each element of  pAttachments must1 have been created with the identity swizzle(VUID-VkFramebufferCreateInfo-width-00885 width must be greater than 0(VUID-VkFramebufferCreateInfo-width-00886 width must$ be less than or equal to  ::maxFramebufferWidth)VUID-VkFramebufferCreateInfo-height-00887 height must be greater than 0)VUID-VkFramebufferCreateInfo-height-00888 height must$ be less than or equal to  ::maxFramebufferHeight)VUID-VkFramebufferCreateInfo-layers-00889 layers must be greater than 0)VUID-VkFramebufferCreateInfo-layers-00890 layers must$ be less than or equal to  ::maxFramebufferLayers-VUID-VkFramebufferCreateInfo-renderPass-02531 If  renderPass. was specified with non-zero view masks, layers must be 1/VUID-VkFramebufferCreateInfo-pAttachments-00891 If flags does not include #, each element of  pAttachments that is a 2D or 2D array image view taken from a 3D image must not be a depth/stencil format(VUID-VkFramebufferCreateInfo-flags-03189 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-imagelessFramebufferimageless framebuffer feature is not enabled, flags must not include #(VUID-VkFramebufferCreateInfo-flags-03190 If flags includes # , the pNext chain must include an instance of (VUID-VkFramebufferCreateInfo-flags-03191 If flags includes # , the attachmentImageInfoCount member of an instance of  in the pNext chain must! be equal to either zero or attachmentCount(VUID-VkFramebufferCreateInfo-flags-04541 If flags includes # , the width member of any element of the pAttachmentImageInfos$ member of an instance of  in the pNext chain that is used as an input, color, resolve or depth/stencil attachment in  renderPass must" be greater than or equal to width(VUID-VkFramebufferCreateInfo-flags-04542 If flags includes # , the height member of any element of the pAttachmentImageInfos$ member of an instance of  in the pNext chain that is used as an input, color, resolve or depth/stencil attachment in  renderPass must" be greater than or equal to height(VUID-VkFramebufferCreateInfo-flags-03196 If flags includes # , the width member of any element of the pAttachmentImageInfos$ member of an instance of  in the pNext" chain that is referenced by ::fragmentDensityMapAttachment in  renderPass must" be greater than or equal to \left\lceil{\frac{width}{maxFragmentDensityTexelSize_{width}}}\right\rceil(VUID-VkFramebufferCreateInfo-flags-03197 If flags includes # , the height member of any element of the pAttachmentImageInfos member of a  structure included in the pNext" chain that is referenced by ::fragmentDensityMapAttachment in  renderPass must" be greater than or equal to \left\lceil{\frac{height}{maxFragmentDensityTexelSize_{height}}}\right\rceil(VUID-VkFramebufferCreateInfo-flags-04543 If flags includes # , the width member of any element of the pAttachmentImageInfos$ member of an instance of  in the pNext chain that is used as a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment must be greater than or equal to Fwidth /  texelWidthF, where  texelWidth is the largest value of $shadingRateAttachmentTexelSize.width in a & which references that attachment(VUID-VkFramebufferCreateInfo-flags-04544 If flags includes # , the height member of any element of the pAttachmentImageInfos$ member of an instance of  in the pNext chain that is used as a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment must be greater than or equal to Fheight /  texelHeightF, where  texelHeight is the largest value of %shadingRateAttachmentTexelSize.height in a & which references that attachment(VUID-VkFramebufferCreateInfo-flags-04545 If flags includes # , the  layerCount# member of any element of the pAttachmentImageInfos member of an instance of  in the pNext chain that is used as a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment must be either 1, or greater than or equal to layers(VUID-VkFramebufferCreateInfo-flags-04587 If flags includes # , and  renderPass> was specified with non-zero view masks, each element of  pAttachments that is used as a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment by  renderPass must have a  layerCount that is either 1, or greater than the index of the most significant bit set in any of those view masks-VUID-VkFramebufferCreateInfo-renderPass-03198" If multiview is enabled for  renderPass, and flags includes # , the  layerCount# member of any element of the pAttachmentImageInfos member of a  structure included in the pNext chain used as an input, color, resolve, or depth/stencil attachment in  renderPass must be greater than the maximum bit index set in the view mask in the subpasses in which it is used in  renderPass-VUID-VkFramebufferCreateInfo-renderPass-04546& If multiview is not enabled for  renderPass, and flags includes # , the  layerCount# member of any element of the pAttachmentImageInfos member of a  structure included in the pNext chain used as an input, color, resolve, or depth/stencil attachment in  renderPass must" be greater than or equal to layers(VUID-VkFramebufferCreateInfo-flags-03201 If flags includes # , the usage member of any element of the pAttachmentImageInfos member of a  structure included in the pNext chain that refers to an attachment used as a color attachment or resolve attachment by  renderPass must include  (VUID-VkFramebufferCreateInfo-flags-03202 If flags includes # , the usage member of any element of the pAttachmentImageInfos member of a  structure included in the pNext chain that refers to an attachment used as a depth/stencil attachment by  renderPass must include  (VUID-VkFramebufferCreateInfo-flags-03203 If flags includes # , the usage member of any element of the pAttachmentImageInfos member of a  structure included in the pNext chain that refers to an attachment used as a depth/stencil resolve attachment by  renderPass must include  (VUID-VkFramebufferCreateInfo-flags-03204 If flags includes # , the usage member of any element of the pAttachmentImageInfos member of a  structure included in the pNext chain that refers to an attachment used as an input attachment by  renderPass must include  (VUID-VkFramebufferCreateInfo-flags-03205 If flags includes ##, at least one element of the  pViewFormats# member of any element of the pAttachmentImageInfos member of a  structure included in the pNext chain must- be equal to the corresponding value of ::format used to create  renderPass(VUID-VkFramebufferCreateInfo-flags-04113 If flags does not include #, each element of  pAttachments must have been created with 2::viewType not equal to  (VUID-VkFramebufferCreateInfo-flags-04548 If flags does not include #, each element of  pAttachments< that is used as a fragment shading rate attachment by  renderPass must have been created with a usage value including  (VUID-VkFramebufferCreateInfo-flags-04549 If flags includes # , the usage member of any element of the pAttachmentImageInfos member of a  structure included in the pNext chain that refers to an attachment used as a fragment shading rate attachment by  renderPass must include  Valid Usage (Implicit)(VUID-VkFramebufferCreateInfo-sType-sType sType must be  (VUID-VkFramebufferCreateInfo-pNext-pNext pNext must be NULL/ or a pointer to a valid instance of )VUID-VkFramebufferCreateInfo-sType-unique The sType" value of each struct in the pNext chain must be unique,VUID-VkFramebufferCreateInfo-flags-parameter flags must% be a valid combination of # values1VUID-VkFramebufferCreateInfo-renderPass-parameter  renderPass must be a valid z handle)VUID-VkFramebufferCreateInfo-commonparent Both of  renderPass, and the elements of  pAttachments7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same See Also#, , z, , \vulkanVkAttachmentReference - Structure specifying an attachment reference Valid Usage'VUID-VkAttachmentReference-layout-00857 If  attachment is not , layout must not be , , , , , , or Valid Usage (Implicit)+VUID-VkAttachmentReference-layout-parameter layout must be a valid O valueSee AlsoO, , vulkanVkAttachmentDescription - Structure specifying an attachment description Description,If the attachment uses a color format, then loadOp and storeOp are used, and  stencilLoadOp and stencilStoreOp are ignored. If the format has depth and/or stencil components, loadOp and storeOp& apply only to the depth data, while  stencilLoadOp and stencilStoreOp* define how the stencil data is handled. loadOp and  stencilLoadOp define the load operations that execute as part of the first subpass that uses the attachment. storeOp and stencilStoreOp define the store operations that execute as part of the last subpass that uses the attachment.The load operation for each sample in an attachment happens-before any recorded command which accesses the sample in the first subpass where the attachment is used. Load operations for attachments with a depth/stencil format execute in the    pipeline stage. Load operations for attachments with a color format execute in the    pipeline stage.The store operation for each sample in an attachment happens-after any recorded command which accesses the sample in the last subpass where the attachment is used. Store operations for attachments with a depth/stencil format execute in the    pipeline stage. Store operations for attachments with a color format execute in the    pipeline stage.2If an attachment is not used by any subpass, then loadOp, storeOp, stencilStoreOp, and  stencilLoadOp are ignored, and the attachment@s memory contents will not be modified by execution of a render pass instance.The load and store operations apply on the first and last use of each view in the render pass, respectively. If a view index of an attachment is not included in the view mask in any subpass that uses it, then the load and store operations are ignored, and the attachment@s memory contents will not be modified by execution of a render pass instance.During a render pass instance, input/color attachments with color formats that have a component size of 8, 16, or 32 bits must be represented in the attachment@s format throughout the instance. Attachments with other floating- or fixed-point color formats, or with depth components may be represented in a format with a precision higher than the attachment format, but must be represented with the same range. When such a component is loaded via the loadOp, it will be converted into an implementation-dependent format used by the render pass. Such components must be converted from the render pass format, to the format of the attachment, before they are resolved or stored at the end of a render pass instance via storeOp&. Conversions occur as described in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-numerics&Numeric Representation and Computation and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-fixedconvFixed-Point Data Conversions.If flags includes +, then the attachment is treated as if it shares physical memory with another attachment in the same render pass. This information limits the ability of the implementation to reorder certain operations (like layout transitions and the loadOp) such that it is not improperly reordered against other uses of the same physical memory via a different attachment. This is described in more detail below.If a render pass uses multiple attachments that alias the same device memory, those attachments must each include the + bit in their attachment description flags. Attachments aliasing the same memory occurs in multiple ways:Multiple attachments being assigned the same image view as part of framebuffer creation.Attachments using distinct image views that correspond to the same image subresource of an image.Attachments using views of distinct image subresources which are bound to overlapping memory ranges.NoteRender passes must include subpass dependencies (either directly or via a subpass dependency chain) between any two subpasses that operate on the same attachment or aliasing attachments and those subpass dependencies must include execution and memory dependencies separating uses of the aliases, if at least one of those subpasses writes to one of the aliases. These dependencies must not include the ( if the aliases are views of distinct image subresources which overlap in memory.0Multiple attachments that alias the same memory must< not be used in a single subpass. A given attachment index must not be used multiple times in a single subpass, with one exception: two subpass attachments can use the same attachment index if at least one use is as an input attachment and neither use is as a resolve or preserve attachment. In other words, the same view can be used simultaneously as an input and color or depth/stencil attachment, but must not be used as multiple color or depth/stencil attachments nor as resolve or preserve attachments. The precise set of valid scenarios is described in more detail  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloopbelow.If a set of attachments alias each other, then all except the first to be used in the render pass must use an  initialLayout of , since the earlier uses of the other aliases make their contents undefined. Once an alias has been used and a different alias has been used after it, the first alias must> not be used in any later subpasses. However, an application can assign the same image view to multiple aliasing attachment indices, which allows that image view to be used multiple times even if other aliases are used in between.NoteOnce an attachment needs the + bit, there should be no additional cost of introducing additional aliases, and using these additional aliases may allow more efficient clearing of the attachments on multiple uses via +. Valid Usage.VUID-VkAttachmentDescription-finalLayout-00843  finalLayout must not be  or )VUID-VkAttachmentDescription-format-03280 If format is a color format,  initialLayout must not be , , , or )VUID-VkAttachmentDescription-format-03281 If format! is a depth/stencil format,  initialLayout must not be )VUID-VkAttachmentDescription-format-03282 If format is a color format,  finalLayout must not be , , , or )VUID-VkAttachmentDescription-format-03283 If format! is a depth/stencil format,  finalLayout must not be >VUID-VkAttachmentDescription-separateDepthStencilLayouts-03284 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayoutsseparateDepthStencilLayouts feature is not enabled,  initialLayout must not be , , , or >VUID-VkAttachmentDescription-separateDepthStencilLayouts-03285 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayoutsseparateDepthStencilLayouts feature is not enabled,  finalLayout must not be , , , or )VUID-VkAttachmentDescription-format-03286 If format is a color format,  initialLayout must not be , , , or )VUID-VkAttachmentDescription-format-03287 If format is a color format,  finalLayout must not be , , , or )VUID-VkAttachmentDescription-format-03288 If format is a depth/stencil format which includes both depth and stencil aspects,  initialLayout must not be , , , or )VUID-VkAttachmentDescription-format-03289 If format is a depth/stencil format which includes both depth and stencil aspects,  finalLayout must not be , , , or )VUID-VkAttachmentDescription-format-03290 If format is a depth/stencil format which includes only the depth aspect,  initialLayout must not be  or )VUID-VkAttachmentDescription-format-03291 If format is a depth/stencil format which includes only the depth aspect,  finalLayout must not be  or )VUID-VkAttachmentDescription-format-03292 If format is a depth/stencil format which includes only the stencil aspect,  initialLayout must not be  or )VUID-VkAttachmentDescription-format-03293 If format is a depth/stencil format which includes only the stencil aspect,  finalLayout must not be  or Valid Usage (Implicit),VUID-VkAttachmentDescription-flags-parameter flags must% be a valid combination of + values-VUID-VkAttachmentDescription-format-parameter format must be a valid K value.VUID-VkAttachmentDescription-samples-parameter samples must be a valid b value-VUID-VkAttachmentDescription-loadOp-parameter loadOp must be a valid + value.VUID-VkAttachmentDescription-storeOp-parameter storeOp must be a valid + value4VUID-VkAttachmentDescription-stencilLoadOp-parameter  stencilLoadOp must be a valid + value5VUID-VkAttachmentDescription-stencilStoreOp-parameter stencilStoreOp must be a valid + value4VUID-VkAttachmentDescription-initialLayout-parameter  initialLayout must be a valid O value2VUID-VkAttachmentDescription-finalLayout-parameter  finalLayout must be a valid O valueSee Also+, +, +, K, O, , b\vulkanpNext is NULL6 or a pointer to a structure extending this structure.\vulkanflags is a bitmask of #\vulkan renderPass is a render pass defining what render passes the framebuffer will be compatible with. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibilityRender Pass Compatibility for details.\vulkan pAttachments is a pointer to an array of  handles, each of which will be used as the corresponding attachment in a render pass instance. If flags includes #, this parameter is ignored.\vulkanwidth, height and layers define the dimensions of the framebuffer. If the render pass uses multiview, then layers must be one and each attachment requires a number of layers that is greater than the maximum bit index set in the view mask in the subpasses in which it is used.\vulkanpNext is NULL6 or a pointer to a structure extending this structure.\vulkanflags is a bitmask of \vulkan pAttachments is a pointer to an array of attachmentCount  structures describing the attachments used by the render pass.\vulkan pSubpasses is a pointer to an array of  subpassCount $ structures describing each subpass.\vulkan pDependencies is a pointer to an array of dependencyCount  structures describing dependencies between pairs of subpasses.\vulkan srcSubpass is the subpass index of the first subpass in the dependency, or .\vulkan dstSubpass is the subpass index of the second subpass in the dependency, or .\vulkan srcStageMask is a bitmask of   specifying the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-maskssource stage mask.\vulkan dstStageMask is a bitmask of   specifying the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masksdestination stage mask\vulkan srcAccessMask is a bitmask of + specifying a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-maskssource access mask.\vulkan dstAccessMask is a bitmask of + specifying a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masksdestination access mask.\vulkandependencyFlags is a bitmask of G.\vulkanflags is a bitmask of " specifying usage of the subpass.\vulkanpipelineBindPoint is a X value specifying the pipeline type supported for this subpass.\vulkanpInputAttachments is a pointer to an array of  structures defining the input attachments for this subpass and their layouts.\vulkanpColorAttachments is a pointer to an array of colorAttachmentCount  structures defining the color attachments for this subpass and their layouts.\vulkanpResolveAttachments is NULL or a pointer to an array of colorAttachmentCount  structures defining the resolve attachments for this subpass and their layouts.\vulkanpDepthStencilAttachment is a pointer to a  structure specifying the depth/stencil attachment for this subpass and its layout.\vulkanpPreserveAttachments is a pointer to an array of preserveAttachmentCount render pass attachment indices identifying attachments that are not used by this subpass, but whose contents must& be preserved throughout the subpass.\vulkan attachment is either an integer value identifying an attachment at the corresponding index in :: pAttachments, or . to signify that this attachment is not used.\vulkanlayout is a O value specifying the layout the attachment uses during the subpass.\vulkanflags is a bitmask of +5 specifying additional properties of the attachment.\vulkanformat is a K value specifying the format of the image view that will be used for the attachment.\vulkansamples is a b6 value specifying the number of samples of the image.\vulkanloadOp is a + value specifying how the contents of color and depth components of the attachment are treated at the beginning of the subpass where it is first used.\vulkanstoreOp is a + value specifying how the contents of color and depth components of the attachment are treated at the end of the subpass where it is last used.\vulkan stencilLoadOp is a + value specifying how the contents of stencil components of the attachment are treated at the beginning of the subpass where it is first used.\vulkanstencilStoreOp is a + value specifying how the contents of stencil components of the attachment are treated at the end of the last subpass where it is used.\vulkan initialLayout is the layout the attachment image subresource will be in when a render pass instance begins.\vulkan finalLayout is the layout the attachment image subresource will be transitioned to when a render pass instance ends.\vulkan5vkCreateFramebuffer - Create a new framebuffer object Valid Usage*VUID-vkCreateFramebuffer-pCreateInfo-02777 If pCreateInfo->flags does not include # , and attachmentCount is not 0, each element of pCreateInfo->pAttachments must have been created on deviceValid Usage (Implicit))VUID-vkCreateFramebuffer-device-parameter device must be a valid  handle.VUID-vkCreateFramebuffer-pCreateInfo-parameter  pCreateInfo must be a valid pointer to a valid  structure-VUID-vkCreateFramebuffer-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure/VUID-vkCreateFramebuffer-pFramebuffer-parameter  pFramebuffer must be a valid pointer to a  handle Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , \vulkan=A convenience wrapper to make a compatible pair of calls to \ and \To ensure that \ is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.\vulkan3vkDestroyFramebuffer - Destroy a framebuffer object Valid Usage+VUID-vkDestroyFramebuffer-framebuffer-00892+ All submitted commands that refer to  framebuffer must have completed execution+VUID-vkDestroyFramebuffer-framebuffer-00893 If  were provided when  framebuffer1 was created, a compatible set of callbacks must be provided here+VUID-vkDestroyFramebuffer-framebuffer-00894 If no  were provided when  framebuffer was created,  pAllocator must be NULLValid Usage (Implicit)*VUID-vkDestroyFramebuffer-device-parameter device must be a valid  handle/VUID-vkDestroyFramebuffer-framebuffer-parameter If  framebuffer is not ,  framebuffer must be a valid  handle.VUID-vkDestroyFramebuffer-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure,VUID-vkDestroyFramebuffer-framebuffer-parent If  framebuffer is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  framebuffer must be externally synchronizedSee Also, , \vulkan4vkCreateRenderPass - Create a new render pass objectValid Usage (Implicit)(VUID-vkCreateRenderPass-device-parameter device must be a valid  handle-VUID-vkCreateRenderPass-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid  structure,VUID-vkCreateRenderPass-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure-VUID-vkCreateRenderPass-pRenderPass-parameter  pRenderPass must be a valid pointer to a z handle Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , z, \vulkan=A convenience wrapper to make a compatible pair of calls to \ and \To ensure that \ is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.\vulkan2vkDestroyRenderPass - Destroy a render pass object Valid Usage)VUID-vkDestroyRenderPass-renderPass-00873+ All submitted commands that refer to  renderPass must have completed execution)VUID-vkDestroyRenderPass-renderPass-00874 If  were provided when  renderPass1 was created, a compatible set of callbacks must be provided here)VUID-vkDestroyRenderPass-renderPass-00875 If no  were provided when  renderPass was created,  pAllocator must be NULLValid Usage (Implicit))VUID-vkDestroyRenderPass-device-parameter device must be a valid  handle-VUID-vkDestroyRenderPass-renderPass-parameter If  renderPass is not ,  renderPass must be a valid z handle-VUID-vkDestroyRenderPass-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure*VUID-vkDestroyRenderPass-renderPass-parent If  renderPass is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  renderPass must be externally synchronizedSee Also, , z\vulkanvkGetRenderAreaGranularity - Returns the granularity for optimal render area Description%The conditions leading to an optimal  renderArea are:the offset.x member in  renderArea is a multiple of the width member of the returned v# (the horizontal granularity).the offset.y member in  renderArea is a multiple of the height member of the returned v! (the vertical granularity). either the  extent.width member in  renderArea5 is a multiple of the horizontal granularity or offset.x+ extent.width is equal to the width of the  framebuffer in the . either the  extent.height member in  renderArea3 is a multiple of the vertical granularity or offset.y+ extent.height is equal to the height of the  framebuffer in the .Subpass dependencies are not affected by the render area, and apply to the entire image subresources attached to the framebuffer as specified in the description of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-layout-transitionsautomatic layout transitions. Similarly, pipeline barriers are valid even if their effect extends outside the render area.Valid Usage (Implicit)0VUID-vkGetRenderAreaGranularity-device-parameter device must be a valid  handle4VUID-vkGetRenderAreaGranularity-renderPass-parameter  renderPass must be a valid z handle6VUID-vkGetRenderAreaGranularity-pGranularity-parameter  pGranularity must be a valid pointer to a v structure1VUID-vkGetRenderAreaGranularity-renderPass-parent  renderPass must1 have been created, allocated, or retrieved from deviceSee Also, v, z\vulkandevice4 is the logical device that creates the framebuffer.vulkan pCreateInfo is a pointer to a  structure describing additional information about framebuffer creation.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.\vulkandevice5 is the logical device that destroys the framebuffer.vulkan framebuffer- is the handle of the framebuffer to destroy.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.\vulkandevice4 is the logical device that creates the render pass.vulkan pCreateInfo is a pointer to a 9 structure describing the parameters of the render pass.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.\vulkandevice5 is the logical device that destroys the render pass.vulkan renderPass- is the handle of the render pass to destroy.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.\vulkandevice1 is the logical device that owns the render pass.vulkan renderPass is a handle to a render pass.G((((HXz11\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\####+++++++++++++++++++++++++++++++++++++++++++++++\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\1z1++++++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++G(((((((H#####None( #$&'(./0289:<>?(d^ vulkanVkRenderPassFragmentDensityMapCreateInfoEXT - Structure containing fragment density map attachment for render pass DescriptionThe fragment density map is read at an implementation-dependent time with the following constraints determined by the attachment@s image view flags: specifies that the fragment density map will be read by the device during     specifies that the fragment density map will be read by the host during  of the primary command buffer that the render pass is recorded intoOtherwise the fragment density map will be read by the host during The fragment density map may, additionally be read by the device during    for any mode./If this structure is not present, it is as if fragmentDensityMapAttachment was given as . Valid UsageVUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02547 If fragmentDensityMapAttachment is not , fragmentDensityMapAttachment must be less than 7::attachmentCountVUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02548 If fragmentDensityMapAttachment is not , fragmentDensityMapAttachment must not be an element of 7 ::pInputAttachments, 7 ::pColorAttachments, 7 ::pResolveAttachments, 7 ::pDepthStencilAttachment , or 7 ::pPreserveAttachments for any subpassVUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02549 If fragmentDensityMapAttachment is not , layout must be equal to  , or VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02550 If fragmentDensityMapAttachment is not , fragmentDensityMapAttachment must% reference an attachment with a loadOp equal to  or VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02551 If fragmentDensityMapAttachment is not , fragmentDensityMapAttachment must% reference an attachment with a storeOp equal to Valid Usage (Implicit)?('vulkanVkMemoryAllocateInfo - Structure containing parameters of a memory allocation Description7The internal data of an allocated device memory object must include a reference to implementation-specific resources, referred to as the memory object@s payload. Applications can also import and export that internal data to and from device memory objects to share data between Vulkan instances and other compatible APIs. A 5 structure defines a memory import operation if its pNext0 chain includes one of the following structures: with a non-zero  handleType value with a non-zero  handleType value with a non-zero  handleType value with a non-NULL buffer value with a non-zero  handleType valueIf the parameters define an import operation and the external handle type is B , B , or B, allocationSize is ignored. The implementation must2 query the size of these allocations from the OS.Whether device memory objects constructed via a memory import operation hold a reference to their payload depends on the properties of the handle type used to perform the import, as defined below for each valid handle type. Importing memory must8 not modify the content of the memory. Implementations must ensure that importing memory does not enable the importing Vulkan instance to access any memory or resources in other Vulkan instances other than that corresponding to the memory object imported. Implementations must also ensure accessing imported memory which has not been initialized does not allow the importing Vulkan instance to obtain data from the exporting Vulkan instance or vice-versa.NoteHow exported and imported memory is isolated is left to the implementation, but applications should be aware that such isolation may prevent implementations from placing multiple exportable memory objects in the same physical or virtual page. Hence, applications should avoid creating many small external memory objects whenever possible.Importing memory must? not increase overall heap usage within a system. However, it must) affect the following per-process values:W::maxMemoryAllocationCount:: heapUsageWhen performing a memory import operation, it is the responsibility of the application to ensure the external handles and their associated payloads meet all valid usage requirements. However, implementations must perform sufficient validation of external handles and payloads to ensure that the operation results in a valid memory object which will not cause program termination, device loss, queue stalls, or corruption of other resources when used as allowed according to its allocation parameters. If the external handle provided does not meet these requirements, the implementation must8 fail the memory import operation with the error code . Valid Usage%VUID-VkMemoryAllocateInfo-pNext-00639 If the pNext chain includes a ? structure, and any of the handle types specified in :: handleTypes: require a dedicated allocation, as reported by U  in Q::/externalMemoryProperties.externalMemoryFeatures or Q::/externalMemoryProperties.externalMemoryFeatures , the pNext chain must include a  or  structure with either its image or buffer' member set to a value other than  %VUID-VkMemoryAllocateInfo-pNext-00640 If the pNext chain includes a  structure, it must not include a  or  structure%VUID-VkMemoryAllocateInfo-pNext-00641 If the pNext chain includes a  structure, it must not include a  structure.VUID-VkMemoryAllocateInfo-allocationSize-01742 If the parameters define an import operation, the external handle specified was created by the Vulkan API, and the external handle type is  , then the values of allocationSize and memoryTypeIndex must match those specified when the payload being imported was created$VUID-VkMemoryAllocateInfo-None-00643 If the parameters define an import operation and the external handle specified was created by the Vulkan API, the device mask specified by  must match that specified when the payload being imported was allocated$VUID-VkMemoryAllocateInfo-None-00644 If the parameters define an import operation and the external handle specified was created by the Vulkan API, the list of physical devices that comprise the logical device passed to ] must match the list of physical devices that comprise the logical device on which the payload was originally allocated/VUID-VkMemoryAllocateInfo-memoryTypeIndex-00645 If the parameters define an import operation and the external handle is an NT handle or a global share handle created outside of the Vulkan API, the value of memoryTypeIndex must" be one of those returned by  .VUID-VkMemoryAllocateInfo-allocationSize-01743 If the parameters define an import operation, the external handle was created by the Vulkan API, and the external handle type is  or , then the values of allocationSize and memoryTypeIndex must match those specified when the payload being imported was created.VUID-VkMemoryAllocateInfo-allocationSize-00647 If the parameters define an import operation and the external handle type is B, allocationSize must match the size specified when creating the Direct3D 12 heap from which the payload was extracted/VUID-VkMemoryAllocateInfo-memoryTypeIndex-00648 If the parameters define an import operation and the external handle is a POSIX file descriptor created outside of the Vulkan API, the value of memoryTypeIndex must" be one of those returned by  /VUID-VkMemoryAllocateInfo-memoryTypeIndex-01872? If the protected memory feature is not enabled, the ::memoryTypeIndex must3 not indicate a memory type that reports /VUID-VkMemoryAllocateInfo-memoryTypeIndex-01744 If the parameters define an import operation and the external handle is a host pointer, the value of memoryTypeIndex must' be one of those returned by  .VUID-VkMemoryAllocateInfo-allocationSize-01745 If the parameters define an import operation and the external handle is a host pointer, allocationSize must be an integer multiple of ::minImportedHostPointerAlignment%VUID-VkMemoryAllocateInfo-pNext-02805 If the parameters define an import operation and the external handle is a host pointer, the pNext chain must not include a  structure with either its image or buffer& field set to a value other than %VUID-VkMemoryAllocateInfo-pNext-02806 If the parameters define an import operation and the external handle is a host pointer, the pNext chain must not include a  structure with either its image or buffer& field set to a value other than .VUID-VkMemoryAllocateInfo-allocationSize-02383 If the parameters define an import operation and the external handle type is B , allocationSize must be the size returned by  % for the Android hardware buffer%VUID-VkMemoryAllocateInfo-pNext-02384 If the parameters define an import operation and the external handle type is B , and the pNext chain does not include a  structure or ::image is #, the Android hardware buffer must have a AHardwareBuffer_Desc::format of AHARDWAREBUFFER_FORMAT_BLOB and a AHardwareBuffer_Desc::usage that includes %AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER/VUID-VkMemoryAllocateInfo-memoryTypeIndex-02385 If the parameters define an import operation and the external handle type is B , memoryTypeIndex must" be one of those returned by  % for the Android hardware buffer%VUID-VkMemoryAllocateInfo-pNext-01874 If the parameters do not define an import operation, and the pNext chain includes a  structure with B  included in its  handleTypes member, and the pNext chain includes a  structure with image not equal to , then allocationSize must be 0 , otherwise allocationSize must be greater than 0%VUID-VkMemoryAllocateInfo-pNext-02386 If the parameters define an import operation, the external handle is an Android hardware buffer, and the pNext chain includes a  with image that is not *, the Android hardware buffer@s  ::usage must include at least one of %AHARDWAREBUFFER_USAGE_GPU_FRAMEBUFFER or 'AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE%VUID-VkMemoryAllocateInfo-pNext-02387 If the parameters define an import operation, the external handle is an Android hardware buffer, and the pNext chain includes a  with image that is not , the format of image must be % or the format returned by   in ::format% for the Android hardware buffer%VUID-VkMemoryAllocateInfo-pNext-02388 If the parameters define an import operation, the external handle is an Android hardware buffer, and the pNext chain includes a  structure with image that is not 8, the width, height, and array layer dimensions of image( and the Android hardware buffer@s AHardwareBuffer_Desc must be identical%VUID-VkMemoryAllocateInfo-pNext-02389 If the parameters define an import operation, the external handle is an Android hardware buffer, and the pNext chain includes a  structure with image that is not ., and the Android hardware buffer@s  ::usage includes )AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE, the image must have a complete mipmap chain%VUID-VkMemoryAllocateInfo-pNext-02586 If the parameters define an import operation, the external handle is an Android hardware buffer, and the pNext chain includes a  structure with image that is not ., and the Android hardware buffer@s  ::usage does not include )AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE , the image must have exactly one mipmap level%VUID-VkMemoryAllocateInfo-pNext-02390 If the parameters define an import operation, the external handle is an Android hardware buffer, and the pNext chain includes a  structure with image that is not $, each bit set in the usage of image must be listed in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-usage!AHardwareBuffer Usage Equivalence', and if there is a corresponding AHARDWAREBUFFER_USAGE bit listed that bit must3 be included in the Android hardware buffer@s AHardwareBuffer_Desc::usage4VUID-VkMemoryAllocateInfo-opaqueCaptureAddress-03329 If ::opaqueCaptureAddress is not zero, ::flags must include %VUID-VkMemoryAllocateInfo-flags-03330 If ::flags includes , the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressCaptureReplay bufferDeviceAddressCaptureReplay feature must be enabled%VUID-VkMemoryAllocateInfo-flags-03331 If ::flags includes , the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressbufferDeviceAddress feature must be enabled%VUID-VkMemoryAllocateInfo-pNext-03332 If the pNext chain includes a  structure, ::opaqueCaptureAddress must be zero4VUID-VkMemoryAllocateInfo-opaqueCaptureAddress-033339 If the parameters define an import operation, ::opaqueCaptureAddress must be zero$VUID-VkMemoryAllocateInfo-None-04749 If the parameters define an import operation and the external handle type is B, the value of memoryTypeIndex must5 be an index identifying a memory type from the memoryTypeBits field of the , structure populated by a call to  .VUID-VkMemoryAllocateInfo-allocationSize-04750 If the parameters define an import operation and the external handle type is B, the value of allocationSize must be greater than 0 and must be less than or equal to the size of the VMO as determined by zx_vmo_get_size(handle) where handle7 is the VMO handle to the imported external memory.VUID-VkMemoryAllocateInfo-allocationSize-06231 allocationSize must be less than W::maxMemoryAllocationSizeValid Usage (Implicit)%VUID-VkMemoryAllocateInfo-sType-sType sType must be  %VUID-VkMemoryAllocateInfo-pNext-pNext Each pNext: member of any structure (including this one) in the pNext chain must be either NULL* or a pointer to a valid instance of , , , , , , , , , , , , , , or &VUID-VkMemoryAllocateInfo-sType-unique The sType" value of each struct in the pNext chain must be uniqueSee Alsoo, , ]vulkanVkMappedMemoryRange - Structure specifying a mapped memory range Valid Usage%VUID-VkMappedMemoryRange-memory-00684 memory must be currently host mapped#VUID-VkMappedMemoryRange-size-00685 If size is not equal to  , offset and size must specify a range contained within the currently mapped range of memory#VUID-VkMappedMemoryRange-size-00686 If size is equal to  , offset must. be within the currently mapped range of memory%VUID-VkMappedMemoryRange-offset-00687 offset must be a multiple of  ::nonCoherentAtomSize#VUID-VkMappedMemoryRange-size-01389 If size is equal to  ), the end of the current mapping of memory must either be a multiple of  ::nonCoherentAtomSize bytes from the beginning of the memory object, or be equal to the end of the memory object#VUID-VkMappedMemoryRange-size-01390 If size is not equal to  , size must# either be a multiple of  ::nonCoherentAtomSize , or offset plus size must equal the size of memoryValid Usage (Implicit)$VUID-VkMappedMemoryRange-sType-sType sType must be  $VUID-VkMappedMemoryRange-pNext-pNext pNext must be NULL)VUID-VkMappedMemoryRange-memory-parameter memory must be a valid  handleSee Also, o, , ], ]]vulkanmemory2 is the memory object to which this range belongs.]vulkanoffset is the zero-based byte offset from the beginning of the memory object.]vulkansize" is either the size of range, or   to affect the range from offset5 to the end of the current mapping of the allocation.]vulkanpNext is NULL6 or a pointer to a structure extending this structure.]vulkanallocationSize( is the size of the allocation in bytes.]vulkanmemoryTypeIndex1 is an index identifying a memory type from the  memoryTypes array of the   structure.]vulkan)vkAllocateMemory - Allocate device memory DescriptionAllocations returned by ] are guaranteed to meet any alignment requirement of the implementation. For example, if an implementation requires 128 byte alignment for images and 64 byte alignment for buffers, the device memory returned through this mechanism would be 128-byte aligned. This ensures that applications can correctly suballocate objects of different types (with potentially different alignment requirements) in the same memory object.When memory is allocated, its contents are undefined with the following constraint:#The contents of unprotected memory must not be a function of the contents of data protected memory objects, even if those memory objects were previously freed.Note4The contents of memory allocated by one application should not be a function of data from protected memory objects of another application, even if those memory objects were previously freed.4The maximum number of valid memory allocations that can exist simultaneously within a  may be restricted by implementation- or platform-dependent limits. The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxMemoryAllocationCountmaxMemoryAllocationCount3 feature describes the number of allocations that can exist simultaneously before encountering these internal limits.NoteFor historical reasons, if maxMemoryAllocationCount0 is exceeded, some implementations may return . Exceeding this limit will result in undefined behavior, and an application should not rely on the use of the returned error code in order to identify when the limit is reached.Some platforms may have a limit on the maximum size of a single allocation. For example, certain systems may fail to create allocations with a size greater than or equal to 4GB. Such a limit is implementation-dependent, and if such a failure occurs then the error  must, be returned. This limit is advertised in W::maxMemoryAllocationSize./The cumulative memory size allocated to a heap can be limited by the size of the specified heap. In such cases, allocated memory is tracked on a per-device and per-heap basis. Some platforms allow overallocation into other heaps. The overallocation behavior can be specified through the %VK_AMD_memory_overallocation_behavior extension. Valid Usage)VUID-vkAllocateMemory-pAllocateInfo-01713 pAllocateInfo->allocationSize must be less than or equal to  :: memoryHeaps[memindex].size where memindex =  :: memoryTypes[pAllocateInfo->memoryTypeIndex]. heapIndex as returned by   for the 0  that device was created from)VUID-vkAllocateMemory-pAllocateInfo-01714 pAllocateInfo->memoryTypeIndex must be less than  ::memoryTypeCount as returned by   for the 0  that device was created from0VUID-vkAllocateMemory-deviceCoherentMemory-02790 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-deviceCoherentMemorydeviceCoherentMemory feature is not enabled, pAllocateInfo->memoryTypeIndex must1 not identify a memory type supporting 4VUID-vkAllocateMemory-maxMemoryAllocationCount-04101 There must be less than  ::maxMemoryAllocationCount device memory allocations currently allocated on the deviceValid Usage (Implicit)&VUID-vkAllocateMemory-device-parameter device must be a valid  handle-VUID-vkAllocateMemory-pAllocateInfo-parameter  pAllocateInfo must be a valid pointer to a valid  structure*VUID-vkAllocateMemory-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure'VUID-vkAllocateMemory-pMemory-parameter pMemory must be a valid pointer to a  handle Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , ]vulkan=A convenience wrapper to make a compatible pair of calls to ] and ]To ensure that ] is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.]vulkan!vkFreeMemory - Free device memory Description/Before freeing a memory object, an application must ensure the memory object is no longer in use by the device@@for example by command buffers in the  pending state . Memory can be freed whilst still bound to resources, but those resources must not be used afterwards. Freeing a memory object releases the reference it held, if any, to its payload. If there are still any bound images or buffers, the memory object@s payload may8 not be immediately released by the implementation, but must be released by the time all bound images and buffers have been destroyed. Once all references to a payload are released, it is returned to the heap from which it was allocated.How memory objects are bound to Images and Buffers is described in detail in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-associationResource Memory Association section.If a memory object is mapped at the time it is freed, it is implicitly unmapped.NoteAs described  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-device-unmap-does-not-flushbelow, host writes are not implicitly flushed when the memory object is unmapped, but the implementation must guarantee that writes that have not been flushed do not affect any other memory. Valid UsageVUID-vkFreeMemory-memory-00677+ All submitted commands that refer to memory (via images or buffers) must have completed executionValid Usage (Implicit)"VUID-vkFreeMemory-device-parameter device must be a valid  handle"VUID-vkFreeMemory-memory-parameter If memory is not , memory must be a valid  handle&VUID-vkFreeMemory-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structureVUID-vkFreeMemory-memory-parent If memory is a valid handle, it must1 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to memory must be externally synchronizedSee Also, , ]vulkanvkMapMemory - Map a memory object into application address space DescriptionAfter a successful call to ] the memory object memory is considered to be currently  host mapped.Note#It is an application error to call ]% on a memory object that is already  host mapped.Note] will fail if the implementation is unable to allocate an appropriately sized contiguous virtual address range, e.g. due to virtual address space fragmentation or platform limits. In such cases, ] must return . The application can improve the likelihood of success by reducing the size of the mapped range and/or removing unneeded mappings using ].] does not check whether the device memory is currently in use before returning the host-accessible pointer. The application must guarantee that any previously submitted command that writes to this range has completed before the host reads from or writes to that range, and that any previously submitted command that reads from that range has completed before the host writes to that region (see  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-host-writeshere for details on fulfilling such a guarantee). If the device memory was allocated without the  set, these guarantees must1 be made for an extended range: the application must round down the start of the range to the nearest multiple of  ::nonCoherentAtomSize, and round the end of the range up to the nearest multiple of  ::nonCoherentAtomSize.While a range of device memory is host mapped, the application is responsible for synchronizing both device and host access to that memory range.NoteIt is important for the application developer to become meticulously familiar with all of the mechanisms described in the chapter on  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization!Synchronization and Cache Control< as they are crucial to maintaining memory access ordering. Valid UsageVUID-vkMapMemory-memory-00678 memory must" not be currently host mappedVUID-vkMapMemory-offset-00679 offset must be less than the size of memoryVUID-vkMapMemory-size-00680 If size is not equal to  , size must be greater than 0VUID-vkMapMemory-size-00681 If size is not equal to  , size must/ be less than or equal to the size of the memory minus offsetVUID-vkMapMemory-memory-00682 memory must= have been created with a memory type that reports VUID-vkMapMemory-memory-00683 memory must5 not have been allocated with multiple instancesValid Usage (Implicit)!VUID-vkMapMemory-device-parameter device must be a valid  handle!VUID-vkMapMemory-memory-parameter memory must be a valid  handle"VUID-vkMapMemory-flags-zerobitmask flags must be 0!VUID-vkMapMemory-ppData-parameter ppData must+ be a valid pointer to a pointer valueVUID-vkMapMemory-memory-parent memory must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to memory must be externally synchronized Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , o, V]vulkan not ever be visible to the device. However, implementations must ensure that writes that have not been flushed do not become visible to any other memory.NoteThe above guarantee avoids a potential memory corruption in scenarios where host writes to a mapped memory object have not been flushed before the memory is unmapped (or freed), and the virtual address range is subsequently reused for a different mapping (or memory allocation). Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, ]vulkanvkInvalidateMappedMemoryRanges - Invalidate ranges of mapped memory objects Description] guarantees that device writes to the memory ranges described by  pMemoryRanges, which have been made available to the host memory domain using the  and   https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access types, are made visible to the host. If a range of non-coherent memory is written by the host and then invalidated without first being flushed, its contents are undefined.Within each range described by  pMemoryRanges, each set of nonCoherentAtomSize bytes in that range is invalidated if any byte in that set has been written by the device since it was first host mapped, or the last time it was invalidated.NoteMapping non-coherent memory does not implicitly invalidate that memory. Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, ]vulkanvkGetDeviceMemoryCommitment - Query the current commitment for a VkDeviceMemory DescriptionThe implementation may update the commitment at any time, and the value returned by this query may be out of date.The implementation guarantees to allocate any committed memory from the  heapIndex indicated by the memory type that the memory object was created with.Valid Usage (Implicit)See Also, , o]vulkandevice, is the logical device that owns the memory.vulkan pAllocateInfo is a pointer to a  structure describing parameters of the allocation. A successfully returned allocation must use the requested parameters@@@no substitution is permitted by the implementation.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.]vulkandevice, is the logical device that owns the memory.vulkanmemory is the  object to be freed.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.]vulkandevice, is the logical device that owns the memory.vulkanmemory is the  object to be mapped.vulkanoffset is a zero-based byte offset from the beginning of the memory object.vulkansize- is the size of the memory range to map, or   to map from offset to the end of the allocation.vulkanflags is reserved for future use.]vulkandevice, is the logical device that owns the memory.vulkanmemory% is the memory object to be unmapped.]vulkandevice3 is the logical device that owns the memory ranges./VUID-vkFlushMappedMemoryRanges-device-parameter device must be a valid  handlevulkan pMemoryRanges is a pointer to an array of 3 structures describing the memory ranges to flush.6VUID-vkFlushMappedMemoryRanges-pMemoryRanges-parameter  pMemoryRanges must# be a valid pointer to an array of memoryRangeCount valid  structures]vulkandevice3 is the logical device that owns the memory ranges.4VUID-vkInvalidateMappedMemoryRanges-device-parameter device must be a valid  handlevulkan pMemoryRanges is a pointer to an array of 8 structures describing the memory ranges to invalidate.;VUID-vkInvalidateMappedMemoryRanges-pMemoryRanges-parameter  pMemoryRanges must$ be a valid pointer to an array of memoryRangeCount valid  structures]vulkandevice, is the logical device that owns the memory.1VUID-vkGetDeviceMemoryCommitment-device-parameter device must be a valid  handlevulkanmemory$ is the memory object being queried.-VUID-vkGetDeviceMemoryCommitment-memory-00690 memory must5 have been created with a memory type that reports  1VUID-vkGetDeviceMemoryCommitment-memory-parameter memory must be a valid  handle.VUID-vkGetDeviceMemoryCommitment-memory-parent memory must2 have been created, allocated, or retrieved from deviceV ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]V 2None( #$&'(./0289:<>?)vulkanVkImageViewCreateInfo - Structure specifying parameters of a newly created image view Description Some of the image creation parameters are inherited by the view. In particular, image view creation inherits the implicit parameter usage specifying the allowed usages of the image view that, by default, takes the value of the corresponding usage parameter specified in 1' at image creation time. The implicit usage can be overriden by adding a  structure to the pNext chain, but the view usage must% be a subset of the image usage. If image5 has a depth-stencil format and was created with a a structure included in the pNext chain of 1(, the usage is calculated based on the subresource.aspectMask provided:If  aspectMask includes only  , the implicit usage is equal to a:: stencilUsage.If  aspectMask includes only  , the implicit usage is equal to 1::usage. If both aspects are included in  aspectMask, the implicit usage+ is equal to the intersection of 1::usage and a:: stencilUsage.If image was created with the  flag, and if the format of the image is not  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar, format can. be different from the image@s format, but if image was created without the # flag and they are not equal they must be  compatible1. Image format compatibility is defined in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classesFormat Compatibility Classes section. Views of compatible formats will have the same mapping between texel coordinates and memory locations irrespective of the format<, with only the interpretation of the bit pattern changing.Note0Values intended to be used with one view format may not be exactly preserved when written or read through a different format. For example, an integer value that happens to have the bit pattern of a floating point denorm or NaN may be flushed or canonicalized when written or read through a view with a floating point format. Similarly, a value written through a signed normalized format that has a bit pattern exactly equal to -2b may( be changed to -2b + 1 as described in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-fixedfpconv8Conversion from Normalized Fixed-Point to Floating-Point.If image was created with the  flag, format must be  compatible1 with the image@s format as described above, or must- be an uncompressed format in which case it must be size-compatible* with the image@s format, as defined for  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-images-format-size-compatibilitycopying data between images. In this case, the resulting image view@s texel dimensions equal the dimensions of the selected mip level divided by the compressed texel block size and rounded up.The   components member describes a remapping from components of the image to components of the vector returned by shader image instructions. This remapping must be the identity swizzle for storage image descriptors, input attachment descriptors, framebuffer attachments, and any 3 used with a combined image sampler that enables  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y@CBCR conversion.?If the image view is to be used with a sampler which supports  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y@CBCR conversion, an identically defined object of type D % to that used to create the sampler must be passed to ] in a  included in the pNext chain of . Conversely, if a D  object is passed to ], an identically defined D  object must" be used when sampling the image.If the image has a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format and subresourceRange.aspectMask is  , then the format must be identical to the image format2, and the sampler to be used with the image view must enable  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y@CBCR conversion.If image was created with the  and the image has a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format , and if subresourceRange.aspectMask is  ,  , or  , format must be  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes compatible with the corresponding plane of the image, and the sampler to be used with the image view must not enable  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y@CBCR conversion. The width and height of the single-plane image view must be derived from the multi-planar image@s dimensions in the manner listed for  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planesplane compatibility for the plane.Any view of an image plane will have the same mapping between texel coordinates and memory locations as used by the channels of the color aspect, subject to the formulae relating texel coordinates to lower-resolution planes as described in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-chroma-reconstructionChroma Reconstruction. That is, if an R or B plane has a reduced resolution relative to the G plane of the multi-planar image, the image view operates using the (uplane, vplane) unnormalized coordinates of the reduced-resolution plane, and these coordinates access the same memory locations as the (ucolor, vcolor) unnormalized coordinates of the color aspect for which chroma reconstruction operations operate on the same (uplane, vplane) or (iplane, jplane) coordinates.Image View TypeCompatible Image Types!!!  , !  , !!!9Image type and image view type compatibility requirements Valid Usage&VUID-VkImageViewCreateInfo-image-01003 If image was not created with  then viewType must not be ! or !8)VUID-VkImageViewCreateInfo-viewType-01004 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-imageCubeArrayimage cubemap arrays feature is not enabled, viewType must not be !&VUID-VkImageViewCreateInfo-image-01005 If image was created with  but without  set then viewType must not be ! or !&VUID-VkImageViewCreateInfo-image-04970 If image was created with  and viewType is ! or ! then subresourceRange.levelCount must be 1&VUID-VkImageViewCreateInfo-image-04971 If image was created with  and viewType is ! or ! then flags must not contain any of  ,  , and  &VUID-VkImageViewCreateInfo-image-04972 If image was created with a samples value not equal to & then viewType must be either ! or !&VUID-VkImageViewCreateInfo-image-04441 image must have been created with a usage value containing at least one of the usages defined in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#valid-imageview-imageusagevalid image usage list for image views%VUID-VkImageViewCreateInfo-None-02273 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features" of the resultant image view must contain at least one bit&VUID-VkImageViewCreateInfo-usage-02274 If usage contains  , then the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features" of the resultant image view must contain &VUID-VkImageViewCreateInfo-usage-02275 If usage contains  ", then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain &VUID-VkImageViewCreateInfo-usage-02276 If usage contains  ", then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain &VUID-VkImageViewCreateInfo-usage-02277 If usage contains  ", then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain &VUID-VkImageViewCreateInfo-usage-02652 If usage contains  ", then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain at least one of  or 1VUID-VkImageViewCreateInfo-subresourceRange-01478 subresourceRange.baseMipLevel must be less than the  mipLevels specified in 1 when image was created1VUID-VkImageViewCreateInfo-subresourceRange-01718 If subresourceRange.levelCount is not , subresourceRange.baseMipLevel + subresourceRange.levelCount must be less than or equal to the  mipLevels specified in 1 when image was created&VUID-VkImageViewCreateInfo-image-02571 If image was created with usage containing  , subresourceRange.levelCount must be 1&VUID-VkImageViewCreateInfo-image-01482 If image* is not a 3D image created with  set, or viewType is not ! or !, subresourceRange.baseArrayLayer must be less than the  arrayLayers specified in 1 when image was created1VUID-VkImageViewCreateInfo-subresourceRange-01483 If subresourceRange.layerCount is not , image* is not a 3D image created with  set, or viewType is not ! or !, subresourceRange.layerCount must be non-zero and subresourceRange.baseArrayLayer + subresourceRange.layerCount must be less than or equal to the  arrayLayers specified in 1 when image was created&VUID-VkImageViewCreateInfo-image-02724 If image& is a 3D image created with  set, and viewType is ! or !, subresourceRange.baseArrayLayer must+ be less than the depth computed from  baseMipLevel and  extent.depth specified in 1 when image< was created, according to the formula defined in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-miplevel-sizingImage Miplevel Sizing1VUID-VkImageViewCreateInfo-subresourceRange-02725 If subresourceRange.layerCount is not , image& is a 3D image created with  set, and viewType is ! or !, subresourceRange.layerCount must be non-zero and subresourceRange.baseArrayLayer + subresourceRange.layerCount must7 be less than or equal to the depth computed from  baseMipLevel and  extent.depth specified in 1 when image< was created, according to the formula defined in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-miplevel-sizingImage Miplevel Sizing&VUID-VkImageViewCreateInfo-image-01761 If image was created with the ! flag, but without the  flag, and if the format of the image is not a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format, format must be compatible with the format used to create image, as defined in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classesFormat Compatibility Classes&VUID-VkImageViewCreateInfo-image-01583 If image was created with the  flag, format must be compatible with, or must be an uncompressed format that is size-compatible with, the format used to create image&VUID-VkImageViewCreateInfo-image-01584 If image was created with the  flag, the  levelCount and  layerCount members of subresourceRange must both be 1&VUID-VkImageViewCreateInfo-image-04739 If image was created with the  flag and format is a non-compressed format, viewType must not be !&VUID-VkImageViewCreateInfo-pNext-01585 If a g$ structure was included in the pNext chain of the 1# structure used when creating image and g::viewFormatCount is not zero then format must be one of the formats in g:: pViewFormats&VUID-VkImageViewCreateInfo-image-01586 If image was created with the  flag, if the format of the image is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format, and if subresourceRange.aspectMask is one of  ,  , or   , then format must be compatible with the K for the plane of the image format indicated by subresourceRange.aspectMask, as defined in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes&VUID-VkImageViewCreateInfo-image-01762 If image$ was not created with the  flag, or if the format of the image is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format and if subresourceRange.aspectMask is , format must be identical to the format used to create image'VUID-VkImageViewCreateInfo-format-04724 If format% is one of those listed in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion, then the pNext chain must include a  structure with a conversion value other than VK_NULL_HANDLE'VUID-VkImageViewCreateInfo-format-04714 If format has a _422 or _420 suffix then image must< have been created with a width that is a multiple of 2'VUID-VkImageViewCreateInfo-format-04715 If format has a _420 suffix then image must= have been created with a height that is a multiple of 2&VUID-VkImageViewCreateInfo-pNext-01970 If the pNext chain includes a  structure with a  conversion value other than , all members of  components must have the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views-identity-mappingsidentity swizzle&VUID-VkImageViewCreateInfo-image-01020 If image is non-sparse then it must7 be bound completely and contiguously to a single 0  object1VUID-VkImageViewCreateInfo-subResourceRange-01021 viewType must be compatible with the type of image as shown in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views-compatibilityview type compatibility table&VUID-VkImageViewCreateInfo-image-02399 If image has an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formatsexternal format, format must be &VUID-VkImageViewCreateInfo-image-02400 If image has an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formatsexternal format , the pNext chain must include a  structure with a  conversion6 object created with the same external format as image&VUID-VkImageViewCreateInfo-image-02401 If image has an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formatsexternal format, all members of  components must be the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views-identity-mappingsidentity swizzle&VUID-VkImageViewCreateInfo-image-02086 If image was created with usage containing  , viewType must be ! or !&VUID-VkImageViewCreateInfo-image-02087 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshadingRateImage feature is enabled, and If image was created with usage containing , format must be &VUID-VkImageViewCreateInfo-usage-04550 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate%attachmentFragmentShadingRate feature is enabled, and the usage" for the image view includes  ", then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain &VUID-VkImageViewCreateInfo-usage-04551 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate%attachmentFragmentShadingRate feature is enabled, the usage" for the image view includes  , and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-layeredShadingRateAttachmentslayeredShadingRateAttachments is /, subresourceRange.layerCount must be 1&VUID-VkImageViewCreateInfo-flags-02572 If  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapDynamicdynamic fragment density map feature is not enabled, flags must not contain !&VUID-VkImageViewCreateInfo-flags-03567 If  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapDeferreddeferred fragment density map feature is not enabled, flags must not contain !&VUID-VkImageViewCreateInfo-flags-03568 If flags contains !, flags must not contain !&VUID-VkImageViewCreateInfo-image-03569 If image was created with flags containing   and usage containing  , subresourceRange.layerCount must be less than or equal to https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxSubsampledArrayLayers::maxSubsampledArrayLayers/VUID-VkImageViewCreateInfo-invocationMask-04993 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMaskinvocationMask feature is enabled, and if image was created with usage containing , format must be &VUID-VkImageViewCreateInfo-flags-04116 If flags does not contain ! and image was created with usage containing   , its flags must not contain any of ,  ,  , or  &VUID-VkImageViewCreateInfo-pNext-02662 If the pNext chain includes a  structure, and image was not created with a a structure included in the pNext chain of 1, its usage member must4 not include any bits that were not set in the usage member of the 1 structure used to create image&VUID-VkImageViewCreateInfo-pNext-02663 If the pNext chain includes a  structure, image was created with a a structure included in the pNext chain of 1 , and subresourceRange.aspectMask includes   , the usage member of the  instance must4 not include any bits that were not set in the usage member of the a structure used to create image&VUID-VkImageViewCreateInfo-pNext-02664 If the pNext chain includes a  structure, image was created with a a structure included in the pNext chain of 1 , and subresourceRange.aspectMask includes bits other than   , the usage member of the  structure must4 not include any bits that were not set in the usage member of the 1 structure used to create image.VUID-VkImageViewCreateInfo-imageViewType-04973 If viewType is !, ! , or ! ; and subresourceRange.layerCount is not  , then subresourceRange.layerCount must be 1.VUID-VkImageViewCreateInfo-imageViewType-04974 If viewType is !, ! , or ! ; and subresourceRange.layerCount is +, then the remaining number of layers must be 1)VUID-VkImageViewCreateInfo-viewType-02960 If viewType is ! and subresourceRange.layerCount is not , subresourceRange.layerCount must be 6)VUID-VkImageViewCreateInfo-viewType-02961 If viewType is ! and subresourceRange.layerCount is not , subresourceRange.layerCount must be a multiple of 6)VUID-VkImageViewCreateInfo-viewType-02962 If viewType is ! and subresourceRange.layerCount is &, the remaining number of layers must be 6)VUID-VkImageViewCreateInfo-viewType-02963 If viewType is ! and subresourceRange.layerCount is &, the remaining number of layers must be a multiple of 67VUID-VkImageViewCreateInfo-imageViewFormatSwizzle-04465 If the VK_KHR_portability_subset extension is enabled, and ::imageViewFormatSwizzle is /, all elements of  components must have the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views-identity-mappingsidentity swizzleVUID-VkImageViewCreateInfo-imageViewFormatReinterpretation-04466 If the VK_KHR_portability_subset extension is enabled, and ::imageViewFormatReinterpretation is / , the K in format must not contain a different number of components, or a different number of bits in each component, than the format of the  in imageValid Usage (Implicit)&VUID-VkImageViewCreateInfo-sType-sType sType must be  &VUID-VkImageViewCreateInfo-pNext-pNext Each pNext: member of any structure (including this one) in the pNext chain must be either NULL* or a pointer to a valid instance of , , ,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileKHRVkVideoProfileKHR, or https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfilesKHRVkVideoProfilesKHR'VUID-VkImageViewCreateInfo-sType-unique The sType" value of each struct in the pNext chain must be unique*VUID-VkImageViewCreateInfo-flags-parameter flags must% be a valid combination of ! values*VUID-VkImageViewCreateInfo-image-parameter image must be a valid  handle-VUID-VkImageViewCreateInfo-viewType-parameter viewType must be a valid ! value+VUID-VkImageViewCreateInfo-format-parameter format must be a valid K value/VUID-VkImageViewCreateInfo-components-parameter  components must be a valid  structure5VUID-VkImageViewCreateInfo-subresourceRange-parameter subresourceRange must be a valid  structureSee Also, K, , , !, !, , ]vulkanVkImageSubresourceRange - Structure specifying an image subresource range Description-The number of mipmap levels and array layers must be a subset of the image subresources in the image. If an application wants to use all mip levels or layers in an image after the  baseMipLevel or baseArrayLayer, it can set  levelCount and  layerCount to the special values  and ; without knowing the exact number of mip levels or layers.For cube and cube array image views, the layers of the image view starting at baseArrayLayer correspond to faces in the order +X, -X, +Y, -Y, +Z, -Z. For cube arrays, each set of six sequential layers is a single cube, so the number of cube maps in a cube map array view is  layerCount / 6, and image array layer (baseArrayLayer' + i) is face index (i mod 6) of cube i / 6. If the number of layers in the view, whether set explicitly in  layerCount or implied by :, is not a multiple of 6, the last cube map in the array must not be accessed. aspectMask must be only ,   or   if format is a color, depth-only or stencil-only format, respectively, except if format is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format. If using a depth/stencil format with both depth and stencil components,  aspectMask must include at least one of   and  , and can include both. When the  structure is used to select a subset of the slices of a 3D image@s mip level in order to create a 2D or 2D array image view of a 3D image created with , baseArrayLayer and  layerCount specify the first slice index and the number of slices to include in the created image view. Such an image view can be used as a framebuffer attachment that refers only to the specified range of slices of the selected mip level. However, any layout transitions performed on such an attachment view during a render pass instance still apply to the entire subresource referenced which includes all the slices of the selected mip level.When using an image view of a depth/stencil image to populate a descriptor set (e.g. for sampling in the shader, or for use as an input attachment), the  aspectMask must only include one bit, which selects whether the image view is used for depth reads (i.e. using a floating-point sampler or input attachment in the shader) or stencil reads (i.e. using an unsigned integer sampler or input attachment in the shader). When an image view of a depth/stencil image is used as a depth/stencil framebuffer attachment, the  aspectMask is ignored and both depth and stencil image subresources are used.When creating a , if  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y@CBCR conversion! is enabled in the sampler, the  aspectMask of a subresourceRange used by the  must be .When creating a , if sampler Y@CBCR conversion is not enabled in the sampler and the image format is  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar , the image must have been created with  , and the  aspectMask of the @s subresourceRange must be  ,   or  . Valid Usage-VUID-VkImageSubresourceRange-levelCount-01720 If  levelCount is not , it must be greater than 0-VUID-VkImageSubresourceRange-layerCount-01721 If  layerCount is not , it must be greater than 0-VUID-VkImageSubresourceRange-aspectMask-01670 If  aspectMask includes , then it must not include any of  ,  , or  -VUID-VkImageSubresourceRange-aspectMask-02278  aspectMask must not include &VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT for any index iValid Usage (Implicit)1VUID-VkImageSubresourceRange-aspectMask-parameter  aspectMask must be a valid combination of   values7VUID-VkImageSubresourceRange-aspectMask-requiredbitmask  aspectMask must not be 0See Also", 6, , ,  ,  vulkanVkComponentMapping - Structure specifying a color component mappingValid Usage (Implicit)See Also, ), , Y]vulkanpNext is NULL6 or a pointer to a structure extending this structure.]vulkanflags is a bitmask of !5 describing additional parameters of the image view.]vulkanimage is a $ on which the view will be created.]vulkanviewType is a !. value specifying the type of the image view.]vulkanformat is a K describing the format and type used to interpret texel blocks in the image.]vulkan components is a  structure specifying a remapping of color components (or of depth or stencil components after they have been converted into color components).]vulkansubresourceRange is a  structure selecting the set of mipmap levels and array layers to be accessible to the view.]vulkan aspectMask is a bitmask of   specifying which aspect(s) of the image are included in the view.]vulkan baseMipLevel2 is the first mipmap level accessible to the view.]vulkan levelCount0 is the number of mipmap levels (starting from  baseMipLevel) accessible to the view.]vulkanbaseArrayLayer1 is the first array layer accessible to the view.]vulkan layerCount/ is the number of array layers (starting from baseArrayLayer) accessible to the view.]vulkanr is a ) specifying the component value placed in the R component of the output vector.#VUID-VkComponentMapping-r-parameter r must be a valid ) value]vulkang is a ) specifying the component value placed in the G component of the output vector.#VUID-VkComponentMapping-g-parameter g must be a valid ) value]vulkanb is a ) specifying the component value placed in the B component of the output vector.#VUID-VkComponentMapping-b-parameter b must be a valid ) value]vulkana is a ) specifying the component value placed in the A component of the output vector.#VUID-VkComponentMapping-a-parameter a must be a valid ) value]vulkan?vkCreateImageView - Create an image view from an existing imageValid Usage (Implicit)'VUID-vkCreateImageView-device-parameter device must be a valid  handle,VUID-vkCreateImageView-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid  structure+VUID-vkCreateImageView-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure&VUID-vkCreateImageView-pView-parameter pView must be a valid pointer to a  handle Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , ]vulkan=A convenience wrapper to make a compatible pair of calls to ] and ]To ensure that ] is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.]vulkan1vkDestroyImageView - Destroy an image view object Valid Usage'VUID-vkDestroyImageView-imageView-01026+ All submitted commands that refer to  imageView must have completed execution'VUID-vkDestroyImageView-imageView-01027 If  were provided when  imageView1 was created, a compatible set of callbacks must be provided here'VUID-vkDestroyImageView-imageView-01028 If no  were provided when  imageView was created,  pAllocator must be NULLValid Usage (Implicit)(VUID-vkDestroyImageView-device-parameter device must be a valid  handle+VUID-vkDestroyImageView-imageView-parameter If  imageView is not ,  imageView must be a valid  handle,VUID-vkDestroyImageView-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure(VUID-vkDestroyImageView-imageView-parent If  imageView is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  imageView must be externally synchronizedSee Also, , ]vulkandevice3 is the logical device that creates the image view.vulkan pCreateInfo is a pointer to a  structure containing parameters to be used to create the image view.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.]vulkandevice4 is the logical device that destroys the image view.vulkan imageView is the image view to destroy.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.21]]]]]]]]]]]]]]]]]]]!!!!!!!!!!!!!!)))))))))]]]]]]]]]]]]]]]]]]]]]]]]]1!!!!!!!!!!!!!!!!))))))))))))))))!!!!!!!None( #$&'(./0289:<>?,?&vulkanVkPipelineStageFlagBits2KHR - Pipeline stage flags for VkPipelineStageFlags2KHR DescriptionNoteThe TOP and BOTTOM pipeline stages are deprecated, and applications should prefer ^ and ^.NoteThe  bitmask goes beyond the 31 individual bit flags allowable within a C99 enum, which is how   is defined. The first 31 values are common to both, and are interchangeable.See Also!No cross-references are availablevulkanVkSubmitInfo2KHR - Structure specifying a queue submit operation Valid Usage%VUID-VkSubmitInfo2KHR-semaphore-03881+ If the same semaphore is used as the  semaphore# member of both an element of pSignalSemaphoreInfos and pWaitSemaphoreInfos7, and that semaphore is a timeline semaphore, the value member of the pSignalSemaphoreInfos element must be greater than the value member of the pWaitSemaphoreInfos element%VUID-VkSubmitInfo2KHR-semaphore-03882 If the  semaphore member of any element of pSignalSemaphoreInfos# is a timeline semaphore, the value member of that element must have a value greater than the current value of the semaphore when the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signalingsemaphore signal operation is executed%VUID-VkSubmitInfo2KHR-semaphore-03883 If the  semaphore member of any element of pSignalSemaphoreInfos# is a timeline semaphore, the value member of that element must have a value which does not differ from the current value of the semaphore or the value of any outstanding semaphore wait or signal operation on that semaphore by more than https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference#maxTimelineSemaphoreValueDifference%VUID-VkSubmitInfo2KHR-semaphore-03884 If the  semaphore member of any element of pWaitSemaphoreInfos# is a timeline semaphore, the value member of that element must have a value which does not differ from the current value of the semaphore or the value of any outstanding semaphore wait or signal operation on that semaphore by more than https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference#maxTimelineSemaphoreValueDifference!VUID-VkSubmitInfo2KHR-flags-038856 If the protected memory feature is not enabled, flags must not include ^!VUID-VkSubmitInfo2KHR-flags-03886 If flags includes ^, all elements of pCommandBuffers must" be protected command buffers!VUID-VkSubmitInfo2KHR-flags-03887 If flags does not include ^, each element of pCommandBuffers must' not be a protected command bufferValid Usage (Implicit)!VUID-VkSubmitInfo2KHR-sType-sType sType must be  !VUID-VkSubmitInfo2KHR-pNext-pNext Each pNext: member of any structure (including this one) in the pNext chain must be either NULL* or a pointer to a valid instance of , , or "VUID-VkSubmitInfo2KHR-sType-unique The sType" value of each struct in the pNext chain must be unique%VUID-VkSubmitInfo2KHR-flags-parameter flags must be a valid combination of ] values3VUID-VkSubmitInfo2KHR-pWaitSemaphoreInfos-parameter If waitSemaphoreInfoCount is not 0, pWaitSemaphoreInfos must( be a valid pointer to an array of waitSemaphoreInfoCount valid  structures3VUID-VkSubmitInfo2KHR-pCommandBufferInfos-parameter If commandBufferInfoCount is not 0, pCommandBufferInfos must( be a valid pointer to an array of commandBufferInfoCount valid  structures5VUID-VkSubmitInfo2KHR-pSignalSemaphoreInfos-parameter If signalSemaphoreInfoCount is not 0, pSignalSemaphoreInfos must# be a valid pointer to an array of signalSemaphoreInfoCount valid  structuresSee Also, , , ], ^vulkanVkSemaphoreSubmitInfoKHR - Structure specifying a semaphore signal or wait operation DescriptionWhether this structure defines a semaphore wait or signal operation is defined by how it is used. Valid Usage-VUID-VkSemaphoreSubmitInfoKHR-stageMask-03929 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled,  stageMask must not contain ^ -VUID-VkSemaphoreSubmitInfoKHR-stageMask-03930 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled,  stageMask must not contain ^ or ^-VUID-VkSemaphoreSubmitInfoKHR-stageMask-03931 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRenderingconditional rendering feature is not enabled,  stageMask must not contain ^-VUID-VkSemaphoreSubmitInfoKHR-stageMask-03932 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapfragment density map feature is not enabled,  stageMask must not contain ^-VUID-VkSemaphoreSubmitInfoKHR-stageMask-03933 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedbacktransform feedback feature is not enabled,  stageMask must not contain ^-VUID-VkSemaphoreSubmitInfoKHR-stageMask-03934 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled,  stageMask must not contain ^-VUID-VkSemaphoreSubmitInfoKHR-stageMask-03935 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders feature is not enabled,  stageMask must not contain ^-VUID-VkSemaphoreSubmitInfoKHR-stageMask-04956 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshading rate image feature is not enabled,  stageMask must not contain ^-VUID-VkSemaphoreSubmitInfoKHR-stageMask-04995 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMaskinvocation mask image feature is not enabled,  stageMask must not contain ^*VUID-VkSemaphoreSubmitInfoKHR-device-03888 If the device that  semaphore' was created on is not a device group,  deviceIndex must be 0*VUID-VkSemaphoreSubmitInfoKHR-device-03889 If the device that  semaphore# was created on is a device group,  deviceIndex must be a valid device indexValid Usage (Implicit))VUID-VkSemaphoreSubmitInfoKHR-sType-sType sType must be  )VUID-VkSemaphoreSubmitInfoKHR-pNext-pNext pNext must be NULL1VUID-VkSemaphoreSubmitInfoKHR-semaphore-parameter  semaphore must be a valid x handle1VUID-VkSemaphoreSubmitInfoKHR-stageMask-parameter  stageMask must be a valid combination of  valuesSee Also, x, , vulkanVkQueueFamilyCheckpointProperties2NV - return structure for queue family checkpoint information query Description?Additional queue family information can be queried by setting U::pNext to point to a  structure.Valid Usage (Implicit)See Also, vulkanVkPhysicalDeviceSynchronization2FeaturesKHR - Structure describing whether the implementation supports v2 synchronization commandsMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkanVkMemoryBarrier2KHR - Structure specifying a global memory barrier DescriptionThis structure defines a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-memorymemory dependency affecting all device memory. The first  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope described by this structure include only operations and memory accesses specified by  srcStageMask and  srcAccessMask. The second  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope described by this structure include only operations and memory accesses specified by  dstStageMask and  dstAccessMask. Valid Usage+VUID-VkMemoryBarrier2KHR-srcStageMask-03929 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled,  srcStageMask must not contain ^+VUID-VkMemoryBarrier2KHR-srcStageMask-03930 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled,  srcStageMask must not contain ^ or ^+VUID-VkMemoryBarrier2KHR-srcStageMask-03931 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRenderingconditional rendering feature is not enabled,  srcStageMask must not contain ^+VUID-VkMemoryBarrier2KHR-srcStageMask-03932 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapfragment density map feature is not enabled,  srcStageMask must not contain ^+VUID-VkMemoryBarrier2KHR-srcStageMask-03933 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedbacktransform feedback feature is not enabled,  srcStageMask must not contain ^+VUID-VkMemoryBarrier2KHR-srcStageMask-03934 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled,  srcStageMask must not contain ^+VUID-VkMemoryBarrier2KHR-srcStageMask-03935 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders feature is not enabled,  srcStageMask must not contain ^+VUID-VkMemoryBarrier2KHR-srcStageMask-04956 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshading rate image feature is not enabled,  srcStageMask must not contain ^+VUID-VkMemoryBarrier2KHR-srcStageMask-04995 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMaskinvocation mask image feature is not enabled,  srcStageMask must not contain ^,VUID-VkMemoryBarrier2KHR-srcAccessMask-03900 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, ^ , or ^,VUID-VkMemoryBarrier2KHR-srcAccessMask-03901 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, ^ , or ^,VUID-VkMemoryBarrier2KHR-srcAccessMask-03902 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, ^ , or ^,VUID-VkMemoryBarrier2KHR-srcAccessMask-03903 If  srcAccessMask includes ^,  srcStageMask must include ^, .VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI, ^ , or ^,VUID-VkMemoryBarrier2KHR-srcAccessMask-03904 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages,VUID-VkMemoryBarrier2KHR-srcAccessMask-03905 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages,VUID-VkMemoryBarrier2KHR-srcAccessMask-03906 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages,VUID-VkMemoryBarrier2KHR-srcAccessMask-03907 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages,VUID-VkMemoryBarrier2KHR-srcAccessMask-03908 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, ^, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages,VUID-VkMemoryBarrier2KHR-srcAccessMask-03909 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages,VUID-VkMemoryBarrier2KHR-srcAccessMask-03910 If  srcAccessMask includes ^,  srcStageMask must include ^ ^ , or ^,VUID-VkMemoryBarrier2KHR-srcAccessMask-03911 If  srcAccessMask includes ^,  srcStageMask must include ^ ^ , or ^,VUID-VkMemoryBarrier2KHR-srcAccessMask-03912 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, ^ , or ^,VUID-VkMemoryBarrier2KHR-srcAccessMask-03913 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, ^ , or ^,VUID-VkMemoryBarrier2KHR-srcAccessMask-03914 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, ^, ^, ^ , or ^,VUID-VkMemoryBarrier2KHR-srcAccessMask-03915 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, ^, ^, ^, ^ , or ^,VUID-VkMemoryBarrier2KHR-srcAccessMask-03916 If  srcAccessMask includes ^,  srcStageMask must include ^,VUID-VkMemoryBarrier2KHR-srcAccessMask-03917 If  srcAccessMask includes ^,  srcStageMask must include ^,VUID-VkMemoryBarrier2KHR-srcAccessMask-03918 If  srcAccessMask includes ^,  srcStageMask must include ^, ^ , or ^,VUID-VkMemoryBarrier2KHR-srcAccessMask-03919 If  srcAccessMask includes ^,  srcStageMask must include ^, ^ , or ^,VUID-VkMemoryBarrier2KHR-srcAccessMask-03920 If  srcAccessMask includes ^,  srcStageMask must include ^, ^ , or ^,VUID-VkMemoryBarrier2KHR-srcAccessMask-04747 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, ^ , or ^,VUID-VkMemoryBarrier2KHR-srcAccessMask-03922 If  srcAccessMask includes ^,  srcStageMask must include ^, ^ , or ^,VUID-VkMemoryBarrier2KHR-srcAccessMask-03923 If  srcAccessMask includes ^,  srcStageMask must include ^, ^ , or ^,VUID-VkMemoryBarrier2KHR-srcAccessMask-04994 If  srcAccessMask includes ^,  srcStageMask must include ^,VUID-VkMemoryBarrier2KHR-srcAccessMask-03924 If  srcAccessMask includes ^,  srcStageMask must include ^ or ^,VUID-VkMemoryBarrier2KHR-srcAccessMask-03925 If  srcAccessMask includes ^,  srcStageMask must include ^ or ^,VUID-VkMemoryBarrier2KHR-srcAccessMask-03926 If  srcAccessMask includes ^,  srcStageMask must include ^ ^ , or ^,VUID-VkMemoryBarrier2KHR-srcAccessMask-03927 If  srcAccessMask includes ^,  srcStageMask must include ^, ^ , or ^,VUID-VkMemoryBarrier2KHR-srcAccessMask-03928 If  srcAccessMask includes ^,  srcStageMask must include ^ or ^+VUID-VkMemoryBarrier2KHR-dstStageMask-03929 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled,  dstStageMask must not contain ^+VUID-VkMemoryBarrier2KHR-dstStageMask-03930 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled,  dstStageMask must not contain ^ or ^+VUID-VkMemoryBarrier2KHR-dstStageMask-03931 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRenderingconditional rendering feature is not enabled,  dstStageMask must not contain ^+VUID-VkMemoryBarrier2KHR-dstStageMask-03932 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapfragment density map feature is not enabled,  dstStageMask must not contain ^+VUID-VkMemoryBarrier2KHR-dstStageMask-03933 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedbacktransform feedback feature is not enabled,  dstStageMask must not contain ^+VUID-VkMemoryBarrier2KHR-dstStageMask-03934 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled,  dstStageMask must not contain ^+VUID-VkMemoryBarrier2KHR-dstStageMask-03935 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders feature is not enabled,  dstStageMask must not contain ^+VUID-VkMemoryBarrier2KHR-dstStageMask-04956 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshading rate image feature is not enabled,  dstStageMask must not contain ^+VUID-VkMemoryBarrier2KHR-dstStageMask-04995 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMaskinvocation mask image feature is not enabled,  dstStageMask must not contain ^,VUID-VkMemoryBarrier2KHR-dstAccessMask-03900 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, ^ , or ^,VUID-VkMemoryBarrier2KHR-dstAccessMask-03901 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, ^ , or ^,VUID-VkMemoryBarrier2KHR-dstAccessMask-03902 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, ^ , or ^,VUID-VkMemoryBarrier2KHR-dstAccessMask-03903 If  dstAccessMask includes ^,  dstStageMask must include ^, .VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI, ^ , or ^,VUID-VkMemoryBarrier2KHR-dstAccessMask-03904 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages,VUID-VkMemoryBarrier2KHR-dstAccessMask-03905 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages,VUID-VkMemoryBarrier2KHR-dstAccessMask-03906 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages,VUID-VkMemoryBarrier2KHR-dstAccessMask-03907 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages,VUID-VkMemoryBarrier2KHR-dstAccessMask-03908 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, ^, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages,VUID-VkMemoryBarrier2KHR-dstAccessMask-03909 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages,VUID-VkMemoryBarrier2KHR-dstAccessMask-03910 If  dstAccessMask includes ^,  dstStageMask must include ^ ^ , or ^,VUID-VkMemoryBarrier2KHR-dstAccessMask-03911 If  dstAccessMask includes ^,  dstStageMask must include ^ ^ , or ^,VUID-VkMemoryBarrier2KHR-dstAccessMask-03912 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, ^ , or ^,VUID-VkMemoryBarrier2KHR-dstAccessMask-03913 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, ^ , or ^,VUID-VkMemoryBarrier2KHR-dstAccessMask-03914 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, ^, ^, ^ , or ^,VUID-VkMemoryBarrier2KHR-dstAccessMask-03915 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, ^, ^, ^, ^ , or ^,VUID-VkMemoryBarrier2KHR-dstAccessMask-03916 If  dstAccessMask includes ^,  dstStageMask must include ^,VUID-VkMemoryBarrier2KHR-dstAccessMask-03917 If  dstAccessMask includes ^,  dstStageMask must include ^,VUID-VkMemoryBarrier2KHR-dstAccessMask-03918 If  dstAccessMask includes ^,  dstStageMask must include ^, ^ , or ^,VUID-VkMemoryBarrier2KHR-dstAccessMask-03919 If  dstAccessMask includes ^,  dstStageMask must include ^, ^ , or ^,VUID-VkMemoryBarrier2KHR-dstAccessMask-03920 If  dstAccessMask includes ^,  dstStageMask must include ^, ^ , or ^,VUID-VkMemoryBarrier2KHR-dstAccessMask-04747 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, ^ , or ^,VUID-VkMemoryBarrier2KHR-dstAccessMask-03922 If  dstAccessMask includes ^,  dstStageMask must include ^, ^ , or ^,VUID-VkMemoryBarrier2KHR-dstAccessMask-03923 If  dstAccessMask includes ^,  dstStageMask must include ^, ^ , or ^,VUID-VkMemoryBarrier2KHR-dstAccessMask-04994 If  dstAccessMask includes ^,  dstStageMask must include ^,VUID-VkMemoryBarrier2KHR-dstAccessMask-03924 If  dstAccessMask includes ^,  dstStageMask must include ^ or ^,VUID-VkMemoryBarrier2KHR-dstAccessMask-03925 If  dstAccessMask includes ^,  dstStageMask must include ^ or ^,VUID-VkMemoryBarrier2KHR-dstAccessMask-03926 If  dstAccessMask includes ^,  dstStageMask must include ^ ^ , or ^,VUID-VkMemoryBarrier2KHR-dstAccessMask-03927 If  dstAccessMask includes ^,  dstStageMask must include ^, ^ , or ^,VUID-VkMemoryBarrier2KHR-dstAccessMask-03928 If  dstAccessMask includes ^,  dstStageMask must include ^ or ^Valid Usage (Implicit)$VUID-VkMemoryBarrier2KHR-sType-sType sType must be  /VUID-VkMemoryBarrier2KHR-srcStageMask-parameter  srcStageMask must be a valid combination of  values0VUID-VkMemoryBarrier2KHR-srcAccessMask-parameter  srcAccessMask must be a valid combination of ] values/VUID-VkMemoryBarrier2KHR-dstStageMask-parameter  dstStageMask must be a valid combination of  values0VUID-VkMemoryBarrier2KHR-dstAccessMask-parameter  dstAccessMask must be a valid combination of ] valuesSee Also], , , vulkanVkImageMemoryBarrier2KHR - Structure specifying an image memory barrier DescriptionThis structure defines a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-memorymemory dependency- limited to an image subresource range, and can define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family transfer operation and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition for that subresource range. The first  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope described by this structure include only operations and memory accesses specified by  srcStageMask and  srcAccessMask. The second  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope described by this structure include only operations and memory accesses specified by  dstStageMask and  dstAccessMask.Both  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopes) are limited to only memory accesses to image& in the subresource range defined by subresourceRange.If image was created with , and srcQueueFamilyIndex is not equal to dstQueueFamilyIndex", this memory barrier defines a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family transfer operation9. When executed on a queue in the family identified by srcQueueFamilyIndex, this barrier defines a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-releasequeue family release operation for the specified image subresource range, and the second synchronization and access scopes do not synchronize operations on that queue. When executed on a queue in the family identified by dstQueueFamilyIndex, this barrier defines a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-acquirequeue family acquire operation for the specified image subresource range, and the first synchronization and access scopes do not synchronize operations on that queue.A  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family transfer operation is also defined if the values are not equal, and either is one of the special queue family values reserved for external memory ownership transfers, as described in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers. A  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-releasequeue family release operation is defined when dstQueueFamilyIndex is one of those values, and a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-acquirequeue family acquire operation is defined when srcQueueFamilyIndex is one of those values.If  oldLayout is not equal to  newLayout', then the memory barrier defines an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition for the specified image subresource range. If this memory barrier defines a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family transfer operation, the layout transition is only executed once between the queues.NoteWhen the old and new layout are equal, the layout values are ignored - data is preserved no matter what values are specified, or what layout the image is currently in.If image, has a multi-planar format and the image is disjoint, then including  in the  aspectMask member of subresourceRange is equivalent to including  ,  ', and (for three-plane formats only)  . Valid Usage0VUID-VkImageMemoryBarrier2KHR-srcStageMask-03929 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled,  srcStageMask must not contain ^0VUID-VkImageMemoryBarrier2KHR-srcStageMask-03930 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled,  srcStageMask must not contain ^ or ^0VUID-VkImageMemoryBarrier2KHR-srcStageMask-03931 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRenderingconditional rendering feature is not enabled,  srcStageMask must not contain ^0VUID-VkImageMemoryBarrier2KHR-srcStageMask-03932 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapfragment density map feature is not enabled,  srcStageMask must not contain ^0VUID-VkImageMemoryBarrier2KHR-srcStageMask-03933 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedbacktransform feedback feature is not enabled,  srcStageMask must not contain ^0VUID-VkImageMemoryBarrier2KHR-srcStageMask-03934 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled,  srcStageMask must not contain ^0VUID-VkImageMemoryBarrier2KHR-srcStageMask-03935 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders feature is not enabled,  srcStageMask must not contain ^0VUID-VkImageMemoryBarrier2KHR-srcStageMask-04956 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshading rate image feature is not enabled,  srcStageMask must not contain ^0VUID-VkImageMemoryBarrier2KHR-srcStageMask-04995 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMaskinvocation mask image feature is not enabled,  srcStageMask must not contain ^1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03900 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, ^ , or ^1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03901 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, ^ , or ^1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03902 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, ^ , or ^1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03903 If  srcAccessMask includes ^,  srcStageMask must include ^, .VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI, ^ , or ^1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03904 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03905 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03906 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03907 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03908 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, ^, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03909 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03910 If  srcAccessMask includes ^,  srcStageMask must include ^ ^ , or ^1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03911 If  srcAccessMask includes ^,  srcStageMask must include ^ ^ , or ^1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03912 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, ^ , or ^1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03913 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, ^ , or ^1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03914 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, ^, ^, ^ , or ^1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03915 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, ^, ^, ^, ^ , or ^1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03916 If  srcAccessMask includes ^,  srcStageMask must include ^1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03917 If  srcAccessMask includes ^,  srcStageMask must include ^1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03918 If  srcAccessMask includes ^,  srcStageMask must include ^, ^ , or ^1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03919 If  srcAccessMask includes ^,  srcStageMask must include ^, ^ , or ^1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03920 If  srcAccessMask includes ^,  srcStageMask must include ^, ^ , or ^1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-04747 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, ^ , or ^1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03922 If  srcAccessMask includes ^,  srcStageMask must include ^, ^ , or ^1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03923 If  srcAccessMask includes ^,  srcStageMask must include ^, ^ , or ^1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-04994 If  srcAccessMask includes ^,  srcStageMask must include ^1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03924 If  srcAccessMask includes ^,  srcStageMask must include ^ or ^1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03925 If  srcAccessMask includes ^,  srcStageMask must include ^ or ^1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03926 If  srcAccessMask includes ^,  srcStageMask must include ^ ^ , or ^1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03927 If  srcAccessMask includes ^,  srcStageMask must include ^, ^ , or ^1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03928 If  srcAccessMask includes ^,  srcStageMask must include ^ or ^0VUID-VkImageMemoryBarrier2KHR-dstStageMask-03929 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled,  dstStageMask must not contain ^0VUID-VkImageMemoryBarrier2KHR-dstStageMask-03930 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled,  dstStageMask must not contain ^ or ^0VUID-VkImageMemoryBarrier2KHR-dstStageMask-03931 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRenderingconditional rendering feature is not enabled,  dstStageMask must not contain ^0VUID-VkImageMemoryBarrier2KHR-dstStageMask-03932 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapfragment density map feature is not enabled,  dstStageMask must not contain ^0VUID-VkImageMemoryBarrier2KHR-dstStageMask-03933 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedbacktransform feedback feature is not enabled,  dstStageMask must not contain ^0VUID-VkImageMemoryBarrier2KHR-dstStageMask-03934 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled,  dstStageMask must not contain ^0VUID-VkImageMemoryBarrier2KHR-dstStageMask-03935 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders feature is not enabled,  dstStageMask must not contain ^0VUID-VkImageMemoryBarrier2KHR-dstStageMask-04956 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshading rate image feature is not enabled,  dstStageMask must not contain ^0VUID-VkImageMemoryBarrier2KHR-dstStageMask-04995 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMaskinvocation mask image feature is not enabled,  dstStageMask must not contain ^1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03900 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, ^ , or ^1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03901 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, ^ , or ^1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03902 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, ^ , or ^1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03903 If  dstAccessMask includes ^,  dstStageMask must include ^, .VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI, ^ , or ^1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03904 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03905 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03906 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03907 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03908 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, ^, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03909 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03910 If  dstAccessMask includes ^,  dstStageMask must include ^ ^ , or ^1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03911 If  dstAccessMask includes ^,  dstStageMask must include ^ ^ , or ^1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03912 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, ^ , or ^1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03913 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, ^ , or ^1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03914 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, ^, ^, ^ , or ^1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03915 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, ^, ^, ^, ^ , or ^1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03916 If  dstAccessMask includes ^,  dstStageMask must include ^1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03917 If  dstAccessMask includes ^,  dstStageMask must include ^1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03918 If  dstAccessMask includes ^,  dstStageMask must include ^, ^ , or ^1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03919 If  dstAccessMask includes ^,  dstStageMask must include ^, ^ , or ^1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03920 If  dstAccessMask includes ^,  dstStageMask must include ^, ^ , or ^1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-04747 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, ^ , or ^1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03922 If  dstAccessMask includes ^,  dstStageMask must include ^, ^ , or ^1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03923 If  dstAccessMask includes ^,  dstStageMask must include ^, ^ , or ^1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-04994 If  dstAccessMask includes ^,  dstStageMask must include ^1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03924 If  dstAccessMask includes ^,  dstStageMask must include ^ or ^1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03925 If  dstAccessMask includes ^,  dstStageMask must include ^ or ^1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03926 If  dstAccessMask includes ^,  dstStageMask must include ^ ^ , or ^1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03927 If  dstAccessMask includes ^,  dstStageMask must include ^, ^ , or ^1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03928 If  dstAccessMask includes ^,  dstStageMask must include ^ or ^4VUID-VkImageMemoryBarrier2KHR-subresourceRange-01486 subresourceRange.baseMipLevel must be less than the  mipLevels specified in 1 when image was created4VUID-VkImageMemoryBarrier2KHR-subresourceRange-01724 If subresourceRange.levelCount is not , subresourceRange.baseMipLevel + subresourceRange.levelCount must be less than or equal to the  mipLevels specified in 1 when image was created4VUID-VkImageMemoryBarrier2KHR-subresourceRange-01488 subresourceRange.baseArrayLayer must be less than the  arrayLayers specified in 1 when image was created4VUID-VkImageMemoryBarrier2KHR-subresourceRange-01725 If subresourceRange.layerCount is not , subresourceRange.baseArrayLayer + subresourceRange.layerCount must be less than or equal to the  arrayLayers specified in 1 when image was created)VUID-VkImageMemoryBarrier2KHR-image-01932 If image is non-sparse then it must7 be bound completely and contiguously to a single 0  object-VUID-VkImageMemoryBarrier2KHR-oldLayout-01208 If srcQueueFamilyIndex and dstQueueFamilyIndex define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is  then image must have been created with  -VUID-VkImageMemoryBarrier2KHR-oldLayout-01209 If srcQueueFamilyIndex and dstQueueFamilyIndex define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is  then image must have been created with  -VUID-VkImageMemoryBarrier2KHR-oldLayout-01210 If srcQueueFamilyIndex and dstQueueFamilyIndex define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is  then image must have been created with  -VUID-VkImageMemoryBarrier2KHR-oldLayout-01211 If srcQueueFamilyIndex and dstQueueFamilyIndex define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is  then image must have been created with   or  -VUID-VkImageMemoryBarrier2KHR-oldLayout-01212 If srcQueueFamilyIndex and dstQueueFamilyIndex define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is  then image must have been created with  -VUID-VkImageMemoryBarrier2KHR-oldLayout-01213 If srcQueueFamilyIndex and dstQueueFamilyIndex define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is  then image must have been created with  -VUID-VkImageMemoryBarrier2KHR-oldLayout-01197 If srcQueueFamilyIndex and dstQueueFamilyIndex define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition,  oldLayout must be  or the current layout of the image subresources affected by the barrier-VUID-VkImageMemoryBarrier2KHR-newLayout-01198 If srcQueueFamilyIndex and dstQueueFamilyIndex define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition,  newLayout must not be  or -VUID-VkImageMemoryBarrier2KHR-oldLayout-01658 If srcQueueFamilyIndex and dstQueueFamilyIndex define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is  then image must have been created with  -VUID-VkImageMemoryBarrier2KHR-oldLayout-01659 If srcQueueFamilyIndex and dstQueueFamilyIndex define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is  then image must have been created with  7VUID-VkImageMemoryBarrier2KHR-srcQueueFamilyIndex-04065 If srcQueueFamilyIndex and dstQueueFamilyIndex define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is  then image must- have been created with at least one of  ,   , or  7VUID-VkImageMemoryBarrier2KHR-srcQueueFamilyIndex-04066 If srcQueueFamilyIndex and dstQueueFamilyIndex define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is  then image must have been created with   set7VUID-VkImageMemoryBarrier2KHR-srcQueueFamilyIndex-04067 If srcQueueFamilyIndex and dstQueueFamilyIndex define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is  then image must- have been created with at least one of  ,   , or  7VUID-VkImageMemoryBarrier2KHR-srcQueueFamilyIndex-04068 If srcQueueFamilyIndex and dstQueueFamilyIndex define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is  then image must have been created with   set7VUID-VkImageMemoryBarrier2KHR-srcQueueFamilyIndex-03938 If srcQueueFamilyIndex and dstQueueFamilyIndex define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is , image must have been created with   or  7VUID-VkImageMemoryBarrier2KHR-srcQueueFamilyIndex-03939 If srcQueueFamilyIndex and dstQueueFamilyIndex define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is , image must- have been created with at least one of  ,   , or  -VUID-VkImageMemoryBarrier2KHR-oldLayout-02088 If srcQueueFamilyIndex and dstQueueFamilyIndex define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is  then image must have been created with   set)VUID-VkImageMemoryBarrier2KHR-image-01671 If image0 has a single-plane color format or is not disjoint, then the  aspectMask member of subresourceRange must be )VUID-VkImageMemoryBarrier2KHR-image-01672 If image1 has a multi-planar format and the image is disjoint, then the  aspectMask member of subresourceRange must* include either at least one of  ,  , and   ; or must include )VUID-VkImageMemoryBarrier2KHR-image-01673 If image? has a multi-planar format with only two planes, then the  aspectMask member of subresourceRange must not include  )VUID-VkImageMemoryBarrier2KHR-image-03319 If image has a depth/stencil format with both depth and stencil and the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayoutsseparateDepthStencilLayouts# feature is enabled, then the  aspectMask member of subresourceRange must include either or both   and  )VUID-VkImageMemoryBarrier2KHR-image-03320 If image has a depth/stencil format with both depth and stencil and the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayoutsseparateDepthStencilLayouts' feature is not enabled, then the  aspectMask member of subresourceRange must include both   and  7VUID-VkImageMemoryBarrier2KHR-srcQueueFamilyIndex-04070 If srcQueueFamilyIndex is not equal to dstQueueFamilyIndex, at least one must not be a special queue family reserved for external memory ownership transfers, as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers???)VUID-VkImageMemoryBarrier2KHR-image-04071 If image. was created with a sharing mode of , srcQueueFamilyIndex and dstQueueFamilyIndex are not equal, and one of srcQueueFamilyIndex and dstQueueFamilyIndex is one of the special queue family values reserved for external memory transfers, the other must be )VUID-VkImageMemoryBarrier2KHR-image-04072 If image. was created with a sharing mode of  , and srcQueueFamilyIndex and dstQueueFamilyIndex are not equal, srcQueueFamilyIndex and dstQueueFamilyIndex must both be valid queue families, or one of the special queue family values reserved for external memory transfers, as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers???0VUID-VkImageMemoryBarrier2KHR-srcStageMask-03854 If either  srcStageMask or  dstStageMask includes ^, srcQueueFamilyIndex and dstQueueFamilyIndex must be equal0VUID-VkImageMemoryBarrier2KHR-srcStageMask-03855 If  srcStageMask includes ^, and srcQueueFamilyIndex and dstQueueFamilyIndex define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition,  oldLayout must be one of ,  , or Valid Usage (Implicit))VUID-VkImageMemoryBarrier2KHR-sType-sType sType must be   )VUID-VkImageMemoryBarrier2KHR-pNext-pNext pNext must be NULL/ or a pointer to a valid instance of *VUID-VkImageMemoryBarrier2KHR-sType-unique The sType" value of each struct in the pNext chain must be unique4VUID-VkImageMemoryBarrier2KHR-srcStageMask-parameter  srcStageMask must be a valid combination of  values5VUID-VkImageMemoryBarrier2KHR-srcAccessMask-parameter  srcAccessMask must be a valid combination of ] values4VUID-VkImageMemoryBarrier2KHR-dstStageMask-parameter  dstStageMask must be a valid combination of  values5VUID-VkImageMemoryBarrier2KHR-dstAccessMask-parameter  dstAccessMask must be a valid combination of ] values1VUID-VkImageMemoryBarrier2KHR-oldLayout-parameter  oldLayout must be a valid O value1VUID-VkImageMemoryBarrier2KHR-newLayout-parameter  newLayout must be a valid O value-VUID-VkImageMemoryBarrier2KHR-image-parameter image must be a valid  handle8VUID-VkImageMemoryBarrier2KHR-subresourceRange-parameter subresourceRange must be a valid  structureSee Also], , , O, , , vulkanVkDependencyInfoKHR - Structure specifying dependency information for a synchronization command Description!This structure defines a set of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-memorymemory dependencies, as well as  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family transfer operations and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transitions.Each member of pMemoryBarriers, pBufferMemoryBarriers, and pImageMemoryBarriers defines a separate  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-memorymemory dependency.Valid Usage (Implicit)$VUID-VkDependencyInfoKHR-sType-sType sType must be  $VUID-VkDependencyInfoKHR-pNext-pNext pNext must be NULL2VUID-VkDependencyInfoKHR-dependencyFlags-parameter dependencyFlags must be a valid combination of  values2VUID-VkDependencyInfoKHR-pMemoryBarriers-parameter If memoryBarrierCount is not 0, pMemoryBarriers must( be a valid pointer to an array of memoryBarrierCount valid  structures8VUID-VkDependencyInfoKHR-pBufferMemoryBarriers-parameter If bufferMemoryBarrierCount is not 0, pBufferMemoryBarriers must# be a valid pointer to an array of bufferMemoryBarrierCount valid  structures7VUID-VkDependencyInfoKHR-pImageMemoryBarriers-parameter If imageMemoryBarrierCount is not 0, pImageMemoryBarriers must( be a valid pointer to an array of imageMemoryBarrierCount valid  structuresSee Also, H, , , , ^, ^, ^vulkanVkCommandBufferSubmitInfoKHR - Structure specifying a command buffer submission Valid Usage5VUID-VkCommandBufferSubmitInfoKHR-commandBuffer-03890  commandBuffer must# not have been allocated with 2VUID-VkCommandBufferSubmitInfoKHR-deviceMask-03891 If  deviceMask is not 0, it must be a valid device maskValid Usage (Implicit)-VUID-VkCommandBufferSubmitInfoKHR-sType-sType sType must be  -VUID-VkCommandBufferSubmitInfoKHR-pNext-pNext pNext must be NULL9VUID-VkCommandBufferSubmitInfoKHR-commandBuffer-parameter  commandBuffer must be a valid  handleSee Also, , vulkanVkCheckpointData2NV - return structure for command buffer checkpoint dataValid Usage (Implicit)(The stages at which a checkpoint marker can- be executed are implementation-defined and can be queried by calling U .See Also, , _vulkanVkBufferMemoryBarrier2KHR - Structure specifying a buffer memory barrier DescriptionThis structure defines a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-memorymemory dependency& limited to a range of a buffer, and can define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family transfer operation for that range. The first  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope described by this structure include only operations and memory accesses specified by  srcStageMask and  srcAccessMask. The second  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope described by this structure include only operations and memory accesses specified by  dstStageMask and  dstAccessMask.Both  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopes) are limited to only memory accesses to buffer in the range defined by offset and size.If buffer was created with , and srcQueueFamilyIndex is not equal to dstQueueFamilyIndex", this memory barrier defines a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family transfer operation9. When executed on a queue in the family identified by srcQueueFamilyIndex, this barrier defines a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-releasequeue family release operation for the specified buffer range, and the second synchronization and access scopes do not synchronize operations on that queue. When executed on a queue in the family identified by dstQueueFamilyIndex, this barrier defines a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-acquirequeue family acquire operation for the specified buffer range, and the first synchronization and access scopes do not synchronize operations on that queue.A  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family transfer operation is also defined if the values are not equal, and either is one of the special queue family values reserved for external memory ownership transfers, as described in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers. A  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-releasequeue family release operation is defined when dstQueueFamilyIndex is one of those values, and a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-acquirequeue family acquire operation is defined when srcQueueFamilyIndex is one of those values. Valid Usage1VUID-VkBufferMemoryBarrier2KHR-srcStageMask-03929 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled,  srcStageMask must not contain ^1VUID-VkBufferMemoryBarrier2KHR-srcStageMask-03930 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled,  srcStageMask must not contain ^ or ^1VUID-VkBufferMemoryBarrier2KHR-srcStageMask-03931 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRenderingconditional rendering feature is not enabled,  srcStageMask must not contain ^1VUID-VkBufferMemoryBarrier2KHR-srcStageMask-03932 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapfragment density map feature is not enabled,  srcStageMask must not contain ^1VUID-VkBufferMemoryBarrier2KHR-srcStageMask-03933 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedbacktransform feedback feature is not enabled,  srcStageMask must not contain ^1VUID-VkBufferMemoryBarrier2KHR-srcStageMask-03934 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled,  srcStageMask must not contain ^1VUID-VkBufferMemoryBarrier2KHR-srcStageMask-03935 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders feature is not enabled,  srcStageMask must not contain ^1VUID-VkBufferMemoryBarrier2KHR-srcStageMask-04956 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshading rate image feature is not enabled,  srcStageMask must not contain ^1VUID-VkBufferMemoryBarrier2KHR-srcStageMask-04995 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMaskinvocation mask image feature is not enabled,  srcStageMask must not contain ^2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03900 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, ^ , or ^2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03901 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, ^ , or ^2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03902 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, ^ , or ^2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03903 If  srcAccessMask includes ^,  srcStageMask must include ^, .VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI, ^ , or ^2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03904 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03905 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03906 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03907 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03908 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, ^, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03909 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03910 If  srcAccessMask includes ^,  srcStageMask must include ^ ^ , or ^2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03911 If  srcAccessMask includes ^,  srcStageMask must include ^ ^ , or ^2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03912 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, ^ , or ^2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03913 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, ^ , or ^2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03914 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, ^, ^, ^ , or ^2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03915 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, ^, ^, ^, ^ , or ^2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03916 If  srcAccessMask includes ^,  srcStageMask must include ^2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03917 If  srcAccessMask includes ^,  srcStageMask must include ^2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03918 If  srcAccessMask includes ^,  srcStageMask must include ^, ^ , or ^2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03919 If  srcAccessMask includes ^,  srcStageMask must include ^, ^ , or ^2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03920 If  srcAccessMask includes ^,  srcStageMask must include ^, ^ , or ^2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-04747 If  srcAccessMask includes ^,  srcStageMask must include ^, ^, ^ , or ^2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03922 If  srcAccessMask includes ^,  srcStageMask must include ^, ^ , or ^2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03923 If  srcAccessMask includes ^,  srcStageMask must include ^, ^ , or ^2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-04994 If  srcAccessMask includes ^,  srcStageMask must include ^2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03924 If  srcAccessMask includes ^,  srcStageMask must include ^ or ^2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03925 If  srcAccessMask includes ^,  srcStageMask must include ^ or ^2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03926 If  srcAccessMask includes ^,  srcStageMask must include ^ ^ , or ^2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03927 If  srcAccessMask includes ^,  srcStageMask must include ^, ^ , or ^2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03928 If  srcAccessMask includes ^,  srcStageMask must include ^ or ^1VUID-VkBufferMemoryBarrier2KHR-dstStageMask-03929 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled,  dstStageMask must not contain ^1VUID-VkBufferMemoryBarrier2KHR-dstStageMask-03930 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled,  dstStageMask must not contain ^ or ^1VUID-VkBufferMemoryBarrier2KHR-dstStageMask-03931 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRenderingconditional rendering feature is not enabled,  dstStageMask must not contain ^1VUID-VkBufferMemoryBarrier2KHR-dstStageMask-03932 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapfragment density map feature is not enabled,  dstStageMask must not contain ^1VUID-VkBufferMemoryBarrier2KHR-dstStageMask-03933 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedbacktransform feedback feature is not enabled,  dstStageMask must not contain ^1VUID-VkBufferMemoryBarrier2KHR-dstStageMask-03934 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled,  dstStageMask must not contain ^1VUID-VkBufferMemoryBarrier2KHR-dstStageMask-03935 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders feature is not enabled,  dstStageMask must not contain ^1VUID-VkBufferMemoryBarrier2KHR-dstStageMask-04956 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshading rate image feature is not enabled,  dstStageMask must not contain ^1VUID-VkBufferMemoryBarrier2KHR-dstStageMask-04995 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMaskinvocation mask image feature is not enabled,  dstStageMask must not contain ^2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03900 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, ^ , or ^2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03901 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, ^ , or ^2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03902 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, ^ , or ^2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03903 If  dstAccessMask includes ^,  dstStageMask must include ^, .VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI, ^ , or ^2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03904 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03905 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03906 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03907 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03908 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, ^, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03909 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03910 If  dstAccessMask includes ^,  dstStageMask must include ^ ^ , or ^2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03911 If  dstAccessMask includes ^,  dstStageMask must include ^ ^ , or ^2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03912 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, ^ , or ^2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03913 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, ^ , or ^2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03914 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, ^, ^, ^ , or ^2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03915 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, ^, ^, ^, ^ , or ^2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03916 If  dstAccessMask includes ^,  dstStageMask must include ^2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03917 If  dstAccessMask includes ^,  dstStageMask must include ^2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03918 If  dstAccessMask includes ^,  dstStageMask must include ^, ^ , or ^2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03919 If  dstAccessMask includes ^,  dstStageMask must include ^, ^ , or ^2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03920 If  dstAccessMask includes ^,  dstStageMask must include ^, ^ , or ^2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-04747 If  dstAccessMask includes ^,  dstStageMask must include ^, ^, ^ , or ^2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03922 If  dstAccessMask includes ^,  dstStageMask must include ^, ^ , or ^2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03923 If  dstAccessMask includes ^,  dstStageMask must include ^, ^ , or ^2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-04994 If  dstAccessMask includes ^,  dstStageMask must include ^2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03924 If  dstAccessMask includes ^,  dstStageMask must include ^ or ^2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03925 If  dstAccessMask includes ^,  dstStageMask must include ^ or ^2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03926 If  dstAccessMask includes ^,  dstStageMask must include ^ ^ , or ^2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03927 If  dstAccessMask includes ^,  dstStageMask must include ^, ^ , or ^2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03928 If  dstAccessMask includes ^,  dstStageMask must include ^ or ^+VUID-VkBufferMemoryBarrier2KHR-offset-01187 offset must be less than the size of buffer)VUID-VkBufferMemoryBarrier2KHR-size-01188 If size is not equal to  , size must be greater than 0)VUID-VkBufferMemoryBarrier2KHR-size-01189 If size is not equal to  , size must0 be less than or equal to than the size of buffer minus offset+VUID-VkBufferMemoryBarrier2KHR-buffer-01931 If buffer is non-sparse then it must7 be bound completely and contiguously to a single 0  object8VUID-VkBufferMemoryBarrier2KHR-srcQueueFamilyIndex-04087 If srcQueueFamilyIndex is not equal to dstQueueFamilyIndex, at least one must not be a special queue family reserved for external memory ownership transfers, as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers???+VUID-VkBufferMemoryBarrier2KHR-buffer-04088 If buffer. was created with a sharing mode of , srcQueueFamilyIndex and dstQueueFamilyIndex are not equal, and one of srcQueueFamilyIndex and dstQueueFamilyIndex is one of the special queue family values reserved for external memory transfers, the other must be +VUID-VkBufferMemoryBarrier2KHR-buffer-04089 If buffer. was created with a sharing mode of  , and srcQueueFamilyIndex and dstQueueFamilyIndex are not equal, srcQueueFamilyIndex and dstQueueFamilyIndex must both be valid queue families, or one of the special queue family values reserved for external memory transfers, as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers???1VUID-VkBufferMemoryBarrier2KHR-srcStageMask-03851 If either  srcStageMask or  dstStageMask includes ^, srcQueueFamilyIndex and dstQueueFamilyIndex must be equalValid Usage (Implicit)*VUID-VkBufferMemoryBarrier2KHR-sType-sType sType must be  *VUID-VkBufferMemoryBarrier2KHR-pNext-pNext pNext must be NULL5VUID-VkBufferMemoryBarrier2KHR-srcStageMask-parameter  srcStageMask must be a valid combination of  values6VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-parameter  srcAccessMask must be a valid combination of ] values5VUID-VkBufferMemoryBarrier2KHR-dstStageMask-parameter  dstStageMask must be a valid combination of  values6VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-parameter  dstAccessMask must be a valid combination of ] values/VUID-VkBufferMemoryBarrier2KHR-buffer-parameter buffer must be a valid  handleSee Also], , , o, , ]vulkanVkSubmitFlagBitsKHR - Bitmask specifying behavior of a submissionSee Also]]vulkan9VkAccessFlagBits2KHR - Access flags for VkAccessFlags2KHR DescriptionNoteIn situations where an application wishes to select all access types for a given set of pipeline stages, ^ or ^ can be used. This is particularly useful when specifying stages that only have a single access type.NoteThe ] bitmask goes beyond the 31 individual bit flags allowable within a C99 enum, which is how  is defined. The first 31 values are common to both, and are interchangeable.See Also!No cross-references are available]vulkanfeatures-synchronization2 synchronization2 indicates whether the implementation supports the new set of synchronization commands introduced in  VK_KHR_synchronization2.htmlVK_KHR_synchronization2.]vulkanstage indicates a single pipeline stage which the checkpoint marker data refers to.]vulkanpCheckpointMarker contains the value of the last checkpoint marker executed in the stage that stage refers to.]vulkancheckpointExecutionStageMask is a mask indicating which pipeline stages the implementation can execute checkpoint markers in.]vulkanpNext is NULL6 or a pointer to a structure extending this structure.]vulkanflags is a bitmask of ].]vulkanpWaitSemaphoreInfos is a pointer to an array of  structures defining  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-waitingsemaphore wait operations.^vulkanpCommandBufferInfos is a pointer to an array of  structures describing command buffers to execute in the batch.^vulkanpSignalSemaphoreInfos is a pointer to an array of  describing  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signalingsemaphore signal operations.^vulkan commandBuffer is a  to be submitted for execution.^vulkan deviceMask is a bitmask indicating which devices in a device group execute the command buffer. A  deviceMask of 0 is equivalent to setting all bits corresponding to valid devices in the group to 1.^vulkan semaphore is a x affected by this operation.^vulkanvalue$ is either the value used to signal  semaphore or the value waited on by  semaphore, if  semaphore3 is a timeline semaphore. Otherwise it is ignored.^vulkan stageMask is a  mask of pipeline stages which limit the first synchronization scope of a semaphore signal operation, or second synchronization scope of a semaphore wait operation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-waitingsemaphore wait operation and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signalingsemaphore signal operation sections of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronizationthe synchronization chapter.^vulkan deviceIndex is the index of the device within a device group that executes the semaphore wait or signal operation.^vulkandependencyFlags is a bitmask of > specifying how execution and memory dependencies are formed.^vulkanpMemoryBarriers is a pointer to an array of  structures that define memory dependencies between any memory accesses.^vulkanpBufferMemoryBarriers is a pointer to an array of  structures that define memory dependencies between buffer ranges.^vulkanpImageMemoryBarriers is a pointer to an array of  structures that define memory dependencies between image subresources.^vulkan srcStageMask is a 1 mask of pipeline stages to be included in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopesfirst synchronization scope.^vulkan srcAccessMask is a ]. mask of access flags to be included in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopesfirst access scope.^vulkan dstStageMask is a 1 mask of pipeline stages to be included in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessecond synchronization scope.^vulkan dstAccessMask is a ]. mask of access flags to be included in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopessecond access scope.^vulkansrcQueueFamilyIndex# is the source queue family for a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer.^vulkandstQueueFamilyIndex( is the destination queue family for a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer.^vulkanbuffer is a handle to the buffer whose backing memory is affected by the barrier.^vulkanoffset3 is an offset in bytes into the backing memory for buffer; this is relative to the base offset as bound to the buffer (see 5).^vulkansize is a size in bytes of the affected area of backing memory for buffer, or   to use the range from offset to the end of the buffer.^vulkanpNext is NULL6 or a pointer to a structure extending this structure.^vulkan srcStageMask is a 1 mask of pipeline stages to be included in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopesfirst synchronization scope.^vulkan srcAccessMask is a ]. mask of access flags to be included in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopesfirst access scope.^vulkan dstStageMask is a 1 mask of pipeline stages to be included in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessecond synchronization scope.^vulkan dstAccessMask is a ]. mask of access flags to be included in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopessecond access scope.^vulkan oldLayout is the old layout in an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition.^vulkan newLayout is the new layout in an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition.^vulkansrcQueueFamilyIndex# is the source queue family for a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer.^vulkandstQueueFamilyIndex( is the destination queue family for a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer.^vulkanimage3 is a handle to the image affected by this barrier.^vulkansubresourceRange describes the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-viewsimage subresource range within image" that is affected by this barrier.^vulkan srcStageMask is a 1 mask of pipeline stages to be included in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopesfirst synchronization scope.^vulkan srcAccessMask is a ]. mask of access flags to be included in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopesfirst access scope.^vulkan dstStageMask is a 1 mask of pipeline stages to be included in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessecond synchronization scope.^vulkan dstAccessMask is a ]. mask of access flags to be included in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopessecond access scope.^vulkan^6 specifies that this batch is a protected submission.^vulkan^ specifies the stage of the pipeline where vertex attribute output values are written to the transform feedback buffers.^vulkan^ specifies the stage of the pipeline where the predicate of conditional rendering is consumed.^vulkan^ specifies the stage of the pipeline where device-side generation of commands via   is handled.^vulkan^1 specifies the stage of the pipeline where the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-shading-rate-attachmentshading rate image is read to determine the fragment shading rate for portions of a rasterized primitive.^vulkan^ specifies the execution of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structureacceleration structure commands.^vulkan^; specifies the execution of the ray tracing shader stages.^vulkan^ specifies the stage of the pipeline where the fragment density map is read to  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragmentdensitymapopsgenerate the fragment areas.^vulkan^! specifies the task shader stage.^vulkan^! specifies the mesh shader stage.^vulkan^ specifies the stage of the pipeline where the invocation mask image is read by the implementation to optimize the ray dispatch.^vulkan^- is equivalent to specifying all supported  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterizationpre-rasterization shader stages:^^^^^^^vulkan^ specifies the stage of the pipeline where vertex buffers are consumed.^vulkan^ specifies the stage of the pipeline where index buffers are consumed.^vulkan^ specifies the execution of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clearsclear commands, with the exception of  .^vulkan^ specifies the execution of  .^vulkan^ specifies the execution of  .^vulkan^! specifies the execution of all  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy commands , including .^vulkan^ specifies all operations performed by all commands supported on the queue it is used with.^vulkan^ specifies the execution of all graphics pipeline stages, and is equivalent to the logical OR of:^^^^^^^^^^^^^^^^^^vulkan^ specifies a pseudo-stage indicating execution on the host of reads/writes of device memory. This stage is not invoked by any commands recorded in a command buffer.^vulkan^ is equivalent to ^ with ] set to 0 when specified in the first synchronization scope, but equivalent to ^ in the second scope.^vulkan^% is equivalent to specifying all of:^^^^^vulkan^% specifies the compute shader stage.^vulkan^ specifies the stage of the pipeline after blending where the final color values are output from the pipeline. This stage also includes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops!subpass load and store operations and multisample resolve operations for framebuffer attachments with a color or depth/stencil format.^vulkan^ specifies the stage of the pipeline where late fragment tests (depth and stencil tests after fragment shading) are performed. This stage also includes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-opssubpass store operations: for framebuffer attachments with a depth/stencil format.^vulkan^ specifies the stage of the pipeline where early fragment tests (depth and stencil tests before fragment shading) are performed. This stage also includes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-opssubpass load operations: for framebuffer attachments with a depth/stencil format.^vulkan^& specifies the fragment shader stage.^vulkan^& specifies the geometry shader stage.^vulkan^5 specifies the tessellation evaluation shader stage.^vulkan^2 specifies the tessellation control shader stage.^vulkan^$ specifies the vertex shader stage.^vulkan^% is equivalent to the logical OR of:^^^vulkan^ specifies the stage of the pipeline where indirect command parameters are consumed. This stage also includes reading commands written by  .^vulkan^ is equivalent to ^ with ] set to 0 when specified in the second synchronization scope, but equivalent to ^ in the first scope.^vulkan^" specifies no stages of execution.^vulkan^ specifies write access to a transform feedback buffer made when transform feedback is active. Such access occurs in the ^ pipeline stage.^vulkan^ specifies read access to a transform feedback counter buffer which is read when ' executes. Such access occurs in the ^ pipeline stage.^vulkan^ specifies write access to a transform feedback counter buffer which is written when ' executes. Such access occurs in the ^ pipeline stage.^vulkan^ specifies read access to a predicate as part of conditional rendering. Such access occurs in the ^ pipeline stage.^vulkan^) specifies reads from buffer inputs to  . Such access occurs in the ^ pipeline stage.^vulkan^ specifies writes to the target command buffer preprocess outputs. Such access occurs in the ^ pipeline stage.^vulkan^ specifies read access to a fragment shading rate attachment during rasterization. Such access occurs in the ^ pipeline stage.^vulkan^ specifies read access to an acceleration structure as part of a trace, build, or copy command, or to an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-scratch%acceleration structure scratch buffer9 as part of a build command. Such access occurs in the ^ pipeline stage or ^ pipeline stage.^vulkan^: specifies write access to an acceleration structure or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-scratch%acceleration structure scratch buffer as part of a build or copy command. Such access occurs in the ^ pipeline stage.^vulkan^ specifies read access to a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachmentfragment density map attachment during dynamic  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragmentdensitymapopsfragment density map operations. Such access occurs in the ^ pipeline stage.^vulkan^ specifies read access to  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpasscolor attachments, including  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advancedadvanced blend operations. Such access occurs in the ^ pipeline stage.^vulkan^; specifies read access to a invocation mask image in the ^ pipeline stage.^vulkan^ specifies write access to a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebufferstorage buffer,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-physical-storage-bufferphysical storage buffer,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagetexelbufferstorage texel buffer, or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage storage image in any shader pipeline stage.^vulkan^ specifies read access to a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebufferstorage buffer,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-physical-storage-bufferphysical storage buffer,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagetexelbufferstorage texel buffer, or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage storage image in any shader pipeline stage.^vulkan^ specifies read access to a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformtexelbufferuniform texel buffer or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampledimage sampled image in any shader pipeline stage.^vulkan^ specifies all write accesses. It is always valid in any access mask, and is treated as equivalent to setting all WRITE. access flags that are valid where it is used.^vulkan^ specifies all read accesses. It is always valid in any access mask, and is treated as equivalent to setting all READ. access flags that are valid where it is used.^vulkan^ specifies write access by a host operation. Accesses of this type are not performed through a resource, but directly on memory. Such access occurs in the ^ pipeline stage.^vulkan^ specifies read access by a host operation. Accesses of this type are not performed through a resource, but directly on memory. Such access occurs in the ^ pipeline stage.^vulkan^5 specifies write access to an image or buffer in a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clearsclear or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copiescopy' operation. Such access occurs in the ^, ^, ^, or ^ pipeline stages.^vulkan^4 specifies read access to an image or buffer in a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copiescopy' operation. Such access occurs in the ^, ^, or ^ pipeline stages.^vulkan^ specifies write access to a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpassdepth/stencil attachment, via  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-ds-statedepth or stencil operations or via certain  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops!subpass load and store operations. Such access occurs in the ^ or ^ pipeline stages.^vulkan^ specifies read access to a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpassdepth/stencil attachment, via  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-ds-statedepth or stencil operations or via certain  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-opssubpass load operations. Such access occurs in the ^ or ^ pipeline stages.^vulkan^ specifies write access to a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass3color, resolve, or depth/stencil resolve attachment during a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass render pass or via certain  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops!subpass load and store operations. Such access occurs in the ^ pipeline stage.^vulkan^ specifies read access to a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpasscolor attachment, such as via  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blendingblending,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-logicoplogic operations, or via certain  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-opssubpass load operations. It does not include  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advancedadvanced blend operations. Such access occurs in the ^ pipeline stage.^vulkan^ is equivalent to ^.^vulkan^ specifies read access to a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shader-binding-tableshader binding table in any shader pipeline. In addition, it is equivalent to the logical OR of: VK_ACCESS_2_UNIFORM_READ_BIT_KHR'VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR'VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR^vulkan^ specifies read access to an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpassinput attachment within a render pass during fragment shading. Such access occurs in the ^ pipeline stage.^vulkan^ specifies read access to a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbufferuniform buffer in any shader pipeline stage.^vulkan^ specifies read access to a vertex buffer as part of a drawing command, bound by . Such access occurs in the ^ pipeline stage.^vulkan^ specifies read access to an index buffer as part of an indexed drawing command, bound by . Such access occurs in the ^ pipeline stage.^vulkan^ specifies read access to command data read from indirect buffers as part of an indirect build, trace, drawing or dispatch command. Such access occurs in the ^ pipeline stage.^vulkan^ specifies no accesses.^vulkan9vkCmdSetEvent2KHR - Set an event object to signaled state DescriptionWhen ^ is submitted to a queue, it defines the first half of memory dependencies defined by pDependencyInfo, as well as an event signal operation which sets the event to the signaled state. A memory dependency is defined between the event signal operation and commands that occur earlier in submission order. The first  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope are defined by the union of all the memory dependencies defined by pDependencyInfo<, and are applied to all operations that occur earlier in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-ordersubmission order.  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers Queue family ownership transfers and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transitions defined by pDependencyInfo' are also included in the first scopes. The second  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope5 includes only the event signal operation, and any  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfers and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transitions defined by pDependencyInfo. The second  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope includes only  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfers and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transitions.Future ^1 commands rely on all values of each element in pDependencyInfo matching exactly with those used to signal the corresponding event.   must not be used to wait on the result of a signal operation defined by ^.Note"The extra information provided by ^ compared to   allows implementations to more efficiently schedule the operations required to satisfy the requested dependencies. With  7, the full dependency information is not known until   is recorded, forcing implementations to insert the required operations at that point and not before.If event' is already in the signaled state when ^" is executed on the device, then ^ has no effect, no event signal operation occurs, and no dependency is generated. Valid Usage-VUID-vkCmdSetEvent2KHR-synchronization2-03824 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2synchronization2 feature must be enabled,VUID-vkCmdSetEvent2KHR-dependencyFlags-03825 The dependencyFlags member of pDependencyInfo must be 0*VUID-vkCmdSetEvent2KHR-commandBuffer-03826! The current device mask of  commandBuffer must$ include exactly one physical device)VUID-vkCmdSetEvent2KHR-srcStageMask-03827 The  srcStageMask# member of any element of the pMemoryBarriers, pBufferMemoryBarriers, or pImageMemoryBarriers members of pDependencyInfo must only include pipeline stages valid for the queue family that was used to create the command pool that  commandBuffer was allocated from)VUID-vkCmdSetEvent2KHR-dstStageMask-03828 The  dstStageMask# member of any element of the pMemoryBarriers, pBufferMemoryBarriers, or pImageMemoryBarriers members of pDependencyInfo must only include pipeline stages valid for the queue family that was used to create the command pool that  commandBuffer was allocated fromValid Usage (Implicit).VUID-vkCmdSetEvent2KHR-commandBuffer-parameter  commandBuffer must be a valid  handle&VUID-vkCmdSetEvent2KHR-event-parameter event must be a valid  handle0VUID-vkCmdSetEvent2KHR-pDependencyInfo-parameter pDependencyInfo must be a valid pointer to a valid  structure.VUID-vkCmdSetEvent2KHR-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state,VUID-vkCmdSetEvent2KHR-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must( support graphics, or compute operations!VUID-vkCmdSetEvent2KHR-renderpass This command must6 only be called outside of a render pass instance#VUID-vkCmdSetEvent2KHR-commonparent Both of  commandBuffer , and event must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryOutside Graphics ComputeSee Also, , ^vulkanvkCmdResetEvent2KHR - Reset an event object to non-signaled state DescriptionWhen ^ is submitted to a queue, it defines an execution dependency on commands that were submitted before it, and defines an event unsignal operation which resets the event to the unsignaled state. The first  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope/ includes all commands that occur earlier in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-ordersubmission order9. The synchronization scope is limited to operations by  stageMask or stages that are  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-orderlogically earlier than  stageMask. The second  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope- includes only the event unsignal operation.If event) is already in the unsignaled state when ^ is executed on the device, then this command has no effect, no event unsignal operation occurs, and no execution dependency is generated. Valid Usage(VUID-vkCmdResetEvent2KHR-stageMask-03929 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled,  stageMask must not contain ^ (VUID-vkCmdResetEvent2KHR-stageMask-03930 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled,  stageMask must not contain ^ or ^(VUID-vkCmdResetEvent2KHR-stageMask-03931 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRenderingconditional rendering feature is not enabled,  stageMask must not contain ^(VUID-vkCmdResetEvent2KHR-stageMask-03932 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapfragment density map feature is not enabled,  stageMask must not contain ^(VUID-vkCmdResetEvent2KHR-stageMask-03933 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedbacktransform feedback feature is not enabled,  stageMask must not contain ^(VUID-vkCmdResetEvent2KHR-stageMask-03934 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled,  stageMask must not contain ^(VUID-vkCmdResetEvent2KHR-stageMask-03935 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders feature is not enabled,  stageMask must not contain ^(VUID-vkCmdResetEvent2KHR-stageMask-04956 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshading rate image feature is not enabled,  stageMask must not contain ^(VUID-vkCmdResetEvent2KHR-stageMask-04995 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMaskinvocation mask image feature is not enabled,  stageMask must not contain ^/VUID-vkCmdResetEvent2KHR-synchronization2-03829 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2synchronization2 feature must be enabled(VUID-vkCmdResetEvent2KHR-stageMask-03830  stageMask must not include ^$VUID-vkCmdResetEvent2KHR-event-03831 There must) be an execution dependency between ^ and the execution of any   that includes event in its pEvents parameter$VUID-vkCmdResetEvent2KHR-event-03832 There must) be an execution dependency between ^ and the execution of any ^ that includes event in its pEvents parameter,VUID-vkCmdResetEvent2KHR-commandBuffer-03833  commandBuffer@s current device mask must% include exactly one physical device.Valid Usage (Implicit)0VUID-vkCmdResetEvent2KHR-commandBuffer-parameter  commandBuffer must be a valid  handle(VUID-vkCmdResetEvent2KHR-event-parameter event must be a valid  handle,VUID-vkCmdResetEvent2KHR-stageMask-parameter  stageMask must be a valid combination of  values2VUID-vkCmdResetEvent2KHR-stageMask-requiredbitmask  stageMask must not be 00VUID-vkCmdResetEvent2KHR-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state.VUID-vkCmdResetEvent2KHR-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must( support graphics, or compute operations#VUID-vkCmdResetEvent2KHR-renderpass This command must6 only be called outside of a render pass instance%VUID-vkCmdResetEvent2KHR-commonparent Both of  commandBuffer , and event must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryOutside Graphics ComputeSee Also, , ^vulkan1vkCmdWaitEvents2KHR - Wait for one or more events DescriptionWhen ^ is submitted to a queue, it inserts memory dependencies according to the elements of pDependencyInfos$ and each corresponding element of pEvents. ^ must not be used to wait on event signal operations occurring on other queues, or signal operations execyted by  . The first  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope8 of each memory dependency defined by any element i of pDependencyInfos6 are applied to operations that occurred earlier in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-ordersubmission order7 than the last event signal operation on element i of pEvents.?Signal operations for an event at index i are only included if:The event was signaled by a ^, command that occurred earlier in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-ordersubmission order with a dependencyInfo0 parameter exactly equal to the element of pDependencyInfos at index i ; or#The event was created without , and the first  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope defined by the element of pDependencyInfos0 at index i only includes host operations (^). The second  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope8 of each memory dependency defined by any element i of pDependencyInfos4 are applied to operations that occurred later in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-ordersubmission order than ^.Note^ is used with ^ to define a memory dependency between two sets of action commands, roughly in the same way as pipeline barriers, but split into two commands such that work between the two may execute unhindered.NoteApplications should be careful to avoid race conditions when using events. There is no direct ordering guarantee between ^ and ^,  , or  . Another execution dependency (e.g. a pipeline barrier or semaphore with ^.) is needed to prevent such a race condition. Valid Usage/VUID-vkCmdWaitEvents2KHR-synchronization2-03836 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2synchronization2 feature must be enabled &VUID-vkCmdWaitEvents2KHR-pEvents-03837 Members of pEvents must% not have been signaled by  &VUID-vkCmdWaitEvents2KHR-pEvents-03838 For any element i of pEvents, if that event is signaled by ^, that command@s dependencyInfo parameter must- be exactly equal to the ith element of pDependencyInfos&VUID-vkCmdWaitEvents2KHR-pEvents-03839 For any element i of pEvents$, if that event is signaled by + &, barriers in the ith element of pDependencyInfos must7 include only host operations in their first https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope&VUID-vkCmdWaitEvents2KHR-pEvents-03840 For any element i of pEvents$, if barriers in the ith element of pDependencyInfos7 include only host operations, the ith element of pEvents must be signaled before ^ is executed&VUID-vkCmdWaitEvents2KHR-pEvents-03841 For any element i of pEvents$, if barriers in the ith element of pDependencyInfos9 do not include host operations, the ith element of pEvents must% be signaled by a corresponding ^$ that occurred earlier in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-ordersubmission order+VUID-vkCmdWaitEvents2KHR-srcStageMask-03842 The  srcStageMask# member of any element of the pMemoryBarriers, pBufferMemoryBarriers, or pImageMemoryBarriers members of pDependencyInfos must either include only pipeline stages valid for the queue family that was used to create the command pool that  commandBuffer* was allocated from, or include only ^+VUID-vkCmdWaitEvents2KHR-dstStageMask-03843 The  dstStageMask# member of any element of the pMemoryBarriers, pBufferMemoryBarriers, or pImageMemoryBarriers members of pDependencyInfos must only include pipeline stages valid for the queue family that was used to create the command pool that  commandBuffer was allocated from.VUID-vkCmdWaitEvents2KHR-dependencyFlags-03844 The dependencyFlags member of any element of pDependencyInfo must be 0&VUID-vkCmdWaitEvents2KHR-pEvents-03845 If pEvents includes one or more events that will be signaled by +  after  commandBuffer* has been submitted to a queue, then ^ must1 not be called inside a render pass instance,VUID-vkCmdWaitEvents2KHR-commandBuffer-03846  commandBuffer@s current device mask must$ include exactly one physical deviceValid Usage (Implicit)0VUID-vkCmdWaitEvents2KHR-commandBuffer-parameter  commandBuffer must be a valid  handle*VUID-vkCmdWaitEvents2KHR-pEvents-parameter pEvents must( be a valid pointer to an array of  eventCount valid  handles3VUID-vkCmdWaitEvents2KHR-pDependencyInfos-parameter pDependencyInfos must( be a valid pointer to an array of  eventCount valid  structures0VUID-vkCmdWaitEvents2KHR-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state.VUID-vkCmdWaitEvents2KHR-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must( support graphics, or compute operations/VUID-vkCmdWaitEvents2KHR-eventCount-arraylength  eventCount must be greater than 0%VUID-vkCmdWaitEvents2KHR-commonparent Both of  commandBuffer, and the elements of pEvents must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth Graphics ComputeSee Also, , ^vulkan A variant of ^ which makes a *safe* FFI call^vulkan5vkCmdPipelineBarrier2KHR - Insert a memory dependency DescriptionWhen ^ is submitted to a queue, it defines memory dependencies between commands that were submitted before it, and those submitted after it. The first  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope8 of each memory dependency defined by any element i of pDependencyInfos6 are applied to operations that occurred earlier in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-ordersubmission order. The second  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope8 of each memory dependency defined by any element i of pDependencyInfos4 are applied to operations that occurred later in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-ordersubmission order.If ^ is recorded within a render pass instance, the synchronization scopes are  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-barriers-subpass-self-dependencies-limited to operations within the same subpass. Valid Usage1VUID-vkCmdPipelineBarrier2KHR-pDependencies-02285 If ^? is called within a render pass instance, the render pass must* have been created with at least one 7 instance in 7:: pDependencies that expresses a dependency from the current subpass to itself, with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scopes and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopes that are all supersets of the scopes defined in this command object the caller would like to retrieve checkpoint data for^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^]]]]]^^^^^^^]]]]^^^^^^^^^^^^^^^^^^^^^^^^^]]]^^^^^^^^^^]]]^]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^]]^^^^^^^^^^^^^^^^^_^^^^^^^^_^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^]]]]^^]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^]]^]^]^]^None( #$&'(./0289:<>?,TvulkanVkPhysicalDeviceInvocationMaskFeaturesHUAWEI - Structure describing invocation mask features that can be supported by an implementationMembers0This structure describes the following features: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, _vulkanfeatures-invocationMask invocationMask indicates that the implementation supports the use of an invocation mask image to optimize the ray dispatch._vulkanvkCmdBindInvocationMaskHUAWEI - Bind an invocation mask image on a command buffer Valid Usage-VUID-vkCmdBindInvocationMaskHUAWEI-None-04976 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMaskinvocation mask image feature must be enabled2VUID-vkCmdBindInvocationMaskHUAWEI-imageView-04977 If  imageView is not , it must be a valid  handle of type  2VUID-vkCmdBindInvocationMaskHUAWEI-imageView-04978 If  imageView is not , it must have a format of 2VUID-vkCmdBindInvocationMaskHUAWEI-imageView-04979 If  imageView is not , it must" have been created with  set2VUID-vkCmdBindInvocationMaskHUAWEI-imageView-04980 If  imageView is not ,  imageLayout must be ".VUID-vkCmdBindInvocationMaskHUAWEI-width-049812 Thread mask image resolution must match the width and height in  -VUID-vkCmdBindInvocationMaskHUAWEI-None-049820 Each element in the invocation mask image must have the value 0 or 11. The value 1 means the invocation is active.VUID-vkCmdBindInvocationMaskHUAWEI-width-04983 width in   should be 1Valid Usage (Implicit):VUID-vkCmdBindInvocationMaskHUAWEI-commandBuffer-parameter  commandBuffer must be a valid  handle6VUID-vkCmdBindInvocationMaskHUAWEI-imageView-parameter If  imageView is not ,  imageView must be a valid  handle8VUID-vkCmdBindInvocationMaskHUAWEI-imageLayout-parameter  imageLayout must be a valid O value:VUID-vkCmdBindInvocationMaskHUAWEI-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state8VUID-vkCmdBindInvocationMaskHUAWEI-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support compute operations-VUID-vkCmdBindInvocationMaskHUAWEI-renderpass This command must6 only be called outside of a render pass instance/VUID-vkCmdBindInvocationMaskHUAWEI-commonparent Both of  commandBuffer, and  imageView7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryOutside Compute See Also, O, _vulkan commandBuffer? is the command buffer into which the command will be recordedvulkan imageView is an image view handle that specifies the invocation mask image  imageView may be set to , which is equivalent to specifying a view of an image filled with ones value.vulkan imageLayout< is the layout that the image subresources accessible from  imageView6 will be in when the invocation mask image is accessed__]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^]____________]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^None( #$&'(./0289:<>?,vulkanVkMemoryGetAndroidHardwareBufferInfoANDROID - Structure describing an Android hardware buffer memory export operation Valid UsageVUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-handleTypes-01882 B  must have been included in P:: handleTypes when memory was createdVUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-parameter buffer must be a valid pointer to an  valueSee AlsovulkanVkExternalFormatANDROID - Structure containing an Android hardware buffer external format DescriptionIf externalFormat# is zero, the effect is as if the , structure was not present. Otherwise, the image) will have the specified external format.Valid Usage (Implicit)See AlsovulkanVkAndroidHardwareBufferUsageANDROID - Struct containing Android hardware buffer usage flags DescriptionThe androidHardwareBufferUsage field must= include Android hardware buffer usage flags listed in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-usage!AHardwareBuffer Usage Equivalence table when the corresponding Vulkan image usage or image creation flags are included in the usage or flags fields of U. It must' include at least one GPU usage flag (AHARDWAREBUFFER_USAGE_GPU_*), even if none of the corresponding Vulkan usages or flags are requested.NoteRequiring at least one GPU usage flag ensures that Android hardware buffer memory will be allocated in a memory pool accessible to the Vulkan implementation, and that specializing the memory layout based on usage flags does not prevent it from being compatible with Vulkan. Implementations may avoid unnecessary restrictions caused by this requirement by using vendor usage flags to indicate that only the Vulkan uses indicated in U are required.Valid Usage (Implicit)See AlsovulkanVkAndroidHardwareBufferPropertiesANDROID - Properties of External Memory Android Hardware BuffersValid Usage (Implicit)9VUID-VkAndroidHardwareBufferPropertiesANDROID-sType-sType sType must be  9VUID-VkAndroidHardwareBufferPropertiesANDROID-pNext-pNext pNext must be NULL* or a pointer to a valid instance of :VUID-VkAndroidHardwareBufferPropertiesANDROID-sType-unique The sType value of each struct in the pNext chain must be uniqueSee Alsoo, , _vulkanVkAndroidHardwareBufferFormatPropertiesANDROID - Structure describing the image format properties of an Android hardware buffer DescriptionIf the Android hardware buffer has one of the formats listed in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-formatsFormat Equivalence table, then format must have the equivalent Vulkan format listed in the table. Otherwise, format may be *, indicating the Android hardware buffer can& only be used with an external format.The formatFeatures member must include  and at least one of  or , and should include  and .NoteThe formatFeatures> member only indicates the features available when using an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formatsexternal-format image created from the Android hardware buffer. Images from Android hardware buffers with a format other than 8 are subject to the format capabilities obtained from U , and U  with appropriate parameters. These sets of features are independent of each other, e.g. the external format will support sampler Y@CBCR conversion even if the non-external format does not, and writing to non-external format images is possible but writing to external format images is not.7Android hardware buffers with the same external format must have the same support for , , , , , and . in formatFeatures. Other format features may differ between Android hardware buffers that have the same external format. This allows applications to use the same D  object (and samplers and pipelines created from them) for any Android hardware buffers that have the same external format.If format is not , then the value of  samplerYcbcrConversionComponents must be valid when used as the  components member of Y with that format. If format is , all members of  samplerYcbcrConversionComponents must be the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views-identity-mappingsidentity swizzle.Implementations may not always be able to determine the color model, numerical range, or chroma offsets of the image contents, so the values in % are only suggestions. Applications should treat these values as sensible defaults to use in the absence of more reliable information obtained through some other means. If the underlying physical device is also usable via OpenGL ES with the  https://www.khronos.org/registry/OpenGL/extensions/OES/OES_EGL_image_external.txtGL_OES_EGL_image_external extension, the implementation should suggest values that will produce similar sampled values as would be obtained by sampling the same external image via samplerExternalOES3 in OpenGL ES using equivalent sampler parameters.NoteSince  https://www.khronos.org/registry/OpenGL/extensions/OES/OES_EGL_image_external.txtGL_OES_EGL_image_external does not require the same sampling and conversion calculations as Vulkan does, achieving identical results between APIs may* not be possible on some implementations.Valid Usage (Implicit)See Also, , K, #, , , _vulkanexternalFormat is an implementation-defined identifier for the external format1VUID-VkExternalFormatANDROID-externalFormat-01894 externalFormat must be 0 or a value returned in the externalFormat member of  by an earlier call to __vulkanformat is the Vulkan format corresponding to the Android hardware buffer@s format, or . if there is not an equivalent Vulkan format._vulkanexternalFormat is an implementation-defined external format identifier for use with . It must not be zero._vulkanformatFeatures describes the capabilities of this external format when used with an image bound to memory imported from buffer._vulkan samplerYcbcrConversionComponents is the component swizzle that should be used in Y._vulkansuggestedYcbcrModel+ is a suggested color model to use in the Y._vulkansuggestedYcbcrRange1 is a suggested numerical value range to use in Y._vulkansuggestedXChromaOffset+ is a suggested X chroma offset to use in Y._vulkansuggestedYChromaOffset+ is a suggested Y chroma offset to use in Y._vulkanmemory is the memory object from which the Android hardware buffer will be exported._vulkanpNext is NULL6 or a pointer to a structure extending this structure._vulkanallocationSize# is the size of the external memory_vulkanmemoryTypeBits is a bitmask containing one bit set for every memory type which the specified Android hardware buffer can be imported as._vulkanandroidHardwareBufferUsage2 returns the Android hardware buffer usage flags._vulkanbuffer* is the Android hardware buffer to import._vulkanvkGetAndroidHardwareBufferPropertiesANDROID - Get Properties of External Memory Android Hardware Buffers Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, _vulkanvkGetMemoryAndroidHardwareBufferANDROID - Get an Android hardware buffer for a memory object Description Each call to _ must return an Android hardware buffer with a new reference acquired in addition to the reference held by the /. To avoid leaking resources, the application must# release the reference by calling AHardwareBuffer_release when it is no longer needed. When called with the same handle in ::memory, _ must return the same Android hardware buffer object. If the device memory was created by importing an Android hardware buffer, _ must2 return that same Android hardware buffer object. Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, _vulkandevice. is the logical device that will be importing buffer.VUID-vkGetAndroidHardwareBufferPropertiesANDROID-device-parameter device must be a valid  handlevulkanbuffer7 is the Android hardware buffer which will be imported.=VUID-vkGetAndroidHardwareBufferPropertiesANDROID-buffer-01884 buffer must be a valid Android hardware buffer object with at least one of the AHARDWAREBUFFER_USAGE_GPU_* flags in its AHardwareBuffer_Desc::usageVUID-vkGetAndroidHardwareBufferPropertiesANDROID-buffer-parameter buffer must be a valid pointer to a valid  value_vulkandevice is the logical device that created the device memory being exported.=VUID-vkGetMemoryAndroidHardwareBufferANDROID-device-parameter device must be a valid  handlevulkanpInfo is a pointer to a : structure containing parameters of the export operation.?,evulkanVkSamplerYcbcrConversionInfo - Structure specifying Y@CBCR conversion to a sampler or image viewValid Usage (Implicit)See Also, vulkanVkSamplerYcbcrConversionImageFormatProperties - Structure specifying combined image sampler descriptor count for multi-planar imagesValid Usage (Implicit)See AlsovulkanVkSamplerYcbcrConversionCreateInfo - Structure specifying the parameters of the newly created conversion DescriptionNoteSetting forceExplicitReconstruction to / may have a performance penalty on implementations where explicit reconstruction is not the default mode of operation.If format supports # the forceExplicitReconstruction$ value behaves as if it was set to /.If the pNext chain includes a  structure with non-zero externalFormat= member, the sampler Y@CBCR conversion object represents an external format conversion, and format must be &. Such conversions must5 only be used to sample image views with a matching  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formatsexternal format=. When creating an external format conversion, the value of  components is ignored. Valid Usage4VUID-VkSamplerYcbcrConversionCreateInfo-format-019049 If an external format conversion is being created, format must be & 4VUID-VkSamplerYcbcrConversionCreateInfo-format-04061= If an external format conversion is not being created, format must represent unsigned normalized values (i.e. the format must be a UNORM format)4VUID-VkSamplerYcbcrConversionCreateInfo-format-01650 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-featurespotential format features' of the sampler Y@CBCR conversion must support # or #;VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-01651 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-featurespotential format features; of the sampler Y@CBCR conversion do not support #,  xChromaOffset and  yChromaOffset must not be - if the corresponding channels are https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-chroma-reconstruction downsampled;VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-01652 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-featurespotential format features; of the sampler Y@CBCR conversion do not support #,  xChromaOffset and  yChromaOffset must not be - if the corresponding channels are https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-chroma-reconstruction downsampled8VUID-VkSamplerYcbcrConversionCreateInfo-components-02581 If the format has a _422 or _420 suffix, then  components.g must be the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views-identity-mappingsidentity swizzle8VUID-VkSamplerYcbcrConversionCreateInfo-components-02582 If the format has a _422 or _420 suffix, then  components.a must be the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views-identity-mappingsidentity swizzle,  , or 8VUID-VkSamplerYcbcrConversionCreateInfo-components-02583 If the format has a _422 or _420 suffix, then  components.r must be the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views-identity-mappingsidentity swizzle or 8VUID-VkSamplerYcbcrConversionCreateInfo-components-02584 If the format has a _422 or _420 suffix, then  components.b must be the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views-identity-mappingsidentity swizzle or 8VUID-VkSamplerYcbcrConversionCreateInfo-components-02585 If the format has a _422 or _420 suffix, and if either  components.r or  components.b is the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views-identity-mappingsidentity swizzle, both values must be the identity swizzle8VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrModel-01655 If  ycbcrModel is not  , then  components.r,  components.g, and  components.b must$ correspond to channels of the format ; that is,  components.r,  components.g, and  components.b must not be  or  , and must not correspond to a channel which contains zero or one as a consequence of https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-conversion-to-rgbaconversion to RGBA8VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrRange-02748 If  ycbcrRange is < then the R, G and B channels obtained by applying the  component swizzle to format must6 each have a bit-depth greater than or equal to 8VUID-VkSamplerYcbcrConversionCreateInfo-forceExplicitReconstruction-01656 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-featurespotential format features; of the sampler Y@CBCR conversion do not support # forceExplicitReconstruction must be /:VUID-VkSamplerYcbcrConversionCreateInfo-chromaFilter-01657 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-featurespotential format features; of the sampler Y@CBCR conversion do not support #,  chromaFilter must not be  Valid Usage (Implicit)3VUID-VkSamplerYcbcrConversionCreateInfo-sType-sType sType must be   3VUID-VkSamplerYcbcrConversionCreateInfo-pNext-pNext pNext must be NULL* or a pointer to a valid instance of 4VUID-VkSamplerYcbcrConversionCreateInfo-sType-unique The sType" value of each struct in the pNext chain must be unique8VUID-VkSamplerYcbcrConversionCreateInfo-format-parameter format must be a valid K valueVUID-VkSamplerYcbcrConversionCreateInfo-chromaFilter-parameter  chromaFilter must be a valid J valueIf  chromaFilter is , chroma samples are reconstructed to luma channel resolution using nearest-neighbour sampling. Otherwise, chroma samples are reconstructed using interpolation. More details can be found in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-sampler-YCbCr-conversion,the description of sampler Y@CBCR conversion in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#texturesImage Operations chapter.See Alsoq, , , J, K, , , , `,  vulkanVkPhysicalDeviceSamplerYcbcrConversionFeatures - Structure describing Y@CBCR conversion features that can be supported by an implementationMembers/This structure describes the following feature: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkanVkImagePlaneMemoryRequirementsInfo - Structure specifying image plane for memory requirements Valid Usage9VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-02281 If the image@s tiling is  or   , then  planeAspect must be a single valid  format plane4 for the image (that is, for a two-plane image  planeAspect must be " or "#, and for a three-plane image  planeAspect must be ", " or ")9VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-02282 If the image@s tiling is  , then  planeAspect must be a single valid  memory plane for the image (that is,  aspectMask must7 specify a plane index that is less than the  ::drmFormatModifierPlaneCount" associated with the image@s format and ::drmFormatModifier)Valid Usage (Implicit)3VUID-VkImagePlaneMemoryRequirementsInfo-sType-sType sType must be  =VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-parameter  planeAspect must be a valid " valueSee Also", vulkanVkBindImagePlaneMemoryInfo - Structure specifying how to bind an image plane to memory Valid Usage1VUID-VkBindImagePlaneMemoryInfo-planeAspect-02283 If the image@s tiling is  or   , then  planeAspect must be a single valid  format plane4 for the image (that is, for a two-plane image  planeAspect must be " or "#, and for a three-plane image  planeAspect must be ", " or ")1VUID-VkBindImagePlaneMemoryInfo-planeAspect-02284 If the image@s tiling is  , then  planeAspect must be a single valid  memory plane for the image (that is,  aspectMask must7 specify a plane index that is less than the  ::drmFormatModifierPlaneCount" associated with the image@s format and ::drmFormatModifier)Valid Usage (Implicit)+VUID-VkBindImagePlaneMemoryInfo-sType-sType sType must be  5VUID-VkBindImagePlaneMemoryInfo-planeAspect-parameter  planeAspect must be a valid " valueSee Also", `vulkan#combinedImageSamplerDescriptorCount is the number of combined image sampler descriptors that the implementation uses to access the format.`vulkan)extension-features-samplerYcbcrConversion samplerYcbcrConversion1 specifies whether the implementation supports  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y@CBCR conversion. If samplerYcbcrConversion is /, sampler Y@CBCR conversion is not supported, and samplers using sampler Y@CBCR conversion must not be used.`vulkan planeAspect is a " value specifying the aspect corresponding to the image plane to query.`vulkan planeAspect is a " value specifying the aspect of the disjoint image plane to bind.`vulkanpNext is NULL6 or a pointer to a structure extending this structure.`vulkanformat is the format of the image from which color information will be retrieved.`vulkan ycbcrModel describes the color matrix for conversion between color models.`vulkan ycbcrRange describes whether the encoded values have headroom and foot room, or whether the encoding uses the full numerical range.`vulkan components applies a swizzle based on < enums prior to range expansion and color model conversion.`vulkan xChromaOffset describes the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-chroma-reconstructionsample location associated with downsampled chroma channels in the x dimension.  xChromaOffset has no effect for formats in which chroma channels are not downsampled horizontally.`vulkan yChromaOffset describes the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-chroma-reconstructionsample location associated with downsampled chroma channels in the y dimension.  yChromaOffset has no effect for formats in which the chroma channels are not downsampled vertically.`vulkan chromaFilter) is the filter for chroma reconstruction.`vulkanforceExplicitReconstruction can be used to ensure that reconstruction is done explicitly, if supported.`vulkan conversion is a  handle created with `.6VUID-VkSamplerYcbcrConversionInfo-conversion-parameter  conversion must be a valid  handle`vulkan?vkCreateSamplerYcbcrConversion - Create a new Y@CBCR conversion DescriptionThe interpretation of the configured sampler Y@CBCR conversion is described in more detail in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-sampler-YCbCr-conversion,the description of sampler Y@CBCR conversion in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#texturesImage Operations chapter. Valid Usage.VUID-vkCreateSamplerYcbcrConversion-None-01648 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-samplerYcbcrConversion!sampler Y@CBCR conversion feature must be enabledValid Usage (Implicit)4VUID-vkCreateSamplerYcbcrConversion-device-parameter device must be a valid  handle9VUID-vkCreateSamplerYcbcrConversion-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid  structure8VUID-vkCreateSamplerYcbcrConversion-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure>VUID-vkCreateSamplerYcbcrConversion-pYcbcrConversion-parameter pYcbcrConversion must be a valid pointer to a  handle Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , `vulkan=A convenience wrapper to make a compatible pair of calls to ` and `To ensure that ` is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.`vulkanvkDestroySamplerYcbcrConversion - Destroy a created Y@CBCR conversionValid Usage (Implicit)5VUID-vkDestroySamplerYcbcrConversion-device-parameter device must be a valid  handle>VUID-vkDestroySamplerYcbcrConversion-ycbcrConversion-parameter If ycbcrConversion is not , ycbcrConversion must be a valid  handle9VUID-vkDestroySamplerYcbcrConversion-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure;VUID-vkDestroySamplerYcbcrConversion-ycbcrConversion-parent If ycbcrConversion is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to ycbcrConversion must be externally synchronizedSee Also, , `vulkandevice is the logical device that creates the sampler Y@CBCR conversion.vulkan pCreateInfo is a pointer to a ? structure specifying the requested sampler Y@CBCR conversion.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.`vulkandevice; is the logical device that destroys the Y@CBCR conversion.vulkanycbcrConversion is the conversion to destroy.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.K$&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$M""""""""""""""""NW @```````````````````` """"""""""""""##############################``````````````````````````@K$&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$  W  M"""""""""""""""""""""""""""""""N#########################################################"""""""""""""""""""""""""None( #$&'(./0289:<>?,MNNNNNNNNNNNNMMMMMMMMMMMMMMMMMMMMMMMMMM````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````````````````````aa``````````````MNNNNNNNNNNNNMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNMMMMMMMMMMMMMMMMMMMMMMMMMM6None( #$&'(./0289:<>?-p*vulkanVkPipelineCacheHeaderVersionOne - Structure describing the layout of the pipeline cache header DescriptionUnlike most structures declared by the Vulkan API, all fields of this structure are written with the least significant byte first, regardless of host byte-order.The C language specification does not define the packing of structure members. This layout assumes tight structure member packing, with members laid out in the order listed in the structure, and the intended size of the structure is 32 bytes. If a compiler produces code that diverges from that pattern, applications must= employ another method to set values at the correct offsets.Valid Usage (Implicit)See Alsovulkan>VkMemoryBarrier - Structure specifying a global memory barrier Description The first  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope% is limited to access types in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-maskssource access mask specified by  srcAccessMask. The second  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope% is limited to access types in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masksdestination access mask specified by  dstAccessMask.Valid Usage (Implicit)See Also+, ,  ,  vulkanVkImageMemoryBarrier - Structure specifying the parameters of an image memory barrier Description The first  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope is limited to access to memory through the specified image subresource range, via access types in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-maskssource access mask specified by  srcAccessMask. If  srcAccessMask includes , memory writes performed by that access type are also made visible, as that access type is not performed through a resource. The second  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope is limited to access to memory through the specified image subresource range, via access types in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masksdestination access mask specified by  dstAccessMask. If  dstAccessMask includes  or , available memory writes are also made visible to accesses of those types, as those access types are not performed through a resource.If srcQueueFamilyIndex is not equal to dstQueueFamilyIndex, and srcQueueFamilyIndex is equal to the current queue family, then the memory barrier defines a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-releasequeue family release operation for the specified image subresource range, and the second access scope includes no access, as if  dstAccessMask was 0.If dstQueueFamilyIndex is not equal to srcQueueFamilyIndex, and dstQueueFamilyIndex is equal to the current queue family, then the memory barrier defines a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-acquirequeue family acquire operation for the specified image subresource range, and the first access scope includes no access, as if  srcAccessMask was 0.If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2synchronization2 feature is not enabled or  oldLayout is not equal to  newLayout,  oldLayout and  newLayout define an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition, for the specified image subresource range.NoteIf the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2synchronization2 feature is enabled, when the old and new layout are equal, the layout values are ignored - data is preserved no matter what values are specified, or what layout the image is currently in.If image, has a multi-planar format and the image is disjoint, then including  in the  aspectMask member of subresourceRange is equivalent to including  ,  ', and (for three-plane formats only)  . Valid Usage0VUID-VkImageMemoryBarrier-subresourceRange-01486 subresourceRange.baseMipLevel must be less than the  mipLevels specified in 1 when image was created0VUID-VkImageMemoryBarrier-subresourceRange-01724 If subresourceRange.levelCount is not , subresourceRange.baseMipLevel + subresourceRange.levelCount must be less than or equal to the  mipLevels specified in 1 when image was created0VUID-VkImageMemoryBarrier-subresourceRange-01488 subresourceRange.baseArrayLayer must be less than the  arrayLayers specified in 1 when image was created0VUID-VkImageMemoryBarrier-subresourceRange-01725 If subresourceRange.layerCount is not , subresourceRange.baseArrayLayer + subresourceRange.layerCount must be less than or equal to the  arrayLayers specified in 1 when image was created%VUID-VkImageMemoryBarrier-image-01932 If image is non-sparse then it must7 be bound completely and contiguously to a single 0  object)VUID-VkImageMemoryBarrier-oldLayout-01208 If srcQueueFamilyIndex and dstQueueFamilyIndex define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is  then image must have been created with  )VUID-VkImageMemoryBarrier-oldLayout-01209 If srcQueueFamilyIndex and dstQueueFamilyIndex define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is  then image must have been created with  )VUID-VkImageMemoryBarrier-oldLayout-01210 If srcQueueFamilyIndex and dstQueueFamilyIndex define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is  then image must have been created with  )VUID-VkImageMemoryBarrier-oldLayout-01211 If srcQueueFamilyIndex and dstQueueFamilyIndex define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is  then image must have been created with   or  )VUID-VkImageMemoryBarrier-oldLayout-01212 If srcQueueFamilyIndex and dstQueueFamilyIndex define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is  then image must have been created with  )VUID-VkImageMemoryBarrier-oldLayout-01213 If srcQueueFamilyIndex and dstQueueFamilyIndex define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is  then image must have been created with  )VUID-VkImageMemoryBarrier-oldLayout-01197 If srcQueueFamilyIndex and dstQueueFamilyIndex define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition,  oldLayout must be  or the current layout of the image subresources affected by the barrier)VUID-VkImageMemoryBarrier-newLayout-01198 If srcQueueFamilyIndex and dstQueueFamilyIndex define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition,  newLayout must not be  or )VUID-VkImageMemoryBarrier-oldLayout-01658 If srcQueueFamilyIndex and dstQueueFamilyIndex define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is  then image must have been created with  )VUID-VkImageMemoryBarrier-oldLayout-01659 If srcQueueFamilyIndex and dstQueueFamilyIndex define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is  then image must have been created with  3VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04065 If srcQueueFamilyIndex and dstQueueFamilyIndex define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is  then image must- have been created with at least one of  ,   , or  3VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04066 If srcQueueFamilyIndex and dstQueueFamilyIndex define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is  then image must have been created with   set3VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04067 If srcQueueFamilyIndex and dstQueueFamilyIndex define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is  then image must- have been created with at least one of  ,   , or  3VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04068 If srcQueueFamilyIndex and dstQueueFamilyIndex define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is  then image must have been created with   set3VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-03938 If srcQueueFamilyIndex and dstQueueFamilyIndex define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is , image must have been created with   or  3VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-03939 If srcQueueFamilyIndex and dstQueueFamilyIndex define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is , image must- have been created with at least one of  ,   , or  )VUID-VkImageMemoryBarrier-oldLayout-02088 If srcQueueFamilyIndex and dstQueueFamilyIndex define a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is  then image must have been created with   set%VUID-VkImageMemoryBarrier-image-01671 If image0 has a single-plane color format or is not disjoint, then the  aspectMask member of subresourceRange must be %VUID-VkImageMemoryBarrier-image-01672 If image1 has a multi-planar format and the image is disjoint, then the  aspectMask member of subresourceRange must* include either at least one of  ,  , and   ; or must include %VUID-VkImageMemoryBarrier-image-01673 If image? has a multi-planar format with only two planes, then the  aspectMask member of subresourceRange must not include  %VUID-VkImageMemoryBarrier-image-03319 If image has a depth/stencil format with both depth and stencil and the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayoutsseparateDepthStencilLayouts# feature is enabled, then the  aspectMask member of subresourceRange must include either or both   and  %VUID-VkImageMemoryBarrier-image-03320 If image has a depth/stencil format with both depth and stencil and the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayoutsseparateDepthStencilLayouts' feature is not enabled, then the  aspectMask member of subresourceRange must include both   and  3VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04070 If srcQueueFamilyIndex is not equal to dstQueueFamilyIndex, at least one must not be a special queue family reserved for external memory ownership transfers, as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers???%VUID-VkImageMemoryBarrier-image-04071 If image. was created with a sharing mode of , srcQueueFamilyIndex and dstQueueFamilyIndex are not equal, and one of srcQueueFamilyIndex and dstQueueFamilyIndex is one of the special queue family values reserved for external memory transfers, the other must be %VUID-VkImageMemoryBarrier-image-04072 If image. was created with a sharing mode of  , and srcQueueFamilyIndex and dstQueueFamilyIndex are not equal, srcQueueFamilyIndex and dstQueueFamilyIndex must both be valid queue families, or one of the special queue family values reserved for external memory transfers, as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers???0VUID-VkImageMemoryBarrier-synchronization2-03857 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2synchronization2 feature is not enabled, and image) was created with a sharing mode of , at least one of srcQueueFamilyIndex and dstQueueFamilyIndex must be Valid Usage (Implicit)%VUID-VkImageMemoryBarrier-sType-sType sType must be  %VUID-VkImageMemoryBarrier-pNext-pNext pNext must be NULL/ or a pointer to a valid instance of &VUID-VkImageMemoryBarrier-sType-unique The sType" value of each struct in the pNext chain must be unique-VUID-VkImageMemoryBarrier-oldLayout-parameter  oldLayout must be a valid O value-VUID-VkImageMemoryBarrier-newLayout-parameter  newLayout must be a valid O value)VUID-VkImageMemoryBarrier-image-parameter image must be a valid  handle4VUID-VkImageMemoryBarrier-subresourceRange-parameter subresourceRange must be a valid  structureSee Also+, , O, , ,  ,  vulkanVkDrawIndirectCommand - Structure specifying a indirect drawing command DescriptionThe members of > have the same meaning as the similarly named parameters of  . Valid Usage%VUID-VkDrawIndirectCommand-None-00500 For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input.VUID-VkDrawIndirectCommand-firstInstance-00501 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectFirstInstancedrawIndirectFirstInstance feature is not enabled,  firstInstance must be 0See AlsovulkanVkDrawIndexedIndirectCommand - Structure specifying a indexed indirect drawing command DescriptionThe members of > have the same meaning as the similarly named parameters of  . Valid Usage,VUID-VkDrawIndexedIndirectCommand-None-00552 For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input1VUID-VkDrawIndexedIndirectCommand-indexSize-00553 ( indexSize  ( firstIndex +  indexCount) + offset) must be less than or equal to the size of the bound index buffer, with  indexSize+ being based on the type specified by  indexType, where the index buffer,  indexType, and offset are specified via 5VUID-VkDrawIndexedIndirectCommand-firstInstance-00554 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectFirstInstancedrawIndirectFirstInstance feature is not enabled,  firstInstance must be 0See AlsovulkanVkDispatchIndirectCommand - Structure specifying a indirect dispatching command DescriptionThe members of < have the same meaning as the corresponding parameters of  . Valid UsageSee AlsovulkanVkBufferMemoryBarrier - Structure specifying a buffer memory barrier Description The first  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope is limited to access to memory through the specified buffer range, via access types in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-maskssource access mask specified by  srcAccessMask. If  srcAccessMask includes , memory writes performed by that access type are also made visible, as that access type is not performed through a resource. The second  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope is limited to access to memory through the specified buffer range, via access types in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masksdestination access mask specified by  dstAccessMask. If  dstAccessMask includes  or , available memory writes are also made visible to accesses of those types, as those access types are not performed through a resource.If srcQueueFamilyIndex is not equal to dstQueueFamilyIndex, and srcQueueFamilyIndex is equal to the current queue family, then the memory barrier defines a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-releasequeue family release operation for the specified buffer range, and the second access scope includes no access, as if  dstAccessMask was 0.If dstQueueFamilyIndex is not equal to srcQueueFamilyIndex, and dstQueueFamilyIndex is equal to the current queue family, then the memory barrier defines a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-acquirequeue family acquire operation for the specified buffer range, and the first access scope includes no access, as if  srcAccessMask was 0. Valid Usage'VUID-VkBufferMemoryBarrier-offset-01187 offset must be less than the size of buffer%VUID-VkBufferMemoryBarrier-size-01188 If size is not equal to  , size must be greater than 0%VUID-VkBufferMemoryBarrier-size-01189 If size is not equal to  , size must0 be less than or equal to than the size of buffer minus offset'VUID-VkBufferMemoryBarrier-buffer-01931 If buffer is non-sparse then it must7 be bound completely and contiguously to a single 0  object4VUID-VkBufferMemoryBarrier-srcQueueFamilyIndex-04087 If srcQueueFamilyIndex is not equal to dstQueueFamilyIndex, at least one must not be a special queue family reserved for external memory ownership transfers, as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers???'VUID-VkBufferMemoryBarrier-buffer-04088 If buffer. was created with a sharing mode of , srcQueueFamilyIndex and dstQueueFamilyIndex are not equal, and one of srcQueueFamilyIndex and dstQueueFamilyIndex is one of the special queue family values reserved for external memory transfers, the other must be 'VUID-VkBufferMemoryBarrier-buffer-04089 If buffer. was created with a sharing mode of  , and srcQueueFamilyIndex and dstQueueFamilyIndex are not equal, srcQueueFamilyIndex and dstQueueFamilyIndex must both be valid queue families, or one of the special queue family values reserved for external memory transfers, as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers???1VUID-VkBufferMemoryBarrier-synchronization2-03853 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2synchronization2 feature is not enabled, and buffer) was created with a sharing mode of , at least one of srcQueueFamilyIndex and dstQueueFamilyIndex must be Valid Usage (Implicit)&VUID-VkBufferMemoryBarrier-sType-sType sType must be  &VUID-VkBufferMemoryBarrier-pNext-pNext pNext must be NULL+VUID-VkBufferMemoryBarrier-buffer-parameter buffer must be a valid  handleSee Also+, , o, ,  ,  avulkanx is the number of local workgroups to dispatch in the X dimension.&VUID-VkDispatchIndirectCommand-x-00417 x must be less than or equal to  ::maxComputeWorkGroupCount[0]avulkany is the number of local workgroups to dispatch in the Y dimension.&VUID-VkDispatchIndirectCommand-y-00418 y must be less than or equal to  ::maxComputeWorkGroupCount[1]avulkanz is the number of local workgroups to dispatch in the Z dimension.&VUID-VkDispatchIndirectCommand-z-00419 z must be less than or equal to  ::maxComputeWorkGroupCount[2]avulkan indexCount# is the number of vertices to draw.avulkan instanceCount$ is the number of instances to draw.avulkan firstIndex+ is the base index within the index buffer.avulkan vertexOffset is the value added to the vertex index before indexing into the vertex buffer.avulkan firstInstance2 is the instance ID of the first instance to draw.avulkan vertexCount# is the number of vertices to draw.avulkan instanceCount$ is the number of instances to draw.avulkan firstVertex* is the index of the first vertex to draw.avulkan firstInstance2 is the instance ID of the first instance to draw.avulkan headerSize5 is the length in bytes of the pipeline cache header.5VUID-VkPipelineCacheHeaderVersionOne-headerSize-04967  headerSize must be 32avulkan headerVersion is a  enum value specifying the version of the header. A consumer of the pipeline cache should use the cache version to interpret the remainder of the cache header.8VUID-VkPipelineCacheHeaderVersionOne-headerVersion-04968  headerVersion must be ?.;vulkan=VkSubresourceLayout - Structure specifying subresource layout DescriptionIf the image is  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-linear-resourcelinear, then rowPitch,  arrayPitch and  depthPitch describe the layout of the image subresource in linear memory. For uncompressed formats, rowPitch is the number of bytes between texels with the same x coordinate in adjacent rows (y coordinates differ by one).  arrayPitch is the number of bytes between texels with the same x and y coordinate in adjacent array layers of the image (array layer values differ by one).  depthPitch is the number of bytes between texels with the same x and y coordinate in adjacent slices of a 3D image (z coordinates differ by one). Expressed as an addressing formula, the starting byte of a texel in the image subresource has address: // (x,y,z,layer) are in texel coordinates address(x,y,z,layer) = layer*arrayPitch + z*depthPitch + y*rowPitch + x*elementSize + offsetFor compressed formats, the rowPitch is the number of bytes between compressed texel blocks in adjacent rows.  arrayPitch is the number of bytes between compressed texel blocks in adjacent array layers.  depthPitch is the number of bytes between compressed texel blocks in adjacent slices of a 3D image. // (x,y,z,layer) are in compressed texel block coordinates address(x,y,z,layer) = layer*arrayPitch + z*depthPitch + y*rowPitch + x*compressedTexelBlockByteSize + offset; The value of  arrayPitch; is undefined for images that were not created as arrays.  depthPitch is defined only for 3D images.If the image has a  single-plane! color format and its tiling is  , then the  aspectMask member of  must be .;If the image has a depth/stencil format and its tiling is  , then  aspectMask must be either   or  . On implementations that store depth and stencil aspects separately, querying each of these image subresource layouts will return a different offset and size representing the region of memory used for that aspect. On implementations that store depth and stencil aspects interleaved, the same offset and size? are returned and represent the interleaved memory allocation.If the image has a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format and its tiling is  , then the  aspectMask member of  must be  ,  ", or (for 3-plane formats only)  . Querying each of these image subresource layouts will return a different offset and size representing the region of memory used for that plane. If the image is disjoint , then the offset is relative to the base address of the plane. If the image is  non-disjoint , then the offset. is relative to the base address of the image.If the image@s tiling is  , then the  aspectMask member of  must be one of &VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT), where the maximum allowed plane index i is defined by the  ::drmFormatModifierPlaneCount associated with the image@s ::format and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-drm-format-modifiermodifier<. The memory range used by the subresource is described by offset and size. If the image is disjoint , then the offset) is relative to the base address of the  memory plane. If the image is  non-disjoint , then the offset is relative to the base address of the image. If the image is  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-linear-resource non-linear, then rowPitch,  arrayPitch, and  depthPitch+ have an implementation-dependent meaning.See Alsoo, , bvulkanVkImageCreateInfo - Structure specifying the parameters of a newly created image object DescriptionImages created with tiling equal to  have further restrictions on their limits and capabilities compared to images created with tiling equal to  ". Creation of images with tiling  may not be supported unless other parameters meet all of the constraints: imageType is format is not a depth/stencil format mipLevels is 1 arrayLayers is 1samples is &usage only includes   and/or  Images created with a format from one of those listed in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion have further restrictions on their limits and capabilities compared to images created with other formats. Creation of images with a format requiring  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionY@CBCR conversion may not be supported unless other parameters meet all of the constraints: imageType is  mipLevels is 1 arrayLayers is 1samples is &Implementations may support additional limits and capabilities beyond those listed above.To determine the set of valid usage bits for a given format, call  .0If the size of the resultant image would exceed maxResourceSize, then b must fail and return . This failure may occur even when all image creation parameters satisfy their valid usage requirements.NoteFor images created without  a usage bit is valid if it is supported for the format the image is created with.For images created with  a usage bit is valid if it is supported for at least one of the formats a 0 created from the image can have (see  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views Image Views for more detail).Image Creation LimitsValid values for some image creation parameters are limited by a numerical upper bound or by inclusion in a bitset. For example, :: arrayLayers is limited by imageCreateMaxArrayLayers, defined below; and ::samples is limited by imageCreateSampleCounts, also defined below.Several limiting values are defined below, as well as assisting values from which the limiting values are derived. The limiting values are referenced by the relevant valid usage statements of .Let (uint64_t imageCreateDrmFormatModifiers[] be the set of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-drm-format-modifierLinux DRM format modifiers that the resultant image may have.If tiling is not  , then imageCreateDrmFormatModifiers is empty.If ::pNext contains  , then imageCreateDrmFormatModifiers( contains exactly one modifier, ::drmFormatModifier.If ::pNext contains  , then imageCreateDrmFormatModifiers contains the entire array ::pDrmFormatModifiers.Let VkBool32 imageCreateMaybeLinear2 indicate if the resultant image may be  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-linear-resourcelinear.If tiling is  , then imageCreateMaybeLinear is /.If tiling is   , then imageCreateMaybeLinear is /.If tiling is  , then imageCreateMaybeLinear is / if and only if imageCreateDrmFormatModifiers contains DRM_FORMAT_MOD_LINEAR.Let .VkFormatFeatureFlags imageCreateFormatFeatures be the set of valid format features! available during image creation.If tiling is  , then imageCreateFormatFeatures is the value of   ::linearTilingFeatures found by calling   with parameter format equal to ::format.If tiling is  , and if the pNext chain includes no  structure with non-zero externalFormat , then imageCreateFormatFeatures is the value of   ::optimalTilingFeatures found by calling   with parameter format equal to ::format.If tiling is  , and if the pNext chain includes a  structure with non-zero externalFormat , then imageCreateFormatFeatures is the value of ::formatFeatures obtained by   with a matching externalFormat value.If tiling is , then the value of imageCreateFormatFeatures is found by calling U  with  ::format equal to ::format and with  chained into U:; by collecting all members of the returned array ::pDrmFormatModifierProperties whose drmFormatModifier belongs to imageCreateDrmFormatModifiers; and by taking the bitwise intersection, over the collected array members, of drmFormatModifierTilingFeatures. (The resultant imageCreateFormatFeatures may be empty). Let ?VkImageFormatProperties2 imageCreateImageFormatPropertiesList[] be defined as follows.If ::pNext contains no  structure with non-zero externalFormat , then $imageCreateImageFormatPropertiesList7 is the list of structures obtained by calling U *, possibly multiple times, as follows:The parameters U::format,  imageType, tiling, usage, and flags must be equal to those in .If ::pNext contains a  structure whose  handleTypes is not 0 , then U::pNext must contain a Q structure whose  handleType is not 0 ; and U  must' be called for each handle type in :: handleTypes, successively setting Q:: handleType on each call.If ::pNext contains no . structure, or contains a structure whose  handleTypes is 0 , then U::pNext must either contain no Q- structure, or contain a structure whose  handleType is 0.If tiling is , then U::pNext must contain a  structure where  sharingMode is equal to :: sharingMode ; and, if  sharingMode is  , then queueFamilyIndexCount and pQueueFamilyIndices must be equal to those in ; and, if flags contains , then the  structure included in the pNext chain of U must* be equivalent to the one included in the pNext chain of  ; and U  must$ be called for each modifier in imageCreateDrmFormatModifiers, successively setting ::drmFormatModifier on each call.If tiling is not , then U::pNext must contain no  structure.If any call to U  returns an error, then $imageCreateImageFormatPropertiesList% is defined to be the empty list.If ::pNext contains a  structure with non-zero externalFormat , then $imageCreateImageFormatPropertiesList% contains a single element where: :: maxMipLevels is Flog2(max( extent.width,  extent.height,  extent.depth))F + 1. ::maxArrayLayers is  ::maxImageArrayLayers.Each component of  :: maxExtent is  ::maxImageDimension2D. :: sampleCounts contains exactly &.Let  uint32_t imageCreateMaxMipLevels be the minimum value of  :: maxMipLevels in $imageCreateImageFormatPropertiesList!. The value is undefined if $imageCreateImageFormatPropertiesList is empty.Let "uint32_t imageCreateMaxArrayLayers be the minimum value of  ::maxArrayLayers in $imageCreateImageFormatPropertiesList!. The value is undefined if $imageCreateImageFormatPropertiesList is empty.Let VkExtent3D imageCreateMaxExtent2 be the component-wise minimum over all  :: maxExtent values in $imageCreateImageFormatPropertiesList!. The value is undefined if $imageCreateImageFormatPropertiesList is empty.Let *VkSampleCountFlags imageCreateSampleCounts' be the intersection of each  :: sampleCounts in $imageCreateImageFormatPropertiesList!. The value is undefined if $imageCreateImageFormatPropertiesList is empty. Valid Usage4VUID-VkImageCreateInfo-imageCreateMaxMipLevels-022519 Each of the following values (as described in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limitsImage Creation Limits) must not be undefined : imageCreateMaxMipLevels, imageCreateMaxArrayLayers, imageCreateMaxExtent , and imageCreateSampleCounts(VUID-VkImageCreateInfo-sharingMode-00941 If  sharingMode is , pQueueFamilyIndices must( be a valid pointer to an array of queueFamilyIndexCount uint32_t values(VUID-VkImageCreateInfo-sharingMode-00942 If  sharingMode is , queueFamilyIndexCount must be greater than 1(VUID-VkImageCreateInfo-sharingMode-01420 If  sharingMode is , each element of pQueueFamilyIndices must be unique and must be less than pQueueFamilyPropertyCount returned by either   or U  for the physicalDevice that was used to create device"VUID-VkImageCreateInfo-pNext-01974 If the pNext chain includes a  structure, and its externalFormat member is non-zero the format must be "VUID-VkImageCreateInfo-pNext-01975 If the pNext$ chain does not include a ! structure, or does and its externalFormat member is 0 , the format must not be #VUID-VkImageCreateInfo-extent-00944  extent.width must be greater than 0#VUID-VkImageCreateInfo-extent-00945  extent.height must be greater than 0#VUID-VkImageCreateInfo-extent-00946  extent.depth must be greater than 0&VUID-VkImageCreateInfo-mipLevels-00947  mipLevels must be greater than 0(VUID-VkImageCreateInfo-arrayLayers-00948  arrayLayers must be greater than 0"VUID-VkImageCreateInfo-flags-00949 If flags contains ,  imageType must be "VUID-VkImageCreateInfo-flags-02557 If flags contains  ,  imageType must be "VUID-VkImageCreateInfo-flags-00950 If flags contains ,  imageType must be #VUID-VkImageCreateInfo-extent-02252  extent.width must be less than or equal to imageCreateMaxExtent.width (as defined in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limitsImage Creation Limits)#VUID-VkImageCreateInfo-extent-02253  extent.height must be less than or equal to imageCreateMaxExtent.height (as defined in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limitsImage Creation Limits)#VUID-VkImageCreateInfo-extent-02254  extent.depth must be less than or equal to imageCreateMaxExtent.depth (as defined in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limitsImage Creation Limits)&VUID-VkImageCreateInfo-imageType-00954 If  imageType is  and flags contains ,  extent.width and  extent.height must be equal and  arrayLayers must be greater than or equal to 6&VUID-VkImageCreateInfo-imageType-00956 If  imageType is , both  extent.height and  extent.depth must be 1&VUID-VkImageCreateInfo-imageType-00957 If  imageType is ,  extent.depth must be 1&VUID-VkImageCreateInfo-mipLevels-00958  mipLevels must be less than or equal to the number of levels in the complete mipmap chain based on  extent.width,  extent.height, and  extent.depth&VUID-VkImageCreateInfo-mipLevels-02255  mipLevels must be less than or equal to imageCreateMaxMipLevels (as defined in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limitsImage Creation Limits)(VUID-VkImageCreateInfo-arrayLayers-02256  arrayLayers must be less than or equal to imageCreateMaxArrayLayers (as defined in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limitsImage Creation Limits)&VUID-VkImageCreateInfo-imageType-00961 If  imageType is ,  arrayLayers must be 1$VUID-VkImageCreateInfo-samples-02257 If samples is not & , then  imageType must be , flags must not contain ,  mipLevels must be equal to 1, and imageCreateMaybeLinear (as defined in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limitsImage Creation Limits) must be /,$VUID-VkImageCreateInfo-samples-02558 If samples is not &, usage must not contain  "VUID-VkImageCreateInfo-usage-00963 If usage includes  !, then bits other than  ,  , and   must not be set"VUID-VkImageCreateInfo-usage-00964 If usage includes  ,  ,  , or  ,  extent.width must be less than or equal to  ::maxFramebufferWidth"VUID-VkImageCreateInfo-usage-00965 If usage includes  ,  ,  , or  ,  extent.height must be less than or equal to  ::maxFramebufferHeight"VUID-VkImageCreateInfo-usage-02559 If usage includes  ,  extent.width must be less than or equal to \left\lceil{\frac{maxFramebufferWidth}{minFragmentDensityTexelSize_{width}}}\right\rceil"VUID-VkImageCreateInfo-usage-02560 If usage includes  ,  extent.height must be less than or equal to \left\lceil{\frac{maxFramebufferHeight}{minFragmentDensityTexelSize_{height}}}\right\rceil"VUID-VkImageCreateInfo-usage-00966 If usage includes  , usage must# also contain at least one of  ,  , or  $VUID-VkImageCreateInfo-samples-02258 samples must$ be a bit value that is set in imageCreateSampleCounts (as defined in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limitsImage Creation Limits)"VUID-VkImageCreateInfo-usage-00968 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderStorageImageMultisamplemultisampled storage images" feature is not enabled, and usage contains  , samples must be &"VUID-VkImageCreateInfo-flags-00969 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseBindingsparse bindings feature is not enabled, flags must not contain  "VUID-VkImageCreateInfo-flags-01924 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidencyAliasedsparse aliased residency feature is not enabled, flags must not contain  #VUID-VkImageCreateInfo-tiling-04121 If tiling is , flags must not contain  &VUID-VkImageCreateInfo-imageType-00970 If  imageType is , flags must not contain  &VUID-VkImageCreateInfo-imageType-00971 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidencyImage2Dsparse residency for 2D images" feature is not enabled, and  imageType is , flags must not contain  &VUID-VkImageCreateInfo-imageType-00972 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidencyImage3Dsparse residency for 3D images" feature is not enabled, and  imageType is , flags must not contain  &VUID-VkImageCreateInfo-imageType-00973 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidency2Samples*sparse residency for images with 2 samples feature is not enabled,  imageType is , and samples is &, flags must not contain  &VUID-VkImageCreateInfo-imageType-00974 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidency4Samples*sparse residency for images with 4 samples feature is not enabled,  imageType is , and samples is &, flags must not contain  &VUID-VkImageCreateInfo-imageType-00975 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidency8Samples*sparse residency for images with 8 samples feature is not enabled,  imageType is , and samples is &, flags must not contain  &VUID-VkImageCreateInfo-imageType-00976 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidency16Samples+sparse residency for images with 16 samples feature is not enabled,  imageType is , and samples is &, flags must not contain  "VUID-VkImageCreateInfo-flags-00987 If flags contains   or   , it must also contain  !VUID-VkImageCreateInfo-None-01925 If any of the bits  ,  , or   are set,   must not also be set"VUID-VkImageCreateInfo-flags-018906 If the protected memory feature is not enabled, flags must not contain !VUID-VkImageCreateInfo-None-01891 If any of the bits  ,  , or   are set,  must not also be set"VUID-VkImageCreateInfo-pNext-00988 If the pNext chain includes a  structure, it must not contain a  structure"VUID-VkImageCreateInfo-pNext-00990 If the pNext chain includes a  structure, its  handleTypes member must. only contain bits that are also in Q::.externalMemoryProperties.compatibleHandleTypes, as returned by U  with format,  imageType, tiling, usage, and flags8 equal to those in this structure, and with a Q structure included in the pNext chain, with a  handleType= equal to any one of the handle types specified in :: handleTypes"VUID-VkImageCreateInfo-pNext-00991 If the pNext chain includes a  structure, its  handleTypes member must. only contain bits that are also in ::.externalMemoryProperties.compatibleHandleTypes, as returned by   with format,  imageType, tiling, usage, and flags1 equal to those in this structure, and with externalHandleType= equal to any one of the handle types specified in :: handleTypes0VUID-VkImageCreateInfo-physicalDeviceCount-014212 If the logical device was created with M::physicalDeviceCount equal to 1, flags must not contain "VUID-VkImageCreateInfo-flags-02259 If flags contains  , then  mipLevels must be one,  arrayLayers must be one,  imageType must be  . and imageCreateMaybeLinear (as defined in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limitsImage Creation Limits) must be /"VUID-VkImageCreateInfo-flags-01572 If flags contains  , then format must be a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#appendix-compressedtex-bcblock-compressed image format, an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#appendix-compressedtex-etc2ETC compressed image format, or an https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#appendix-compressedtex-astcASTC compressed image format"VUID-VkImageCreateInfo-flags-01573 If flags contains  , then flags must also contain *VUID-VkImageCreateInfo-initialLayout-00993  initialLayout must be " or ""VUID-VkImageCreateInfo-pNext-01443 If the pNext chain includes a  or  structure whose  handleTypes member is not 0,  initialLayout must be "#VUID-VkImageCreateInfo-format-02561 If the image format% is one of those listed in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion , then  mipLevels must be 1#VUID-VkImageCreateInfo-format-02562 If the image format% is one of those listed in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion, samples must be &#VUID-VkImageCreateInfo-format-02563 If the image format% is one of those listed in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion,  imageType must be #VUID-VkImageCreateInfo-format-02653 If the image format% is one of those listed in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion, and the ycbcrImageArrays feature is not enabled,  arrayLayers must be 16VUID-VkImageCreateInfo-imageCreateFormatFeatures-02260 If format is a  multi-planar format, and if imageCreateFormatFeatures (as defined in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limitsImage Creation Limits) does not contain  , then flags must not contain  #VUID-VkImageCreateInfo-format-01577 If format is not a  multi-planar format, and flags does not include , flags must not contain  #VUID-VkImageCreateInfo-format-04712 If format has a _422 or _420 suffix, width must be a multiple of 2#VUID-VkImageCreateInfo-format-04713 If format has a _420 suffix, height must be a multiple of 2#VUID-VkImageCreateInfo-tiling-02261 If tiling is , then the pNext chain must include exactly one of  or  structures"VUID-VkImageCreateInfo-pNext-02262 If the pNext chain includes a  or  structure, then tiling must be #VUID-VkImageCreateInfo-tiling-02353 If tiling is  and flags contains , then the pNext chain must include a  structure with non-zero viewFormatCount"VUID-VkImageCreateInfo-flags-01533 If flags contains   format must# be a depth or depth/stencil format"VUID-VkImageCreateInfo-pNext-02393 If the pNext chain includes a  structure whose  handleTypes member includes B ,  imageType must be "VUID-VkImageCreateInfo-pNext-02394 If the pNext chain includes a  structure whose  handleTypes member includes B ,  mipLevels must either be 1 or equal to the number of levels in the complete mipmap chain based on  extent.width,  extent.height , and  extent.depth"VUID-VkImageCreateInfo-pNext-02396 If the pNext chain includes a  structure whose externalFormat member is not 0, flags must not include "VUID-VkImageCreateInfo-pNext-02397 If the pNext chain includes a  structure whose externalFormat member is not 0, usage must) not include any usages except  "VUID-VkImageCreateInfo-pNext-02398 If the pNext chain includes a  structure whose externalFormat member is not 0, tiling must be  #VUID-VkImageCreateInfo-format-02795 If format! is a depth-stencil format, usage includes  , and the pNext chain includes a  structure, then its :: stencilUsage member must also include  #VUID-VkImageCreateInfo-format-02796 If format! is a depth-stencil format, usage does not include  , and the pNext chain includes a  structure, then its :: stencilUsage member must also not include  #VUID-VkImageCreateInfo-format-02797 If format! is a depth-stencil format, usage includes  , and the pNext chain includes a  structure, then its :: stencilUsage member must also include  #VUID-VkImageCreateInfo-format-02798 If format! is a depth-stencil format, usage does not include  , and the pNext chain includes a  structure, then its :: stencilUsage member must also not include  #VUID-VkImageCreateInfo-Format-02536 If K( is a depth-stencil format and the pNext chain includes a  structure with its  stencilUsage member including  ,  extent.width must be less than or equal to  ::maxFramebufferWidth#VUID-VkImageCreateInfo-format-02537 If format( is a depth-stencil format and the pNext chain includes a  structure with its  stencilUsage member including  ,  extent.height must be less than or equal to  ::maxFramebufferHeight#VUID-VkImageCreateInfo-format-02538 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderStorageImageMultisamplemultisampled storage images feature is not enabled, format( is a depth-stencil format and the pNext chain includes a  structure with its  stencilUsage including  , samples must be &"VUID-VkImageCreateInfo-flags-02050 If flags contains ,  imageType must be  or "VUID-VkImageCreateInfo-flags-02051 If flags contains  , it must not contain  and the format must not be a depth/stencil format"VUID-VkImageCreateInfo-flags-02052 If flags contains  and  imageType is ,  extent.width and  extent.height must be greater than 1"VUID-VkImageCreateInfo-flags-02053 If flags contains  and  imageType is ,  extent.width,  extent.height, and  extent.depth must be greater than 1&VUID-VkImageCreateInfo-imageType-02082 If usage includes  ,  imageType must be $VUID-VkImageCreateInfo-samples-02083 If usage includes  , samples must be &#VUID-VkImageCreateInfo-tiling-02084 If usage includes , tiling must be  "VUID-VkImageCreateInfo-flags-02565 If flags contains  , tiling must be  "VUID-VkImageCreateInfo-flags-02566 If flags contains  ,  imageType must be "VUID-VkImageCreateInfo-flags-02567 If flags contains  , flags must not contain "VUID-VkImageCreateInfo-flags-02568 If flags contains  ,  mipLevels must be 1"VUID-VkImageCreateInfo-usage-04992 If usage includes , tiling must be 1VUID-VkImageCreateInfo-imageView2DOn3DImage-04459 If the VK_KHR_portability_subset extension is enabled, and ::imageView2DOn3DImage is /, flags must not contain 2VUID-VkImageCreateInfo-multisampleArrayImage-04460 If the VK_KHR_portability_subset extension is enabled, and ::multisampleArrayImage is /, and samples is not & , then  arrayLayers must be 1"VUID-VkImageCreateInfo-pNext-04737 If a $ structure was included in the pNext chain and ::viewFormatCount3 is not zero, then all of the formats in :: pViewFormats must be compatible with the format as described in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibilitycompatibility table"VUID-VkImageCreateInfo-flags-04738 If flags does not contain  and the pNext chain includes a  structure, then ::viewFormatCount must be 0 or 1Valid Usage (Implicit)"VUID-VkImageCreateInfo-sType-sType sType must be   "VUID-VkImageCreateInfo-pNext-pNext Each pNext: member of any structure (including this one) in the pNext chain must be either NULL* or a pointer to a valid instance of , , , , , , , , ,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileKHRVkVideoProfileKHR, or https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfilesKHRVkVideoProfilesKHR#VUID-VkImageCreateInfo-sType-unique The sType" value of each struct in the pNext chain must be unique&VUID-VkImageCreateInfo-flags-parameter flags must% be a valid combination of  values*VUID-VkImageCreateInfo-imageType-parameter  imageType must be a valid Q value'VUID-VkImageCreateInfo-format-parameter format must be a valid K value(VUID-VkImageCreateInfo-samples-parameter samples must be a valid b value'VUID-VkImageCreateInfo-tiling-parameter tiling must be a valid P value&VUID-VkImageCreateInfo-usage-parameter usage must% be a valid combination of   values,VUID-VkImageCreateInfo-usage-requiredbitmask usage must not be 0,VUID-VkImageCreateInfo-sharingMode-parameter  sharingMode must be a valid  value.VUID-VkImageCreateInfo-initialLayout-parameter  initialLayout must be a valid O valueSee Alsou, K, N, O, P, Q, S, b, , , bavulkanoffset is the byte offset from the start of the image or the plane where the image subresource begins.avulkansize0 is the size in bytes of the image subresource. size6 includes any extra memory that is required based on rowPitch.avulkanrowPitch describes the number of bytes between each row of texels in an image.avulkan arrayPitch describes the number of bytes between each array layer of an image.avulkan depthPitch? describes the number of bytes between each slice of 3D image.avulkanpNext is NULL6 or a pointer to a structure extending this structure.avulkanflags is a bitmask of 0 describing additional parameters of the image.avulkan imageType is a Q value specifying the basic dimensionality of the image. Layers in array textures do not count as a dimension for the purposes of the image type.avulkanformat is a K describing the format and type of the texel blocks that will be contained in the image.avulkanextent is a u describing the number of data elements in each dimension of the base level.bvulkan mipLevels describes the number of levels of detail available for minified sampling of the image.bvulkan arrayLayers& is the number of layers in the image.bvulkansamples is a b" value specifying the number of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-multisamplingsamples per texel.bvulkantiling is a P value specifying the tiling arrangement of the texel blocks in memory.bvulkanusage is a bitmask of  - describing the intended usage of the image.bvulkan sharingMode is a  value specifying the sharing mode of the image when it will be accessed by multiple queue families.bvulkanpQueueFamilyIndices is a pointer to an array of queue families that will access this image. It is ignored if  sharingMode is not .bvulkan initialLayout is a O value specifying the initial O/ of all image subresources of the image. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-layouts Image Layouts.bvulkan)vkCreateImage - Create a new image object Valid UsageVUID-vkCreateImage-flags-00939 If the flags member of  pCreateInfo includes  , creating this  must not cause the total required sparse memory for all currently valid sparse resources on the device to exceed  ::sparseAddressSpaceSizeValid Usage (Implicit)#VUID-vkCreateImage-device-parameter device must be a valid  handle(VUID-vkCreateImage-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid  structure'VUID-vkCreateImage-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure#VUID-vkCreateImage-pImage-parameter pImage must be a valid pointer to a  handle Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , bvulkan=A convenience wrapper to make a compatible pair of calls to b and bTo ensure that b is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.bvulkan(vkDestroyImage - Destroy an image object Valid UsageVUID-vkDestroyImage-image-01000+ All submitted commands that refer to image , either directly or via a 0, must have completed executionVUID-vkDestroyImage-image-01001 If  were provided when image1 was created, a compatible set of callbacks must be provided hereVUID-vkDestroyImage-image-01002 If no  were provided when image was created,  pAllocator must be NULLVUID-vkDestroyImage-image-04882 image must' not have been acquired from  Valid Usage (Implicit)$VUID-vkDestroyImage-device-parameter device must be a valid  handle#VUID-vkDestroyImage-image-parameter If image is not , image must be a valid  handle(VUID-vkDestroyImage-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure VUID-vkDestroyImage-image-parent If image is a valid handle, it must1 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to image must be externally synchronizedSee Also, , bvulkanvkGetImageSubresourceLayout - Retrieve information about an image subresource DescriptionIf the image is  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-linear-resourcelinear*, then the returned layout is valid for  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-device-hostaccess host access.If the image@s tiling is  and its format is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format, then b describes one  format plane* of the image. If the image@s tiling is , then b describes one  memory plane* of the image. If the image@s tiling is  and the image is  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-linear-resource non-linear, then the returned layout has an implementation-dependent meaning; the vendor of the image@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-drm-format-modifierDRM format modifier may provide documentation that explains how to interpret the returned layout.b is invariant for the lifetime of a single image. However, the subresource layout of images in Android hardware buffer external memory is not known until the image has been bound to memory, so applications must not call b- for such an image before it has been bound. Valid Usage,VUID-vkGetImageSubresourceLayout-image-02270 image must have been created with tiling equal to  or  1VUID-vkGetImageSubresourceLayout-aspectMask-00997 The  aspectMask member of  pSubresource must only have a single bit set/VUID-vkGetImageSubresourceLayout-mipLevel-01716 The mipLevel member of  pSubresource must be less than the  mipLevels specified in  when image was created1VUID-vkGetImageSubresourceLayout-arrayLayer-01717 The  arrayLayer member of  pSubresource must be less than the  arrayLayers specified in  when image was created-VUID-vkGetImageSubresourceLayout-format-04461 If format is a color format, the  aspectMask member of  pSubresource must be -VUID-vkGetImageSubresourceLayout-format-04462 If format! has a depth component, the  aspectMask member of  pSubresource must contain  -VUID-vkGetImageSubresourceLayout-format-04463 If format# has a stencil component, the  aspectMask member of  pSubresource must contain  -VUID-vkGetImageSubresourceLayout-format-04464 If format9 does not contain a stencil or depth component, the  aspectMask member of  pSubresource must not contain   or  -VUID-vkGetImageSubresourceLayout-format-01581 If the tiling of the image is  and its format is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format with two planes, the  aspectMask member of  pSubresource must be   or  -VUID-vkGetImageSubresourceLayout-format-01582 If the tiling of the image is  and its format is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format with three planes, the  aspectMask member of  pSubresource must be  ,   or  ,VUID-vkGetImageSubresourceLayout-image-01895 If image was created with the B ( external memory handle type, then image must be bound to memory-VUID-vkGetImageSubresourceLayout-tiling-02271 If the tiling of the image is , then the  aspectMask member of  pSubresource must be &VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT and the index i must be less than the  ::drmFormatModifierPlaneCount" associated with the image@s format and ::drmFormatModifierValid Usage (Implicit)1VUID-vkGetImageSubresourceLayout-device-parameter device must be a valid  handle0VUID-vkGetImageSubresourceLayout-image-parameter image must be a valid  handle7VUID-vkGetImageSubresourceLayout-pSubresource-parameter  pSubresource must$ be a valid pointer to a valid  structure2VUID-vkGetImageSubresourceLayout-pLayout-parameter pLayout must be a valid pointer to a  structure-VUID-vkGetImageSubresourceLayout-image-parent image must6 have been created, allocated, or retrieved from deviceSee Also, , , bvulkandevice. is the logical device that creates the image.vulkan pCreateInfo is a pointer to a  structure containing parameters to be used to create the image.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.bvulkandevice/ is the logical device that destroys the image.vulkanimage is the image to destroy.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.bvulkandevice+ is the logical device that owns the image.vulkanimage, is the image whose layout is being queried.vulkan pSubresource is a pointer to a  structure selecting a specific image for the image subresource.3O""""""""""""""""""""""1aaaaaaaaabababbbabbbbbbbbbbbaaabababbbabbbaaaaaa1O"""""""""""""""""""""""""""""""""""""""""""None( #$&'(./0289:<>?.rvulkanVkPhysicalDeviceImageDrmFormatModifierInfoEXT - Structure specifying a DRM format modifier as image creation parameter DescriptionIf the drmFormatModifier4 is incompatible with the parameters specified in U and its pNext chain, then U  returns . The implementation must support the query of any drmFormatModifier1, including unknown and invalid modifier values. Valid UsageVUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02314 If  sharingMode is  , then pQueueFamilyIndices must( be a valid pointer to an array of queueFamilyIndexCount uint32_t valuesVUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02315 If  sharingMode is  , then queueFamilyIndexCount must be greater than 1VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02316 If  sharingMode is , each element of pQueueFamilyIndices must be unique and must be less than the pQueueFamilyPropertyCount returned by U  for the physicalDevice that was used to create deviceValid Usage (Implicit)>VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sType-sType sType must be  VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-parameter  sharingMode must be a valid  valueSee Also, vulkanVkImageDrmFormatModifierPropertiesEXT - Properties of an image@s Linux DRM format modifier DescriptionIf the image was created with , then the returned drmFormatModifier must belong to the list of modifiers provided at time of image creation in ::pDrmFormatModifiers . If the image was created with , then the returned drmFormatModifier must9 be the modifier provided at time of image creation in ::drmFormatModifier.Valid Usage (Implicit)See Also, bvulkanVkImageDrmFormatModifierListCreateInfoEXT - Specify that an image must be created with a DRM format modifier from the provided list Valid UsageVUID-VkImageDrmFormatModifierListCreateInfoEXT-pDrmFormatModifiers-02263 Each modifier in pDrmFormatModifiers must+ be compatible with the parameters in 1 and its pNext' chain, as determined by querying U extended with Valid Usage (Implicit):VUID-VkImageDrmFormatModifierListCreateInfoEXT-sType-sType sType must be  VUID-VkImageDrmFormatModifierListCreateInfoEXT-pDrmFormatModifiers-parameter pDrmFormatModifiers must( be a valid pointer to an array of drmFormatModifierCount uint64_t valuesVUID-VkImageDrmFormatModifierListCreateInfoEXT-drmFormatModifierCount-arraylength drmFormatModifierCount must be greater than 0See AlsovulkanVkImageDrmFormatModifierExplicitCreateInfoEXT - Specify that an image be created with the provided DRM format modifier and explicit memory layout DescriptionThe i th member of  pPlaneLayouts& describes the layout of the image@s ith  memory plane (that is, &VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT). In each element of  pPlaneLayouts, the implementation must ignore size. The implementation calculates the size of each plane, which the application can query with 1 .When creating an image with , it is the application@s responsibility to satisfy all valid usage requirements. However, the implementation must validate that the provided  pPlaneLayouts#, when combined with the provided drmFormatModifier# and other creation parameters in 1 and its pNext chain, produce a valid image. (This validation is necessarily implementation-dependent and outside the scope of Vulkan, and therefore not described by valid usage requirements). If this validation fails, then 1  returns . Valid UsageVUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-drmFormatModifier-02264 drmFormatModifier must+ be compatible with the parameters in 1 and its pNext, chain, as determined by querying U extended with VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-drmFormatModifierPlaneCount-02265 drmFormatModifierPlaneCount must be equal to the ::drmFormatModifierPlaneCount associated with 1::format and drmFormatModifier, as found by querying =VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-size-02267 For each element of  pPlaneLayouts, size must be 0VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-arrayPitch-02268 For each element of  pPlaneLayouts,  arrayPitch must be 0 if 1:: arrayLayers is 1VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-depthPitch-02269 For each element of  pPlaneLayouts,  depthPitch must be 0 if 1:: extent.depth is 1Valid Usage (Implicit)>VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-sType-sType sType must be  VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-pPlaneLayouts-parameter If drmFormatModifierPlaneCount is not 0,  pPlaneLayouts must( be a valid pointer to an array of drmFormatModifierPlaneCount  structuresSee Also, vulkanVkDrmFormatModifierPropertiesListEXT - Structure specifying the list of DRM format modifiers supported for a format DescriptionIf pDrmFormatModifierProperties is NULL , then the function returns in drmFormatModifierCount6 the number of modifiers compatible with the queried format. Otherwise, the application must set drmFormatModifierCount to the length of the array pDrmFormatModifierProperties#; the function will write at most drmFormatModifierCount, elements to the array, and will return in drmFormatModifierCount the number of elements written.Among the elements in array pDrmFormatModifierProperties, each returned drmFormatModifier must be unique.Valid Usage (Implicit)See Also, vulkanVkDrmFormatModifierPropertiesEXT - Structure specifying properties of a format when combined with a DRM format modifier Description The returned drmFormatModifierTilingFeatures must contain at least one bit.The implementation must not return DRM_FORMAT_MOD_INVALID in drmFormatModifier. An image@s memory planecount (as returned by drmFormatModifierPlaneCount) is distinct from its format planecount (in the sense of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar Y@CBCR formats). In , each VK_IMAGE_ASPECT_MEMORY_PLANE/i/_BIT_EXT represents a _memory plane/ and each VK_IMAGE_ASPECT_PLANE/i_BIT a _format plane/.An image@s set of  format planes) is an ordered partition of the image@s content into separable groups of format channels. The ordered partition is encoded in the name of each . For example,  contains two  format planes; the first plane contains the green channel and the second plane contains the blue channel and red channel. If the format name does not contain PLANE9, then the format contains a single plane; for example, . Some commands, such as  , do not operate on all format channels in the image, but instead operate only on the  format planes; explicitly chosen by the application and operate on each  format plane independently.An image@s set of  memory planes) is an ordered partition of the image@s memory rather than the image@s content. Each  memory plane; is a contiguous range of memory. The union of an image@s  memory planes is not necessarily contiguous.If an image is  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-linear-resourcelinear&, then the partition is the same for  memory planes6 and for /format planes/. Therefore, if the returned drmFormatModifier is DRM_FORMAT_MOD_LINEAR, then drmFormatModifierPlaneCount must equal the format planecount, and drmFormatModifierTilingFeatures must be identical to the U::linearTilingFeatures returned in the same pNext chain.If an image is  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-linear-resource non-linear%, then the partition of the image@s memory into  memory planes! is implementation-specific and may/ be unrelated to the partition of the image@s content into  format planes(. For example, consider an image whose format is , tiling is  , whose drmFormatModifier is not DRM_FORMAT_MOD_LINEAR, and flags lacks  . The image has 3  format planes, and commands such   act on each  format plane& independently as if the data of each  format plane were separable from the data of the other planes. In a straightforward implementation, the implementation may* store the image@s content in 3 adjacent  memory planes where each  memory plane corresponds exactly to a  format plane. However, the implementation may- also store the image@s content in a single  memory plane where all format channels are combined using an implementation-private block-compressed format; or the implementation may: store the image@s content in a collection of 7 adjacent  memory planes using an implementation-private sharding technique. Because the image is non-linear and non-disjoint, the implementation has much freedom when choosing the image@s placement in memory.The memory planecount applies to function parameters and structures only when the API specifies an explicit requirement on drmFormatModifierPlaneCount:. In all other cases, the /memory planecount/ is ignored.See Also, #bvulkandrmFormatModifier returns the image@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-drm-format-modifierLinux DRM format modifier.bvulkandrmFormatModifier is the Linux DRM format modifier' with which the image will be created.bvulkan pPlaneLayouts is a pointer to an array of $ structures describing the image@s  memory planes.bvulkanpDrmFormatModifiers; is a pointer to an array of /Linux DRM format modifiers/.bvulkandrmFormatModifier is the image@s Linux DRM format modifier, corresponding to ::modifier or to :: pModifiers.bvulkan sharingMode specifies how the image will be accessed by multiple queue families.bvulkanpQueueFamilyIndices is a pointer to an array of queue families that will access the image. It is ignored if  sharingMode is not .bvulkandrmFormatModifier is a Linux DRM format modifier.bvulkandrmFormatModifierPlaneCount is the number of  memory planes in any image created with format and drmFormatModifier . An image@s /memory planecount is distinct from its (format planecount/, as explained below.bvulkandrmFormatModifierTilingFeatures is a bitmask of  / that are supported by any image created with format and drmFormatModifier.bvulkandrmFormatModifierCount is an inout parameter related to the number of modifiers compatible with the format, as described below.bvulkanpDrmFormatModifierProperties is either NULL or a pointer to an array of  structures.bvulkanvkGetImageDrmFormatModifierPropertiesEXT - Returns an image@s DRM format modifier Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , bvulkandevice+ is the logical device that owns the image.>VUID-vkGetImageDrmFormatModifierPropertiesEXT-device-parameter device must be a valid  handlevulkanimage is the queried image.9VUID-vkGetImageDrmFormatModifierPropertiesEXT-image-02272 image must have been created with  VkImageCreateInfo.htmltiling equal to =VUID-vkGetImageDrmFormatModifierPropertiesEXT-image-parameter image must be a valid  handle:VUID-vkGetImageDrmFormatModifierPropertiesEXT-image-parent image must1 have been created, allocated, or retrieved from devicebbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb-None( #$&'(./0289:<>?.n lvulkanVkFenceCreateInfo - Structure specifying parameters of a newly created fenceValid Usage (Implicit)"VUID-VkFenceCreateInfo-sType-sType sType must be  "VUID-VkFenceCreateInfo-pNext-pNext Each pNext: member of any structure (including this one) in the pNext chain must be either NULL* or a pointer to a valid instance of  or #VUID-VkFenceCreateInfo-sType-unique The sType" value of each struct in the pNext chain must be unique&VUID-VkFenceCreateInfo-flags-parameter flags must% be a valid combination of & valuesSee Also&, , bbvulkanpNext is NULL6 or a pointer to a structure extending this structure.bvulkanflags is a bitmask of &9 specifying the initial state and behavior of the fence.bvulkan)vkCreateFence - Create a new fence objectValid Usage (Implicit)#VUID-vkCreateFence-device-parameter device must be a valid  handle(VUID-vkCreateFence-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid l structure'VUID-vkCreateFence-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure#VUID-vkCreateFence-pFence-parameter pFence must be a valid pointer to a  handle Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , lbvulkan=A convenience wrapper to make a compatible pair of calls to b and bTo ensure that b is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.bvulkan'vkDestroyFence - Destroy a fence object Valid UsageVUID-vkDestroyFence-fence-01120 All  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-submissionqueue submission commands that refer to fence must have completed executionVUID-vkDestroyFence-fence-01121 If  were provided when fence1 was created, a compatible set of callbacks must be provided hereVUID-vkDestroyFence-fence-01122 If no  were provided when fence was created,  pAllocator must be NULLValid Usage (Implicit)$VUID-vkDestroyFence-device-parameter device must be a valid  handle#VUID-vkDestroyFence-fence-parameter If fence is not , fence must be a valid  handle(VUID-vkDestroyFence-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure VUID-vkDestroyFence-fence-parent If fence is a valid handle, it must1 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to fence must be externally synchronizedSee Also, , bvulkan0vkResetFences - Resets one or more fence objects DescriptionIf any member of pFences currently has its  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-importingpayload imported with temporary permanence, that fence@s prior permanent payload is first restored. The remaining operations described therefore operate on the restored payload.When b is executed on the host, it defines a /fence unsignal operation/ for each fence, which resets the fence to the unsignaled state.If any member of pFences* is already in the unsignaled state when b is executed, then b has no effect on that fence. Valid Usage VUID-vkResetFences-pFences-01123 Each element of pFences must not be currently associated with any queue command that has not yet completed execution on that queueValid Usage (Implicit)#VUID-vkResetFences-device-parameter device must be a valid  handle$VUID-vkResetFences-pFences-parameter pFences must( be a valid pointer to an array of  fenceCount valid  handles)VUID-vkResetFences-fenceCount-arraylength  fenceCount must be greater than 0!VUID-vkResetFences-pFences-parent Each element of pFences must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to each member of pFences must be externally synchronized Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, bvulkan/vkGetFenceStatus - Return the status of a fence DescriptionUpon success, b returns the status of the fence object, with the following return codes:StatusMeaningThe fence specified by fence is signaled.The fence specified by fence is unsignaled. The device has been lost. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-lost-device Lost Device.Fence Object Status CodesIf a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-submissionqueue submission command is pending execution, then the value returned by this command may immediately be out of date."If the device has been lost (see  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-lost-device Lost Device), b may return any of the above status codes. If the device has been lost and b9 is called repeatedly, it will eventually return either  or . Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, bvulkanvkWaitForFences - Wait for one or more fences to become signaled Description#If the condition is satisfied when b is called, then b returns immediately. If the condition is not satisfied at the time b is called, then b> will block and wait until the condition is satisfied or the timeout# has expired, whichever is sooner.If timeout is zero, then b does not wait, but simply returns the current state of the fences.  will be returned in this case if the condition is not satisfied, even though no actual wait was performed.)If the condition is satisfied before the timeout has expired, b returns . Otherwise, b returns  after the timeout has expired.If device loss occurs (see  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-lost-device Lost Device#) before the timeout has expired, b must$ return in finite time with either  or .NoteWhile we guarantee that b must return in finite time, no guarantees are made that it returns immediately upon device loss. However, the client can reasonably expect that the delay will be on the order of seconds and that calling b will not result in a permanently (or seemingly permanently) dead process.Valid Usage (Implicit)%VUID-vkWaitForFences-device-parameter device must be a valid  handle&VUID-vkWaitForFences-pFences-parameter pFences must( be a valid pointer to an array of  fenceCount valid  handles+VUID-vkWaitForFences-fenceCount-arraylength  fenceCount must be greater than 0#VUID-vkWaitForFences-pFences-parent Each element of pFences must1 have been created, allocated, or retrieved from device Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Alsoq, , bvulkan A variant of b which makes a *safe* FFI callbvulkandevice. is the logical device that creates the fence.vulkan pCreateInfo is a pointer to a l structure containing information about how the fence is to be created.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.bvulkandevice/ is the logical device that destroys the fence.vulkanfence' is the handle of the fence to destroy.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.bvulkandevice, is the logical device that owns the fences.vulkanpFences4 is a pointer to an array of fence handles to reset.bvulkandevice+ is the logical device that owns the fence.&VUID-vkGetFenceStatus-device-parameter device must be a valid  handlevulkanfence% is the handle of the fence to query.%VUID-vkGetFenceStatus-fence-parameter fence must be a valid  handle"VUID-vkGetFenceStatus-fence-parent fence must2 have been created, allocated, or retrieved from devicebvulkandevice, is the logical device that owns the fences.vulkanpFences is a pointer to an array of  fenceCount fence handles.vulkanwaitAll is the condition that must4 be satisfied to successfully unblock the wait. If waitAll is ,, then the condition is that all fences in pFences are signaled. Otherwise, the condition is that at least one fence in pFences is signaled.vulkantimeout0 is the timeout period in units of nanoseconds. timeout is adjusted to the closest value allowed by the implementation-dependent timeout accuracy, which may3 be substantially longer than one nanosecond, and may% be longer than the requested period.bvulkandevice, is the logical device that owns the fences.vulkanpFences is a pointer to an array of  fenceCount fence handles.vulkanwaitAll is the condition that must4 be satisfied to successfully unblock the wait. If waitAll is ,, then the condition is that all fences in pFences are signaled. Otherwise, the condition is that at least one fence in pFences is signaled.vulkantimeout0 is the timeout period in units of nanoseconds. timeout is adjusted to the closest value allowed by the implementation-dependent timeout accuracy, which may3 be substantially longer than one nanosecond, and may% be longer than the requested period.lbbb1&&&&bbbbbbbbbbbbbblbbb1&&&&& None( #$&'(./0289:<>?04vulkanVkQueueFamilyProperties - Structure providing information about a queue family DescriptionThe value returned in minImageTransferGranularity has a unit of compressed texel blocks for images having a block-compressed format, and a unit of texels otherwise.Possible values of minImageTransferGranularity are:-(0,0,0) specifies that only whole mip levels must be transferred using the image transfer operations on the corresponding queues. In this case, the following restrictions apply to all offset and extent parameters of image transfer operations:The x, y, and z members of a / parameter must always be zero.The width, height, and depth members of a u parameter must always match the width, height, and depth of the image subresource corresponding to the parameter, respectively.(Ax, Ay, Az) where Ax, Ay, and Az are all integer powers of two. In this case the following restrictions apply to all image transfer operations:x, y, and z of a / parameter must: be integer multiples of Ax, Ay, and Az, respectively.width of a u parameter must' be an integer multiple of Ax, or else x + width must equal the width of the image subresource corresponding to the parameter.height of a u parameter must' be an integer multiple of Ay, or else y + height must equal the height of the image subresource corresponding to the parameter.depth of a u parameter must' be an integer multiple of Az, or else z + depth must equal the depth of the image subresource corresponding to the parameter.If the format of the image corresponding to the parameters is one of the block-compressed formats then for the purposes of the above calculations the granularity must; be scaled up by the compressed texel block dimensions.5Queues supporting graphics and/or compute operations must report (1,1,1) in minImageTransferGranularity, meaning that there are no additional restrictions on the granularity of image transfer operations for these queues. Other queues supporting image transfer operations are only required- to support whole mip level transfers, thus minImageTransferGranularity. for queues belonging to such queue families may be (0,0,0).The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-device Device Memory section describes memory properties queried from the physical device.-For physical device feature queries see the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#featuresFeatures chapter.See Alsou, U, , d5vulkanVkPhysicalDeviceSparseProperties - Structure specifying physical device sparse memory propertiesSee Alsoq, 66vulkanVkPhysicalDeviceProperties - Structure specifying physical device properties DescriptionNote The value of  apiVersion may, be different than the version returned by :; either higher or lower. In such cases, the application must not use functionality that exceeds the version of Vulkan associated with a given object. The  pApiVersion parameter returned by # is the version associated with a ! and its children, except for a  and its children. 6:: apiVersion# is the version associated with a  and its children.NoteThe encoding of  driverVersion is implementation-defined. It may not use the same encoding as  apiVersion3. Applications should follow information from the vendor1 on how to extract the version information from  driverVersion.The vendorID and deviceID fields are provided to allow applications to adapt to device characteristics that are not adequately exposed by other Vulkan queries.NoteThese may include performance profiles, hardware errata, or other characteristics.The vendor identified by vendorID is the entity responsible for the most salient characteristics of the underlying implementation of the  being queried.NoteFor example, in the case of a discrete GPU implementation, this should be the GPU chipset vendor. In the case of a hardware accelerator integrated into a system-on-chip (SoC), this should be the supplier of the silicon IP used to create the accelerator.If the vendor has a  .https://pcisig.com/membership/member-companies PCI vendor ID, the low 16 bits of vendorID must5 contain that PCI vendor ID, and the remaining bits must0 be set to zero. Otherwise, the value returned must= be a valid Khronos vendor ID, obtained as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vulkan-styleguide?Vulkan Documentation and Extensions: Procedures and Conventions document in the section @Registering a Vendor ID with Khronos@. Khronos vendor IDs are allocated starting at 0x10000, to distinguish them from the PCI vendor ID namespace. Khronos vendor IDs are symbolically defined in the  type.9The vendor is also responsible for the value returned in deviceID3. If the implementation is driven primarily by a  https://pcisig.com/ PCI device with a  https://pcisig.com/ PCI device ID, the low 16 bits of deviceID must4 contain that PCI device ID, and the remaining bits must be set to zero. Otherwise, the choice of what values to return may= be dictated by operating system or platform policies - but should uniquely identify both the device version and any major configuration options (for example, core count in the case of multicore devices).NoteThe same device ID should be used for all physical implementations of that device version and configuration. For example, all uses of a specific silicon IP GPU version and configuration should use the same device ID, even if those uses occur in different SoCs.See Also8, U, 5, , d7vulkanVkPhysicalDeviceMemoryProperties - Structure specifying physical device memory properties DescriptionThe 7" structure describes a number of  memory heaps as well as a number of  memory types that can be used to access memory allocated in those heaps. Each heap describes a memory resource of a particular size, and each memory type describes a set of memory properties (e.g. host cached vs uncached) that can be used with a given memory heap. Allocations using a particular memory type will consume resources from the heap indicated by that memory type@s heap index. More than one memory type may share each heap, and the heaps and memory types provide a mechanism to advertise an accurate size of the physical memory resources while allowing the memory to be used with a variety of different properties.'The number of memory heaps is given by memoryHeapCount and is less than or equal to ,/. Each heap is described by an element of the  memoryHeaps array as a ; structure. The number of memory types available across all memory heaps is given by memoryTypeCount and is less than or equal to ,6. Each memory type is described by an element of the  memoryTypes array as a : structure.At least one heap must include   in ;::flags. If there are multiple heaps that all have similar performance characteristics, they may all include  . In a unified memory architecture (UMA) system there is often only a single memory heap which is considered to be equally @local@ to the host and to the device, and such an implementation must% advertise the heap as device-local.Each memory type returned by d must have its  propertyFlags$ set to one of the following values:0  |    |    |   |     |   |    |   |    |   |   |    |     |    |   |    |   |   |    |    |   |   |    |   |   |   |    |   |   |    |   |   |   |    |   |    |   |   |   |    |   |   |   |   |    |  There must, be at least one memory type with both the   and   bits set in its  propertyFlags. There must( be at least one memory type with the   bit set in its  propertyFlags . If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-deviceCoherentMemorydeviceCoherentMemory feature is enabled, there must' be at least one memory type with the   bit set in its  propertyFlags.For each pair of elements X and Y returned in  memoryTypes, X must* be placed at a lower index position than Y if:%the set of bit flags returned in the  propertyFlags member of X is a strict subset of the set of bit flags returned in the  propertyFlags member of Y; orthe  propertyFlags members of X and Y are equal, and X belongs to a memory heap with greater performance (as determined in an implementation-specific manner) ; orthe  propertyFlags members of Y includes   or   and X does notNote)There is no ordering requirement between X and Y elements for the case their  propertyFlags members are not in a subset relation. That potentially allows more than one possible way to order the same set of memory types. Notice that the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-device-bitmask-list5list of all allowed memory property flag combinations/ is written in a valid order. But if instead   was before   |  ,, the list would still be in a valid order.There may be a performance penalty for using device coherent or uncached device memory types, and using these accidentally is undesirable. In order to avoid this, memory types with these properties always appear at the end of the list; but are subject to the same rules otherwise.This ordering requirement enables applications to use a simple search loop to select the desired memory type along the lines of: // Find a memory in `memoryTypeBitsRequirement` that includes all of `requiredProperties` int32_t findProperties(const VkPhysicalDeviceMemoryProperties* pMemoryProperties, uint32_t memoryTypeBitsRequirement, VkMemoryPropertyFlags requiredProperties) { const uint32_t memoryCount = pMemoryProperties->memoryTypeCount; for (uint32_t memoryIndex = 0; memoryIndex < memoryCount; ++memoryIndex) { const uint32_t memoryTypeBits = (1 << memoryIndex); const bool isRequiredMemoryType = memoryTypeBitsRequirement & memoryTypeBits; const VkMemoryPropertyFlags properties = pMemoryProperties->memoryTypes[memoryIndex].propertyFlags; const bool hasRequiredProperties = (properties & requiredProperties) == requiredProperties; if (isRequiredMemoryType && hasRequiredProperties) return static_cast(memoryIndex); } // failed to find memory type return -1; } // Try to find an optimal memory type, or if it does not exist try fallback memory type // `device` is the VkDevice // `image` is the VkImage that requires memory to be bound // `memoryProperties` properties as returned by vkGetPhysicalDeviceMemoryProperties // `requiredProperties` are the property flags that must be present // `optimalProperties` are the property flags that are preferred by the application VkMemoryRequirements memoryRequirements; vkGetImageMemoryRequirements(device, image, &memoryRequirements); int32_t memoryType = findProperties(&memoryProperties, memoryRequirements.memoryTypeBits, optimalProperties); if (memoryType == -1) // not found; try fallback properties memoryType = findProperties(&memoryProperties, memoryRequirements.memoryTypeBits, requiredProperties);See Also;, :, U, d8vulkanVkPhysicalDeviceLimits - Structure reporting implementation-dependent physical device limitsMembersThe 8 are properties of the physical device. These are available in the limits member of the 6# structure which is returned from d.See Alsoq, o, 6, c9vulkanVkPhysicalDeviceFeatures - Structure describing the fine-grained features that can be supported by an implementationMembers0This structure describes the following features:See Alsoq,  , U, d:vulkan/VkMemoryType - Structure specifying memory typeSee Also , 7;vulkan1VkMemoryHeap - Structure specifying a memory heapSee Alsoo,  , 7<vulkanVkInstanceCreateInfo - Structure specifying parameters of a newly created instance DescriptionTo capture events that occur while creating or destroying an instance, an application can link a  structure or a  structure to the pNext element of the < structure given to d7. This callback is only valid for the duration of the d and the d call. Use   or  ( to create persistent callback objects. Valid Usage%VUID-VkInstanceCreateInfo-pNext-04925 If the pNext chain of < includes a 8 structure, the list of enabled extensions in ppEnabledExtensionNames must contain VK_EXT_debug_report%VUID-VkInstanceCreateInfo-pNext-04926 If the pNext chain of < includes a 8 structure, the list of enabled extensions in ppEnabledExtensionNames must contain VK_EXT_debug_utilsValid Usage (Implicit)%VUID-VkInstanceCreateInfo-sType-sType sType must be  %VUID-VkInstanceCreateInfo-pNext-pNext Each pNext: member of any structure (including this one) in the pNext chain must be either NULL* or a pointer to a valid instance of , ,  , or &VUID-VkInstanceCreateInfo-sType-unique The sType" value of each struct in the pNext chain must? be unique, with the exception of structures of type +VUID-VkInstanceCreateInfo-flags-zerobitmask flags must be 04VUID-VkInstanceCreateInfo-pApplicationInfo-parameter If pApplicationInfo is not NULL, pApplicationInfo must$ be a valid pointer to a valid ? structure7VUID-VkInstanceCreateInfo-ppEnabledLayerNames-parameter If enabledLayerCount is not 0, ppEnabledLayerNames must( be a valid pointer to an array of enabledLayerCount# null-terminated UTF-8 strings;VUID-VkInstanceCreateInfo-ppEnabledExtensionNames-parameter If enabledExtensionCount is not 0, ppEnabledExtensionNames must( be a valid pointer to an array of enabledExtensionCount# null-terminated UTF-8 stringsSee Also?, !, , d=vulkanVkImageFormatProperties - Structure specifying an image format propertiesMembers maxExtent0 are the maximum image dimensions. See the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extentperimagetypeAllowed Extent Values< section below for how these values are constrained by type. maxMipLevels. is the maximum number of mipmap levels.  maxMipLevels must be equal to the number of levels in the complete mipmap chain based on the maxExtent.width, maxExtent.height, and maxExtent.depth, except when one of the following conditions is true, in which case it may instead be 1:d::tiling was !U::tiling was !the U::pNext chain included a Q2 structure with a handle type included in the  handleTypes: member for which mipmap image support is not requiredimage format is one of those listed in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionflags contains "maxArrayLayers- is the maximum number of array layers. maxArrayLayers must be no less than 8::maxImageArrayLayers, except when one of the following conditions is true, in which case it may instead be 1:tiling is !tiling is ! and type is !format is one of those listed in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionIf tiling is ! , then maxArrayLayers must not be 0. sampleCounts is a bitmask of b specifying all the supported sample counts for this image as described  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-supported-sample-countsbelow.maxResourceSize is an upper bound on the total image size in bytes, inclusive of all image subresources. Implementations may have an address space limit on total size of a resource, which is advertised by this property. maxResourceSize must be at least 231. DescriptionNoteThere is no mechanism to query the size of an image before creating it, to compare that size against maxResourceSize. If an application attempts to create an image that exceeds this limit, the creation will fail and 1  will return . While the advertised limit must be at least 231, it may not be possible to create an image that approaches that size, particularly for !.%If the combination of parameters to d4 is not supported by the implementation for use in 1 , then all members of = will be filled with zero.NoteFilling = with zero for unsupported formats is an exception to the usual rule that output structures have undefined contents on error. This exception was unintentional, but is preserved for backwards compatibility.See Alsoo, u, , U, c, d>vulkanVkFormatProperties - Structure specifying image format properties DescriptionNoteIf no format feature flags are supported, the format itself is not supported, and images of that format cannot be created.If format$ is a block-compressed format, then bufferFeatures must* not support any features for the format.If format" is not a multi-plane format then linearTilingFeatures and optimalTilingFeatures must not contain #.See Also#, U, d?vulkanVkApplicationInfo - Structure specifying application information Description4Vulkan 1.0 implementations were required to return  if  apiVersion was larger than 1.0. Implementations that support Vulkan 1.1 or later must not return  for any value of  apiVersion.Note#Because Vulkan 1.0 implementations may fail with , applications should; determine the version of Vulkan available before calling d . If the d returns NULL for , it is a Vulkan 1.0 implementation. Otherwise, the application can call % to determine the version of Vulkan.As long as the instance supports at least Vulkan 1.1, an application can use different versions of Vulkan with an instance than it does with a device or physical device.Note)The Khronos validation layers will treat  apiVersion as the highest API version the application targets, and will validate API usage against the minimum of that version and the implementation version (instance or device, depending on context). If an application tries to use functionality from a greater version than this, a validation error will be triggered.For example, if the instance supports Vulkan 1.1 and three physical devices support Vulkan 1.0, Vulkan 1.1, and Vulkan 1.2, respectively, and if the application sets  apiVersion to 1.2, the application can' use the following versions of Vulkan: Vulkan 1.0 can> be used with the instance and with all physical devices. Vulkan 1.1 can be used with the instance and with the physical devices that support Vulkan 1.1 and Vulkan 1.2. Vulkan 1.2 can be used with the physical device that supports Vulkan 1.2. , which can# simultaneously exist on a device.bvulkanlimits-bufferImageGranularity bufferImageGranularity is the granularity, in bytes, at which buffer or linear image resources, and optimal image resources can+ be bound to adjacent offsets in the same 0  object without aliasing. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-bufferimagegranularityBuffer-Image Granularity for more details.bvulkanlimits-sparseAddressSpaceSize sparseAddressSpaceSize is the total amount of address space available, in bytes, for sparse memory resources. This is an upper bound on the sum of the sizes of all sparse resources, regardless of whether any memory is bound to them.bvulkanlimits-maxBoundDescriptorSets maxBoundDescriptorSets0 is the maximum number of descriptor sets that can, be simultaneously used by a pipeline. All 0  decorations in shader modules must have a value less than maxBoundDescriptorSets. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sets.bvulkan$limits-maxPerStageDescriptorSamplers maxPerStageDescriptorSamplers) is the maximum number of samplers that can be accessible to a single shader stage in a pipeline layout. Descriptors with a type of   or   count against this limit. Only descriptors in descriptor set layouts created without the  bit set count against this limit. A descriptor is accessible to a shader stage when the  stageFlags member of the   8 structure has the bit for that shader stage set. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampler and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-combinedimagesampler.bvulkan*limits-maxPerStageDescriptorUniformBuffers #maxPerStageDescriptorUniformBuffers0 is the maximum number of uniform buffers that can be accessible to a single shader stage in a pipeline layout. Descriptors with a type of   or   count against this limit. Only descriptors in descriptor set layouts created without the  bit set count against this limit. A descriptor is accessible to a shader stage when the  stageFlags member of the   8 structure has the bit for that shader stage set. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbuffer and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbufferdynamic.bvulkan*limits-maxPerStageDescriptorStorageBuffers #maxPerStageDescriptorStorageBuffers0 is the maximum number of storage buffers that can be accessible to a single shader stage in a pipeline layout. Descriptors with a type of   or   count against this limit. Only descriptors in descriptor set layouts created without the  bit set count against this limit. A descriptor is accessible to a pipeline shader stage when the  stageFlags member of the   8 structure has the bit for that shader stage set. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebuffer and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebufferdynamic.bvulkan)limits-maxPerStageDescriptorSampledImages "maxPerStageDescriptorSampledImages/ is the maximum number of sampled images that can be accessible to a single shader stage in a pipeline layout. Descriptors with a type of  ,  , or   count against this limit. Only descriptors in descriptor set layouts created without the  bit set count against this limit. A descriptor is accessible to a pipeline shader stage when the  stageFlags member of the   8 structure has the bit for that shader stage set. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-combinedimagesampler,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampledimage, and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformtexelbuffer.bvulkan)limits-maxPerStageDescriptorStorageImages "maxPerStageDescriptorStorageImages/ is the maximum number of storage images that can be accessible to a single shader stage in a pipeline layout. Descriptors with a type of  , or   count against this limit. Only descriptors in descriptor set layouts created without the  bit set count against this limit. A descriptor is accessible to a pipeline shader stage when the  stageFlags member of the   8 structure has the bit for that shader stage set. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage, and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer.bvulkan,limits-maxPerStageDescriptorInputAttachments %maxPerStageDescriptorInputAttachments2 is the maximum number of input attachments that can be accessible to a single shader stage in a pipeline layout. Descriptors with a type of   count against this limit. Only descriptors in descriptor set layouts created without the  bit set count against this limit. A descriptor is accessible to a pipeline shader stage when the  stageFlags member of the    structure has the bit for that shader stage set. These are only supported for the fragment stage. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-inputattachment.bvulkanlimits-maxPerStageResources maxPerStageResources* is the maximum number of resources that can be accessible to a single shader stage in a pipeline layout. Descriptors with a type of  ,  ,  ,  ,  ,  ,  ,  ,  , or   count against this limit. Only descriptors in descriptor set layouts created without the  bit set count against this limit. For the fragment shader stage the framebuffer color attachments also count against this limit.bvulkanlimits-maxDescriptorSetSamplers maxDescriptorSetSamplers) is the maximum number of samplers that can be included in a pipeline layout. Descriptors with a type of   or   count against this limit. Only descriptors in descriptor set layouts created without the ) bit set count against this limit. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampler and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-combinedimagesampler.bvulkan%limits-maxDescriptorSetUniformBuffers maxDescriptorSetUniformBuffers0 is the maximum number of uniform buffers that can be included in a pipeline layout. Descriptors with a type of   or   count against this limit. Only descriptors in descriptor set layouts created without the ) bit set count against this limit. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbuffer and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbufferdynamic.bvulkan,limits-maxDescriptorSetUniformBuffersDynamic %maxDescriptorSetUniformBuffersDynamic8 is the maximum number of dynamic uniform buffers that can be included in a pipeline layout. Descriptors with a type of   count against this limit. Only descriptors in descriptor set layouts created without the ) bit set count against this limit. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbufferdynamic.bvulkan%limits-maxDescriptorSetStorageBuffers maxDescriptorSetStorageBuffers0 is the maximum number of storage buffers that can be included in a pipeline layout. Descriptors with a type of   or   count against this limit. Only descriptors in descriptor set layouts created without the ) bit set count against this limit. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebuffer and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebufferdynamic.bvulkan,limits-maxDescriptorSetStorageBuffersDynamic %maxDescriptorSetStorageBuffersDynamic8 is the maximum number of dynamic storage buffers that can be included in a pipeline layout. Descriptors with a type of   count against this limit. Only descriptors in descriptor set layouts created without the ) bit set count against this limit. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebufferdynamic.bvulkan$limits-maxDescriptorSetSampledImages maxDescriptorSetSampledImages/ is the maximum number of sampled images that can be included in a pipeline layout. Descriptors with a type of  ,  , or   count against this limit. Only descriptors in descriptor set layouts created without the ) bit set count against this limit. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-combinedimagesampler,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampledimage, and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformtexelbuffer.bvulkan$limits-maxDescriptorSetStorageImages maxDescriptorSetStorageImages/ is the maximum number of storage images that can be included in a pipeline layout. Descriptors with a type of  , or   count against this limit. Only descriptors in descriptor set layouts created without the ) bit set count against this limit. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage, and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer.bvulkan'limits-maxDescriptorSetInputAttachments  maxDescriptorSetInputAttachments2 is the maximum number of input attachments that can be included in a pipeline layout. Descriptors with a type of   count against this limit. Only descriptors in descriptor set layouts created without the ) bit set count against this limit. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-inputattachment.bvulkanlimits-maxVertexInputAttributes maxVertexInputAttributes8 is the maximum number of vertex input attributes that can be specified for a graphics pipeline. These are described in the array of 8  structures that are provided at graphics pipeline creation time via the pVertexAttributeDescriptions member of the 8 structure. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-attrib and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input.bvulkanlimits-maxVertexInputBindings maxVertexInputBindings/ is the maximum number of vertex buffers that can be specified for providing vertex attributes to a graphics pipeline. These are described in the array of 8 structures that are provided at graphics pipeline creation time via the pVertexBindingDescriptions member of the 8 structure. The binding member of 8 must be less than this limit. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input.bvulkan$limits-maxVertexInputAttributeOffset maxVertexInputAttributeOffset4 is the maximum vertex input attribute offset that can3 be added to the vertex input binding stride. The offset member of the 8  structure must+ be less than or equal to this limit. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input.bvulkan"limits-maxVertexInputBindingStride maxVertexInputBindingStride2 is the maximum vertex input binding stride that can. be specified in a vertex input binding. The stride member of the 8 structure must, be less than or equal to this limit. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input.bvulkan limits-maxVertexOutputComponents maxVertexOutputComponents is the maximum number of components of output variables which can% be output by a vertex shader. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-vertex.bvulkan%limits-maxTessellationGenerationLevel maxTessellationGenerationLevel is the maximum tessellation generation level supported by the fixed-function tessellation primitive generator. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#tessellation.bvulkanlimits-maxTessellationPatchSize maxTessellationPatchSize: is the maximum patch size, in vertices, of patches that can be processed by the tessellation control shader and tessellation primitive generator. The patchControlPoints member of the 8 structure specified at pipeline creation time and the value provided in the OutputVertices" execution mode of shader modules must, be less than or equal to this limit. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#tessellation.cvulkan5limits-maxTessellationControlPerVertexInputComponents .maxTessellationControlPerVertexInputComponents? is the maximum number of components of input variables which can be provided as per-vertex inputs to the tessellation control shader stage.cvulkan6limits-maxTessellationControlPerVertexOutputComponents /maxTessellationControlPerVertexOutputComponents is the maximum number of components of per-vertex output variables which can7 be output from the tessellation control shader stage.cvulkan5limits-maxTessellationControlPerPatchOutputComponents .maxTessellationControlPerPatchOutputComponents is the maximum number of components of per-patch output variables which can7 be output from the tessellation control shader stage.cvulkan2limits-maxTessellationControlTotalOutputComponents +maxTessellationControlTotalOutputComponents is the maximum total number of components of per-vertex and per-patch output variables which can6 be output from the tessellation control shader stage.cvulkan/limits-maxTessellationEvaluationInputComponents (maxTessellationEvaluationInputComponents? is the maximum number of components of input variables which can be provided as per-vertex inputs to the tessellation evaluation shader stage.cvulkan0limits-maxTessellationEvaluationOutputComponents )maxTessellationEvaluationOutputComponents is the maximum number of components of per-vertex output variables which can: be output from the tessellation evaluation shader stage.cvulkan#limits-maxGeometryShaderInvocations maxGeometryShaderInvocations is the maximum invocation count supported for instanced geometry shaders. The value provided in the  Invocations# execution mode of shader modules must+ be less than or equal to this limit. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#geometry.cvulkan!limits-maxGeometryInputComponents maxGeometryInputComponents? is the maximum number of components of input variables which can5 be provided as inputs to the geometry shader stage.cvulkan"limits-maxGeometryOutputComponents maxGeometryOutputComponents is the maximum number of components of output variables which can+ be output from the geometry shader stage.cvulkan limits-maxGeometryOutputVertices maxGeometryOutputVertices* is the maximum number of vertices which can$ be emitted by any geometry shader.cvulkan'limits-maxGeometryTotalOutputComponents  maxGeometryTotalOutputComponents is the maximum total number of components of output variables, across all emitted vertices, which can+ be output from the geometry shader stage.cvulkan!limits-maxFragmentInputComponents maxFragmentInputComponents? is the maximum number of components of input variables which can5 be provided as inputs to the fragment shader stage.cvulkan#limits-maxFragmentOutputAttachments maxFragmentOutputAttachments4 is the maximum number of output attachments which can- be written to by the fragment shader stage.cvulkan$limits-maxFragmentDualSrcAttachments maxFragmentDualSrcAttachments4 is the maximum number of output attachments which can be written to by the fragment shader stage when blending is enabled and one of the dual source blend modes is in use. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dualSrcBlend dualSrcBlend.cvulkan)limits-maxFragmentCombinedOutputResources "maxFragmentCombinedOutputResources is the total number of storage buffers, storage images, and output Location- decorated color attachments (described in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutputFragment Output Interface ) which can& be used in the fragment shader stage.cvulkan!limits-maxComputeSharedMemorySize maxComputeSharedMemorySize is the maximum total storage size, in bytes, available for variables declared with the  Workgroup/ storage class in shader modules (or with the shared storage qualifier in GLSL) in the compute shader stage. When variables declared with the  Workgroup storage class are explicitly laid out (hence they are also decorated with Block), the amount of storage consumed is the size of the largest Block variable, not counting any padding at the end. The amount of storage consumed by the non-Block variables declared with the  Workgroup storage class is implementation-dependent. However, the amount of storage consumed may not exceed the largest block size that would be obtained if all active non-Block variables declared with  Workgroup storage class were assigned offsets in an arbitrary order by successively taking the smallest valid offset according to the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources-standard-layoutStandard Storage Buffer Layout rules. (This is equivalent to using the GLSL std430 layout rules.)cvulkanlimits-maxComputeWorkGroupCount maxComputeWorkGroupCount4[3] is the maximum number of local workgroups that can be dispatched by a single dispatching command. These three values represent the maximum number of local workgroups for the X, Y, and Z dimensions, respectively. The workgroup count parameters to the dispatching commands must9 be less than or equal to the corresponding limit. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dispatch.cvulkan%limits-maxComputeWorkGroupInvocations maxComputeWorkGroupInvocations is the maximum total number of compute shader invocations in a single local workgroup. The product of the X, Y, and Z sizes, as specified by the  LocalSize execution mode in shader modules or by the object decorated by the  WorkgroupSize decoration, must& be less than or equal to this limit.cvulkanlimits-maxComputeWorkGroupSize maxComputeWorkGroupSize[3] is the maximum size of a local compute workgroup, per dimension. These three values represent the maximum local workgroup size in the X, Y, and Z dimensions, respectively. The x, y, and z sizes, as specified by the  LocalSize3 execution mode or by the object decorated by the  WorkgroupSize decoration in shader modules, must3 be less than or equal to the corresponding limit.cvulkanlimits-subPixelPrecisionBits subPixelPrecisionBits is the number of bits of subpixel precision in framebuffer coordinates xf and yf. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast.cvulkanlimits-subTexelPrecisionBits subTexelPrecisionBits is the number of bits of precision in the division along an axis of an image used for minification and magnification filters. 2subTexelPrecisionBits is the actual number of divisions along each axis of the image represented. Sub-texel values calculated during image sampling will snap to these locations when generating the filtered results.cvulkanlimits-mipmapPrecisionBits mipmapPrecisionBits is the number of bits of division that the LOD calculation for mipmap fetching get snapped to when determining the contribution from each mip level to the mip filtered results. 2mipmapPrecisionBits$ is the actual number of divisions.cvulkanlimits-maxDrawIndexedIndexValue maxDrawIndexedIndexValue" is the maximum index value that can be used for indexed draw calls when using 32-bit indices. This excludes the primitive restart index value of 0xFFFFFFFF. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fullDrawIndexUint32fullDrawIndexUint32.cvulkanlimits-maxDrawIndirectCount maxDrawIndirectCount is the maximum draw count that is supported for indirect draw calls. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiDrawIndirectmultiDrawIndirect.cvulkanlimits-maxSamplerLodBias maxSamplerLodBias; is the maximum absolute sampler LOD bias. The sum of the  mipLodBias member of the > structure and the Bias operand of image sampling operations in shader modules (or 0 if no Bias operand is provided to an image sampling operation) are clamped to the range [-maxSamplerLodBias,+maxSamplerLodBias]. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-mipLodBias.cvulkanlimits-maxSamplerAnisotropy maxSamplerAnisotropy is the maximum degree of sampler anisotropy. The maximum degree of anisotropic filtering used for an image sampling operation is the minimum of the  maxAnisotropy member of the >! structure and this limit. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-maxAnisotropy.cvulkanlimits-maxViewports  maxViewports1 is the maximum number of active viewports. The  viewportCount member of the 82 structure that is provided at pipeline creation must& be less than or equal to this limit.cvulkanlimits-maxViewportDimensions maxViewportDimensions[2] are the maximum viewport dimensions in the X (width) and Y (height) dimensions, respectively. The maximum viewport dimensions must6 be greater than or equal to the largest image which can8 be created and used as a framebuffer attachment. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-viewportControlling the Viewport.cvulkanlimits-viewportboundsrange viewportBoundsRange[2] is the [minimum, maximum] range that the corners of a viewport must be contained in. This range must be at least [-2  size, 2  size - 1], where size = max(maxViewportDimensions[0], maxViewportDimensions [1]). See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-viewportControlling the Viewport.NoteThe intent of the viewportBoundsRange limit is to allow a maximum sized viewport to be arbitrarily shifted relative to the output target as long as at least some portion intersects. This would give a bounds limit of [-size + 1, 2  size - 1] which would allow all possible non-empty-set intersections of the output target and the viewport. Since these numbers are typically powers of two, picking the signed number range using the smallest possible number of bits ends up with the specified range.cvulkanlimits-viewportSubPixelBits viewportSubPixelBits is the number of bits of subpixel precision for viewport bounds. The subpixel precision that floating-point viewport bounds are interpreted at is given by this limit.cvulkanlimits-minMemoryMapAlignment minMemoryMapAlignment is the minimum required alignment, in bytes, of host visible memory allocations within the host address space. When mapping a memory allocation with 4, subtracting offset bytes from the returned pointer will always produce an integer multiple of this limit. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-device-hostaccess.cvulkan$limits-minTexelBufferOffsetAlignment minTexelBufferOffsetAlignment is the minimum required alignment, in bytes, for the offset member of the # structure for texel buffers. If  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-texelBufferAlignmenttexelBufferAlignment> is enabled, this limit is equivalent to the maximum of the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-uniformTexelBufferOffsetAlignmentBytes&uniformTexelBufferOffsetAlignmentBytes and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-storageTexelBufferOffsetAlignmentBytes&storageTexelBufferOffsetAlignmentBytes members of , but smaller alignment is  optionally allowed by  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-storageTexelBufferOffsetSingleTexelAlignment,storageTexelBufferOffsetSingleTexelAlignment and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-uniformTexelBufferOffsetSingleTexelAlignment,uniformTexelBufferOffsetSingleTexelAlignment. If  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-texelBufferAlignmenttexelBufferAlignment is not enabled, ::offset must be a multiple of this value.cvulkan&limits-minUniformBufferOffsetAlignment minUniformBufferOffsetAlignment is the minimum required alignment, in bytes, for the offset member of the  < structure for uniform buffers. When a descriptor of type   or   is updated, the offset must be an integer multiple of this limit. Similarly, dynamic offsets for uniform buffers must be multiples of this limit.cvulkan&limits-minStorageBufferOffsetAlignment minStorageBufferOffsetAlignment is the minimum required alignment, in bytes, for the offset member of the  < structure for storage buffers. When a descriptor of type   or   is updated, the offset must be an integer multiple of this limit. Similarly, dynamic offsets for storage buffers must be multiples of this limit.cvulkanlimits-minTexelOffset minTexelOffset& is the minimum offset value for the  ConstOffset image operand of any of the OpImageSample* or  OpImageFetch* image instructions.cvulkanlimits-maxTexelOffset maxTexelOffset& is the maximum offset value for the  ConstOffset image operand of any of the OpImageSample* or  OpImageFetch* image instructions.cvulkanlimits-minTexelGatherOffset minTexelGatherOffset& is the minimum offset value for the Offset,  ConstOffset, or  ConstOffsets image operands of any of the OpImage*Gather image instructions.cvulkanlimits-maxTexelGatherOffset maxTexelGatherOffset& is the maximum offset value for the Offset,  ConstOffset, or  ConstOffsets image operands of any of the OpImage*Gather image instructions.cvulkanlimits-minInterpolationOffset minInterpolationOffset is the base minimum (inclusive) negative offset value for the Offset operand of the InterpolateAtOffset extended instruction.cvulkanlimits-maxInterpolationOffset maxInterpolationOffset is the base maximum (inclusive) positive offset value for the Offset operand of the InterpolateAtOffset extended instruction.cvulkan&limits-subPixelInterpolationOffsetBits subPixelInterpolationOffsetBits, is the number of fractional bits that the x and y offsets to the InterpolateAtOffset extended instruction may% be rounded to as fixed-point values.cvulkanlimits-maxFramebufferWidth maxFramebufferWidth. is the maximum width for a framebuffer. The width member of the 7 structure must& be less than or equal to this limit.cvulkanlimits-maxFramebufferHeight maxFramebufferHeight/ is the maximum height for a framebuffer. The height member of the 7 structure must& be less than or equal to this limit.cvulkanlimits-maxFramebufferLayers maxFramebufferLayers< is the maximum layer count for a layered framebuffer. The layers member of the 7 structure must& be less than or equal to this limit.cvulkan#limits-framebufferColorSampleCounts framebufferColorSampleCounts is a bitmask1 of b indicating the color sample counts that are supported for all framebuffer color attachments with floating- or fixed-point formats. For color attachments with integer formats, see  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-framebufferIntegerColorSampleCounts#framebufferIntegerColorSampleCounts.cvulkan#limits-framebufferDepthSampleCounts framebufferDepthSampleCounts is a bitmask1 of b indicating the supported depth sample counts for all framebuffer depth/stencil attachments, when the format includes a depth component.cvulkan%limits-framebufferStencilSampleCounts framebufferStencilSampleCounts is a bitmask1 of b indicating the supported stencil sample counts for all framebuffer depth/stencil attachments, when the format includes a stencil component.cvulkan+limits-framebufferNoAttachmentsSampleCounts $framebufferNoAttachmentsSampleCounts is a bitmask1 of b0 indicating the supported sample counts for a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments!subpass which uses no attachments.cvulkanlimits-maxColorAttachments maxColorAttachments2 is the maximum number of color attachments that can- be used by a subpass in a render pass. The colorAttachmentCount member of the 7  or d structure must% be less than or equal to this limit.cvulkan$limits-sampledImageColorSampleCounts sampledImageColorSampleCounts is a bitmask1 of b indicating the sample counts supported for all 2D images created with !, usage containing !", and a non-integer color format.cvulkan&limits-sampledImageIntegerSampleCounts sampledImageIntegerSampleCounts is a bitmask1 of b indicating the sample counts supported for all 2D images created with !, usage containing !, and an integer color format.cvulkan$limits-sampledImageDepthSampleCounts sampledImageDepthSampleCounts is a bitmask1 of b indicating the sample counts supported for all 2D images created with !, usage containing !, and a depth format.cvulkan&limits-sampledImageStencilSampleCounts sampledImageStencilSampleCounts is a bitmask1 of b indicating the sample counts supported for all 2D images created with !, usage containing !, and a stencil format.cvulkanlimits-storageImageSampleCounts storageImageSampleCounts is a bitmask1 of b indicating the sample counts supported for all 2D images created with !, and usage containing !.cvulkanlimits-maxSampleMaskWords maxSampleMaskWords is the maximum number of array elements of a variable decorated with the /  built-in decoration.cvulkan"limits-timestampComputeAndGraphics timestampComputeAndGraphics specifies support for timestamps on all graphics and compute queues. If this limit is set to /", all queues that advertise the  or  in the 4:: queueFlags support 4::timestampValidBits of at least 36. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-timestampsTimestamp Queries.cvulkanlimits-timestampPeriod timestampPeriod is the number of nanoseconds required4 for a timestamp query to be incremented by 1. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-timestampsTimestamp Queries.cvulkanlimits-maxClipDistances maxClipDistances/ is the maximum number of clip distances that can be used in a single shader stage. The size of any array declared with the  ClipDistance) built-in decoration in a shader module must% be less than or equal to this limit.cvulkanlimits-maxCullDistances maxCullDistances/ is the maximum number of cull distances that can be used in a single shader stage. The size of any array declared with the  CullDistance) built-in decoration in a shader module must% be less than or equal to this limit.cvulkan&limits-maxCombinedClipAndCullDistances maxCombinedClipAndCullDistances is the maximum combined number of clip and cull distances that can be used in a single shader stage. The sum of the sizes of any pair of arrays declared with the  ClipDistance and  CullDistance built-in decoration used by a single shader stage in a shader module must% be less than or equal to this limit.cvulkanlimits-discreteQueuePriorities discreteQueuePriorities, is the number of discrete priorities that can? be assigned to a queue based on the value of each member of  ::pQueuePriorities. This must be at least 2, and levels must be spread evenly over the range, with at least one level at 1.0, and another at 0.0. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-priority.cvulkanlimits-pointSizeRange pointSizeRange[2] is the range [minimum,maximum] of supported sizes for points. Values written to variables decorated with the  PointSize0 built-in decoration are clamped to this range.cvulkanlimits-lineWidthRange lineWidthRange[2] is the range [minimum,maximum:] of supported widths for lines. Values specified by the  lineWidth member of the 8 or the  lineWidth parameter to   are clamped to this range.cvulkanlimits-pointSizeGranularity pointSizeGranularity is the granularity of supported point sizes. Not all point sizes in the range defined by pointSizeRange are supported. This limit specifies the granularity (or increment) between successive supported point sizes.cvulkanlimits-lineWidthGranularity lineWidthGranularity is the granularity of supported line widths. Not all line widths in the range defined by lineWidthRange are supported. This limit specifies the granularity (or increment) between successive supported line widths.cvulkanlimits-strictLines  strictLines specifies whether lines are rasterized according to the preferred method of rasterization. If set to /, lines may8 be rasterized under a relaxed set of rules. If set to /;, lines are rasterized as per the strict definition. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-basic Basic Line Segment Rasterization.cvulkanlimits-standardSampleLocations standardSampleLocations specifies whether rasterization uses the standard sample locations as documented in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-multisampling Multisampling . If set to /, the implementation uses the documented sample locations. If set to /, the implementation may! use different sample locations.cvulkan'limits-optimalBufferCopyOffsetAlignment  optimalBufferCopyOffsetAlignment7 is the optimal buffer offset alignment in bytes for  ,  ,  , and  . The per texel alignment requirements are enforced, but applications should use the optimal alignment for optimal performance and power use.cvulkan)limits-optimalBufferCopyRowPitchAlignment "optimalBufferCopyRowPitchAlignment: is the optimal buffer row pitch alignment in bytes for  ,  ,  , and  . Row pitch is the number of bytes between texels with the same X coordinate in adjacent rows (Y coordinates differ by one). The per texel alignment requirements are enforced, but applications should use the optimal alignment for optimal performance and power use.cvulkanlimits-nonCoherentAtomSize nonCoherentAtomSize is the size and alignment in bytes that bounds concurrent access to  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-device-hostaccesshost-mapped device memory. 1For all bitmasks of b, the sample count limits defined above represent the minimum supported sample counts for each image type. Individual images may support additional sample counts, which are queried using d as described in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-supported-sample-countsSupported Sample Counts.cvulkanresidencyStandard2DBlockShape is / if the physical device will access all single-sample 2D sparse resources using the standard sparse image block shapes (based on image format), as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-sparseblockshapessingle2Standard Sparse Image Block Shapes (Single Sample) table. If this property is not supported the value returned in the imageGranularity member of the @/ structure for single-sample 2D images is not required to match the standard sparse image block dimensions listed in the table.cvulkan(residencyStandard2DMultisampleBlockShape is / if the physical device will access all multisample 2D sparse resources using the standard sparse image block shapes (based on image format), as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-sparseblockshapesmsaa)Standard Sparse Image Block Shapes (MSAA) table. If this property is not supported, the value returned in the imageGranularity member of the @- structure for multisample 2D images is not required to match the standard sparse image block dimensions listed in the table.cvulkanresidencyStandard3DBlockShape is / if the physical device will access all 3D sparse resources using the standard sparse image block shapes (based on image format), as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-sparseblockshapessingle2Standard Sparse Image Block Shapes (Single Sample) table. If this property is not supported, the value returned in the imageGranularity member of the @! structure for 3D images is not required to match the standard sparse image block dimensions listed in the table.cvulkanresidencyAlignedMipSize is / if images with mip level dimensions that are not integer multiples of the corresponding dimensions of the sparse image block may be placed in the mip tail. If this property is not reported, only mip levels with dimensions smaller than the imageGranularity member of the @ structure will be placed in the mip tail. If this property is reported the implementation is allowed to return  in the flags member of @, indicating that mip level dimensions that are not integer multiples of the corresponding dimensions of the sparse image block will be placed in the mip tail.cvulkanresidencyNonResidentStrict' specifies whether the physical device can consistently access non-resident regions of a resource. If this property is /, access to non-resident regions of resources will be guaranteed to return values as if the resource was populated with 0; writes to non-resident regions will be discarded.cvulkanfeatures-robustBufferAccess robustBufferAccess specifies that accesses to buffers are bounds-checked against the range of the buffer descriptor (as determined by  ::range, ::range6, or the size of the buffer). Out of bounds accesses must not cause application termination, and the effects of shader loads, stores, and atomics must conform to an implementation-dependent behavior as described below.A buffer access is considered to be out of bounds if any of the following are true:The pointer was formed by OpImageTexelPointer and the coordinate is less than zero or greater than or equal to the number of whole elements in the bound range.The pointer was not formed by OpImageTexelPointer and the object pointed to is not wholly contained within the bound range. This includes accesses performed via variable pointers where the buffer descriptor being accessed cannot be statically determined. Uninitialized pointers and pointers equal to OpConstantNull are treated as pointing to a zero-sized object, so all accesses through such pointers are considered to be out of bounds. Buffer accesses through buffer device addresses are not bounds-checked. If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cooperativeMatrixRobustBufferAccess#cooperativeMatrixRobustBufferAccess5 feature is not enabled, then accesses using OpCooperativeMatrixLoadNV and OpCooperativeMatrixStoreNV may not be bounds-checked.Note If a SPIR-V OpLoad instruction loads a structure and the tail end of the structure is out of bounds, then all members of the structure are considered out of bounds even if the members at the end are not statically used.If  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2robustBufferAccess2 is not enabled and any buffer access is determined to be out of bounds, then any other access of the same type (load, store, or atomic) to the same buffer that accesses an address less than 16 bytes away from the out of bounds address may& also be considered out of bounds.If the access is a load that reads from the same memory locations as a prior store in the same shader invocation, with no other intervening accesses to the same memory locations in that shader invocation, then the result of the load may be the value stored by the store instruction, even if the access is out of bounds. If the load is Volatile!, then an out of bounds load must, return the appropriate out of bounds value.,Accesses to descriptors written with a  resource or view are not considered to be out of bounds. Instead, each type of descriptor access defines a specific behavior for accesses to a null descriptor.Out-of-bounds buffer loads will return any of the following values:-If the access is to a uniform buffer and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2robustBufferAccess2 is enabled, loads of offsets between the end of the descriptor range and the end of the descriptor range rounded up to a multiple of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-robustUniformBufferAccessSizeAlignment&robustUniformBufferAccessSizeAlignment bytes must return either zero values or the contents of the memory at the offset being loaded. Loads of offsets past the descriptor range rounded up to a multiple of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-robustUniformBufferAccessSizeAlignment&robustUniformBufferAccessSizeAlignment bytes must return zero values.-If the access is to a storage buffer and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2robustBufferAccess2 is enabled, loads of offsets between the end of the descriptor range and the end of the descriptor range rounded up to a multiple of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-robustStorageBufferAccessSizeAlignment&robustStorageBufferAccessSizeAlignment bytes must return either zero values or the contents of the memory at the offset being loaded. Loads of offsets past the descriptor range rounded up to a multiple of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-robustStorageBufferAccessSizeAlignment&robustStorageBufferAccessSizeAlignment bytes must return zero values. Similarly, stores to addresses between the end of the descriptor range and the end of the descriptor range rounded up to a multiple of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-robustStorageBufferAccessSizeAlignment&robustStorageBufferAccessSizeAlignment bytes may be discarded.Non-atomic accesses to storage buffers that are a multiple of 32 bits may be decomposed into 32-bit accesses that are individually bounds-checked.,If the access is to an index buffer and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2robustBufferAccess2 is enabled, zero values must be returned.If the access is to a uniform texel buffer or storage texel buffer and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2robustBufferAccess2 is enabled, zero values must be returned, and then  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-conversion-to-rgbaConversion to RGBA2 is applied based on the buffer view@s format.Values from anywhere within the memory range(s) bound to the buffer (possibly including bytes of memory past the end of the buffer, up to the end of the bound range).Zero values, or (0,0,0,x) vectors for vector reads where x is a valid value represented in the type of the vector components and may be any of:0, 1, or the maximum representable positive integer value, for signed or unsigned integer components)0.0 or 1.0, for floating-point componentsOut-of-bounds writes may modify values within the memory range(s) bound to the buffer, but must not modify any other memory.If  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2robustBufferAccess2& is enabled, out of bounds writes must not modify any memory.Out-of-bounds atomics may modify values within the memory range(s) bound to the buffer, but must not modify any other memory, and return an undefined value.If  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2robustBufferAccess2' is enabled, out of bounds atomics must: not modify any memory, and return an undefined value.If  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2robustBufferAccess2 is disabled, vertex input attributes are considered out of bounds if the offset of the attribute in the bound vertex buffer range plus the size of the attribute is greater than either:vertexBufferRangeSize, if  bindingStride == 0; or(vertexBufferRangeSize - (vertexBufferRangeSize %  bindingStride))where vertexBufferRangeSize is the byte size of the memory range bound to the vertex buffer binding and  bindingStride is the byte stride of the corresponding vertex input binding. Further, if any vertex input attribute using a specific vertex input binding is out of bounds, then all vertex input attributes using that vertex input binding for that vertex shader invocation are considered out of bounds.If a vertex input attribute is out of bounds, it will be assigned one of the following values:Values from anywhere within the memory range(s) bound to the buffer, converted according to the format of the attribute.Zero values, format converted according to the format of the attribute.6Zero values, or (0,0,0,x) vectors, as described above.If  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2robustBufferAccess2 is enabled, vertex input attributes are considered out of bounds if the offset of the attribute in the bound vertex buffer range plus the size of the attribute is greater than the byte size of the memory range bound to the vertex buffer binding.6If a vertex input attribute is out of bounds, the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-extractionraw data extracted are zero values, and missing G, B, or A components are  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-extractionfilled with (0,0,1).If robustBufferAccess is not enabled, applications must) not perform out of bounds accesses.cvulkanfeatures-fullDrawIndexUint32 fullDrawIndexUint32 specifies the full 32-bit range of indices is supported for indexed draw calls when using a  of . maxDrawIndexedIndexValue! is the maximum index value that may be used (aside from the primitive restart index, which is always 232-1 when the  is "). If this feature is supported, maxDrawIndexedIndexValue must be 232-1; otherwise it must be no smaller than 224-1. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxDrawIndexedIndexValuemaxDrawIndexedIndexValue.cvulkanfeatures-imageCubeArray imageCubeArray' specifies whether image views with a   of   can) be created, and that the corresponding SampledCubeArray and ImageCubeArray SPIR-V capabilities can be used in shader code.cvulkanfeatures-independentBlend independentBlend specifies whether the 8 settings are controlled independently per-attachment. If this feature is not enabled, the 8% settings for all color attachments must' be identical. Otherwise, a different 8 can. be provided for each bound color attachment.cvulkanfeatures-geometryShader geometryShader specifies whether geometry shaders are supported. If this feature is not enabled, the ' and    enum values must: not be used. This also specifies whether shader modules can declare the Geometry capability.cvulkanfeatures-tessellationShader tessellationShader specifies whether tessellation control and evaluation shaders are supported. If this feature is not enabled, the ', ',   ,   , and  enum values must: not be used. This also specifies whether shader modules can declare the  Tessellation capability.cvulkanfeatures-sampleRateShading sampleRateShading specifies whether  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshadingSample Shading and multisample interpolation are supported. If this feature is not enabled, the sampleShadingEnable member of the 8 structure must be set to / and the minSampleShading member is ignored. This also specifies whether shader modules can declare the SampleRateShading capability.cvulkanfeatures-dualSrcBlend  dualSrcBlend specifies whether blend operations which take two sources are supported. If this feature is not enabled, the , , , and  enum values must= not be used as source or destination blending factors. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb.cvulkanfeatures-logicOp logicOp specifies whether logic operations are supported. If this feature is not enabled, the  logicOpEnable member of the 8 structure must be set to / , and the logicOp member is ignored.cvulkanfeatures-multiDrawIndirect multiDrawIndirect specifies whether multiple draw indirect is supported. If this feature is not enabled, the  drawCount parameter to the  and  commands must be 0 or 1. The maxDrawIndirectCount member of the 8 structure must3 also be 1 if this feature is not supported. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxDrawIndirectCountmaxDrawIndirectCount.cvulkan"features-drawIndirectFirstInstance drawIndirectFirstInstance7 specifies whether indirect drawing calls support the  firstInstance1 parameter. If this feature is not enabled, the  firstInstance member of all 6 and 6' structures that are provided to the  and  commands must be 0.cvulkanfeatures-depthClamp  depthClamp specifies whether depth clamping is supported. If this feature is not enabled, the depthClampEnable member of the 8 structure must be set to /. Otherwise, setting depthClampEnable to / will enable depth clamping.cvulkanfeatures-depthBiasClamp depthBiasClamp specifies whether depth bias clamping is supported. If this feature is not enabled, the depthBiasClamp member of the 8 structure must be set to 0.0 unless the $ dynamic state is enabled, and the depthBiasClamp parameter to   must be set to 0.0.cvulkanfeatures-fillModeNonSolid fillModeNonSolid specifies whether point and wireframe fill modes are supported. If this feature is not enabled, the  and  enum values must not be used.cvulkanfeatures-depthBounds  depthBounds specifies whether depth bounds tests are supported. If this feature is not enabled, the depthBoundsTestEnable member of the 8 structure must be set to /. When depthBoundsTestEnable is set to /, the minDepthBounds and maxDepthBounds members of the 8 structure are ignored.cvulkanfeatures-wideLines  wideLines specifies whether lines with width other than 1.0 are supported. If this feature is not enabled, the  lineWidth member of the 8 structure must be set to 1.0 unless the $ dynamic state is enabled, and the  lineWidth parameter to   must be set to 1.0. When this feature is supported, the range and granularity of supported line widths are indicated by the lineWidthRange and lineWidthGranularity members of the 8 structure, respectively.cvulkanfeatures-largePoints  largePoints specifies whether points with size greater than 1.0 are supported. If this feature is not enabled, only a point size of 1.0 written by a shader is supported. The range and granularity of supported point sizes are indicated by the pointSizeRange and pointSizeGranularity members of the 8 structure, respectively.cvulkanfeatures-alphaToOne  alphaToOne specifies whether the implementation is able to replace the alpha value of the fragment shader color output in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-covgMultisample Coverage fragment operation. If this feature is not enabled, then the alphaToOneEnable member of the 8 structure must be set to /. Otherwise setting alphaToOneEnable to /$ will enable alpha-to-one behavior.cvulkanfeatures-multiViewport  multiViewport specifies whether more than one viewport is supported. If this feature is not enabled:The  viewportCount and  scissorCount members of the 8 structure must be set to 1.The  firstViewport and  viewportCount parameters to the   command must& be set to 0 and 1, respectively.The  firstScissor and  scissorCount parameters to the  command must& be set to 0 and 1, respectively.The exclusiveScissorCount member of the  structure must be set to 0 or 1.The firstExclusiveScissor and exclusiveScissorCount parameters to the  command must! be set to 0 and 1, respectively.cvulkanfeatures-samplerAnisotropy samplerAnisotropy specifies whether anisotropic filtering is supported. If this feature is not enabled, the anisotropyEnable member of the > structure must be /.cvulkanfeatures-textureCompressionETC2 textureCompressionETC2 specifies whether all of the ETC2 and EAC compressed texture formats are supported. If this feature is enabled, then the #, # and # features must be supported in optimalTilingFeatures for the following formats: $$$$$$$$$$To query for additional properties, or if the feature is not enabled, d and d can be used to check for supported properties of individual formats as normal.cvulkan#features-textureCompressionASTC_LDR textureCompressionASTC_LDR specifies whether all of the ASTC LDR compressed texture formats are supported. If this feature is enabled, then the #, # and # features must be supported in optimalTilingFeatures for the following formats:$$$$$$$$$$$$$$$$$$$$$$$$$$$$To query for additional properties, or if the feature is not enabled, d and d can be used to check for supported properties of individual formats as normal.cvulkanfeatures-textureCompressionBC textureCompressionBC specifies whether all of the BC compressed texture formats are supported. If this feature is enabled, then the #, # and # features must be supported in optimalTilingFeatures for the following formats:%%%%%%%%%%%%%$$$To query for additional properties, or if the feature is not enabled, d and d can be used to check for supported properties of individual formats as normal.cvulkanfeatures-occlusionQueryPrecise occlusionQueryPrecise specifies whether occlusion queries returning actual sample counts are supported. Occlusion queries are created in a 0  by specifying the  queryType of $ in the ; structure which is passed to ; 4. If this feature is enabled, queries of this type can enable " in the flags parameter to  . If this feature is not supported, the implementation supports only boolean occlusion queries. When any samples are passed, boolean queries will return a non-zero result value, otherwise a result value of zero is returned. When this feature is enabled and " is set, occlusion queries will report the actual number of samples passed.cvulkan features-pipelineStatisticsQuery pipelineStatisticsQuery specifies whether the pipeline statistics queries are supported. If this feature is not enabled, queries of type $ cannot be created, and none of the  bits can be set in the pipelineStatistics member of the ; structure.cvulkan'features-vertexPipelineStoresAndAtomics vertexPipelineStoresAndAtomics specifies whether storage buffers and images support stores and atomic operations in the vertex, tessellation, and geometry shader stages. If this feature is not enabled, all storage image, storage texel buffer, and storage buffer variables used by these stages in shader modules must be decorated with the  NonWritable decoration (or the readonly memory qualifier in GLSL).cvulkan!features-fragmentStoresAndAtomics fragmentStoresAndAtomics specifies whether storage buffers and images support stores and atomic operations in the fragment shader stage. If this feature is not enabled, all storage image, storage texel buffer, and storage buffer variables used by the fragment stage in shader modules must be decorated with the  NonWritable decoration (or the readonly memory qualifier in GLSL).cvulkan/features-shaderTessellationAndGeometryPointSize &shaderTessellationAndGeometryPointSize specifies whether the  PointSize built-in decoration is available in the tessellation control, tessellation evaluation, and geometry shader stages. If this feature is not enabled, members decorated with the  PointSize built-in decoration must not be read from or written to and all points written from a tessellation or geometry shader will have a size of 1.0. This also specifies whether shader modules can declare the TessellationPointSize capability for tessellation control and evaluation shaders, or if the shader modules can declare the GeometryPointSize capability for geometry shaders. An implementation supporting this feature must" also support one or both of the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellationShader or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometryShader features.cvulkan"features-shaderImageGatherExtended shaderImageGatherExtended specifies whether the extended set of image gather instructions are available in shader code. If this feature is not enabled, the OpImage*Gather! instructions do not support the Offset and  ConstOffsets7 operands. This also specifies whether shader modules can declare the ImageGatherExtended capability.cvulkan*features-shaderStorageImageExtendedFormats !shaderStorageImageExtendedFormats specifies whether all the @storage image extended formats@ below are supported; if this feature is supported, then the # must be supported in optimalTilingFeatures for the following formats:%%%%%%%%&%%%%&%%%&%%%%&Note!shaderStorageImageExtendedFormats feature only adds a guarantee of format support, which is specified for the whole physical device. Therefore enabling or disabling the feature via   has no practical effect.To query for additional properties, or if the feature is not supported, d and d can be used to check for supported properties of individual formats, as usual rules allow.%, %, and % from StorageImageExtendedFormats9 SPIR-V capability, are already covered by core Vulkan  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-mandatory-features-32bitmandatory format support.cvulkan&features-shaderStorageImageMultisample shaderStorageImageMultisample specifies whether multisampled storage images are supported. If this feature is not enabled, images that are created with a usage that includes ! must be created with samples equal to .. This also specifies whether shader modules can declare the StorageImageMultisample and  ImageMSArray capabilities.cvulkan,features-shaderStorageImageReadWithoutFormat #shaderStorageImageReadWithoutFormat specifies whether storage images require a format qualifier to be specified when reading from storage images. If this feature is not enabled, the  OpImageRead instruction must not have an  OpTypeImage of Unknown.. This also specifies whether shader modules can declare the StorageImageReadWithoutFormat capability.cvulkan-features-shaderStorageImageWriteWithoutFormat $shaderStorageImageWriteWithoutFormat specifies whether storage images require a format qualifier to be specified when writing to storage images. If this feature is not enabled, the  OpImageWrite instruction must not have an  OpTypeImage of Unknown.. This also specifies whether shader modules can declare the StorageImageWriteWithoutFormat capability.cvulkan0features-shaderUniformBufferArrayDynamicIndexing 'shaderUniformBufferArrayDynamicIndexing. specifies whether arrays of uniform buffers can be indexed by dynamically uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of   or   must be indexed only by constant integral expressions when aggregated into arrays in shader code. This also specifies whether shader modules can declare the !UniformBufferArrayDynamicIndexing capability.cvulkan/features-shaderSampledImageArrayDynamicIndexing &shaderSampledImageArrayDynamicIndexing9 specifies whether arrays of samplers or sampled images can be indexed by dynamically uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of  ,  , or   must be indexed only by constant integral expressions when aggregated into arrays in shader code. This also specifies whether shader modules can declare the  SampledImageArrayDynamicIndexing capability.cvulkan0features-shaderStorageBufferArrayDynamicIndexing 'shaderStorageBufferArrayDynamicIndexing. specifies whether arrays of storage buffers can be indexed by dynamically uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of   or   must be indexed only by constant integral expressions when aggregated into arrays in shader code. This also specifies whether shader modules can declare the !StorageBufferArrayDynamicIndexing capability.cvulkan/features-shaderStorageImageArrayDynamicIndexing &shaderStorageImageArrayDynamicIndexing- specifies whether arrays of storage images can be indexed by dynamically uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of   must be indexed only by constant integral expressions when aggregated into arrays in shader code. This also specifies whether shader modules can declare the  StorageImageArrayDynamicIndexing capability.cvulkanfeatures-shaderClipDistance shaderClipDistance specifies whether clip distances are supported in shader code. If this feature is not enabled, any members decorated with the  ClipDistance built-in decoration must not be read from or written to in shader modules. This also specifies whether shader modules can declare the  ClipDistance capability.cvulkanfeatures-shaderCullDistance shaderCullDistance specifies whether cull distances are supported in shader code. If this feature is not enabled, any members decorated with the  CullDistance built-in decoration must not be read from or written to in shader modules. This also specifies whether shader modules can declare the  CullDistance capability.cvulkanfeatures-shaderFloat64  shaderFloat64 specifies whether 64-bit floats (doubles) are supported in shader code. If this feature is not enabled, 64-bit floating-point types must not be used in shader code. This also specifies whether shader modules can declare the Float64 capability. Declaring and using 64-bit floats is enabled for all storage classes that SPIR-V allows with the Float64 capability.cvulkanfeatures-shaderInt64  shaderInt64 specifies whether 64-bit integers (signed and unsigned) are supported in shader code. If this feature is not enabled, 64-bit integer types must not be used in shader code. This also specifies whether shader modules can declare the Int64 capability. Declaring and using 64-bit integers is enabled for all storage classes that SPIR-V allows with the Int64 capability.cvulkanfeatures-shaderInt16  shaderInt16 specifies whether 16-bit integers (signed and unsigned) are supported in shader code. If this feature is not enabled, 16-bit integer types must not be used in shader code. This also specifies whether shader modules can declare the Int16 capability. However, this only enables a subset of the storage classes that SPIR-V allows for the Int16 SPIR-V capability: Declaring and using 16-bit integers in the Private,  Workgroup! (for non-Block variables), and Function storage classes is enabled, while declaring them in the interface storage classes (e.g., UniformConstant, Uniform,  StorageBuffer, Input, Output, and  PushConstant) is not enabled.cvulkan features-shaderResourceResidency shaderResourceResidency specifies whether image operations that return resource residency information are supported in shader code. If this feature is not enabled, the OpImageSparse* instructions must not be used in shader code. This also specifies whether shader modules can declare the SparseResidency7 capability. The feature requires at least one of the sparseResidency* features to be supported.cvulkanfeatures-shaderResourceMinLod shaderResourceMinLod specifies whether image operations specifying the minimum resource LOD are supported in shader code. If this feature is not enabled, the MinLod image operand must not be used in shader code. This also specifies whether shader modules can declare the MinLod capability.cvulkanfeatures-sparseBinding  sparseBinding$ specifies whether resource memory can be managed at opaque sparse block level instead of at the object level. If this feature is not enabled, resource memory must1 be bound only on a per-object basis using the 5 and 5- commands. In this case, buffers and images must not be created with  and " set in the flags member of the  and 16 structures, respectively. Otherwise resource memory can be managed as described in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-sparseresourcefeaturesSparse Resource Features.cvulkanfeatures-sparseResidencyBuffer sparseResidencyBuffer specifies whether the device can access partially resident buffers. If this feature is not enabled, buffers must not be created with   set in the flags member of the  structure.cvulkanfeatures-sparseResidencyImage2D sparseResidencyImage2D specifies whether the device can access partially resident 2D images with 1 sample per pixel. If this feature is not enabled, images with an  imageType of ! and samples set to  must not be created with " set in the flags member of the 1 structure.cvulkanfeatures-sparseResidencyImage3D sparseResidencyImage3D specifies whether the device can access partially resident 3D images. If this feature is not enabled, images with an  imageType of ! must not be created with " set in the flags member of the 1 structure.cvulkan features-sparseResidency2Samples sparseResidency2Samples( specifies whether the physical device can access partially resident 2D images with 2 samples per pixel. If this feature is not enabled, images with an  imageType of ! and samples set to  must not be created with " set in the flags member of the 1 structure.cvulkan features-sparseResidency4Samples sparseResidency4Samples( specifies whether the physical device can access partially resident 2D images with 4 samples per pixel. If this feature is not enabled, images with an  imageType of ! and samples set to  must not be created with " set in the flags member of the 1 structure.cvulkan features-sparseResidency8Samples sparseResidency8Samples( specifies whether the physical device can access partially resident 2D images with 8 samples per pixel. If this feature is not enabled, images with an  imageType of ! and samples set to  must not be created with " set in the flags member of the 1 structure.dvulkan!features-sparseResidency16Samples sparseResidency16Samples( specifies whether the physical device can access partially resident 2D images with 16 samples per pixel. If this feature is not enabled, images with an  imageType of ! and samples set to  must not be created with " set in the flags member of the 1 structure.dvulkanfeatures-sparseResidencyAliased sparseResidencyAliased( specifies whether the physical device can correctly access data aliased into multiple locations. If this feature is not enabled, the  and " enum values must not be used in flags members of the  and 1 structures, respectively.dvulkan features-variableMultisampleRate variableMultisampleRate specifies whether all pipelines that will be bound to a command buffer during a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments!subpass which uses no attachments must have the same value for 8::rasterizationSamples . If set to /, the implementation supports variable multisample rates in a subpass which uses no attachments. If set to /., then all pipelines bound in such a subpass must have the same multisample rate. This has no effect in situations where a subpass uses any attachments.dvulkanfeatures-inheritedQueries inheritedQueries/ specifies whether a secondary command buffer may% be executed while a query is active.dvulkanlinearTilingFeatures is a bitmask of #9 specifying features supported by images created with a tiling parameter of !.dvulkanoptimalTilingFeatures is a bitmask of #9 specifying features supported by images created with a tiling parameter of !.dvulkanbufferFeatures is a bitmask of #+ specifying features supported by buffers.dvulkansize/ is the total memory size in bytes in the heap.dvulkanflags is a bitmask of  * specifying attribute flags for the heap.dvulkan propertyFlags is a bitmask of  % of properties for this memory type.dvulkan heapIndex describes which memory heap this memory type corresponds to, and must be less than memoryHeapCount from the 7 structure.dvulkanmemoryTypeCount( is the number of valid elements in the  memoryTypes array.dvulkan memoryTypes is an array of , : structures describing the  memory types that can be used to access memory allocated from the heaps specified by  memoryHeaps.dvulkanmemoryHeapCount( is the number of valid elements in the  memoryHeaps array.dvulkan memoryHeaps is an array of , ; structures describing the  memory heaps from which memory can be allocated.dvulkan queueFlags is a bitmask of = indicating capabilities of the queues in this queue family.dvulkan queueCount is the unsigned integer count of queues in this queue family. Each queue family must support at least one queue.dvulkantimestampValidBits is the unsigned integer count of meaningful bits in the timestamps written via   or  . The valid range for the count is 36..64 bits, or a value of 0, indicating no support for timestamps. Bits outside the valid range are guaranteed to be zeros.dvulkanminImageTransferGranularity is the minimum granularity supported for image transfer operations on the queues in this queue family.dvulkanpNext is NULL6 or a pointer to a structure extending this structure.dvulkanflags is reserved for future use.dvulkanpApplicationInfo is NULL or a pointer to a ? structure. If not NULL, this information helps implementations recognize behavior inherent to classes of applications. ? is defined in detail below.dvulkanppEnabledLayerNames is a pointer to an array of enabledLayerCount null-terminated UTF-8 strings containing the names of layers to enable for the created instance. The layers are loaded in the order they are listed in this array, with the first array element being the closest to the application, and the last array element being the closest to the driver. See the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-layers section for further details.dvulkanppEnabledExtensionNames is a pointer to an array of enabledExtensionCount null-terminated UTF-8 strings containing the names of extensions to enable.dvulkanpApplicationName is NULL or is a pointer to a null-terminated UTF-8 string containing the name of the application.dvulkanapplicationVersion is an unsigned integer variable containing the developer-supplied version number of the application.dvulkan pEngineName is NULL or is a pointer to a null-terminated UTF-8 string containing the name of the engine (if any) used to create the application.dvulkan engineVersion is an unsigned integer variable containing the developer-supplied version number of the engine used to create the application.dvulkan apiVersion must be the highest version of Vulkan that the application is designed to use, encoded as described in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-coreversions-versionnumbers). The patch version number specified in  apiVersion is ignored when creating an instance object. Only the major and minor versions of the instance must match those requested in  apiVersion.dvulkan apiVersion is the version of Vulkan supported by the device, encoded as described in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-coreversions-versionnumbers.dvulkan driverVersion/ is the vendor-specified version of the driver.dvulkanvendorID is a unique identifier for the vendor% (see below) of the physical device.dvulkandeviceID is a unique identifier for the physical device among devices available from the vendor.dvulkan deviceType is a  specifying the type of device.dvulkan deviceName is an array of , char containing a null-terminated UTF-8 string which is the name of the device.dvulkanpipelineCacheUUID is an array of , uint8_t values representing a universally unique identifier for the device.dvulkanlimits is the 8 structure specifying device-specific limits of the physical device. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limitsLimits for details.dvulkansparseProperties is the 5 structure specifying various sparse related properties of the physical device. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-physicalpropsSparse Properties for details.dvulkan/vkCreateInstance - Create a new Vulkan instance Descriptiond4 verifies that the requested layers exist. If not, d will return . Next d verifies that the requested extensions are supported (e.g. in the implementation or in any enabled instance layer) and if any requested extension is not supported, d must return . After verifying and enabling the instance layers and extensions the  object is created and returned to the application. If a requested extension is only supported by a layer, both the layer and the extension need to be specified at d# time for the creation to succeed. Valid Usage3VUID-vkCreateInstance-ppEnabledExtensionNames-01388 All  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-extensions-extensiondependenciesrequired extensions% for each extension in the <::ppEnabledExtensionNames list must" also be present in that listValid Usage (Implicit)+VUID-vkCreateInstance-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid < structure*VUID-vkCreateInstance-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure)VUID-vkCreateInstance-pInstance-parameter  pInstance must be a valid pointer to a  handle Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , VUID-vkEnumeratePhysicalDevices-pPhysicalDeviceCount-parameter pPhysicalDeviceCount must be a valid pointer to a uint32_t value:VUID-vkEnumeratePhysicalDevices-pPhysicalDevices-parameter! If the value referenced by pPhysicalDeviceCount is not 0 , and pPhysicalDevices is not NULL, pPhysicalDevices must( be a valid pointer to an array of pPhysicalDeviceCount  handles Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, dvulkan=vkGetDeviceProcAddr - Return a function pointer for a command Parameters2The table below defines the various use cases for d and expected return value (@fp@ is @function pointer@) for each case. A valid returned function pointer (@fp@) must not be NULL. Description*The returned function pointer is of type m, and must be cast to the type of the command being queried before use. The function pointer must only be called with a dispatchable object (the first parameter) that is device or a child of device.devicepName return valueNULL*1 undefinedinvalid device*1 undefineddeviceNULL undefineddevice !core device-level Vulkan command2fp3  device (enabled extension device-level commands2fp3 !any other case, not covered above NULL d behavior 1"*" means any representable value for the parameter (including valid values, invalid values, and NULL).2In this function, device-level excludes all physical-device-level commands.3The returned function pointer must only be called with a dispatchable object (the first parameter) that is device or a child of device e.g. , 0  , or 0 .Valid Usage (Implicit)See Alsom, dvulkan?vkGetInstanceProcAddr - Return a function pointer for a command Descriptiond itself is obtained in a platform- and loader- specific manner. Typically, the loader library will export this command as a function symbol, so applications can link against the loader library, or load it dynamically and look up the symbol using platform-specific APIs.2The table below defines the various use cases for d and expected return value (@fp@ is @function pointer@) for each case. A valid returned function pointer (@fp@) must not be NULL.*The returned function pointer is of type m, and must> be cast to the type of the command being queried before use.instancepName return value *1NULL undefined invalid non-NULL instance*1  undefined NULLdfp4NULLfpNULL,fpNULL3fpNULLdfpinstancecore Vulkan commandfp2instance(enabled instance extension commands for instancefp2instance)available device extension3 commands for instancefp2!any other case, not covered above NULL d behavior 1"*" means any representable value for the parameter (including valid values, invalid values, and NULL).2The returned function pointer must only be called with a dispatchable object (the first parameter) that is instance or a child of instance, e.g. , , , 0  , or 0 .3An @available device extension@ is a device extension supported by any physical device enumerated by instance.4Starting with Vulkan 1.2, d can resolve itself with a NULL instance pointer.Valid Usage (Implicit)-VUID-vkGetInstanceProcAddr-instance-parameter If instance is not NULL, instance must be a valid  handle*VUID-vkGetInstanceProcAddr-pName-parameter pName must' be a null-terminated UTF-8 stringSee Alsom, dvulkanvkGetPhysicalDeviceProperties - Returns properties of a physical deviceValid Usage (Implicit)See Also, 6dvulkanvkGetPhysicalDeviceQueueFamilyProperties - Reports properties of the queues of the specified physical device DescriptionIf pQueueFamilyProperties is NULL>, then the number of queue families available is returned in pQueueFamilyPropertyCount. Implementations must0 support at least one queue family. Otherwise, pQueueFamilyPropertyCount must point to a variable set by the user to the number of elements in the pQueueFamilyProperties array, and on return the variable is overwritten with the number of structures actually written to pQueueFamilyProperties. If pQueueFamilyPropertyCount? is less than the number of queue families available, at most pQueueFamilyPropertyCount structures will be written.Valid Usage (Implicit)VUID-vkGetPhysicalDeviceQueueFamilyProperties-physicalDevice-parameter physicalDevice must be a valid  handleVUID-vkGetPhysicalDeviceQueueFamilyProperties-pQueueFamilyPropertyCount-parameter pQueueFamilyPropertyCount must be a valid pointer to a uint32_t valueVUID-vkGetPhysicalDeviceQueueFamilyProperties-pQueueFamilyProperties-parameter! If the value referenced by pQueueFamilyPropertyCount is not 0 , and pQueueFamilyProperties is not NULL, pQueueFamilyProperties must# be a valid pointer to an array of pQueueFamilyPropertyCount 4 structuresSee Also, 4dvulkanvkGetPhysicalDeviceMemoryProperties - Reports memory information for the specified physical deviceValid Usage (Implicit)See Also, 7dvulkanvkGetPhysicalDeviceFeatures - Reports capabilities of a physical deviceValid Usage (Implicit)See Also, 9dvulkanvkGetPhysicalDeviceFormatProperties - Lists physical device@s format capabilitiesValid Usage (Implicit)See AlsoK, >, dvulkanvkGetPhysicalDeviceImageFormatProperties - Lists physical device@s image format capabilities DescriptionThe format, type, tiling, usage, and flags parameters correspond to parameters that would be consumed by 1  (as members of 1).If format< is not a supported image format, or if the combination of format, type, tiling, usage, and flags$ is not supported for images, then d returns .9The limitations on an image format that are reported by d" have the following property: if usage1 and usage2 of type S are such that the bits set in usage1! are a subset of the bits set in usage2, and flags1 and flags2 of type N are such that the bits set in flags1! are a subset of the bits set in flags2, then the limitations for usage1 and flags1 must- be no more strict than the limitations for usage2 and flags2, for all values of format, type, and tiling. Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee AlsoK, N, =, P, Q, S,  dvulkan pCreateInfo is a pointer to a <1 structure controlling creation of the instance.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.dvulkaninstance* is the handle of the instance to destroy.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.dvulkaninstance; is a handle to a Vulkan instance previously created with d.dvulkan)VUID-vkGetDeviceProcAddr-device-parameter device must be a valid  handlevulkan(VUID-vkGetDeviceProcAddr-pName-parameter pName must# be a null-terminated UTF-8 stringdvulkaninstance is the instance that the function pointer will be compatible with, or NULL, for commands not dependent on any instance.vulkanpName& is the name of the command to obtain.dvulkanphysicalDevice is the handle to the physical device whose properties will be queried.;VUID-vkGetPhysicalDeviceProperties-physicalDevice-parameter physicalDevice must be a valid  handledvulkanphysicalDevice is the handle to the physical device whose properties will be queried.dvulkanphysicalDevice& is the handle to the device to query.VUID-vkGetPhysicalDeviceMemoryProperties-physicalDevice-parameter physicalDevice must be a valid  handledvulkanphysicalDevice is the physical device from which to query the supported features.9VUID-vkGetPhysicalDeviceFeatures-physicalDevice-parameter physicalDevice must be a valid  handledvulkanphysicalDevice is the physical device from which to query the format properties.VUID-vkGetPhysicalDeviceFormatProperties-physicalDevice-parameter physicalDevice must be a valid  handlevulkanformat, is the format whose properties are queried.9VUID-vkGetPhysicalDeviceFormatProperties-format-parameter format must be a valid K valuedvulkanphysicalDevice is the physical device from which to query the image capabilities.VUID-vkGetPhysicalDeviceImageFormatProperties-physicalDevice-parameter physicalDevice must be a valid  handlevulkanformat is a K7 value specifying the image format, corresponding to 1::format.>VUID-vkGetPhysicalDeviceImageFormatProperties-format-parameter format must be a valid K valuevulkantype is a Q5 value specifying the image type, corresponding to 1:: imageType.VUID-vkGetPhysicalDeviceImageFormatProperties-tiling-parameter tiling must be a valid P valuevulkanusage is a bitmask of R specifying the intended usage of the image, corresponding to 1::usage.=VUID-vkGetPhysicalDeviceImageFormatProperties-usage-parameter usage must be a valid combination of R valuesVUID-vkGetPhysicalDeviceImageFormatProperties-usage-requiredbitmask usage must not be 0vulkanflags is a bitmask of M specifying additional parameters of the image, corresponding to 1::flags.=VUID-vkGetPhysicalDeviceImageFormatProperties-flags-parameter flags must be a valid combination of M values+++++,,4ddddd5cccccc6dddddddddd7ddddd8bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc9ccccccccccccccccccccccccccccccccccccccccccccccccccccdddd:ddd;ddddddd?ddddddK$&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$M""""""""""""""""NP!!!!Q!!!!R!!!!!!!!!!!!Sbcmn111111 !!!!!!!!!!!!!!!##############################dddddddddddddddddddddddd6dddddddddd?dddddddddd=dddddd9ccccccccccccccccccccccccccccccccccccccccccccccccccccdddd5cccccc8bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc111111+++++,,!!Q!!!!!!!P!!!!!!!!!!!K$&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ R!!!!!!!!!!!!!!!!!!!!!!!SM"""""""""""""""""""""""""""""""N#########################################################bc!!!!!!!!!!nmNone( #$&'(./0289:<>?0+vulkanVkExternalMemoryHandleTypeFlagBitsNV - Bitmask specifying external memory handle typesSee AlsovulkanVkExternalImageFormatPropertiesNV - Structure specifying external image format propertiesSee Alsoe, , =, eevulkanVkExternalMemoryFeatureFlagBitsNV - Bitmask specifying external memory featuresSee Also, e, eevulkanimageFormatProperties$ will be filled in as when calling  , but the values returned may7 vary depending on the external handle type requested.evulkanexternalMemoryFeatures is a bitmask of e>, indicating properties of the external memory handle type (e::externalHandleType?) being queried, or 0 if the external memory handle type is 0.evulkanexportFromImportedHandleTypes is a bitmask of ; containing a bit set for every external handle type that may be used to create memory from which the handles of the type specified in e::externalHandleType can; be exported, or 0 if the external memory handle type is 0.evulkancompatibleHandleTypes is a bitmask of ; containing a bit set for every external handle type that may be specified simultaneously with the handle type specified by e::externalHandleType when calling 4 1, or 0 if the external memory handle type is 0. compatibleHandleTypes will always contain e::externalHandleTypeevulkane specifies that the implementation supports importing handles of the specified type.evulkane specifies that the implementation supports exporting handles of the specified type.evulkane7 specifies that external memory of the specified type must be created as a dedicated allocation when used in the manner specified.evulkane+ specifies a handle to memory returned by  IDXGIResource::GetSharedHandle().evulkane4 specifies a valid NT handle to memory returned by "IDXGIResource1::CreateSharedHandle3, or a handle duplicated from such a handle using DuplicateHandle().evulkane, specifies a handle to memory returned by  .evulkane, specifies a handle to memory returned by  ., or one duplicated from such a handle using DuplicateHandle().evulkanvkGetPhysicalDeviceExternalImageFormatPropertiesNV - determine image capabilities compatible with external memory handle types DescriptionIf externalHandleType is 0, 5pExternalImageFormatProperties->imageFormatProperties, will return the same values as a call to  , and the other members of pExternalImageFormatProperties will all be 0. Otherwise, they are filled in as described for . Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , K, N, P, Q, S, evulkanphysicalDevice is the physical device from which to query the image capabilitiesVUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-physicalDevice-parameter physicalDevice must be a valid  handlevulkanformat( is the image format, corresponding to 1::format.VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-format-parameter format must be a valid K valuevulkantype& is the image type, corresponding to 1:: imageType.VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-type-parameter type must be a valid Q valuevulkantiling( is the image tiling, corresponding to 1::tiling.VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-tiling-parameter tiling must be a valid P valuevulkanusage7 is the intended usage of the image, corresponding to 1::usage.VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-usage-parameter usage must be a valid combination of R valuesVUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-usage-requiredbitmask usage must not be 0vulkanflags is a bitmask describing additional parameters of the image, corresponding to 1::flags.VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-flags-parameter flags must be a valid combination of M valuesvulkanexternalHandleType! is either one of the bits from , or 0.VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-externalHandleType-parameter externalHandleType must be a valid combination of  valueseeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeNone( #$&'(./0289:<>?0ȾvulkanVkImportMemoryWin32HandleInfoNV - import Win32 memory created on the same physical device DescriptionIf  handleType is 01, this structure is ignored by consumers of the 4 structure it is chained from.Valid Usage (Implicit)See Also, vulkanVkExportMemoryWin32HandleInfoNV - specify security attributes and access rights for Win32 memory handles Description(If this structure is not present, or if  pAttributes is set to NULL, default security descriptor values will be used, and child processes created by the application will not inherit the handle, as described in the MSDN documentation for @Synchronization Object Security and Access Rights@1. Further, if the structure is not present, the access rights will beDXGI_SHARED_RESOURCE_READ | DXGI_SHARED_RESOURCE_WRITE 1 https://docs.microsoft.com/en-us/windows/win32/sync/synchronization-object-security-and-access-rightsValid Usage (Implicit)0VUID-VkExportMemoryWin32HandleInfoNV-sType-sType sType must be  :VUID-VkExportMemoryWin32HandleInfoNV-pAttributes-parameter If  pAttributes is not NULL,  pAttributes must$ be a valid pointer to a valid e valueSee Alsoevulkan pAttributes is a pointer to a Windows e9 structure specifying security attributes of the handle.evulkandwAccess is a e( specifying access rights of the handle.evulkan handleType is 0 or a 0 value specifying the type of memory handle in handle.5VUID-VkImportMemoryWin32HandleInfoNV-handleType-01327  handleType must not have more than one bit set9VUID-VkImportMemoryWin32HandleInfoNV-handleType-parameter  handleType must be a valid combination of  valuesevulkanhandle is a Windows  referring to the memory.1VUID-VkImportMemoryWin32HandleInfoNV-handle-01328 handle must8 be a valid handle to memory, obtained as specified by  handleTypeevulkanvkGetMemoryWin32HandleNV - retrieve Win32 handle to a device memory object Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , evulkandevice, is the logical device that owns the memory..VUID-vkGetMemoryWin32HandleNV-device-parameter device must be a valid  handlevulkanmemory is the  object..VUID-vkGetMemoryWin32HandleNV-memory-parameter memory must be a valid  handle+VUID-vkGetMemoryWin32HandleNV-memory-parent memory must2 have been created, allocated, or retrieved from devicevulkan handleType is a bitmask of  containing a single bit specifying the type of handle requested..VUID-vkGetMemoryWin32HandleNV-handleType-01326  handleType must be a flag specified in :: handleTypes when allocating memory2VUID-vkGetMemoryWin32HandleNV-handleType-parameter  handleType must be a valid combination of  values8VUID-vkGetMemoryWin32HandleNV-handleType-requiredbitmask  handleType must not be 0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeNone( #$&'(./0289:<>?05vulkanVkMemoryWin32HandlePropertiesKHR - Properties of External Memory Windows HandlesValid Usage (Implicit)See Also, evulkanVkMemoryGetWin32HandleInfoKHR - Structure describing a Win32 handle semaphore export operation Description>The properties of the handle returned depend on the value of  handleType. See  for a description of the properties of the defined external memory handle types. Valid Usage3VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00662  handleType must have been included in P:: handleTypes when memory was created3VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00663 If  handleType is defined as an NT handle, e must be called no more than once for each valid unique combination of memory and  handleType3VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00664  handleType must4 be defined as an NT handle or a global share handleValid Usage (Implicit).VUID-VkMemoryGetWin32HandleInfoKHR-sType-sType sType must be  .VUID-VkMemoryGetWin32HandleInfoKHR-pNext-pNext pNext must be NULL3VUID-VkMemoryGetWin32HandleInfoKHR-memory-parameter memory must be a valid  handle7VUID-VkMemoryGetWin32HandleInfoKHR-handleType-parameter  handleType must be a valid  valueSee Also, , , evulkanVkImportMemoryWin32HandleInfoKHR - Import Win32 memory created on the same physical device DescriptionImporting memory object payloads from Windows handles does not transfer ownership of the handle to the Vulkan implementation. For handle types defined as NT handles, the application must% release handle ownership using the  CloseHandle system call when the handle is no longer needed. For handle types defined as NT handles, the imported memory object holds a reference to its payload.NoteNon-NT handle import operations do not add a reference to their associated payload. If the original object owning the payload is destroyed, all resources and handles sharing that payload will become invalid. Applications can import the same payload into multiple instances of Vulkan, into the same instance from which it was exported, and multiple times into a given Vulkan instance. In all cases, each import operation must create a distinct  object. Valid Usage6VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00658 If  handleType is not 0, it must3 be supported for import, as reported by Q or Q2VUID-VkImportMemoryWin32HandleInfoKHR-handle-00659 The memory from which handle& was exported, or the memory named by name must have been created on the same underlying physical device as device6VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00660 If  handleType is not 0, it must9 be defined as an NT handle or a global share handle6VUID-VkImportMemoryWin32HandleInfoKHR-handleType-01439 If  handleType is not , , , or , name must be NULL6VUID-VkImportMemoryWin32HandleInfoKHR-handleType-01440 If  handleType is not 0 and handle is NULL, name must< name a valid memory resource of the type specified by  handleType6VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00661 If  handleType is not 0 and name is NULL, handle must1 be a valid handle of the type specified by  handleType2VUID-VkImportMemoryWin32HandleInfoKHR-handle-01441 if handle is not NULL, name must be NULL2VUID-VkImportMemoryWin32HandleInfoKHR-handle-01518 If handle is not NULL, it must" obey any requirements listed for  handleType in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-memory-handle-types-compatibility*external memory handle types compatibility0VUID-VkImportMemoryWin32HandleInfoKHR-name-01519 If name is not NULL, it must" obey any requirements listed for  handleType in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-memory-handle-types-compatibility*external memory handle types compatibilityValid Usage (Implicit)1VUID-VkImportMemoryWin32HandleInfoKHR-sType-sType sType must be  :VUID-VkImportMemoryWin32HandleInfoKHR-handleType-parameter If  handleType is not 0,  handleType must be a valid  valueSee Also, vulkanVkExportMemoryWin32HandleInfoKHR - Structure specifying additional attributes of Windows handles exported from a memory DescriptionIf P is not included in the same pNext" chain, this structure is ignored.If P is included in the pNext chain of 4 with a Windows  handleType, but either  is not included in the pNext chain, or if it is but  pAttributes is set to NULL, default security descriptor values will be used, and child processes created by the application will not inherit the handle, as described in the MSDN documentation for @Synchronization Object Security and Access Rights@1. Further, if the structure is not present, the access rights used depend on the handle type.#For handles of the following types:The implementation must ensure the access rights allow read and write access to the memory.#For handles of the following types:The access rights must be:  GENERIC_ALL 1 https://docs.microsoft.com/en-us/windows/win32/sync/synchronization-object-security-and-access-rights Valid Usage7VUID-VkExportMemoryWin32HandleInfoKHR-handleTypes-00657 If P:: handleTypes does not include , , , or  , a  structure must not be included in the pNext chain of 4Valid Usage (Implicit)1VUID-VkExportMemoryWin32HandleInfoKHR-sType-sType sType must be  ;VUID-VkExportMemoryWin32HandleInfoKHR-pAttributes-parameter If  pAttributes is not NULL,  pAttributes must) be a valid pointer to a valid e valueSee Alsoevulkanmemory= is the memory object from which the handle will be exported.evulkan handleType is a 0 value specifying the type of handle requested.evulkanmemoryTypeBits is a bitmask containing one bit set for every memory type which the specified windows handle can be imported as.evulkan pAttributes is a pointer to a Windows e9 structure specifying security attributes of the handle.evulkandwAccess is a e) specifying access rights of the handle.evulkanname is a null-terminated UTF-16 string to associate with the payload referenced by NT handles exported from the created memory.evulkan handleType is a  value specifying the type of handle or name.evulkanhandle is NULL" or the external handle to import.evulkanname is NULL or a null-terminated UTF-16 string naming the payload to import.evulkanvkGetMemoryWin32HandleKHR - Get a Windows HANDLE for a memory object DescriptionFor handle types defined as NT handles, the handles returned by e are owned by the application and hold a reference to their payload. To avoid leaking resources, the application must% release ownership of them using the  CloseHandle- system call when they are no longer needed.NoteNon-NT handle types do not add a reference to their associated payload. If the original object owning the payload is destroyed, all resources and handles sharing that payload will become invalid. Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, evulkanvkGetMemoryWin32HandlePropertiesKHR - Get Properties of External Memory Win32 Handles Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , evulkandevice is the logical device that created the device memory being exported./VUID-vkGetMemoryWin32HandleKHR-device-parameter device must be a valid  handlevulkanpGetWin32HandleInfo is a pointer to a : structure containing parameters of the export operation.?1/ZvulkanVkSemaphoreGetWin32HandleInfoKHR - Structure describing a Win32 handle semaphore export operation Description>The properties of the handle returned depend on the value of  handleType. See  for a description of the properties of the defined external semaphore handle types. Valid Usage6VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01126  handleType must have been included in R:: handleTypes when the  semaphore@s current payload was created6VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01127 If  handleType" is defined as an NT handle, f must be called no more than once for each valid unique combination of  semaphore and  handleType5VUID-VkSemaphoreGetWin32HandleInfoKHR-semaphore-01128  semaphore must not currently have its payload replaced by an imported payload as described below in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importingImporting Semaphore Payloads unless that imported payload@s handle type was included in S::exportFromImportedHandleTypes for  handleType6VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01129 If  handleType refers to a handle type with copy payload transference semantics, as defined below in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importingImporting Semaphore Payloads , there must be no queue waiting on  semaphore6VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01130 If  handleType refers to a handle type with copy payload transference semantics,  semaphore must) be signaled, or have an associated  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signalingsemaphore signal operation pending execution6VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01131  handleType must9 be defined as an NT handle or a global share handleValid Usage (Implicit)1VUID-VkSemaphoreGetWin32HandleInfoKHR-sType-sType sType must be  1VUID-VkSemaphoreGetWin32HandleInfoKHR-pNext-pNext pNext must be NULL9VUID-VkSemaphoreGetWin32HandleInfoKHR-semaphore-parameter  semaphore must be a valid x handle:VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-parameter  handleType must be a valid  valueSee Also, x, , fvulkanVkImportSemaphoreWin32HandleInfoKHR - Structure specifying Windows handle to import to a semaphore DescriptionThe handle types supported by  handleType are: Handle Type  Transference Permanence Supported ReferenceTemporary,Permanent ReferenceTemporary,Permanent ReferenceTemporary,PermanentHandle Types Supported by  Valid Usage9VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01140  handleType must! be a value included in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphore-handletypes-win32Handle Types Supported by table 9VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01466 If  handleType is not  or , name must be NULL9VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01467 If handle is NULL, name must name a valid synchronization primitive of the type specified by  handleType9VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01468 If name is NULL, handle must1 be a valid handle of the type specified by  handleType5VUID-VkImportSemaphoreWin32HandleInfoKHR-handle-01469 If handle is not NULL, name must be NULL5VUID-VkImportSemaphoreWin32HandleInfoKHR-handle-01542 If handle is not NULL, it must' obey any requirements listed for  handleType in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility-external semaphore handle types compatibility3VUID-VkImportSemaphoreWin32HandleInfoKHR-name-01543 If name is not NULL, it must" obey any requirements listed for  handleType in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility-external semaphore handle types compatibility9VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-03261 If  handleType is  or  , the =::flags field must( match that of the semaphore from which handle or name was exported9VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-03262 If  handleType is  or , the n:: semaphoreType field must( match that of the semaphore from which handle or name was exported4VUID-VkImportSemaphoreWin32HandleInfoKHR-flags-03322 If flags contains  , the n:: semaphoreType( field of the semaphore from which handle or name was exported must not be  Valid Usage (Implicit)4VUID-VkImportSemaphoreWin32HandleInfoKHR-sType-sType sType must be  4VUID-VkImportSemaphoreWin32HandleInfoKHR-pNext-pNext pNext must be NULLVUID-VkExportSemaphoreWin32HandleInfoKHR-pAttributes-parameter If  pAttributes is not NULL,  pAttributes must) be a valid pointer to a valid e valueSee AlsovulkanVkD3D12FenceSubmitInfoKHR - Structure specifying values for Direct3D 12 fence-backed semaphores DescriptionIf the semaphore in <::pWaitSemaphores or <::pSignalSemaphores corresponding to an entry in pWaitSemaphoreValues or pSignalSemaphoreValues* respectively does not currently have a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-payloadspayload7 referring to a Direct3D 12 fence, the implementation must ignore the value in the pWaitSemaphoreValues or pSignalSemaphoreValues entry.Note;As the introduction of the external semaphore handle type  predates that of timeline semaphores, support for importing semaphore payloads from external handles of that type into semaphores created (implicitly or explicitly) with a   of   is preserved for backwards compatibility. However, applications should prefer importing such handle types into semaphores created with a   of  , and use the n structure instead of the  structure to specify the values to use when waiting for and signaling such semaphores. Valid Usage=VUID-VkD3D12FenceSubmitInfoKHR-waitSemaphoreValuesCount-00079 waitSemaphoreValuesCount must be the same value as <::waitSemaphoreCount , where < is in the pNext chain of this  structure?VUID-VkD3D12FenceSubmitInfoKHR-signalSemaphoreValuesCount-00080 signalSemaphoreValuesCount must be the same value as <::signalSemaphoreCount , where < is in the pNext chain of this  structureValid Usage (Implicit)*VUID-VkD3D12FenceSubmitInfoKHR-sType-sType sType must be  =VUID-VkD3D12FenceSubmitInfoKHR-pWaitSemaphoreValues-parameter If waitSemaphoreValuesCount is not 0, and pWaitSemaphoreValues is not NULL, pWaitSemaphoreValues must( be a valid pointer to an array of waitSemaphoreValuesCount uint64_t values?VUID-VkD3D12FenceSubmitInfoKHR-pSignalSemaphoreValues-parameter If signalSemaphoreValuesCount is not 0 , and pSignalSemaphoreValues is not NULL, pSignalSemaphoreValues must( be a valid pointer to an array of signalSemaphoreValuesCount uint64_t valuesSee Alsoevulkan semaphore4 is the semaphore from which state will be exported.evulkan handleType is a 0 value specifying the type of handle requested.evulkanwaitSemaphoreValuesCount6 is the number of semaphore wait values specified in pWaitSemaphoreValues.evulkanpWaitSemaphoreValues is a pointer to an array of waitSemaphoreValuesCount- values for the corresponding semaphores in <::pWaitSemaphores to wait for.evulkansignalSemaphoreValuesCount8 is the number of semaphore signal values specified in pSignalSemaphoreValues.evulkanpSignalSemaphoreValues is a pointer to an array of signalSemaphoreValuesCount- values for the corresponding semaphores in <::pSignalSemaphores to set when signaled.evulkan pAttributes is a pointer to a Windows e9 structure specifying security attributes of the handle.evulkandwAccess is a e) specifying access rights of the handle.evulkanname is a null-terminated UTF-16 string to associate with the underlying synchronization primitive referenced by NT handles exported from the created semaphore.evulkan semaphore: is the semaphore into which the payload will be imported.fvulkanflags is a bitmask of   specifying additional parameters for the semaphore payload import operation.fvulkan handleType is a  value specifying the type of handle.fvulkanhandle is NULL" or the external handle to import.fvulkanname is NULL or a null-terminated UTF-16 string naming the underlying synchronization primitive to import.fvulkanvkGetSemaphoreWin32HandleKHR - Get a Windows HANDLE for a semaphore DescriptionFor handle types defined as NT handles, the handles returned by f are owned by the application. To avoid leaking resources, the application must& release ownership of them using the  CloseHandle, system call when they are no longer needed.,Exporting a Windows handle from a semaphore may have side effects depending on the transference of the specified handle type, as described in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importingImporting Semaphore Payloads. Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, fvulkanvkImportSemaphoreWin32HandleKHR - Import a semaphore from a Windows HANDLE DescriptionImporting a semaphore payload from Windows handles does not transfer ownership of the handle to the Vulkan implementation. For handle types defined as NT handles, the application must release ownership using the  CloseHandle1 system call when the handle is no longer needed. Applications can import the same semaphore payload into multiple instances of Vulkan, into the same instance from which it was exported, and multiple times into a given Vulkan instance. Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, fvulkandevice is the logical device that created the semaphore being exported.2VUID-vkGetSemaphoreWin32HandleKHR-device-parameter device must be a valid  handlevulkanpGetWin32HandleInfo is a pointer to a : structure containing parameters of the export operation.?VUID-vkGetSemaphoreWin32HandleKHR-pGetWin32HandleInfo-parameter pGetWin32HandleInfo must be a valid pointer to a valid  structurefvulkandevice2 is the logical device that created the semaphore.5VUID-vkImportSemaphoreWin32HandleKHR-device-parameter device must be a valid  handlevulkanpImportSemaphoreWin32HandleInfo is a pointer to a ; structure specifying the semaphore and import parameters.VUID-vkImportSemaphoreWin32HandleKHR-pImportSemaphoreWin32HandleInfo-parameter pImportSemaphoreWin32HandleInfo must be a valid pointer to a valid  structure eeeeffffeeeeeeeeeeeeeeeffff ffeffffeeeeeeeeeeeeeefefeeeNone( #$&'(./0289:<>?1X|vulkan(VkImportFenceWin32HandleInfoKHR - (None) DescriptionThe handle types supported by  handleType are: Handle Type  Transference Permanence Supported ReferenceTemporary,Permanent ReferenceTemporary,PermanentHandle Types Supported by  Valid Usage5VUID-VkImportFenceWin32HandleInfoKHR-handleType-01457  handleType must! be a value included in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fence-handletypes-win32Handle Types Supported by table5VUID-VkImportFenceWin32HandleInfoKHR-handleType-01459 If  handleType is not , name must be NULL5VUID-VkImportFenceWin32HandleInfoKHR-handleType-01460 If handle is NULL, name must name a valid synchronization primitive of the type specified by  handleType5VUID-VkImportFenceWin32HandleInfoKHR-handleType-01461 If name is NULL, handle must1 be a valid handle of the type specified by  handleType1VUID-VkImportFenceWin32HandleInfoKHR-handle-01462 If handle is not NULL, name must be NULL1VUID-VkImportFenceWin32HandleInfoKHR-handle-01539 If handle is not NULL, it must" obey any requirements listed for  handleType in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-fence-handle-types-compatibility)external fence handle types compatibility/VUID-VkImportFenceWin32HandleInfoKHR-name-01540 If name is not NULL, it must" obey any requirements listed for  handleType in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-fence-handle-types-compatibility)external fence handle types compatibilityValid Usage (Implicit)0VUID-VkImportFenceWin32HandleInfoKHR-sType-sType sType must be  0VUID-VkImportFenceWin32HandleInfoKHR-pNext-pNext pNext must be NULL4VUID-VkImportFenceWin32HandleInfoKHR-fence-parameter fence must be a valid  handle4VUID-VkImportFenceWin32HandleInfoKHR-flags-parameter flags must be a valid combination of   valuesHost SynchronizationHost access to fence must be externally synchronizedSee Also, , , , fvulkanVkFenceGetWin32HandleInfoKHR - Structure describing a Win32 handle fence export operation Description>The properties of the handle returned depend on the value of  handleType. See  for a description of the properties of the defined external fence handle types. Valid Usage2VUID-VkFenceGetWin32HandleInfoKHR-handleType-01448  handleType must have been included in N:: handleTypes when the fence@s current payload was created2VUID-VkFenceGetWin32HandleInfoKHR-handleType-01449 If  handleType" is defined as an NT handle, f must be called no more than once for each valid unique combination of fence and  handleType-VUID-VkFenceGetWin32HandleInfoKHR-fence-01450 fence must not currently have its payload replaced by an imported payload as described below in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-importingImporting Fence Payloads unless that imported payload@s handle type was included in O::exportFromImportedHandleTypes for  handleType2VUID-VkFenceGetWin32HandleInfoKHR-handleType-01451 If  handleType refers to a handle type with copy payload transference semantics, fence must) be signaled, or have an associated  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-signalingfence signal operation pending execution2VUID-VkFenceGetWin32HandleInfoKHR-handleType-01452  handleType must4 be defined as an NT handle or a global share handleValid Usage (Implicit)-VUID-VkFenceGetWin32HandleInfoKHR-sType-sType sType must be  -VUID-VkFenceGetWin32HandleInfoKHR-pNext-pNext pNext must be NULL1VUID-VkFenceGetWin32HandleInfoKHR-fence-parameter fence must be a valid  handle6VUID-VkFenceGetWin32HandleInfoKHR-handleType-parameter  handleType must be a valid  valueSee Also, , , fvulkanVkExportFenceWin32HandleInfoKHR - Structure specifying additional attributes of Windows handles exported from a fence DescriptionIf N is not inluded in the same pNext" chain, this structure is ignored.If N is included in the pNext chain of - with a Windows  handleType, but either  is not included in the pNext chain, or if it is but  pAttributes is set to NULL, default security descriptor values will be used, and child processes created by the application will not inherit the handle, as described in the MSDN documentation for @Synchronization Object Security and Access Rights@1. Further, if the structure is not present, the access rights will beDXGI_SHARED_RESOURCE_READ | DXGI_SHARED_RESOURCE_WRITE#for handles of the following types: 1 https://docs.microsoft.com/en-us/windows/win32/sync/synchronization-object-security-and-access-rights Valid Usage6VUID-VkExportFenceWin32HandleInfoKHR-handleTypes-01447 If N:: handleTypes does not include  , a  structure must not be included in the pNext chain of -Valid Usage (Implicit)0VUID-VkExportFenceWin32HandleInfoKHR-sType-sType sType must be  :VUID-VkExportFenceWin32HandleInfoKHR-pAttributes-parameter If  pAttributes is not NULL,  pAttributes must) be a valid pointer to a valid e valueSee Alsofvulkanfence0 is the fence from which state will be exported.fvulkan handleType is a 0 value specifying the type of handle requested.fvulkan pAttributes is a pointer to a Windows e9 structure specifying security attributes of the handle.fvulkandwAccess is a e) specifying access rights of the handle.fvulkanname is a null-terminated UTF-16 string to associate with the underlying synchronization primitive referenced by NT handles exported from the created fence.fvulkanfence4 is the fence into which the state will be imported.fvulkanflags is a bitmask of   specifying additional parameters for the fence payload import operation.fvulkan handleType is a  value specifying the type of handle.fvulkanhandle is NULL" or the external handle to import.fvulkanname is NULL or a null-terminated UTF-16 string naming the underlying synchronization primitive to import.fvulkan;vkGetFenceWin32HandleKHR - Get a Windows HANDLE for a fence DescriptionFor handle types defined as NT handles, the handles returned by f are owned by the application. To avoid leaking resources, the application must& release ownership of them using the  CloseHandle, system call when they are no longer needed.(Exporting a Windows handle from a fence may have side effects depending on the transference of the specified handle type, as described in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-importingImporting Fence Payloads. Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, fvulkanvkImportFenceWin32HandleKHR - Import a fence from a Windows HANDLE DescriptionImporting a fence payload from Windows handles does not transfer ownership of the handle to the Vulkan implementation. For handle types defined as NT handles, the application must release ownership using the  CloseHandle1 system call when the handle is no longer needed. Applications can import the same fence payload into multiple instances of Vulkan, into the same instance from which it was exported, and multiple times into a given Vulkan instance. Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, fvulkandevice= is the logical device that created the fence being exported..VUID-vkGetFenceWin32HandleKHR-device-parameter device must be a valid  handlevulkanpGetWin32HandleInfo is a pointer to a : structure containing parameters of the export operation.;VUID-vkGetFenceWin32HandleKHR-pGetWin32HandleInfo-parameter pGetWin32HandleInfo must be a valid pointer to a valid  structurefvulkandevice. is the logical device that created the fence.1VUID-vkImportFenceWin32HandleKHR-device-parameter device must be a valid  handlevulkanpImportFenceWin32HandleInfo is a pointer to a 7 structure specifying the fence and import parameters.VUID-vkImportFenceWin32HandleKHR-pImportFenceWin32HandleInfo-parameter pImportFenceWin32HandleInfo must be a valid pointer to a valid  structurefffffffffffffeeefffffffffffffffffffffffffeeeNone( #$&'(./0289:<>?1] vulkanVkExternalMemoryImageCreateInfoNV - Specify that an image may be backed by external memoryValid Usage (Implicit)See Also, vulkanVkExportMemoryAllocateInfoNV - Specify memory handle types that may be exportedValid Usage (Implicit)See Also, fvulkan handleTypes is a bitmask of 2 specifying one or more memory handle types that may% be exported. Multiple handle types may be requested for the same allocation as long as they are compatible, as reported by  .7VUID-VkExportMemoryAllocateInfoNV-handleTypes-parameter  handleTypes must be a valid combination of  valuesfvulkan handleTypes is zero, or a bitmask of 6 specifying one or more external memory handle types.?1(vulkanVkSparseImageFormatProperties2 - Structure specifying sparse image format propertiesValid Usage (Implicit)See Also, , f,  vulkanVkQueueFamilyProperties2 - Structure providing information about a queue familyValid Usage (Implicit))VUID-VkQueueFamilyProperties2-sType-sType sType must be  )VUID-VkQueueFamilyProperties2-pNext-pNext Each pNext: member of any structure (including this one) in the pNext chain must be either NULL* or a pointer to a valid instance of , , , or https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoQueueFamilyProperties2KHR VkVideoQueueFamilyProperties2KHR*VUID-VkQueueFamilyProperties2-sType-unique The sType" value of each struct in the pNext chain must be uniqueSee Also4, , f,  vulkanVkPhysicalDeviceSparseImageFormatInfo2 - Structure specifying sparse image format inputsValid Usage (Implicit)See AlsoK, P, Q, S, b, , f,  vulkanVkPhysicalDeviceProperties2 - Structure specifying physical device properties DescriptionThe pNext chain of this structure is used to extend the structure with properties defined by extensions.Valid Usage (Implicit),VUID-VkPhysicalDeviceProperties2-sType-sType sType must be  ,VUID-VkPhysicalDeviceProperties2-pNext-pNext Each pNext: member of any structure (including this one) in the pNext chain must be either NULL* or a pointer to a valid instance of , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceSubpassShadingPropertiesHUAWEI.VkPhysicalDeviceSubpassShadingPropertiesHUAWEI, , , , ,  , or -VUID-VkPhysicalDeviceProperties2-sType-unique The sType" value of each struct in the pNext chain must be uniqueSee Also6, , f,  vulkanVkPhysicalDeviceMemoryProperties2 - Structure specifying physical device memory propertiesValid Usage (Implicit)2VUID-VkPhysicalDeviceMemoryProperties2-sType-sType sType must be  2VUID-VkPhysicalDeviceMemoryProperties2-pNext-pNext pNext must be NULL* or a pointer to a valid instance of 3VUID-VkPhysicalDeviceMemoryProperties2-sType-unique The sType" value of each struct in the pNext chain must be uniqueSee Also7, , f,  vulkanVkPhysicalDeviceImageFormatInfo2 - Structure specifying image creation parameters DescriptionThe members of " correspond to the arguments to  , with sType and pNext added for extensibility. Valid Usage2VUID-VkPhysicalDeviceImageFormatInfo2-tiling-02249 tiling must be  if and only if the pNext chain includes 2VUID-VkPhysicalDeviceImageFormatInfo2-tiling-02313 If tiling is  and flags contains , then the pNext chain must include a  structure with non-zero viewFormatCountValid Usage (Implicit)1VUID-VkPhysicalDeviceImageFormatInfo2-sType-sType sType must be  1VUID-VkPhysicalDeviceImageFormatInfo2-pNext-pNext Each pNext: member of any structure (including this one) in the pNext chain must be either NULL* or a pointer to a valid instance of , , , , or 2VUID-VkPhysicalDeviceImageFormatInfo2-sType-unique The sType" value of each struct in the pNext chain must be unique6VUID-VkPhysicalDeviceImageFormatInfo2-format-parameter format must be a valid K value4VUID-VkPhysicalDeviceImageFormatInfo2-type-parameter type must be a valid Q value6VUID-VkPhysicalDeviceImageFormatInfo2-tiling-parameter tiling must be a valid P value5VUID-VkPhysicalDeviceImageFormatInfo2-usage-parameter usage must be a valid combination of   values;VUID-VkPhysicalDeviceImageFormatInfo2-usage-requiredbitmask usage must not be 05VUID-VkPhysicalDeviceImageFormatInfo2-flags-parameter flags must be a valid combination of  valuesSee AlsoK, N, P, Q, S, , f,  vulkanVkPhysicalDeviceFeatures2 - Structure describing the fine-grained features that can be supported by an implementation DescriptionThe pNext chain of this structure is used to extend the structure with features defined by extensions. This structure can be used in f or can be included in the pNext chain of a   structure, in which case it controls which features are enabled in the device in lieu of pEnabledFeatures.Valid Usage (Implicit)See Also9, , f,  vulkanVkImageFormatProperties2 - Structure specifying an image format properties Description%If the combination of parameters to f4 is not supported by the implementation for use in 1 , then all members of imageFormatProperties will be filled with zero.NoteFilling imageFormatProperties with zero for unsupported formats is an exception to the usual rule that output structures have undefined contents on error. This exception was unintentional, but is preserved for backwards compatibility. This exeption only applies to imageFormatProperties, not sType, pNext", or any structures chained from pNext.Valid Usage (Implicit))VUID-VkImageFormatProperties2-sType-sType sType must be  )VUID-VkImageFormatProperties2-pNext-pNext Each pNext: member of any structure (including this one) in the pNext chain must be either NULL* or a pointer to a valid instance of , , , , or *VUID-VkImageFormatProperties2-sType-unique The sType" value of each struct in the pNext chain must be uniqueSee Also=, , f,  vulkanVkFormatProperties2 - Structure specifying image format propertiesValid Usage (Implicit)$VUID-VkFormatProperties2-sType-sType sType must be  $VUID-VkFormatProperties2-pNext-pNext Each pNext: member of any structure (including this one) in the pNext chain must be either NULL* or a pointer to a valid instance of ,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileKHRVkVideoProfileKHR, or https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfilesKHRVkVideoProfilesKHR%VUID-VkFormatProperties2-sType-unique The sType" value of each struct in the pNext chain must be uniqueSee Also>, , f,  fvulkanformat is the image format. structure describing features supported by the requested format.fvulkanpNext is NULL6 or a pointer to a structure extending this structure.fvulkan properties is a 6 structure describing properties of the physical device. This structure is written with the same values as if it were written by  .fvulkanpNext is NULL6 or a pointer to a structure extending this structure.fvulkanfeatures is a 9 structure describing the fine-grained features of the Vulkan 1.0 API.fvulkanvkGetPhysicalDeviceFeatures2 - Reports capabilities of a physical device DescriptionEach structure in  pFeatures and its pNext chain contains members corresponding to fine-grained features. f writes each member to a boolean value indicating whether that feature is supported.Valid Usage (Implicit)See Also, fvulkanvkGetPhysicalDeviceProperties2 - Returns properties of a physical device DescriptionEach structure in  pProperties and its pNext chain contains members corresponding to implementation-dependent properties, behaviors, or limits. f fills in each member to specify the corresponding value for the implementation.Valid Usage (Implicit)See Also, fvulkanvkGetPhysicalDeviceFormatProperties2 - Lists physical device@s format capabilities Descriptionf behaves similarly to  8, with the ability to return extended information in a pNext chain of output structures.Valid Usage (Implicit)See AlsoK, , fvulkanvkGetPhysicalDeviceImageFormatProperties2 - Lists physical device@s image format capabilities Descriptionf behaves similarly to  8, with the ability to return extended information in a pNext chain of output structures. Valid Usage:VUID-vkGetPhysicalDeviceImageFormatProperties2-pNext-01868 If the pNext chain of pImageFormatProperties includes a  structure, the pNext chain of pImageFormatInfo must include a  structure with  handleType set to B Valid Usage (Implicit)VUID-vkGetPhysicalDeviceImageFormatProperties2-physicalDevice-parameter physicalDevice must be a valid  handleVUID-vkGetPhysicalDeviceImageFormatProperties2-pImageFormatInfo-parameter pImageFormatInfo must$ be a valid pointer to a valid  structureVUID-vkGetPhysicalDeviceImageFormatProperties2-pImageFormatProperties-parameter pImageFormatProperties must be a valid pointer to a  structure Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , fvulkanvkGetPhysicalDeviceQueueFamilyProperties2 - Reports properties of the queues of the specified physical device Descriptionf behaves similarly to  8, with the ability to return extended information in a pNext chain of output structures.Valid Usage (Implicit)VUID-vkGetPhysicalDeviceQueueFamilyProperties2-physicalDevice-parameter physicalDevice must be a valid  handleVUID-vkGetPhysicalDeviceQueueFamilyProperties2-pQueueFamilyPropertyCount-parameter pQueueFamilyPropertyCount must be a valid pointer to a uint32_t valueVUID-vkGetPhysicalDeviceQueueFamilyProperties2-pQueueFamilyProperties-parameter! If the value referenced by pQueueFamilyPropertyCount is not 0 , and pQueueFamilyProperties is not NULL, pQueueFamilyProperties must# be a valid pointer to an array of pQueueFamilyPropertyCount  structuresSee Also, fvulkanvkGetPhysicalDeviceMemoryProperties2 - Reports memory information for the specified physical device Descriptionf behaves similarly to  8, with the ability to return extended information in a pNext chain of output structures.Valid Usage (Implicit)See Also, fvulkanvkGetPhysicalDeviceSparseImageFormatProperties2 - Retrieve properties of an image format applied to sparse images Descriptionf behaves identically to @ , with the ability to return extended information by adding extending structures to the pNext chain of its  pProperties parameter.Valid Usage (Implicit)VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-physicalDevice-parameter physicalDevice must be a valid  handleVUID-vkGetPhysicalDeviceSparseImageFormatProperties2-pFormatInfo-parameter  pFormatInfo must$ be a valid pointer to a valid  structureVUID-vkGetPhysicalDeviceSparseImageFormatProperties2-pPropertyCount-parameter pPropertyCount must be a valid pointer to a uint32_t valueVUID-vkGetPhysicalDeviceSparseImageFormatProperties2-pProperties-parameter! If the value referenced by pPropertyCount is not 0 , and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pPropertyCount  structuresSee Also, , fvulkanphysicalDevice is the physical device from which to query the supported features.:VUID-vkGetPhysicalDeviceFeatures2-physicalDevice-parameter physicalDevice must be a valid  handlefvulkanphysicalDevice is the handle to the physical device whose properties will be queried.?1]gggggggggggggggggggggggggggggggggggggggggggggggggggggggggg None( #$&'(./0289:<>?2h2vulkanVkDeviceQueueCreateInfo - Structure specifying parameters of a newly created device queue Valid Usage3VUID-VkDeviceQueueCreateInfo-queueFamilyIndex-00381 queueFamilyIndex must be less than pQueueFamilyPropertyCount returned by  -VUID-VkDeviceQueueCreateInfo-queueCount-00382  queueCount must# be less than or equal to the  queueCount member of the  % structure, as returned by   in the pQueueFamilyProperties[queueFamilyIndex]3VUID-VkDeviceQueueCreateInfo-pQueuePriorities-00383 Each element of pQueuePriorities must be between 0.0 and 1.0 inclusive(VUID-VkDeviceQueueCreateInfo-flags-02861 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-protectedMemoryprotected memory' feature is not enabled, the ' bit of flags must not be setValid Usage (Implicit)(VUID-VkDeviceQueueCreateInfo-sType-sType sType must be  (VUID-VkDeviceQueueCreateInfo-pNext-pNext pNext must be NULL/ or a pointer to a valid instance of )VUID-VkDeviceQueueCreateInfo-sType-unique The sType" value of each struct in the pNext chain must be unique,VUID-VkDeviceQueueCreateInfo-flags-parameter flags must% be a valid combination of ' values7VUID-VkDeviceQueueCreateInfo-pQueuePriorities-parameter pQueuePriorities must( be a valid pointer to an array of  queueCount float values3VUID-VkDeviceQueueCreateInfo-queueCount-arraylength  queueCount must be greater than 0See Also3, ', 3vulkanVkDeviceCreateInfo - Structure specifying parameters of a newly created device Valid Usage.VUID-VkDeviceCreateInfo-queueFamilyIndex-02802 The queueFamilyIndex member of each element of pQueueCreateInfos must be unique within pQueueCreateInfos2, except that two members can share the same queueFamilyIndex if one is a protected-capable queue and one is not a protected-capable queue#VUID-VkDeviceCreateInfo-pNext-00373 If the pNext chain includes a  structure, then pEnabledFeatures must be NULL5VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-01840 ppEnabledExtensionNames must not contain VK_AMD_negative_viewport_height5VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-03328 ppEnabledExtensionNames must not contain both VK_KHR_buffer_device_address and VK_EXT_buffer_device_address#VUID-VkDeviceCreateInfo-pNext-04748 if the pNext chain includes a  structure and ::bufferDeviceAddress is VK_TRUE, ppEnabledExtensionNames must not contain VK_EXT_buffer_device_address#VUID-VkDeviceCreateInfo-pNext-02829 If the pNext chain includes a  structure, then it must not include a , , , , , or  structure#VUID-VkDeviceCreateInfo-pNext-02830 If the pNext chain includes a  structure, then it must not include a , , , , , , , , , , , , or  structure1VUID-VkDeviceCreateInfo-ppEnabledExtensions-04476 If ppEnabledExtensions contains "VK_KHR_shader_draw_parameters" and the pNext chain includes a  structure, then ::shaderDrawParameters must be /1VUID-VkDeviceCreateInfo-ppEnabledExtensions-02831 If ppEnabledExtensions contains "VK_KHR_draw_indirect_count" and the pNext chain includes a  structure, then ::drawIndirectCount must be /1VUID-VkDeviceCreateInfo-ppEnabledExtensions-02832 If ppEnabledExtensions contains %"VK_KHR_sampler_mirror_clamp_to_edge" and the pNext chain includes a  structure, then ::samplerMirrorClampToEdge must be /1VUID-VkDeviceCreateInfo-ppEnabledExtensions-02833 If ppEnabledExtensions contains "VK_EXT_descriptor_indexing" and the pNext chain includes a  structure, then ::descriptorIndexing must be /1VUID-VkDeviceCreateInfo-ppEnabledExtensions-02834 If ppEnabledExtensions contains "VK_EXT_sampler_filter_minmax" and the pNext chain includes a  structure, then ::samplerFilterMinmax must be /1VUID-VkDeviceCreateInfo-ppEnabledExtensions-02835 If ppEnabledExtensions contains $"VK_EXT_shader_viewport_index_layer" and the pNext chain includes a  structure, then ::shaderOutputViewportIndex and ::shaderOutputLayer must both be /)VUID-VkDeviceCreateInfo-pProperties-04451 If the VK_KHR_portability_subset extension is included in  pProperties of , , ppEnabledExtensions must$ include "VK_KHR_portability_subset".VUID-VkDeviceCreateInfo-shadingRateImage-04478 If  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshadingRateImage is enabled,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRatepipelineFragmentShadingRate must not be enabled.VUID-VkDeviceCreateInfo-shadingRateImage-04479 If  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshadingRateImage is enabled,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveFragmentShadingRateprimitiveFragmentShadingRate must not be enabled.VUID-VkDeviceCreateInfo-shadingRateImage-04480 If  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshadingRateImage is enabled,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRateattachmentFragmentShadingRate must not be enabled0VUID-VkDeviceCreateInfo-fragmentDensityMap-04481 If  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapfragmentDensityMap is enabled,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRatepipelineFragmentShadingRate must not be enabled0VUID-VkDeviceCreateInfo-fragmentDensityMap-04482 If  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapfragmentDensityMap is enabled,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveFragmentShadingRateprimitiveFragmentShadingRate must not be enabled0VUID-VkDeviceCreateInfo-fragmentDensityMap-04483 If  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapfragmentDensityMap is enabled,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRateattachmentFragmentShadingRate must not be enabled"VUID-VkDeviceCreateInfo-None-04896 If  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics is enabled,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderImageInt64AtomicsshaderImageInt64Atomics must be enabled"VUID-VkDeviceCreateInfo-None-04897 If  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageFloat32AtomicssparseImageFloat32Atomics is enabled,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderImageFloat32AtomicsshaderImageFloat32Atomics must be enabled"VUID-VkDeviceCreateInfo-None-04898 If  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageFloat32AtomicAddsparseImageFloat32AtomicAdd is enabled,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderImageFloat32AtomicAddshaderImageFloat32AtomicAdd must be enabled?2 gvulkan&A Vulkan structure that can appear in .gvulkan4Singleton for a Vulkan structure that can appear in . It is either 6, or it   .gvulkan&A Vulkan structure that can appear in .gvulkan4Singleton for a Vulkan structure that can appear in . It is either 9, or it   .gvulkan!Require a minimum device version.gvulkan)Require a Vulkan physical device feature.gvulkan*Require a Vulkan physical device property.gvulkan"Require a Vulkan device extension.gvulkanA requirement on a Vulkan Instance.gvulkan*Require a minimum Vulkan instance version.gvulkanRequire a Vulkan layer.gvulkan$Require a Vulkan instance extension.hvulkanThe implementationVersion/ of the layer must meet or exceed this version"ggggggggggggggggggggggggggggghhhhh"ggggghhhhhgggggggggggggggggggggggg None( #$&'(./0289:<>?36)vulkanVkWriteDescriptorSet - Structure specifying the parameters of a descriptor set write operation Description Only one of  pImageInfo,  pBufferInfo, or pTexelBufferView members is used according to the descriptor type specified in the descriptorType member of the containing )% structure, or none of them in case descriptorType is ', in which case the source data for the descriptor writes is taken from the  structure included in the pNext chain of ) , or if descriptorType is ', in which case the source data for the descriptor writes is taken from the  structure in the pNext chain of ) , or if descriptorType is ', in which case the source data for the descriptor writes is taken from the  structure in the pNext chain of ), as specified below.If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor feature is enabled, the buffer, acceleration structure, imageView, or bufferView can be . Loads from a null descriptor return zero values and stores and atomics to a null descriptor are discarded. A null acceleration structure descriptor results in the miss shader being invoked.If the destination descriptor is a mutable descriptor, the active descriptor type for the destination descriptor becomes descriptorType.If the  dstBinding has fewer than descriptorCount) array elements remaining starting from dstArrayElement, then the remainder will be used to update the subsequent binding -  dstBinding7+1 starting at array element zero. If a binding has a descriptorCount of zero, it is skipped. This behavior applies recursively, with the update affecting consecutive bindings as needed to update all descriptorCount$ descriptors. Consecutive bindings must have identical elink::VkDescriptorType, elink::VkShaderStageFlags, %, and immutable samplers references.NoteThe same behavior applies to bindings with a descriptor type of ' where descriptorCount0 specifies the number of bytes to update while dstArrayElement? specifies the starting byte offset, thus in this case if the  dstBinding* has a smaller byte size than the sum of dstArrayElement and descriptorCount, then the remainder will be used to update the subsequent binding -  dstBinding+1 starting at offset zero. This falls out as a special case of the above rule. Valid Usage*VUID-VkWriteDescriptorSet-dstBinding-00315  dstBinding must4 be less than or equal to the maximum value of binding of all + structures specified when dstSet)@s descriptor set layout was created(*VUID-VkWriteDescriptorSet-dstBinding-00316  dstBinding must# be a binding with a non-zero descriptorCount/VUID-VkWriteDescriptorSet-descriptorCount-003174 All consecutive bindings updated via a single )% structure, except those with a descriptorCount of zero, must have identical descriptorType and  stageFlags/VUID-VkWriteDescriptorSet-descriptorCount-003184 All consecutive bindings updated via a single )% structure, except those with a descriptorCount of zero, must+ all either use immutable samplers or must all not use immutable samplers.VUID-VkWriteDescriptorSet-descriptorType-00319 descriptorType must match the type of  dstBinding within dstSet&VUID-VkWriteDescriptorSet-dstSet-00320 dstSet must be a valid  handle/VUID-VkWriteDescriptorSet-dstArrayElement-00321 The sum of dstArrayElement and descriptorCount must be less than or equal to the number of array elements in the descriptor set binding specified by  dstBinding, and all applicable consecutive bindings, as described by https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-updates-consecutive.VUID-VkWriteDescriptorSet-descriptorType-02219 If descriptorType is ', dstArrayElement must be an integer multiple of 4.VUID-VkWriteDescriptorSet-descriptorType-02220 If descriptorType is ', descriptorCount must be an integer multiple of 4.VUID-VkWriteDescriptorSet-descriptorType-00322 If descriptorType is ', ', ', ', or ',  pImageInfo must( be a valid pointer to an array of descriptorCount valid / structures.VUID-VkWriteDescriptorSet-descriptorType-02994 If descriptorType is ' or ', each element of pTexelBufferView must be either a valid  handle or .VUID-VkWriteDescriptorSet-descriptorType-02995 If descriptorType is ' or ' and the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor. feature is not enabled, each element of pTexelBufferView must not be .VUID-VkWriteDescriptorSet-descriptorType-00324 If descriptorType is ', ', ', or ',  pBufferInfo must( be a valid pointer to an array of descriptorCount valid 0 structures.VUID-VkWriteDescriptorSet-descriptorType-00325 If descriptorType is ' or ' , and dstSet was not allocated with a layout that included immutable samplers for  dstBinding with descriptorType, the sampler member of each element of  pImageInfo must be a valid y object.VUID-VkWriteDescriptorSet-descriptorType-02996 If descriptorType is ', ', ', or ' , the  imageView member of each element of  pImageInfo must be either a valid  handle or .VUID-VkWriteDescriptorSet-descriptorType-02997 If descriptorType is ', ', ', or ' and the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor" feature is not enabled, the  imageView member of each element of  pImageInfo must not be .VUID-VkWriteDescriptorSet-descriptorType-02221 If descriptorType is ' , the pNext chain must include a  structure whose dataSize member equals descriptorCount.VUID-VkWriteDescriptorSet-descriptorType-02382 If descriptorType is ' , the pNext chain must include a  structure whose accelerationStructureCount member equals descriptorCount.VUID-VkWriteDescriptorSet-descriptorType-03817 If descriptorType is ' , the pNext chain must include a  structure whose accelerationStructureCount member equals descriptorCount.VUID-VkWriteDescriptorSet-descriptorType-01946 If descriptorType is ', then the  imageView member of each  pImageInfo element must' have been created without a Y structure in its pNext chain.VUID-VkWriteDescriptorSet-descriptorType-02738 If descriptorType is ', and if any element of  pImageInfo has a  imageView* member that was created with a Y structure in its pNext chain, then dstSet must have been allocated with a layout that included immutable samplers for  dstBinding*, and the corresponding immutable sampler must have been created with an identically defined Y object.VUID-VkWriteDescriptorSet-descriptorType-01948 If descriptorType is ' , and dstSet was allocated with a layout that included immutable samplers for  dstBinding , then the  imageView member of each element of  pImageInfo which corresponds to an immutable sampler that enables  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y@CBCR conversion must have been created with a Y structure in its pNext chain with an identically defined Y, to the corresponding immutable sampler.VUID-VkWriteDescriptorSet-descriptorType-00327 If descriptorType is ' or ' , the offset member of each element of  pBufferInfo must be a multiple of  ::minUniformBufferOffsetAlignment.VUID-VkWriteDescriptorSet-descriptorType-00328 If descriptorType is ' or ' , the offset member of each element of  pBufferInfo must be a multiple of  ::minStorageBufferOffsetAlignment.VUID-VkWriteDescriptorSet-descriptorType-00329 If descriptorType is ', ', ', or ', and the buffer member of any element of  pBufferInfo= is the handle of a non-sparse buffer, then that buffer must< be bound completely and contiguously to a single 0  object.VUID-VkWriteDescriptorSet-descriptorType-00330 If descriptorType is ' or ' , the buffer member of each element of  pBufferInfo must" have been created with  set.VUID-VkWriteDescriptorSet-descriptorType-00331 If descriptorType is ' or ' , the buffer member of each element of  pBufferInfo must" have been created with  set.VUID-VkWriteDescriptorSet-descriptorType-00332 If descriptorType is ' or ' , the range member of each element of  pBufferInfo!, or the effective range if range is  , must$ be less than or equal to  ::maxUniformBufferRange.VUID-VkWriteDescriptorSet-descriptorType-00333 If descriptorType is ' or ' , the range member of each element of  pBufferInfo!, or the effective range if range is  , must$ be less than or equal to  ::maxStorageBufferRange.VUID-VkWriteDescriptorSet-descriptorType-00334 If descriptorType is ' , the  that each element of pTexelBufferView was created from must have been created with  set.VUID-VkWriteDescriptorSet-descriptorType-00335 If descriptorType is ' , the  that each element of pTexelBufferView was created from must have been created with  set.VUID-VkWriteDescriptorSet-descriptorType-00336 If descriptorType is ' or ' , the  imageView member of each element of  pImageInfo must1 have been created with the identity swizzle.VUID-VkWriteDescriptorSet-descriptorType-00337 If descriptorType is ' or ' , the  imageView member of each element of  pImageInfo must" have been created with   set.VUID-VkWriteDescriptorSet-descriptorType-04149 If descriptorType is ' the  imageLayout member of each element of  pImageInfo must, be a member of the list given in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampledimage Sampled Image.VUID-VkWriteDescriptorSet-descriptorType-04150 If descriptorType is ' the  imageLayout member of each element of  pImageInfo must, be a member of the list given in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-combinedimagesamplerCombined Image Sampler.VUID-VkWriteDescriptorSet-descriptorType-04151 If descriptorType is ' the  imageLayout member of each element of  pImageInfo must, be a member of the list given in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-inputattachmentInput Attachment.VUID-VkWriteDescriptorSet-descriptorType-04152 If descriptorType is ' the  imageLayout member of each element of  pImageInfo must, be a member of the list given in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage Storage Image.VUID-VkWriteDescriptorSet-descriptorType-00338 If descriptorType is ' , the  imageView member of each element of  pImageInfo must" have been created with   set.VUID-VkWriteDescriptorSet-descriptorType-00339 If descriptorType is ' , the  imageView member of each element of  pImageInfo must" have been created with   set.VUID-VkWriteDescriptorSet-descriptorType-02752 If descriptorType is ' , then dstSet must not have been allocated with a layout that included immutable samplers for  dstBinding&VUID-VkWriteDescriptorSet-dstSet-04611 If the + for dstSet at  dstBinding is '&, the new active descriptor type descriptorType must! exist in the corresponding pMutableDescriptorTypeLists list for  dstBindingValid Usage (Implicit)%VUID-VkWriteDescriptorSet-sType-sType sType must be  %VUID-VkWriteDescriptorSet-pNext-pNext Each pNext: member of any structure (including this one) in the pNext chain must be either NULL* or a pointer to a valid instance of , , or &VUID-VkWriteDescriptorSet-sType-unique The sType" value of each struct in the pNext chain must be unique2VUID-VkWriteDescriptorSet-descriptorType-parameter descriptorType must be a valid ' value5VUID-VkWriteDescriptorSet-descriptorCount-arraylength descriptorCount must be greater than 0&VUID-VkWriteDescriptorSet-commonparent Both of dstSet, and the elements of pTexelBufferView7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same See Also, 0, /, , ', ,  , h*vulkanVkDescriptorSetLayoutCreateInfo - Structure specifying parameters of a newly created descriptor set layout Valid Usage2VUID-VkDescriptorSetLayoutCreateInfo-binding-00279 The +::binding% members of the elements of the  pBindings array must each have different values 0VUID-VkDescriptorSetLayoutCreateInfo-flags-00280 If flags contains ', then all elements of  pBindings must not have a descriptorType of ' or '0VUID-VkDescriptorSetLayoutCreateInfo-flags-02208 If flags contains ', then all elements of  pBindings must not have a descriptorType of '0VUID-VkDescriptorSetLayoutCreateInfo-flags-00281 If flags contains '9, then the total number of elements of all bindings must$ be less than or equal to ::maxPushDescriptors0VUID-VkDescriptorSetLayoutCreateInfo-flags-04590 If flags contains ', flags must not contain '0VUID-VkDescriptorSetLayoutCreateInfo-flags-04591 If flags contains ',  pBindings must not have a descriptorType of '0VUID-VkDescriptorSetLayoutCreateInfo-flags-03000" If any binding has the  bit set, flags must include '9VUID-VkDescriptorSetLayoutCreateInfo-descriptorType-03001" If any binding has the ! bit set, then all bindings must not have descriptorType of ' or '0VUID-VkDescriptorSetLayoutCreateInfo-flags-04592 If flags contains ', flags must not contain '9VUID-VkDescriptorSetLayoutCreateInfo-descriptorType-04593 If any binding has a descriptorType of ', then a  must be present in the pNext chain9VUID-VkDescriptorSetLayoutCreateInfo-descriptorType-04594 If a binding has a descriptorType value of ' , then pImmutableSamplers must be NULLVUID-VkDescriptorSetLayoutCreateInfo-mutableDescriptorType-04595 If ::mutableDescriptorType is not enabled,  pBindings must not contain a descriptorType of '0VUID-VkDescriptorSetLayoutCreateInfo-flags-04596 If flags contains ', ::mutableDescriptorType must be enabledValid Usage (Implicit)0VUID-VkDescriptorSetLayoutCreateInfo-sType-sType sType must be  0VUID-VkDescriptorSetLayoutCreateInfo-pNext-pNext Each pNext: member of any structure (including this one) in the pNext chain must be either NULL* or a pointer to a valid instance of  or 1VUID-VkDescriptorSetLayoutCreateInfo-sType-unique The sType" value of each struct in the pNext chain must be unique4VUID-VkDescriptorSetLayoutCreateInfo-flags-parameter flags must be a valid combination of ' values8VUID-VkDescriptorSetLayoutCreateInfo-pBindings-parameter If  bindingCount is not 0,  pBindings must( be a valid pointer to an array of  bindingCount valid + structuresSee Also+, ', , h, W ,  +vulkanVkDescriptorSetLayoutBinding - Structure specifying a descriptor set layout binding DescriptionpImmutableSamplers- affects initialization of samplers. If descriptorType specifies a ' or ' type descriptor, then pImmutableSamplers can% be used to initialize a set of immutable samplers. Immutable samplers are permanently bound into the set layout and must& not be changed; updating a ' descriptor with immutable samplers is not allowed and updates to a ' descriptor with immutable samplers does not modify the samplers (the image views are updated, but the sampler updates are ignored). If pImmutableSamplers is not NULL, then it is a pointer to an array of sampler handles that will be copied into the set layout and used for the corresponding binding. Only the sampler handles are copied; the sampler objects must not be destroyed before the final use of the set layout and any descriptor pools and sets created using it. If pImmutableSamplers is NULL>, then the sampler slots are dynamic and sampler handles must: be bound into descriptor sets using this layout. If descriptorType1 is not one of these descriptor types, then pImmutableSamplers is ignored.The above layout definition allows the descriptor bindings to be specified sparsely such that not all binding numbers between 0 and the maximum binding number need to be specified in the  pBindings0 array. Bindings that are not specified have a descriptorCount and  stageFlags of zero, and the value of descriptorType is undefined. However, all binding numbers between 0 and the maximum binding number in the *:: pBindings array may consume memory in the descriptor set layout even if not all descriptor bindings are used, though it should9 not consume additional memory from the descriptor pool.Note%The maximum binding number specified should3 be as compact as possible to avoid wasted memory. Valid Usage6VUID-VkDescriptorSetLayoutBinding-descriptorType-00282 If descriptorType is ' or ' , and descriptorCount is not 0 and pImmutableSamplers is not NULL, pImmutableSamplers must( be a valid pointer to an array of descriptorCount valid y handles6VUID-VkDescriptorSetLayoutBinding-descriptorType-04604 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-inlineUniformBlockinlineUniformBlock feature is not enabled, descriptorType must not be '6VUID-VkDescriptorSetLayoutBinding-descriptorType-02209 If descriptorType is ' then descriptorCount must be a multiple of 46VUID-VkDescriptorSetLayoutBinding-descriptorType-02210 If descriptorType is ' then descriptorCount must be less than or equal to ::maxInlineUniformBlockSize7VUID-VkDescriptorSetLayoutBinding-descriptorCount-00283 If descriptorCount is not 0,  stageFlags must% be a valid combination of '  values6VUID-VkDescriptorSetLayoutBinding-descriptorType-01510 If descriptorType is ' and descriptorCount is not 0, then  stageFlags must be 0 or ':VUID-VkDescriptorSetLayoutBinding-pImmutableSamplers-04009' The sampler objects indicated by pImmutableSamplers must not have a  borderColor with one of the values  or 6VUID-VkDescriptorSetLayoutBinding-descriptorType-04605 If descriptorType is ' , then pImmutableSamplers must be NULLValid Usage (Implicit):VUID-VkDescriptorSetLayoutBinding-descriptorType-parameter descriptorType must be a valid ' valueSee Also*, ', y, e,vulkanVkDescriptorSetAllocateInfo - Structure specifying the allocation parameters for descriptor sets Valid Usage2VUID-VkDescriptorSetAllocateInfo-pSetLayouts-00308 Each element of  pSetLayouts must! not have been created with ' set2VUID-VkDescriptorSetAllocateInfo-pSetLayouts-03044 If any element of  pSetLayouts was created with the ' bit set, descriptorPool must! have been created with the ' flag set2VUID-VkDescriptorSetAllocateInfo-pSetLayouts-04610 If any element of  pSetLayouts was created with the ' bit set, descriptorPool must! have been created with the ' flag setValid Usage (Implicit),VUID-VkDescriptorSetAllocateInfo-sType-sType sType must be  ,VUID-VkDescriptorSetAllocateInfo-pNext-pNext pNext must be NULL* or a pointer to a valid instance of -VUID-VkDescriptorSetAllocateInfo-sType-unique The sType" value of each struct in the pNext chain must be unique9VUID-VkDescriptorSetAllocateInfo-descriptorPool-parameter descriptorPool must be a valid  handle6VUID-VkDescriptorSetAllocateInfo-pSetLayouts-parameter  pSetLayouts must( be a valid pointer to an array of descriptorSetCount valid  handles?VUID-VkDescriptorSetAllocateInfo-descriptorSetCount-arraylength descriptorSetCount must be greater than 0-VUID-VkDescriptorSetAllocateInfo-commonparent Both of descriptorPool, and the elements of  pSetLayouts must have been created, allocated, or retrieved from the same See Also, , , h-vulkanVkDescriptorPoolSize - Structure specifying descriptor pool size DescriptionNoteWhen creating a descriptor pool that will contain descriptors for combined image samplers of multi-planar formats, an application needs to account for non-trivial descriptor consumption when choosing the descriptorCount value, as indicated by Y::#combinedImageSamplerDescriptorCount. Valid Usage/VUID-VkDescriptorPoolSize-descriptorCount-00302 descriptorCount must be greater than 0$VUID-VkDescriptorPoolSize-type-02218 If type is ' then descriptorCount must be a multiple of 4Valid Usage (Implicit)(VUID-VkDescriptorPoolSize-type-parameter type must be a valid ' valueSee Also., '.vulkanVkDescriptorPoolCreateInfo - Structure specifying parameters of a newly created descriptor pool Description If multiple -? structures containing the same descriptor type appear in the  pPoolSizes array then the pool will be created with enough storage for the total number of descriptors of each type.3Fragmentation of a descriptor pool is possible and may lead to descriptor set allocation failures. A failure due to fragmentation is defined as failing a descriptor set allocation despite the sum of all outstanding descriptor set allocations from the pool plus the requested allocation requiring no more than the total number of descriptors requested at pool creation. Implementations provide certain guarantees of when fragmentation must3 not cause allocation failure, as described below.If a descriptor pool has not had any descriptor sets freed since it was created or most recently reset then fragmentation must not cause an allocation failure (note that this is always the case for a pool created without the ' bit set). Additionally, if all sets allocated from the pool since it was created or most recently reset use the same number of descriptors (of each type) and the requested allocation also uses that same number of descriptors (of each type), then fragmentation must" not cause an allocation failure.If an allocation failure occurs due to fragmentation, an application can create an additional descriptor pool to perform further descriptor set allocations.If flags has the '$ bit set, descriptor pool creation may fail with the error  if the total number of descriptors across all pools (including this one) created with this bit set exceeds 'maxUpdateAfterBindDescriptorsInAllPools, or if fragmentation of the underlying hardware resources occurs.If a  pPoolSizes[i]::type is ', a  struct in the pNext chain can4 be used to specify which mutable descriptor types can0 be allocated from the pool. If present in the pNext chain, ::pMutableDescriptorTypeLists[i] specifies which kind of ' descriptors can( be allocated from this pool entry. If  does not exist in the pNext chain, or ::pMutableDescriptorTypeLists[i] is out of range, the descriptor pool allocates enough memory to be able to allocate a '! descriptor with any supported '0 as a mutable descriptor. A mutable descriptor can5 be allocated from a pool entry if the type list in * is a subset of the type list declared in the descriptor pool, or if the pool entry is created without a descriptor type list. Multiple  pPoolSizes entries with ' can? be declared. When multiple such pool entries are present in  pPoolSizes, they specify sets of supported descriptor types which either fully overlap, partially overlap, or are disjoint. Two sets fully overlap if the sets of supported descriptor types are equal. If the sets are not disjoint they partially overlap. A pool entry without a   assigned to it is considered to partially overlap any other pool entry which has a  " assigned to it. The application must0 ensure that partial overlap does not exist in  pPoolSizes.NoteThe requirement of no partial overlap is intended to resolve ambiguity for validation as there is no confusion which  pPoolSizes entries will be allocated from. An implementation is not expected to depend on this requirement. Valid Usage-VUID-VkDescriptorPoolCreateInfo-maxSets-00301 maxSets must be greater than 0+VUID-VkDescriptorPoolCreateInfo-flags-04607 If flags has the ' bit set, then the ' bit must not be set;VUID-VkDescriptorPoolCreateInfo-mutableDescriptorType-04608 If ::mutableDescriptorType is not enabled,  pPoolSizes must not contain a descriptorType of '+VUID-VkDescriptorPoolCreateInfo-flags-04609 If flags has the ' bit set, ::mutableDescriptorType must be enabled0VUID-VkDescriptorPoolCreateInfo-pPoolSizes-04787 If  pPoolSizes contains a descriptorType of ', any other ' element in  pPoolSizes must not have sets of supported descriptor types which partially overlapValid Usage (Implicit)+VUID-VkDescriptorPoolCreateInfo-sType-sType sType must be  +VUID-VkDescriptorPoolCreateInfo-pNext-pNext Each pNext: member of any structure (including this one) in the pNext chain must be either NULL* or a pointer to a valid instance of  or ,VUID-VkDescriptorPoolCreateInfo-sType-unique The sType" value of each struct in the pNext chain must be unique/VUID-VkDescriptorPoolCreateInfo-flags-parameter flags must% be a valid combination of ' values4VUID-VkDescriptorPoolCreateInfo-pPoolSizes-parameter  pPoolSizes must# be a valid pointer to an array of  poolSizeCount valid - structures9VUID-VkDescriptorPoolCreateInfo-poolSizeCount-arraylength  poolSizeCount must be greater than 0See Also', -, , h/vulkanVkDescriptorImageInfo - Structure specifying descriptor image information Description Members of / that are not used in an update (as described above) are ignored. Valid Usage*VUID-VkDescriptorImageInfo-imageView-00343  imageView must> not be 2D or 2D array image view created from a 3D image*VUID-VkDescriptorImageInfo-imageView-01976 If  imageView1 is created from a depth/stencil image, the  aspectMask used to create the  imageView must include either   or   but not both,VUID-VkDescriptorImageInfo-imageLayout-00344  imageLayout must match the actual O* of each subresource accessible from  imageView at the time this descriptor is accessed as defined by the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-layouts-matching-ruleimage layout matching rules(VUID-VkDescriptorImageInfo-sampler-01564 If sampler is used and the  of the image is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format, the image must have been created with , and the  aspectMask of the  imageView must be  ,  - or (for three-plane formats only)  :VUID-VkDescriptorImageInfo-mutableComparisonSamplers-04450 If the VK_KHR_portability_subset extension is enabled, and ::mutableComparisonSamplers is /, then sampler must" have been created with >:: compareEnable set to /Valid Usage (Implicit)'VUID-VkDescriptorImageInfo-commonparent Both of  imageView , and sampler2 that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same See AlsoO, , y, )0vulkanVkDescriptorBufferInfo - Structure specifying descriptor buffer information DescriptionNote When setting range to  , the effective range must not be larger than the maximum range for the descriptor type ( https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxUniformBufferRangemaxUniformBufferRange or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxStorageBufferRangemaxStorageBufferRange). This means that   is not typically useful in the common case where uniform buffer descriptors are suballocated from a buffer that is much larger than maxUniformBufferRange.For ' and ' descriptor types, offset is the base offset from which the dynamic offset is applied and range2 is the static size used for all dynamic offsets. Valid Usage(VUID-VkDescriptorBufferInfo-offset-00340 offset must be less than the size of buffer'VUID-VkDescriptorBufferInfo-range-00341 If range is not equal to  , range must be greater than 0'VUID-VkDescriptorBufferInfo-range-00342 If range is not equal to  , range must+ be less than or equal to the size of buffer minus offset(VUID-VkDescriptorBufferInfo-buffer-02998 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor feature is not enabled, buffer must not be (VUID-VkDescriptorBufferInfo-buffer-02999 If buffer is , offset must be zero and range must be  Valid Usage (Implicit),VUID-VkDescriptorBufferInfo-buffer-parameter If buffer is not , buffer must be a valid  handleSee Also, o, )1vulkanVkCopyDescriptorSet - Structure specifying a copy descriptor set operation DescriptionIf the + for  dstBinding is ' and  srcBinding is not ', the new active descriptor type becomes the descriptor type of  srcBinding . If both + for  srcBinding and  dstBinding are ', the active descriptor type in each source descriptor is copied into the corresponding destination descriptor. The active descriptor type can* be different for each source descriptor.NoteThe intention is that copies to and from mutable descriptors is a simple memcpy. Copies between non-mutable and mutable descriptors are expected to require one memcpy per descriptor to handle the difference in size, but this use case with more than one descriptorCount is considered rare. Valid Usage)VUID-VkCopyDescriptorSet-srcBinding-00345  srcBinding must be a valid binding within srcSet.VUID-VkCopyDescriptorSet-srcArrayElement-00346 The sum of srcArrayElement and descriptorCount must be less than or equal to the number of array elements in the descriptor set binding specified by  srcBinding, and all applicable consecutive bindings, as described by https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-updates-consecutive)VUID-VkCopyDescriptorSet-dstBinding-00347  dstBinding must be a valid binding within dstSet.VUID-VkCopyDescriptorSet-dstArrayElement-00348 The sum of dstArrayElement and descriptorCount must be less than or equal to the number of array elements in the descriptor set binding specified by  dstBinding, and all applicable consecutive bindings, as described by https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-updates-consecutive)VUID-VkCopyDescriptorSet-dstBinding-02632 The type of  dstBinding within dstSet must be equal to the type of  srcBinding within srcSet%VUID-VkCopyDescriptorSet-srcSet-00349 If srcSet is equal to dstSet=, then the source and destination ranges of descriptors must not overlap, where the ranges may include array elements from consecutive bindings as described by https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-updates-consecutive)VUID-VkCopyDescriptorSet-srcBinding-02223 If the descriptor type of the descriptor set binding specified by  srcBinding is ', srcArrayElement must be an integer multiple of 4)VUID-VkCopyDescriptorSet-dstBinding-02224 If the descriptor type of the descriptor set binding specified by  dstBinding is ', dstArrayElement must be an integer multiple of 4)VUID-VkCopyDescriptorSet-srcBinding-02225 If the descriptor type of the descriptor set binding specified by either  srcBinding or  dstBinding is ', descriptorCount must be an integer multiple of 4%VUID-VkCopyDescriptorSet-srcSet-01918 If srcSet)@s layout was created with the ' flag set, then dstSet @s layout must+ also have been created with the ' flag set%VUID-VkCopyDescriptorSet-srcSet-04885 If srcSet-@s layout was created with neither ' nor ' flags set, then dstSet @s layout must) have been created without the ' flag set%VUID-VkCopyDescriptorSet-srcSet-01920( If the descriptor pool from which srcSet) was allocated was created with the '4 flag set, then the descriptor pool from which dstSet was allocated must& also have been created with the ' flag set%VUID-VkCopyDescriptorSet-srcSet-04887( If the descriptor pool from which srcSet- was allocated was created with neither ' nor '5 flags set, then the descriptor pool from which dstSet was allocated must$ have been created without the ' flag set)VUID-VkCopyDescriptorSet-dstBinding-02753 If the descriptor type of the descriptor set binding specified by  dstBinding is ' , then dstSet must not have been allocated with a layout that included immutable samplers for  dstBinding%VUID-VkCopyDescriptorSet-dstSet-04612 If + for dstSet at  dstBinding is '&, the new active descriptor type must! exist in the corresponding pMutableDescriptorTypeLists list for  dstBinding4 if the new active descriptor type is not '%VUID-VkCopyDescriptorSet-srcSet-04613 If + for srcSet at  srcBinding is ' and the + for dstSet at  dstBinding is not '<, the active descriptor type for the source descriptor must# match the descriptor type of  dstBinding%VUID-VkCopyDescriptorSet-dstSet-04614 If + for dstSet at  dstBinding is '2, and the new active descriptor type is ' , the pMutableDescriptorTypeLists for  srcBinding and  dstBinding must match exactlyValid Usage (Implicit)$VUID-VkCopyDescriptorSet-sType-sType sType must be  $VUID-VkCopyDescriptorSet-pNext-pNext pNext must be NULL)VUID-VkCopyDescriptorSet-srcSet-parameter srcSet must be a valid  handle)VUID-VkCopyDescriptorSet-dstSet-parameter dstSet must be a valid  handle%VUID-VkCopyDescriptorSet-commonparent Both of dstSet , and srcSet must? have been created, allocated, or retrieved from the same See Also, , hhvulkanpNext is NULL6 or a pointer to a structure extending this structure.hvulkandescriptorPool3 is the pool which the sets will be allocated from.hvulkan pSetLayouts is a pointer to an array of descriptor set layouts, with each member specifying how the corresponding descriptor set is allocated.hvulkanpNext is NULL6 or a pointer to a structure extending this structure.hvulkanflags is a bitmask of '6 specifying certain supported operations on the pool.hvulkanmaxSets/ is the maximum number of descriptor sets that can be allocated from the pool.hvulkan pPoolSizes is a pointer to an array of - structures, each containing a descriptor type and number of descriptors of that type to be allocated in the pool.hvulkantype is the type of descriptor.hvulkandescriptorCount< is the number of descriptors of that type to allocate. If type is ' then descriptorCount is the number of bytes to allocate for descriptors of this type.hvulkanpNext is NULL6 or a pointer to a structure extending this structure.hvulkanflags is a bitmask of '8 specifying options for descriptor set layout creation.hvulkan pBindings is a pointer to an array of + structures.hvulkanbinding is the binding number of this entry and corresponds to a resource of the same binding number in the shader stages.hvulkandescriptorType is a ' specifying which type of resource descriptors are used for this binding.hvulkandescriptorCount is the number of descriptors contained in the binding, accessed in a shader as an array, except if descriptorType is ' in which case descriptorCount7 is the size in bytes of the inline uniform block. If descriptorCount: is zero this binding entry is reserved and the resource must not be accessed from any stage via this binding within any pipeline using the set layout.hvulkan stageFlags member is a bitmask of ' * specifying which pipeline shader stages can& access a resource for this binding. ' is a shorthand specifying that all defined shader stages, including any additional stages defined by extensions, can access the resource.%If a shader stage is not included in  stageFlags, then a resource must not be accessed from that stage via this binding within any pipeline using the set layout. Other than input attachments which are limited to the fragment shader, there are no limitations on what combinations of stages can8 use a descriptor binding, and in particular a binding can7 be used by both graphics stages and the compute stage.hvulkansrcSet,  srcBinding, and srcArrayElement are the source set, binding, and array element, respectively. If the descriptor binding identified by srcSet and  srcBinding has a descriptor type of ' then srcArrayElement specifies the starting byte offset within the binding to copy from.hvulkandstSet,  dstBinding, and dstArrayElement are the destination set, binding, and array element, respectively. If the descriptor binding identified by dstSet and  dstBinding has a descriptor type of ' then dstArrayElement specifies the starting byte offset within the binding to copy to.hvulkandescriptorCount is the number of descriptors to copy from the source to destination. If descriptorCount is greater than the number of remaining array elements in the source or destination binding, those affect consecutive bindings in a manner similar to )1 above. If the descriptor binding identified by srcSet and  srcBinding has a descriptor type of ' then descriptorCount specifies the number of bytes to copy and the remaining array elements in the source or destination binding refer to the remaining number of bytes in those.hvulkanpNext is NULL6 or a pointer to a structure extending this structure.hvulkandstSet- is the destination descriptor set to update.hvulkan dstBinding+ is the descriptor binding within that set.hvulkandstArrayElement is the starting element in that array. If the descriptor binding identified by dstSet and  dstBinding has a descriptor type of ' then dstArrayElement8 specifies the starting byte offset within the binding.hvulkandescriptorCount is the number of descriptors to update. If the descriptor binding identified by dstSet and  dstBinding has a descriptor type of ', then descriptorCount6 specifies the number of bytes to update. Otherwise, descriptorCount is one ofthe number of elements in  pImageInfothe number of elements in  pBufferInfothe number of elements in pTexelBufferViewa value matching the dataSize member of a  structure in the pNext chaina value matching the accelerationStructureCount of a  structure in the pNext chainhvulkandescriptorType is a ', specifying the type of each descriptor in  pImageInfo,  pBufferInfo, or pTexelBufferView, as described below. If + for dstSet at  dstBinding is not equal to ', descriptorType must( be the same type as that specified in + for dstSet at  dstBinding. The type of the descriptor also controls which array the descriptors are taken from.hvulkan pImageInfo is a pointer to an array of // structures or is ignored, as described below.hvulkan pBufferInfo is a pointer to an array of 0/ structures or is ignored, as described below.hvulkanpTexelBufferView is a pointer to an array of  handles as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-views Buffer Views, section or is ignored, as described below.hvulkansampler is a sampler handle, and is used in descriptor updates for types ' and '? if the binding being updated does not use immutable samplers.hvulkan imageView is  or an image view handle, and is used in descriptor updates for types ', ', ', and '.hvulkan imageLayout< is the layout that the image subresources accessible from  imageView6 will be in at the time this descriptor is accessed.  imageLayout* is used in descriptor updates for types ', ', ', and '.hvulkanbuffer is  or the buffer resource.hvulkanoffset* is the offset in bytes from the start of buffer. Access to buffer memory via this descriptor uses addressing that is relative to this starting offset.hvulkanrange is the size in bytes that is used for this descriptor update, or   to use the range from offset to the end of the buffer.hvulkanvkCreateDescriptorSetLayout - Create a new descriptor set layoutValid Usage (Implicit)1VUID-vkCreateDescriptorSetLayout-device-parameter device must be a valid  handle6VUID-vkCreateDescriptorSetLayout-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid * structure5VUID-vkCreateDescriptorSetLayout-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure5VUID-vkCreateDescriptorSetLayout-pSetLayout-parameter  pSetLayout must be a valid pointer to a  handle Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , *, hvulkan=A convenience wrapper to make a compatible pair of calls to h and hTo ensure that h is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.hvulkanvkDestroyDescriptorSetLayout - Destroy a descriptor set layout object Valid Usage;VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-00284 If  were provided when descriptorSetLayout1 was created, a compatible set of callbacks must be provided here;VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-00285 If no  were provided when descriptorSetLayout was created,  pAllocator must be NULLValid Usage (Implicit)2VUID-vkDestroyDescriptorSetLayout-device-parameter device must be a valid  handle?VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-parameter If descriptorSetLayout is not , descriptorSetLayout must be a valid  handle6VUID-vkDestroyDescriptorSetLayout-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structuredescriptorPool, then the allocation may fail due to lack of space in the descriptor pool. Similarly, the allocation may+ fail due to lack of space if the call to h would cause the number of any given descriptor type to exceed the sum of all the descriptorCount members of each element of .:: pPoolSizes with a type equal to that type.Additionally, the allocation may also fail if a call to h would cause the total number of inline uniform block bindings allocated from the pool to exceed the value of ::maxInlineUniformBlockBindings% used to create the descriptor pool.If the allocation fails due to no more space in the descriptor pool, and not because of system or device memory exhaustion, then  must be returned.h can be used to create multiple descriptor sets. If the creation of any of those descriptor sets fails, then the implementation must destroy all successfully created descriptor set objects from this command, set all entries of the pDescriptorSets array to  and return the error.Valid Usage (Implicit).VUID-vkAllocateDescriptorSets-device-parameter device must be a valid  handle5VUID-vkAllocateDescriptorSets-pAllocateInfo-parameter  pAllocateInfo must$ be a valid pointer to a valid , structure7VUID-vkAllocateDescriptorSets-pDescriptorSets-parameter pDescriptorSets must( be a valid pointer to an array of !pAllocateInfo->descriptorSetCount  handlesVUID-vkAllocateDescriptorSets-pAllocateInfo::descriptorSetCount-arraylength !pAllocateInfo->descriptorSetCount must be greater than 0Host SynchronizationHost access to pAllocateInfo->descriptorPool must be externally synchronized Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, ,, hvulkan=A convenience wrapper to make a compatible pair of calls to h and hTo ensure that h is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.hvulkan7vkFreeDescriptorSets - Free one or more descriptor sets DescriptionAfter calling h, all descriptor sets in pDescriptorSets are invalid. Valid Usage/VUID-vkFreeDescriptorSets-pDescriptorSets-00309: All submitted commands that refer to any element of pDescriptorSets must have completed execution/VUID-vkFreeDescriptorSets-pDescriptorSets-00310 pDescriptorSets must# be a valid pointer to an array of descriptorSetCount % handles, each element of which must" either be a valid handle or .VUID-vkFreeDescriptorSets-descriptorPool-00312 descriptorPool must! have been created with the ' flagValid Usage (Implicit)*VUID-vkFreeDescriptorSets-device-parameter device must be a valid  handle2VUID-vkFreeDescriptorSets-descriptorPool-parameter descriptorPool must be a valid  handle8VUID-vkFreeDescriptorSets-descriptorSetCount-arraylength descriptorSetCount must be greater than 0/VUID-vkFreeDescriptorSets-descriptorPool-parent descriptorPool must1 have been created, allocated, or retrieved from device0VUID-vkFreeDescriptorSets-pDescriptorSets-parent Each element of pDescriptorSets that is a valid handle must6 have been created, allocated, or retrieved from descriptorPoolHost SynchronizationHost access to descriptorPool must be externally synchronizedHost access to each member of pDescriptorSets must be externally synchronized Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessSee Also, , hvulkanvkUpdateDescriptorSets - Update the contents of a descriptor set object DescriptionThe operations described by pDescriptorWrites? are performed first, followed by the operations described by pDescriptorCopies. Within each array, the operations are performed in the order they appear in the array.Each element in the pDescriptorWrites array describes an operation updating the descriptor set using descriptors for resources specified in the structure.Each element in the pDescriptorCopies array is a 1 structure describing an operation copying descriptors between sets.If the dstSet member of any element of pDescriptorWrites or pDescriptorCopies is bound, accessed, or modified by any command that was recorded to a command buffer which is currently in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording or executable state, and any of the descriptor bindings that are updated were not created with the  or ) bits set, that command buffer becomes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycleinvalid. Valid Usage&VUID-vkUpdateDescriptorSets-None-03047 Descriptor bindings updated by this command which were created without the  or  bits set must not be used by any command that was recorded to a command buffer which is in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending stateValid Usage (Implicit),VUID-vkUpdateDescriptorSets-device-parameter device must be a valid  handle7VUID-vkUpdateDescriptorSets-pDescriptorWrites-parameter If descriptorWriteCount is not 0, pDescriptorWrites must( be a valid pointer to an array of descriptorWriteCount valid ) structures7VUID-vkUpdateDescriptorSets-pDescriptorCopies-parameter If descriptorCopyCount is not 0, pDescriptorCopies must( be a valid pointer to an array of descriptorCopyCount valid 1 structuresHost SynchronizationHost access to pDescriptorWrites [].dstSet must be externally synchronizedHost access to pDescriptorCopies [].dstSet must be externally synchronizedSee Also1, , )hvulkandevice> is the logical device that creates the descriptor set layout.vulkan pCreateInfo is a pointer to a * structure specifying the state of the descriptor set layout object.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.hvulkandevice? is the logical device that destroys the descriptor set layout.vulkandescriptorSetLayout) is the descriptor set layout to destroy.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.hvulkandevice8 is the logical device that creates the descriptor pool.vulkan pCreateInfo is a pointer to a .? structure specifying the state of the descriptor pool object.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.hvulkandevice9 is the logical device that destroys the descriptor pool.vulkandescriptorPool# is the descriptor pool to destroy.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.hvulkandevice5 is the logical device that owns the descriptor pool.vulkandescriptorPool$ is the descriptor pool to be reset.vulkanflags is reserved for future use.hvulkandevice5 is the logical device that owns the descriptor pool.vulkan pAllocateInfo is a pointer to a ,4 structure describing parameters of the allocation.hvulkandevice5 is the logical device that owns the descriptor pool.vulkandescriptorPool is the descriptor pool from which the descriptor sets were allocated.vulkanpDescriptorSets) is a pointer to an array of handles to  objects.hvulkandevice8 is the logical device that updates the descriptor sets.vulkanpDescriptorWrites is a pointer to an array of )8 structures describing the descriptor sets to write to.vulkanpDescriptorCopies is a pointer to an array of 1< structures describing the descriptor sets to copy between.)hhhhhhhhhh*hhhh+hhhhhh,hhhh-hhh.hhhhh/hhhh0hhhh1hhhhhhhhI'111'''''''''''''''''''''''''''''hhhhhhhhhhhhhhhhhhhhhh0hhhh/hhhh)hhhhhhhhhh1hhhhhhhh+hhhhhh*hhhh-hhh.hhhhh,hhhh111I'''''''''''''''''''''''''''''''''''''''''''''''''''None( #$&'(./0289:<>?3GEvulkanVkPhysicalDevicePushDescriptorPropertiesKHR - Structure describing push descriptor limits that can be supported by an implementation DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.Valid Usage (Implicit)See Alsohvulkanlimits-maxPushDescriptors maxPushDescriptors, is the maximum number of descriptors that can+ be used in a descriptor set created with  set.hvulkanvkCmdPushDescriptorSetKHR - Pushes descriptor updates into a command buffer DescriptionPush descriptors are a small bank of descriptors whose storage is internally managed by the command buffer rather than being written into a descriptor set and later bound to a command buffer. Push descriptors allow for incremental updates of descriptors without managing the lifetime of descriptor sets.When a command buffer begins recording, all push descriptors are undefined. Push descriptors can be updated incrementally and cause shaders to use the updated descriptors for subsequent  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-bindpoint-commandsbound pipeline commands with the pipeline type set by pipelineBindPoint until the descriptor is overwritten, or else until the set is disturbed as described in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibilityPipeline Layout Compatibility. When the set is disturbed or push descriptors with a different descriptor set layout are set, all push descriptors are undefined.Push descriptors that are  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-staticusestatically used by a pipeline must not be undefined at the time that a drawing or dispatching command is recorded to execute using that pipeline. This includes immutable sampler descriptors, which must be pushed before they are accessed by a pipeline (the immutable samplers are pushed, rather than the samplers in pDescriptorWrites2). Push descriptors that are not statically used can remain undefined.Push descriptors do not use dynamic offsets. Instead, the corresponding non-dynamic descriptor types can be used and the offset member of   can1 be changed each time the descriptor is written.Each element of pDescriptorWrites is interpreted as in ) , except the dstSet member is ignored.%To push an immutable sampler, use a ) with  dstBinding and dstArrayElement selecting the immutable sampler@s binding. If the descriptor type is  , the  pImageInfo parameter is ignored and the immutable sampler is taken from the push descriptor set layout in the pipeline layout. If the descriptor type is  , the sampler member of the  pImageInfo parameter is ignored and the immutable sampler is taken from the push descriptor set layout in the pipeline layout. Valid Usage6VUID-vkCmdPushDescriptorSetKHR-pipelineBindPoint-00363 pipelineBindPoint must be supported by the  commandBuffer@s parent 0 @s queue family(VUID-vkCmdPushDescriptorSetKHR-set-00364 set must be less than :::setLayoutCount provided when layout was created(VUID-vkCmdPushDescriptorSetKHR-set-00365 set must be the unique set number in the pipeline layout that uses a descriptor set layout that was created with Valid Usage (Implicit)6VUID-vkCmdPushDescriptorSetKHR-commandBuffer-parameter  commandBuffer must be a valid  handle:VUID-vkCmdPushDescriptorSetKHR-pipelineBindPoint-parameter pipelineBindPoint must be a valid X value/VUID-vkCmdPushDescriptorSetKHR-layout-parameter layout must be a valid ~ handle:VUID-vkCmdPushDescriptorSetKHR-pDescriptorWrites-parameter pDescriptorWrites must( be a valid pointer to an array of descriptorWriteCount valid ) structures6VUID-vkCmdPushDescriptorSetKHR-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state4VUID-vkCmdPushDescriptorSetKHR-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must( support graphics, or compute operations?VUID-vkCmdPushDescriptorSetKHR-descriptorWriteCount-arraylength descriptorWriteCount must be greater than 0+VUID-vkCmdPushDescriptorSetKHR-commonparent Both of  commandBuffer, and layout must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth Graphics ComputeSee Also, X, ~, )hvulkanvkCmdPushDescriptorSetWithTemplateKHR - Pushes descriptor updates into a command buffer using a descriptor update template Valid Usage>VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-00366 The pipelineBindPoint specified during the creation of the descriptor update template must be supported by the  commandBuffer@s parent 0 @s queue family6VUID-vkCmdPushDescriptorSetWithTemplateKHR-pData-01686 pData must be a valid pointer to a memory containing one or more valid instances of   ,   , or 0  in a layout defined by descriptorUpdateTemplate when it was created with J Valid Usage (Implicit)VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-parameter  commandBuffer must be a valid  handleVUID-vkCmdPushDescriptorSetWithTemplateKHR-descriptorUpdateTemplate-parameter descriptorUpdateTemplate must be a valid  handle;VUID-vkCmdPushDescriptorSetWithTemplateKHR-layout-parameter layout must be a valid ~ handleVUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateVUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must( support graphics, or compute operations7VUID-vkCmdPushDescriptorSetWithTemplateKHR-commonparent Each of  commandBuffer, descriptorUpdateTemplate, and layout must have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth Graphics Compute API example struct AppDataStructure { VkDescriptorImageInfo imageInfo; // a single image info // ... some more application related data }; const VkDescriptorUpdateTemplateEntry descriptorUpdateTemplateEntries[] = { // binding to a single image descriptor { 0, // binding 0, // dstArrayElement 1, // descriptorCount VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, // descriptorType offsetof(AppDataStructure, imageInfo), // offset 0 // stride is not required if descriptorCount is 1 } }; // create a descriptor update template for push descriptor set updates const VkDescriptorUpdateTemplateCreateInfo createInfo = { VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO, // sType NULL, // pNext 0, // flags 1, // descriptorUpdateEntryCount descriptorUpdateTemplateEntries, // pDescriptorUpdateEntries VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR, // templateType 0, // descriptorSetLayout, ignored by given templateType VK_PIPELINE_BIND_POINT_GRAPHICS, // pipelineBindPoint myPipelineLayout, // pipelineLayout 0, // set }; VkDescriptorUpdateTemplate myDescriptorUpdateTemplate; myResult = vkCreateDescriptorUpdateTemplate( myDevice, &createInfo, NULL, &myDescriptorUpdateTemplate); AppDataStructure appData; // fill appData here or cache it in your engine vkCmdPushDescriptorSetWithTemplateKHR(myCmdBuffer, myDescriptorUpdateTemplate, myPipelineLayout, 0,&appData);See Also, , ~hvulkan commandBuffer is the command buffer that the descriptors will be recorded in.vulkanpipelineBindPoint is a X indicating the type of the pipeline that will use the descriptors. There is a separate set of push descriptor bindings for each pipeline type, so binding one does not disturb the others.vulkanlayout is a ~& object used to program the bindings.vulkanset is the set number of the descriptor set in the pipeline layout that will be updated.vulkanpDescriptorWrites is a pointer to an array of )6 structures describing the descriptors to be updated.hvulkan commandBuffer is the command buffer that the descriptors will be recorded in.vulkandescriptorUpdateTemplate is a descriptor update template defining how to interpret the descriptor information in pData.vulkanlayout is a ~* object used to program the bindings. It must3 be compatible with the layout used to create the descriptorUpdateTemplate handle.vulkanset is the set number of the descriptor set in the pipeline layout that will be updated. This must( be the same number used to create the descriptorUpdateTemplate handle.vulkanpData is a pointer to memory containing descriptors for the templated update. hhhhhhhh hhhhhhhhNone( #$&'(./0289:<>?3G9MNNNNNNNNNNNNMMMMMMMMMMMMMMMMMMMMMMMMMMhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiihMNNNNNNNNNNNNMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNMMMMMMMMMMMMMMMMMMMMMMMMMMWNone( #$&'(./0289:<>?3X:vulkanVkPhysicalDeviceMaintenance3Properties - Structure describing descriptor set properties DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.Valid Usage (Implicit)See Alsoo, vulkanVkDescriptorSetLayoutSupport - Structure returning information about whether a descriptor set layout can be supported Description supported is set to / if the descriptor set can be created, or else is set to /.Valid Usage (Implicit)-VUID-VkDescriptorSetLayoutSupport-sType-sType sType must be  -VUID-VkDescriptorSetLayoutSupport-pNext-pNext pNext must be NULL* or a pointer to a valid instance of .VUID-VkDescriptorSetLayoutSupport-sType-unique The sType" value of each struct in the pNext chain must be uniqueSee Alsoq, , i,  ivulkanpNext is NULL6 or a pointer to a structure extending this structure.ivulkan supported- specifies whether the descriptor set layout can be created.ivulkan%extension-limits-maxPerSetDescriptors maxPerSetDescriptors is a maximum number of descriptors (summed over all descriptor types) in a single descriptor set that is guaranteed to satisfy any implementation-dependent constraints on the size of a descriptor set itself. Applications can query whether a descriptor set that goes beyond this limit is supported using i.ivulkan(extension-limits-maxMemoryAllocationSize maxMemoryAllocationSize2 is the maximum size of a memory allocation that can be created, even if there is more space available in the heap.ivulkanvkGetDescriptorSetLayoutSupport - Query whether a descriptor set layout can be created DescriptionSome implementations have limitations on what fits in a descriptor set which are not easily expressible in terms of existing limits like maxDescriptorSet*, for example if all descriptor types share a limited space in memory but each descriptor is a different size or alignment. This command returns information about whether a descriptor set satisfies this limit. If the descriptor set layout satisfies the ::maxPerSetDescriptors/ limit, this command is guaranteed to return / in :: supported-. If the descriptor set layout exceeds the ::maxPerSetDescriptors limit, whether the descriptor set layout is supported is implementation-dependent and may depend on whether the descriptor sizes and alignments cause the layout to exceed an internal limit.5This command does not consider other limits such as maxPerStageDescriptor*, and so a descriptor set layout that is supported according to this command must3 still satisfy the pipeline layout limits such as maxPerStageDescriptor,* in order to be used in a pipeline layout.Note This is a  query rather than 0  because the answer may depend on enabled features.Valid Usage (Implicit)See Also*, , ivulkandevice is the logical device that would create the descriptor set layout.5VUID-vkGetDescriptorSetLayoutSupport-device-parameter device must be a valid  handlevulkan pCreateInfo is a pointer to a * structure specifying the state of the descriptor set layout object.:VUID-vkGetDescriptorSetLayoutSupport-pCreateInfo-parameter  pCreateInfo must be a valid pointer to a valid * structureiiiiii iiiiiiii  None( #$&'(./0289:<>?3d iiiiiiiii iiiiiiiiiNone( #$&'(./0289:<>?3ev G((((HK$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&$&M""""""""""""""""NO""""""""""""""""""""""W  ay1|111~1111111111111111111@@@@@@@@@@@@TTTTTTTTTT@@@@@@RRRRRRRRRRRRRRR???????????????"""""????????????------>>>>>>>>>>>>>>>>>>>>SSSSSSSUUUUUUUUUUUUfffffffffffffffffffffffffffffffff############iiiiii(((((((()((````````````````````   """"""""""""""##############################''''))))))********,,,,,,1>>???@@@@RRRRSTTUUU```fffffffiiiNone( #$&'(./0289:<>?:vulkanVkRenderPassBeginInfo - Structure specifying render pass begin information Description renderArea is the render area that is affected by the render pass instance. The effects of attachment load, store and multisample resolve operations are restricted to the pixels whose x and y coordinates fall within the render area on all attachments. The render area extends to all layers of  framebuffer. The application must ensure (using scissor if necessary) that all rendering is contained within the render area. The render area, after any transform specified by :: transform is applied, must0 be contained within the framebuffer dimensions.If  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-renderpass-transformrender pass transform is enabled, then  renderArea must: equal the framebuffer pre-transformed dimensions. After  renderArea has been transformed by :: transform, the resulting render area must( be equal to the framebuffer dimensions.When multiview is enabled, the resolve operation at the end of a subpass applies to all views in the view mask.NoteThere may be a performance cost for using a render area smaller than the framebuffer, unless it matches the render area granularity for the render pass. Valid Usage0VUID-VkRenderPassBeginInfo-clearValueCount-00902 clearValueCount must1 be greater than the largest attachment index in  renderPass that specifies a loadOp (or  stencilLoadOp=, if the attachment has a depth/stencil format) of 0VUID-VkRenderPassBeginInfo-clearValueCount-04962 If clearValueCount is not 0,  pClearValues must( be a valid pointer to an array of clearValueCount i unions+VUID-VkRenderPassBeginInfo-renderPass-00904  renderPass must be  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible with the  renderPass member of the 7( structure specified when creating  framebuffer&VUID-VkRenderPassBeginInfo-pNext-02850 If the pNext" chain does not contain  or its deviceRenderAreaCount member is equal to 0, renderArea.offset.x must be greater than or equal to 0&VUID-VkRenderPassBeginInfo-pNext-02851 If the pNext" chain does not contain  or its deviceRenderAreaCount member is equal to 0, renderArea.offset.y must be greater than or equal to 0&VUID-VkRenderPassBeginInfo-pNext-02852 If the pNext" chain does not contain  or its deviceRenderAreaCount member is equal to 0, renderArea.offset.x + renderArea.extent.width must be less than or equal to 7::width the  framebuffer was created with&VUID-VkRenderPassBeginInfo-pNext-02853 If the pNext" chain does not contain  or its deviceRenderAreaCount member is equal to 0, renderArea.offset.y + renderArea.extent.height must$ be less than or equal to 7::height the  framebuffer was created with&VUID-VkRenderPassBeginInfo-pNext-02854 If the pNext chain contains  , the offset.x member of each element of pDeviceRenderAreas must# be greater than or equal to 0&VUID-VkRenderPassBeginInfo-pNext-02855 If the pNext chain contains  , the offset.y member of each element of pDeviceRenderAreas must# be greater than or equal to 0&VUID-VkRenderPassBeginInfo-pNext-02856 If the pNext chain contains , offset.x +  extent.width of each element of pDeviceRenderAreas must be less than or equal to 7::width the  framebuffer was created with&VUID-VkRenderPassBeginInfo-pNext-02857 If the pNext chain contains , offset.y +  extent.height of each element of pDeviceRenderAreas must be less than or equal to 7::height the  framebuffer was created with,VUID-VkRenderPassBeginInfo-framebuffer-03207 If  framebuffer was created with a 7::flags& value that did not include , and the pNext chain includes a  structure, its attachmentCount must be zero,VUID-VkRenderPassBeginInfo-framebuffer-03208 If  framebuffer was created with a 7::flags value that included  , the attachmentCount of a  structure included in the pNext chain must$ be equal to the value of h::attachmentImageInfoCount used to create  framebuffer,VUID-VkRenderPassBeginInfo-framebuffer-02780 If  framebuffer was created with a 7::flags value that included , each element of the  pAttachments member of a  structure included in the pNext chain must$ have been created on the same 0 as  framebuffer and  renderPass,VUID-VkRenderPassBeginInfo-framebuffer-03209 If  framebuffer was created with a 7::flags value that included , each element of the  pAttachments member of a  structure included in the pNext chain must be a 0* of an image created with a value of 1::flags equal to the flags- member of the corresponding element of h::pAttachmentImageInfos used to create  framebuffer,VUID-VkRenderPassBeginInfo-framebuffer-04627 If  framebuffer was created with a 7::flags value that included , each element of the  pAttachments member of a  structure included in the pNext chain must be a 0 with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-inherited-usagean inherited usage equal to the usage- member of the corresponding element of h::pAttachmentImageInfos used to create  framebuffer,VUID-VkRenderPassBeginInfo-framebuffer-03211 If  framebuffer was created with a 7::flags value that included , each element of the  pAttachments member of a  structure included in the pNext chain must be a 0 with a width equal to the width2 member of the corresponding element of h::pAttachmentImageInfos used to create  framebuffer,VUID-VkRenderPassBeginInfo-framebuffer-03212 If  framebuffer was created with a 7::flags value that included , each element of the  pAttachments member of a  structure included in the pNext chain must be a 0! with a height equal to the height- member of the corresponding element of h::pAttachmentImageInfos used to create  framebuffer,VUID-VkRenderPassBeginInfo-framebuffer-03213 If  framebuffer was created with a 7::flags value that included , each element of the  pAttachments member of a  structure included in the pNext chain must be a 0/ of an image created with a value of 2::subresourceRange.layerCount equal to the  layerCount- member of the corresponding element of h::pAttachmentImageInfos used to create  framebuffer,VUID-VkRenderPassBeginInfo-framebuffer-03214 If  framebuffer was created with a 7::flags value that included , each element of the  pAttachments member of a  structure included in the pNext chain must be a 0/ of an image created with a value of g::viewFormatCount equal to the viewFormatCount2 member of the corresponding element of h::pAttachmentImageInfos used to create  framebuffer,VUID-VkRenderPassBeginInfo-framebuffer-03215 If  framebuffer was created with a 7::flags value that included , each element of the  pAttachments member of a  structure included in the pNext chain must be a 09 of an image created with a set of elements in g:: pViewFormats* equal to the set of elements in the  pViewFormats2 member of the corresponding element of h::pAttachmentImageInfos used to create  framebuffer,VUID-VkRenderPassBeginInfo-framebuffer-03216 If  framebuffer was created with a 7::flags value that included , each element of the  pAttachments member of a  structure included in the pNext chain must be a 0* of an image created with a value of 2::format/ equal to the corresponding value of 7::format in  renderPass,VUID-VkRenderPassBeginInfo-framebuffer-03217 If  framebuffer was created with a 7::flags value that included , each element of the  pAttachments member of a  structure included in the pNext chain must be a 0* of an image created with a value of 1::samples/ equal to the corresponding value of 7::samples in  renderPass&VUID-VkRenderPassBeginInfo-pNext-02869 If the pNext chain includes , renderArea.offset must equal (0,0)&VUID-VkRenderPassBeginInfo-pNext-02870 If the pNext chain includes , renderArea.extent transformed by :: transform must equal the  framebuffer dimensionsValid Usage (Implicit)&VUID-VkRenderPassBeginInfo-sType-sType sType must be  &VUID-VkRenderPassBeginInfo-pNext-pNext Each pNext: member of any structure (including this one) in the pNext chain must be either NULL* or a pointer to a valid instance of , , , or 'VUID-VkRenderPassBeginInfo-sType-unique The sType" value of each struct in the pNext chain must be unique/VUID-VkRenderPassBeginInfo-renderPass-parameter  renderPass must be a valid z handle0VUID-VkRenderPassBeginInfo-framebuffer-parameter  framebuffer must be a valid  handle'VUID-VkRenderPassBeginInfo-commonparent Both of  framebuffer , and  renderPass must? have been created, allocated, or retrieved from the same 0See Alsoi, , r, z, , j, d ,  vulkanVkImageSubresourceLayers - Structure specifying an image subresource layers Valid Usage.VUID-VkImageSubresourceLayers-aspectMask-00167 If  aspectMask contains  , it must not contain either of   or  .VUID-VkImageSubresourceLayers-aspectMask-00168  aspectMask must not contain  .VUID-VkImageSubresourceLayers-aspectMask-02247  aspectMask must not include &VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT for any index i.VUID-VkImageSubresourceLayers-layerCount-01700  layerCount must be greater than 0Valid Usage (Implicit)2VUID-VkImageSubresourceLayers-aspectMask-parameter  aspectMask must be a valid combination of   values8VUID-VkImageSubresourceLayers-aspectMask-requiredbitmask  aspectMask must not be 0See Also&, , ", ", , !, ,  ,  vulkanVkImageResolve - Structure specifying an image resolve operation Valid Usage$VUID-VkImageResolve-aspectMask-00266 The  aspectMask member of srcSubresource and dstSubresource must only contain $VUID-VkImageResolve-layerCount-00267 The  layerCount member of srcSubresource and dstSubresource must matchValid Usage (Implicit),VUID-VkImageResolve-srcSubresource-parameter srcSubresource must be a valid  structure,VUID-VkImageResolve-dstSubresource-parameter dstSubresource must be a valid  structureSee Alsou, , s, j!vulkan:VkImageCopy - Structure specifying an image copy operation DescriptionFor  images, copies are performed slice by slice starting with the z member of the  srcOffset or  dstOffset, and copying depth slices. For images with multiple layers, copies are performed layer by layer starting with the baseArrayLayer member of the srcSubresource or dstSubresource and copying  layerCount layers. Image data can be copied between images with different image types. If one image is  and the other image is  with multiple layers, then each slice is copied to or from a different layer.Copies involving a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar image format2 specify the region to be copied in terms of the plane to be copied, not the coordinates of the multi-planar image. This means that copies accessing the R/B planes of @_422@ format images must( fit the copied region within half the width of the parent image, and that copies accessing the R/B planes of @_420@ format images must( fit the copied region within half the width and height of the parent image. Valid UsageVUID-VkImageCopy-extent-00140 The number of slices of the extent (for 3D) or layers of the srcSubresource (for non-3D) must( match the number of slices of the extent (for 3D) or layers of the dstSubresource (for non-3D)Valid Usage (Implicit))VUID-VkImageCopy-srcSubresource-parameter srcSubresource must be a valid  structure)VUID-VkImageCopy-dstSubresource-parameter dstSubresource must be a valid  structureSee Alsou, , s, i"vulkan:VkImageBlit - Structure specifying an image blit operation DescriptionFor each element of the pRegions array, a blit operation is performed for the specified source and destination regions. Valid Usage!VUID-VkImageBlit-aspectMask-00238 The  aspectMask member of srcSubresource and dstSubresource must match!VUID-VkImageBlit-layerCount-00239 The  layerCount member of srcSubresource and dstSubresource must matchValid Usage (Implicit))VUID-VkImageBlit-srcSubresource-parameter srcSubresource must be a valid  structure)VUID-VkImageBlit-dstSubresource-parameter dstSubresource must be a valid  structureSee Also, s, i#vulkan4VkClearRect - Structure specifying a clear rectangle Description The layers [baseArrayLayer, baseArrayLayer +  layerCount) counting from the base layer of the attachment image view are cleared.See Alsor, j$vulkanVkClearDepthStencilValue - Structure specifying a clear depth stencil value Valid Usage)VUID-VkClearDepthStencilValue-depth-00022 Unless the VK_EXT_depth_range_unrestricted extension is enabled depth must be between 0.0 and 1.0 , inclusiveSee Alsoi, j%vulkan;VkClearAttachment - Structure specifying a clear attachment Valid Usage'VUID-VkClearAttachment-aspectMask-00019 If  aspectMask includes  , it must not include   or  'VUID-VkClearAttachment-aspectMask-00020  aspectMask must not include  'VUID-VkClearAttachment-aspectMask-02246  aspectMask must not include &VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT for any index i'VUID-VkClearAttachment-clearValue-00021  clearValue must be a valid i unionValid Usage (Implicit)+VUID-VkClearAttachment-aspectMask-parameter  aspectMask must% be a valid combination of   values1VUID-VkClearAttachment-aspectMask-requiredbitmask  aspectMask must not be 0See Alsoi, ", j&vulkanVkBufferImageCopy - Structure specifying a buffer image copy operation DescriptionWhen copying to or from a depth or stencil aspect, the data in buffer memory uses a layout that is a (mostly) tightly packed representation of the depth or stencil data. Specifically:data copied to or from the stencil aspect of any depth/stencil format is tightly packed with one  value per texel.2data copied to or from the depth aspect of a  or - format is tightly packed with one  value per texel.2data copied to or from the depth aspect of a  or - format is tightly packed with one  value per texel.2data copied to or from the depth aspect of a  or  format is packed with one 32-bit word per texel with the D24 value in the LSBs of the word, and undefined values in the eight MSBs.NoteTo copy both the depth and stencil aspects of a depth/stencil format, two entries in pRegions can3 be used, where one specifies the depth aspect in imageSubresource., and the other specifies the stencil aspect.7Because depth or stencil aspect buffer to image copies may require format conversions on some implementations, they are not supported on queues that do not support graphics.)When copying to a depth aspect, and the VK_EXT_depth_range_unrestricted6 extension is not enabled, the data in buffer memory must? be in the range [0,1], or the resulting values are undefined.:Copies are done layer by layer starting with image layer baseArrayLayer member of imageSubresource.  layerCount layers are copied from the source image or to the destination image.For purpose of valid usage statements here and in related copy commands, a  blocked image is defined as:an image with a  single-plane, @_422@ format, which is treated as a format with a 2  1 compressed texel block, ora compressed image. Valid Usage,VUID-VkBufferImageCopy-bufferRowLength-00195 bufferRowLength must be 0", or greater than or equal to the width member of  imageExtent.VUID-VkBufferImageCopy-bufferImageHeight-00196 bufferImageHeight must be 0", or greater than or equal to the height member of  imageExtent'VUID-VkBufferImageCopy-aspectMask-00212 The  aspectMask member of imageSubresource must only have a single bit setValid Usage (Implicit)1VUID-VkBufferImageCopy-imageSubresource-parameter imageSubresource must be a valid  structureSee Alsoo, u, , s, i, i'vulkan;VkBufferCopy - Structure specifying a buffer copy operation Valid UsageVUID-VkBufferCopy-size-01988 The size must be greater than 0See Alsoo, iivulkan aspectMask is a mask selecting the color, depth and/or stencil aspects of the attachment to be cleared.ivulkancolorAttachment is only meaningful if  is set in  aspectMask, in which case it is an index into the currently bound color attachments.ivulkan clearValue is the color or depth/stencil value to clear the attachment to, as described in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears-values Clear Values below.ivulkandepth is the clear value for the depth aspect of the depth/stencil attachment. It is a floating-point value which is automatically converted to the attachment@s format.ivulkanstencil is the clear value for the stencil aspect of the depth/stencil attachment. It is a 32-bit integer value which is converted to the attachment@s format by taking the appropriate number of LSBs.ivulkanpNext is NULL6 or a pointer to a structure extending this structure.ivulkan renderPass, is the render pass to begin an instance of.ivulkan framebuffer is the framebuffer containing the attachments that are used with the render pass.ivulkan renderArea is the render area that is affected by the render pass instance, and is described in more detail below.ivulkan pClearValues is a pointer to an array of clearValueCount i structures that contains clear values for each attachment, if the attachment uses a loadOp value of = or if the attachment has a depth/stencil format and uses a  stencilLoadOp value of . The array is indexed by attachment number. Only elements corresponding to cleared attachments are used. Other elements of  pClearValues are ignored.ivulkansrcSubresource and dstSubresource are  structures specifying the image subresources of the images used for the source and destination image data, respectively. Resolve of depth/stencil images is not supported.ivulkan srcOffset and  dstOffset select the initial x, y, and z offsets in texels of the sub-regions of the source and destination image data.ivulkanextent: is the size in texels of the source image to resolve in width, height and depth.ivulkan bufferOffset is the offset in bytes from the start of the buffer object where the image data is copied from or to.ivulkanbufferRowLength and bufferImageHeight specify in texels a subregion of a larger two- or three-dimensional image in buffer memory, and control the addressing calculations. If either of these values is zero, that aspect of the buffer memory is considered to be tightly packed according to the  imageExtent.ivulkanimageSubresource is a  used to specify the specific image subresources of the image used for the source or destination image data.ivulkan imageOffset selects the initial x, y, z offsets in texels of the sub-region of the source or destination image data.ivulkan imageExtent/ is the size in texels of the image to copy in width, height and depth.ivulkansrcSubresource! is the subresource to blit from.ivulkan srcOffsets" is a pointer to an array of two s? structures specifying the bounds of the source region within srcSubresource.ivulkandstSubresource! is the subresource to blit into.ivulkan dstOffsets" is a pointer to an array of two s structures specifying the bounds of the destination region within dstSubresource.ivulkansrcSubresource and dstSubresource are  structures specifying the image subresources of the images used for the source and destination image data, respectively.ivulkan srcOffset and  dstOffset select the initial x, y, and z offsets in texels of the sub-regions of the source and destination image data.ivulkanextent/ is the size in texels of the image to copy in width, height and depth.ivulkan srcOffset4 is the starting offset in bytes from the start of  srcBuffer.ivulkan dstOffset4 is the starting offset in bytes from the start of  dstBuffer.ivulkansize is the number of bytes to copy.ivulkan aspectMask is a combination of  , selecting the color, depth and/or stencil aspects to be copied.ivulkanmipLevel is the mipmap level to copyivulkanbaseArrayLayer and  layerCount6 are the starting layer and number of layers to copy.ivulkanrect- is the two-dimensional region to be cleared.ivulkanbaseArrayLayer" is the first layer to be cleared.ivulkan layerCount" is the number of layers to clear.ivulkan>vkCmdBindPipeline - Bind a pipeline object to a command buffer DescriptionOnce bound, a pipeline binding affects subsequent commands that interact with the given pipeline type in the command buffer until a different pipeline of the same type is bound to the bind point. Commands that do not interact with the given pipeline type must( not be affected by the pipeline state.The pipeline bound to ( controls the behavior of all  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dispatchdispatching commands.The pipeline bound to ( controls the behavior of all  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawingdrawing commands.The pipeline bound to $ controls the behavior of   and . Valid Usage.VUID-vkCmdBindPipeline-pipelineBindPoint-00777 If pipelineBindPoint is  , the 0  that  commandBuffer was allocated from must support compute operations .VUID-vkCmdBindPipeline-pipelineBindPoint-00778 If pipelineBindPoint is  , the 0  that  commandBuffer was allocated from must support graphics operations.VUID-vkCmdBindPipeline-pipelineBindPoint-00779 If pipelineBindPoint is , pipeline must be a compute pipeline.VUID-vkCmdBindPipeline-pipelineBindPoint-00780 If pipelineBindPoint is , pipeline must be a graphics pipeline%VUID-vkCmdBindPipeline-pipeline-00781 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-variableMultisampleRatevariable multisample rate feature is not supported, pipeline7 is a graphics pipeline, the current subpass  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachmentsuses no attachments, and this is not the first call to this function with a graphics pipeline after transitioning to the current subpass, then the sample count specified by this pipeline must- match that set in the previous pipeline4VUID-vkCmdBindPipeline-variableSampleLocations-01525 If ::variableSampleLocations is /, and pipeline1 is a graphics pipeline created with a  structure having its sampleLocationsEnable member set to / but without 4 enabled then the current render pass instance must+ have been begun by specifying a  structure whose pPostSubpassSampleLocations( member contains an element with a  subpassIndex1 matching the current subpass index and the sampleLocationsInfo member of that element must match the sampleLocationsInfo specified in # when the pipeline was created!VUID-vkCmdBindPipeline-None-02323 This command must7 not be recorded when transform feedback is active.VUID-vkCmdBindPipeline-pipelineBindPoint-02391 If pipelineBindPoint is  , the 0  that  commandBuffer was allocated from must support compute operations.VUID-vkCmdBindPipeline-pipelineBindPoint-02392 If pipelineBindPoint is , pipeline must be a ray tracing pipeline%VUID-vkCmdBindPipeline-pipeline-03382 pipeline must& not have been created with   set*VUID-vkCmdBindPipeline-commandBuffer-04808 If  commandBuffer. is a secondary command buffer with ::viewportScissor2D enabled and pipelineBindPoint is , then the pipeline must have been created with   or  , and   or  enabled*VUID-vkCmdBindPipeline-commandBuffer-04809 If  commandBuffer. is a secondary command buffer with ::viewportScissor2D enabled and pipelineBindPoint is  and pipeline was created with  structure and its discardRectangleCount member is not 0, then the pipeline must have been created with  enabled.VUID-vkCmdBindPipeline-pipelineBindPoint-04881 If pipelineBindPoint is  and the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-provokingVertexModePerPipelineprovokingVertexModePerPipeline limit is /, then pipeline@s ::provokingVertexMode must be the same as that of any other pipelines previously bound to this bind point within the current renderpass instance, including any pipeline already bound when beginning the renderpass instanceValid Usage (Implicit).VUID-vkCmdBindPipeline-commandBuffer-parameter  commandBuffer must be a valid  handle2VUID-vkCmdBindPipeline-pipelineBindPoint-parameter pipelineBindPoint must be a valid X value)VUID-vkCmdBindPipeline-pipeline-parameter pipeline must be a valid  handle.VUID-vkCmdBindPipeline-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state,VUID-vkCmdBindPipeline-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must( support graphics, or compute operations#VUID-vkCmdBindPipeline-commonparent Both of  commandBuffer , and pipeline must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth Graphics ComputeSee Also, , Xivulkan7vkCmdSetViewport - Set the viewport on a command buffer Description0The viewport parameters taken from element i of  pViewports3 replace the current state for the viewport index  firstViewport + i, for i in [0,  viewportCount). Valid Usage)VUID-vkCmdSetViewport-firstViewport-01223 The sum of  firstViewport and  viewportCount must be between 1 and  :: maxViewports, inclusive)VUID-vkCmdSetViewport-firstViewport-01224 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled,  firstViewport must be 0)VUID-vkCmdSetViewport-viewportCount-01225 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled,  viewportCount must be 1)VUID-vkCmdSetViewport-commandBuffer-04821  commandBuffer must not have ::viewportScissor2D enabledValid Usage (Implicit)-VUID-vkCmdSetViewport-commandBuffer-parameter  commandBuffer must be a valid  handle*VUID-vkCmdSetViewport-pViewports-parameter  pViewports must( be a valid pointer to an array of  viewportCount valid  structures-VUID-vkCmdSetViewport-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state+VUID-vkCmdSetViewport-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operations/VUID-vkCmdSetViewport-viewportCount-arraylength  viewportCount must be greater than 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth  Graphics See Also, ivulkanvkCmdSetScissor - Set the dynamic scissor rectangles on a command buffer Description/The scissor rectangles taken from element i of  pScissors2 replace the current state for the scissor index  firstScissor + i, for i in [0,  scissorCount).This command sets the state for a given draw when the graphics pipeline is created with  set in 8::pDynamicStates. Valid Usage'VUID-vkCmdSetScissor-firstScissor-00592 The sum of  firstScissor and  scissorCount must be between 1 and  :: maxViewports, inclusive'VUID-vkCmdSetScissor-firstScissor-00593 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled,  firstScissor must be 0'VUID-vkCmdSetScissor-scissorCount-00594 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled,  scissorCount must be 1VUID-vkCmdSetScissor-x-00595 The x and y members of offset member of any element of  pScissors must" be greater than or equal to 0!VUID-vkCmdSetScissor-offset-00596 Evaluation of (offset.x +  extent.width) must not cause a signed integer addition overflow for any element of  pScissors!VUID-vkCmdSetScissor-offset-00597 Evaluation of (offset.y +  extent.height) must not cause a signed integer addition overflow for any element of  pScissors,VUID-vkCmdSetScissor-viewportScissor2D-04789 If this command is recorded in a secondary command buffer with ::viewportScissor2D" enabled, then this function must not be calledValid Usage (Implicit),VUID-vkCmdSetScissor-commandBuffer-parameter  commandBuffer must be a valid  handle(VUID-vkCmdSetScissor-pScissors-parameter  pScissors must( be a valid pointer to an array of  scissorCount r structures,VUID-vkCmdSetScissor-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state*VUID-vkCmdSetScissor-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operations-VUID-vkCmdSetScissor-scissorCount-arraylength  scissorCount must be greater than 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth  Graphics See Also, rivulkan4vkCmdSetLineWidth - Set the dynamic line width state Valid Usage&VUID-vkCmdSetLineWidth-lineWidth-00788 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-wideLines wide lines feature is not enabled,  lineWidth must be 1.0Valid Usage (Implicit).VUID-vkCmdSetLineWidth-commandBuffer-parameter  commandBuffer must be a valid  handle.VUID-vkCmdSetLineWidth-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state,VUID-vkCmdSetLineWidth-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth  Graphics See Alsoivulkan4vkCmdSetDepthBias - Set the depth bias dynamic state DescriptionIf depthBiasEnable is / at draw time, no depth bias is applied and the fragment@s depth values are unchanged.depthBiasSlopeFactor5 scales the maximum depth slope of the polygon, and depthBiasConstantFactor scales the minimum resolvable difference of the depth buffer. The resulting values are summed to produce the depth bias value which is then clamped to a minimum or maximum value specified by depthBiasClamp. depthBiasSlopeFactor, depthBiasConstantFactor, and depthBiasClamp can& each be positive, negative, or zero.*The maximum depth slope m of a triangle ism = \sqrt{ \left({{\partial z_f} \over {\partial x_f}}\right)^2 + \left({{\partial z_f} \over {\partial y_f}}\right)^2}1where (xf, yf, zf) is a point on the triangle. m may be approximated asm = \max\left( \left| { {\partial z_f} \over {\partial x_f} } \right|, \left| { {\partial z_f} \over {\partial y_f} } \right| \right).The minimum resolvable difference r is a parameter that depends on the depth buffer representation. It is the smallest difference in framebuffer coordinate z values that is guaranteed to remain distinct throughout polygon rasterization and in the depth buffer. All pairs of fragments generated by the rasterization of two polygons with otherwise identical vertices, but z as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain ;VUID-vkCmdDraw-mipmapMode-04770 If a 0  created with  mipmapMode equal to   and  compareEnable equal to / is used to sample a 0> as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain VUID-vkCmdDraw-None-02691 If a 0 is accessed using atomic operations as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain  VUID-vkCmdDraw-None-02692 If a 0 is sampled with  > as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain   VUID-vkCmdDraw-filterCubic-02694 Any 0 being sampled with  " as a result of this command must have a   and format that supports cubic filtering, as specified by :: filterCubic returned by U &VUID-vkCmdDraw-filterCubicMinmax-02695 Any 0 being sampled with  + with a reduction mode of either   or  " as a result of this command must have a   and format that supports cubic filtering together with minmax filtering, as specified by ::filterCubicMinmax returned by U VUID-vkCmdDraw-flags-02696 Any  created with a 1::flags containing * sampled as a result of this command must only be sampled using a   of  VUID-vkCmdDraw-None-02697 For each set n% that is statically used by the  bound to the pipeline bind point used by this command, a descriptor set must have been bound to n. at the same pipeline bind point, with a ~! that is compatible for set n , with the ~! used to create the current , as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???VUID-vkCmdDraw-None-02698< For each push constant that is statically used by the  bound to the pipeline bind point used by this command, a push constant value must= have been set for the same pipeline bind point, with a ~6 that is compatible for push constants, with the ~! used to create the current , as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???VUID-vkCmdDraw-None-02699> Descriptors in each bound descriptor set, specified via i, must2 be valid if they are statically used by the ; bound to the pipeline bind point used by this commandVUID-vkCmdDraw-None-02700 A valid pipeline must> be bound to the pipeline bind point used by this command"VUID-vkCmdDraw-commandBuffer-02701 If the  object bound to the pipeline bind point used by this command requires any dynamic state, that state must) have been set or inherited (if the  VK_NV_inherited_viewport_scissor extension is enabled) for  commandBuffer, and done so after any previously bound pipeline with the corresponding state not specified as dynamicVUID-vkCmdDraw-None-02859 There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the  object bound to the pipeline bind point used by this command, since that pipeline was boundVUID-vkCmdDraw-None-02702 If the  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must% not be used to sample from any  with a 0 of the type  ,  ,  ,   or  , in any shader stageVUID-vkCmdDraw-None-02703 If the  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj( in their name, in any shader stageVUID-vkCmdDraw-None-02704 If the  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions that includes a LOD bias or any offset values, in any shader stageVUID-vkCmdDraw-None-02705 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the  object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind pointVUID-vkCmdDraw-None-02706 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the  object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"VUID-vkCmdDraw-commandBuffer-02707 If  commandBuffer is an unprotected command buffer, any resource accessed by the  object bound to the pipeline bind point used by this command must not be a protected resourceVUID-vkCmdDraw-None-04115 If a 0 is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel operand of that instruction must have at least as many components as the image view@s format!VUID-vkCmdDraw-OpImageWrite-04469 If a 0  is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction must have at least as many components as the buffer view@s format VUID-vkCmdDraw-SampledType-04470 If a 0 with a  that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64 VUID-vkCmdDraw-SampledType-04471 If a 0 with a  that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32 VUID-vkCmdDraw-SampledType-04472 If a 0  with a  that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64 VUID-vkCmdDraw-SampledType-04473 If a 0  with a  that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32,VUID-vkCmdDraw-sparseImageInt64Atomics-04474 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, $ objects created with the   flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command,VUID-vkCmdDraw-sparseImageInt64Atomics-04475 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, $ objects created with the   flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this commandVUID-vkCmdDraw-renderPass-02684 The current render pass must be  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible with the  renderPass member of the 8, structure specified when creating the  bound to VUID-vkCmdDraw-subpass-026853 The subpass index of the current render pass must be equal to the subpass member of the 8, structure specified when creating the  bound to VUID-vkCmdDraw-None-026869 Every input attachment used by the current subpass must. be bound to the pipeline via a descriptor setVUID-vkCmdDraw-None-04584 Image subresources used as attachments in the current render pass must not be accessed in any way other than as an attachment by this command, except for cases involving read-only access to depth/stencil attachments as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass chapter.VUID-vkCmdDraw-maxMultiviewInstanceIndex-02688 If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to X::maxMultiviewInstanceIndex*VUID-vkCmdDraw-sampleLocationsEnable-02689; If the bound graphics pipeline was created with ::sampleLocationsEnable set to / and the current subpass has a depth/stencil attachment, then that attachment must& have been created with the   bit set"VUID-vkCmdDraw-viewportCount-03417 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  ' dynamic state enabled, then   must have been called in the current command buffer prior to this drawing command, and the  viewportCount parameter of   must match the 8:: scissorCount of the pipeline!VUID-vkCmdDraw-scissorCount-03418 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  ' dynamic state enabled, then  must have been called in the current command buffer prior to this drawing command, and the  scissorCount parameter of  must match the 8:: viewportCount of the pipeline"VUID-vkCmdDraw-viewportCount-03419 If the bound graphics pipeline state was created with both the   and  , dynamic states enabled then both   and  must have been called in the current command buffer prior to this drawing command, and the  viewportCount parameter of   must match the  scissorCount parameter of "VUID-vkCmdDraw-viewportCount-04137 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  > dynamic state enabled, then the bound graphics pipeline must" have been created with :: viewportCount greater or equal to the  viewportCount) parameter in the last call to  "VUID-vkCmdDraw-viewportCount-04138 If the bound graphics pipeline state was created with the   and  & dynamic states enabled then the  viewportCount) parameter in the last call to   must! be greater than or equal to the  viewportCount) parameter in the last call to  "VUID-vkCmdDraw-viewportCount-04139 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  > dynamic state enabled, then the bound graphics pipeline must" have been created with :: viewportCount greater or equal to the  viewportCount) parameter in the last call to  "VUID-vkCmdDraw-viewportCount-04140 If the bound graphics pipeline state was created with the   and  & dynamic states enabled then the  viewportCount) parameter in the last call to   must! be greater than or equal to the  viewportCount) parameter in the last call to  0VUID-vkCmdDraw-VkPipelineVieportCreateInfo-04141 If the bound graphics pipeline state was created with the  4 dynamic state enabled and an instance of  chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with :: viewportCount greater or equal to the  viewportCount) parameter in the last call to  0VUID-vkCmdDraw-VkPipelineVieportCreateInfo-04142 If the bound graphics pipeline state was created with the  4 dynamic state enabled and an instance of  chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with ::exclusiveScissorCount greater or equal to the  viewportCount) parameter in the last call to  &VUID-vkCmdDraw-primitiveTopology-03420 If the bound graphics pipeline state was created with the  & dynamic state enabled then   must have been called in the current command buffer prior to this drawing command, and the primitiveTopology parameter of   must be of the same  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-classtopology class as the pipeline 8::topology stateVUID-vkCmdDraw-None-04875 If the bound graphics pipeline state was created with the  & dynamic state enabled then   must have been called in the current command buffer prior to this drawing commandVUID-vkCmdDraw-None-04876 If the bound graphics pipeline state was created with the  & dynamic state enabled then  must have been called in the current command buffer prior to this drawing commandVUID-vkCmdDraw-None-04877 If the bound graphics pipeline state was created with the  & dynamic state enabled then  must have been called in the current command buffer prior to this drawing commandVUID-vkCmdDraw-logicOp-04878 If the bound graphics pipeline state was created with the  & dynamic state enabled then   must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid   valueVUID-vkCmdDraw-None-04879 If the bound graphics pipeline state was created with the  & dynamic state enabled then  must have been called in the current command buffer prior to this drawing commandVUID-vkCmdDraw-primitiveFragmentShadingRateWithMultipleViewports-04552 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports1primitiveFragmentShadingRateWithMultipleViewports limit is not supported, the bound graphics pipeline was created with the   dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the PrimitiveShadingRateKHR built-in, then   must have been called in the current command buffer prior to this drawing command, and the  viewportCount parameter of   must be 1 VUID-vkCmdDraw-blendEnable-04727 If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features do not contain  , then the  blendEnable1 member of the corresponding element of the  pAttachments member of pColorBlendState must be /)VUID-vkCmdDraw-rasterizationSamples-04740 If rasterization is not disabled in the bound graphics pipeline, and neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples# extensions are enabled, then 8::rasterizationSamples must be the same as the current subpass color and/or depth/stencil attachmentsVUID-vkCmdDraw-None-04912 If the bound graphics pipeline was created with both the   and  ( dynamic states enabled, then   must have been called in the current command buffer prior to this draw commandVUID-vkCmdDraw-pStrides-04913? If the bound graphics pipeline was created with the  . dynamic state enabled, but not the  ' dynamic state enabled, then  must have been called in the current command buffer prior to this draw command, and the pStrides parameter of  must not be NULLVUID-vkCmdDraw-None-04914 If the bound graphics pipeline state was created with the  ' dynamic state enabled, then   must have been called in the current command buffer prior to this draw command"VUID-vkCmdDraw-commandBuffer-02712 If  commandBuffer is a protected command buffer, any resource written to by the  object bound to the pipeline bind point used by this command must not be an unprotected resource"VUID-vkCmdDraw-commandBuffer-02713 If  commandBuffer is a protected command buffer, pipeline stages other than the framebuffer-space and compute stages in the  object bound to the pipeline bind point used by this command must not write to any resource"VUID-vkCmdDraw-commandBuffer-04617) If any of the shader stages of the  bound to the pipeline bind point used by this command uses the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-RayQueryKHR RayQueryKHR capability, then  commandBuffer must' not be a protected command bufferVUID-vkCmdDraw-None-04007 All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point@s interface must have either valid or  buffers boundVUID-vkCmdDraw-None-04008 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point@s interface must not be VUID-vkCmdDraw-None-02721 For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input???Valid Usage (Implicit)&VUID-vkCmdDraw-commandBuffer-parameter  commandBuffer must be a valid  handle&VUID-vkCmdDraw-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state$VUID-vkCmdDraw-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operationsVUID-vkCmdDraw-renderpass This command must5 only be called inside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryInside  Graphics See Alsoivulkan8vkCmdDrawIndexed - Draw primitives with indexed vertices DescriptionWhen the command is executed, primitives are assembled using the current primitive topology and  indexCount vertices whose indices are retrieved from the index buffer. The index buffer is treated as an array of tightly packed unsigned integers of size defined by the i:: indexType, parameter with which the buffer was bound.*The first vertex index is at an offset of  firstIndex   indexSize + offset& within the bound index buffer, where offset is the offset specified by i and  indexSize, is the byte size of the type specified by  indexType. Subsequent index values are retrieved from consecutive locations in the index buffer. Indices are first compared to the primitive restart value, then zero extended to 32 bits (if the  indexType is ! or ! ) and have  vertexOffset- added to them, before being supplied as the  vertexIndex value.The primitives are drawn  instanceCount times with  instanceIndex starting with  firstInstance and increasing sequentially for each instance. The assembled primitives execute the bound graphics pipeline. Valid Usage%VUID-vkCmdDrawIndexed-magFilter-04553 If a 0  created with  magFilter or  minFilter equal to & and  compareEnable equal to / is used to sample a 0> as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain <&VUID-vkCmdDrawIndexed-mipmapMode-04770 If a 0  created with  mipmapMode equal to   and  compareEnable equal to / is used to sample a 0> as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain  VUID-vkCmdDrawIndexed-None-02691 If a 0 is accessed using atomic operations as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain   VUID-vkCmdDrawIndexed-None-02692 If a 0 is sampled with  > as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain  'VUID-vkCmdDrawIndexed-filterCubic-02694 Any 0 being sampled with  " as a result of this command must have a   and format that supports cubic filtering, as specified by :: filterCubic returned by U -VUID-vkCmdDrawIndexed-filterCubicMinmax-02695 Any 0 being sampled with  + with a reduction mode of either   or  " as a result of this command must have a   and format that supports cubic filtering together with minmax filtering, as specified by ::filterCubicMinmax returned by U !VUID-vkCmdDrawIndexed-flags-02696 Any  created with a 1::flags containing * sampled as a result of this command must only be sampled using a   of   VUID-vkCmdDrawIndexed-None-02697 For each set n% that is statically used by the  bound to the pipeline bind point used by this command, a descriptor set must have been bound to n. at the same pipeline bind point, with a ~! that is compatible for set n , with the ~! used to create the current , as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility??? VUID-vkCmdDrawIndexed-None-02698< For each push constant that is statically used by the  bound to the pipeline bind point used by this command, a push constant value must= have been set for the same pipeline bind point, with a ~6 that is compatible for push constants, with the ~! used to create the current , as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility??? VUID-vkCmdDrawIndexed-None-02699> Descriptors in each bound descriptor set, specified via i, must7 be valid if they are statically used by the ; bound to the pipeline bind point used by this command VUID-vkCmdDrawIndexed-None-02700 A valid pipeline must> be bound to the pipeline bind point used by this command)VUID-vkCmdDrawIndexed-commandBuffer-02701 If the  object bound to the pipeline bind point used by this command requires any dynamic state, that state must) have been set or inherited (if the  VK_NV_inherited_viewport_scissor extension is enabled) for  commandBuffer, and done so after any previously bound pipeline with the corresponding state not specified as dynamic VUID-vkCmdDrawIndexed-None-02859 There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the  object bound to the pipeline bind point used by this command, since that pipeline was bound VUID-vkCmdDrawIndexed-None-02702 If the  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must% not be used to sample from any  with a 0 of the type  ,  ,  ,   or  , in any shader stage VUID-vkCmdDrawIndexed-None-02703 If the  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj# in their name, in any shader stage VUID-vkCmdDrawIndexed-None-02704 If the  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions that includes a LOD bias or any offset values, in any shader stage VUID-vkCmdDrawIndexed-None-02705 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the  object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point VUID-vkCmdDrawIndexed-None-02706 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the  object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point)VUID-vkCmdDrawIndexed-commandBuffer-02707 If  commandBuffer is an unprotected command buffer, any resource accessed by the  object bound to the pipeline bind point used by this command must not be a protected resource VUID-vkCmdDrawIndexed-None-04115 If a 0 is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction must have at least as many components as the image view@s format(VUID-vkCmdDrawIndexed-OpImageWrite-04469 If a 0  is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction must have at least as many components as the buffer view@s format'VUID-vkCmdDrawIndexed-SampledType-04470 If a 0 with a  that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64'VUID-vkCmdDrawIndexed-SampledType-04471 If a 0 with a  that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32'VUID-vkCmdDrawIndexed-SampledType-04472 If a 0  with a  that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64'VUID-vkCmdDrawIndexed-SampledType-04473 If a 0  with a  that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 323VUID-vkCmdDrawIndexed-sparseImageInt64Atomics-04474 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, $ objects created with the   flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command3VUID-vkCmdDrawIndexed-sparseImageInt64Atomics-04475 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, $ objects created with the   flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command&VUID-vkCmdDrawIndexed-renderPass-02684 The current render pass must be  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible with the  renderPass member of the 8, structure specified when creating the  bound to #VUID-vkCmdDrawIndexed-subpass-026853 The subpass index of the current render pass must be equal to the subpass member of the 8, structure specified when creating the  bound to  VUID-vkCmdDrawIndexed-None-026869 Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor set VUID-vkCmdDrawIndexed-None-04584 Image subresources used as attachments in the current render pass must not be accessed in any way other than as an attachment by this command, except for cases involving read-only access to depth/stencil attachments as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass chapter5VUID-vkCmdDrawIndexed-maxMultiviewInstanceIndex-02688 If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to X::maxMultiviewInstanceIndex1VUID-vkCmdDrawIndexed-sampleLocationsEnable-02689; If the bound graphics pipeline was created with ::sampleLocationsEnable set to / and the current subpass has a depth/stencil attachment, then that attachment must& have been created with the   bit set)VUID-vkCmdDrawIndexed-viewportCount-03417 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  ' dynamic state enabled, then   must have been called in the current command buffer prior to this drawing command, and the  viewportCount parameter of   must match the 8:: scissorCount of the pipeline(VUID-vkCmdDrawIndexed-scissorCount-03418 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  ' dynamic state enabled, then  must have been called in the current command buffer prior to this drawing command, and the  scissorCount parameter of  must match the 8:: viewportCount of the pipeline)VUID-vkCmdDrawIndexed-viewportCount-03419 If the bound graphics pipeline state was created with both the   and  , dynamic states enabled then both   and  must have been called in the current command buffer prior to this drawing command, and the  viewportCount parameter of   must match the  scissorCount parameter of )VUID-vkCmdDrawIndexed-viewportCount-04137 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  > dynamic state enabled, then the bound graphics pipeline must" have been created with :: viewportCount greater or equal to the  viewportCount) parameter in the last call to  )VUID-vkCmdDrawIndexed-viewportCount-04138 If the bound graphics pipeline state was created with the   and  & dynamic states enabled then the  viewportCount) parameter in the last call to   must! be greater than or equal to the  viewportCount) parameter in the last call to  )VUID-vkCmdDrawIndexed-viewportCount-04139 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  > dynamic state enabled, then the bound graphics pipeline must" have been created with :: viewportCount greater or equal to the  viewportCount) parameter in the last call to  )VUID-vkCmdDrawIndexed-viewportCount-04140 If the bound graphics pipeline state was created with the   and  & dynamic states enabled then the  viewportCount) parameter in the last call to   must! be greater than or equal to the  viewportCount) parameter in the last call to  7VUID-vkCmdDrawIndexed-VkPipelineVieportCreateInfo-04141 If the bound graphics pipeline state was created with the  4 dynamic state enabled and an instance of  chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with :: viewportCount greater or equal to the  viewportCount) parameter in the last call to  7VUID-vkCmdDrawIndexed-VkPipelineVieportCreateInfo-04142 If the bound graphics pipeline state was created with the  4 dynamic state enabled and an instance of  chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with ::exclusiveScissorCount greater or equal to the  viewportCount) parameter in the last call to  -VUID-vkCmdDrawIndexed-primitiveTopology-03420 If the bound graphics pipeline state was created with the  & dynamic state enabled then   must have been called in the current command buffer prior to this drawing command, and the primitiveTopology parameter of   must be of the same  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-classtopology class as the pipeline 8::topology state VUID-vkCmdDrawIndexed-None-04875 If the bound graphics pipeline state was created with the  & dynamic state enabled then   must have been called in the current command buffer prior to this drawing command VUID-vkCmdDrawIndexed-None-04876 If the bound graphics pipeline state was created with the  & dynamic state enabled then  must have been called in the current command buffer prior to this drawing command VUID-vkCmdDrawIndexed-None-04877 If the bound graphics pipeline state was created with the  & dynamic state enabled then  must have been called in the current command buffer prior to this drawing command#VUID-vkCmdDrawIndexed-logicOp-04878 If the bound graphics pipeline state was created with the  & dynamic state enabled then   must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid   value VUID-vkCmdDrawIndexed-None-04879 If the bound graphics pipeline state was created with the  & dynamic state enabled then  must have been called in the current command buffer prior to this drawing commandVUID-vkCmdDrawIndexed-primitiveFragmentShadingRateWithMultipleViewports-04552 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports1primitiveFragmentShadingRateWithMultipleViewports limit is not supported, the bound graphics pipeline was created with the   dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the PrimitiveShadingRateKHR built-in, then   must have been called in the current command buffer prior to this drawing command, and the  viewportCount parameter of   must be 1'VUID-vkCmdDrawIndexed-blendEnable-04727 If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features do not contain  , then the  blendEnable1 member of the corresponding element of the  pAttachments member of pColorBlendState must be /0VUID-vkCmdDrawIndexed-rasterizationSamples-04740 If rasterization is not disabled in the bound graphics pipeline, and neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples# extensions are enabled, then 8::rasterizationSamples must be the same as the current subpass color and/or depth/stencil attachments VUID-vkCmdDrawIndexed-None-04912 If the bound graphics pipeline was created with both the   and  ( dynamic states enabled, then   must have been called in the current command buffer prior to this draw command$VUID-vkCmdDrawIndexed-pStrides-04913? If the bound graphics pipeline was created with the  . dynamic state enabled, but not the  ' dynamic state enabled, then  must have been called in the current command buffer prior to this draw command, and the pStrides parameter of  must not be NULL VUID-vkCmdDrawIndexed-None-04914 If the bound graphics pipeline state was created with the  ' dynamic state enabled, then   must have been called in the current command buffer prior to this draw command)VUID-vkCmdDrawIndexed-commandBuffer-02712 If  commandBuffer is a protected command buffer, any resource written to by the  object bound to the pipeline bind point used by this command must not be an unprotected resource)VUID-vkCmdDrawIndexed-commandBuffer-02713 If  commandBuffer is a protected command buffer, pipeline stages other than the framebuffer-space and compute stages in the  object bound to the pipeline bind point used by this command must not write to any resource)VUID-vkCmdDrawIndexed-commandBuffer-04617) If any of the shader stages of the  bound to the pipeline bind point used by this command uses the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-RayQueryKHR RayQueryKHR capability, then  commandBuffer must' not be a protected command buffer VUID-vkCmdDrawIndexed-None-04007 All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point@s interface must have either valid or  buffers bound VUID-vkCmdDrawIndexed-None-04008 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point@s interface must not be  VUID-vkCmdDrawIndexed-None-02721 For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input???&VUID-vkCmdDrawIndexed-firstIndex-04932 ( indexSize  ( firstIndex +  indexCount) + offset) must be less than or equal to the size of the bound index buffer, with  indexSize+ being based on the type specified by  indexType, where the index buffer,  indexType, and offset are specified via iValid Usage (Implicit)-VUID-vkCmdDrawIndexed-commandBuffer-parameter  commandBuffer must be a valid  handle-VUID-vkCmdDrawIndexed-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state+VUID-vkCmdDrawIndexed-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operations VUID-vkCmdDrawIndexed-renderpass This command must5 only be called inside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryInside  Graphics See Alsoivulkan as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain 'VUID-vkCmdDrawIndirect-mipmapMode-04770 If a 0  created with  mipmapMode equal to   and  compareEnable equal to / is used to sample a 0> as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain !VUID-vkCmdDrawIndirect-None-02691 If a 0 is accessed using atomic operations as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain  !VUID-vkCmdDrawIndirect-None-02692 If a 0 is sampled with  > as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain  (VUID-vkCmdDrawIndirect-filterCubic-02694 Any 0 being sampled with  " as a result of this command must have a   and format that supports cubic filtering, as specified by :: filterCubic returned by U .VUID-vkCmdDrawIndirect-filterCubicMinmax-02695 Any 0 being sampled with  + with a reduction mode of either   or  " as a result of this command must have a   and format that supports cubic filtering together with minmax filtering, as specified by ::filterCubicMinmax returned by U "VUID-vkCmdDrawIndirect-flags-02696 Any  created with a 1::flags containing * sampled as a result of this command must only be sampled using a   of  !VUID-vkCmdDrawIndirect-None-02697 For each set n% that is statically used by the  bound to the pipeline bind point used by this command, a descriptor set must have been bound to n. at the same pipeline bind point, with a ~! that is compatible for set n , with the ~! used to create the current , as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???!VUID-vkCmdDrawIndirect-None-02698< For each push constant that is statically used by the  bound to the pipeline bind point used by this command, a push constant value must= have been set for the same pipeline bind point, with a ~6 that is compatible for push constants, with the ~! used to create the current , as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???!VUID-vkCmdDrawIndirect-None-02699> Descriptors in each bound descriptor set, specified via i, must7 be valid if they are statically used by the ; bound to the pipeline bind point used by this command!VUID-vkCmdDrawIndirect-None-02700 A valid pipeline must> be bound to the pipeline bind point used by this command*VUID-vkCmdDrawIndirect-commandBuffer-02701 If the  object bound to the pipeline bind point used by this command requires any dynamic state, that state must) have been set or inherited (if the  VK_NV_inherited_viewport_scissor extension is enabled) for  commandBuffer, and done so after any previously bound pipeline with the corresponding state not specified as dynamic!VUID-vkCmdDrawIndirect-None-02859 There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the  object bound to the pipeline bind point used by this command, since that pipeline was bound!VUID-vkCmdDrawIndirect-None-02702 If the  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must% not be used to sample from any  with a 0 of the type  ,  ,  ,   or  , in any shader stage!VUID-vkCmdDrawIndirect-None-02703 If the  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj# in their name, in any shader stage!VUID-vkCmdDrawIndirect-None-02704 If the  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions that includes a LOD bias or any offset values, in any shader stage!VUID-vkCmdDrawIndirect-None-02705 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the  object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point!VUID-vkCmdDrawIndirect-None-02706 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the  object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point*VUID-vkCmdDrawIndirect-commandBuffer-02707 If  commandBuffer is an unprotected command buffer, any resource accessed by the  object bound to the pipeline bind point used by this command must not be a protected resource!VUID-vkCmdDrawIndirect-None-04115 If a 0 is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction must have at least as many components as the image view@s format)VUID-vkCmdDrawIndirect-OpImageWrite-04469 If a 0  is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction must have at least as many components as the buffer view@s format(VUID-vkCmdDrawIndirect-SampledType-04470 If a 0 with a  that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64(VUID-vkCmdDrawIndirect-SampledType-04471 If a 0 with a  that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32(VUID-vkCmdDrawIndirect-SampledType-04472 If a 0  with a  that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64(VUID-vkCmdDrawIndirect-SampledType-04473 If a 0  with a  that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 324VUID-vkCmdDrawIndirect-sparseImageInt64Atomics-04474 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, $ objects created with the   flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command4VUID-vkCmdDrawIndirect-sparseImageInt64Atomics-04475 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, $ objects created with the   flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command'VUID-vkCmdDrawIndirect-renderPass-02684 The current render pass must be  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible with the  renderPass member of the 8, structure specified when creating the  bound to $VUID-vkCmdDrawIndirect-subpass-026853 The subpass index of the current render pass must be equal to the subpass member of the 8, structure specified when creating the  bound to !VUID-vkCmdDrawIndirect-None-026869 Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor set!VUID-vkCmdDrawIndirect-None-04584 Image subresources used as attachments in the current render pass must not be accessed in any way other than as an attachment by this command, except for cases involving read-only access to depth/stencil attachments as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass chapter6VUID-vkCmdDrawIndirect-maxMultiviewInstanceIndex-02688 If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to X::maxMultiviewInstanceIndex2VUID-vkCmdDrawIndirect-sampleLocationsEnable-02689; If the bound graphics pipeline was created with ::sampleLocationsEnable set to / and the current subpass has a depth/stencil attachment, then that attachment must& have been created with the   bit set*VUID-vkCmdDrawIndirect-viewportCount-03417 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  ' dynamic state enabled, then   must have been called in the current command buffer prior to this drawing command, and the  viewportCount parameter of   must match the 8:: scissorCount of the pipeline)VUID-vkCmdDrawIndirect-scissorCount-03418 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  ' dynamic state enabled, then  must have been called in the current command buffer prior to this drawing command, and the  scissorCount parameter of  must match the 8:: viewportCount of the pipeline*VUID-vkCmdDrawIndirect-viewportCount-03419 If the bound graphics pipeline state was created with both the   and  , dynamic states enabled then both   and  must have been called in the current command buffer prior to this drawing command, and the  viewportCount parameter of   must match the  scissorCount parameter of *VUID-vkCmdDrawIndirect-viewportCount-04137 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  > dynamic state enabled, then the bound graphics pipeline must" have been created with :: viewportCount greater or equal to the  viewportCount) parameter in the last call to  *VUID-vkCmdDrawIndirect-viewportCount-04138 If the bound graphics pipeline state was created with the   and  & dynamic states enabled then the  viewportCount) parameter in the last call to   must! be greater than or equal to the  viewportCount) parameter in the last call to  *VUID-vkCmdDrawIndirect-viewportCount-04139 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  > dynamic state enabled, then the bound graphics pipeline must" have been created with :: viewportCount greater or equal to the  viewportCount) parameter in the last call to  *VUID-vkCmdDrawIndirect-viewportCount-04140 If the bound graphics pipeline state was created with the   and  & dynamic states enabled then the  viewportCount) parameter in the last call to   must! be greater than or equal to the  viewportCount) parameter in the last call to  8VUID-vkCmdDrawIndirect-VkPipelineVieportCreateInfo-04141 If the bound graphics pipeline state was created with the  4 dynamic state enabled and an instance of  chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with :: viewportCount greater or equal to the  viewportCount) parameter in the last call to  8VUID-vkCmdDrawIndirect-VkPipelineVieportCreateInfo-04142 If the bound graphics pipeline state was created with the  4 dynamic state enabled and an instance of  chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with ::exclusiveScissorCount greater or equal to the  viewportCount) parameter in the last call to  .VUID-vkCmdDrawIndirect-primitiveTopology-03420 If the bound graphics pipeline state was created with the  & dynamic state enabled then   must have been called in the current command buffer prior to this drawing command, and the primitiveTopology parameter of   must be of the same  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-classtopology class as the pipeline 8::topology state!VUID-vkCmdDrawIndirect-None-04875 If the bound graphics pipeline state was created with the  & dynamic state enabled then   must have been called in the current command buffer prior to this drawing command!VUID-vkCmdDrawIndirect-None-04876 If the bound graphics pipeline state was created with the  & dynamic state enabled then  must have been called in the current command buffer prior to this drawing command!VUID-vkCmdDrawIndirect-None-04877 If the bound graphics pipeline state was created with the  & dynamic state enabled then  must have been called in the current command buffer prior to this drawing command$VUID-vkCmdDrawIndirect-logicOp-04878 If the bound graphics pipeline state was created with the  & dynamic state enabled then   must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid   value!VUID-vkCmdDrawIndirect-None-04879 If the bound graphics pipeline state was created with the  & dynamic state enabled then  must have been called in the current command buffer prior to this drawing commandVUID-vkCmdDrawIndirect-primitiveFragmentShadingRateWithMultipleViewports-04552 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports1primitiveFragmentShadingRateWithMultipleViewports limit is not supported, the bound graphics pipeline was created with the   dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the PrimitiveShadingRateKHR built-in, then   must have been called in the current command buffer prior to this drawing command, and the  viewportCount parameter of   must be 1(VUID-vkCmdDrawIndirect-blendEnable-04727 If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features do not contain  , then the  blendEnable1 member of the corresponding element of the  pAttachments member of pColorBlendState must be /1VUID-vkCmdDrawIndirect-rasterizationSamples-04740 If rasterization is not disabled in the bound graphics pipeline, and neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples# extensions are enabled, then 8::rasterizationSamples must be the same as the current subpass color and/or depth/stencil attachments!VUID-vkCmdDrawIndirect-None-04912 If the bound graphics pipeline was created with both the   and  ( dynamic states enabled, then   must have been called in the current command buffer prior to this draw command%VUID-vkCmdDrawIndirect-pStrides-04913? If the bound graphics pipeline was created with the  . dynamic state enabled, but not the  ' dynamic state enabled, then  must have been called in the current command buffer prior to this draw command, and the pStrides parameter of  must not be NULL!VUID-vkCmdDrawIndirect-None-04914 If the bound graphics pipeline state was created with the  ' dynamic state enabled, then   must have been called in the current command buffer prior to this draw command!VUID-vkCmdDrawIndirect-None-04007 All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point@s interface must have either valid or  buffers bound!VUID-vkCmdDrawIndirect-None-04008 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point@s interface must not be !VUID-vkCmdDrawIndirect-None-02721 For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input???#VUID-vkCmdDrawIndirect-buffer-02708 If buffer is non-sparse then it must7 be bound completely and contiguously to a single 0  object#VUID-vkCmdDrawIndirect-buffer-02709 buffer must& have been created with the   bit set#VUID-vkCmdDrawIndirect-offset-02710 offset must be a multiple of 4*VUID-vkCmdDrawIndirect-commandBuffer-02711  commandBuffer must' not be a protected command buffer&VUID-vkCmdDrawIndirect-drawCount-02718 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiDrawIndirectmulti-draw indirect feature is not enabled,  drawCount must be 0 or 1&VUID-vkCmdDrawIndirect-drawCount-02719  drawCount must$ be less than or equal to  ::maxDrawIndirectCount*VUID-vkCmdDrawIndirect-firstInstance-00478 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectFirstInstancedrawIndirectFirstInstance& feature is not enabled, all the  firstInstance members of the 6* structures accessed by this command must be 0&VUID-vkCmdDrawIndirect-drawCount-00476 If  drawCount is greater than 1, stride must be a multiple of 4 and must' be greater than or equal to sizeof(6)&VUID-vkCmdDrawIndirect-drawCount-00487 If  drawCount is equal to 1, (offset + sizeof(6)) must+ be less than or equal to the size of buffer&VUID-vkCmdDrawIndirect-drawCount-00488 If  drawCount is greater than 1, (stride  ( drawCount - 1) + offset + sizeof(6)) must+ be less than or equal to the size of bufferValid Usage (Implicit).VUID-vkCmdDrawIndirect-commandBuffer-parameter  commandBuffer must be a valid  handle'VUID-vkCmdDrawIndirect-buffer-parameter buffer must be a valid  handle.VUID-vkCmdDrawIndirect-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state,VUID-vkCmdDrawIndirect-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operations!VUID-vkCmdDrawIndirect-renderpass This command must5 only be called inside of a render pass instance#VUID-vkCmdDrawIndirect-commonparent Both of buffer , and  commandBuffer must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryInside  Graphics See Also, , oivulkanvkCmdDrawIndexedIndirect - Draw primitives with indirect parameters and indexed vertices Descriptioni behaves similarly to i except that the parameters are read by the device from a buffer during execution.  drawCount draws are executed by the command, with parameters taken from buffer starting at offset and increasing by stride bytes for each successive draw. The parameters of each draw are encoded in an array of 6 structures. If  drawCount is less than or equal to one, stride is ignored. Valid Usage-VUID-vkCmdDrawIndexedIndirect-magFilter-04553 If a 0  created with  magFilter or  minFilter equal to & and  compareEnable equal to / is used to sample a 0> as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain .VUID-vkCmdDrawIndexedIndirect-mipmapMode-04770 If a 0  created with  mipmapMode equal to   and  compareEnable equal to / is used to sample a 0> as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain (VUID-vkCmdDrawIndexedIndirect-None-02691 If a 0 is accessed using atomic operations as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain  (VUID-vkCmdDrawIndexedIndirect-None-02692 If a 0 is sampled with  > as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain  /VUID-vkCmdDrawIndexedIndirect-filterCubic-02694 Any 0 being sampled with  " as a result of this command must have a   and format that supports cubic filtering, as specified by :: filterCubic returned by U 5VUID-vkCmdDrawIndexedIndirect-filterCubicMinmax-02695 Any 0 being sampled with  + with a reduction mode of either   or  " as a result of this command must have a   and format that supports cubic filtering together with minmax filtering, as specified by ::filterCubicMinmax returned by U )VUID-vkCmdDrawIndexedIndirect-flags-02696 Any  created with a 1::flags containing * sampled as a result of this command must only be sampled using a   of  (VUID-vkCmdDrawIndexedIndirect-None-02697 For each set n% that is statically used by the  bound to the pipeline bind point used by this command, a descriptor set must have been bound to n. at the same pipeline bind point, with a ~! that is compatible for set n , with the ~! used to create the current , as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???(VUID-vkCmdDrawIndexedIndirect-None-02698< For each push constant that is statically used by the  bound to the pipeline bind point used by this command, a push constant value must= have been set for the same pipeline bind point, with a ~; that is compatible for push constants, with the ~! used to create the current , as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???(VUID-vkCmdDrawIndexedIndirect-None-02699> Descriptors in each bound descriptor set, specified via i, must7 be valid if they are statically used by the ; bound to the pipeline bind point used by this command(VUID-vkCmdDrawIndexedIndirect-None-02700 A valid pipeline must> be bound to the pipeline bind point used by this command1VUID-vkCmdDrawIndexedIndirect-commandBuffer-02701 If the  object bound to the pipeline bind point used by this command requires any dynamic state, that state must) have been set or inherited (if the  VK_NV_inherited_viewport_scissor extension is enabled) for  commandBuffer, and done so after any previously bound pipeline with the corresponding state not specified as dynamic(VUID-vkCmdDrawIndexedIndirect-None-02859 There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the  object bound to the pipeline bind point used by this command, since that pipeline was bound(VUID-vkCmdDrawIndexedIndirect-None-02702 If the  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must% not be used to sample from any  with a 0 of the type  ,  ,  ,   or  , in any shader stage(VUID-vkCmdDrawIndexedIndirect-None-02703 If the  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj# in their name, in any shader stage(VUID-vkCmdDrawIndexedIndirect-None-02704 If the  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions that includes a LOD bias or any offset values, in any shader stage(VUID-vkCmdDrawIndexedIndirect-None-02705 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the  object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point(VUID-vkCmdDrawIndexedIndirect-None-02706 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the  object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point1VUID-vkCmdDrawIndexedIndirect-commandBuffer-02707 If  commandBuffer is an unprotected command buffer, any resource accessed by the  object bound to the pipeline bind point used by this command must! not be a protected resource(VUID-vkCmdDrawIndexedIndirect-None-04115 If a 0 is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction must have at least as many components as the image view@s format0VUID-vkCmdDrawIndexedIndirect-OpImageWrite-04469 If a 0  is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction must have at least as many components as the buffer view@s format/VUID-vkCmdDrawIndexedIndirect-SampledType-04470 If a 0 with a  that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64/VUID-vkCmdDrawIndexedIndirect-SampledType-04471 If a 0 with a  that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32/VUID-vkCmdDrawIndexedIndirect-SampledType-04472 If a 0  with a  that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64/VUID-vkCmdDrawIndexedIndirect-SampledType-04473 If a 0  with a  that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32;VUID-vkCmdDrawIndexedIndirect-sparseImageInt64Atomics-04474 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, $ objects created with the   flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command;VUID-vkCmdDrawIndexedIndirect-sparseImageInt64Atomics-04475 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, $ objects created with the   flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command.VUID-vkCmdDrawIndexedIndirect-renderPass-02684 The current render pass must be  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible with the  renderPass member of the 8, structure specified when creating the  bound to +VUID-vkCmdDrawIndexedIndirect-subpass-026853 The subpass index of the current render pass must be equal to the subpass member of the 8, structure specified when creating the  bound to (VUID-vkCmdDrawIndexedIndirect-None-026869 Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor set(VUID-vkCmdDrawIndexedIndirect-None-04584 Image subresources used as attachments in the current render pass must not be accessed in any way other than as an attachment by this command, except for cases involving read-only access to depth/stencil attachments as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass chapter=VUID-vkCmdDrawIndexedIndirect-maxMultiviewInstanceIndex-02688 If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to X::maxMultiviewInstanceIndex9VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-02689; If the bound graphics pipeline was created with ::sampleLocationsEnable set to / and the current subpass has a depth/stencil attachment, then that attachment must& have been created with the   bit set1VUID-vkCmdDrawIndexedIndirect-viewportCount-03417 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  ' dynamic state enabled, then   must have been called in the current command buffer prior to this drawing command, and the  viewportCount parameter of   must match the 8:: scissorCount of the pipeline0VUID-vkCmdDrawIndexedIndirect-scissorCount-03418 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  ' dynamic state enabled, then  must have been called in the current command buffer prior to this drawing command, and the  scissorCount parameter of  must match the 8:: viewportCount of the pipeline1VUID-vkCmdDrawIndexedIndirect-viewportCount-03419 If the bound graphics pipeline state was created with both the   and  , dynamic states enabled then both   and  must have been called in the current command buffer prior to this drawing command, and the  viewportCount parameter of   must match the  scissorCount parameter of 1VUID-vkCmdDrawIndexedIndirect-viewportCount-04137 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  > dynamic state enabled, then the bound graphics pipeline must" have been created with :: viewportCount greater or equal to the  viewportCount) parameter in the last call to  1VUID-vkCmdDrawIndexedIndirect-viewportCount-04138 If the bound graphics pipeline state was created with the   and  & dynamic states enabled then the  viewportCount) parameter in the last call to   must! be greater than or equal to the  viewportCount) parameter in the last call to  1VUID-vkCmdDrawIndexedIndirect-viewportCount-04139 If the bound graphics pipeline state was created with the  . dynamic state enabled, but not the  > dynamic state enabled, then the bound graphics pipeline must" have been created with :: viewportCount greater or equal to the  viewportCount) parameter in the last call to  1VUID-vkCmdDrawIndexedIndirect-viewportCount-04140 If the bound graphics pipeline state was created with the   and  & dynamic states enabled then the  viewportCount) parameter in the last call to   must! be greater than or equal to the  viewportCount) parameter in the last call to  ?VUID-vkCmdDrawIndexedIndirect-VkPipelineVieportCreateInfo-04141 If the bound graphics pipeline state was created with the  4 dynamic state enabled and an instance of  chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with :: viewportCount greater or equal to the  viewportCount) parameter in the last call to  ?VUID-vkCmdDrawIndexedIndirect-VkPipelineVieportCreateInfo-04142 If the bound graphics pipeline state was created with the  4 dynamic state enabled and an instance of  chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with ::exclusiveScissorCount greater or equal to the  viewportCount) parameter in the last call to  5VUID-vkCmdDrawIndexedIndirect-primitiveTopology-03420 If the bound graphics pipeline state was created with the  & dynamic state enabled then   must have been called in the current command buffer prior to this drawing command, and the primitiveTopology parameter of   must be of the same  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-classtopology class as the pipeline 8::topology state(VUID-vkCmdDrawIndexedIndirect-None-04875 If the bound graphics pipeline state was created with the  & dynamic state enabled then   must have been called in the current command buffer prior to this drawing command(VUID-vkCmdDrawIndexedIndirect-None-04876 If the bound graphics pipeline state was created with the  & dynamic state enabled then  must have been called in the current command buffer prior to this drawing command(VUID-vkCmdDrawIndexedIndirect-None-04877 If the bound graphics pipeline state was created with the  & dynamic state enabled then  must have been called in the current command buffer prior to this drawing command+VUID-vkCmdDrawIndexedIndirect-logicOp-04878 If the bound graphics pipeline state was created with the  & dynamic state enabled then   must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid   value(VUID-vkCmdDrawIndexedIndirect-None-04879 If the bound graphics pipeline state was created with the  & dynamic state enabled then  must have been called in the current command buffer prior to this drawing commandVUID-vkCmdDrawIndexedIndirect-primitiveFragmentShadingRateWithMultipleViewports-04552 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports1primitiveFragmentShadingRateWithMultipleViewports limit is not supported, the bound graphics pipeline was created with the   dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the PrimitiveShadingRateKHR built-in, then   must have been called in the current command buffer prior to this drawing command, and the  viewportCount parameter of   must be 1/VUID-vkCmdDrawIndexedIndirect-blendEnable-04727 If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features do not contain  , then the  blendEnable1 member of the corresponding element of the  pAttachments member of pColorBlendState must be /8VUID-vkCmdDrawIndexedIndirect-rasterizationSamples-04740 If rasterization is not disabled in the bound graphics pipeline, and neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples# extensions are enabled, then 8::rasterizationSamples must be the same as the current subpass color and/or depth/stencil attachments(VUID-vkCmdDrawIndexedIndirect-None-04912 If the bound graphics pipeline was created with both the   and  ( dynamic states enabled, then   must have been called in the current command buffer prior to this draw command,VUID-vkCmdDrawIndexedIndirect-pStrides-04913? If the bound graphics pipeline was created with the  . dynamic state enabled, but not the  ' dynamic state enabled, then  must have been called in the current command buffer prior to this draw command, and the pStrides parameter of  must not be NULL(VUID-vkCmdDrawIndexedIndirect-None-04914 If the bound graphics pipeline state was created with the  ' dynamic state enabled, then   must have been called in the current command buffer prior to this draw command(VUID-vkCmdDrawIndexedIndirect-None-04007 All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point@s interface must have either valid or  buffers bound(VUID-vkCmdDrawIndexedIndirect-None-04008 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point@s interface must not be (VUID-vkCmdDrawIndexedIndirect-None-02721 For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input???*VUID-vkCmdDrawIndexedIndirect-buffer-02708 If buffer is non-sparse then it must7 be bound completely and contiguously to a single 0  object*VUID-vkCmdDrawIndexedIndirect-buffer-02709 buffer must& have been created with the   bit set*VUID-vkCmdDrawIndexedIndirect-offset-02710 offset must be a multiple of 41VUID-vkCmdDrawIndexedIndirect-commandBuffer-02711  commandBuffer must" not be a protected command buffer-VUID-vkCmdDrawIndexedIndirect-drawCount-02718 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiDrawIndirectmulti-draw indirect feature is not enabled,  drawCount must be 0 or 1-VUID-vkCmdDrawIndexedIndirect-drawCount-02719  drawCount must$ be less than or equal to  ::maxDrawIndirectCount-VUID-vkCmdDrawIndexedIndirect-drawCount-00528 If  drawCount is greater than 1, stride must be a multiple of 4 and must' be greater than or equal to sizeof(6)1VUID-vkCmdDrawIndexedIndirect-firstInstance-00530 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectFirstInstancedrawIndirectFirstInstance& feature is not enabled, all the  firstInstance members of the 6* structures accessed by this command must be 0-VUID-vkCmdDrawIndexedIndirect-drawCount-00539 If  drawCount is equal to 1, (offset + sizeof(6)) must& be less than or equal to the size of buffer-VUID-vkCmdDrawIndexedIndirect-drawCount-00540 If  drawCount is greater than 1, (stride  ( drawCount - 1) + offset + sizeof(6)) must& be less than or equal to the size of bufferValid Usage (Implicit)5VUID-vkCmdDrawIndexedIndirect-commandBuffer-parameter  commandBuffer must be a valid  handle.VUID-vkCmdDrawIndexedIndirect-buffer-parameter buffer must be a valid  handle5VUID-vkCmdDrawIndexedIndirect-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state3VUID-vkCmdDrawIndexedIndirect-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operations(VUID-vkCmdDrawIndexedIndirect-renderpass This command must5 only be called inside of a render pass instance*VUID-vkCmdDrawIndexedIndirect-commonparent Both of buffer , and  commandBuffer must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryInside  Graphics See Also, , oivulkan+vkCmdDispatch - Dispatch compute work items DescriptionWhen the command is executed, a global workgroup consisting of  groupCountX   groupCountY   groupCountZ local workgroups is assembled. Valid Usage"VUID-vkCmdDispatch-magFilter-04553 If a 0  created with  magFilter or  minFilter equal to & and  compareEnable equal to / is used to sample a 0> as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain  #VUID-vkCmdDispatch-mipmapMode-04770 If a 0  created with  mipmapMode equal to   and  compareEnable equal to / is used to sample a 0> as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain VUID-vkCmdDispatch-None-02691 If a 0 is accessed using atomic operations as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain  VUID-vkCmdDispatch-None-02692 If a 0 is sampled with  > as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain  $VUID-vkCmdDispatch-filterCubic-02694 Any 0 being sampled with  " as a result of this command must have a   and format that supports cubic filtering, as specified by :: filterCubic returned by U *VUID-vkCmdDispatch-filterCubicMinmax-02695 Any 0 being sampled with  + with a reduction mode of either   or  " as a result of this command must have a   and format that supports cubic filtering together with minmax filtering, as specified by ::filterCubicMinmax returned by U VUID-vkCmdDispatch-flags-02696 Any  created with a 1::flags containing * sampled as a result of this command must only be sampled using a   of  VUID-vkCmdDispatch-None-02697 For each set n% that is statically used by the  bound to the pipeline bind point used by this command, a descriptor set must have been bound to n. at the same pipeline bind point, with a ~! that is compatible for set n , with the ~! used to create the current , as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???VUID-vkCmdDispatch-None-02698< For each push constant that is statically used by the  bound to the pipeline bind point used by this command, a push constant value must= have been set for the same pipeline bind point, with a ~6 that is compatible for push constants, with the ~! used to create the current , as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???VUID-vkCmdDispatch-None-02699> Descriptors in each bound descriptor set, specified via i, must2 be valid if they are statically used by the ; bound to the pipeline bind point used by this commandVUID-vkCmdDispatch-None-02700 A valid pipeline must> be bound to the pipeline bind point used by this command&VUID-vkCmdDispatch-commandBuffer-02701 If the  object bound to the pipeline bind point used by this command requires any dynamic state, that state must) have been set or inherited (if the  VK_NV_inherited_viewport_scissor extension is enabled) for  commandBuffer, and done so after any previously bound pipeline with the corresponding state not specified as dynamicVUID-vkCmdDispatch-None-02859 There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the  object bound to the pipeline bind point used by this command, since that pipeline was boundVUID-vkCmdDispatch-None-02702 If the  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must% not be used to sample from any  with a 0 of the type  ,  ,  ,   or  , in any shader stageVUID-vkCmdDispatch-None-02703 If the  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj# in their name, in any shader stageVUID-vkCmdDispatch-None-02704 If the  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions that includes a LOD bias or any offset values, in any shader stageVUID-vkCmdDispatch-None-02705 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the  object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind pointVUID-vkCmdDispatch-None-02706 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the  object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point&VUID-vkCmdDispatch-commandBuffer-02707 If  commandBuffer is an unprotected command buffer, any resource accessed by the  object bound to the pipeline bind point used by this command must not be a protected resourceVUID-vkCmdDispatch-None-04115 If a 0 is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction must have at least as many components as the image view@s format%VUID-vkCmdDispatch-OpImageWrite-04469 If a 0  is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction must have at least as many components as the buffer view@s format$VUID-vkCmdDispatch-SampledType-04470 If a 0 with a  that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64$VUID-vkCmdDispatch-SampledType-04471 If a 0 with a  that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32$VUID-vkCmdDispatch-SampledType-04472 If a 0  with a  that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64$VUID-vkCmdDispatch-SampledType-04473 If a 0  with a  that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 320VUID-vkCmdDispatch-sparseImageInt64Atomics-04474 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, $ objects created with the   flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command0VUID-vkCmdDispatch-sparseImageInt64Atomics-04475 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, $ objects created with the   flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command&VUID-vkCmdDispatch-commandBuffer-02712 If  commandBuffer is a protected command buffer, any resource written to by the  object bound to the pipeline bind point used by this command must not be an unprotected resource&VUID-vkCmdDispatch-commandBuffer-02713 If  commandBuffer is a protected command buffer, pipeline stages other than the framebuffer-space and compute stages in the  object bound to the pipeline bind point used by this command must not write to any resource&VUID-vkCmdDispatch-commandBuffer-04617) If any of the shader stages of the  bound to the pipeline bind point used by this command uses the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-RayQueryKHR RayQueryKHR capability, then  commandBuffer must' not be a protected command buffer$VUID-vkCmdDispatch-groupCountX-00386  groupCountX must$ be less than or equal to  ::maxComputeWorkGroupCount[0]$VUID-vkCmdDispatch-groupCountY-00387  groupCountY must$ be less than or equal to  ::maxComputeWorkGroupCount[1]$VUID-vkCmdDispatch-groupCountZ-00388  groupCountZ must$ be less than or equal to  ::maxComputeWorkGroupCount[2]Valid Usage (Implicit)*VUID-vkCmdDispatch-commandBuffer-parameter  commandBuffer must be a valid  handle*VUID-vkCmdDispatch-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state(VUID-vkCmdDispatch-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support compute operationsVUID-vkCmdDispatch-renderpass This command must6 only be called outside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryOutside Compute See AlsoivulkanvkCmdDispatchIndirect - Dispatch compute work items with indirect parameters Descriptioni behaves similarly to i except that the parameters are read by the device from a buffer during execution. The parameters of the dispatch are encoded in a 6 structure taken from buffer starting at offset. Valid Usage*VUID-vkCmdDispatchIndirect-magFilter-04553 If a 0  created with  magFilter or  minFilter equal to & and  compareEnable equal to / is used to sample a 0> as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain +VUID-vkCmdDispatchIndirect-mipmapMode-04770 If a 0  created with  mipmapMode equal to   and  compareEnable equal to / is used to sample a 0> as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain %VUID-vkCmdDispatchIndirect-None-02691 If a 0 is accessed using atomic operations as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain  %VUID-vkCmdDispatchIndirect-None-02692 If a 0 is sampled with  > as a result of this command, then the image view@s  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain  ,VUID-vkCmdDispatchIndirect-filterCubic-02694 Any 0 being sampled with  " as a result of this command must have a   and format that supports cubic filtering, as specified by :: filterCubic returned by U 2VUID-vkCmdDispatchIndirect-filterCubicMinmax-02695 Any 0 being sampled with  + with a reduction mode of either   or  " as a result of this command must have a   and format that supports cubic filtering together with minmax filtering, as specified by ::filterCubicMinmax returned by U &VUID-vkCmdDispatchIndirect-flags-02696 Any  created with a 1::flags containing * sampled as a result of this command must only be sampled using a   of  %VUID-vkCmdDispatchIndirect-None-02697 For each set n% that is statically used by the  bound to the pipeline bind point used by this command, a descriptor set must have been bound to n. at the same pipeline bind point, with a ~! that is compatible for set n , with the ~! used to create the current , as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???%VUID-vkCmdDispatchIndirect-None-02698< For each push constant that is statically used by the  bound to the pipeline bind point used by this command, a push constant value must= have been set for the same pipeline bind point, with a ~6 that is compatible for push constants, with the ~! used to create the current , as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???%VUID-vkCmdDispatchIndirect-None-02699> Descriptors in each bound descriptor set, specified via i, must7 be valid if they are statically used by the ; bound to the pipeline bind point used by this command%VUID-vkCmdDispatchIndirect-None-02700 A valid pipeline must> be bound to the pipeline bind point used by this command.VUID-vkCmdDispatchIndirect-commandBuffer-02701 If the  object bound to the pipeline bind point used by this command requires any dynamic state, that state must) have been set or inherited (if the  VK_NV_inherited_viewport_scissor extension is enabled) for  commandBuffer, and done so after any previously bound pipeline with the corresponding state not specified as dynamic%VUID-vkCmdDispatchIndirect-None-02859 There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the  object bound to the pipeline bind point used by this command, since that pipeline was bound%VUID-vkCmdDispatchIndirect-None-02702 If the  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must% not be used to sample from any  with a 0 of the type  ,  ,  ,   or  , in any shader stage%VUID-vkCmdDispatchIndirect-None-02703 If the  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj# in their name, in any shader stage%VUID-vkCmdDispatchIndirect-None-02704 If the  object bound to the pipeline bind point used by this command accesses a 0 > object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions that includes a LOD bias or any offset values, in any shader stage%VUID-vkCmdDispatchIndirect-None-02705 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the  object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point%VUID-vkCmdDispatchIndirect-None-02706 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the  object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point.VUID-vkCmdDispatchIndirect-commandBuffer-02707 If  commandBuffer is an unprotected command buffer, any resource accessed by the  object bound to the pipeline bind point used by this command must not be a protected resource%VUID-vkCmdDispatchIndirect-None-04115 If a 0 is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction must have at least as many components as the image view@s format-VUID-vkCmdDispatchIndirect-OpImageWrite-04469 If a 0  is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction must have at least as many components as the buffer view@s format,VUID-vkCmdDispatchIndirect-SampledType-04470 If a 0 with a  that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64,VUID-vkCmdDispatchIndirect-SampledType-04471 If a 0 with a  that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32,VUID-vkCmdDispatchIndirect-SampledType-04472 If a 0  with a  that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64,VUID-vkCmdDispatchIndirect-SampledType-04473 If a 0  with a  that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 328VUID-vkCmdDispatchIndirect-sparseImageInt64Atomics-04474 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, $ objects created with the   flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command8VUID-vkCmdDispatchIndirect-sparseImageInt64Atomics-04475 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, $ objects created with the   flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command'VUID-vkCmdDispatchIndirect-buffer-02708 If buffer is non-sparse then it must7 be bound completely and contiguously to a single 0  object'VUID-vkCmdDispatchIndirect-buffer-02709 buffer must& have been created with the   bit set'VUID-vkCmdDispatchIndirect-offset-02710 offset must be a multiple of 4.VUID-vkCmdDispatchIndirect-commandBuffer-02711  commandBuffer must" not be a protected command buffer'VUID-vkCmdDispatchIndirect-offset-00407 The sum of offset and the size of 6 must& be less than or equal to the size of bufferValid Usage (Implicit)2VUID-vkCmdDispatchIndirect-commandBuffer-parameter  commandBuffer must be a valid  handle+VUID-vkCmdDispatchIndirect-buffer-parameter buffer must be a valid  handle2VUID-vkCmdDispatchIndirect-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state0VUID-vkCmdDispatchIndirect-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support compute operations%VUID-vkCmdDispatchIndirect-renderpass This command must6 only be called outside of a render pass instance'VUID-vkCmdDispatchIndirect-commonparent Both of buffer , and  commandBuffer must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryOutside Compute See Also, , oivulkan2vkCmdCopyBuffer - Copy data between buffer regions DescriptionEach region in pRegions is copied from the source buffer to the same region of the destination buffer.  srcBuffer and  dstBuffer can be the same buffer or alias the same memory, but the resulting values are undefined if the copy regions overlap in memory. Valid Usage(VUID-vkCmdCopyBuffer-commandBuffer-01822 If  commandBuffer- is an unprotected command buffer, then  srcBuffer must not be a protected buffer (VUID-vkCmdCopyBuffer-commandBuffer-01823 If  commandBuffer- is an unprotected command buffer, then  dstBuffer must not be a protected buffer(VUID-vkCmdCopyBuffer-commandBuffer-01824 If  commandBuffer* is a protected command buffer, then  dstBuffer must" not be an unprotected buffer$VUID-vkCmdCopyBuffer-srcOffset-00113 The  srcOffset member of each element of pRegions must be less than the size of  srcBuffer$VUID-vkCmdCopyBuffer-dstOffset-00114 The  dstOffset member of each element of pRegions must be less than the size of  dstBufferVUID-vkCmdCopyBuffer-size-00115 The size member of each element of pRegions must+ be less than or equal to the size of  srcBuffer minus  srcOffsetVUID-vkCmdCopyBuffer-size-00116 The size member of each element of pRegions must+ be less than or equal to the size of  dstBuffer minus  dstOffset#VUID-vkCmdCopyBuffer-pRegions-00117 The union of the source regions, and the union of the destination regions, specified by the elements of pRegions, must not overlap in memory$VUID-vkCmdCopyBuffer-srcBuffer-00118  srcBuffer must" have been created with  usage flag$VUID-vkCmdCopyBuffer-srcBuffer-00119 If  srcBuffer is non-sparse then it must7 be bound completely and contiguously to a single 0  object$VUID-vkCmdCopyBuffer-dstBuffer-00120  dstBuffer must" have been created with  usage flag$VUID-vkCmdCopyBuffer-dstBuffer-00121 If  dstBuffer is non-sparse then it must7 be bound completely and contiguously to a single 0  objectValid Usage (Implicit),VUID-vkCmdCopyBuffer-commandBuffer-parameter  commandBuffer must be a valid  handle(VUID-vkCmdCopyBuffer-srcBuffer-parameter  srcBuffer must be a valid  handle(VUID-vkCmdCopyBuffer-dstBuffer-parameter  dstBuffer must be a valid  handle'VUID-vkCmdCopyBuffer-pRegions-parameter pRegions must( be a valid pointer to an array of  regionCount valid ' structures,VUID-vkCmdCopyBuffer-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state*VUID-vkCmdCopyBuffer-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must7 support transfer, graphics, or compute operationsVUID-vkCmdCopyBuffer-renderpass This command must6 only be called outside of a render pass instance,VUID-vkCmdCopyBuffer-regionCount-arraylength  regionCount must be greater than 0!VUID-vkCmdCopyBuffer-commonparent Each of  commandBuffer,  dstBuffer, and  srcBuffer must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary Secondary  Outside Transfer Graphics ComputeSee Also, ', ivulkan)vkCmdCopyImage - Copy data between images DescriptionEach region in pRegions is copied from the source image to the same region of the destination image. srcImage and dstImage can- be the same image or alias the same memory.The formats of srcImage and dstImage must be compatible. Formats are compatible if they share the same class, as shown in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibilityCompatible Formats table. Depth/stencil formats must match exactly. If either srcImage or dstImage has a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format&, regions of each plane to be copied must$ be specified separately using the srcSubresource and dstSubresource members of the ! structure. In this case, the  aspectMask of the srcSubresource or dstSubresource' that refers to the multi-planar image must be  ,  , or  . For the purposes of i, each plane of a multi-planar image is treated as having the format listed in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes" for the plane identified by the  aspectMask9 of the corresponding subresource. This applies both to  and to coordinates used in the copy, which correspond to texels in the plane rather than how these texels map to coordinates in the image as a whole.NoteFor example, the   plane of a / image is compatible with an image of format  and (less usefully) with the   plane of an image of format $, as each texel is 2 bytes in size.i allows copying between size-compatible compressed and uncompressed internal formats. Formats are size-compatible if the texel block size of the uncompressed format is equal to the texel block size of the compressed format. Such a copy does not perform on-the-fly compression or decompression. When copying from an uncompressed format to a compressed format, each texel of uncompressed data of the source image is copied as a raw value to the corresponding compressed texel block of the destination image. When copying from a compressed format to an uncompressed format, each compressed texel block of the source image is copied as a raw value to the corresponding texel of uncompressed data in the destination image. Thus, for example, it is legal to copy between a 128-bit uncompressed format and a compressed format which has a 128-bit sized compressed texel block representing 44 texels (using 8 bits per texel), or between a 64-bit uncompressed format and a compressed format which has a 64-bit sized compressed texel block representing 44 texels (using 4 bits per texel).=When copying between compressed and uncompressed formats the extent members represent the texel dimensions of the source image and not the destination. When copying from a compressed image to an uncompressed image the image texel dimensions written to the uncompressed image will be source extent divided by the compressed texel block dimensions. When copying from an uncompressed image to a compressed image the image texel dimensions written to the compressed image will be the source extent multiplied by the compressed texel block dimensions. In both cases the number of bytes read and the number of bytes written will be identical.Copying to or from block-compressed images is typically done in multiples of the compressed texel block size. For this reason the extent must be a multiple of the compressed texel block dimension. There is one exception to this rule which is required to handle compressed images created with dimensions that are not a multiple of the compressed texel block dimensions: if the srcImage is compressed, then:If  extent.width is not a multiple of the compressed texel block width, then ( extent.width +  srcOffset.x) must( equal the image subresource width.If  extent.height is not a multiple of the compressed texel block height, then ( extent.height +  srcOffset.y) must) equal the image subresource height.If  extent.depth is not a multiple of the compressed texel block depth, then ( extent.depth +  srcOffset.z) must( equal the image subresource depth.Similarly, if the dstImage is compressed, then:If  extent.width is not a multiple of the compressed texel block width, then ( extent.width +  dstOffset.x) must( equal the image subresource width.If  extent.height is not a multiple of the compressed texel block height, then ( extent.height +  dstOffset.y) must) equal the image subresource height.If  extent.depth is not a multiple of the compressed texel block depth, then ( extent.depth +  dstOffset.z) must( equal the image subresource depth.This allows the last compressed texel block of the image in each non-multiple dimension to be included as a source or destination of the copy.@_422@ image formats that are not  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar are treated as having a 21 compressed texel block for the purposes of these rules.i can be used to copy image data between multisample images, but both images must! have the same number of samples. Valid Usage'VUID-vkCmdCopyImage-commandBuffer-01825 If  commandBuffer- is an unprotected command buffer, then srcImage must not be a protected image9'VUID-vkCmdCopyImage-commandBuffer-01826 If  commandBuffer- is an unprotected command buffer, then dstImage must not be a protected image'VUID-vkCmdCopyImage-commandBuffer-01827 If  commandBuffer* is a protected command buffer, then dstImage must! not be an unprotected image"VUID-vkCmdCopyImage-pRegions-00124 The union of all source regions, and the union of all destination regions, specified by the elements of pRegions, must not overlap in memory"VUID-vkCmdCopyImage-srcImage-01995 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of srcImage must contain "VUID-vkCmdCopyImage-srcImage-00126 srcImage must" have been created with   usage flag"VUID-vkCmdCopyImage-srcImage-01546 If srcImage& is non-sparse then the image or disjoint plane to be copied must< be bound completely and contiguously to a single 0  object(VUID-vkCmdCopyImage-srcImageLayout-00128 srcImageLayout must6 specify the layout of the image subresources of srcImage specified in pRegions0 at the time this command is executed on a 0(VUID-vkCmdCopyImage-srcImageLayout-01917 srcImageLayout must be ", " , or ""VUID-vkCmdCopyImage-dstImage-01996 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of dstImage must contain "VUID-vkCmdCopyImage-dstImage-00131 dstImage must" have been created with   usage flag"VUID-vkCmdCopyImage-dstImage-01547 If dstImage& is non-sparse then the image or disjoint0 plane that is the destination of the copy must7 be bound completely and contiguously to a single 0  object(VUID-vkCmdCopyImage-dstImageLayout-00133 dstImageLayout must6 specify the layout of the image subresources of dstImage specified in pRegions0 at the time this command is executed on a 0(VUID-vkCmdCopyImage-dstImageLayout-01395 dstImageLayout must be ", " , or ""VUID-vkCmdCopyImage-srcImage-01548 If the  of each of srcImage and dstImage is not a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format , the  of each of srcImage and dstImage must be compatible, as defined https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-images-format-compatibilityaboveVUID-vkCmdCopyImage-None-01549( In a copy to or from a plane of a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar image , the  of the image and plane must! be compatible according to  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes$the description of compatible planes for the plane being copied"VUID-vkCmdCopyImage-srcImage-00136 The sample count of srcImage and dstImage must match(VUID-vkCmdCopyImage-srcSubresource-01696 The srcSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in 1 when srcImage was created(VUID-vkCmdCopyImage-dstSubresource-01697 The dstSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in 1 when dstImage was created(VUID-vkCmdCopyImage-srcSubresource-01698 The srcSubresource.baseArrayLayer + srcSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in 1 when srcImage was created(VUID-vkCmdCopyImage-dstSubresource-01699 The dstSubresource.baseArrayLayer + dstSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in 1 when dstImage was created#VUID-vkCmdCopyImage-srcOffset-01783 The  srcOffset and extent! members of each element of pRegions must= respect the image transfer granularity requirements of  commandBuffer:@s command pool@s queue family, as described in  #VUID-vkCmdCopyImage-dstOffset-01784 The  dstOffset and extent! members of each element of pRegions must= respect the image transfer granularity requirements of  commandBuffer:@s command pool@s queue family, as described in  "VUID-vkCmdCopyImage-dstImage-02542 dstImage and srcImage must not have been created with flags containing  "VUID-vkCmdCopyImage-srcImage-01551 If neither srcImage nor dstImage has a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar image format then for each element of pRegions, srcSubresource.aspectMask and dstSubresource.aspectMask must match"VUID-vkCmdCopyImage-srcImage-01552 If srcImage has a  with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion two planes then for each element of pRegions, srcSubresource.aspectMask must be   or  "VUID-vkCmdCopyImage-srcImage-01553 If srcImage has a  with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion three planes then for each element of pRegions, srcSubresource.aspectMask must be  ,  , or  "VUID-vkCmdCopyImage-dstImage-01554 If dstImage has a  with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion two planes then for each element of pRegions, dstSubresource.aspectMask must be   or  "VUID-vkCmdCopyImage-dstImage-01555 If dstImage has a  with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion three planes then for each element of pRegions, dstSubresource.aspectMask must be  ,  , or  "VUID-vkCmdCopyImage-srcImage-01556 If srcImage has a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar image format and the dstImage does not have a multi-planar image format, then for each element of pRegions, dstSubresource.aspectMask must be "VUID-vkCmdCopyImage-dstImage-01557 If dstImage has a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar image format and the srcImage does not have a multi-planar image format, then for each element of pRegions, srcSubresource.aspectMask must be "VUID-vkCmdCopyImage-srcImage-04443 If srcImage is of type  , then for each element of pRegions, srcSubresource.baseArrayLayer must be 0 and srcSubresource.layerCount must be 1"VUID-vkCmdCopyImage-dstImage-04444 If dstImage is of type  , then for each element of pRegions, dstSubresource.baseArrayLayer must be 0 and dstSubresource.layerCount must be 1$VUID-vkCmdCopyImage-aspectMask-00142 For each element of pRegions, srcSubresource.aspectMask must! specify aspects present in srcImage$VUID-vkCmdCopyImage-aspectMask-00143 For each element of pRegions, dstSubresource.aspectMask must! specify aspects present in dstImage#VUID-vkCmdCopyImage-srcOffset-00144 For each element of pRegions,  srcOffset.x and ( extent.width +  srcOffset.x) must" both be greater than or equal to 0; and less than or equal to the width of the specified srcSubresource of srcImage#VUID-vkCmdCopyImage-srcOffset-00145 For each element of pRegions,  srcOffset.y and ( extent.height +  srcOffset.y) must" both be greater than or equal to 0< and less than or equal to the height of the specified srcSubresource of srcImage"VUID-vkCmdCopyImage-srcImage-00146 If srcImage is of type  , then for each element of pRegions,  srcOffset.y must be 0 and  extent.height must be 1#VUID-vkCmdCopyImage-srcOffset-00147 For each element of pRegions,  srcOffset.z and ( extent.depth +  srcOffset.z) must" both be greater than or equal to 0; and less than or equal to the depth of the specified srcSubresource of srcImage"VUID-vkCmdCopyImage-srcImage-01785 If srcImage is of type  , then for each element of pRegions,  srcOffset.z must be 0 and  extent.depth must be 1"VUID-vkCmdCopyImage-dstImage-01786 If dstImage is of type  , then for each element of pRegions,  dstOffset.z must be 0 and  extent.depth must be 1"VUID-vkCmdCopyImage-srcImage-01787 If srcImage is of type  , then for each element of pRegions,  srcOffset.z must be 0"VUID-vkCmdCopyImage-dstImage-01788 If dstImage is of type  , then for each element of pRegions,  dstOffset.z must be 0"VUID-vkCmdCopyImage-srcImage-01790 If srcImage and dstImage are both of type  , then for each element of pRegions,  extent.depth must be 1"VUID-vkCmdCopyImage-srcImage-01791 If srcImage is of type , and dstImage is of type  , then for each element of pRegions,  extent.depth must equal srcSubresource.layerCount"VUID-vkCmdCopyImage-dstImage-01792 If dstImage is of type , and srcImage is of type  , then for each element of pRegions,  extent.depth must equal dstSubresource.layerCount#VUID-vkCmdCopyImage-dstOffset-00150 For each element of pRegions,  dstOffset.x and ( extent.width +  dstOffset.x) must" both be greater than or equal to 0; and less than or equal to the width of the specified dstSubresource of dstImage#VUID-vkCmdCopyImage-dstOffset-00151 For each element of pRegions,  dstOffset.y and ( extent.height +  dstOffset.y) must" both be greater than or equal to 0< and less than or equal to the height of the specified dstSubresource of dstImage"VUID-vkCmdCopyImage-dstImage-00152 If dstImage is of type  , then for each element of pRegions,  dstOffset.y must be 0 and  extent.height must be 1#VUID-vkCmdCopyImage-dstOffset-00153 For each element of pRegions,  dstOffset.z and ( extent.depth +  dstOffset.z) must" both be greater than or equal to 0; and less than or equal to the depth of the specified dstSubresource of dstImage"VUID-vkCmdCopyImage-srcImage-01727 If srcImage is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image , then for each element of pRegions, all members of  srcOffset must be a multiple of the corresponding dimensions of the compressed texel block"VUID-vkCmdCopyImage-srcImage-01728 If srcImage is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image , then for each element of pRegions,  extent.width must< be a multiple of the compressed texel block width or ( extent.width +  srcOffset.x) must' equal the width of the specified srcSubresource of srcImage"VUID-vkCmdCopyImage-srcImage-01729 If srcImage is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image , then for each element of pRegions,  extent.height must= be a multiple of the compressed texel block height or ( extent.height +  srcOffset.y) must( equal the height of the specified srcSubresource of srcImage"VUID-vkCmdCopyImage-srcImage-01730 If srcImage is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image , then for each element of pRegions,  extent.depth must< be a multiple of the compressed texel block depth or ( extent.depth +  srcOffset.z) must' equal the depth of the specified srcSubresource of srcImage"VUID-vkCmdCopyImage-dstImage-01731 If dstImage is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image , then for each element of pRegions, all members of  dstOffset must be a multiple of the corresponding dimensions of the compressed texel block"VUID-vkCmdCopyImage-dstImage-01732 If dstImage is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image , then for each element of pRegions,  extent.width must< be a multiple of the compressed texel block width or ( extent.width +  dstOffset.x) must' equal the width of the specified dstSubresource of dstImage"VUID-vkCmdCopyImage-dstImage-01733 If dstImage is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image , then for each element of pRegions,  extent.height must= be a multiple of the compressed texel block height or ( extent.height +  dstOffset.y) must( equal the height of the specified dstSubresource of dstImage"VUID-vkCmdCopyImage-dstImage-01734 If dstImage is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image , then for each element of pRegions,  extent.depth must< be a multiple of the compressed texel block depth or ( extent.depth +  dstOffset.z) must' equal the depth of the specified dstSubresource of dstImageValid Usage (Implicit)+VUID-vkCmdCopyImage-commandBuffer-parameter  commandBuffer must be a valid  handle &VUID-vkCmdCopyImage-srcImage-parameter srcImage must be a valid  handle,VUID-vkCmdCopyImage-srcImageLayout-parameter srcImageLayout must be a valid O value&VUID-vkCmdCopyImage-dstImage-parameter dstImage must be a valid  handle,VUID-vkCmdCopyImage-dstImageLayout-parameter dstImageLayout must be a valid O value&VUID-vkCmdCopyImage-pRegions-parameter pRegions must( be a valid pointer to an array of  regionCount valid ! structures+VUID-vkCmdCopyImage-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state)VUID-vkCmdCopyImage-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must7 support transfer, graphics, or compute operationsVUID-vkCmdCopyImage-renderpass This command must6 only be called outside of a render pass instance+VUID-vkCmdCopyImage-regionCount-arraylength  regionCount must be greater than 0 VUID-vkCmdCopyImage-commonparent Each of  commandBuffer, dstImage, and srcImage must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary Secondary  Outside Transfer Graphics ComputeSee Also, , !, OivulkanvkCmdBlitImage - Copy regions of an image, potentially performing format conversion, Descriptioni must not be used for multisampled source or destination images. Use j for this purpose.3As the sizes of the source and destination extents can differ in any dimension, texels in the source extent are scaled and filtered to the destination extent. Scaling occurs via the following operations:For each destination texel, the integer coordinate of that texel is converted to an unnormalized texture coordinate, using the effective inverse of the equations described in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-unnormalized-to-integer"unnormalized to integer conversion: ubase = i +  vbase = j +  wbase = k + These base coordinates are then offset by the first destination offset:uoffset = ubase - xdst0voffset = vbase - ydst0woffset = wbase - zdst0aoffset = a - baseArrayCountdstThe scale is determined from the source and destination regions, and applied to the offset coordinates:*scaleu = (xsrc1 - xsrc0) / (xdst1 - xdst0)*scalev = (ysrc1 - ysrc0) / (ydst1 - ydst0)*scalew = (zsrc1 - zsrc0) / (zdst1 - zdst0)uscaled = uoffset  scaleuvscaled = voffset  scalevwscaled = woffset  scalewFinally the source offset is added to the scaled coordinates, to determine the final unnormalized coordinates used to sample from srcImage:u = uscaled + xsrc0v = vscaled + ysrc0w = wscaled + zsrc0q = mipLevela = aoffset + baseArrayCountsrcThese coordinates are used to sample from the source image, as described in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#texturesImage Operations chapter), with the filter mode equal to that of filter, a mipmap mode of  and an address mode of  . Implementations must, clamp at the edge of the source image, and may6 additionally clamp to the edge of the source region.NoteDue to allowable rounding errors in the generation of the source texture coordinates, it is not always possible to guarantee exactly which source texels will be sampled for a given blit. As rounding errors are implementation-dependent, the exact results of a blitting operation are also implementation-dependent.0Blits are done layer by layer starting with the baseArrayLayer member of srcSubresource for the source and dstSubresource for the destination.  layerCount- layers are blitted to the destination image.When blitting 3D textures, slices in the destination region bounded by  dstOffsets [0].z and  dstOffsets?[1].z are sampled from slices in the source region bounded by  srcOffsets [0].z and  srcOffsets[1].z. If the filter parameter is & then the value sampled from the source image is taken by doing linear filtering using the interpolated z coordinate represented by w$ in the previous equations. If the filter parameter is & then the value sampled from the source image is taken from the single nearest slice, with an implementation-dependent arithmetic rounding mode.3The following filtering and conversion rules apply:Integer formats can only be converted to other integer formats with the same signedness.No format conversion is supported between depth/stencil images. The formats must match.Format conversions on unorm, snorm, unscaled and packed float formats of the copied aspect of the image are performed by first converting the pixels to float values.For sRGB source formats, nonlinear RGB values are converted to linear representation prior to filtering.After filtering, the float values are first clamped and then cast to the destination image format. In case of sRGB destination format, linear RGB values are converted to nonlinear representation before writing the pixel to the image.Signed and unsigned integers are converted by first clamping to the representable range of the destination format, then casting the value. Valid Usage'VUID-vkCmdBlitImage-commandBuffer-01834 If  commandBuffer- is an unprotected command buffer, then srcImage must not be a protected image,'VUID-vkCmdBlitImage-commandBuffer-01835 If  commandBuffer- is an unprotected command buffer, then dstImage must not be a protected image'VUID-vkCmdBlitImage-commandBuffer-01836 If  commandBuffer* is a protected command buffer, then dstImage must! not be an unprotected image"VUID-vkCmdBlitImage-pRegions-002155 The source region specified by each element of pRegions must+ be a region that is contained within srcImage"VUID-vkCmdBlitImage-pRegions-00216: The destination region specified by each element of pRegions must+ be a region that is contained within dstImage"VUID-vkCmdBlitImage-pRegions-00217 The union of all destination regions, specified by the elements of pRegions, must0 not overlap in memory with any texel that may* be sampled during the blit operation"VUID-vkCmdBlitImage-srcImage-01999 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of srcImage must contain "VUID-vkCmdBlitImage-srcImage-01561 srcImage must& not use a format listed in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion???"VUID-vkCmdBlitImage-srcImage-00219 srcImage must" have been created with   usage flag"VUID-vkCmdBlitImage-srcImage-00220 If srcImage is non-sparse then it must7 be bound completely and contiguously to a single 0  object(VUID-vkCmdBlitImage-srcImageLayout-00221 srcImageLayout must6 specify the layout of the image subresources of srcImage specified in pRegions0 at the time this command is executed on a 0(VUID-vkCmdBlitImage-srcImageLayout-01398 srcImageLayout must be ", " or ""VUID-vkCmdBlitImage-dstImage-02000 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of dstImage must contain "VUID-vkCmdBlitImage-dstImage-01562 dstImage must& not use a format listed in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion???"VUID-vkCmdBlitImage-dstImage-00224 dstImage must" have been created with   usage flag"VUID-vkCmdBlitImage-dstImage-00225 If dstImage is non-sparse then it must7 be bound completely and contiguously to a single 0  object(VUID-vkCmdBlitImage-dstImageLayout-00226 dstImageLayout must6 specify the layout of the image subresources of dstImage specified in pRegions0 at the time this command is executed on a 0(VUID-vkCmdBlitImage-dstImageLayout-01399 dstImageLayout must be ", " or ""VUID-vkCmdBlitImage-srcImage-00229 If either of srcImage or dstImage( was created with a signed integer  , the other must3 also have been created with a signed integer "VUID-vkCmdBlitImage-srcImage-00230 If either of srcImage or dstImage+ was created with an unsigned integer  , the other must6 also have been created with an unsigned integer "VUID-vkCmdBlitImage-srcImage-00231 If either of srcImage or dstImage9 was created with a depth/stencil format, the other must have exactly the same format"VUID-vkCmdBlitImage-srcImage-00232 If srcImage/ was created with a depth/stencil format, filter must be &"VUID-vkCmdBlitImage-srcImage-00233 srcImage must have been created with a samples value of &"VUID-vkCmdBlitImage-dstImage-00234 dstImage must have been created with a samples value of & VUID-vkCmdBlitImage-filter-02001 If filter is &, then the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of srcImage must contain  VUID-vkCmdBlitImage-filter-02002 If filter is  , then the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of srcImage must contain   VUID-vkCmdBlitImage-filter-00237 If filter is  , srcImage must be of type (VUID-vkCmdBlitImage-srcSubresource-01705 The srcSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in 1 when srcImage was created(VUID-vkCmdBlitImage-dstSubresource-01706 The dstSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in 1 when dstImage was created(VUID-vkCmdBlitImage-srcSubresource-01707 The srcSubresource.baseArrayLayer + srcSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in 1 when srcImage was created(VUID-vkCmdBlitImage-dstSubresource-01708 The dstSubresource.baseArrayLayer + dstSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in 1 when dstImage was created"VUID-vkCmdBlitImage-dstImage-02545 dstImage and srcImage must not have been created with flags containing  "VUID-vkCmdBlitImage-srcImage-00240 If either srcImage or dstImage is of type  , then for each element of pRegions, srcSubresource.baseArrayLayer and dstSubresource.baseArrayLayer must each be 0 , and srcSubresource.layerCount and dstSubresource.layerCount must each be 1$VUID-vkCmdBlitImage-aspectMask-00241 For each element of pRegions, srcSubresource.aspectMask must! specify aspects present in srcImage$VUID-vkCmdBlitImage-aspectMask-00242 For each element of pRegions, dstSubresource.aspectMask must! specify aspects present in dstImage#VUID-vkCmdBlitImage-srcOffset-00243 For each element of pRegions,  srcOffsets [0].x and  srcOffsets[1].x must' both be greater than or equal to 0; and less than or equal to the width of the specified srcSubresource of srcImage#VUID-vkCmdBlitImage-srcOffset-00244 For each element of pRegions,  srcOffsets [0].y and  srcOffsets[1].y must' both be greater than or equal to 0< and less than or equal to the height of the specified srcSubresource of srcImage"VUID-vkCmdBlitImage-srcImage-00245 If srcImage is of type  , then for each element of pRegions,  srcOffsets[0].y must be 0 and  srcOffsets [1].y must be 1#VUID-vkCmdBlitImage-srcOffset-00246 For each element of pRegions,  srcOffsets [0].z and  srcOffsets[1].z must' both be greater than or equal to 0; and less than or equal to the depth of the specified srcSubresource of srcImage"VUID-vkCmdBlitImage-srcImage-00247 If srcImage is of type  or  , then for each element of pRegions,  srcOffsets[0].z must be 0 and  srcOffsets [1].z must be 1#VUID-vkCmdBlitImage-dstOffset-00248 For each element of pRegions,  dstOffsets [0].x and  dstOffsets[1].x must' both be greater than or equal to 0; and less than or equal to the width of the specified dstSubresource of dstImage#VUID-vkCmdBlitImage-dstOffset-00249 For each element of pRegions,  dstOffsets [0].y and  dstOffsets[1].y must' both be greater than or equal to 0< and less than or equal to the height of the specified dstSubresource of dstImage"VUID-vkCmdBlitImage-dstImage-00250 If dstImage is of type  , then for each element of pRegions,  dstOffsets[0].y must be 0 and  dstOffsets [1].y must be 1#VUID-vkCmdBlitImage-dstOffset-00251 For each element of pRegions,  dstOffsets [0].z and  dstOffsets[1].z must' both be greater than or equal to 0; and less than or equal to the depth of the specified dstSubresource of dstImage"VUID-vkCmdBlitImage-dstImage-00252 If dstImage is of type  or  , then for each element of pRegions,  dstOffsets[0].z must be 0 and  dstOffsets [1].z must be 1Valid Usage (Implicit)+VUID-vkCmdBlitImage-commandBuffer-parameter  commandBuffer must be a valid  handle &VUID-vkCmdBlitImage-srcImage-parameter srcImage must be a valid  handle,VUID-vkCmdBlitImage-srcImageLayout-parameter srcImageLayout must be a valid O value&VUID-vkCmdBlitImage-dstImage-parameter dstImage must be a valid  handle,VUID-vkCmdBlitImage-dstImageLayout-parameter dstImageLayout must be a valid O value&VUID-vkCmdBlitImage-pRegions-parameter pRegions must( be a valid pointer to an array of  regionCount valid " structures$VUID-vkCmdBlitImage-filter-parameter filter must be a valid J value+VUID-vkCmdBlitImage-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state)VUID-vkCmdBlitImage-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operationsVUID-vkCmdBlitImage-renderpass This command must6 only be called outside of a render pass instance+VUID-vkCmdBlitImage-regionCount-arraylength  regionCount must be greater than 0 VUID-vkCmdBlitImage-commonparent Each of  commandBuffer, dstImage, and srcImage must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryOutside  Graphics See Also, J, , ", Oivulkan>vkCmdCopyBufferToImage - Copy data from a buffer into an image DescriptionEach region in pRegions is copied from the specified region of the source buffer to the specified region of the destination image.If dstImage has a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format2, regions of each plane to be a target of a copy must$ be specified separately using the pRegions member of the & structure. In this case, the  aspectMask of imageSubresource must be  ,  , or  . For the purposes of i, each plane of a multi-planar image is treated as having the format listed in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes" for the plane identified by the  aspectMask9 of the corresponding subresource. This applies both to  and to coordinates used in the copy, which correspond to texels in the plane rather than how these texels map to coordinates in the image as a whole. Valid Usage/VUID-vkCmdCopyBufferToImage-commandBuffer-01828 If  commandBuffer- is an unprotected command buffer, then  srcBuffer must not be a protected buffer'/VUID-vkCmdCopyBufferToImage-commandBuffer-01829 If  commandBuffer- is an unprotected command buffer, then dstImage must not be a protected image/VUID-vkCmdCopyBufferToImage-commandBuffer-01830 If  commandBuffer* is a protected command buffer, then dstImage must! not be an unprotected image*VUID-vkCmdCopyBufferToImage-pRegions-062174 The image region specified by each element of pRegions must( be contained within the specified imageSubresource of dstImage*VUID-vkCmdCopyBufferToImage-pRegions-00171  srcBuffer must be large enough to contain all buffer locations that are accessed according to  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-buffers-images-addressingBuffer and Image Addressing, for each element of pRegions*VUID-vkCmdCopyBufferToImage-pRegions-00173 The union of all source regions, and the union of all destination regions, specified by the elements of pRegions, must not overlap in memory+VUID-vkCmdCopyBufferToImage-srcBuffer-00174  srcBuffer must" have been created with  usage flag*VUID-vkCmdCopyBufferToImage-dstImage-01997 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of dstImage must contain +VUID-vkCmdCopyBufferToImage-srcBuffer-00176 If  srcBuffer is non-sparse then it must7 be bound completely and contiguously to a single 0  object*VUID-vkCmdCopyBufferToImage-dstImage-00177 dstImage must" have been created with   usage flag*VUID-vkCmdCopyBufferToImage-dstImage-00178 If dstImage is non-sparse then it must7 be bound completely and contiguously to a single 0  object*VUID-vkCmdCopyBufferToImage-dstImage-00179 dstImage must( have a sample count equal to &0VUID-vkCmdCopyBufferToImage-dstImageLayout-00180 dstImageLayout must1 specify the layout of the image subresources of dstImage specified in pRegions0 at the time this command is executed on a 00VUID-vkCmdCopyBufferToImage-dstImageLayout-01396 dstImageLayout must be ", " , or "2VUID-vkCmdCopyBufferToImage-imageSubresource-01701 The imageSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in 1 when dstImage was created2VUID-vkCmdCopyBufferToImage-imageSubresource-01702 The imageSubresource.baseArrayLayer + imageSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in 1 when dstImage was created-VUID-vkCmdCopyBufferToImage-imageOffset-01793 The  imageOffset and  imageExtent members of each element of pRegions must respect the image transfer granularity requirements of  commandBuffer5@s command pool@s queue family, as described in  *VUID-vkCmdCopyBufferToImage-dstImage-02543 dstImage must! not have been created with flags containing  /VUID-vkCmdCopyBufferToImage-commandBuffer-04477- If the queue family used to create the 0  which  commandBuffer* was allocated from does not support  , for each element of pRegions, the  aspectMask member of imageSubresource must not be   or  *VUID-vkCmdCopyBufferToImage-pRegions-06218 For each element of pRegions,  imageOffset.x and (imageExtent.width +  imageOffset.x) must" both be greater than or equal to 0; and less than or equal to the width of the specified imageSubresource of dstImage*VUID-vkCmdCopyBufferToImage-pRegions-06219 For each element of pRegions,  imageOffset.y and (imageExtent.height +  imageOffset.y) must" both be greater than or equal to 0< and less than or equal to the height of the specified imageSubresource of dstImage.VUID-vkCmdCopyBufferToImage-bufferOffset-01558 If dstImage5 does not have either a depth/stencil or a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format , then for each element of pRegions,  bufferOffset must4 be a multiple of the format@s texel block size.VUID-vkCmdCopyBufferToImage-bufferOffset-01559 If dstImage has a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format , then for each element of pRegions,  bufferOffset must be a multiple of the element size of the compatible format for the format and the  aspectMask of the imageSubresource as defined in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes???*VUID-vkCmdCopyBufferToImage-srcImage-00199 If dstImage is of type  , then for each element of pRegions,  imageOffset.y must be 0 and imageExtent.height must be 1-VUID-vkCmdCopyBufferToImage-imageOffset-00200 For each element of pRegions,  imageOffset.z and (imageExtent.depth +  imageOffset.z) must" both be greater than or equal to 0; and less than or equal to the depth of the specified imageSubresource of dstImage*VUID-vkCmdCopyBufferToImage-srcImage-00201 If dstImage is of type  or  , then for each element of pRegions,  imageOffset.z must be 0 and imageExtent.depth must be 11VUID-vkCmdCopyBufferToImage-bufferRowLength-00203 If dstImage is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, bufferRowLength must7 be a multiple of the compressed texel block width3VUID-vkCmdCopyBufferToImage-bufferImageHeight-00204 If dstImage is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, bufferImageHeight must8 be a multiple of the compressed texel block height-VUID-vkCmdCopyBufferToImage-imageOffset-00205 If dstImage is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, all members of  imageOffset must be a multiple of the corresponding dimensions of the compressed texel block.VUID-vkCmdCopyBufferToImage-bufferOffset-00206 If dstImage is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions,  bufferOffset must? be a multiple of the compressed texel block size in bytes-VUID-vkCmdCopyBufferToImage-imageExtent-00207 If dstImage is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, imageExtent.width must< be a multiple of the compressed texel block width or (imageExtent.width +  imageOffset.x) must' equal the width of the specified imageSubresource of dstImage-VUID-vkCmdCopyBufferToImage-imageExtent-00208 If dstImage is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, imageExtent.height must be a multiple of the compressed texel block height or (imageExtent.height +  imageOffset.y) must( equal the height of the specified imageSubresource of dstImage-VUID-vkCmdCopyBufferToImage-imageExtent-00209 If dstImage is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, imageExtent.depth must< be a multiple of the compressed texel block depth or (imageExtent.depth +  imageOffset.z) must' equal the depth of the specified imageSubresource of dstImage,VUID-vkCmdCopyBufferToImage-aspectMask-00211 For each element of pRegions, imageSubresource.aspectMask must! specify aspects present in dstImage,VUID-vkCmdCopyBufferToImage-aspectMask-01560 If dstImage has a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format , then for each element of pRegions, imageSubresource.aspectMask must be  ,  , or   (with  5 valid only for image formats with three planes)0VUID-vkCmdCopyBufferToImage-baseArrayLayer-00213 If dstImage is of type , for each element of pRegions, imageSubresource.baseArrayLayer must be 0 and imageSubresource.layerCount must be 1*VUID-vkCmdCopyBufferToImage-pRegions-04725 If dstImage is not a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, bufferRowLength, multiplied by the texel block size of dstImage must be less than or equal to 231-1*VUID-vkCmdCopyBufferToImage-pRegions-04726 If dstImage is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, bufferRowLength divided by the compressed texel block width and then multiplied by the texel block size of dstImage must be less than or equal to 231-1/VUID-vkCmdCopyBufferToImage-commandBuffer-04052- If the queue family used to create the 0  which  commandBuffer* was allocated from does not support   or   , the  bufferOffset member of any element of pRegions must be a multiple of 4*VUID-vkCmdCopyBufferToImage-srcImage-04053 If dstImage& has a depth/stencil format, the  bufferOffset member of any element of pRegions must be a multiple of 4Valid Usage (Implicit)3VUID-vkCmdCopyBufferToImage-commandBuffer-parameter  commandBuffer must be a valid  handle /VUID-vkCmdCopyBufferToImage-srcBuffer-parameter  srcBuffer must be a valid  handle.VUID-vkCmdCopyBufferToImage-dstImage-parameter dstImage must be a valid  handle4VUID-vkCmdCopyBufferToImage-dstImageLayout-parameter dstImageLayout must be a valid O value.VUID-vkCmdCopyBufferToImage-pRegions-parameter pRegions must( be a valid pointer to an array of  regionCount valid & structures3VUID-vkCmdCopyBufferToImage-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state1VUID-vkCmdCopyBufferToImage-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must7 support transfer, graphics, or compute operations&VUID-vkCmdCopyBufferToImage-renderpass This command must6 only be called outside of a render pass instance3VUID-vkCmdCopyBufferToImage-regionCount-arraylength  regionCount must be greater than 0(VUID-vkCmdCopyBufferToImage-commonparent Each of  commandBuffer, dstImage, and  srcBuffer must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary Secondary  Outside Transfer Graphics ComputeSee Also, &, , , Oivulkan6vkCmdCopyImageToBuffer - Copy image data into a buffer DescriptionEach region in pRegions is copied from the specified region of the source image to the specified region of the destination buffer.If srcImage has a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format2, regions of each plane to be a source of a copy must$ be specified separately using the pRegions member of the & structure. In this case, the  aspectMask of imageSubresource must be  ,  , or  . For the purposes of i, each plane of a multi-planar image is treated as having the format listed in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes" for the plane identified by the  aspectMask9 of the corresponding subresource. This applies both to  and to coordinates used in the copy, which correspond to texels in the plane rather than how these texels map to coordinates in the image as a whole. Valid Usage/VUID-vkCmdCopyImageToBuffer-commandBuffer-01831 If  commandBuffer- is an unprotected command buffer, then srcImage must not be a protected image&/VUID-vkCmdCopyImageToBuffer-commandBuffer-01832 If  commandBuffer- is an unprotected command buffer, then  dstBuffer must not be a protected buffer/VUID-vkCmdCopyImageToBuffer-commandBuffer-01833 If  commandBuffer* is a protected command buffer, then  dstBuffer must" not be an unprotected buffer*VUID-vkCmdCopyImageToBuffer-pRegions-062204 The image region specified by each element of pRegions must( be contained within the specified imageSubresource of srcImage*VUID-vkCmdCopyImageToBuffer-pRegions-00183  dstBuffer must be large enough to contain all buffer locations that are accessed according to  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-buffers-images-addressingBuffer and Image Addressing, for each element of pRegions*VUID-vkCmdCopyImageToBuffer-pRegions-00184 The union of all source regions, and the union of all destination regions, specified by the elements of pRegions, must not overlap in memory*VUID-vkCmdCopyImageToBuffer-srcImage-00186 srcImage must" have been created with   usage flag*VUID-vkCmdCopyImageToBuffer-srcImage-01998 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of srcImage must contain *VUID-vkCmdCopyImageToBuffer-srcImage-00187 If srcImage is non-sparse then it must7 be bound completely and contiguously to a single 0  object+VUID-vkCmdCopyImageToBuffer-dstBuffer-00191  dstBuffer must" have been created with  usage flag+VUID-vkCmdCopyImageToBuffer-dstBuffer-00192 If  dstBuffer is non-sparse then it must7 be bound completely and contiguously to a single 0  object*VUID-vkCmdCopyImageToBuffer-srcImage-00188 srcImage must( have a sample count equal to &0VUID-vkCmdCopyImageToBuffer-srcImageLayout-00189 srcImageLayout must1 specify the layout of the image subresources of srcImage specified in pRegions0 at the time this command is executed on a 00VUID-vkCmdCopyImageToBuffer-srcImageLayout-01397 srcImageLayout must be ", " , or "2VUID-vkCmdCopyImageToBuffer-imageSubresource-01703 The imageSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in 1 when srcImage was created2VUID-vkCmdCopyImageToBuffer-imageSubresource-01704 The imageSubresource.baseArrayLayer + imageSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in 1 when srcImage was created-VUID-vkCmdCopyImageToBuffer-imageOffset-01794 The  imageOffset and  imageExtent members of each element of pRegions must respect the image transfer granularity requirements of  commandBuffer5@s command pool@s queue family, as described in  *VUID-vkCmdCopyImageToBuffer-srcImage-02544 srcImage must! not have been created with flags containing  *VUID-vkCmdCopyImageToBuffer-pRegions-06221 For each element of pRegions,  imageOffset.x and (imageExtent.width +  imageOffset.x) must" both be greater than or equal to 0; and less than or equal to the width of the specified imageSubresource of srcImage*VUID-vkCmdCopyImageToBuffer-pRegions-06222 For each element of pRegions,  imageOffset.y and (imageExtent.height +  imageOffset.y) must" both be greater than or equal to 0< and less than or equal to the height of the specified imageSubresource of srcImage.VUID-vkCmdCopyImageToBuffer-bufferOffset-01558 If srcImage5 does not have either a depth/stencil or a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format , then for each element of pRegions,  bufferOffset must4 be a multiple of the format@s texel block size.VUID-vkCmdCopyImageToBuffer-bufferOffset-01559 If srcImage has a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format , then for each element of pRegions,  bufferOffset must be a multiple of the element size of the compatible format for the format and the  aspectMask of the imageSubresource as defined in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes???*VUID-vkCmdCopyImageToBuffer-srcImage-00199 If srcImage is of type  , then for each element of pRegions,  imageOffset.y must be 0 and imageExtent.height must be 1-VUID-vkCmdCopyImageToBuffer-imageOffset-00200 For each element of pRegions,  imageOffset.z and (imageExtent.depth +  imageOffset.z) must" both be greater than or equal to 0; and less than or equal to the depth of the specified imageSubresource of srcImage*VUID-vkCmdCopyImageToBuffer-srcImage-00201 If srcImage is of type  or  , then for each element of pRegions,  imageOffset.z must be 0 and imageExtent.depth must be 11VUID-vkCmdCopyImageToBuffer-bufferRowLength-00203 If srcImage is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, bufferRowLength must7 be a multiple of the compressed texel block width3VUID-vkCmdCopyImageToBuffer-bufferImageHeight-00204 If srcImage is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, bufferImageHeight must8 be a multiple of the compressed texel block height-VUID-vkCmdCopyImageToBuffer-imageOffset-00205 If srcImage is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, all members of  imageOffset must be a multiple of the corresponding dimensions of the compressed texel block.VUID-vkCmdCopyImageToBuffer-bufferOffset-00206 If srcImage is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions,  bufferOffset must? be a multiple of the compressed texel block size in bytes-VUID-vkCmdCopyImageToBuffer-imageExtent-00207 If srcImage is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, imageExtent.width must< be a multiple of the compressed texel block width or (imageExtent.width +  imageOffset.x) must' equal the width of the specified imageSubresource of srcImage-VUID-vkCmdCopyImageToBuffer-imageExtent-00208 If srcImage is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, imageExtent.height must be a multiple of the compressed texel block height or (imageExtent.height +  imageOffset.y) must( equal the height of the specified imageSubresource of srcImage-VUID-vkCmdCopyImageToBuffer-imageExtent-00209 If srcImage is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, imageExtent.depth must< be a multiple of the compressed texel block depth or (imageExtent.depth +  imageOffset.z) must' equal the depth of the specified imageSubresource of srcImage,VUID-vkCmdCopyImageToBuffer-aspectMask-00211 For each element of pRegions, imageSubresource.aspectMask must! specify aspects present in srcImage,VUID-vkCmdCopyImageToBuffer-aspectMask-01560 If srcImage has a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format , then for each element of pRegions, imageSubresource.aspectMask must be  ,  , or   (with  5 valid only for image formats with three planes)0VUID-vkCmdCopyImageToBuffer-baseArrayLayer-00213 If srcImage is of type , for each element of pRegions, imageSubresource.baseArrayLayer must be 0 and imageSubresource.layerCount must be 1*VUID-vkCmdCopyImageToBuffer-pRegions-04725 If srcImage is not a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, bufferRowLength, multiplied by the texel block size of srcImage must be less than or equal to 231-1*VUID-vkCmdCopyImageToBuffer-pRegions-04726 If srcImage is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, bufferRowLength divided by the compressed texel block width and then multiplied by the texel block size of srcImage must be less than or equal to 231-1/VUID-vkCmdCopyImageToBuffer-commandBuffer-04052- If the queue family used to create the 0  which  commandBuffer* was allocated from does not support   or   , the  bufferOffset member of any element of pRegions must be a multiple of 4*VUID-vkCmdCopyImageToBuffer-srcImage-04053 If srcImage& has a depth/stencil format, the  bufferOffset member of any element of pRegions must be a multiple of 4Valid Usage (Implicit)3VUID-vkCmdCopyImageToBuffer-commandBuffer-parameter  commandBuffer must be a valid  handle .VUID-vkCmdCopyImageToBuffer-srcImage-parameter srcImage must be a valid  handle4VUID-vkCmdCopyImageToBuffer-srcImageLayout-parameter srcImageLayout must be a valid O value/VUID-vkCmdCopyImageToBuffer-dstBuffer-parameter  dstBuffer must be a valid  handle.VUID-vkCmdCopyImageToBuffer-pRegions-parameter pRegions must( be a valid pointer to an array of  regionCount valid & structures3VUID-vkCmdCopyImageToBuffer-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state1VUID-vkCmdCopyImageToBuffer-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must7 support transfer, graphics, or compute operations&VUID-vkCmdCopyImageToBuffer-renderpass This command must6 only be called outside of a render pass instance3VUID-vkCmdCopyImageToBuffer-regionCount-arraylength  regionCount must be greater than 0(VUID-vkCmdCopyImageToBuffer-commonparent Each of  commandBuffer,  dstBuffer, and srcImage must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary Secondary  Outside Transfer Graphics ComputeSee Also, &, , , Oivulkan?vkCmdUpdateBuffer - Update a buffer@s contents from host memory DescriptiondataSize must be less than or equal to 65536 bytes. For larger updates, applications can use buffer to buffer  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-bufferscopies.NoteBuffer updates performed with i first copy the data into command buffer memory when the command is recorded (which requires additional storage and may incur an additional allocation), and then copy the data from the command buffer into  dstBuffer+ when the command is executed on a device.7The additional cost of this functionality compared to  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-buffersbuffer to buffer copies means it is only recommended for very small amounts of data, and is why it is limited to only 65536 bytes. Applications can' work around this by issuing multiple i commands to different ranges of the same buffer, but it is strongly recommended that they should not.The source data is copied from the user pointer to the command buffer when the command is called.i is only allowed outside of a render pass. This command is treated as @transfer@ operation, for the purposes of synchronization barriers. The  must be specified in usage of 0 in order for the buffer to be compatible with i. Valid Usage&VUID-vkCmdUpdateBuffer-dstOffset-00032  dstOffset must be less than the size of  dstBuffer%VUID-vkCmdUpdateBuffer-dataSize-00033 dataSize must+ be less than or equal to the size of  dstBuffer minus  dstOffset&VUID-vkCmdUpdateBuffer-dstBuffer-00034  dstBuffer must" have been created with  usage flag&VUID-vkCmdUpdateBuffer-dstBuffer-00035 If  dstBuffer is non-sparse then it must7 be bound completely and contiguously to a single 0  object&VUID-vkCmdUpdateBuffer-dstOffset-00036  dstOffset must be a multiple of 4%VUID-vkCmdUpdateBuffer-dataSize-00037 dataSize must be less than or equal to 65536%VUID-vkCmdUpdateBuffer-dataSize-00038 dataSize must be a multiple of 4*VUID-vkCmdUpdateBuffer-commandBuffer-01813 If  commandBuffer- is an unprotected command buffer, then  dstBuffer must not be a protected buffer*VUID-vkCmdUpdateBuffer-commandBuffer-01814 If  commandBuffer* is a protected command buffer, then  dstBuffer must" not be an unprotected bufferValid Usage (Implicit).VUID-vkCmdUpdateBuffer-commandBuffer-parameter  commandBuffer must be a valid  handle*VUID-vkCmdUpdateBuffer-dstBuffer-parameter  dstBuffer must be a valid  handle&VUID-vkCmdUpdateBuffer-pData-parameter pData must( be a valid pointer to an array of dataSize bytes.VUID-vkCmdUpdateBuffer-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state,VUID-vkCmdUpdateBuffer-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must7 support transfer, graphics, or compute operations!VUID-vkCmdUpdateBuffer-renderpass This command must6 only be called outside of a render pass instance+VUID-vkCmdUpdateBuffer-dataSize-arraylength dataSize must be greater than 0#VUID-vkCmdUpdateBuffer-commonparent Both of  commandBuffer , and  dstBuffer must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary Secondary  Outside Transfer Graphics ComputeSee Also, , oivulkan>vkCmdFillBuffer - Fill a region of a buffer with a fixed value Descriptioni is treated as @transfer@ operation for the purposes of synchronization barriers. The  must be specified in usage of 0 in order for the buffer to be compatible with i. Valid Usage$VUID-vkCmdFillBuffer-dstOffset-00024  dstOffset must be less than the size of  dstBuffer$VUID-vkCmdFillBuffer-dstOffset-00025  dstOffset must be a multiple of 4VUID-vkCmdFillBuffer-size-00026 If size is not equal to  , size must be greater than 0VUID-vkCmdFillBuffer-size-00027 If size is not equal to  , size must+ be less than or equal to the size of  dstBuffer minus  dstOffsetVUID-vkCmdFillBuffer-size-00028 If size is not equal to  , size must be a multiple of 4$VUID-vkCmdFillBuffer-dstBuffer-00029  dstBuffer must" have been created with  usage flag$VUID-vkCmdFillBuffer-dstBuffer-00031 If  dstBuffer is non-sparse then it must7 be bound completely and contiguously to a single 0  object(VUID-vkCmdFillBuffer-commandBuffer-01811 If  commandBuffer- is an unprotected command buffer, then  dstBuffer must not be a protected buffer(VUID-vkCmdFillBuffer-commandBuffer-01812 If  commandBuffer* is a protected command buffer, then  dstBuffer must" not be an unprotected bufferValid Usage (Implicit),VUID-vkCmdFillBuffer-commandBuffer-parameter  commandBuffer must be a valid  handle(VUID-vkCmdFillBuffer-dstBuffer-parameter  dstBuffer must be a valid  handle,VUID-vkCmdFillBuffer-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state*VUID-vkCmdFillBuffer-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must6 support transfer, graphics or compute operationsVUID-vkCmdFillBuffer-renderpass This command must6 only be called outside of a render pass instance!VUID-vkCmdFillBuffer-commonparent Both of  commandBuffer , and  dstBuffer must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary Secondary  Outside Transfer Graphics ComputeSee Also, , ojvulkan5vkCmdClearColorImage - Clear regions of a color image DescriptionEach specified range in pRanges' is cleared to the value specified by pColor. Valid Usage%VUID-vkCmdClearColorImage-image-01993 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of image must contain %VUID-vkCmdClearColorImage-image-00002 image must" have been created with   usage flag%VUID-vkCmdClearColorImage-image-01545 image must& not use a format listed in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion%VUID-vkCmdClearColorImage-image-00003 If image is non-sparse then it must7 be bound completely and contiguously to a single 0  object+VUID-vkCmdClearColorImage-imageLayout-00004  imageLayout must< specify the layout of the image subresource ranges of image specified in pRanges0 at the time this command is executed on a 0+VUID-vkCmdClearColorImage-imageLayout-01394  imageLayout must be ", " , or "*VUID-vkCmdClearColorImage-aspectMask-02498 The :: aspectMask% members of the elements of the pRanges array must each only include ,VUID-vkCmdClearColorImage-baseMipLevel-01470 The :: baseMipLevel% members of the elements of the pRanges array must each be less than the  mipLevels specified in 1 when image was created'VUID-vkCmdClearColorImage-pRanges-01692 For each  element of pRanges , if the  levelCount member is not  , then  baseMipLevel +  levelCount must be less than the  mipLevels specified in 1 when image was created.VUID-vkCmdClearColorImage-baseArrayLayer-01472 The ::baseArrayLayer% members of the elements of the pRanges array must each be less than the  arrayLayers specified in 1 when image was created'VUID-vkCmdClearColorImage-pRanges-01693 For each  element of pRanges , if the  layerCount member is not  , then baseArrayLayer +  layerCount must be less than the  arrayLayers specified in 1 when image was created%VUID-vkCmdClearColorImage-image-00007 image must3 not have a compressed or depth/stencil format&VUID-vkCmdClearColorImage-pColor-04961 pColor must be a valid pointer to a  union-VUID-vkCmdClearColorImage-commandBuffer-01805 If  commandBuffer- is an unprotected command buffer, then image must not be a protected image-VUID-vkCmdClearColorImage-commandBuffer-01806 If  commandBuffer* is a protected command buffer, then image must! not be an unprotected imageValid Usage (Implicit)1VUID-vkCmdClearColorImage-commandBuffer-parameter  commandBuffer must be a valid  handle)VUID-vkCmdClearColorImage-image-parameter image must be a valid  handle/VUID-vkCmdClearColorImage-imageLayout-parameter  imageLayout must be a valid O value+VUID-vkCmdClearColorImage-pRanges-parameter pRanges must( be a valid pointer to an array of  rangeCount valid  structures1VUID-vkCmdClearColorImage-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state/VUID-vkCmdClearColorImage-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must( support graphics, or compute operations$VUID-vkCmdClearColorImage-renderpass This command must6 only be called outside of a render pass instance0VUID-vkCmdClearColorImage-rangeCount-arraylength  rangeCount must be greater than 0&VUID-vkCmdClearColorImage-commonparent Both of  commandBuffer , and image must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryOutside Graphics ComputeSee Also, , , O, jvulkanvkCmdClearDepthStencilImage - Fill regions of a combined depth/stencil image Valid Usage,VUID-vkCmdClearDepthStencilImage-image-01994 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of image must contain .VUID-vkCmdClearDepthStencilImage-pRanges-02658 If the aspect member of any element of pRanges includes   , and image was created with  "VkImageStencilUsageCreateInfo.htmlseparate stencil usage,   must have been included in the a:: stencilUsage used to create image.VUID-vkCmdClearDepthStencilImage-pRanges-02659 If the aspect member of any element of pRanges includes   , and image was not created with  "VkImageStencilUsageCreateInfo.htmlseparate stencil usage,   must have been included in the 1::usage used to create image.VUID-vkCmdClearDepthStencilImage-pRanges-02660 If the aspect member of any element of pRanges includes  ,   must have been included in the 1::usage used to create image,VUID-vkCmdClearDepthStencilImage-image-00010 If image is non-sparse then it must7 be bound completely and contiguously to a single 0  object2VUID-vkCmdClearDepthStencilImage-imageLayout-00011  imageLayout must7 specify the layout of the image subresource ranges of image specified in pRanges0 at the time this command is executed on a 02VUID-vkCmdClearDepthStencilImage-imageLayout-00012  imageLayout must be either of " or "1VUID-vkCmdClearDepthStencilImage-aspectMask-02824 The :: aspectMask$ member of each element of the pRanges array must' not include bits other than   or  ,VUID-vkCmdClearDepthStencilImage-image-02825 If the image@s format does not have a stencil component, then the :: aspectMask$ member of each element of the pRanges array must not include the   bit,VUID-vkCmdClearDepthStencilImage-image-02826 If the image>@s format does not have a depth component, then the :: aspectMask$ member of each element of the pRanges array must not include the   bit3VUID-vkCmdClearDepthStencilImage-baseMipLevel-01474 The :: baseMipLevel% members of the elements of the pRanges array must each be less than the  mipLevels specified in 1 when image was created.VUID-vkCmdClearDepthStencilImage-pRanges-01694 For each  element of pRanges , if the  levelCount member is not  , then  baseMipLevel +  levelCount must be less than the  mipLevels specified in 1 when image was created5VUID-vkCmdClearDepthStencilImage-baseArrayLayer-01476 The ::baseArrayLayer% members of the elements of the pRanges array must each be less than the  arrayLayers specified in 1 when image was created.VUID-vkCmdClearDepthStencilImage-pRanges-01695 For each  element of pRanges , if the  layerCount member is not  , then baseArrayLayer +  layerCount must be less than the  arrayLayers specified in 1 when image was created,VUID-vkCmdClearDepthStencilImage-image-00014 image must! have a depth/stencil format4VUID-vkCmdClearDepthStencilImage-commandBuffer-01807 If  commandBuffer( is an unprotected command buffer, then image must not be a protected image4VUID-vkCmdClearDepthStencilImage-commandBuffer-01808 If  commandBuffer% is a protected command buffer, then image must! not be an unprotected imageValid Usage (Implicit)8VUID-vkCmdClearDepthStencilImage-commandBuffer-parameter  commandBuffer must be a valid  handle 0VUID-vkCmdClearDepthStencilImage-image-parameter image must be a valid  handle6VUID-vkCmdClearDepthStencilImage-imageLayout-parameter  imageLayout must be a valid O value8VUID-vkCmdClearDepthStencilImage-pDepthStencil-parameter  pDepthStencil must$ be a valid pointer to a valid $ structure2VUID-vkCmdClearDepthStencilImage-pRanges-parameter pRanges must# be a valid pointer to an array of  rangeCount valid  structures8VUID-vkCmdClearDepthStencilImage-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state6VUID-vkCmdClearDepthStencilImage-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operations+VUID-vkCmdClearDepthStencilImage-renderpass This command must6 only be called outside of a render pass instance7VUID-vkCmdClearDepthStencilImage-rangeCount-arraylength  rangeCount must be greater than 0-VUID-vkCmdClearDepthStencilImage-commonparent Both of  commandBuffer, and image must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryOutside  Graphics See Also$, , , O, jvulkanvkCmdClearAttachments - Clear regions within bound framebuffer attachments DescriptionIf the render pass has a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachmentfragment density map attachment, clears follow the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragmentdensitymapops#operations of fragment density maps as if each clear region was a primitive which generates fragments. The clear color is applied to all pixels inside each fragment@s area regardless if the pixels lie outside of the clear region. Clears may> have a different set of supported fragment areas than draws.Unlike other  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clearsclear commands, j executes as a drawing command, rather than a transfer command, with writes performed by it executing in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primrast-orderrasterization order. Clears to color attachments are executed as color attachment writes, by the > stage. Clears to depth/stencil attachments are executed as  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth depth writes and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencilwrites by the  and  stages.j- is not affected by the bound pipeline state.NoteIt@s generally advised that attachments are cleared by using the  load operation at the start of rendering, which will be more efficient on some implementations. Valid Usage+VUID-vkCmdClearAttachments-aspectMask-02501 If the  aspectMask member of any element of  pAttachments contains , then the colorAttachment member of that element must7 either refer to a color attachment which is , or must! be a valid color attachment +VUID-vkCmdClearAttachments-aspectMask-02502 If the  aspectMask member of any element of  pAttachments contains  :, then the current subpass' depth/stencil attachment must either be , or must have a depth component+VUID-vkCmdClearAttachments-aspectMask-02503 If the  aspectMask member of any element of  pAttachments contains  :, then the current subpass' depth/stencil attachment must either be , or must have a stencil component%VUID-vkCmdClearAttachments-rect-02682 The rect member of each element of pRects must have an  extent.width greater than 0%VUID-vkCmdClearAttachments-rect-02683 The rect member of each element of pRects must have an  extent.height greater than 0'VUID-vkCmdClearAttachments-pRects-00016: The rectangular region specified by each element of pRects must be contained within the render area of the current render pass instance'VUID-vkCmdClearAttachments-pRects-00017. The layers specified by each element of pRects must0 be contained within every attachment that  pAttachments refers to+VUID-vkCmdClearAttachments-layerCount-01934 The  layerCount member of each element of pRects must not be 0.VUID-vkCmdClearAttachments-commandBuffer-02504 If  commandBuffer is an unprotected command buffer, then each attachment to be cleared must not be a protected image.VUID-vkCmdClearAttachments-commandBuffer-02505 If  commandBuffer is a protected command buffer, then each attachment to be cleared must not be an unprotected image/VUID-vkCmdClearAttachments-baseArrayLayer-00018 If the render pass instance this is recorded in uses multiview, then baseArrayLayer must be zero and  layerCount must be oneValid Usage (Implicit)2VUID-vkCmdClearAttachments-commandBuffer-parameter  commandBuffer must be a valid  handle1VUID-vkCmdClearAttachments-pAttachments-parameter  pAttachments must# be a valid pointer to an array of attachmentCount valid % structures+VUID-vkCmdClearAttachments-pRects-parameter pRects must( be a valid pointer to an array of  rectCount # structures2VUID-vkCmdClearAttachments-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state0VUID-vkCmdClearAttachments-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operations%VUID-vkCmdClearAttachments-renderpass This command must5 only be called inside of a render pass instance6VUID-vkCmdClearAttachments-attachmentCount-arraylength attachmentCount must be greater than 00VUID-vkCmdClearAttachments-rectCount-arraylength  rectCount must be greater than 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryInside  Graphics See Also%, #, jvulkan/vkCmdResolveImage - Resolve regions of an image DescriptionDuring the resolve the samples corresponding to each pixel location in the source are converted to a single sample before being written to the destination. If the source formats are floating-point or normalized types, the sample values for each pixel are resolved in an implementation-dependent manner. If the source formats are integer types, a single sample@s value is selected for each pixel. srcOffset and  dstOffset select the initial x, y, and z offsets in texels of the sub-regions of the source and destination image data. extent: is the size in texels of the source image to resolve in width, height and depth. Each element of pRegions must? be a region that is contained within its corresponding image./Resolves are done layer by layer starting with baseArrayLayer member of srcSubresource for the source and dstSubresource for the destination.  layerCount. layers are resolved to the destination image. Valid Usage*VUID-vkCmdResolveImage-commandBuffer-01837 If  commandBuffer- is an unprotected command buffer, then srcImage must not be a protected image*VUID-vkCmdResolveImage-commandBuffer-01838 If  commandBuffer- is an unprotected command buffer, then dstImage must not be a protected image*VUID-vkCmdResolveImage-commandBuffer-01839 If  commandBuffer* is a protected command buffer, then dstImage must! not be an unprotected image%VUID-vkCmdResolveImage-pRegions-00255 The union of all source regions, and the union of all destination regions, specified by the elements of pRegions, must not overlap in memory%VUID-vkCmdResolveImage-srcImage-00256 If srcImage is non-sparse then it must7 be bound completely and contiguously to a single 0  object%VUID-vkCmdResolveImage-srcImage-00257 srcImage must have a sample count equal to any valid sample count value other than &%VUID-vkCmdResolveImage-dstImage-00258 If dstImage is non-sparse then it must7 be bound completely and contiguously to a single 0  object%VUID-vkCmdResolveImage-dstImage-00259 dstImage must( have a sample count equal to &+VUID-vkCmdResolveImage-srcImageLayout-00260 srcImageLayout must1 specify the layout of the image subresources of srcImage specified in pRegions0 at the time this command is executed on a 0+VUID-vkCmdResolveImage-srcImageLayout-01400 srcImageLayout must be ", " or "+VUID-vkCmdResolveImage-dstImageLayout-00262 dstImageLayout must1 specify the layout of the image subresources of dstImage specified in pRegions0 at the time this command is executed on a 0+VUID-vkCmdResolveImage-dstImageLayout-01401 dstImageLayout must be ", " or "%VUID-vkCmdResolveImage-dstImage-02003 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of dstImage must contain %VUID-vkCmdResolveImage-srcImage-01386 srcImage and dstImage must- have been created with the same image format+VUID-vkCmdResolveImage-srcSubresource-01709 The srcSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in 1 when srcImage was created+VUID-vkCmdResolveImage-dstSubresource-01710 The dstSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in 1 when dstImage was created+VUID-vkCmdResolveImage-srcSubresource-01711 The srcSubresource.baseArrayLayer + srcSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in 1 when srcImage was created+VUID-vkCmdResolveImage-dstSubresource-01712 The dstSubresource.baseArrayLayer + dstSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in 1 when dstImage was created%VUID-vkCmdResolveImage-dstImage-02546 dstImage and srcImage must not have been created with flags containing  %VUID-vkCmdResolveImage-srcImage-04446 If either srcImage or dstImage are of type  , then for each element of pRegions, srcSubresource.baseArrayLayer must be 0 and srcSubresource.layerCount must be 1%VUID-vkCmdResolveImage-srcImage-04447 If either srcImage or dstImage are of type  , then for each element of pRegions, dstSubresource.baseArrayLayer must be 0 and dstSubresource.layerCount must be 1&VUID-vkCmdResolveImage-srcOffset-00269 For each element of pRegions,  srcOffset.x and ( extent.width +  srcOffset.x) must" both be greater than or equal to 0; and less than or equal to the width of the specified srcSubresource of srcImage&VUID-vkCmdResolveImage-srcOffset-00270 For each element of pRegions,  srcOffset.y and ( extent.height +  srcOffset.y) must" both be greater than or equal to 0< and less than or equal to the height of the specified srcSubresource of srcImage%VUID-vkCmdResolveImage-srcImage-00271 If srcImage is of type  , then for each element of pRegions,  srcOffset.y must be 0 and  extent.height must be 1&VUID-vkCmdResolveImage-srcOffset-00272 For each element of pRegions,  srcOffset.z and ( extent.depth +  srcOffset.z) must" both be greater than or equal to 0; and less than or equal to the depth of the specified srcSubresource of srcImage%VUID-vkCmdResolveImage-srcImage-00273 If srcImage is of type  or  , then for each element of pRegions,  srcOffset.z must be 0 and  extent.depth must be 1&VUID-vkCmdResolveImage-dstOffset-00274 For each element of pRegions,  dstOffset.x and ( extent.width +  dstOffset.x) must" both be greater than or equal to 0; and less than or equal to the width of the specified dstSubresource of dstImage&VUID-vkCmdResolveImage-dstOffset-00275 For each element of pRegions,  dstOffset.y and ( extent.height +  dstOffset.y) must" both be greater than or equal to 0< and less than or equal to the height of the specified dstSubresource of dstImage%VUID-vkCmdResolveImage-dstImage-00276 If dstImage is of type  , then for each element of pRegions,  dstOffset.y must be 0 and  extent.height must be 1&VUID-vkCmdResolveImage-dstOffset-00277 For each element of pRegions,  dstOffset.z and ( extent.depth +  dstOffset.z) must" both be greater than or equal to 0; and less than or equal to the depth of the specified dstSubresource of dstImage%VUID-vkCmdResolveImage-dstImage-00278 If dstImage is of type  or  , then for each element of pRegions,  dstOffset.z must be 0 and  extent.depth must be 1Valid Usage (Implicit).VUID-vkCmdResolveImage-commandBuffer-parameter  commandBuffer must be a valid  handle )VUID-vkCmdResolveImage-srcImage-parameter srcImage must be a valid  handle/VUID-vkCmdResolveImage-srcImageLayout-parameter srcImageLayout must be a valid O value)VUID-vkCmdResolveImage-dstImage-parameter dstImage must be a valid  handle/VUID-vkCmdResolveImage-dstImageLayout-parameter dstImageLayout must be a valid O value)VUID-vkCmdResolveImage-pRegions-parameter pRegions must( be a valid pointer to an array of  regionCount valid   structures.VUID-vkCmdResolveImage-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state,VUID-vkCmdResolveImage-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operations!VUID-vkCmdResolveImage-renderpass This command must6 only be called outside of a render pass instance.VUID-vkCmdResolveImage-regionCount-arraylength  regionCount must be greater than 0#VUID-vkCmdResolveImage-commonparent Each of  commandBuffer, dstImage, and srcImage must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryOutside  Graphics See Also, , O,  jvulkan5vkCmdSetEvent - Set an event object to signaled state Descriptionj behaves identically to  7, except that it does not define an access scope, and must only be used with j, not  . Valid Usage"VUID-vkCmdSetEvent-stageMask-04090 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled,  stageMask must not contain  "VUID-vkCmdSetEvent-stageMask-04091 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled,  stageMask must not contain  or "VUID-vkCmdSetEvent-stageMask-04092 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRenderingconditional rendering feature is not enabled,  stageMask must not contain "VUID-vkCmdSetEvent-stageMask-04093 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapfragment density map feature is not enabled,  stageMask must not contain "VUID-vkCmdSetEvent-stageMask-04094 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedbacktransform feedback feature is not enabled,  stageMask must not contain "VUID-vkCmdSetEvent-stageMask-04095 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled,  stageMask must not contain "VUID-vkCmdSetEvent-stageMask-04096 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders feature is not enabled,  stageMask must not contain "VUID-vkCmdSetEvent-stageMask-04097 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshading rate image feature is not enabled,  stageMask must not contain "VUID-vkCmdSetEvent-stageMask-04098% Any pipeline stage included in  stageMask must be supported by the capabilities of the queue family specified by the queueFamilyIndex member of the  , structure that was used to create the 0  that  commandBuffer. was allocated from, as specified in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported"table of supported pipeline stages"VUID-vkCmdSetEvent-stageMask-03937 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2synchronization2 feature is not enabled,  stageMask must not be 0"VUID-vkCmdSetEvent-stageMask-01149  stageMask must not include &VUID-vkCmdSetEvent-commandBuffer-01152  commandBuffer@s current device mask must$ include exactly one physical deviceValid Usage (Implicit)*VUID-vkCmdSetEvent-commandBuffer-parameter  commandBuffer must be a valid  handle"VUID-vkCmdSetEvent-event-parameter event must be a valid  handle&VUID-vkCmdSetEvent-stageMask-parameter  stageMask must% be a valid combination of Y values*VUID-vkCmdSetEvent-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state(VUID-vkCmdSetEvent-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must( support graphics, or compute operationsVUID-vkCmdSetEvent-renderpass This command must6 only be called outside of a render pass instanceVUID-vkCmdSetEvent-commonparent Both of  commandBuffer , and event must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryOutside Graphics ComputeSee Also, , Zjvulkan=vkCmdResetEvent - Reset an event object to non-signaled state Descriptionj behaves identically to  . Valid Usage$VUID-vkCmdResetEvent-stageMask-04090 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled,  stageMask must not contain  $VUID-vkCmdResetEvent-stageMask-04091 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled,  stageMask must not contain  or $VUID-vkCmdResetEvent-stageMask-04092 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRenderingconditional rendering feature is not enabled,  stageMask must not contain $VUID-vkCmdResetEvent-stageMask-04093 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapfragment density map feature is not enabled,  stageMask must not contain $VUID-vkCmdResetEvent-stageMask-04094 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedbacktransform feedback feature is not enabled,  stageMask must not contain $VUID-vkCmdResetEvent-stageMask-04095 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled,  stageMask must not contain $VUID-vkCmdResetEvent-stageMask-04096 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders feature is not enabled,  stageMask must not contain $VUID-vkCmdResetEvent-stageMask-04097 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshading rate image feature is not enabled,  stageMask must not contain $VUID-vkCmdResetEvent-stageMask-04098% Any pipeline stage included in  stageMask must be supported by the capabilities of the queue family specified by the queueFamilyIndex member of the  , structure that was used to create the 0  that  commandBuffer. was allocated from, as specified in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported"table of supported pipeline stages$VUID-vkCmdResetEvent-stageMask-03937 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2synchronization2 feature is not enabled,  stageMask must not be 0$VUID-vkCmdResetEvent-stageMask-01153  stageMask must not include  VUID-vkCmdResetEvent-event-03834 There must) be an execution dependency between j and the execution of any j that includes event in its pEvents parameter VUID-vkCmdResetEvent-event-03835 There must) be an execution dependency between j and the execution of any   that includes event in its pEvents parameter(VUID-vkCmdResetEvent-commandBuffer-01157  commandBuffer@s current device mask must$ include exactly one physical deviceValid Usage (Implicit),VUID-vkCmdResetEvent-commandBuffer-parameter  commandBuffer must be a valid  handle$VUID-vkCmdResetEvent-event-parameter event must be a valid  handle(VUID-vkCmdResetEvent-stageMask-parameter  stageMask must% be a valid combination of Y values,VUID-vkCmdResetEvent-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state*VUID-vkCmdResetEvent-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must( support graphics, or compute operationsVUID-vkCmdResetEvent-renderpass This command must6 only be called outside of a render pass instance!VUID-vkCmdResetEvent-commonparent Both of  commandBuffer , and event must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryOutside Graphics ComputeSee Also, , ZjvulkanvkCmdWaitEvents - Wait for one or more events and insert a set of memory Descriptionj is largely similar to  , but can, only wait on signal operations defined by j. As j$ does not define any access scopes, j defines the first access scope for each event signal operation in addition to its own access scopes.NoteSince j does not have any dependency information beyond a stage mask, implementations do not have the same opportunity to perform  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-available-and-visible&availability and visibility operations or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transitions in advance as they do with   and  .When j is submitted to a queue, it defines a memory dependency between prior event signal operations on the same queue or the host, and subsequent commands. j must not be used to wait on event signal operations occurring on other queues.The first synchronization scope only includes event signal operations that operate on members of pEvents, and the operations that happened-before the event signal operations. Event signal operations performed by j that occur earlier in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-ordersubmission order; are included in the first synchronization scope, if the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-orderlogically latest pipeline stage in their  stageMask parameter is  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-orderlogically earlier than or equal to the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-orderlogically latest pipeline stage in  srcStageMask(. Event signal operations performed by + ; are only included in the first synchronization scope if  is included in  srcStageMask. The second  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope- includes all commands that occur later in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-ordersubmission order. The second synchronization scope is limited to operations on the pipeline stages determined by the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masksdestination stage mask specified by  dstStageMask. The first  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope is limited to accesses in the pipeline stages determined by the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-maskssource stage mask specified by  srcStageMask. Within that, the first access scope only includes the first access scopes defined by elements of the pMemoryBarriers, pBufferMemoryBarriers and pImageMemoryBarriers& arrays, which each define a set of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-memory-barriersmemory barriers. If no memory barriers are specified, then the first access scope includes no accesses. The second  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope is limited to accesses in the pipeline stages determined by the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masksdestination stage mask specified by  dstStageMask. Within that, the second access scope only includes the second access scopes defined by elements of the pMemoryBarriers, pBufferMemoryBarriers and pImageMemoryBarriers& arrays, which each define a set of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-memory-barriersmemory barriers. If no memory barriers are specified, then the second access scope includes no accesses. Valid Usage'VUID-vkCmdWaitEvents-srcStageMask-04090 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled,  srcStageMask must not contain 'VUID-vkCmdWaitEvents-srcStageMask-04091 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled,  srcStageMask must not contain  or 'VUID-vkCmdWaitEvents-srcStageMask-04092 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRenderingconditional rendering feature is not enabled,  srcStageMask must not contain 'VUID-vkCmdWaitEvents-srcStageMask-04093 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapfragment density map feature is not enabled,  srcStageMask must not contain 'VUID-vkCmdWaitEvents-srcStageMask-04094 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedbacktransform feedback feature is not enabled,  srcStageMask must not contain 'VUID-vkCmdWaitEvents-srcStageMask-04095 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled,  srcStageMask must not contain 'VUID-vkCmdWaitEvents-srcStageMask-04096 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders feature is not enabled,  srcStageMask must not contain 'VUID-vkCmdWaitEvents-srcStageMask-04097 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshading rate image feature is not enabled,  srcStageMask must not contain 'VUID-vkCmdWaitEvents-srcStageMask-04098% Any pipeline stage included in  srcStageMask must be supported by the capabilities of the queue family specified by the queueFamilyIndex member of the  , structure that was used to create the 0  that  commandBuffer. was allocated from, as specified in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported"table of supported pipeline stages'VUID-vkCmdWaitEvents-srcStageMask-03937 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2synchronization2 feature is not enabled,  srcStageMask must not be 0'VUID-vkCmdWaitEvents-dstStageMask-04090 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled,  dstStageMask must not contain 'VUID-vkCmdWaitEvents-dstStageMask-04091 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled,  dstStageMask must not contain  or 'VUID-vkCmdWaitEvents-dstStageMask-04092 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRenderingconditional rendering feature is not enabled,  dstStageMask must not contain 'VUID-vkCmdWaitEvents-dstStageMask-04093 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapfragment density map feature is not enabled,  dstStageMask must not contain 'VUID-vkCmdWaitEvents-dstStageMask-04094 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedbacktransform feedback feature is not enabled,  dstStageMask must not contain 'VUID-vkCmdWaitEvents-dstStageMask-04095 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled,  dstStageMask must not contain 'VUID-vkCmdWaitEvents-dstStageMask-04096 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders feature is not enabled,  dstStageMask must not contain 'VUID-vkCmdWaitEvents-dstStageMask-04097 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshading rate image feature is not enabled,  dstStageMask must not contain 'VUID-vkCmdWaitEvents-dstStageMask-04098% Any pipeline stage included in  dstStageMask must be supported by the capabilities of the queue family specified by the queueFamilyIndex member of the  , structure that was used to create the 0  that  commandBuffer. was allocated from, as specified in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported"table of supported pipeline stages'VUID-vkCmdWaitEvents-dstStageMask-03937 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2synchronization2 feature is not enabled,  dstStageMask must not be 0(VUID-vkCmdWaitEvents-srcAccessMask-02815 The  srcAccessMask member of each element of pMemoryBarriers must only include access flags that are supported by one or more of the pipeline stages in  srcStageMask, as specified in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access types(VUID-vkCmdWaitEvents-dstAccessMask-02816 The  dstAccessMask member of each element of pMemoryBarriers must only include access flags that are supported by one or more of the pipeline stages in  dstStageMask, as specified in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access types0VUID-vkCmdWaitEvents-pBufferMemoryBarriers-02817 For any element of pBufferMemoryBarriers , if its srcQueueFamilyIndex and dstQueueFamilyIndex# members are equal, or if its srcQueueFamilyIndex is the queue family index that was used to create the command pool that  commandBuffer# was allocated from, then its  srcAccessMask member must only contain access flags that are supported by one or more of the pipeline stages in  srcStageMask, as specified in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access types0VUID-vkCmdWaitEvents-pBufferMemoryBarriers-02818 For any element of pBufferMemoryBarriers , if its srcQueueFamilyIndex and dstQueueFamilyIndex# members are equal, or if its dstQueueFamilyIndex is the queue family index that was used to create the command pool that  commandBuffer# was allocated from, then its  dstAccessMask member must only contain access flags that are supported by one or more of the pipeline stages in  dstStageMask, as specified in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access types/VUID-vkCmdWaitEvents-pImageMemoryBarriers-02819 For any element of pImageMemoryBarriers , if its srcQueueFamilyIndex and dstQueueFamilyIndex# members are equal, or if its srcQueueFamilyIndex is the queue family index that was used to create the command pool that  commandBuffer# was allocated from, then its  srcAccessMask member must only contain access flags that are supported by one or more of the pipeline stages in  srcStageMask, as specified in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access types/VUID-vkCmdWaitEvents-pImageMemoryBarriers-02820 For any element of pImageMemoryBarriers , if its srcQueueFamilyIndex and dstQueueFamilyIndex# members are equal, or if its dstQueueFamilyIndex is the queue family index that was used to create the command pool that  commandBuffer# was allocated from, then its  dstAccessMask member must only contain access flags that are supported by one or more of the pipeline stages in  dstStageMask, as specified in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access types'VUID-vkCmdWaitEvents-srcStageMask-01158  srcStageMask must be the bitwise OR of the  stageMask* parameter used in previous calls to j with any of the elements of pEvents and  if any of the elements of pEvents was set using + "VUID-vkCmdWaitEvents-pEvents-01163 If pEvents; includes one or more events that will be signaled by +  after  commandBuffer* has been submitted to a queue, then j must, not be called inside a render pass instance.VUID-vkCmdWaitEvents-srcQueueFamilyIndex-02803 The srcQueueFamilyIndex and dstQueueFamilyIndex members of any element of pBufferMemoryBarriers or pImageMemoryBarriers must be equal(VUID-vkCmdWaitEvents-commandBuffer-01167  commandBuffer@s current device mask must$ include exactly one physical device"VUID-vkCmdWaitEvents-pEvents-03847 Elements of pEvents must% not have been signaled by  Valid Usage (Implicit),VUID-vkCmdWaitEvents-commandBuffer-parameter  commandBuffer must be a valid  handle &VUID-vkCmdWaitEvents-pEvents-parameter pEvents must( be a valid pointer to an array of  eventCount valid  handles+VUID-vkCmdWaitEvents-srcStageMask-parameter  srcStageMask must% be a valid combination of Y values+VUID-vkCmdWaitEvents-dstStageMask-parameter  dstStageMask must% be a valid combination of Y values.VUID-vkCmdWaitEvents-pMemoryBarriers-parameter If memoryBarrierCount is not 0, pMemoryBarriers must( be a valid pointer to an array of memoryBarrierCount valid  structures4VUID-vkCmdWaitEvents-pBufferMemoryBarriers-parameter If bufferMemoryBarrierCount is not 0, pBufferMemoryBarriers must# be a valid pointer to an array of bufferMemoryBarrierCount valid  structures3VUID-vkCmdWaitEvents-pImageMemoryBarriers-parameter If imageMemoryBarrierCount is not 0, pImageMemoryBarriers must( be a valid pointer to an array of imageMemoryBarrierCount valid  structures,VUID-vkCmdWaitEvents-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state*VUID-vkCmdWaitEvents-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must( support graphics, or compute operations+VUID-vkCmdWaitEvents-eventCount-arraylength  eventCount must be greater than 0!VUID-vkCmdWaitEvents-commonparent Both of  commandBuffer, and the elements of pEvents must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth Graphics ComputeSee Also, , , , , Zjvulkan A variant of j which makes a *safe* FFI calljvulkan1vkCmdPipelineBarrier - Insert a memory dependency Descriptionj! operates almost identically to  , except that the scopes and barriers are defined as direct parameters rather than being defined by an .When j is submitted to a queue, it defines a memory dependency between commands that were submitted before it, and those submitted after it.If j: was recorded outside a render pass instance, the first  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope/ includes all commands that occur earlier in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-ordersubmission order. If j was recorded inside a render pass instance, the first synchronization scope includes only commands that occur earlier in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-ordersubmission order within the same subpass. In either case, the first synchronization scope is limited to operations on the pipeline stages determined by the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-maskssource stage mask specified by  srcStageMask.If j; was recorded outside a render pass instance, the second  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope- includes all commands that occur later in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-ordersubmission order. If j was recorded inside a render pass instance, the second synchronization scope includes only commands that occur later in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-ordersubmission order within the same subpass. In either case, the second synchronization scope is limited to operations on the pipeline stages determined by the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masksdestination stage mask specified by  dstStageMask. The first  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope is limited to accesses in the pipeline stages determined by the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-maskssource stage mask specified by  srcStageMask. Within that, the first access scope only includes the first access scopes defined by elements of the pMemoryBarriers, pBufferMemoryBarriers and pImageMemoryBarriers& arrays, which each define a set of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-memory-barriersmemory barriers. If no memory barriers are specified, then the first access scope includes no accesses. The second  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope is limited to accesses in the pipeline stages determined by the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masksdestination stage mask specified by  dstStageMask. Within that, the second access scope only includes the second access scopes defined by elements of the pMemoryBarriers, pBufferMemoryBarriers and pImageMemoryBarriers& arrays, which each define a set of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-memory-barriersmemory barriers. If no memory barriers are specified, then the second access scope includes no accesses.If dependencyFlags includes ( , then any dependency between  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regionsframebuffer-space pipeline stages is  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regionsframebuffer-local - otherwise it is  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regionsframebuffer-global. Valid Usage,VUID-vkCmdPipelineBarrier-srcStageMask-04090 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled,  srcStageMask must not contain ,VUID-vkCmdPipelineBarrier-srcStageMask-04091 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled,  srcStageMask must not contain  or ,VUID-vkCmdPipelineBarrier-srcStageMask-04092 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRenderingconditional rendering feature is not enabled,  srcStageMask must not contain ,VUID-vkCmdPipelineBarrier-srcStageMask-04093 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapfragment density map feature is not enabled,  srcStageMask must not contain ,VUID-vkCmdPipelineBarrier-srcStageMask-04094 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedbacktransform feedback feature is not enabled,  srcStageMask must not contain ,VUID-vkCmdPipelineBarrier-srcStageMask-04095 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled,  srcStageMask must not contain ,VUID-vkCmdPipelineBarrier-srcStageMask-04096 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders feature is not enabled,  srcStageMask must not contain ,VUID-vkCmdPipelineBarrier-srcStageMask-04097 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshading rate image feature is not enabled,  srcStageMask must not contain ,VUID-vkCmdPipelineBarrier-srcStageMask-04098% Any pipeline stage included in  srcStageMask must be supported by the capabilities of the queue family specified by the queueFamilyIndex member of the  , structure that was used to create the 0  that  commandBuffer. was allocated from, as specified in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported"table of supported pipeline stages,VUID-vkCmdPipelineBarrier-srcStageMask-03937 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2synchronization2 feature is not enabled,  srcStageMask must not be 0,VUID-vkCmdPipelineBarrier-dstStageMask-04090 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled,  dstStageMask must not contain ,VUID-vkCmdPipelineBarrier-dstStageMask-04091 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled,  dstStageMask must not contain  or ,VUID-vkCmdPipelineBarrier-dstStageMask-04092 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRenderingconditional rendering feature is not enabled,  dstStageMask must not contain ,VUID-vkCmdPipelineBarrier-dstStageMask-04093 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapfragment density map feature is not enabled,  dstStageMask must not contain ,VUID-vkCmdPipelineBarrier-dstStageMask-04094 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedbacktransform feedback feature is not enabled,  dstStageMask must not contain ,VUID-vkCmdPipelineBarrier-dstStageMask-04095 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled,  dstStageMask must not contain ,VUID-vkCmdPipelineBarrier-dstStageMask-04096 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders feature is not enabled,  dstStageMask must not contain ,VUID-vkCmdPipelineBarrier-dstStageMask-04097 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshading rate image feature is not enabled,  dstStageMask must not contain ,VUID-vkCmdPipelineBarrier-dstStageMask-04098% Any pipeline stage included in  dstStageMask must be supported by the capabilities of the queue family specified by the queueFamilyIndex member of the  , structure that was used to create the 0  that  commandBuffer. was allocated from, as specified in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported"table of supported pipeline stages,VUID-vkCmdPipelineBarrier-dstStageMask-03937 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2synchronization2 feature is not enabled,  dstStageMask must not be 0-VUID-vkCmdPipelineBarrier-srcAccessMask-02815 The  srcAccessMask member of each element of pMemoryBarriers must only include access flags that are supported by one or more of the pipeline stages in  srcStageMask, as specified in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access types-VUID-vkCmdPipelineBarrier-dstAccessMask-02816 The  dstAccessMask member of each element of pMemoryBarriers must only include access flags that are supported by one or more of the pipeline stages in  dstStageMask, as specified in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access types5VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-02817 For any element of pBufferMemoryBarriers , if its srcQueueFamilyIndex and dstQueueFamilyIndex# members are equal, or if its srcQueueFamilyIndex is the queue family index that was used to create the command pool that  commandBuffer# was allocated from, then its  srcAccessMask member must only contain access flags that are supported by one or more of the pipeline stages in  srcStageMask, as specified in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access types5VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-02818 For any element of pBufferMemoryBarriers , if its srcQueueFamilyIndex and dstQueueFamilyIndex# members are equal, or if its dstQueueFamilyIndex is the queue family index that was used to create the command pool that  commandBuffer# was allocated from, then its  dstAccessMask member must only contain access flags that are supported by one or more of the pipeline stages in  dstStageMask, as specified in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access types4VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-02819 For any element of pImageMemoryBarriers , if its srcQueueFamilyIndex and dstQueueFamilyIndex# members are equal, or if its srcQueueFamilyIndex is the queue family index that was used to create the command pool that  commandBuffer# was allocated from, then its  srcAccessMask member must only contain access flags that are supported by one or more of the pipeline stages in  srcStageMask, as specified in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access types4VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-02820 For any element of pImageMemoryBarriers , if its srcQueueFamilyIndex and dstQueueFamilyIndex# members are equal, or if its dstQueueFamilyIndex is the queue family index that was used to create the command pool that  commandBuffer# was allocated from, then its  dstAccessMask member must only contain access flags that are supported by one or more of the pipeline stages in  dstStageMask, as specified in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access types-VUID-vkCmdPipelineBarrier-pDependencies-02285 If j? is called within a render pass instance, the render pass must* have been created with at least one 7 instance in 7:: pDependencies that expresses a dependency from the current subpass to itself, with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scopes and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopes that are all supersets of the scopes defined in this command8VUID-vkCmdPipelineBarrier-bufferMemoryBarrierCount-01178 If j2 is called within a render pass instance, it must' not include any buffer memory barriers%VUID-vkCmdPipelineBarrier-image-04073 If j3 is called within a render pass instance, the image member of any image memory barrier included in this command must be an attachment used in the current subpass both as an input attachment, and as either a color or depth/stencil attachment)VUID-vkCmdPipelineBarrier-oldLayout-01181 If j3 is called within a render pass instance, the  oldLayout and  newLayout members of any image memory barrier included in this command must be equal3VUID-vkCmdPipelineBarrier-srcQueueFamilyIndex-01182 If j3 is called within a render pass instance, the srcQueueFamilyIndex and dstQueueFamilyIndex members of any image memory barrier included in this command must be equal/VUID-vkCmdPipelineBarrier-dependencyFlags-01186 If j3 is called outside of a render pass instance, ( must( not be included in the dependency flagsValid Usage (Implicit)1VUID-vkCmdPipelineBarrier-commandBuffer-parameter  commandBuffer must be a valid  handle0VUID-vkCmdPipelineBarrier-srcStageMask-parameter  srcStageMask must be a valid combination of Y values0VUID-vkCmdPipelineBarrier-dstStageMask-parameter  dstStageMask must be a valid combination of Y values3VUID-vkCmdPipelineBarrier-dependencyFlags-parameter dependencyFlags must be a valid combination of G values3VUID-vkCmdPipelineBarrier-pMemoryBarriers-parameter If memoryBarrierCount is not 0, pMemoryBarriers must( be a valid pointer to an array of memoryBarrierCount valid  structures9VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-parameter If bufferMemoryBarrierCount is not 0, pBufferMemoryBarriers must# be a valid pointer to an array of bufferMemoryBarrierCount valid  structures8VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-parameter If imageMemoryBarrierCount is not 0, pImageMemoryBarriers must( be a valid pointer to an array of imageMemoryBarrierCount valid  structures1VUID-vkCmdPipelineBarrier-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state/VUID-vkCmdPipelineBarrier-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must7 support transfer, graphics, or compute operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary Secondary Both Transfer Graphics ComputeSee Also, , H, , , ZjvulkanvkCmdBeginQuery - Begin a query DescriptionIf the  queryType of the pool is $ and flags contains , an implementation must return a result that matches the actual number of samples passed. This is described in more detail in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-occlusionOcclusion Queries.Calling j is equivalent to calling   with the index parameter set to zero.2After beginning a query, that query is considered active within the command buffer it was called in until that same query is ended. Queries active in a primary command buffer when secondary command buffers are executed are considered active for those secondary command buffers. Valid UsageVUID-vkCmdBeginQuery-None-00807& All queries used by the command must be unavailable$VUID-vkCmdBeginQuery-queryType-02804 The  queryType used to create  queryPool must not be $ $VUID-vkCmdBeginQuery-queryType-04728 The  queryType used to create  queryPool must not be $  or $ $VUID-vkCmdBeginQuery-queryType-04729 The  queryType used to create  queryPool must not be $ $VUID-vkCmdBeginQuery-queryType-00800 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-occlusionQueryPreciseprecise occlusion queries% feature is not enabled, or the  queryType used to create  queryPool was not $, flags must not contain  VUID-vkCmdBeginQuery-query-00802 query must, be less than the number of queries in  queryPool$VUID-vkCmdBeginQuery-queryType-00803 If the  queryType used to create  queryPool was $ , the 0  that  commandBuffer was allocated from must support graphics operations$VUID-vkCmdBeginQuery-queryType-00804 If the  queryType used to create  queryPool was $ and any of the pipelineStatistics( indicate graphics operations, the 0  that  commandBuffer was allocated from must support graphics operations$VUID-vkCmdBeginQuery-queryType-00805 If the  queryType used to create  queryPool was $ and any of the pipelineStatistics' indicate compute operations, the 0  that  commandBuffer was allocated from must support compute operations(VUID-vkCmdBeginQuery-commandBuffer-01885  commandBuffer must' not be a protected command buffer VUID-vkCmdBeginQuery-query-00808: If called within a render pass instance, the sum of query and the number of bits set in the current subpass@s view mask must8 be less than or equal to the number of queries in  queryPool$VUID-vkCmdBeginQuery-queryPool-01922  queryPool must have been created with a  queryType: that differs from that of any queries that are  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-activeactive within  commandBuffer$VUID-vkCmdBeginQuery-queryType-02327 If the  queryType used to create  queryPool was $  the 0  that  commandBuffer was allocated from must support graphics operations$VUID-vkCmdBeginQuery-queryType-02328 If the  queryType used to create  queryPool was $  then ::transformFeedbackQueries must be supported$VUID-vkCmdBeginQuery-queryPool-03223 If  queryPool was created with a  queryType of $, the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#profiling-lockprofiling lock must have been held before   was called on  commandBuffer$VUID-vkCmdBeginQuery-queryPool-03224 If  queryPool was created with a  queryType of $- and one of the counters used to create  queryPool was , the query begin must' be the first recorded command in  commandBuffer$VUID-vkCmdBeginQuery-queryPool-03225 If  queryPool was created with a  queryType of $- and one of the counters used to create  queryPool was , the begin command must3 not be recorded within a render pass instance$VUID-vkCmdBeginQuery-queryPool-03226 If  queryPool was created with a  queryType of $$ and another query pool with a  queryType $ has been used within  commandBuffer, its parent primary command buffer or secondary command buffer recorded within the same parent primary command buffer as  commandBuffer , the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-performanceCounterMultipleQueryPools$performanceCounterMultipleQueryPools feature must be enabledVUID-vkCmdBeginQuery-None-02863 If  queryPool was created with a  queryType of $, this command must not be recorded in a command buffer that, either directly or through secondary command buffers, also contains a j! command affecting the same queryValid Usage (Implicit),VUID-vkCmdBeginQuery-commandBuffer-parameter  commandBuffer must be a valid  handle(VUID-vkCmdBeginQuery-queryPool-parameter  queryPool must be a valid } handle$VUID-vkCmdBeginQuery-flags-parameter flags must% be a valid combination of \ values,VUID-vkCmdBeginQuery-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state*VUID-vkCmdBeginQuery-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must( support graphics, or compute operations!VUID-vkCmdBeginQuery-commonparent Both of  commandBuffer , and  queryPool must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth Graphics ComputeSee Also, ], }jvulkan>This function will call the supplied action between calls to j and j Note that j is *not* called if an exception is thrown by the inner action.jvulkanvkCmdEndQuery - Ends a query DescriptionCalling j is equivalent to calling   with the index parameter set to zero.As queries operate asynchronously, ending a query does not immediately set the query@s status to available. A query is considered finished when the final results of the query are ready to be retrieved by ; and j;, and this is when the query@s status is set to available. Once a query is ended the query must finish in finite time, unless the state of the query is changed using other commands, e.g. by issuing a reset of the query. Valid UsageVUID-vkCmdEndQuery-None-01923& All queries used by the command must be https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-activeactiveVUID-vkCmdEndQuery-query-00810 query must, be less than the number of queries in  queryPool&VUID-vkCmdEndQuery-commandBuffer-01886  commandBuffer must' not be a protected command bufferVUID-vkCmdEndQuery-query-00812 If j: is called within a render pass instance, the sum of query and the number of bits set in the current subpass@s view mask must8 be less than or equal to the number of queries in  queryPool"VUID-vkCmdEndQuery-queryPool-03227 If  queryPool was created with a  queryType of $5 and one or more of the counters used to create  queryPool was  , the j must& be the last recorded command in  commandBuffer"VUID-vkCmdEndQuery-queryPool-03228 If  queryPool was created with a  queryType of $5 and one or more of the counters used to create  queryPool was  , the j must3 not be recorded within a render pass instanceValid Usage (Implicit)*VUID-vkCmdEndQuery-commandBuffer-parameter  commandBuffer must be a valid  handle&VUID-vkCmdEndQuery-queryPool-parameter  queryPool must be a valid } handle*VUID-vkCmdEndQuery-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state(VUID-vkCmdEndQuery-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must( support graphics, or compute operationsVUID-vkCmdEndQuery-commonparent Both of  commandBuffer , and  queryPool must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth Graphics ComputeSee Also, }jvulkan3vkCmdResetQueryPool - Reset queries in a query pool DescriptionWhen executed on a queue, this command sets the status of query indices [ firstQuery,  firstQuery +  queryCount - 1] to unavailable.If the  queryType used to create  queryPool was $2, this command sets the status of query indices [ firstQuery,  firstQuery +  queryCount& - 1] to unavailable for each pass of  queryPool, as indicated by a call to  .NoteBecause j resets all the passes of the indicated queries, applications must not record a j command for a  queryPool created with $ in a command buffer that needs to be submitted multiple times as indicated by a call to  . Otherwise applications will never be able to complete the recorded queries. Valid Usage)VUID-vkCmdResetQueryPool-firstQuery-00796  firstQuery must, be less than the number of queries in  queryPool)VUID-vkCmdResetQueryPool-firstQuery-00797 The sum of  firstQuery and  queryCount must8 be less than or equal to the number of queries in  queryPool#VUID-vkCmdResetQueryPool-None-02841& All queries used by the command must not be active)VUID-vkCmdResetQueryPool-firstQuery-02862 If  queryPool was created with $, this command must not be recorded in a command buffer that, either directly or through secondary command buffers, also contains begin commands for a query from the set of queries [ firstQuery,  firstQuery +  queryCount - 1]Valid Usage (Implicit)0VUID-vkCmdResetQueryPool-commandBuffer-parameter  commandBuffer must be a valid  handle,VUID-vkCmdResetQueryPool-queryPool-parameter  queryPool must be a valid } handle0VUID-vkCmdResetQueryPool-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state.VUID-vkCmdResetQueryPool-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must( support graphics, or compute operations#VUID-vkCmdResetQueryPool-renderpass This command must6 only be called outside of a render pass instance%VUID-vkCmdResetQueryPool-commonparent Both of  commandBuffer , and  queryPool must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryOutside Graphics ComputeSee Also, }jvulkanvkCmdWriteTimestamp - Write a device timestamp into a query object Descriptionj latches the value of the timer when all previous commands have completed executing as far as the specified pipeline stage, and writes the timestamp value to memory. When the timestamp value is written, the availability status of the query is set to available.NoteIf an implementation is unable to detect completion and latch the timer at any specific stage of the pipeline, it may- instead do so at any logically later stage.Comparisons between timestamps are not meaningful if the timestamps are written by commands submitted to different queues.NoteAn example of such a comparison is subtracting an older timestamp from a newer one to determine the execution time of a sequence of commands.If j is called while executing a render pass instance that has multiview enabled, the timestamp uses N consecutive query indices in the query pool (starting at query) where N is the number of bits set in the view mask of the subpass the command is executed in. The resulting query values are determined by an implementation-dependent choice of one of the following behaviors:The first query is a timestamp value and (if more than one bit is set in the view mask) zero is written to the remaining queries. If two timestamps are written in the same subpass, the sum of the execution time of all views between those commands is the difference between the first query written by each command.All N queries are timestamp values. If two timestamps are written in the same subpass, the sum of the execution time of all views between those commands is the sum of the difference between corresponding queries written by each command. The difference between corresponding queries may( be the execution time of a single view. In either case, the application can sum the differences between all N queries to determine the total execution time. Valid Usage,VUID-vkCmdWriteTimestamp-pipelineStage-04074  pipelineStage must be a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported valid stage for the queue family that was used to create the command pool that  commandBuffer was allocated from ,VUID-vkCmdWriteTimestamp-pipelineStage-04075 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled,  pipelineStage must not be ,VUID-vkCmdWriteTimestamp-pipelineStage-04076 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled,  pipelineStage must not be  or ,VUID-vkCmdWriteTimestamp-pipelineStage-04077 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRenderingconditional rendering feature is not enabled,  pipelineStage must not be ,VUID-vkCmdWriteTimestamp-pipelineStage-04078 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapfragment density map feature is not enabled,  pipelineStage must not be ,VUID-vkCmdWriteTimestamp-pipelineStage-04079 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedbacktransform feedback feature is not enabled,  pipelineStage must not be ,VUID-vkCmdWriteTimestamp-pipelineStage-04080 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled,  pipelineStage must not be  or ,VUID-vkCmdWriteTimestamp-pipelineStage-04081 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshading rate image feature is not enabled,  pipelineStage must not be (VUID-vkCmdWriteTimestamp-queryPool-01416  queryPool must have been created with a  queryType of $ (VUID-vkCmdWriteTimestamp-queryPool-00828 The query identified by  queryPool and query must be  unavailable1VUID-vkCmdWriteTimestamp-timestampValidBits-00829& The command pool@s queue family must support a non-zero timestampValidBits$VUID-vkCmdWriteTimestamp-query-04904 query must, be less than the number of queries in  queryPool#VUID-vkCmdWriteTimestamp-None-00830& All queries used by the command must be unavailable$VUID-vkCmdWriteTimestamp-query-00831 If j: is called within a render pass instance, the sum of query and the number of bits set in the current subpass@s view mask must8 be less than or equal to the number of queries in  queryPoolValid Usage (Implicit)0VUID-vkCmdWriteTimestamp-commandBuffer-parameter  commandBuffer must be a valid  handle0VUID-vkCmdWriteTimestamp-pipelineStage-parameter  pipelineStage must be a valid Y value,VUID-vkCmdWriteTimestamp-queryPool-parameter  queryPool must be a valid } handle0VUID-vkCmdWriteTimestamp-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state.VUID-vkCmdWriteTimestamp-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must7 support transfer, graphics, or compute operations%VUID-vkCmdWriteTimestamp-commonparent Both of  commandBuffer , and  queryPool must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary Secondary Both Transfer Graphics ComputeSee Also, Y, }jvulkanvkCmdCopyQueryPoolResults - Copy the results of queries in a query pool to a buffer object Descriptionj6 is guaranteed to see the effect of previous uses of j in the same queue, without any additional synchronization. Thus, the results will always reflect the most recent use of the query.flags6 has the same possible values described above for the flags parameter of ;, but the different style of execution causes some subtle behavioral differences. Because j executes in order with respect to other query commands, there is less ambiguity about which use of a query is being requested.Results for all requested occlusion queries, pipeline statistics queries, transform feedback queries, and timestamp queries are written as 64-bit unsigned integer values if  is set or 32-bit unsigned integer values otherwise. Performance queries store results in a tightly packed array whose type is determined by the unit member of the corresponding .If neither of  and  are set, results are only written out for queries in the available state.If  is set, the implementation will wait for each query@s status to be in the available state before retrieving the numerical results for that query. This is guaranteed to reflect the most recent use of the query on the same queue, assuming that the query is not being simultaneously used by other queues. If the query does not become available in a finite amount of time (e.g. due to not issuing a query since the last reset), a % error may occur.Similarly, if  is set and  is not set, the availability is guaranteed to reflect the most recent use of the query on the same queue, assuming that the query is not being simultaneously used by other queues. As with ;, implementations must guarantee that if they return a non-zero availability value, then the numerical results are valid.If  is set,  is not set, and the query@s status is unavailable, an intermediate result value between zero and the final result value is written for that query. must not be used if the pool@s  queryType is $ .j is considered to be a transfer operation, and its writes to buffer memory must be synchronized using  and  before using the results. Valid Usage.VUID-vkCmdCopyQueryPoolResults-dstOffset-00819  dstOffset must be less than the size of  dstBuffer /VUID-vkCmdCopyQueryPoolResults-firstQuery-00820  firstQuery must' be less than the number of queries in  queryPool/VUID-vkCmdCopyQueryPoolResults-firstQuery-00821 The sum of  firstQuery and  queryCount must8 be less than or equal to the number of queries in  queryPool*VUID-vkCmdCopyQueryPoolResults-flags-00822 If  is not set in flags then  dstOffset and stride must be multiples of 4*VUID-vkCmdCopyQueryPoolResults-flags-00823 If  is set in flags then  dstOffset and stride must be multiples of 8.VUID-vkCmdCopyQueryPoolResults-dstBuffer-00824  dstBuffer must have enough storage, from  dstOffset>, to contain the result of each query, as described https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-memorylayouthere.VUID-vkCmdCopyQueryPoolResults-dstBuffer-00825  dstBuffer must" have been created with  usage flag.VUID-vkCmdCopyQueryPoolResults-dstBuffer-00826 If  dstBuffer is non-sparse then it must7 be bound completely and contiguously to a single 0  object.VUID-vkCmdCopyQueryPoolResults-queryType-00827 If the  queryType used to create  queryPool was $ , flags must not contain .VUID-vkCmdCopyQueryPoolResults-queryType-03232 If the  queryType used to create  queryPool was $, ::allowCommandBufferQueryCopies must be /.VUID-vkCmdCopyQueryPoolResults-queryType-03233 If the  queryType used to create  queryPool was $, flags must not contain ,  or .VUID-vkCmdCopyQueryPoolResults-queryType-03234 If the  queryType used to create  queryPool was $ , the  queryPool must have been submitted once for each pass as retrieved via a call to  .VUID-vkCmdCopyQueryPoolResults-queryType-02734 j must not be called if the  queryType used to create  queryPool was $Valid Usage (Implicit)6VUID-vkCmdCopyQueryPoolResults-commandBuffer-parameter  commandBuffer must be a valid  handle2VUID-vkCmdCopyQueryPoolResults-queryPool-parameter  queryPool must be a valid } handle2VUID-vkCmdCopyQueryPoolResults-dstBuffer-parameter  dstBuffer must be a valid  handle.VUID-vkCmdCopyQueryPoolResults-flags-parameter flags must% be a valid combination of ^ values6VUID-vkCmdCopyQueryPoolResults-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state4VUID-vkCmdCopyQueryPoolResults-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must( support graphics, or compute operations)VUID-vkCmdCopyQueryPoolResults-renderpass This command must6 only be called outside of a render pass instance+VUID-vkCmdCopyQueryPoolResults-commonparent Each of  commandBuffer,  dstBuffer, and  queryPool must have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryOutside Graphics ComputeSee Also, , o, }, _jvulkan8vkCmdPushConstants - Update the values of push constants DescriptionWhen a command buffer begins recording, all push constant values are undefined.Push constant values can5 be updated incrementally, causing shader stages in  stageFlags to read the new data from pValues for push constants modified by this command, while still reading the previous data for push constants not modified by this command. When a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-bindpoint-commandsbound pipeline command) is issued, the bound pipeline@s layout must be compatible with the layouts used to set the values of all push constants in the pipeline layout@s push constant ranges, as described in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibilityPipeline Layout Compatibility. Binding a pipeline with a layout that is not compatible with the push constant layout does not disturb the push constant values.NoteAs  stageFlags needs to include all flags the relevant push constant ranges were created with, any flags that are not supported by the queue family that the 0  used to allocate  commandBuffer was created on are ignored. Valid Usage$VUID-vkCmdPushConstants-offset-01795. For each byte in the range specified by offset and size# and for each shader stage in  stageFlags, there must be a push constant range in layout, that includes that byte and that stage$VUID-vkCmdPushConstants-offset-01796. For each byte in the range specified by offset and size and for each push constant range that overlaps that byte,  stageFlags must< include all stages in that push constant range@s ::: stageFlags$VUID-vkCmdPushConstants-offset-00368 offset must be a multiple of 4"VUID-vkCmdPushConstants-size-00369 size must be a multiple of 4$VUID-vkCmdPushConstants-offset-00370 offset must be less than  ::maxPushConstantsSize"VUID-vkCmdPushConstants-size-00371 size must$ be less than or equal to  ::maxPushConstantsSize minus offsetValid Usage (Implicit)/VUID-vkCmdPushConstants-commandBuffer-parameter  commandBuffer must be a valid  handle(VUID-vkCmdPushConstants-layout-parameter layout must be a valid ~ handle,VUID-vkCmdPushConstants-stageFlags-parameter  stageFlags must% be a valid combination of d values2VUID-vkCmdPushConstants-stageFlags-requiredbitmask  stageFlags must not be 0)VUID-vkCmdPushConstants-pValues-parameter pValues must( be a valid pointer to an array of size bytes/VUID-vkCmdPushConstants-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state-VUID-vkCmdPushConstants-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must( support graphics, or compute operations(VUID-vkCmdPushConstants-size-arraylength size must be greater than 0$VUID-vkCmdPushConstants-commonparent Both of  commandBuffer , and layout must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth Graphics ComputeSee Also, ~, ejvulkan.vkCmdBeginRenderPass - Begin a new render pass DescriptionAfter beginning a render pass instance, the command buffer is ready to record the commands for the first subpass of that render pass. Valid Usage-VUID-vkCmdBeginRenderPass-initialLayout-00895 If any of the  initialLayout or  finalLayout member of the 7 structures or the layout member of the 7  structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is " then the corresponding attachment image view of the framebuffer specified in the  framebuffer member of pRenderPassBegin must have been created with a usage value including   -VUID-vkCmdBeginRenderPass-initialLayout-01758 If any of the  initialLayout or  finalLayout member of the 7 structures or the layout member of the 7  structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is ", ", ", or " then the corresponding attachment image view of the framebuffer specified in the  framebuffer member of pRenderPassBegin must have been created with a usage value including  -VUID-vkCmdBeginRenderPass-initialLayout-02842 If any of the  initialLayout or  finalLayout member of the 7 structures or the layout member of the 7  structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is ", or ", ", or " then the corresponding attachment image view of the framebuffer specified in the  framebuffer member of pRenderPassBegin must have been created with a usage value including  4VUID-vkCmdBeginRenderPass-stencilInitialLayout-02843 If any of the stencilInitialLayout or stencilFinalLayout member of the i structures or the  stencilLayout member of the i structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is ", or " then the corresponding attachment image view of the framebuffer specified in the  framebuffer member of pRenderPassBegin must have been created with a usage value including  -VUID-vkCmdBeginRenderPass-initialLayout-00897 If any of the  initialLayout or  finalLayout member of the 7 structures or the layout member of the 7  structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is " then the corresponding attachment image view of the framebuffer specified in the  framebuffer member of pRenderPassBegin must have been created with a usage value including   or  -VUID-vkCmdBeginRenderPass-initialLayout-00898 If any of the  initialLayout or  finalLayout member of the 7 structures or the layout member of the 7  structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is " then the corresponding attachment image view of the framebuffer specified in the  framebuffer member of pRenderPassBegin must have been created with a usage value including  -VUID-vkCmdBeginRenderPass-initialLayout-00899 If any of the  initialLayout or  finalLayout member of the 7 structures or the layout member of the 7  structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is " then the corresponding attachment image view of the framebuffer specified in the  framebuffer member of pRenderPassBegin must have been created with a usage value including  -VUID-vkCmdBeginRenderPass-initialLayout-00900 If the  initialLayout member of any of the 7 structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is not ", then each such  initialLayout must be equal to the current layout of the corresponding attachment image subresource of the framebuffer specified in the  framebuffer member of pRenderPassBegin,VUID-vkCmdBeginRenderPass-srcStageMask-00901 The  srcStageMask and  dstStageMask members of any element of the  pDependencies member of 7 used to create  renderPass must be supported by the capabilities of the queue family identified by the queueFamilyIndex member of the  , used to create the command pool which  commandBuffer was allocated from+VUID-vkCmdBeginRenderPass-framebuffer-02532 For any attachment in  framebuffer that is used by  renderPass and is bound to memory locations that are also bound to another attachment used by  renderPass, and if at least one of those uses causes either attachment to be written to, both attachments must have had the  setValid Usage (Implicit)1VUID-vkCmdBeginRenderPass-commandBuffer-parameter  commandBuffer must be a valid  handle4VUID-vkCmdBeginRenderPass-pRenderPassBegin-parameter pRenderPassBegin must$ be a valid pointer to a valid  structure,VUID-vkCmdBeginRenderPass-contents-parameter contents must be a valid i value1VUID-vkCmdBeginRenderPass-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state/VUID-vkCmdBeginRenderPass-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operations$VUID-vkCmdBeginRenderPass-renderpass This command must6 only be called outside of a render pass instance%VUID-vkCmdBeginRenderPass-bufferlevel  commandBuffer must be a primary Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimaryOutsideGraphicsSee Also, , ijvulkan>This function will call the supplied action between calls to j and j Note that j is *not* called if an exception is thrown by the inner action.jvulkanvkCmdNextSubpass - Transition to the next subpass of a render pass Description9The subpass index for a render pass begins at zero when j( is recorded, and increments each time j is recorded.Moving to the next subpass automatically performs any multisample resolve operations in the subpass being ended. End-of-subpass multisample resolves are treated as color attachment writes for the purposes of synchronization. This applies to resolve operations for both color and depth/stencil attachments. That is, they are considered to execute in the 9 pipeline stage and their writes are synchronized with  . Synchronization between rendering within a subpass and any resolve operations at the end of the subpass occurs automatically, without need for explicit dependencies or pipeline barriers. However, if the resolve attachment is also used in a different subpass, an explicit dependency is needed.9After transitioning to the next subpass, the application can' record the commands for that subpass. Valid Usage VUID-vkCmdNextSubpass-None-00909 The current subpass index must be less than the number of subpasses in the render pass minus one VUID-vkCmdNextSubpass-None-02349 This command must7 not be recorded when transform feedback is activeValid Usage (Implicit)-VUID-vkCmdNextSubpass-commandBuffer-parameter  commandBuffer must be a valid  handle(VUID-vkCmdNextSubpass-contents-parameter contents must be a valid i value-VUID-vkCmdNextSubpass-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state+VUID-vkCmdNextSubpass-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operations VUID-vkCmdNextSubpass-renderpass This command must5 only be called inside of a render pass instance!VUID-vkCmdNextSubpass-bufferlevel  commandBuffer must be a primary Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimaryInsideGraphicsSee Also, ijvulkan0vkCmdEndRenderPass - End the current render pass DescriptionEnding a render pass instance performs any multisample resolve operations on the final subpass. Valid Usage"VUID-vkCmdEndRenderPass-None-00910 The current subpass index must be equal to the number of subpasses in the render pass minus one"VUID-vkCmdEndRenderPass-None-02351 This command must7 not be recorded when transform feedback is activeValid Usage (Implicit)/VUID-vkCmdEndRenderPass-commandBuffer-parameter  commandBuffer must be a valid  handle/VUID-vkCmdEndRenderPass-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state-VUID-vkCmdEndRenderPass-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operations"VUID-vkCmdEndRenderPass-renderpass This command must5 only be called inside of a render pass instance#VUID-vkCmdEndRenderPass-bufferlevel  commandBuffer must be a primary Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimaryInsideGraphicsSee AlsojvulkanvkCmdExecuteCommands - Execute a secondary command buffer from a primary command buffer DescriptionIf any element of pCommandBuffers was not recorded with the  flag, and it was recorded into any other primary command buffer which is currently in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycleexecutable or recording state(, that primary command buffer becomes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycleinvalid. Valid Usage/VUID-vkCmdExecuteCommands-pCommandBuffers-00088 Each element of pCommandBuffers must have been allocated with a level of /VUID-vkCmdExecuteCommands-pCommandBuffers-00089 Each element of pCommandBuffers must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclepending or executable state/VUID-vkCmdExecuteCommands-pCommandBuffers-00091 If any element of pCommandBuffers was not recorded with the  flag, it must not be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state/VUID-vkCmdExecuteCommands-pCommandBuffers-00092 If any element of pCommandBuffers was not recorded with the  flag, it must# not have already been recorded to  commandBuffer/VUID-vkCmdExecuteCommands-pCommandBuffers-00093 If any element of pCommandBuffers was not recorded with the  flag, it must not appear more than once in pCommandBuffers/VUID-vkCmdExecuteCommands-pCommandBuffers-00094 Each element of pCommandBuffers must! have been allocated from a 0 8 that was created for the same queue family as the 0  from which  commandBuffer was allocated(VUID-vkCmdExecuteCommands-contents-00095 If j is being called within a render pass instance, that render pass instance must have been begun with the contents parameter of j set to /VUID-vkCmdExecuteCommands-pCommandBuffers-00096 If j is being called within a render pass instance, each element of pCommandBuffers must" have been recorded with the /VUID-vkCmdExecuteCommands-pCommandBuffers-00097 If j is being called within a render pass instance, each element of pCommandBuffers must have been recorded with ::subpass set to the index of the subpass which the given command buffer will be executed in0VUID-vkCmdExecuteCommands-pInheritanceInfo-00098 If j is being called within a render pass instance, the render passes specified in the (pBeginInfo->pInheritanceInfo->renderPass members of the  7 commands used to begin recording each element of pCommandBuffers must be  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible" with the current render pass/VUID-vkCmdExecuteCommands-pCommandBuffers-00099 If j is being called within a render pass instance, and any element of pCommandBuffers was recorded with :: framebuffer not equal to  , that  must match the . used in the current render pass instance%VUID-vkCmdExecuteCommands-pNext-02865 If j is being called within a render pass instance that included  in the pNext chain of , then each element of pCommandBuffers must have been recorded with  in the pNext chain of %VUID-vkCmdExecuteCommands-pNext-02866 If j is being called within a render pass instance that included  in the pNext chain of , then each element of pCommandBuffers must have been recorded with :: transform identical to :: transform%VUID-vkCmdExecuteCommands-pNext-02867 If j is being called within a render pass instance that included  in the pNext chain of , then each element of pCommandBuffers must have been recorded with :: renderArea identical to :: renderArea/VUID-vkCmdExecuteCommands-pCommandBuffers-00100 If j is not being called within a render pass instance, each element of pCommandBuffers must+ not have been recorded with the -VUID-vkCmdExecuteCommands-commandBuffer-00101 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-inheritedQueriesinherited queries feature is not enabled,  commandBuffer must not have any queries https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-activeactive-VUID-vkCmdExecuteCommands-commandBuffer-00102 If  commandBuffer has a $ query  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-activeactive, then each element of pCommandBuffers must# have been recorded with ::occlusionQueryEnable set to /-VUID-vkCmdExecuteCommands-commandBuffer-00103 If  commandBuffer has a $ query  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-activeactive, then each element of pCommandBuffers must# have been recorded with :: queryFlags4 having all bits set that are set for the query-VUID-vkCmdExecuteCommands-commandBuffer-00104 If  commandBuffer has a $ query  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-activeactive, then each element of pCommandBuffers must# have been recorded with ::pipelineStatistics3 having all bits set that are set in the } the query uses/VUID-vkCmdExecuteCommands-pCommandBuffers-00105 Each element of pCommandBuffers must) not begin any query types that are  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-activeactive in  commandBuffer-VUID-vkCmdExecuteCommands-commandBuffer-01820 If  commandBuffer? is a protected command buffer, then each element of pCommandBuffers must be a protected command buffer-VUID-vkCmdExecuteCommands-commandBuffer-01821 If  commandBuffer is an unprotected command buffer, then each element of pCommandBuffers must! be an unprotected command buffer$VUID-vkCmdExecuteCommands-None-02286 This command must7 not be recorded when transform feedback is activeValid Usage (Implicit)1VUID-vkCmdExecuteCommands-commandBuffer-parameter  commandBuffer must be a valid  handle3VUID-vkCmdExecuteCommands-pCommandBuffers-parameter pCommandBuffers must( be a valid pointer to an array of commandBufferCount valid  handles1VUID-vkCmdExecuteCommands-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state/VUID-vkCmdExecuteCommands-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must7 support transfer, graphics, or compute operations%VUID-vkCmdExecuteCommands-bufferlevel  commandBuffer must be a primary 8VUID-vkCmdExecuteCommands-commandBufferCount-arraylength commandBufferCount must be greater than 0&VUID-vkCmdExecuteCommands-commonparent Both of  commandBuffer, and the elements of pCommandBuffers must? have been created, allocated, or retrieved from the same 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types Primary Both Transfer Graphics ComputeSee Also-ivulkan commandBuffer; is the command buffer that the pipeline will be bound to.vulkanpipelineBindPoint is a X value specifying to which bind point the pipeline is bound. Binding one does not disturb the others.vulkanpipeline is the pipeline to be bound.ivulkan commandBuffer is the command buffer into which the command will be recorded.vulkan firstViewport is the index of the first viewport whose parameters are updated by the command.vulkan pViewports is a pointer to an array of , structures specifying viewport parameters.ivulkan commandBuffer is the command buffer into which the command will be recorded.vulkan firstScissor is the index of the first scissor whose state is updated by the command.vulkan pScissors is a pointer to an array of r) structures defining scissor rectangles.ivulkan commandBuffer is the command buffer into which the command will be recorded.vulkan lineWidth* is the width of rasterized line segments.ivulkan commandBuffer is the command buffer into which the command will be recorded.vulkandepthBiasConstantFactor is a scalar factor controlling the constant depth value added to each fragment.vulkandepthBiasClamp6 is the maximum (or minimum) depth bias of a fragment.vulkandepthBiasSlopeFactor is a scalar factor applied to a fragment@s slope in depth bias calculations.ivulkan commandBuffer is the command buffer into which the command will be recorded.vulkanblendConstants is a pointer to an array of four values specifying the R, G, B, and A components of the blend constant color used in blending, depending on the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blendfactors blend factor.ivulkan commandBuffer is the command buffer into which the command will be recorded.vulkanminDepthBounds is the minimum depth bound.vulkanmaxDepthBounds is the maximum depth bound.ivulkan commandBuffer is the command buffer into which the command will be recorded.vulkanfaceMask is a bitmask of f specifying the set of stencil state for which to update the compare mask.vulkan compareMask5 is the new value to use as the stencil compare mask.ivulkan commandBuffer is the command buffer into which the command will be recorded.vulkanfaceMask is a bitmask of f specifying the set of stencil state for which to update the write mask, as described above for i.vulkan writeMask3 is the new value to use as the stencil write mask.ivulkan commandBuffer is the command buffer into which the command will be recorded.vulkanfaceMask is a bitmask of f specifying the set of stencil state for which to update the reference value, as described above for i.vulkan reference8 is the new value to use as the stencil reference value.ivulkan commandBuffer is the command buffer that the descriptor sets will be bound to.vulkanpipelineBindPoint is a X indicating the type of the pipeline that will use the descriptors. There is a separate set of bind points for each pipeline type, so binding one does not disturb the others.vulkanlayout is a ~& object used to program the bindings.vulkanfirstSet; is the set number of the first descriptor set to be bound.vulkanpDescriptorSets) is a pointer to an array of handles to 4 objects describing the descriptor sets to bind to.vulkanpDynamicOffsets is a pointer to an array of uint32_t$ values specifying dynamic offsets.ivulkan commandBuffer; is the command buffer into which the command is recorded.vulkanbuffer is the buffer being bound.vulkanoffset( is the starting offset in bytes within buffer, used in index buffer address calculations.vulkan indexType is a T value specifying whether indices are treated as 16 bits or 32 bits.ivulkan commandBuffer; is the command buffer into which the command is recorded.vulkan firstBinding is the index of the first vertex input binding whose state is updated by the command.vulkanpBuffers, is a pointer to an array of buffer handles.vulkanpOffsets, is a pointer to an array of buffer offsets.ivulkan commandBuffer; is the command buffer into which the command is recorded.vulkan vertexCount# is the number of vertices to draw.vulkan instanceCount$ is the number of instances to draw.vulkan firstVertex* is the index of the first vertex to draw.vulkan firstInstance2 is the instance ID of the first instance to draw.ivulkan commandBuffer; is the command buffer into which the command is recorded.vulkan indexCount# is the number of vertices to draw.vulkan instanceCount$ is the number of instances to draw.vulkan firstIndex+ is the base index within the index buffer.vulkan vertexOffset is the value added to the vertex index before indexing into the vertex buffer.vulkan firstInstance2 is the instance ID of the first instance to draw.ivulkan commandBuffer; is the command buffer into which the command is recorded.vulkanbuffer* is the buffer containing draw parameters.vulkanoffset is the byte offset into buffer where parameters begin.vulkan drawCount( is the number of draws to execute, and can be zero.vulkanstride? is the byte stride between successive sets of draw parameters.ivulkan commandBuffer; is the command buffer into which the command is recorded.vulkanbuffer* is the buffer containing draw parameters.vulkanoffset is the byte offset into buffer where parameters begin.vulkan drawCount( is the number of draws to execute, and can be zero.vulkanstride? is the byte stride between successive sets of draw parameters.ivulkan commandBuffer is the command buffer into which the command will be recorded.vulkan groupCountX is the number of local workgroups to dispatch in the X dimension.vulkan groupCountY is the number of local workgroups to dispatch in the Y dimension.vulkan groupCountZ is the number of local workgroups to dispatch in the Z dimension.ivulkan commandBuffer is the command buffer into which the command will be recorded.vulkanbuffer. is the buffer containing dispatch parameters.vulkanoffset is the byte offset into buffer where parameters begin.ivulkan commandBuffer is the command buffer into which the command will be recorded.vulkan srcBuffer is the source buffer.vulkan dstBuffer is the destination buffer.vulkanpRegions is a pointer to an array of ', structures specifying the regions to copy.ivulkan commandBuffer is the command buffer into which the command will be recorded.vulkansrcImage is the source image.vulkansrcImageLayout7 is the current layout of the source image subresource.vulkandstImage is the destination image.vulkandstImageLayout= is the current layout of the destination image subresource.vulkanpRegions is a pointer to an array of !, structures specifying the regions to copy.ivulkan commandBuffer is the command buffer into which the command will be recorded.vulkansrcImage is the source image.vulkansrcImageLayout> is the layout of the source image subresources for the blit.vulkandstImage is the destination image.vulkandstImageLayout is the layout of the destination image subresources for the blit.vulkanpRegions is a pointer to an array of ", structures specifying the regions to blit.vulkanfilter is a J> specifying the filter to apply if the blits require scaling.ivulkan commandBuffer is the command buffer into which the command will be recorded.vulkan srcBuffer is the source buffer.vulkandstImage is the destination image.vulkandstImageLayout is the layout of the destination image subresources for the copy.vulkanpRegions is a pointer to an array of &, structures specifying the regions to copy.ivulkan commandBuffer is the command buffer into which the command will be recorded.vulkansrcImage is the source image.vulkansrcImageLayout> is the layout of the source image subresources for the copy.vulkan dstBuffer is the destination buffer.vulkanpRegions is a pointer to an array of &, structures specifying the regions to copy.ivulkan commandBuffer is the command buffer into which the command will be recorded.vulkan dstBuffer) is a handle to the buffer to be updated.vulkan dstOffset< is the byte offset into the buffer to start updating, and must be a multiple of 4.vulkandataSize' is the number of bytes to update, and must be a multiple of 4.vulkanpData= is a pointer to the source data for the buffer update, and must be at least dataSize bytes in size.ivulkan commandBuffer is the command buffer into which the command will be recorded.vulkan dstBuffer is the buffer to be filled.vulkan dstOffset is the byte offset into the buffer at which to start filling, and must be a multiple of 4.vulkansize% is the number of bytes to fill, and must be either a multiple of 4, or   to fill the range from offset to the end of the buffer. If   is used and the remaining size of the buffer is not a multiple of 4, then the nearest smaller multiple is used.vulkandata> is the 4-byte word written repeatedly to the buffer to fill size bytes of data. The data word is written to memory according to the host endianness.jvulkan commandBuffer is the command buffer into which the command will be recorded.vulkanimage is the image to be cleared.vulkan imageLayout specifies the current layout of the image subresource ranges to be cleared, and must be ", " or ".vulkanpColor is a pointer to a  structure containing the values that the image subresource ranges will be cleared to (see  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears-values below).vulkanpRanges is a pointer to an array of  structures describing a range of mipmap levels, array layers, and aspects to be cleared, as described in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views Image Views.jvulkan commandBuffer is the command buffer into which the command will be recorded.vulkanimage is the image to be cleared.vulkan imageLayout specifies the current layout of the image subresource ranges to be cleared, and must be " or ".vulkan pDepthStencil is a pointer to a $ structure containing the values that the depth and stencil image subresource ranges will be cleared to (see  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears-values below).vulkanpRanges is a pointer to an array of  structures describing a range of mipmap levels, array layers, and aspects to be cleared, as described in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views Image Views.jvulkan commandBuffer is the command buffer into which the command will be recorded.vulkan pAttachments is a pointer to an array of % structures defining the attachments to clear and the clear values to use. If any attachment index to be cleared is not backed by an image view, then the clear has no effect.vulkanpRects is a pointer to an array of # structures defining regions within each selected attachment to clear.jvulkan commandBuffer is the command buffer into which the command will be recorded.vulkansrcImage is the source image.vulkansrcImageLayout is the layout of the source image subresources for the resolve.vulkandstImage is the destination image.vulkandstImageLayout is the layout of the destination image subresources for the resolve.vulkanpRegions is a pointer to an array of  / structures specifying the regions to resolve.jvulkan commandBuffer; is the command buffer into which the command is recorded.vulkanevent$ is the event that will be signaled.vulkan stageMask specifies the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stagessource stage mask used to determine the first  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope.jvulkan commandBuffer; is the command buffer into which the command is recorded.vulkanevent& is the event that will be unsignaled.vulkan stageMask is a bitmask of Y specifying the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stagessource stage mask used to determine when the event is unsignaled.jvulkan commandBuffer; is the command buffer into which the command is recorded.vulkanpEvents= is a pointer to an array of event object handles to wait on.vulkan srcStageMask is a bitmask of Y specifying the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stagessource stage mask.vulkan dstStageMask is a bitmask of Y specifying the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stagesdestination stage mask.vulkanpMemoryBarriers is a pointer to an array of  structures.vulkanpBufferMemoryBarriers is a pointer to an array of  structures.vulkanpImageMemoryBarriers is a pointer to an array of  structures.jvulkan commandBuffer; is the command buffer into which the command is recorded.vulkanpEvents= is a pointer to an array of event object handles to wait on.vulkan srcStageMask is a bitmask of Y specifying the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stagessource stage mask.vulkan dstStageMask is a bitmask of Y specifying the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stagesdestination stage mask.vulkanpMemoryBarriers is a pointer to an array of  structures.vulkanpBufferMemoryBarriers is a pointer to an array of  structures.vulkanpImageMemoryBarriers is a pointer to an array of  structures.jvulkan commandBuffer; is the command buffer into which the command is recorded.vulkan srcStageMask is a bitmask of Y specifying the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stages.vulkan dstStageMask is a bitmask of Y specifying the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masksdestination stages.vulkandependencyFlags is a bitmask of G> specifying how execution and memory dependencies are formed.vulkanpMemoryBarriers is a pointer to an array of  structures.vulkanpBufferMemoryBarriers is a pointer to an array of  structures.vulkanpImageMemoryBarriers is a pointer to an array of  structures.jvulkan commandBuffer is the command buffer into which this command will be recorded.vulkan queryPool= is the query pool that will manage the results of the query.vulkanquery is the query index within the query pool that will contain the results.vulkanflags is a bitmask of \6 specifying constraints on the types of queries that can be performed.jvulkan commandBuffer is the command buffer into which this command will be recorded.vulkan queryPool= is the query pool that is managing the results of the query.vulkanquery is the query index within the query pool where the result is stored.jvulkan commandBuffer is the command buffer into which this command will be recorded.vulkan queryPool is the handle of the query pool managing the queries being reset.vulkan firstQuery% is the initial query index to reset.vulkan queryCount# is the number of queries to reset.jvulkan commandBuffer is the command buffer into which the command will be recorded.vulkan pipelineStage is a Y, value, specifying a stage of the pipeline.vulkan queryPool2 is the query pool that will manage the timestamp.vulkanquery is the query within the query pool that will contain the timestamp.jvulkan commandBuffer is the command buffer into which this command will be recorded.vulkan queryPool is the query pool managing the queries containing the desired results.vulkan firstQuery is the initial query index.vulkan queryCount is the number of queries.  firstQuery and  queryCount% together define a range of queries.vulkan dstBuffer is a ; object that will receive the results of the copy command.vulkan dstOffset is an offset into  dstBuffer.vulkanstride is the stride in bytes between results for individual queries within  dstBuffer/. The required size of the backing memory for  dstBuffer' is determined as described above for ;.vulkanflags is a bitmask of ^/ specifying how and when results are returned.jvulkan commandBuffer is the command buffer in which the push constant update will be recorded.vulkanlayout is the pipeline layout used to program the push constant updates.vulkan stageFlags is a bitmask of d specifying the shader stages that will use the push constants in the updated range.vulkanoffset is the start offset of the push constant range to update, in units of bytes.vulkansize is the size of the push constant range to update, in units of bytes.vulkanpValues is a pointer to an array of size0 bytes containing the new push constant values.jvulkan commandBuffer6 is the command buffer in which to record the command.vulkanpRenderPassBegin is a pointer to a  structure specifying the render pass to begin an instance of, and the framebuffer the instance uses.vulkancontents is a i value specifying how the commands in the first subpass will be provided.jvulkan commandBuffer6 is the command buffer in which to record the command.vulkancontents specifies how the commands in the next subpass will be provided, in the same fashion as the corresponding parameter of j.jvulkan commandBuffer is the command buffer in which to end the current render pass instance.jvulkan commandBuffer is a handle to a primary command buffer that the secondary command buffers are executed in.vulkanpCommandBuffers is a pointer to an array of commandBufferCount secondary command buffer handles, which are recorded to execute in the primary command buffer in the order they are listed in the array.iiiiiiiiiiiiii iiiiii!iiiiii"iiiii#iiii$iii%iiii&iiiiiii'iiiiT!!!!!fgiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjj#iiiiiiiii'iiii!iiiiii"iiiii&iiiiiii iiiiiiiiiiii$iii%iiiiiiiiiiT!!!!!!!!!ifgNone( #$&'(./0289:<>?;s&vulkanVkResolveImageInfo2KHR - Structure specifying parameters of resolve image command Valid Usage*VUID-VkResolveImageInfo2KHR-pRegions-00255 The union of all source regions, and the union of all destination regions, specified by the elements of pRegions, must not overlap in memory*VUID-VkResolveImageInfo2KHR-srcImage-00256 If srcImage is non-sparse then it must7 be bound completely and contiguously to a single 0  object*VUID-VkResolveImageInfo2KHR-srcImage-00257 srcImage must have a sample count equal to any valid sample count value other than &*VUID-VkResolveImageInfo2KHR-dstImage-00258 If dstImage is non-sparse then it must7 be bound completely and contiguously to a single 0  object*VUID-VkResolveImageInfo2KHR-dstImage-00259 dstImage must( have a sample count equal to &0VUID-VkResolveImageInfo2KHR-srcImageLayout-00260 srcImageLayout must1 specify the layout of the image subresources of srcImage specified in pRegions0 at the time this command is executed on a 00VUID-VkResolveImageInfo2KHR-srcImageLayout-01400 srcImageLayout must be ,  or 0VUID-VkResolveImageInfo2KHR-dstImageLayout-00262 dstImageLayout must1 specify the layout of the image subresources of dstImage specified in pRegions0 at the time this command is executed on a 00VUID-VkResolveImageInfo2KHR-dstImageLayout-01401 dstImageLayout must be ,  or *VUID-VkResolveImageInfo2KHR-dstImage-02003 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of dstImage must contain *VUID-VkResolveImageInfo2KHR-srcImage-01386 srcImage and dstImage must- have been created with the same image format0VUID-VkResolveImageInfo2KHR-srcSubresource-01709 The srcSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in 1 when srcImage was created0VUID-VkResolveImageInfo2KHR-dstSubresource-01710 The dstSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in 1 when dstImage was created0VUID-VkResolveImageInfo2KHR-srcSubresource-01711 The srcSubresource.baseArrayLayer + srcSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in 1 when srcImage was created0VUID-VkResolveImageInfo2KHR-dstSubresource-01712 The dstSubresource.baseArrayLayer + dstSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in 1 when dstImage was created*VUID-VkResolveImageInfo2KHR-dstImage-02546 dstImage and srcImage must not have been created with flags containing  *VUID-VkResolveImageInfo2KHR-srcImage-04446 If either srcImage or dstImage are of type  , then for each element of pRegions, srcSubresource.baseArrayLayer must be 0 and srcSubresource.layerCount must be 1*VUID-VkResolveImageInfo2KHR-srcImage-04447 If either srcImage or dstImage are of type  , then for each element of pRegions, dstSubresource.baseArrayLayer must be 0 and dstSubresource.layerCount must be 1+VUID-VkResolveImageInfo2KHR-srcOffset-00269 For each element of pRegions,  srcOffset.x and ( extent.width +  srcOffset.x) must" both be greater than or equal to 0; and less than or equal to the width of the specified srcSubresource of srcImage+VUID-VkResolveImageInfo2KHR-srcOffset-00270 For each element of pRegions,  srcOffset.y and ( extent.height +  srcOffset.y) must" both be greater than or equal to 0< and less than or equal to the height of the specified srcSubresource of srcImage*VUID-VkResolveImageInfo2KHR-srcImage-00271 If srcImage is of type  , then for each element of pRegions,  srcOffset.y must be 0 and  extent.height must be 1+VUID-VkResolveImageInfo2KHR-srcOffset-00272 For each element of pRegions,  srcOffset.z and ( extent.depth +  srcOffset.z) must" both be greater than or equal to 0; and less than or equal to the depth of the specified srcSubresource of srcImage*VUID-VkResolveImageInfo2KHR-srcImage-00273 If srcImage is of type  or  , then for each element of pRegions,  srcOffset.z must be 0 and  extent.depth must be 1+VUID-VkResolveImageInfo2KHR-dstOffset-00274 For each element of pRegions,  dstOffset.x and ( extent.width +  dstOffset.x) must" both be greater than or equal to 0; and less than or equal to the width of the specified dstSubresource of dstImage+VUID-VkResolveImageInfo2KHR-dstOffset-00275 For each element of pRegions,  dstOffset.y and ( extent.height +  dstOffset.y) must" both be greater than or equal to 0< and less than or equal to the height of the specified dstSubresource of dstImage*VUID-VkResolveImageInfo2KHR-dstImage-00276 If dstImage is of type  , then for each element of pRegions,  dstOffset.y must be 0 and  extent.height must be 1+VUID-VkResolveImageInfo2KHR-dstOffset-00277 For each element of pRegions,  dstOffset.z and ( extent.depth +  dstOffset.z) must" both be greater than or equal to 0; and less than or equal to the depth of the specified dstSubresource of dstImage*VUID-VkResolveImageInfo2KHR-dstImage-00278 If dstImage is of type  or  , then for each element of pRegions,  dstOffset.z must be 0 and  extent.depth must be 1Valid Usage (Implicit)'VUID-VkResolveImageInfo2KHR-sType-sType sType must be  'VUID-VkResolveImageInfo2KHR-pNext-pNext pNext must be NULL.VUID-VkResolveImageInfo2KHR-srcImage-parameter srcImage must be a valid  handle4VUID-VkResolveImageInfo2KHR-srcImageLayout-parameter srcImageLayout must be a valid O value.VUID-VkResolveImageInfo2KHR-dstImage-parameter dstImage must be a valid  handle4VUID-VkResolveImageInfo2KHR-dstImageLayout-parameter dstImageLayout must be a valid O value.VUID-VkResolveImageInfo2KHR-pRegions-parameter pRegions must( be a valid pointer to an array of  regionCount valid  structures3VUID-VkResolveImageInfo2KHR-regionCount-arraylength  regionCount must be greater than 0(VUID-VkResolveImageInfo2KHR-commonparent Both of dstImage , and srcImage must? have been created, allocated, or retrieved from the same 0See Also, O, , , kvulkanVkImageResolve2KHR - Structure specifying an image resolve operation Valid Usage(VUID-VkImageResolve2KHR-aspectMask-00266 The  aspectMask member of srcSubresource and dstSubresource must only contain (VUID-VkImageResolve2KHR-layerCount-00267 The  layerCount member of srcSubresource and dstSubresource must matchValid Usage (Implicit)#VUID-VkImageResolve2KHR-sType-sType sType must be  #VUID-VkImageResolve2KHR-pNext-pNext pNext must be NULL0VUID-VkImageResolve2KHR-srcSubresource-parameter srcSubresource must be a valid  structure0VUID-VkImageResolve2KHR-dstSubresource-parameter dstSubresource must be a valid  structureSee Alsou, , s, , vulkan>VkImageCopy2KHR - Structure specifying an image copy operation Valid Usage!VUID-VkImageCopy2KHR-extent-00140" The number of slices of the extent (for 3D) or layers of the srcSubresource (for non-3D) must# match the number of slices of the extent (for 3D) or layers of the dstSubresource (for non-3D)Valid Usage (Implicit) VUID-VkImageCopy2KHR-sType-sType sType must be   VUID-VkImageCopy2KHR-pNext-pNext pNext must be NULL-VUID-VkImageCopy2KHR-srcSubresource-parameter srcSubresource must be a valid  structure-VUID-VkImageCopy2KHR-dstSubresource-parameter dstSubresource must be a valid  structureSee Also, u, , s, vulkan>VkImageBlit2KHR - Structure specifying an image blit operation DescriptionFor each element of the pRegions array, a blit operation is performed for the specified source and destination regions. Valid Usage%VUID-VkImageBlit2KHR-aspectMask-00238 The  aspectMask member of srcSubresource and dstSubresource must match%VUID-VkImageBlit2KHR-layerCount-00239 The  layerCount member of srcSubresource and dstSubresource must matchValid Usage (Implicit) VUID-VkImageBlit2KHR-sType-sType sType must be   VUID-VkImageBlit2KHR-pNext-pNext pNext must be NULL/ or a pointer to a valid instance of !VUID-VkImageBlit2KHR-sType-unique The sType" value of each struct in the pNext chain must be unique-VUID-VkImageBlit2KHR-srcSubresource-parameter srcSubresource must be a valid  structure-VUID-VkImageBlit2KHR-dstSubresource-parameter dstSubresource must be a valid  structureSee Also, , s, vulkanVkCopyImageToBufferInfo2KHR - Structure specifying parameters of an image to buffer copy command Valid Usage/VUID-VkCopyImageToBufferInfo2KHR-pRegions-045667 If the image region specified by each element of pRegions does not contain  in its pNext chain, it must( be contained within the specified imageSubresource of srcImage'/VUID-VkCopyImageToBufferInfo2KHR-pRegions-045577 If the image region specified by each element of pRegions contains  in its pNext7 chain, the rotated source region as described in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-buffers-images-rotation-addressing must be contained within srcImage/VUID-VkCopyImageToBufferInfo2KHR-pRegions-04558 If any element of pRegions contains  in its pNext chain, then srcImage must not be a https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image/VUID-VkCopyImageToBufferInfo2KHR-pRegions-06205 If any element of pRegions contains  in its pNext chain, then srcImage must be of type /VUID-VkCopyImageToBufferInfo2KHR-pRegions-06206 If any element of pRegions contains  in its pNext chain, then srcImage must not have a https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format/VUID-VkCopyImageToBufferInfo2KHR-pRegions-00183  dstBuffer must be large enough to contain all buffer locations that are accessed according to  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-buffers-images-addressingBuffer and Image Addressing, for each element of pRegions/VUID-VkCopyImageToBufferInfo2KHR-pRegions-00184 The union of all source regions, and the union of all destination regions, specified by the elements of pRegions, must not overlap in memory/VUID-VkCopyImageToBufferInfo2KHR-srcImage-00186 srcImage must" have been created with   usage flag/VUID-VkCopyImageToBufferInfo2KHR-srcImage-01998 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of srcImage must contain /VUID-VkCopyImageToBufferInfo2KHR-srcImage-00187 If srcImage is non-sparse then it must7 be bound completely and contiguously to a single 0  object0VUID-VkCopyImageToBufferInfo2KHR-dstBuffer-00191  dstBuffer must have been created with  usage flag0VUID-VkCopyImageToBufferInfo2KHR-dstBuffer-00192 If  dstBuffer is non-sparse then it must7 be bound completely and contiguously to a single 0  object/VUID-VkCopyImageToBufferInfo2KHR-srcImage-00188 srcImage must( have a sample count equal to &5VUID-VkCopyImageToBufferInfo2KHR-srcImageLayout-00189 srcImageLayout must6 specify the layout of the image subresources of srcImage specified in pRegions0 at the time this command is executed on a 05VUID-VkCopyImageToBufferInfo2KHR-srcImageLayout-01397 srcImageLayout must be ,  , or 7VUID-VkCopyImageToBufferInfo2KHR-imageSubresource-01703 The imageSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in 1 when srcImage was created7VUID-VkCopyImageToBufferInfo2KHR-imageSubresource-01704 The imageSubresource.baseArrayLayer + imageSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in 1 when srcImage was created2VUID-VkCopyImageToBufferInfo2KHR-imageOffset-01794 The  imageOffset and  imageExtent! members of each element of pRegions must= respect the image transfer granularity requirements of  commandBuffer:@s command pool@s queue family, as described in  /VUID-VkCopyImageToBufferInfo2KHR-srcImage-02544 srcImage must! not have been created with flags containing  2VUID-VkCopyImageToBufferInfo2KHR-imageOffset-00197 For each element of pRegions not containing  in its pNext chain,  imageOffset.x and (imageExtent.width +  imageOffset.x) must" both be greater than or equal to 0; and less than or equal to the width of the specified imageSubresource of srcImage2VUID-VkCopyImageToBufferInfo2KHR-imageOffset-00198 For each element of pRegions not containing  in its pNext chain,  imageOffset.y and (imageExtent.height +  imageOffset.y) must" both be greater than or equal to 0< and less than or equal to the height of the specified imageSubresource of srcImage3VUID-VkCopyImageToBufferInfo2KHR-bufferOffset-01558 If {imageparam} does not have either a depth/stencil or a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format , then for each element of pRegions,  bufferOffset must4 be a multiple of the format@s texel block size3VUID-VkCopyImageToBufferInfo2KHR-bufferOffset-01559! If {imageparam} has a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format , then for each element of pRegions,  bufferOffset must be a multiple of the element size of the compatible format for the format and the  aspectMask of the imageSubresource as defined in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes???/VUID-VkCopyImageToBufferInfo2KHR-srcImage-00199! If {imageparam} is of type  , then for each element of pRegions,  imageOffset.y must be 0 and imageExtent.height must be 12VUID-VkCopyImageToBufferInfo2KHR-imageOffset-00200 For each element of pRegions,  imageOffset.z and (imageExtent.depth +  imageOffset.z) must" both be greater than or equal to 0; and less than or equal to the depth of the specified imageSubresource of {imageparam}/VUID-VkCopyImageToBufferInfo2KHR-srcImage-00201! If {imageparam} is of type  or  , then for each element of pRegions,  imageOffset.z must be 0 and imageExtent.depth must be 16VUID-VkCopyImageToBufferInfo2KHR-bufferRowLength-00203 If {imageparam} is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, bufferRowLength must7 be a multiple of the compressed texel block width8VUID-VkCopyImageToBufferInfo2KHR-bufferImageHeight-00204 If {imageparam} is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, bufferImageHeight must8 be a multiple of the compressed texel block height2VUID-VkCopyImageToBufferInfo2KHR-imageOffset-00205 If {imageparam} is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, all members of  imageOffset must be a multiple of the corresponding dimensions of the compressed texel block3VUID-VkCopyImageToBufferInfo2KHR-bufferOffset-00206 If {imageparam} is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions,  bufferOffset must? be a multiple of the compressed texel block size in bytes2VUID-VkCopyImageToBufferInfo2KHR-imageExtent-00207 If {imageparam} is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, imageExtent.width must< be a multiple of the compressed texel block width or (imageExtent.width +  imageOffset.x) must' equal the width of the specified imageSubresource of {imageparam}2VUID-VkCopyImageToBufferInfo2KHR-imageExtent-00208 If {imageparam} is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, imageExtent.height must be a multiple of the compressed texel block height or (imageExtent.height +  imageOffset.y) must( equal the height of the specified imageSubresource of {imageparam}2VUID-VkCopyImageToBufferInfo2KHR-imageExtent-00209 If {imageparam} is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, imageExtent.depth must< be a multiple of the compressed texel block depth or (imageExtent.depth +  imageOffset.z) must' equal the depth of the specified imageSubresource of {imageparam}1VUID-VkCopyImageToBufferInfo2KHR-aspectMask-00211 For each element of pRegions, imageSubresource.aspectMask must- specify aspects present in {imageparam}1VUID-VkCopyImageToBufferInfo2KHR-aspectMask-01560! If {imageparam} has a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format , then for each element of pRegions, imageSubresource.aspectMask must be  ,  , or   (with  5 valid only for image formats with three planes)5VUID-VkCopyImageToBufferInfo2KHR-baseArrayLayer-00213& If {imageparam} is of type , for each element of pRegions, imageSubresource.baseArrayLayer must be 0 and imageSubresource.layerCount must be 1/VUID-VkCopyImageToBufferInfo2KHR-pRegions-04725$ If {imageparam} is not a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, bufferRowLength9 multiplied by the texel block size of {imageparam} must$ be less than or equal to 231-1/VUID-VkCopyImageToBufferInfo2KHR-pRegions-04726 If {imageparam} is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, bufferRowLength divided by the compressed texel block width and then multiplied by the texel block size of {imageparam} must be less than or equal to 231-14VUID-VkCopyImageToBufferInfo2KHR-commandBuffer-04052- If the queue family used to create the 0  which  commandBuffer* was allocated from does not support   or   , the  bufferOffset member of any element of pRegions must be a multiple of 4/VUID-VkCopyImageToBufferInfo2KHR-srcImage-040536 If {imageparam} has a depth/stencil format, the  bufferOffset member of any element of pRegions must be a multiple of 4Valid Usage (Implicit),VUID-VkCopyImageToBufferInfo2KHR-sType-sType sType must be  ,VUID-VkCopyImageToBufferInfo2KHR-pNext-pNext pNext must be NULL3VUID-VkCopyImageToBufferInfo2KHR-srcImage-parameter srcImage must be a valid  handle9VUID-VkCopyImageToBufferInfo2KHR-srcImageLayout-parameter srcImageLayout must be a valid O value4VUID-VkCopyImageToBufferInfo2KHR-dstBuffer-parameter  dstBuffer must be a valid  handle3VUID-VkCopyImageToBufferInfo2KHR-pRegions-parameter pRegions must# be a valid pointer to an array of  regionCount valid  structures8VUID-VkCopyImageToBufferInfo2KHR-regionCount-arraylength  regionCount must be greater than 0-VUID-VkCopyImageToBufferInfo2KHR-commonparent Both of  dstBuffer , and srcImage must? have been created, allocated, or retrieved from the same 0See Also, , , O, , kvulkanVkCopyImageInfo2KHR - Structure specifying parameters of an image copy command Valid Usage'VUID-VkCopyImageInfo2KHR-pRegions-00124 The union of all source regions, and the union of all destination regions, specified by the elements of pRegions, must not overlap in memory6'VUID-VkCopyImageInfo2KHR-srcImage-01995 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of srcImage must contain 'VUID-VkCopyImageInfo2KHR-srcImage-00126 srcImage must" have been created with   usage flag'VUID-VkCopyImageInfo2KHR-srcImage-01546 If srcImage& is non-sparse then the image or disjoint plane to be copied must< be bound completely and contiguously to a single 0  object-VUID-VkCopyImageInfo2KHR-srcImageLayout-00128 srcImageLayout must1 specify the layout of the image subresources of srcImage specified in pRegions0 at the time this command is executed on a 0-VUID-VkCopyImageInfo2KHR-srcImageLayout-01917 srcImageLayout must be ,  , or 'VUID-VkCopyImageInfo2KHR-dstImage-01996 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of dstImage must contain 'VUID-VkCopyImageInfo2KHR-dstImage-00131 dstImage must" have been created with   usage flag'VUID-VkCopyImageInfo2KHR-dstImage-01547 If dstImage& is non-sparse then the image or disjoint0 plane that is the destination of the copy must7 be bound completely and contiguously to a single 0  object-VUID-VkCopyImageInfo2KHR-dstImageLayout-00133 dstImageLayout must1 specify the layout of the image subresources of dstImage specified in pRegions0 at the time this command is executed on a 0-VUID-VkCopyImageInfo2KHR-dstImageLayout-01395 dstImageLayout must be ,  , or 'VUID-VkCopyImageInfo2KHR-srcImage-01548 If the  of each of srcImage and dstImage is not a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format , the  of each of srcImage and dstImage must be compatible, as defined https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-images-format-compatibilityabove#VUID-VkCopyImageInfo2KHR-None-01549- In a copy to or from a plane of a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar image , the  of the image and plane must! be compatible according to  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes$the description of compatible planes for the plane being copied'VUID-VkCopyImageInfo2KHR-srcImage-00136 The sample count of srcImage and dstImage must match-VUID-VkCopyImageInfo2KHR-srcSubresource-01696 The srcSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in 1 when srcImage was created-VUID-VkCopyImageInfo2KHR-dstSubresource-01697 The dstSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in 1 when dstImage was created-VUID-VkCopyImageInfo2KHR-srcSubresource-01698 The srcSubresource.baseArrayLayer + srcSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in 1 when srcImage was created-VUID-VkCopyImageInfo2KHR-dstSubresource-01699 The dstSubresource.baseArrayLayer + dstSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in 1 when dstImage was created(VUID-VkCopyImageInfo2KHR-srcOffset-01783 The  srcOffset and extent members of each element of pRegions must= respect the image transfer granularity requirements of  commandBuffer:@s command pool@s queue family, as described in  (VUID-VkCopyImageInfo2KHR-dstOffset-01784 The  dstOffset and extent members of each element of pRegions must= respect the image transfer granularity requirements of  commandBuffer:@s command pool@s queue family, as described in  'VUID-VkCopyImageInfo2KHR-dstImage-02542 dstImage and srcImage must not have been created with flags containing  'VUID-VkCopyImageInfo2KHR-srcImage-01551 If neither srcImage nor dstImage has a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar image format then for each element of pRegions, srcSubresource.aspectMask and dstSubresource.aspectMask must match'VUID-VkCopyImageInfo2KHR-srcImage-01552 If srcImage has a  with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion two planes then for each element of pRegions, srcSubresource.aspectMask must be   or  'VUID-VkCopyImageInfo2KHR-srcImage-01553 If srcImage has a  with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion three planes then for each element of pRegions, srcSubresource.aspectMask must be  ,  , or  'VUID-VkCopyImageInfo2KHR-dstImage-01554 If dstImage has a  with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion two planes then for each element of pRegions, dstSubresource.aspectMask must be   or  'VUID-VkCopyImageInfo2KHR-dstImage-01555 If dstImage has a  with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion three planes then for each element of pRegions, dstSubresource.aspectMask must be  ,  , or  'VUID-VkCopyImageInfo2KHR-srcImage-01556 If srcImage has a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar image format and the dstImage does not have a multi-planar image format, then for each element of pRegions, dstSubresource.aspectMask must be 'VUID-VkCopyImageInfo2KHR-dstImage-01557 If dstImage has a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar image format and the srcImage does not have a multi-planar image format, then for each element of pRegions, srcSubresource.aspectMask must be 'VUID-VkCopyImageInfo2KHR-srcImage-04443 If srcImage is of type  , then for each element of pRegions, srcSubresource.baseArrayLayer must be 0 and srcSubresource.layerCount must be 1'VUID-VkCopyImageInfo2KHR-dstImage-04444 If dstImage is of type  , then for each element of pRegions, dstSubresource.baseArrayLayer must be 0 and dstSubresource.layerCount must be 1)VUID-VkCopyImageInfo2KHR-aspectMask-00142 For each element of pRegions, srcSubresource.aspectMask must! specify aspects present in srcImage)VUID-VkCopyImageInfo2KHR-aspectMask-00143 For each element of pRegions, dstSubresource.aspectMask must! specify aspects present in dstImage(VUID-VkCopyImageInfo2KHR-srcOffset-00144 For each element of pRegions,  srcOffset.x and ( extent.width +  srcOffset.x) must" both be greater than or equal to 0; and less than or equal to the width of the specified srcSubresource of srcImage(VUID-VkCopyImageInfo2KHR-srcOffset-00145 For each element of pRegions,  srcOffset.y and ( extent.height +  srcOffset.y) must" both be greater than or equal to 0< and less than or equal to the height of the specified srcSubresource of srcImage'VUID-VkCopyImageInfo2KHR-srcImage-00146 If srcImage is of type  , then for each element of pRegions,  srcOffset.y must be 0 and  extent.height must be 1(VUID-VkCopyImageInfo2KHR-srcOffset-00147 For each element of pRegions,  srcOffset.z and ( extent.depth +  srcOffset.z) must" both be greater than or equal to 0; and less than or equal to the depth of the specified srcSubresource of srcImage'VUID-VkCopyImageInfo2KHR-srcImage-01785 If srcImage is of type  , then for each element of pRegions,  srcOffset.z must be 0 and  extent.depth must be 1'VUID-VkCopyImageInfo2KHR-dstImage-01786 If dstImage is of type  , then for each element of pRegions,  dstOffset.z must be 0 and  extent.depth must be 1'VUID-VkCopyImageInfo2KHR-srcImage-01787 If srcImage is of type  , then for each element of pRegions,  srcOffset.z must be 0'VUID-VkCopyImageInfo2KHR-dstImage-01788 If dstImage is of type  , then for each element of pRegions,  dstOffset.z must be 0'VUID-VkCopyImageInfo2KHR-srcImage-01790 If srcImage and dstImage are both of type  , then for each element of pRegions,  extent.depth must be 1'VUID-VkCopyImageInfo2KHR-srcImage-01791 If srcImage is of type , and dstImage is of type  , then for each element of pRegions,  extent.depth must equal srcSubresource.layerCount'VUID-VkCopyImageInfo2KHR-dstImage-01792 If dstImage is of type , and srcImage is of type  , then for each element of pRegions,  extent.depth must equal dstSubresource.layerCount(VUID-VkCopyImageInfo2KHR-dstOffset-00150 For each element of pRegions,  dstOffset.x and ( extent.width +  dstOffset.x) must" both be greater than or equal to 0; and less than or equal to the width of the specified dstSubresource of dstImage(VUID-VkCopyImageInfo2KHR-dstOffset-00151 For each element of pRegions,  dstOffset.y and ( extent.height +  dstOffset.y) must" both be greater than or equal to 0< and less than or equal to the height of the specified dstSubresource of dstImage'VUID-VkCopyImageInfo2KHR-dstImage-00152 If dstImage is of type  , then for each element of pRegions,  dstOffset.y must be 0 and  extent.height must be 1(VUID-VkCopyImageInfo2KHR-dstOffset-00153 For each element of pRegions,  dstOffset.z and ( extent.depth +  dstOffset.z) must" both be greater than or equal to 0; and less than or equal to the depth of the specified dstSubresource of dstImage'VUID-VkCopyImageInfo2KHR-srcImage-01727 If srcImage is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image , then for each element of pRegions, all members of  srcOffset must be a multiple of the corresponding dimensions of the compressed texel block'VUID-VkCopyImageInfo2KHR-srcImage-01728 If srcImage is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image , then for each element of pRegions,  extent.width must< be a multiple of the compressed texel block width or ( extent.width +  srcOffset.x) must' equal the width of the specified srcSubresource of srcImage'VUID-VkCopyImageInfo2KHR-srcImage-01729 If srcImage is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image , then for each element of pRegions,  extent.height must= be a multiple of the compressed texel block height or ( extent.height +  srcOffset.y) must( equal the height of the specified srcSubresource of srcImage'VUID-VkCopyImageInfo2KHR-srcImage-01730 If srcImage is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image , then for each element of pRegions,  extent.depth must< be a multiple of the compressed texel block depth or ( extent.depth +  srcOffset.z) must' equal the depth of the specified srcSubresource of srcImage'VUID-VkCopyImageInfo2KHR-dstImage-01731 If dstImage is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image , then for each element of pRegions, all members of  dstOffset must be a multiple of the corresponding dimensions of the compressed texel block'VUID-VkCopyImageInfo2KHR-dstImage-01732 If dstImage is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image , then for each element of pRegions,  extent.width must< be a multiple of the compressed texel block width or ( extent.width +  dstOffset.x) must' equal the width of the specified dstSubresource of dstImage'VUID-VkCopyImageInfo2KHR-dstImage-01733 If dstImage is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image , then for each element of pRegions,  extent.height must= be a multiple of the compressed texel block height or ( extent.height +  dstOffset.y) must( equal the height of the specified dstSubresource of dstImage'VUID-VkCopyImageInfo2KHR-dstImage-01734 If dstImage is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image , then for each element of pRegions,  extent.depth must< be a multiple of the compressed texel block depth or ( extent.depth +  dstOffset.z) must' equal the depth of the specified dstSubresource of dstImageValid Usage (Implicit)$VUID-VkCopyImageInfo2KHR-sType-sType sType must be  $VUID-VkCopyImageInfo2KHR-pNext-pNext pNext must be NULL+VUID-VkCopyImageInfo2KHR-srcImage-parameter srcImage must be a valid  handle1VUID-VkCopyImageInfo2KHR-srcImageLayout-parameter srcImageLayout must be a valid O value+VUID-VkCopyImageInfo2KHR-dstImage-parameter dstImage must be a valid  handle1VUID-VkCopyImageInfo2KHR-dstImageLayout-parameter dstImageLayout must be a valid O value+VUID-VkCopyImageInfo2KHR-pRegions-parameter pRegions must( be a valid pointer to an array of  regionCount valid  structures0VUID-VkCopyImageInfo2KHR-regionCount-arraylength  regionCount must be greater than 0%VUID-VkCopyImageInfo2KHR-commonparent Both of dstImage , and srcImage must? have been created, allocated, or retrieved from the same 0See Also, , O, , kvulkanVkCopyBufferToImageInfo2KHR - Structure specifying parameters of a buffer to image copy command Valid Usage/VUID-VkCopyBufferToImageInfo2KHR-pRegions-045657 If the image region specified by each element of pRegions does not contain  in its pNext chain, it must9 be a region that is contained within the specified imageSubresource of dstImage(/VUID-VkCopyBufferToImageInfo2KHR-pRegions-045547 If the image region specified by each element of pRegions contains  in its pNext< chain, the rotated destination region as described in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-buffers-images-rotation-addressing must be contained within dstImage/VUID-VkCopyBufferToImageInfo2KHR-pRegions-04555 If any element of pRegions contains  in its pNext chain, then dstImage must not be a https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image/VUID-VkCopyBufferToImageInfo2KHR-pRegions-06203 If any element of pRegions contains  in its pNext chain, then dstImage must be of type /VUID-VkCopyBufferToImageInfo2KHR-pRegions-06204 If any element of pRegions contains  in its pNext chain, then dstImage must not have a https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format/VUID-VkCopyBufferToImageInfo2KHR-pRegions-00171  srcBuffer must be large enough to contain all buffer locations that are accessed according to  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-buffers-images-addressingBuffer and Image Addressing, for each element of pRegions/VUID-VkCopyBufferToImageInfo2KHR-pRegions-00173 The union of all source regions, and the union of all destination regions, specified by the elements of pRegions, must not overlap in memory0VUID-VkCopyBufferToImageInfo2KHR-srcBuffer-00174  srcBuffer must have been created with  usage flag/VUID-VkCopyBufferToImageInfo2KHR-dstImage-01997 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of dstImage must contain 0VUID-VkCopyBufferToImageInfo2KHR-srcBuffer-00176 If  srcBuffer is non-sparse then it must7 be bound completely and contiguously to a single 0  object/VUID-VkCopyBufferToImageInfo2KHR-dstImage-00177 dstImage must" have been created with   usage flag/VUID-VkCopyBufferToImageInfo2KHR-dstImage-00178 If dstImage is non-sparse then it must7 be bound completely and contiguously to a single 0  object/VUID-VkCopyBufferToImageInfo2KHR-dstImage-00179 dstImage must( have a sample count equal to &5VUID-VkCopyBufferToImageInfo2KHR-dstImageLayout-00180 dstImageLayout must6 specify the layout of the image subresources of dstImage specified in pRegions0 at the time this command is executed on a 05VUID-VkCopyBufferToImageInfo2KHR-dstImageLayout-01396 dstImageLayout must be ,  , or 7VUID-VkCopyBufferToImageInfo2KHR-imageSubresource-01701 The imageSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in 1 when dstImage was created7VUID-VkCopyBufferToImageInfo2KHR-imageSubresource-01702 The imageSubresource.baseArrayLayer + imageSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in 1 when dstImage was created2VUID-VkCopyBufferToImageInfo2KHR-imageOffset-01793 The  imageOffset and  imageExtent! members of each element of pRegions must= respect the image transfer granularity requirements of  commandBuffer:@s command pool@s queue family, as described in  /VUID-VkCopyBufferToImageInfo2KHR-dstImage-02543 dstImage must! not have been created with flags containing  4VUID-VkCopyBufferToImageInfo2KHR-commandBuffer-04477- If the queue family used to create the 0  which  commandBuffer* was allocated from does not support  , for each element of pRegions, the  aspectMask member of imageSubresource must not be   or  /VUID-VkCopyBufferToImageInfo2KHR-pRegions-06223 For each element of pRegions not containing  in its pNext chain,  imageOffset.x and (imageExtent.width +  imageOffset.x) must" both be greater than or equal to 0; and less than or equal to the width of the specified imageSubresource of dstImage/VUID-VkCopyBufferToImageInfo2KHR-pRegions-06224 For each element of pRegions not containing  in its pNext chain,  imageOffset.y and (imageExtent.height +  imageOffset.y) must" both be greater than or equal to 0< and less than or equal to the height of the specified imageSubresource of dstImage3VUID-VkCopyBufferToImageInfo2KHR-bufferOffset-01558 If dstImage5 does not have either a depth/stencil or a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format , then for each element of pRegions,  bufferOffset must4 be a multiple of the format@s texel block size3VUID-VkCopyBufferToImageInfo2KHR-bufferOffset-01559 If dstImage has a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format , then for each element of pRegions,  bufferOffset must be a multiple of the element size of the compatible format for the format and the  aspectMask of the imageSubresource as defined in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes???/VUID-VkCopyBufferToImageInfo2KHR-srcImage-00199 If dstImage is of type  , then for each element of pRegions,  imageOffset.y must be 0 and imageExtent.height must be 12VUID-VkCopyBufferToImageInfo2KHR-imageOffset-00200 For each element of pRegions,  imageOffset.z and (imageExtent.depth +  imageOffset.z) must" both be greater than or equal to 0; and less than or equal to the depth of the specified imageSubresource of dstImage/VUID-VkCopyBufferToImageInfo2KHR-srcImage-00201 If dstImage is of type  or  , then for each element of pRegions,  imageOffset.z must be 0 and imageExtent.depth must be 16VUID-VkCopyBufferToImageInfo2KHR-bufferRowLength-00203 If dstImage is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, bufferRowLength must7 be a multiple of the compressed texel block width8VUID-VkCopyBufferToImageInfo2KHR-bufferImageHeight-00204 If dstImage is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, bufferImageHeight must8 be a multiple of the compressed texel block height2VUID-VkCopyBufferToImageInfo2KHR-imageOffset-00205 If dstImage is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, all members of  imageOffset must be a multiple of the corresponding dimensions of the compressed texel block3VUID-VkCopyBufferToImageInfo2KHR-bufferOffset-00206 If dstImage is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions,  bufferOffset must? be a multiple of the compressed texel block size in bytes2VUID-VkCopyBufferToImageInfo2KHR-imageExtent-00207 If dstImage is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, imageExtent.width must< be a multiple of the compressed texel block width or (imageExtent.width +  imageOffset.x) must' equal the width of the specified imageSubresource of dstImage2VUID-VkCopyBufferToImageInfo2KHR-imageExtent-00208 If dstImage is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, imageExtent.height must be a multiple of the compressed texel block height or (imageExtent.height +  imageOffset.y) must( equal the height of the specified imageSubresource of dstImage2VUID-VkCopyBufferToImageInfo2KHR-imageExtent-00209 If dstImage is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, imageExtent.depth must< be a multiple of the compressed texel block depth or (imageExtent.depth +  imageOffset.z) must' equal the depth of the specified imageSubresource of dstImage1VUID-VkCopyBufferToImageInfo2KHR-aspectMask-00211 For each element of pRegions, imageSubresource.aspectMask must! specify aspects present in dstImage1VUID-VkCopyBufferToImageInfo2KHR-aspectMask-01560 If dstImage has a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format , then for each element of pRegions, imageSubresource.aspectMask must be  ,  , or   (with  5 valid only for image formats with three planes)5VUID-VkCopyBufferToImageInfo2KHR-baseArrayLayer-00213 If dstImage is of type , for each element of pRegions, imageSubresource.baseArrayLayer must be 0 and imageSubresource.layerCount must be 1/VUID-VkCopyBufferToImageInfo2KHR-pRegions-04725 If dstImage is not a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, bufferRowLength, multiplied by the texel block size of dstImage must be less than or equal to 231-1/VUID-VkCopyBufferToImageInfo2KHR-pRegions-04726 If dstImage is a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, bufferRowLength divided by the compressed texel block width and then multiplied by the texel block size of dstImage must be less than or equal to 231-14VUID-VkCopyBufferToImageInfo2KHR-commandBuffer-04052- If the queue family used to create the 0  which  commandBuffer* was allocated from does not support   or   , the  bufferOffset member of any element of pRegions must be a multiple of 4/VUID-VkCopyBufferToImageInfo2KHR-srcImage-04053 If dstImage& has a depth/stencil format, the  bufferOffset member of any element of pRegions must be a multiple of 4Valid Usage (Implicit),VUID-VkCopyBufferToImageInfo2KHR-sType-sType sType must be  ,VUID-VkCopyBufferToImageInfo2KHR-pNext-pNext pNext must be NULL4VUID-VkCopyBufferToImageInfo2KHR-srcBuffer-parameter  srcBuffer must be a valid  handle3VUID-VkCopyBufferToImageInfo2KHR-dstImage-parameter dstImage must be a valid  handle9VUID-VkCopyBufferToImageInfo2KHR-dstImageLayout-parameter dstImageLayout must be a valid O value3VUID-VkCopyBufferToImageInfo2KHR-pRegions-parameter pRegions must# be a valid pointer to an array of  regionCount valid  structures8VUID-VkCopyBufferToImageInfo2KHR-regionCount-arraylength  regionCount must be greater than 0-VUID-VkCopyBufferToImageInfo2KHR-commonparent Both of dstImage , and  srcBuffer must? have been created, allocated, or retrieved from the same 0See Also, , , O, , kvulkanVkCopyBufferInfo2KHR - Structure specifying parameters of a buffer copy command DescriptionMembers defined by this structure with the same name as parameters in   have the identical effect to those parameters; the child structure  is a variant of  which includes sType and pNext( parameters, allowing it to be extended. Valid Usage)VUID-VkCopyBufferInfo2KHR-srcOffset-00113 The  srcOffset member of each element of pRegions must be less than the size of  srcBuffer)VUID-VkCopyBufferInfo2KHR-dstOffset-00114 The  dstOffset member of each element of pRegions must be less than the size of  dstBuffer$VUID-VkCopyBufferInfo2KHR-size-00115 The size member of each element of pRegions must+ be less than or equal to the size of  srcBuffer minus  srcOffset$VUID-VkCopyBufferInfo2KHR-size-00116 The size member of each element of pRegions must+ be less than or equal to the size of  dstBuffer minus  dstOffset(VUID-VkCopyBufferInfo2KHR-pRegions-00117 The union of the source regions, and the union of the destination regions, specified by the elements of pRegions, must not overlap in memory)VUID-VkCopyBufferInfo2KHR-srcBuffer-00118  srcBuffer must" have been created with  usage flag)VUID-VkCopyBufferInfo2KHR-srcBuffer-00119 If  srcBuffer is non-sparse then it must7 be bound completely and contiguously to a single 0  object)VUID-VkCopyBufferInfo2KHR-dstBuffer-00120  dstBuffer must" have been created with  usage flag)VUID-VkCopyBufferInfo2KHR-dstBuffer-00121 If  dstBuffer is non-sparse then it must7 be bound completely and contiguously to a single 0  objectValid Usage (Implicit)%VUID-VkCopyBufferInfo2KHR-sType-sType sType must be  %VUID-VkCopyBufferInfo2KHR-pNext-pNext pNext must be NULL-VUID-VkCopyBufferInfo2KHR-srcBuffer-parameter  srcBuffer must be a valid  handle-VUID-VkCopyBufferInfo2KHR-dstBuffer-parameter  dstBuffer must be a valid  handle,VUID-VkCopyBufferInfo2KHR-pRegions-parameter pRegions must( be a valid pointer to an array of  regionCount valid  structures1VUID-VkCopyBufferInfo2KHR-regionCount-arraylength  regionCount must be greater than 0&VUID-VkCopyBufferInfo2KHR-commonparent Both of  dstBuffer , and  srcBuffer must? have been created, allocated, or retrieved from the same 0See Also, , , kvulkanVkBufferImageCopy2KHR - Structure specifying a buffer image copy operation Description-This structure is functionally identical to  , but adds sType and pNext4 parameters, allowing it to be more easily extended. Valid Usage0VUID-VkBufferImageCopy2KHR-bufferRowLength-00195 bufferRowLength must be 0", or greater than or equal to the width member of  imageExtent2VUID-VkBufferImageCopy2KHR-bufferImageHeight-00196 bufferImageHeight must be 0', or greater than or equal to the height member of  imageExtent+VUID-VkBufferImageCopy2KHR-aspectMask-00212 The  aspectMask member of imageSubresource must only have a single bit setValid Usage (Implicit)&VUID-VkBufferImageCopy2KHR-sType-sType sType must be  &VUID-VkBufferImageCopy2KHR-pNext-pNext pNext must be NULL/ or a pointer to a valid instance of 'VUID-VkBufferImageCopy2KHR-sType-unique The sType" value of each struct in the pNext chain must be unique5VUID-VkBufferImageCopy2KHR-imageSubresource-parameter imageSubresource must be a valid  structureSee Also, , o, u, , s, vulkan?VkBufferCopy2KHR - Structure specifying a buffer copy operation Valid Usage VUID-VkBufferCopy2KHR-size-01988 The size must be greater than 0Valid Usage (Implicit)!VUID-VkBufferCopy2KHR-sType-sType sType must be  !VUID-VkBufferCopy2KHR-pNext-pNext pNext must be NULLSee Also, o, vulkanVkBlitImageInfo2KHR - Structure specifying parameters of blit image command Valid Usage'VUID-VkBlitImageInfo2KHR-pRegions-002155 The source region specified by each element of pRegions must+ be a region that is contained within srcImage,'VUID-VkBlitImageInfo2KHR-pRegions-00216: The destination region specified by each element of pRegions must+ be a region that is contained within dstImage'VUID-VkBlitImageInfo2KHR-pRegions-00217 The union of all destination regions, specified by the elements of pRegions, must0 not overlap in memory with any texel that may* be sampled during the blit operation'VUID-VkBlitImageInfo2KHR-srcImage-01999 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of srcImage must contain 'VUID-VkBlitImageInfo2KHR-srcImage-01561 srcImage must& not use a format listed in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion???'VUID-VkBlitImageInfo2KHR-srcImage-00219 srcImage must" have been created with   usage flag'VUID-VkBlitImageInfo2KHR-srcImage-00220 If srcImage is non-sparse then it must7 be bound completely and contiguously to a single 0  object-VUID-VkBlitImageInfo2KHR-srcImageLayout-00221 srcImageLayout must1 specify the layout of the image subresources of srcImage specified in pRegions0 at the time this command is executed on a 0-VUID-VkBlitImageInfo2KHR-srcImageLayout-01398 srcImageLayout must be ,  or 'VUID-VkBlitImageInfo2KHR-dstImage-02000 The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of dstImage must contain 'VUID-VkBlitImageInfo2KHR-dstImage-01562 dstImage must& not use a format listed in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion???'VUID-VkBlitImageInfo2KHR-dstImage-00224 dstImage must" have been created with   usage flag'VUID-VkBlitImageInfo2KHR-dstImage-00225 If dstImage is non-sparse then it must7 be bound completely and contiguously to a single 0  object-VUID-VkBlitImageInfo2KHR-dstImageLayout-00226 dstImageLayout must1 specify the layout of the image subresources of dstImage specified in pRegions0 at the time this command is executed on a 0-VUID-VkBlitImageInfo2KHR-dstImageLayout-01399 dstImageLayout must be ,  or 'VUID-VkBlitImageInfo2KHR-srcImage-00229 If either of srcImage or dstImage( was created with a signed integer  , the other must3 also have been created with a signed integer 'VUID-VkBlitImageInfo2KHR-srcImage-00230 If either of srcImage or dstImage+ was created with an unsigned integer  , the other must6 also have been created with an unsigned integer 'VUID-VkBlitImageInfo2KHR-srcImage-00231 If either of srcImage or dstImage9 was created with a depth/stencil format, the other must have exactly the same format'VUID-VkBlitImageInfo2KHR-srcImage-00232 If srcImage/ was created with a depth/stencil format, filter must be 'VUID-VkBlitImageInfo2KHR-srcImage-00233 srcImage must have been created with a samples value of &'VUID-VkBlitImageInfo2KHR-dstImage-00234 dstImage must have been created with a samples value of &%VUID-VkBlitImageInfo2KHR-filter-02001 If filter is  , then the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of srcImage must contain %VUID-VkBlitImageInfo2KHR-filter-02002 If filter is  , then the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of srcImage must contain  %VUID-VkBlitImageInfo2KHR-filter-00237 If filter is  , srcImage must be of type -VUID-VkBlitImageInfo2KHR-srcSubresource-01705 The srcSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in 1 when srcImage was created-VUID-VkBlitImageInfo2KHR-dstSubresource-01706 The dstSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in 1 when dstImage was created-VUID-VkBlitImageInfo2KHR-srcSubresource-01707 The srcSubresource.baseArrayLayer + srcSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in 1 when srcImage was created-VUID-VkBlitImageInfo2KHR-dstSubresource-01708 The dstSubresource.baseArrayLayer + dstSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in 1 when dstImage was created'VUID-VkBlitImageInfo2KHR-dstImage-02545 dstImage and srcImage must not have been created with flags containing  'VUID-VkBlitImageInfo2KHR-srcImage-00240 If either srcImage or dstImage is of type  , then for each element of pRegions, srcSubresource.baseArrayLayer and dstSubresource.baseArrayLayer must each be 0 , and srcSubresource.layerCount and dstSubresource.layerCount must each be 1)VUID-VkBlitImageInfo2KHR-aspectMask-00241 For each element of pRegions, srcSubresource.aspectMask must! specify aspects present in srcImage)VUID-VkBlitImageInfo2KHR-aspectMask-00242 For each element of pRegions, dstSubresource.aspectMask must! specify aspects present in dstImage(VUID-VkBlitImageInfo2KHR-srcOffset-00243 For each element of pRegions,  srcOffsets [0].x and  srcOffsets[1].x must' both be greater than or equal to 0; and less than or equal to the width of the specified srcSubresource of srcImage(VUID-VkBlitImageInfo2KHR-srcOffset-00244 For each element of pRegions,  srcOffsets [0].y and  srcOffsets[1].y must' both be greater than or equal to 0< and less than or equal to the height of the specified srcSubresource of srcImage'VUID-VkBlitImageInfo2KHR-srcImage-00245 If srcImage is of type  , then for each element of pRegions,  srcOffsets[0].y must be 0 and  srcOffsets [1].y must be 1(VUID-VkBlitImageInfo2KHR-srcOffset-00246 For each element of pRegions,  srcOffsets [0].z and  srcOffsets[1].z must' both be greater than or equal to 0; and less than or equal to the depth of the specified srcSubresource of srcImage'VUID-VkBlitImageInfo2KHR-srcImage-00247 If srcImage is of type  or  , then for each element of pRegions,  srcOffsets[0].z must be 0 and  srcOffsets [1].z must be 1(VUID-VkBlitImageInfo2KHR-dstOffset-00248 For each element of pRegions,  dstOffsets [0].x and  dstOffsets[1].x must' both be greater than or equal to 0; and less than or equal to the width of the specified dstSubresource of dstImage(VUID-VkBlitImageInfo2KHR-dstOffset-00249 For each element of pRegions,  dstOffsets [0].y and  dstOffsets[1].y must' both be greater than or equal to 0< and less than or equal to the height of the specified dstSubresource of dstImage'VUID-VkBlitImageInfo2KHR-dstImage-00250 If dstImage is of type  , then for each element of pRegions,  dstOffsets[0].y must be 0 and  dstOffsets [1].y must be 1(VUID-VkBlitImageInfo2KHR-dstOffset-00251 For each element of pRegions,  dstOffsets [0].z and  dstOffsets[1].z must' both be greater than or equal to 0; and less than or equal to the depth of the specified dstSubresource of dstImage'VUID-VkBlitImageInfo2KHR-dstImage-00252 If dstImage is of type  or  , then for each element of pRegions,  dstOffsets[0].z must be 0 and  dstOffsets [1].z must be 1'VUID-VkBlitImageInfo2KHR-pRegions-04561 If any element of pRegions contains  in its pNext chain, then srcImage and dstImage must$ not be block-compressed images'VUID-VkBlitImageInfo2KHR-pRegions-06207 If any element of pRegions contains  in its pNext chain, then srcImage must be of type 'VUID-VkBlitImageInfo2KHR-pRegions-06208 If any element of pRegions contains  in its pNext chain, then srcImage must not have a https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar formatValid Usage (Implicit)$VUID-VkBlitImageInfo2KHR-sType-sType sType must be   $VUID-VkBlitImageInfo2KHR-pNext-pNext pNext must be NULL+VUID-VkBlitImageInfo2KHR-srcImage-parameter srcImage must be a valid  handle1VUID-VkBlitImageInfo2KHR-srcImageLayout-parameter srcImageLayout must be a valid O value+VUID-VkBlitImageInfo2KHR-dstImage-parameter dstImage must be a valid  handle1VUID-VkBlitImageInfo2KHR-dstImageLayout-parameter dstImageLayout must be a valid O value+VUID-VkBlitImageInfo2KHR-pRegions-parameter pRegions must( be a valid pointer to an array of  regionCount valid  structures)VUID-VkBlitImageInfo2KHR-filter-parameter filter must be a valid J value0VUID-VkBlitImageInfo2KHR-regionCount-arraylength  regionCount must be greater than 0%VUID-VkBlitImageInfo2KHR-commonparent Both of dstImage , and srcImage must? have been created, allocated, or retrieved from the same 0See AlsoJ, , , O, , kjvulkansrcImage is the source image.jvulkansrcImageLayout is the layout of the source image subresources for the resolve.jvulkandstImage is the destination image.jvulkandstImageLayout is the layout of the destination image subresources for the resolve.jvulkanpRegions is a pointer to an array of / structures specifying the regions to resolve.jvulkansrcImage is the source image.jvulkansrcImageLayout> is the layout of the source image subresources for the copy.jvulkan dstBuffer is the destination buffer.jvulkanpRegions is a pointer to an array of , structures specifying the regions to copy.jvulkan srcBuffer is the source buffer.jvulkandstImage is the destination image.jvulkandstImageLayout is the layout of the destination image subresources for the copy.jvulkanpRegions is a pointer to an array of , structures specifying the regions to copy.jvulkansrcImage is the source image.jvulkansrcImageLayout> is the layout of the source image subresources for the blit.jvulkandstImage is the destination image.jvulkandstImageLayout is the layout of the destination image subresources for the blit.jvulkanpRegions is a pointer to an array of , structures specifying the regions to blit.jvulkanfilter is a J> specifying the filter to apply if the blits require scaling.jvulkansrcImage is the source image.jvulkansrcImageLayout7 is the current layout of the source image subresource.jvulkandstImage is the destination image.jvulkandstImageLayout= is the current layout of the destination image subresource.jvulkanpRegions is a pointer to an array of , structures specifying the regions to copy.jvulkan srcBuffer is the source buffer.jvulkan dstBuffer is the destination buffer.jvulkanpRegions is a pointer to an array of , structures specifying the regions to copy.jvulkansrcSubresource and dstSubresource are  structures specifying the image subresources of the images used for the source and destination image data, respectively. Resolve of depth/stencil images is not supported.jvulkan srcOffset and  dstOffset select the initial x, y, and z offsets in texels of the sub-regions of the source and destination image data.jvulkanextent: is the size in texels of the source image to resolve in width, height and depth.jvulkanpNext is NULL6 or a pointer to a structure extending this structure.jvulkan bufferOffset is the offset in bytes from the start of the buffer object where the image data is copied from or to.jvulkanbufferRowLength and bufferImageHeight specify in texels a subregion of a larger two- or three-dimensional image in buffer memory, and control the addressing calculations. If either of these values is zero, that aspect of the buffer memory is considered to be tightly packed according to the  imageExtent.jvulkanimageSubresource is a  used to specify the specific image subresources of the image used for the source or destination image data.jvulkan imageOffset selects the initial x, y, z offsets in texels of the sub-region of the source or destination image data.jvulkan imageExtent/ is the size in texels of the image to copy in width, height and depth.jvulkanpNext is NULL6 or a pointer to a structure extending this structure.kvulkansrcSubresource! is the subresource to blit from.kvulkan srcOffsets" is a pointer to an array of two s? structures specifying the bounds of the source region within srcSubresource.kvulkandstSubresource! is the subresource to blit into.kvulkan dstOffsets" is a pointer to an array of two s structures specifying the bounds of the destination region within dstSubresource.kvulkansrcSubresource and dstSubresource are  structures specifying the image subresources of the images used for the source and destination image data, respectively.kvulkan srcOffset and  dstOffset select the initial x, y, and z offsets in texels of the sub-regions of the source and destination image data.kvulkanextent/ is the size in texels of the image to copy in width, height and depth.kvulkan srcOffset4 is the starting offset in bytes from the start of  srcBuffer.kvulkan dstOffset4 is the starting offset in bytes from the start of  dstBuffer.kvulkansize is the number of bytes to copy.kvulkan6vkCmdCopyBuffer2KHR - Copy data between buffer regions Description+This command is functionally identical to  7, but includes extensible sub-structures that include sType and pNext7 parameters, allowing them to be more easily extended. Valid Usage,VUID-vkCmdCopyBuffer2KHR-commandBuffer-01822 If  commandBuffer- is an unprotected command buffer, then  srcBuffer must not be a protected buffer,VUID-vkCmdCopyBuffer2KHR-commandBuffer-01823 If  commandBuffer- is an unprotected command buffer, then  dstBuffer must not be a protected buffer,VUID-vkCmdCopyBuffer2KHR-commandBuffer-01824 If  commandBuffer* is a protected command buffer, then  dstBuffer must" not be an unprotected bufferValid Usage (Implicit)0VUID-vkCmdCopyBuffer2KHR-commandBuffer-parameter  commandBuffer must be a valid  handle2VUID-vkCmdCopyBuffer2KHR-pCopyBufferInfo-parameter pCopyBufferInfo must$ be a valid pointer to a valid  structure0VUID-vkCmdCopyBuffer2KHR-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state.VUID-vkCmdCopyBuffer2KHR-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must7 support transfer, graphics, or compute operations#VUID-vkCmdCopyBuffer2KHR-renderpass This command must6 only be called outside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary Secondary  Outside Transfer Graphics ComputeSee Also, kvulkan-vkCmdCopyImage2KHR - Copy data between images Description+This command is functionally identical to  7, but includes extensible sub-structures that include sType and pNext7 parameters, allowing them to be more easily extended. Valid Usage+VUID-vkCmdCopyImage2KHR-commandBuffer-01825 If  commandBuffer- is an unprotected command buffer, then srcImage must not be a protected image+VUID-vkCmdCopyImage2KHR-commandBuffer-01826 If  commandBuffer- is an unprotected command buffer, then dstImage must not be a protected image+VUID-vkCmdCopyImage2KHR-commandBuffer-01827 If  commandBuffer* is a protected command buffer, then dstImage must! not be an unprotected imageValid Usage (Implicit)/VUID-vkCmdCopyImage2KHR-commandBuffer-parameter  commandBuffer must be a valid  handle0VUID-vkCmdCopyImage2KHR-pCopyImageInfo-parameter pCopyImageInfo must be a valid pointer to a valid  structure/VUID-vkCmdCopyImage2KHR-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state-VUID-vkCmdCopyImage2KHR-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must7 support transfer, graphics, or compute operations"VUID-vkCmdCopyImage2KHR-renderpass This command must6 only be called outside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary Secondary  Outside Transfer Graphics ComputeSee Also, kvulkanvkCmdBlitImage2KHR - Copy regions of an image, potentially performing format conversion, Description+This command is functionally identical to  7, but includes extensible sub-structures that include sType and pNext7 parameters, allowing them to be more easily extended. Valid Usage+VUID-vkCmdBlitImage2KHR-commandBuffer-01834 If  commandBuffer- is an unprotected command buffer, then srcImage must not be a protected image+VUID-vkCmdBlitImage2KHR-commandBuffer-01835 If  commandBuffer- is an unprotected command buffer, then dstImage must not be a protected image+VUID-vkCmdBlitImage2KHR-commandBuffer-01836 If  commandBuffer* is a protected command buffer, then dstImage must! not be an unprotected imageValid Usage (Implicit)/VUID-vkCmdBlitImage2KHR-commandBuffer-parameter  commandBuffer must be a valid  handle0VUID-vkCmdBlitImage2KHR-pBlitImageInfo-parameter pBlitImageInfo must be a valid pointer to a valid  structure/VUID-vkCmdBlitImage2KHR-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state-VUID-vkCmdBlitImage2KHR-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operations"VUID-vkCmdBlitImage2KHR-renderpass This command must6 only be called outside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryOutside  Graphics See Also, kvulkanvkCmdCopyBufferToImage2KHR - Copy data from a buffer into an image Description+This command is functionally identical to  7, but includes extensible sub-structures that include sType and pNext7 parameters, allowing them to be more easily extended. Valid Usage3VUID-vkCmdCopyBufferToImage2KHR-commandBuffer-01828 If  commandBuffer( is an unprotected command buffer, then  srcBuffer must not be a protected buffer3VUID-vkCmdCopyBufferToImage2KHR-commandBuffer-01829 If  commandBuffer( is an unprotected command buffer, then dstImage must not be a protected image3VUID-vkCmdCopyBufferToImage2KHR-commandBuffer-01830 If  commandBuffer% is a protected command buffer, then dstImage must not be an unprotected imageValid Usage (Implicit)7VUID-vkCmdCopyBufferToImage2KHR-commandBuffer-parameter  commandBuffer must be a valid  handleVUID-vkCmdCopyBufferToImage2KHR-pCopyBufferToImageInfo-parameter pCopyBufferToImageInfo must$ be a valid pointer to a valid  structure7VUID-vkCmdCopyBufferToImage2KHR-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state5VUID-vkCmdCopyBufferToImage2KHR-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must7 support transfer, graphics, or compute operations*VUID-vkCmdCopyBufferToImage2KHR-renderpass This command must6 only be called outside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary Secondary  Outside Transfer Graphics ComputeSee Also, kvulkan:vkCmdCopyImageToBuffer2KHR - Copy image data into a buffer Description+This command is functionally identical to  7, but includes extensible sub-structures that include sType and pNext7 parameters, allowing them to be more easily extended. Valid Usage3VUID-vkCmdCopyImageToBuffer2KHR-commandBuffer-01831 If  commandBuffer( is an unprotected command buffer, then srcImage must not be a protected image3VUID-vkCmdCopyImageToBuffer2KHR-commandBuffer-01832 If  commandBuffer( is an unprotected command buffer, then  dstBuffer must not be a protected buffer3VUID-vkCmdCopyImageToBuffer2KHR-commandBuffer-01833 If  commandBuffer% is a protected command buffer, then  dstBuffer must not be an unprotected bufferValid Usage (Implicit)7VUID-vkCmdCopyImageToBuffer2KHR-commandBuffer-parameter  commandBuffer must be a valid  handleVUID-vkCmdCopyImageToBuffer2KHR-pCopyImageToBufferInfo-parameter pCopyImageToBufferInfo must$ be a valid pointer to a valid  structure7VUID-vkCmdCopyImageToBuffer2KHR-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state5VUID-vkCmdCopyImageToBuffer2KHR-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must7 support transfer, graphics, or compute operations*VUID-vkCmdCopyImageToBuffer2KHR-renderpass This command must6 only be called outside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary Secondary  Outside Transfer Graphics ComputeSee Also, kvulkan3vkCmdResolveImage2KHR - Resolve regions of an image Description+This command is functionally identical to  7, but includes extensible sub-structures that include sType and pNext7 parameters, allowing them to be more easily extended. Valid Usage.VUID-vkCmdResolveImage2KHR-commandBuffer-01837 If  commandBuffer- is an unprotected command buffer, then srcImage must not be a protected image.VUID-vkCmdResolveImage2KHR-commandBuffer-01838 If  commandBuffer- is an unprotected command buffer, then dstImage must not be a protected image.VUID-vkCmdResolveImage2KHR-commandBuffer-01839 If  commandBuffer* is a protected command buffer, then dstImage must! not be an unprotected imageValid Usage (Implicit)2VUID-vkCmdResolveImage2KHR-commandBuffer-parameter  commandBuffer must be a valid  handle6VUID-vkCmdResolveImage2KHR-pResolveImageInfo-parameter pResolveImageInfo must$ be a valid pointer to a valid  structure2VUID-vkCmdResolveImage2KHR-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state0VUID-vkCmdResolveImage2KHR-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operations%VUID-vkCmdResolveImage2KHR-renderpass This command must6 only be called outside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryOutside  Graphics See Also, kvulkan commandBuffer is the command buffer into which the command will be recorded.vulkanpCopyBufferInfo is a pointer to a + structure describing the copy parameters.kvulkan commandBuffer is the command buffer into which the command will be recorded.vulkanpCopyImageInfo is a pointer to a + structure describing the copy parameters.kvulkan commandBuffer is the command buffer into which the command will be recorded.vulkanpBlitImageInfo is a pointer to a + structure describing the blit parameters.kvulkan commandBuffer is the command buffer into which the command will be recorded.vulkanpCopyBufferToImageInfo is a pointer to a + structure describing the copy parameters.kvulkan commandBuffer is the command buffer into which the command will be recorded.vulkanpCopyImageToBufferInfo is a pointer to a + structure describing the copy parameters.kvulkan commandBuffer is the command buffer into which the command will be recorded.vulkanpResolveImageInfo is a pointer to a . structure describing the resolve parameters.jjjjjjjjjjjjkkkkkkjjkkkkjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkjjkkkkjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkjkNone( #$&'(./0289:<>?;OvulkanVkSamplerCustomBorderColorCreateInfoEXT - Structure specifying custom border color Valid Usage9VUID-VkSamplerCustomBorderColorCreateInfoEXT-format-04013 If provided format is not  then the >:: borderColor type must- match the sampled type of the provided format, as shown in the SPIR-V Sampled Type column of the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat table9VUID-VkSamplerCustomBorderColorCreateInfoEXT-format-04014 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-customBorderColorWithoutFormatcustomBorderColorWithoutFormat" feature is not enabled then format must not be 9VUID-VkSamplerCustomBorderColorCreateInfoEXT-format-04015= If the sampler is used to sample an image view of ,  , or  format then format must not be Valid Usage (Implicit)8VUID-VkSamplerCustomBorderColorCreateInfoEXT-sType-sType sType must be  =VUID-VkSamplerCustomBorderColorCreateInfoEXT-format-parameter format must be a valid K valueSee Also, K, vulkanVkPhysicalDeviceCustomBorderColorPropertiesEXT - Structure describing whether custom border colors can be supported by an implementation DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.Valid Usage (Implicit)See AlsovulkanVkPhysicalDeviceCustomBorderColorFeaturesEXT - Structure describing whether custom border colors can be supported by an implementationMembers0This structure describes the following features: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, kvulkanfeatures-customBorderColors customBorderColors9 indicates that the implementation supports providing a  borderColor value with one of the following values at sampler creation time:kvulkan'features-customBorderColorWithoutFormat customBorderColorWithoutFormat indicates that explicit formats are not required for custom border colors and the value of the format member of the  structure may be 0. If this feature bit is not set, applications must provide the K< of the image view(s) being sampled by this sampler in the format member of the  structure.kvulkan#limits-maxCustomBorderColorSamplers maxCustomBorderColorSamplers indicates the maximum number of samplers with custom border colors which can" simultaneously exist on a device.kvulkancustomBorderColor is a 7 representing the desired custom sampler border color.kvulkanformat is a K representing the format of the sampled image view(s). This field may be  if the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-customBorderColorWithoutFormatcustomBorderColorWithoutFormat feature is enabled.kkkkkkkkkkkkkkkkkkkkkkkkdNone( #$&'(./0289:<>? has the same effect for the described subpass dependency as X:: pViewOffsets/ has on each corresponding subpass dependency.If an instance of  is included in the pNext chain,  srcStageMask,  dstStageMask,  srcAccessMask, and  dstAccessMask parameters are ignored. The synchronization and access scopes instead are defined by the parameters of . Valid Usage,VUID-VkSubpassDependency2-srcStageMask-03080 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled,  srcStageMask must not contain   ,VUID-VkSubpassDependency2-dstStageMask-03081 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled,  dstStageMask must not contain   ,VUID-VkSubpassDependency2-srcStageMask-03082 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled,  srcStageMask must not contain    or   ,VUID-VkSubpassDependency2-dstStageMask-03083 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled,  dstStageMask must not contain    or   *VUID-VkSubpassDependency2-srcSubpass-03084  srcSubpass must be less than or equal to  dstSubpass, unless one of them is , to avoid cyclic dependencies and ensure a valid execution order*VUID-VkSubpassDependency2-srcSubpass-03085  srcSubpass and  dstSubpass must not both be equal to *VUID-VkSubpassDependency2-srcSubpass-03087 If  srcSubpass is equal to  dstSubpass and not all of the stages in  srcStageMask and  dstStageMask are  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regionsframebuffer-space stages, the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-orderlogically latest pipeline stage in  srcStageMask must be  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-orderlogically earlier than or equal to the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-orderlogically earliest pipeline stage in  dstStageMask-VUID-VkSubpassDependency2-srcAccessMask-03088" Any access flag included in  srcAccessMask must4 be supported by one of the pipeline stages in  srcStageMask, as specified in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access types-VUID-VkSubpassDependency2-dstAccessMask-03089" Any access flag included in  dstAccessMask must4 be supported by one of the pipeline stages in  dstStageMask, as specified in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access types/VUID-VkSubpassDependency2-dependencyFlags-03090 If dependencyFlags includes ,  srcSubpass must not be equal to /VUID-VkSubpassDependency2-dependencyFlags-03091 If dependencyFlags includes ,  dstSubpass must not be equal to *VUID-VkSubpassDependency2-srcSubpass-02245 If  srcSubpass equals  dstSubpass, and  srcStageMask and  dstStageMask both include a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regionsframebuffer-space stage , then dependencyFlags must include *VUID-VkSubpassDependency2-viewOffset-02530 If  viewOffset is not equal to 0,  srcSubpass must not be equal to  dstSubpass/VUID-VkSubpassDependency2-dependencyFlags-03092 If dependencyFlags does not include ,  viewOffset must be 0,VUID-VkSubpassDependency2-srcStageMask-02103 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled,  srcStageMask must not contain   ,VUID-VkSubpassDependency2-srcStageMask-02104 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders feature is not enabled,  srcStageMask must not contain   ,VUID-VkSubpassDependency2-dstStageMask-02105 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled,  dstStageMask must not contain   ,VUID-VkSubpassDependency2-dstStageMask-02106 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders feature is not enabled,  dstStageMask must not contain   0VUID-VkSubpassDependency2-synchronization2-04988 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2synchronization2 feature is not enabled,  srcStageMask must not be 00VUID-VkSubpassDependency2-synchronization2-04989 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2synchronization2 feature is not enabled,  dstStageMask must not be 0Valid Usage (Implicit)%VUID-VkSubpassDependency2-sType-sType sType must be  %VUID-VkSubpassDependency2-pNext-pNext pNext must be NULL/ or a pointer to a valid instance of &VUID-VkSubpassDependency2-sType-unique The sType" value of each struct in the pNext chain must be unique0VUID-VkSubpassDependency2-srcStageMask-parameter  srcStageMask must be a valid combination of   values0VUID-VkSubpassDependency2-dstStageMask-parameter  dstStageMask must be a valid combination of   values1VUID-VkSubpassDependency2-srcAccessMask-parameter  srcAccessMask must be a valid combination of  values1VUID-VkSubpassDependency2-dstAccessMask-parameter  dstAccessMask must be a valid combination of  values3VUID-VkSubpassDependency2-dependencyFlags-parameter dependencyFlags must be a valid combination of  valuesSee Also+, H, Z, , vulkanVkSubpassBeginInfo - Structure specifying subpass begin informationValid Usage (Implicit)See Also, i, l,  , l,  vulkanVkRenderPassCreateInfo2 - Structure specifying parameters of a newly created render pass DescriptionParameters defined by this structure with the same name as those in 7 have the identical effect to those parameters; the child structures are variants of those used in 7 which add sType and pNext+ parameters, allowing them to be extended.If the ::viewMask member of any element of  pSubpasses is not zero,  multiview functionality is considered to be enabled for this render pass.correlatedViewMaskCount and pCorrelatedViewMasks have the same effect as X::correlationMaskCount and X::pCorrelationMasks, respectively. Valid Usage'VUID-VkRenderPassCreateInfo2-None-03049 If any two subpasses operate on attachments with overlapping ranges of the same 0 > object, and at least one subpass writes to that area of 0 , a subpass dependency must be included (either directly or via some intermediate subpasses) between them-VUID-VkRenderPassCreateInfo2-attachment-03050 If the  attachment member of any element of pInputAttachments, pColorAttachments, pResolveAttachments or pDepthStencilAttachment3, or the attachment indexed by any element of pPreserveAttachments in any given element of  pSubpasses is bound to a range of a 0  object that overlaps with any other attachment in any subpass (including the same subpass), the  structures describing them must include  in flags-VUID-VkRenderPassCreateInfo2-attachment-03051 If the  attachment member of any element of pInputAttachments, pColorAttachments, pResolveAttachments or pDepthStencilAttachment, or any element of pPreserveAttachments in any given element of  pSubpasses is not , it must be less than attachmentCount/VUID-VkRenderPassCreateInfo2-pAttachments-02522 For any member of  pAttachments with a loadOp equal to (, the first use of that attachment must not specify a layout equal to , , or /VUID-VkRenderPassCreateInfo2-pAttachments-02523 For any member of  pAttachments with a  stencilLoadOp equal to (, the first use of that attachment must not specify a layout equal to , , or 0VUID-VkRenderPassCreateInfo2-pDependencies-03054 For any element of  pDependencies , if the  srcSubpass is not ', all stage flags included in the  srcStageMask member of that dependency must0 be a pipeline stage supported by the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-typespipeline identified by the pipelineBindPoint member of the source subpass0VUID-VkRenderPassCreateInfo2-pDependencies-03055 For any element of  pDependencies , if the  dstSubpass is not ', all stage flags included in the  dstStageMask member of that dependency must0 be a pipeline stage supported by the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-typespipeline identified by the pipelineBindPoint' member of the destination subpass7VUID-VkRenderPassCreateInfo2-pCorrelatedViewMasks-030561 The set of bits included in any element of pCorrelatedViewMasks must not overlap with the set of bits included in any other element of pCorrelatedViewMasks+VUID-VkRenderPassCreateInfo2-viewMask-03057 If the ::viewMask member of all elements of  pSubpasses is 0, correlatedViewMaskCount must be 0+VUID-VkRenderPassCreateInfo2-viewMask-03058 The ::viewMask member of all elements of  pSubpasses must either all be 0, or all not be 0+VUID-VkRenderPassCreateInfo2-viewMask-03059 If the ::viewMask member of all elements of  pSubpasses is 0, the dependencyFlags member of any element of  pDependencies must not include 0VUID-VkRenderPassCreateInfo2-pDependencies-03060 For any element of  pDependencies where its  srcSubpass member equals its  dstSubpass member, if the viewMask- member of the corresponding element of  pSubpasses& includes more than one bit, its dependencyFlags member must include -VUID-VkRenderPassCreateInfo2-attachment-02525 If the  attachment# member of any element of the pInputAttachments member of any element of  pSubpasses is not , the  aspectMask member of that element of pInputAttachments must only include aspects that are present in images of the format specified by the element of  pAttachments specified by  attachment-VUID-VkRenderPassCreateInfo2-srcSubpass-02526 The  srcSubpass member of each element of  pDependencies must be less than  subpassCount-VUID-VkRenderPassCreateInfo2-dstSubpass-02527 The  dstSubpass member of each element of  pDependencies must be less than  subpassCount/VUID-VkRenderPassCreateInfo2-pAttachments-04585 If any element of  pAttachments is used as a fragment shading rate attachment in any subpass, it must< not be used as any other attachment in the render pass(VUID-VkRenderPassCreateInfo2-flags-04521 If flags includes , an element of  pSubpasses includes an instance of  in its pNext chain, and the pFragmentShadingRateAttachment/ member of that structure is not equal to NULL, the  attachment member of pFragmentShadingRateAttachment must be /VUID-VkRenderPassCreateInfo2-pAttachments-04586 If any element of  pAttachments is used as a fragment shading rate attachment in any subpass, it must! have an image format whose  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-featurespotential format features contain 7VUID-VkRenderPassCreateInfo2-rasterizationSamples-04905 If the pipeline is being created with fragment shader state, and the VK_QCOM_render_pass_shader_resolve extension is enabled, and if subpass has any input attachments, and if the subpass description contains 6, then the sample count of the input attachments must equal rasterizationSamples6VUID-VkRenderPassCreateInfo2-sampleShadingEnable-04906 If the pipeline is being created with fragment shader state, and the VK_QCOM_render_pass_shader_resolve extension is enabled, and if the subpass description contains  , then sampleShadingEnable must be false(VUID-VkRenderPassCreateInfo2-flags-04907 If flags includes , and if pResolveAttachments is not NULL$, then each resolve attachment must be (VUID-VkRenderPassCreateInfo2-flags-04908 If flags includes , and if !pDepthStencilResolveAttachmentKHR is not NULL1, then the depth/stencil resolve attachment must be (VUID-VkRenderPassCreateInfo2-flags-04909 If flags includes , then the subpass must7 be the last subpass in a subpass dependency chainValid Usage (Implicit)(VUID-VkRenderPassCreateInfo2-sType-sType sType must be  (VUID-VkRenderPassCreateInfo2-pNext-pNext pNext must be NULL/ or a pointer to a valid instance of )VUID-VkRenderPassCreateInfo2-sType-unique The sType" value of each struct in the pNext chain must be unique,VUID-VkRenderPassCreateInfo2-flags-parameter flags must% be a valid combination of  values3VUID-VkRenderPassCreateInfo2-pAttachments-parameter If attachmentCount is not 0,  pAttachments must( be a valid pointer to an array of attachmentCount valid  structures1VUID-VkRenderPassCreateInfo2-pSubpasses-parameter  pSubpasses must# be a valid pointer to an array of  subpassCount valid  structures4VUID-VkRenderPassCreateInfo2-pDependencies-parameter If dependencyCount is not 0,  pDependencies must( be a valid pointer to an array of dependencyCount valid  structures;VUID-VkRenderPassCreateInfo2-pCorrelatedViewMasks-parameter If correlatedViewMaskCount is not 0, pCorrelatedViewMasks must( be a valid pointer to an array of correlatedViewMaskCount uint32_t values5VUID-VkRenderPassCreateInfo2-subpassCount-arraylength  subpassCount must be greater than 0See Also, , , , , l,  vulkanVkAttachmentReference2 - Structure specifying an attachment reference DescriptionParameters defined by this structure with the same name as those in 7 0 have the identical effect to those parameters. aspectMask is ignored when this structure is used to describe anything other than an input attachment reference.If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayoutsseparateDepthStencilLayouts feature is enabled, and  attachment has a depth/stencil format, layout can be set to a layout that only specifies the layout of the depth aspect.If layout only specifies the layout of the depth aspect of the attachment, the layout of the stencil aspect is specified by the  stencilLayout member of a  structure included in the pNext chain. Otherwise, layout6 describes the layout for all relevant image aspects. Valid Usage(VUID-VkAttachmentReference2-layout-03077 If  attachment is not , layout must not be ,  , or =VUID-VkAttachmentReference2-separateDepthStencilLayouts-03313 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayoutsseparateDepthStencilLayouts" feature is not enabled, and  attachment is not , layout must not be , , , or ,,VUID-VkAttachmentReference2-attachment-04754 If  attachment is not , and the format of the referenced attachment is a color format, layout must not be , ,  or ,VUID-VkAttachmentReference2-attachment-04755 If  attachment is not , and the format of the referenced attachment is a depth/stencil format which includes both depth and stencil aspects, and layout is  or  , the pNext chain must include a  structure,VUID-VkAttachmentReference2-attachment-04756 If  attachment is not , and the format of the referenced attachment is a depth/stencil format which includes only the depth aspect, layout must not be  or ,VUID-VkAttachmentReference2-attachment-04757 If  attachment is not , and the format of the referenced attachment is a depth/stencil format which includes only the stencil aspect, layout must not be  or Valid Usage (Implicit)'VUID-VkAttachmentReference2-sType-sType sType must be  'VUID-VkAttachmentReference2-pNext-pNext pNext must be NULL/ or a pointer to a valid instance of (VUID-VkAttachmentReference2-sType-unique The sType" value of each struct in the pNext chain must be unique,VUID-VkAttachmentReference2-layout-parameter layout must be a valid O valueSee Also, ", O, , , vulkanVkAttachmentDescription2 - Structure specifying an attachment description DescriptionParameters defined by this structure with the same name as those in 70 have the identical effect to those parameters.If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayoutsseparateDepthStencilLayouts feature is enabled, and format is a depth/stencil format,  initialLayout and  finalLayout can be set to a layout that only specifies the layout of the depth aspect.If the pNext chain includes a  structure, then the stencilInitialLayout and stencilFinalLayout members specify the initial and final layouts of the stencil aspect of a depth/stencil format, and  initialLayout and  finalLayout? only apply to the depth aspect. For depth-only formats, the  structure is ignored. For stencil-only formats, the initial and final layouts of the stencil aspect are taken from the  structure if present, or  initialLayout and  finalLayout if not present.If format' is a depth/stencil format, and either  initialLayout or  finalLayout does not specify a layout for the stencil aspect, then the application must specify the initial and final layouts of the stencil aspect by including a  structure in the pNext chain. Valid Usage/VUID-VkAttachmentDescription2-finalLayout-03061  finalLayout must not be  or *VUID-VkAttachmentDescription2-format-03294 If format is a color format,  initialLayout must not be , , , or *VUID-VkAttachmentDescription2-format-03295 If format! is a depth/stencil format,  initialLayout must not be *VUID-VkAttachmentDescription2-format-03296 If format is a color format,  finalLayout must not be , , , or *VUID-VkAttachmentDescription2-format-03297 If format! is a depth/stencil format,  finalLayout must not be ?VUID-VkAttachmentDescription2-separateDepthStencilLayouts-03298 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayoutsseparateDepthStencilLayouts feature is not enabled,  initialLayout must not be , ,  or ?VUID-VkAttachmentDescription2-separateDepthStencilLayouts-03299 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayoutsseparateDepthStencilLayouts feature is not enabled,  finalLayout must not be , ,  or *VUID-VkAttachmentDescription2-format-03300 If format is a color format,  initialLayout must not be , ,  or *VUID-VkAttachmentDescription2-format-03301 If format is a color format,  finalLayout must not be , ,  or *VUID-VkAttachmentDescription2-format-03302 If format is a depth/stencil format which includes both depth and stencil aspects, and  initialLayout is  or  , the pNext chain must include a  structure*VUID-VkAttachmentDescription2-format-03303 If format is a depth/stencil format which includes both depth and stencil aspects, and  finalLayout is  or  , the pNext chain must include a  structure*VUID-VkAttachmentDescription2-format-03304 If format is a depth/stencil format which includes only the depth aspect,  initialLayout must not be  or *VUID-VkAttachmentDescription2-format-03305 If format is a depth/stencil format which includes only the depth aspect,  finalLayout must not be  or *VUID-VkAttachmentDescription2-format-03306 If format is a depth/stencil format which includes only the stencil aspect,  initialLayout must not be  or *VUID-VkAttachmentDescription2-format-03307 If format is a depth/stencil format which includes only the stencil aspect,  finalLayout must not be  or Valid Usage (Implicit))VUID-VkAttachmentDescription2-sType-sType sType must be   )VUID-VkAttachmentDescription2-pNext-pNext pNext must be NULL/ or a pointer to a valid instance of *VUID-VkAttachmentDescription2-sType-unique The sType" value of each struct in the pNext chain must be unique-VUID-VkAttachmentDescription2-flags-parameter flags must% be a valid combination of  values.VUID-VkAttachmentDescription2-format-parameter format must be a valid K value/VUID-VkAttachmentDescription2-samples-parameter samples must be a valid b value.VUID-VkAttachmentDescription2-loadOp-parameter loadOp must be a valid + value/VUID-VkAttachmentDescription2-storeOp-parameter storeOp must be a valid + value5VUID-VkAttachmentDescription2-stencilLoadOp-parameter  stencilLoadOp must be a valid + value6VUID-VkAttachmentDescription2-stencilStoreOp-parameter stencilStoreOp must be a valid + value5VUID-VkAttachmentDescription2-initialLayout-parameter  initialLayout must be a valid O value3VUID-VkAttachmentDescription2-finalLayout-parameter  finalLayout must be a valid O valueSee Also+, +, +, K, O, , b, kvulkancontents is a i value specifying how the commands in the next subpass will be provided.*VUID-VkSubpassBeginInfo-contents-parameter contents must be a valid i valuekvulkanpNext is NULL6 or a pointer to a structure extending this structure.kvulkanflags is reserved for future use.kvulkan pAttachments is a pointer to an array of attachmentCount  structures describing the attachments used by the render pass.kvulkan pSubpasses is a pointer to an array of  subpassCount $ structures describing each subpass.kvulkan pDependencies is a pointer to an array of dependencyCount  structures describing dependencies between pairs of subpasses.kvulkanpCorrelatedViewMasks is a pointer to an array of view masks indicating sets of views that may* be more efficient to render concurrently.kvulkanpNext is NULL6 or a pointer to a structure extending this structure.kvulkan srcSubpass is the subpass index of the first subpass in the dependency, or .kvulkan dstSubpass is the subpass index of the second subpass in the dependency, or .kvulkan srcStageMask is a bitmask of   specifying the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-maskssource stage mask.kvulkan dstStageMask is a bitmask of   specifying the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masksdestination stage maskkvulkan srcAccessMask is a bitmask of  specifying a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-maskssource access mask.kvulkan dstAccessMask is a bitmask of  specifying a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masksdestination access mask.kvulkandependencyFlags is a bitmask of .kvulkan viewOffset controls which views in the source subpass the views in the destination subpass depend on.kvulkanpNext is NULL6 or a pointer to a structure extending this structure.kvulkanflags is a bitmask of " specifying usage of the subpass.kvulkanpipelineBindPoint is a X value specifying the pipeline type supported for this subpass.kvulkanviewMask is a bitfield of view indices describing which views rendering is broadcast to in this subpass, when multiview is enabled.kvulkanpInputAttachments is a pointer to an array of  structures defining the input attachments for this subpass and their layouts.kvulkanpColorAttachments is a pointer to an array of colorAttachmentCount  structures defining the color attachments for this subpass and their layouts.kvulkanpResolveAttachments is NULL or a pointer to an array of colorAttachmentCount  structures defining the resolve attachments for this subpass and their layouts.kvulkanpDepthStencilAttachment is a pointer to a  structure specifying the depth/stencil attachment for this subpass and its layout.lvulkanpPreserveAttachments is a pointer to an array of preserveAttachmentCount render pass attachment indices identifying attachments that are not used by this subpass, but whose contents must& be preserved throughout the subpass.lvulkanpNext is NULL6 or a pointer to a structure extending this structure.lvulkan attachment is either an integer value identifying an attachment at the corresponding index in :: pAttachments, or . to signify that this attachment is not used.lvulkanlayout is a O value specifying the layout the attachment uses during the subpass.lvulkan aspectMask is a mask of which aspect(s) can be accessed within the specified subpass as an input attachment.lvulkanpNext is NULL6 or a pointer to a structure extending this structure.lvulkanflags is a bitmask of 5 specifying additional properties of the attachment.lvulkanformat is a K value specifying the format of the image that will be used for the attachment.lvulkansamples is a b6 value specifying the number of samples of the image.lvulkanloadOp is a + value specifying how the contents of color and depth components of the attachment are treated at the beginning of the subpass where it is first used.lvulkanstoreOp is a + value specifying how the contents of color and depth components of the attachment are treated at the end of the subpass where it is last used.lvulkan stencilLoadOp is a + value specifying how the contents of stencil components of the attachment are treated at the beginning of the subpass where it is first used.lvulkanstencilStoreOp is a + value specifying how the contents of stencil components of the attachment are treated at the end of the last subpass where it is used.lvulkan initialLayout is the layout the attachment image subresource will be in when a render pass instance begins.lvulkan finalLayout is the layout the attachment image subresource will be transitioned to when a render pass instance ends.lvulkan5vkCreateRenderPass2 - Create a new render pass object Description+This command is functionally identical to 7 7, but includes extensible sub-structures that include sType and pNext7 parameters, allowing them to be more easily extended.Valid Usage (Implicit))VUID-vkCreateRenderPass2-device-parameter device must be a valid  handle.VUID-vkCreateRenderPass2-pCreateInfo-parameter  pCreateInfo must be a valid pointer to a valid  structure-VUID-vkCreateRenderPass2-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure.VUID-vkCreateRenderPass2-pRenderPass-parameter  pRenderPass must be a valid pointer to a z handle Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , z, lvulkan/vkCmdBeginRenderPass2 - Begin a new render pass DescriptionAfter beginning a render pass instance, the command buffer is ready to record the commands for the first subpass of that render pass. Valid Usage,VUID-vkCmdBeginRenderPass2-framebuffer-02779 Both the  framebuffer and  renderPass members of pRenderPassBegin must$ have been created on the same  that  commandBuffer was allocated on .VUID-vkCmdBeginRenderPass2-initialLayout-03094 If any of the  initialLayout or  finalLayout member of the 7 structures or the layout member of the 7  structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is  then the corresponding attachment image view of the framebuffer specified in the  framebuffer member of pRenderPassBegin must have been created with a usage value including  .VUID-vkCmdBeginRenderPass2-initialLayout-03096 If any of the  initialLayout or  finalLayout member of the 7 structures or the layout member of the 7  structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is , , , or  then the corresponding attachment image view of the framebuffer specified in the  framebuffer member of pRenderPassBegin must have been created with a usage value including  .VUID-vkCmdBeginRenderPass2-initialLayout-02844 If any of the  initialLayout or  finalLayout member of the 7 structures or the layout member of the 7  structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is , or , , or  then the corresponding attachment image view of the framebuffer specified in the  framebuffer member of pRenderPassBegin must have been created with a usage value including  5VUID-vkCmdBeginRenderPass2-stencilInitialLayout-02845 If any of the stencilInitialLayout or stencilFinalLayout member of the  structures or the  stencilLayout member of the  structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is , or  then the corresponding attachment image view of the framebuffer specified in the  framebuffer member of pRenderPassBegin must have been created with a usage value including  .VUID-vkCmdBeginRenderPass2-initialLayout-03097 If any of the  initialLayout or  finalLayout member of the 7 structures or the layout member of the 7  structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is  then the corresponding attachment image view of the framebuffer specified in the  framebuffer member of pRenderPassBegin must have been created with a usage value including   or  .VUID-vkCmdBeginRenderPass2-initialLayout-03098 If any of the  initialLayout or  finalLayout member of the 7 structures or the layout member of the 7  structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is  then the corresponding attachment image view of the framebuffer specified in the  framebuffer member of pRenderPassBegin must have been created with a usage value including  .VUID-vkCmdBeginRenderPass2-initialLayout-03099 If any of the  initialLayout or  finalLayout member of the 7 structures or the layout member of the 7  structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is  then the corresponding attachment image view of the framebuffer specified in the  framebuffer member of pRenderPassBegin must have been created with a usage value including  .VUID-vkCmdBeginRenderPass2-initialLayout-03100 If the  initialLayout member of any of the 7 structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is not , then each such  initialLayout must be equal to the current layout of the corresponding attachment image subresource of the framebuffer specified in the  framebuffer member of pRenderPassBegin-VUID-vkCmdBeginRenderPass2-srcStageMask-03101 The  srcStageMask and  dstStageMask members of any element of the  pDependencies member of 7 used to create  renderPass must be supported by the capabilities of the queue family identified by the queueFamilyIndex member of the  , used to create the command pool which  commandBuffer was allocated from,VUID-vkCmdBeginRenderPass2-framebuffer-02533 For any attachment in  framebuffer that is used by  renderPass and is bound to memory locations that are also bound to another attachment used by  renderPass, and if at least one of those uses causes either attachment to be written to, both attachments must have had the  setValid Usage (Implicit)2VUID-vkCmdBeginRenderPass2-commandBuffer-parameter  commandBuffer must be a valid  handle5VUID-vkCmdBeginRenderPass2-pRenderPassBegin-parameter pRenderPassBegin must$ be a valid pointer to a valid  structure6VUID-vkCmdBeginRenderPass2-pSubpassBeginInfo-parameter pSubpassBeginInfo must$ be a valid pointer to a valid  structure2VUID-vkCmdBeginRenderPass2-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state0VUID-vkCmdBeginRenderPass2-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operations%VUID-vkCmdBeginRenderPass2-renderpass This command must6 only be called outside of a render pass instance&VUID-vkCmdBeginRenderPass2-bufferlevel  commandBuffer must be a primary Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimaryOutsideGraphicsSee Also, , lvulkan>This function will call the supplied action between calls to l and l Note that l is *not* called if an exception is thrown by the inner action.lvulkanvkCmdNextSubpass2 - Transition to the next subpass of a render pass Descriptionl is semantically identical to *, except that it is extensible, and that contents is provided as part of an extensible structure instead of as a flat parameter. Valid Usage!VUID-vkCmdNextSubpass2-None-03102 The current subpass index must be less than the number of subpasses in the render pass minus one!VUID-vkCmdNextSubpass2-None-02350 This command must7 not be recorded when transform feedback is activeValid Usage (Implicit).VUID-vkCmdNextSubpass2-commandBuffer-parameter  commandBuffer must be a valid  handle2VUID-vkCmdNextSubpass2-pSubpassBeginInfo-parameter pSubpassBeginInfo must$ be a valid pointer to a valid  structure0VUID-vkCmdNextSubpass2-pSubpassEndInfo-parameter pSubpassEndInfo must be a valid pointer to a valid  structure.VUID-vkCmdNextSubpass2-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state,VUID-vkCmdNextSubpass2-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operations!VUID-vkCmdNextSubpass2-renderpass This command must5 only be called inside of a render pass instance"VUID-vkCmdNextSubpass2-bufferlevel  commandBuffer must be a primary Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimaryInsideGraphicsSee Also, , lvulkan1vkCmdEndRenderPass2 - End the current render pass Descriptionl is semantically identical to  , except that it is extensible. Valid Usage#VUID-vkCmdEndRenderPass2-None-03103 The current subpass index must be equal to the number of subpasses in the render pass minus one#VUID-vkCmdEndRenderPass2-None-02352 This command must7 not be recorded when transform feedback is activeValid Usage (Implicit)0VUID-vkCmdEndRenderPass2-commandBuffer-parameter  commandBuffer must be a valid  handle2VUID-vkCmdEndRenderPass2-pSubpassEndInfo-parameter pSubpassEndInfo must$ be a valid pointer to a valid  structure0VUID-vkCmdEndRenderPass2-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state.VUID-vkCmdEndRenderPass2-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operations#VUID-vkCmdEndRenderPass2-renderpass This command must5 only be called inside of a render pass instance$VUID-vkCmdEndRenderPass2-bufferlevel  commandBuffer must be a primary Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimaryInsideGraphicsSee Also, lvulkandevice4 is the logical device that creates the render pass.vulkan pCreateInfo is a pointer to a 9 structure describing the parameters of the render pass.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.lvulkan commandBuffer6 is the command buffer in which to record the command.vulkanpRenderPassBegin is a pointer to a  structure specifying the render pass to begin an instance of, and the framebuffer the instance uses.vulkanpSubpassBeginInfo is a pointer to a  structure containing information about the subpass which is about to begin rendering.lvulkan commandBuffer6 is the command buffer in which to record the command.vulkanpSubpassBeginInfo is a pointer to a  structure containing information about the subpass which is about to begin rendering.vulkanpSubpassEndInfo is a pointer to a  structure containing information about how the previous subpass will be ended.lvulkan commandBuffer is the command buffer in which to end the current render pass instance.vulkanpSubpassEndInfo is a pointer to a  structure containing information about how the previous subpass will be ended.kkkkkkkkklkkkkkkkkkkkkkkkkkkkkllllllllllllllll llllllllllllllllllllllllllkkkkkkkklkkkkkkkkkkkkkkkkkkkkk  None( #$&'(./0289:<>?<'vulkanVkFragmentShadingRateCombinerOpKHR - Control how fragment shading rates are combined Descriptionwhere combine(Axy,Bxy) is the combine operation, and Axy and Bxy are the inputs to the operation.If  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-fragmentShadingRateStrictMultiplyCombiner)fragmentShadingRateStrictMultiplyCombiner is / , using l with values of 1 for both A and B in the same dimension results in the value 2 being produced for that dimension. See the definition of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-fragmentShadingRateStrictMultiplyCombiner)fragmentShadingRateStrictMultiplyCombiner for more information.;These operations are performed in a component-wise fashion.See Also, ,  , lvulkanVkPipelineFragmentShadingRateStateCreateInfoKHR - Structure specifying parameters controlling the fragment shading rate DescriptionIf the pNext chain of 8 includes a  structure, then that structure includes parameters that control the pipeline fragment shading rate."If this structure is not present,  fragmentSize; is considered to be equal to (1,1), and both elements of  combinerOps are considered to be equal to l.Valid Usage (Implicit)VUID-VkPipelineFragmentShadingRateStateCreateInfoKHR-sType-sType sType must be  VUID-VkPipelineFragmentShadingRateStateCreateInfoKHR-combinerOps-parameter Any given element of  combinerOps must be a valid  valueSee Alsov, , vulkanVkPhysicalDeviceFragmentShadingRatePropertiesKHR - Structure describing variable fragment shading rate limits that can be supported by an implementation DescriptionNoteMultiplication of the combiner rates using the fragment width/height in linear space is equivalent to an addition of those values in log2 space. Some implementations inadvertently implemented an addition in linear space due to unclear requirements originating outside of this specification. This resulted in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-fragmentShadingRateStrictMultiplyCombiner)fragmentShadingRateStrictMultiplyCombiner being added. Fortunately, this only affects situations where a rate of 1 in either dimension is combined with another rate of 1. All other combinations result in the exact same result as if multiplication was performed in linear space due to the clamping logic, and the fact that both the sum and product of 2 and 2 are equal. In many cases, this limit will not affect the correct operation of applications.If the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.!These properties are related to  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-primsrast-fragment-shading-ratefragment shading rates.Valid Usage (Implicit)See Alsoq, v, b, vulkanVkPhysicalDeviceFragmentShadingRateKHR - Structure returning information about sample count specific additional multisampling capabilitiesValid Usage (Implicit)See Alsov, c, , lvulkanVkPhysicalDeviceFragmentShadingRateFeaturesKHR - Structure indicating support for variable rate fragment shadingMembers0This structure describes the following features: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, vulkanVkFragmentShadingRateAttachmentInfoKHR - Structure specifying a fragment shading rate attachment for a subpass DescriptionIf no shading rate attachment is specified, or if this structure is not specified, the implementation behaves as if a valid shading rate attachment was specified with all texels specifying a single pixel per fragment. Valid UsageVUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04524 If pFragmentShadingRateAttachment is not NULL and its  attachment member is not , its layout member must be equal to  or VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04525 If pFragmentShadingRateAttachment is not NULL and its  attachment member is not , $shadingRateAttachmentTexelSize.width must be a power of two valueVUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04526 If pFragmentShadingRateAttachment is not NULL and its  attachment member is not , $shadingRateAttachmentTexelSize.width must$ be less than or equal to https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSize/maxFragmentShadingRateAttachmentTexelSize.widthVUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04527 If pFragmentShadingRateAttachment is not NULL and its  attachment member is not , $shadingRateAttachmentTexelSize.width must' be greater than or equal to https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minFragmentShadingRateAttachmentTexelSize/minFragmentShadingRateAttachmentTexelSize.widthVUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04528 If pFragmentShadingRateAttachment is not NULL and its  attachment member is not , %shadingRateAttachmentTexelSize.height must be a power of two valueVUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04529 If pFragmentShadingRateAttachment is not NULL and its  attachment member is not , %shadingRateAttachmentTexelSize.height must$ be less than or equal to https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSize0maxFragmentShadingRateAttachmentTexelSize.heightVUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04530 If pFragmentShadingRateAttachment is not NULL and its  attachment member is not , %shadingRateAttachmentTexelSize.height must' be greater than or equal to https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minFragmentShadingRateAttachmentTexelSize0minFragmentShadingRateAttachmentTexelSize.heightVUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04531 If pFragmentShadingRateAttachment is not NULL and its  attachment member is not , the quotient of $shadingRateAttachmentTexelSize.width and %shadingRateAttachmentTexelSize.height must$ be less than or equal to https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSizeAspectRatio4maxFragmentShadingRateAttachmentTexelSizeAspectRatioVUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04532 If pFragmentShadingRateAttachment is not NULL and its  attachment member is not , the quotient of %shadingRateAttachmentTexelSize.height and $shadingRateAttachmentTexelSize.width must$ be less than or equal to https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSizeAspectRatio4maxFragmentShadingRateAttachmentTexelSizeAspectRatioValid Usage (Implicit)7VUID-VkFragmentShadingRateAttachmentInfoKHR-sType-sType sType must be  VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-parameter If pFragmentShadingRateAttachment is not NULL, pFragmentShadingRateAttachment must) be a valid pointer to a valid  structureSee Also, v, lvulkan sampleCounts is a bitmask of sample counts for which the shading rate described by  fragmentSize is supported.lvulkan fragmentSize is a v> describing the width and height of a supported shading rate.lvulkan0limits-minFragmentShadingRateAttachmentTexelSize )minFragmentShadingRateAttachmentTexelSize indicates minimum supported width and height of the portion of the framebuffer corresponding to each texel in a fragment shading rate attachment. Each value must* be less than or equal to the values in )maxFragmentShadingRateAttachmentTexelSize . Each value must be a power-of-two. It must be (0,0) if the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRateattachmentFragmentShadingRate feature is not supported.lvulkan0limits-maxFragmentShadingRateAttachmentTexelSize )maxFragmentShadingRateAttachmentTexelSize indicates maximum supported width and height of the portion of the framebuffer corresponding to each texel in a fragment shading rate attachment. Each value must- be greater than or equal to the values in )minFragmentShadingRateAttachmentTexelSize . Each value must be a power-of-two. It must be (0,0) if the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRateattachmentFragmentShadingRate feature is not supported.lvulkan;limits-maxFragmentShadingRateAttachmentTexelSizeAspectRatio 4maxFragmentShadingRateAttachmentTexelSizeAspectRatio indicates the maximum ratio between the width and height of the portion of the framebuffer corresponding to each texel in a fragment shading rate attachment. 4maxFragmentShadingRateAttachmentTexelSizeAspectRatio must be a power-of-two value, and must be less than or equal to max(/maxFragmentShadingRateAttachmentTexelSize.width / 0minFragmentShadingRateAttachmentTexelSize.height, 0maxFragmentShadingRateAttachmentTexelSize.height / /minFragmentShadingRateAttachmentTexelSize.width). It must be 0 if the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRateattachmentFragmentShadingRate feature is not supported.lvulkan8limits-primitiveFragmentShadingRateWithMultipleViewports 1primitiveFragmentShadingRateWithMultipleViewports specifies whether the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitiveprimitive fragment shading rate can= be used when multiple viewports are used. If this value is /, only a single viewport must be used, and applications must not write to the ViewportMaskNV or  ViewportIndex built-in when setting PrimitiveShadingRateKHR. It must be / if the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderOutputViewportIndexshaderOutputViewportIndex feature, the  'VK_EXT_shader_viewport_index_layer.html"VK_EXT_shader_viewport_index_layer extension, or the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometryShader' feature is not supported, or if the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveFragmentShadingRateprimitiveFragmentShadingRate feature is not supported.lvulkan$limits-layeredShadingRateAttachments layeredShadingRateAttachments9 specifies whether a shading rate attachment image view can5 be created with multiple layers. If this value is /&, when creating an image view with a usage that includes  ,  layerCount must be 1. It must be / if the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiview multiview feature, the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderOutputViewportIndexshaderOutputViewportIndex feature, the  'VK_EXT_shader_viewport_index_layer.html"VK_EXT_shader_viewport_index_layer extension, or the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometryShader' feature is not supported, or if the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRateattachmentFragmentShadingRate feature is not supported.lvulkan/limits-fragmentShadingRateNonTrivialCombinerOps (fragmentShadingRateNonTrivialCombinerOps specifies whether  enums other than l or l can be used. It must be / unless either the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveFragmentShadingRateprimitiveFragmentShadingRate or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRateattachmentFragmentShadingRate feature is supported.lvulkanlimits-maxFragmentSize maxFragmentSize indicates the maximum supported width and height of a fragment. Its width and height members must both be power-of-two values. This limit is purely informational, and is not validated.lvulkan!limits-maxFragmentSizeAspectRatio maxFragmentSizeAspectRatio indicates the maximum ratio between the width and height of a fragment. maxFragmentSizeAspectRatio must be a power-of-two value, and must. be less than or equal to the maximum of the width and height members of maxFragmentSize<. This limit is purely informational, and is not validated.lvulkan,limits-maxFragmentShadingRateCoverageSamples %maxFragmentShadingRateCoverageSamples specifies the maximum number of coverage samples supported in a single fragment. %maxFragmentShadingRateCoverageSamples must. be less than or equal to the product of the width and height members of maxFragmentSize%, and the sample count reported by *maxFragmentShadingRateRasterizationSamples. %maxFragmentShadingRateCoverageSamples must be less than or equal to maxSampleMaskWords  32 if 'fragmentShadingRateWithShaderSampleMask is supported. This limit is purely informational, and is not validated.lvulkan1limits-maxFragmentShadingRateRasterizationSamples *maxFragmentShadingRateRasterizationSamples is a b value specifying the maximum sample rate supported when a fragment covers multiple pixels. This limit is purely informational, and is not validated.lvulkan6limits-fragmentShadingRateWithShaderDepthStencilWrites /fragmentShadingRateWithShaderDepthStencilWrites8 specifies whether the implementation supports writing  FragDepth or FragStencilRefEXT from a fragment shader for multi-pixel fragments. If this value is /, writing to those built-ins will clamp the fragment shading rate to (1,1).lvulkan(limits-fragmentShadingRateWithSampleMask !fragmentShadingRateWithSampleMask specifies whether the the implementation supports setting valid bits of 8:: pSampleMask to 0. for multi-pixel fragments. If this value is /, zeroing valid bits in the sample mask will clamp the fragment shading rate to (1,1).lvulkan.limits-fragmentShadingRateWithShaderSampleMask 'fragmentShadingRateWithShaderSampleMask specifies whether the implementation supports reading or writing / . for multi-pixel fragments. If this value is /, using that built-in will clamp the fragment shading rate to (1,1).lvulkan7limits-fragmentShadingRateWithConservativeRasterization 0fragmentShadingRateWithConservativeRasterization specifies whether  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-conservativerasterconservative rasterization- is supported for multi-pixel fragments. It must be / if  &VK_EXT_conservative_rasterization.html!VK_EXT_conservative_rasterization& is not supported. If this value is / , using  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-conservativerasterconservative rasterization0 will clamp the fragment shading rate to (1,1).lvulkan5limits-fragmentShadingRateWithFragmentShaderInterlock .fragmentShadingRateWithFragmentShaderInterlock specifies whether  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-fragment-shader-interlockfragment shader interlock- is supported for multi-pixel fragments. It must be / if  %VK_EXT_fragment_shader_interlock.html VK_EXT_fragment_shader_interlock& is not supported. If this value is / , using  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-fragment-shader-interlockfragment shader interlock0 will clamp the fragment shading rate to (1,1).lvulkan3limits-fragmentShadingRateWithCustomSampleLocations ,fragmentShadingRateWithCustomSampleLocations specifies whether  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primrast-samplelocationscustom sample locations. are supported for multi-pixel fragments. It must be / if  VK_EXT_sample_locations.htmlVK_EXT_sample_locations% is not supported. If this value is / , using  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primrast-samplelocationscustom sample locations0 will clamp the fragment shading rate to (1,1).lvulkan0limits-fragmentShadingRateStrictMultiplyCombiner )fragmentShadingRateStrictMultiplyCombiner specifies whether l accurately performs a multiplication or not. Implementations where this value is /2 will instead combine rates with an addition. If (fragmentShadingRateNonTrivialCombinerOps is /, implementations must report this as /. If (fragmentShadingRateNonTrivialCombinerOps is /, implementations should report this as /.lvulkan$features-pipelineFragmentShadingRate pipelineFragmentShadingRate2 indicates that the implementation supports the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-pipelinepipeline fragment shading rate.lvulkan%features-primitiveFragmentShadingRate primitiveFragmentShadingRate2 indicates that the implementation supports the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitiveprimitive fragment shading rate.lvulkan&features-attachmentFragmentShadingRate attachmentFragmentShadingRate2 indicates that the implementation supports the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment attachment fragment shading rate.lvulkan fragmentSize specifies a v structure containing the fragment size used to define the pipeline fragment shading rate for drawing commands using this pipeline.lvulkan combinerOps specifies a  value determining how the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-pipelinepipeline,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive primitive, and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachmentattachment shading rates are  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-combiningcombined for fragments generated by drawing commands using the created pipeline.lvulkanpFragmentShadingRateAttachment is NULL or a pointer to a  structure defining the fragment shading rate attachment for this subpass.lvulkanshadingRateAttachmentTexelSize specifies the size of the portion of the framebuffer corresponding to each texel in pFragmentShadingRateAttachment.lvulkanl? specifies a combiner operation of combine(Axy,Bxy) = Axy*Bxy.lvulkanl specifies a combiner operation of combine(Axy,Bxy) = max(Axy,Bxy).lvulkanl specifies a combiner operation of combine(Axy,Bxy) = min(Axy,Bxy).lvulkanl; specifies a combiner operation of combine(Axy,Bxy) = Bxy.lvulkanl; specifies a combiner operation of combine(Axy,Bxy) = Axy.lvulkanvkCmdSetFragmentShadingRateKHR - Set pipeline fragment shading rate dynamically Valid UsageVUID-vkCmdSetFragmentShadingRateKHR-pipelineFragmentShadingRate-04507 If  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRatepipelineFragmentShadingRate is not enabled, pFragmentSize->width must be 1 VUID-vkCmdSetFragmentShadingRateKHR-pipelineFragmentShadingRate-04508 If  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRatepipelineFragmentShadingRate is not enabled, pFragmentSize->height must be 1VUID-vkCmdSetFragmentShadingRateKHR-pipelineFragmentShadingRate-04509 One of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRatepipelineFragmentShadingRate,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveFragmentShadingRateprimitiveFragmentShadingRate, or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRateattachmentFragmentShadingRate must be enabledVUID-vkCmdSetFragmentShadingRateKHR-primitiveFragmentShadingRate-04510 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-primitiveFragmentShadingRate$primitiveFragmentShadingRate feature is not enabled,  combinerOps[0] must be lVUID-vkCmdSetFragmentShadingRateKHR-attachmentFragmentShadingRate-04511 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-attachmentFragmentShadingRate%attachmentFragmentShadingRate feature is not enabled,  combinerOps[1] must be lVUID-vkCmdSetFragmentShadingRateKHR-fragmentSizeNonTrivialCombinerOps-04512 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-fragmentShadingRateNonTrivialCombinerOps!fragmentSizeNonTrivialCombinerOps* limit is not supported, elements of  combinerOps must be either l or l7VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04513 pFragmentSize->width must be greater than or equal to 17VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04514 pFragmentSize->height must be greater than or equal to 17VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04515 pFragmentSize->width must be a power-of-two value7VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04516 pFragmentSize->height must be a power-of-two value7VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04517 pFragmentSize->width must be less than or equal to 47VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04518 pFragmentSize->height must be less than or equal to 4Valid Usage (Implicit);VUID-vkCmdSetFragmentShadingRateKHR-commandBuffer-parameter  commandBuffer must be a valid  handle;VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-parameter  pFragmentSize must$ be a valid pointer to a valid v structure9VUID-vkCmdSetFragmentShadingRateKHR-combinerOps-parameter Any given element of  combinerOps must be a valid  value;VUID-vkCmdSetFragmentShadingRateKHR-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state9VUID-vkCmdSetFragmentShadingRateKHR-commandBuffer-cmdpool The 0  that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the 0  that  commandBuffer was allocated from must be externally synchronizedCommand Properties' https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue TypesPrimary SecondaryBoth  Graphics See Also, v, lvulkanvkGetPhysicalDeviceFragmentShadingRatesKHR - Get available shading rates for a physical device DescriptionIf pFragmentShadingRates is NULL, then the number of fragment shading rates available is returned in pFragmentShadingRateCount. Otherwise, pFragmentShadingRateCount must point to a variable set by the user to the number of elements in the pFragmentShadingRates array, and on return the variable is overwritten with the number of structures actually written to pFragmentShadingRates. If pFragmentShadingRateCount is less than the number of fragment shading rates available, at most pFragmentShadingRateCount" structures will be written, and  will be returned instead of , to indicate that not all the available fragment shading rates were returned.-The returned array of fragment shading rates must be ordered from largest fragmentSize.width value to smallest, and each set of fragment shading rates with the same fragmentSize.width value must be ordered from largest fragmentSize.height, to smallest. Any two entries in the array must not have the same  fragmentSize values.;For any entry in the array, the following rules also apply: The value of fragmentSize.width must be less than or equal to  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentSizemaxFragmentSize.width. The value of fragmentSize.width must" be greater than or equal to 1. The value of fragmentSize.width must be a power-of-two. The value of fragmentSize.height must be less than or equal to  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentSizemaxFragmentSize.height. The value of fragmentSize.height must" be greater than or equal to 1. The value of fragmentSize.height must be a power-of-two.The highest sample count in  sampleCounts must$ be less than or equal to  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentShadingRateRasterizationSamples*maxFragmentShadingRateRasterizationSamples.The product of fragmentSize.width, fragmentSize.height', and the highest sample count in  sampleCounts must$ be less than or equal to  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentShadingRateCoverageSamples%maxFragmentShadingRateCoverageSamples.Implementations must. support at least the following shading rates: sampleCounts fragmentSize& | &{2,2} & | &{2,1} ~0{1,1}If  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-framebufferColorSampleCountsframebufferColorSampleCounts , includes &, the required rates must also include &.NoteIncluding the {1,1} fragment size is done for completeness; it has no actual effect on the support of rendering without setting the fragment size. All sample counts and render pass transforms are supported for this rate.+The returned set of fragment shading rates must be returned in the native (rotated) coordinate system. For rasterization using render pass  transform not equal to , the application must transform the returned fragment shading rates into the current (unrotated) coordinate system to get the supported rates for that transform.NoteFor example, consider an implementation returning support for 4x2, but not 2x4 in the set of supported fragment shading rates. This means that for transforms  and ;, 2x4 is a supported rate, but 4x2 is an unsupported rate.Valid Usage (Implicit)VUID-vkGetPhysicalDeviceFragmentShadingRatesKHR-physicalDevice-parameter physicalDevice must be a valid  handleVUID-vkGetPhysicalDeviceFragmentShadingRatesKHR-pFragmentShadingRateCount-parameter pFragmentShadingRateCount must be a valid pointer to a uint32_t valueVUID-vkGetPhysicalDeviceFragmentShadingRatesKHR-pFragmentShadingRates-parameter! If the value referenced by pFragmentShadingRateCount is not 0 , and pFragmentShadingRates is not NULL, pFragmentShadingRates must# be a valid pointer to an array of pFragmentShadingRateCount  structures Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, lvulkan commandBuffer is the command buffer into which the command will be recorded.vulkan pFragmentSize specifies the pipeline fragment shading rate for subsequent drawing commands.vulkan combinerOps specifies a  determining how the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-pipelinepipeline,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive primitive, and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachmentattachment shading rates are  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-combiningcombined9 for fragments generated by subsequent drawing commands.lvulkanphysicalDevice is the handle to the physical device whose properties will be queried.1lllllllllllllllllllllllllllllllllllllllllll6llllllllllllllllllllllllllllllllllllllllllllllllNone( #$&'(./0289:<>?=$ vulkanVkFragmentShadingRateNV - Enumeration with fragment shading rates DescriptionTo use the shading rates m, m, m, and m= as a pipeline, primitive, or attachment shading rate, the supersampleFragmentShadingRates feature must& be enabled. To use the shading rate m= as a pipeline, primitive, or attachment shading rate, the  noInvocationFragmentShadingRates feature must be enabled.See Also, mvulkanVkPipelineFragmentShadingRateEnumStateCreateInfoNV - Structure specifying parameters controlling the fragment shading rate using rate enums DescriptionIf the pNext chain of 8 includes a  structure, then that structure includes parameters that control the pipeline fragment shading rate."If this structure is not present, shadingRateType is considered to be equal to m,  shadingRate is considered to be equal to m, and both elements of  combinerOps are considered to be equal to l.Valid Usage (Implicit)VUID-VkPipelineFragmentShadingRateEnumStateCreateInfoNV-sType-sType sType must be  VUID-VkPipelineFragmentShadingRateEnumStateCreateInfoNV-shadingRateType-parameter shadingRateType must be a valid m valueVUID-VkPipelineFragmentShadingRateEnumStateCreateInfoNV-shadingRate-parameter  shadingRate must be a valid  valueVUID-VkPipelineFragmentShadingRateEnumStateCreateInfoNV-combinerOps-parameter Any given element of  combinerOps must be a valid  valueSee Also, , m, vulkanVkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV - Structure describing fragment shading rate limits that can be supported by an implementation DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.!These properties are related to  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-primsrast-fragment-shading-ratefragment shading rates.Valid Usage (Implicit)See Alsob, vulkanVkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV - Structure indicating support for fragment shading rate enumsMembers0This structure describes the following features: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, mvulkanVkFragmentShadingRateTypeNV - Enumeration with fragment shading rate typesSee AlsomvulkanshadingRateType specifies a m value indicating whether fragment shading rates are specified using fragment sizes or  enums.mvulkan shadingRate specifies a 6 value indicating the pipeline fragment shading rate.mvulkan combinerOps specifies  values determining how the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-pipelinepipeline,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive primitive, and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachmentattachment shading rates are  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-combiningcombined for fragments generated by drawing commands using the created pipeline.mvulkan,limits-maxFragmentShadingRateInvocationCount %maxFragmentShadingRateInvocationCount is a b value indicating the maximum number of fragment shader invocations per fragment supported in pipeline, primitive, and attachment fragment shading rates.VUID-VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV-maxFragmentShadingRateInvocationCount-parameter %maxFragmentShadingRateInvocationCount must be a valid b valuemvulkan!features-fragmentShadingRateEnums fragmentShadingRateEnums indicates that the implementation supports specifying fragment shading rates using the  enumerated type.mvulkan(features-supersampleFragmentShadingRates supersampleFragmentShadingRates indicates that the implementation supports fragment shading rate enum values indicating more than one invocation per fragment.mvulkan)features-noInvocationFragmentShadingRates  noInvocationFragmentShadingRates indicates that the implementation supports a fragment shading rate enum value indicating that no fragment shaders should be invoked when that shading rate is used.mvulkanm specifies that a graphics pipeline should obtain its pipeline fragment shading rate and shading rate combiner state from the 1 structure and that any state specified by the  structure should be ignored.mvulkanm specifies that a graphics pipeline should obtain its pipeline fragment shading rate and shading rate combiner state from the 1 structure and that any state specified by the  structure should be ignored.mvulkanm specifies that any portions of a primitive that use that shading rate should be discarded without invoking any fragment shader.mvulkanm specifies a fragment size of 1x1 pixels, with sixteen fragment shader invocations per fragment.mvulkanm specifies a fragment size of 1x1 pixels, with eight fragment shader invocations per fragment.mvulkanm specifies a fragment size of 1x1 pixels, with four fragment shader invocations per fragment.mvulkanm specifies a fragment size of 1x1 pixels, with two fragment shader invocations per fragment.mvulkanm* specifies a fragment size of 4x4 pixels.mvulkanm* specifies a fragment size of 4x2 pixels.mvulkanm* specifies a fragment size of 2x4 pixels.mvulkanm* specifies a fragment size of 2x2 pixels.mvulkanm* specifies a fragment size of 2x1 pixels.mvulkanm* specifies a fragment size of 1x2 pixels.mvulkanm* specifies a fragment size of 1x1 pixels.mvulkanvkCmdSetFragmentShadingRateEnumNV - Set pipeline fragment shading rate dynamically using enums Valid UsageVUID-vkCmdSetFragmentShadingRateEnumNV-pipelineFragmentShadingRate-04576 If  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRatepipelineFragmentShadingRate is not enabled,  shadingRate must be mVUID-vkCmdSetFragmentShadingRateEnumNV-supersampleFragmentShadingRates-04577 If  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-supersampleFragmentShadingRatessupersampleFragmentShadingRates is not enabled,  shadingRate must not be m, m, m , or mVUID-vkCmdSetFragmentShadingRateEnumNV-noInvocationFragmentShadingRates-04578 If  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-noInvocationFragmentShadingRates noInvocationFragmentShadingRates is not enabled,  shadingRate must not be mVUID-vkCmdSetFragmentShadingRateEnumNV-fragmentShadingRateEnums-04579  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentShadingRateEnumsfragmentShadingRateEnums must be enabledVUID-vkCmdSetFragmentShadingRateEnumNV-pipelineFragmentShadingRate-04580 One of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRatepipelineFragmentShadingRate,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveFragmentShadingRateprimitiveFragmentShadingRate, or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRateattachmentFragmentShadingRate must be enabledVUID-vkCmdSetFragmentShadingRateEnumNV-primitiveFragmentShadingRate-04581 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-primitiveFragmentShadingRate$primitiveFragmentShadingRate feature is not enabled,  combinerOps[0] must be lVUID-vkCmdSetFragmentShadingRateEnumNV-attachmentFragmentShadingRate-04582 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-attachmentFragmentShadingRate%attachmentFragmentShadingRate feature is not enabled,  combinerOps[1] must be lVUID-vkCmdSetFragmentShadingRateEnumNV-fragmentSizeNonTrivialCombinerOps-04583 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-fragmentShadingRateNonTrivialCombinerOps!fragmentSizeNonTrivialCombinerOps* limit is not supported, elements of  combinerOps must be either l or lValid Usage (Implicit)>VUID-vkCmdSetFragmentShadingRateEnumNV-commandBuffer-parameter  commandBuffer must be a valid  handleVUID-vkCmdSetFragmentShadingRateEnumNV-commandBuffer-recording  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording statemmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmlllllllllllNone( #$&'(./0289:<>?=%ImmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmeNone( #$&'(./0289:<>?=@ vulkanVkSubpassDescriptionDepthStencilResolve - Structure specifying depth/stencil resolve operations for a subpass Valid UsageVUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03177 If pDepthStencilResolveAttachment is not NULL" and does not have the value , pDepthStencilAttachment must not have the value  VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03178 If pDepthStencilResolveAttachment is not NULL" and does not have the value , depthResolveMode and stencilResolveMode must not both be VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03179 If pDepthStencilResolveAttachment is not NULL" and does not have the value , pDepthStencilAttachment must! not have a sample count of &VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03180 If pDepthStencilResolveAttachment is not NULL" and does not have the value , pDepthStencilResolveAttachment must have a sample count of &VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-02651 If pDepthStencilResolveAttachment is not NULL" and does not have the value  then it must! have an image format whose  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-featurespotential format features contain VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03181 If the  of pDepthStencilResolveAttachment& has a depth component, then the  of pDepthStencilAttachment must have a depth component with the same number of bits and numerical typeVUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03182 If the  of pDepthStencilResolveAttachment( has a stencil component, then the  of pDepthStencilAttachment must have a stencil component with the same number of bits and numerical typeVUID-VkSubpassDescriptionDepthStencilResolve-depthResolveMode-03183 The value of depthResolveMode must be one of the bits set in ::supportedDepthResolveModes or VUID-VkSubpassDescriptionDepthStencilResolve-stencilResolveMode-03184 The value of stencilResolveMode must be one of the bits set in ::supportedStencilResolveModes or VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03185 If the  of pDepthStencilResolveAttachment2 has both depth and stencil components, ::independentResolve is / , and ::independentResolveNone is /, then the values of depthResolveMode and stencilResolveMode must be identicalVUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03186 If the  of pDepthStencilResolveAttachment2 has both depth and stencil components, ::independentResolve is / and ::independentResolveNone is /, then the values of depthResolveMode and stencilResolveMode must" be identical or one of them must be VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-04588 If the  of pDepthStencilResolveAttachment has a depth component, depthResolveMode must be a valid  valueVUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-04589 If the  of pDepthStencilResolveAttachment has a stencil component, stencilResolveMode must be a valid  valueValid Usage (Implicit)8VUID-VkSubpassDescriptionDepthStencilResolve-sType-sType sType must be  VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-parameter If pDepthStencilResolveAttachment is not NULL, pDepthStencilResolveAttachment must) be a valid pointer to a valid  structureSee Also, , vulkanVkPhysicalDeviceDepthStencilResolveProperties - Structure describing depth/stencil resolve properties that can be supported by an implementation DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.Valid Usage (Implicit)See Alsoq, , mvulkandepthResolveMode is a * value describing the depth resolve mode.mvulkanstencilResolveMode is a , value describing the stencil resolve mode.mvulkanpDepthStencilResolveAttachment is NULL or a pointer to a  structure defining the depth/stencil resolve attachment for this subpass and its layout.mvulkan$extension-features-depthResolveModes supportedDepthResolveModes is a bitmask of 8 indicating the set of supported depth resolve modes.  must, be included in the set but implementations may support additional modes.mvulkan&extension-features-stencilResolveModes supportedStencilResolveModes is a bitmask of : indicating the set of supported stencil resolve modes.  must, be included in the set but implementations may support additional modes.  must not be included in the set.mvulkan)extension-features-independentResolveNone independentResolveNone is / if the implementation supports setting the depth and stencil resolve modes to different values when one of those modes is . Otherwise the implementation only supports setting both modes to the same value.mvulkan%extension-features-independentResolve independentResolve is / if the implementation supports all combinations of the supported depth and stencil resolve modes, including setting either depth or stencil resolve mode to #. An implementation that supports independentResolve must also support independentResolveNone.mmmmmmmmm mmmmmmmmm  None( #$&'(./0289:<>?=Mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm\None( #$&'(./0289:<>?> vulkanVkPhysicalDeviceVulkan12Properties - Structure specifying physical device properties for functionality promoted to Vulkan 1.2 DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.8These properties correspond to Vulkan 1.2 functionality.The members of  must8 have the same values as the corresponding members of , , , , , and .Valid Usage (Implicit)See Alsoq, , , , c, , vulkanVkPhysicalDeviceVulkan12Features - Structure describing the Vulkan 1.2 features that can be supported by an implementationMembers0This structure describes the following features: DescriptionsType is the type of this structure.0pNext is NULL; or a pointer to a structure extending this structure.!features-samplerMirrorClampToEdge samplerMirrorClampToEdge= indicates whether the implementation supports the  sampler address mode. If this feature is not enabled, the  sampler address mode must not be used.features-drawIndirectCount drawIndirectCount= indicates whether the implementation supports the = and = functions. If this feature is not enabled, these functions must not be used. features-storageBuffer8BitAccess storageBuffer8BitAccess' indicates whether objects in the  StorageBuffer, ShaderRecordBufferKHR, or PhysicalStorageBuffer storage class with the Block decoration can have 8-bit integer members. If this feature is not enabled, 8-bit integer members must not be used in such objects. This also indicates whether shader modules can declare the StorageBuffer8BitAccess capability.*features-uniformAndStorageBuffer8BitAccess !uniformAndStorageBuffer8BitAccess' indicates whether objects in the Uniform storage class with the Block decoration can have 8-bit integer members. If this feature is not enabled, 8-bit integer members must not be used in such objects. This also indicates whether shader modules can declare the !UniformAndStorageBuffer8BitAccess capability.features-storagePushConstant8 storagePushConstant8' indicates whether objects in the  PushConstant storage class can have 8-bit integer members. If this feature is not enabled, 8-bit integer members must not be used in such objects. This also indicates whether shader modules can declare the StoragePushConstant8 capability.!features-shaderBufferInt64Atomics shaderBufferInt64Atomics indicates whether shaders can perform 64-bit unsigned and signed integer atomic operations on buffers.!features-shaderSharedInt64Atomics shaderSharedInt64Atomics indicates whether shaders can perform 64-bit unsigned and signed integer atomic operations on shared memory.features-shaderFloat16  shaderFloat16 indicates whether 16-bit floats (halfs) are supported in shader code. This also indicates whether shader modules can declare the Float16 capability. However, this only enables a subset of the storage classes that SPIR-V allows for the Float16 SPIR-V capability: Declaring and using 16-bit floats in the Private,  Workgroup% (for non-Block variables), and Function storage classes is enabled, while declaring them in the interface storage classes (e.g., UniformConstant, Uniform,  StorageBuffer, Input, Output , and  PushConstant) is not enabled.features-shaderInt8  shaderInt8 indicates whether 8-bit integers (signed and unsigned) are supported in shader code. This also indicates whether shader modules can declare the Int8 capability. However, this only enables a subset of the storage classes that SPIR-V allows for the Int8 SPIR-V capability: Declaring and using 8-bit integers in the Private,  Workgroup% (for non-Block variables), and Function storage classes is enabled, while declaring them in the interface storage classes (e.g., UniformConstant, Uniform,  StorageBuffer, Input, Output, and  PushConstant) is not enabled.features-descriptorIndexing descriptorIndexing indicates whether the implementation supports the minimum set of descriptor indexing features as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-requirementsFeature Requirements section. Enabling the descriptorIndexing member when   is called does not imply the other minimum descriptor indexing features are also enabled. Those other descriptor indexing features must; be enabled individually as needed by the application.2features-shaderInputAttachmentArrayDynamicIndexing )shaderInputAttachmentArrayDynamicIndexing4 indicates whether arrays of input attachments can be indexed by dynamically uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of   must be indexed only by constant integral expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the #InputAttachmentArrayDynamicIndexing capability.5features-shaderUniformTexelBufferArrayDynamicIndexing ,shaderUniformTexelBufferArrayDynamicIndexing8 indicates whether arrays of uniform texel buffers can be indexed by dynamically uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of   must be indexed only by constant integral expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the &UniformTexelBufferArrayDynamicIndexing capability.5features-shaderStorageTexelBufferArrayDynamicIndexing ,shaderStorageTexelBufferArrayDynamicIndexing8 indicates whether arrays of storage texel buffers can be indexed by dynamically uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of   must be indexed only by constant integral expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the &StorageTexelBufferArrayDynamicIndexing capability.3features-shaderUniformBufferArrayNonUniformIndexing *shaderUniformBufferArrayNonUniformIndexing2 indicates whether arrays of uniform buffers can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of   or   must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the $UniformBufferArrayNonUniformIndexing capability.2features-shaderSampledImageArrayNonUniformIndexing )shaderSampledImageArrayNonUniformIndexing= indicates whether arrays of samplers or sampled images can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of  ,  , or   must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the #SampledImageArrayNonUniformIndexing capability.3features-shaderStorageBufferArrayNonUniformIndexing *shaderStorageBufferArrayNonUniformIndexing2 indicates whether arrays of storage buffers can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of   or   must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the $StorageBufferArrayNonUniformIndexing capability.2features-shaderStorageImageArrayNonUniformIndexing )shaderStorageImageArrayNonUniformIndexing1 indicates whether arrays of storage images can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of   must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the #StorageImageArrayNonUniformIndexing capability.5features-shaderInputAttachmentArrayNonUniformIndexing ,shaderInputAttachmentArrayNonUniformIndexing4 indicates whether arrays of input attachments can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of   must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the &InputAttachmentArrayNonUniformIndexing capability.8features-shaderUniformTexelBufferArrayNonUniformIndexing /shaderUniformTexelBufferArrayNonUniformIndexing8 indicates whether arrays of uniform texel buffers can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of   must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the )UniformTexelBufferArrayNonUniformIndexing capability.8features-shaderStorageTexelBufferArrayNonUniformIndexing /shaderStorageTexelBufferArrayNonUniformIndexing8 indicates whether arrays of storage texel buffers can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of   must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the )StorageTexelBufferArrayNonUniformIndexing capability.6features-descriptorBindingUniformBufferUpdateAfterBind -descriptorBindingUniformBufferUpdateAfterBind indicates whether the implementation supports updating uniform buffer descriptors after a set is bound. If this feature is not enabled,  must not be used with  .5features-descriptorBindingSampledImageUpdateAfterBind ,descriptorBindingSampledImageUpdateAfterBind indicates whether the implementation supports updating sampled image descriptors after a set is bound. If this feature is not enabled,  must not be used with  ,  , or  .5features-descriptorBindingStorageImageUpdateAfterBind ,descriptorBindingStorageImageUpdateAfterBind indicates whether the implementation supports updating storage image descriptors after a set is bound. If this feature is not enabled,  must not be used with  .6features-descriptorBindingStorageBufferUpdateAfterBind -descriptorBindingStorageBufferUpdateAfterBind indicates whether the implementation supports updating storage buffer descriptors after a set is bound. If this feature is not enabled,  must not be used with  .;features-descriptorBindingUniformTexelBufferUpdateAfterBind 2descriptorBindingUniformTexelBufferUpdateAfterBind indicates whether the implementation supports updating uniform texel buffer descriptors after a set is bound. If this feature is not enabled,  must not be used with  .;features-descriptorBindingStorageTexelBufferUpdateAfterBind 2descriptorBindingStorageTexelBufferUpdateAfterBind indicates whether the implementation supports updating storage texel buffer descriptors after a set is bound. If this feature is not enabled,  must not be used with  .2features-descriptorBindingUpdateUnusedWhilePending )descriptorBindingUpdateUnusedWhilePending indicates whether the implementation supports updating descriptors while the set is in use. If this feature is not enabled,  must not be used.(features-descriptorBindingPartiallyBound descriptorBindingPartiallyBound indicates whether the implementation supports statically using a descriptor set binding in which some descriptors are not valid. If this feature is not enabled,  must not be used.1features-descriptorBindingVariableDescriptorCount (descriptorBindingVariableDescriptorCount indicates whether the implementation supports descriptor sets with a variable-sized last binding. If this feature is not enabled,  must not be used.features-runtimeDescriptorArray runtimeDescriptorArray indicates whether the implementation supports the SPIR-V RuntimeDescriptorArray> capability. If this feature is not enabled, descriptors must# not be declared in runtime arrays.features-samplerFilterMinmax samplerFilterMinmax indicates whether the implementation supports a minimum set of required formats supporting min/max filtering as defined by the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-filterMinmaxSingleComponentFormats-minimum-requirements"filterMinmaxSingleComponentFormats property minimum requirements. If this feature is not enabled, then no > pNext chain can include a  structure.features-scalarBlockLayout scalarBlockLayout indicates that the implementation supports the layout of resource blocks in shaders using  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-alignment-requirementsscalar alignment.features-imagelessFramebuffer imagelessFramebuffer indicates that the implementation supports specifying the image view for attachments at render pass begin time via .$features-uniformBufferStandardLayout uniformBufferStandardLayout indicates that the implementation supports the same layouts for uniform buffers as for storage and other kinds of buffers. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources-standard-layoutStandard Buffer Layout. features-subgroup-extended-types shaderSubgroupExtendedTypes is a boolean that specifies whether subgroup operations can use 8-bit integer, 16-bit integer, 64-bit integer, 16-bit floating-point, and vectors of these types in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-group-operationsgroup operations with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-scope-subgroupsubgroup scope0, if the implementation supports the types.$features-separateDepthStencilLayouts separateDepthStencilLayouts; indicates whether the implementation supports a 66 for a depth/stencil image with only one of   or   set, and whether , , , or  can be used.features-hostQueryReset hostQueryReset indicates that the implementation supports resetting queries from the host with >.features-timelineSemaphore timelineSemaphore7 indicates whether semaphores created with a   of   are supported.features-bufferDeviceAddress bufferDeviceAddress indicates that the implementation supports accessing buffer memory in shaders as storage buffers via an address queried from =.)features-bufferDeviceAddressCaptureReplay  bufferDeviceAddressCaptureReplay indicates that the implementation supports saving and reusing buffer and device addresses, e.g. for trace capture and replay.'features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice5 indicates that the implementation supports the bufferDeviceAddress , rayTracingPipeline and rayQuery features for logical devices created with multiple physical devices. If this feature is not supported, buffer and acceleration structure addresses must not be queried on a logical device created with more than one physical device.features-vulkanMemoryModel vulkanMemoryModel indicates whether the Vulkan Memory Model is supported, as defined in  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-modelVulkan Memory Model2. This also indicates whether shader modules can declare the VulkanMemoryModel capability.%features-vulkanMemoryModelDeviceScope vulkanMemoryModelDeviceScope8 indicates whether the Vulkan Memory Model can use 0 scope synchronization. This also indicates whether shader modules can declare the VulkanMemoryModelDeviceScope capability.6features-vulkanMemoryModelAvailabilityVisibilityChains -vulkanMemoryModelAvailabilityVisibilityChains= indicates whether the Vulkan Memory Model can use  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-model-availability-visibility"availability and visibility chains! with more than one element."features-shaderOutputViewportIndex shaderOutputViewportIndex= indicates whether the implementation supports the ShaderViewportIndex> SPIR-V capability enabling variables decorated with the  ViewportIndex built-in to be exported from vertex or tessellation evaluation shaders. If this feature is not enabled, the  ViewportIndex built-in decoration must not be used on outputs in vertex or tessellation evaluation shaders.features-shaderOutputLayer shaderOutputLayer8 indicates whether the implementation supports the  ShaderLayer> SPIR-V capability enabling variables decorated with the Layer built-in to be exported from vertex or tessellation evaluation shaders. If this feature is not enabled, the Layer built-in decoration must not be used on outputs in vertex or tessellation evaluation shaders.#features-subgroupBroadcastDynamicId If subgroupBroadcastDynamicId is /, the @Id@ operand of OpGroupNonUniformBroadcast can be dynamically uniform within a subgroup, and the @Index@ operand of OpGroupNonUniformQuadBroadcast can be dynamically uniform within the derivative group. If it is /, these operands must be constants.If the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)1VUID-VkPhysicalDeviceVulkan12Features-sType-sType sType must be  See Alsoq, vulkanVkPhysicalDeviceVulkan11Properties - Structure specifying physical device properties for functionality promoted to Vulkan 1.1 DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in with each corresponding implementation-dependent property.8These properties correspond to Vulkan 1.1 functionality.The members of 8 have the same values as the corresponding members of Q, F, V, X, E, and W.Valid Usage (Implicit)See Alsoq, o, , e, , vulkanVkPhysicalDeviceVulkan11Features - Structure describing the Vulkan 1.1 features that can be supported by an implementationMembers0This structure describes the following features: DescriptionIf the  structure is included in the pNext chain of the U structure passed to U, it is filled in to indicate whether each corresponding feature is supported.  can also be used in the pNext chain of  ' to selectively enable these features.Valid Usage (Implicit)See Alsoq, mvulkandriverID> is a unique identifier for the driver of the physical device.mvulkan driverName is an array of , char containing a null-terminated UTF-8 string which is the name of the driver.mvulkan driverInfo is an array of , char containing a null-terminated UTF-8 string with additional information about the driver.mvulkanconformanceVersion is the version of the Vulkan conformance test this driver is conformant against (see ).nvulkan#features-denormBehaviorIndependence denormBehaviorIndependence is a  value indicating whether, and how, denorm behavior can be set independently for different bit widths.nvulkan!features-roundingModeIndependence roundingModeIndependence is a  value indicating whether, and how, rounding modes can be set independently for different bit widths.nvulkan,limits-shaderSignedZeroInfNanPreserveFloat16 %shaderSignedZeroInfNanPreserveFloat16 is a boolean value indicating whether sign of a zero, Nans and  \pm\infty can be preserved in 16-bit floating-point computations. It also indicates whether the SignedZeroInfNanPreserve execution mode can* be used for 16-bit floating-point types.nvulkan,limits-shaderSignedZeroInfNanPreserveFloat32 %shaderSignedZeroInfNanPreserveFloat32 is a boolean value indicating whether sign of a zero, Nans and  \pm\infty can be preserved in 32-bit floating-point computations. It also indicates whether the SignedZeroInfNanPreserve execution mode can* be used for 32-bit floating-point types.nvulkan,limits-shaderSignedZeroInfNanPreserveFloat64 %shaderSignedZeroInfNanPreserveFloat64 is a boolean value indicating whether sign of a zero, Nans and  \pm\infty can be preserved in 64-bit floating-point computations. It also indicates whether the SignedZeroInfNanPreserve execution mode can* be used for 64-bit floating-point types.nvulkan"limits-shaderDenormPreserveFloat16 shaderDenormPreserveFloat162 is a boolean value indicating whether denormals can be preserved in 16-bit floating-point computations. It also indicates whether the DenormPreserve execution mode can* be used for 16-bit floating-point types.nvulkan"limits-shaderDenormPreserveFloat32 shaderDenormPreserveFloat322 is a boolean value indicating whether denormals can be preserved in 32-bit floating-point computations. It also indicates whether the DenormPreserve execution mode can* be used for 32-bit floating-point types.nvulkan"limits-shaderDenormPreserveFloat64 shaderDenormPreserveFloat642 is a boolean value indicating whether denormals can be preserved in 64-bit floating-point computations. It also indicates whether the DenormPreserve execution mode can* be used for 64-bit floating-point types.nvulkan%limits-shaderDenormFlushToZeroFloat16 shaderDenormFlushToZeroFloat162 is a boolean value indicating whether denormals can be flushed to zero in 16-bit floating-point computations. It also indicates whether the DenormFlushToZero execution mode can* be used for 16-bit floating-point types.nvulkan%limits-shaderDenormFlushToZeroFloat32 shaderDenormFlushToZeroFloat322 is a boolean value indicating whether denormals can be flushed to zero in 32-bit floating-point computations. It also indicates whether the DenormFlushToZero execution mode can* be used for 32-bit floating-point types.nvulkan%limits-shaderDenormFlushToZeroFloat64 shaderDenormFlushToZeroFloat642 is a boolean value indicating whether denormals can be flushed to zero in 64-bit floating-point computations. It also indicates whether the DenormFlushToZero execution mode can* be used for 64-bit floating-point types.nvulkan#limits-shaderRoundingModeRTEFloat16 shaderRoundingModeRTEFloat16 is a boolean value indicating whether an implementation supports the round-to-nearest-even rounding mode for 16-bit floating-point arithmetic and conversion instructions. It also indicates whether the RoundingModeRTE execution mode can* be used for 16-bit floating-point types.nvulkan#limits-shaderRoundingModeRTEFloat32 shaderRoundingModeRTEFloat32 is a boolean value indicating whether an implementation supports the round-to-nearest-even rounding mode for 32-bit floating-point arithmetic and conversion instructions. It also indicates whether the RoundingModeRTE execution mode can* be used for 32-bit floating-point types.nvulkan#limits-shaderRoundingModeRTEFloat64 shaderRoundingModeRTEFloat64 is a boolean value indicating whether an implementation supports the round-to-nearest-even rounding mode for 64-bit floating-point arithmetic and conversion instructions. It also indicates whether the RoundingModeRTE execution mode can* be used for 64-bit floating-point types.nvulkan#limits-shaderRoundingModeRTZFloat16 shaderRoundingModeRTZFloat16 is a boolean value indicating whether an implementation supports the round-towards-zero rounding mode for 16-bit floating-point arithmetic and conversion instructions. It also indicates whether the RoundingModeRTZ execution mode can* be used for 16-bit floating-point types.nvulkan#limits-shaderRoundingModeRTZFloat32 shaderRoundingModeRTZFloat32 is a boolean value indicating whether an implementation supports the round-towards-zero rounding mode for 32-bit floating-point arithmetic and conversion instructions. It also indicates whether the RoundingModeRTZ execution mode can* be used for 32-bit floating-point types.nvulkan#limits-shaderRoundingModeRTZFloat64 shaderRoundingModeRTZFloat64 is a boolean value indicating whether an implementation supports the round-towards-zero rounding mode for 64-bit floating-point arithmetic and conversion instructions. It also indicates whether the RoundingModeRTZ execution mode can* be used for 64-bit floating-point types.nvulkan.limits-maxUpdateAfterBindDescriptorsInAllPools 'maxUpdateAfterBindDescriptorsInAllPools is the maximum number of descriptors (summed over all descriptor types) that can9 be created across all pools that are created with the   bit set. Pool creation may fail when this limit is exceeded, or when the space this limit represents is unable to satisfy a pool creation due to fragmentation.nvulkan7limits-shaderUniformBufferArrayNonUniformIndexingNative 0shaderUniformBufferArrayNonUniformIndexingNative is a boolean value indicating whether uniform buffer descriptors natively support nonuniform indexing. If this is /, then a single dynamic instance of an instruction that nonuniformly indexes an array of uniform buffers may execute multiple times in order to access all the descriptors.nvulkan6limits-shaderSampledImageArrayNonUniformIndexingNative /shaderSampledImageArrayNonUniformIndexingNative is a boolean value indicating whether sampler and image descriptors natively support nonuniform indexing. If this is /, then a single dynamic instance of an instruction that nonuniformly indexes an array of samplers or images may execute multiple times in order to access all the descriptors.nvulkan7limits-shaderStorageBufferArrayNonUniformIndexingNative 0shaderStorageBufferArrayNonUniformIndexingNative is a boolean value indicating whether storage buffer descriptors natively support nonuniform indexing. If this is /, then a single dynamic instance of an instruction that nonuniformly indexes an array of storage buffers may execute multiple times in order to access all the descriptors.nvulkan6limits-shaderStorageImageArrayNonUniformIndexingNative /shaderStorageImageArrayNonUniformIndexingNative is a boolean value indicating whether storage image descriptors natively support nonuniform indexing. If this is /, then a single dynamic instance of an instruction that nonuniformly indexes an array of storage images may execute multiple times in order to access all the descriptors.nvulkan9limits-shaderInputAttachmentArrayNonUniformIndexingNative 2shaderInputAttachmentArrayNonUniformIndexingNative is a boolean value indicating whether input attachment descriptors natively support nonuniform indexing. If this is /, then a single dynamic instance of an instruction that nonuniformly indexes an array of input attachments may execute multiple times in order to access all the descriptors.nvulkan(limits-robustBufferAccessUpdateAfterBind !robustBufferAccessUpdateAfterBind) is a boolean value indicating whether  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobustBufferAccess can- be enabled in a device simultaneously with -descriptorBindingUniformBufferUpdateAfterBind, -descriptorBindingStorageBufferUpdateAfterBind, 2descriptorBindingUniformTexelBufferUpdateAfterBind , and/or 2descriptorBindingStorageTexelBufferUpdateAfterBind. If this is /, then either robustBufferAccess must8 be disabled or all of these update-after-bind features must be disabled.nvulkanlimits-quadDivergentImplicitLod quadDivergentImplicitLod is a boolean value indicating whether implicit level of detail calculations for image operations have well-defined results when the image and/or sampler objects used for the instruction are not uniform within a quad. See  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-derivative-image-operationsDerivative Image Operations.nvulkan3limits-maxPerStageDescriptorUpdateAfterBindSamplers ,maxPerStageDescriptorUpdateAfterBindSamplers is similar to maxPerStageDescriptorSamplers but counts descriptors from descriptor sets created with or without the  bit set.nvulkan9limits-maxPerStageDescriptorUpdateAfterBindUniformBuffers 2maxPerStageDescriptorUpdateAfterBindUniformBuffers is similar to #maxPerStageDescriptorUniformBuffers but counts descriptors from descriptor sets created with or without the  bit set.nvulkan9limits-maxPerStageDescriptorUpdateAfterBindStorageBuffers 2maxPerStageDescriptorUpdateAfterBindStorageBuffers is similar to #maxPerStageDescriptorStorageBuffers but counts descriptors from descriptor sets created with or without the  bit set.nvulkan8limits-maxPerStageDescriptorUpdateAfterBindSampledImages 1maxPerStageDescriptorUpdateAfterBindSampledImages is similar to "maxPerStageDescriptorSampledImages but counts descriptors from descriptor sets created with or without the  bit set.nvulkan8limits-maxPerStageDescriptorUpdateAfterBindStorageImages 1maxPerStageDescriptorUpdateAfterBindStorageImages is similar to "maxPerStageDescriptorStorageImages but counts descriptors from descriptor sets created with or without the  bit set.nvulkan;limits-maxPerStageDescriptorUpdateAfterBindInputAttachments 4maxPerStageDescriptorUpdateAfterBindInputAttachments is similar to %maxPerStageDescriptorInputAttachments but counts descriptors from descriptor sets created with or without the  bit set.nvulkan*limits-maxPerStageUpdateAfterBindResources #maxPerStageUpdateAfterBindResources is similar to maxPerStageResources but counts descriptors from descriptor sets created with or without the  bit set.nvulkan.limits-maxDescriptorSetUpdateAfterBindSamplers 'maxDescriptorSetUpdateAfterBindSamplers is similar to maxDescriptorSetSamplers but counts descriptors from descriptor sets created with or without the  bit set.nvulkan4limits-maxDescriptorSetUpdateAfterBindUniformBuffers -maxDescriptorSetUpdateAfterBindUniformBuffers is similar to maxDescriptorSetUniformBuffers but counts descriptors from descriptor sets created with or without the  bit set.nvulkan;limits-maxDescriptorSetUpdateAfterBindUniformBuffersDynamic 4maxDescriptorSetUpdateAfterBindUniformBuffersDynamic is similar to %maxDescriptorSetUniformBuffersDynamic but counts descriptors from descriptor sets created with or without the  bit set. While an application can allocate dynamic uniform buffer descriptors from a pool created with the ", bindings for these descriptors must not be present in any descriptor set layout that includes bindings created with .nvulkan4limits-maxDescriptorSetUpdateAfterBindStorageBuffers -maxDescriptorSetUpdateAfterBindStorageBuffers is similar to maxDescriptorSetStorageBuffers but counts descriptors from descriptor sets created with or without the  bit set.nvulkan;limits-maxDescriptorSetUpdateAfterBindStorageBuffersDynamic 4maxDescriptorSetUpdateAfterBindStorageBuffersDynamic is similar to %maxDescriptorSetStorageBuffersDynamic but counts descriptors from descriptor sets created with or without the  bit set. While an application can allocate dynamic storage buffer descriptors from a pool created with the ", bindings for these descriptors must not be present in any descriptor set layout that includes bindings created with .nvulkan3limits-maxDescriptorSetUpdateAfterBindSampledImages ,maxDescriptorSetUpdateAfterBindSampledImages is similar to maxDescriptorSetSampledImages but counts descriptors from descriptor sets created with or without the  bit set.nvulkan3limits-maxDescriptorSetUpdateAfterBindStorageImages ,maxDescriptorSetUpdateAfterBindStorageImages is similar to maxDescriptorSetStorageImages but counts descriptors from descriptor sets created with or without the  bit set.nvulkan6limits-maxDescriptorSetUpdateAfterBindInputAttachments /maxDescriptorSetUpdateAfterBindInputAttachments is similar to  maxDescriptorSetInputAttachments but counts descriptors from descriptor sets created with or without the  bit set.nvulkanfeatures-depthResolveModes supportedDepthResolveModes is a bitmask of 8 indicating the set of supported depth resolve modes.  must, be included in the set but implementations may support additional modes.nvulkanfeatures-stencilResolveModes supportedStencilResolveModes is a bitmask of : indicating the set of supported stencil resolve modes.  must, be included in the set but implementations may support additional modes.  must not be included in the set.nvulkanfeatures-independentResolveNone independentResolveNone is / if the implementation supports setting the depth and stencil resolve modes to different values when one of those modes is . Otherwise the implementation only supports setting both modes to the same value.nvulkanfeatures-independentResolve independentResolve is / if the implementation supports all combinations of the supported depth and stencil resolve modes, including setting either depth or stencil resolve mode to #. An implementation that supports independentResolve must also support independentResolveNone.nvulkan)limits-filterMinmaxSingleComponentFormats "filterMinmaxSingleComponentFormats is a boolean value indicating whether a minimum set of required formats support min/max filtering.nvulkan(limits-filterMinmaxImageComponentMapping !filterMinmaxImageComponentMapping is a boolean value indicating whether the implementation supports non-identity component mapping of the image when doing min/max filtering.nvulkan*limits-maxTimelineSemaphoreValueDifference #maxTimelineSemaphoreValueDifference indicates the maximum difference allowed by the implementation between the current value of a timeline semaphore and any pending signal or wait operations.nvulkan*limits-framebufferIntegerColorSampleCounts #framebufferIntegerColorSampleCounts is a bitmask of & indicating the color sample counts that are supported for all framebuffer color attachments with integer formats.nvulkan deviceUUID is an array of , uint8_t values representing a universally unique identifier for the device.nvulkan driverUUID is an array of , uint8_t values representing a universally unique identifier for the driver build in use by the device.nvulkan deviceLUID is an array of , uint8_t values representing a locally unique identifier for the device.nvulkandeviceNodeMask is a uint32_t bitfield identifying the node within a linked device adapter corresponding to the device.nvulkandeviceLUIDValid" is a boolean value that will be / if  deviceLUID contains a valid LUID and deviceNodeMask" contains a valid node mask, and / if they do not.nvulkanlimits-subgroup-size  subgroupSize9 is the default number of invocations in each subgroup.  subgroupSize is at least 1 if any of the physical device@s queues support   or  .  subgroupSize is a power-of-two.nvulkanlimits-subgroupSupportedStages subgroupSupportedStages is a bitfield of ' % describing the shader stages that  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-group-operationsgroup operations with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-scope-subgroupsubgroup scope are supported in. subgroupSupportedStages will have the ' : bit set if any of the physical device@s queues support  .nvulkansubgroupSupportedOperations is a bitmask of  specifying the sets of  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-group-operationsgroup operations with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-scope-subgroupsubgroup scope supported on this device. subgroupSupportedOperations will have the : bit set if any of the physical device@s queues support   or  .nvulkan(limits-subgroupQuadOperationsInAllStages !subgroupQuadOperationsInAllStages" is a boolean specifying whether  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-quad-operationsquad group operations are available in all stages, or are restricted to fragment and compute stages.nvulkanlimits-pointClipping pointClippingBehavior is a  value specifying the point clipping behavior supported by the implementation.nvulkanlimits-maxMultiviewViewCount maxMultiviewViewCount2 is one greater than the maximum view index that can be used in a subpass.nvulkan limits-maxMultiviewInstanceIndex maxMultiviewInstanceIndex is the maximum valid value of instance index allowed to be generated by a drawing command recorded within a subpass of a multiview render pass instance.nvulkanprotectedNoFault4 specifies the behavior of the implementation when  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-protected-access-rulesprotected memory access rules are broken. If protectedNoFault is /, breaking those rules will not result in process termination or device loss.nvulkanlimits-maxPerSetDescriptors maxPerSetDescriptors is a maximum number of descriptors (summed over all descriptor types) in a single descriptor set that is guaranteed to satisfy any implementation-dependent constraints on the size of a descriptor set itself. Applications can query whether a descriptor set that goes beyond this limit is supported using W .nvulkanlimits-maxMemoryAllocationSize maxMemoryAllocationSize2 is the maximum size of a memory allocation that can be created, even if there is more space available in the heap.nvulkan!features-storageBuffer16BitAccess storageBuffer16BitAccess# specifies whether objects in the  StorageBuffer, ShaderRecordBufferKHR, or PhysicalStorageBuffer storage class with the Block decoration can have 16-bit integer and 16-bit floating-point members. If this feature is not enabled, 16-bit integer or 16-bit floating-point members must not be used in such objects. This also specifies whether shader modules can declare the StorageBuffer16BitAccess capability.nvulkan+features-uniformAndStorageBuffer16BitAccess "uniformAndStorageBuffer16BitAccess# specifies whether objects in the Uniform storage class with the Block decoration can have 16-bit integer and 16-bit floating-point members. If this feature is not enabled, 16-bit integer or 16-bit floating-point members must not be used in such objects. This also specifies whether shader modules can declare the "UniformAndStorageBuffer16BitAccess capability.nvulkanfeatures-storagePushConstant16 storagePushConstant16# specifies whether objects in the  PushConstant storage class can have 16-bit integer and 16-bit floating-point members. If this feature is not enabled, 16-bit integer or floating-point members must not be used in such objects. This also specifies whether shader modules can declare the StoragePushConstant16 capability.nvulkanfeatures-storageInputOutput16 storageInputOutput16# specifies whether objects in the Input and Output storage classes can have 16-bit integer and 16-bit floating-point members. If this feature is not enabled, 16-bit integer or 16-bit floating-point members must not be used in such objects. This also specifies whether shader modules can declare the StorageInputOutput16 capability.nvulkanfeatures-multiview  multiview specifies whether the implementation supports multiview rendering within a render pass. If this feature is not enabled, the view mask of each subpass must always be zero.nvulkanfeatures-multiview-gs multiviewGeometryShader specifies whether the implementation supports multiview rendering within a render pass, with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#geometrygeometry shaders. If this feature is not enabled, then a pipeline compiled against a subpass with a non-zero view mask must not include a geometry shader.nvulkanfeatures-multiview-tess multiviewTessellationShader specifies whether the implementation supports multiview rendering within a render pass, with  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#tessellationtessellation shaders. If this feature is not enabled, then a pipeline compiled against a subpass with a non-zero view mask must' not include any tessellation shaders.nvulkan&features-variablePointersStorageBuffer variablePointersStorageBuffer< specifies whether the implementation supports the SPIR-V VariablePointersStorageBuffer? capability. When this feature is not enabled, shader modules must not declare the SPV_KHR_variable_pointers extension or the VariablePointersStorageBuffer capability.nvulkanfeatures-variablePointers variablePointers; specifies whether the implementation supports the SPIR-V VariablePointers? capability. When this feature is not enabled, shader modules must not declare the VariablePointers capability.nvulkanfeatures-protectedMemory protectedMemory2 specifies whether protected memory is supported.nvulkanfeatures-samplerYcbcrConversion samplerYcbcrConversion1 specifies whether the implementation supports  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y@CBCR conversion. If samplerYcbcrConversion is /, sampler Y@CBCR conversion is not supported, and samplers using sampler Y@CBCR conversion must not be used.nvulkanfeatures-shaderDrawParameters shaderDrawParameters; specifies whether the implementation supports the SPIR-V DrawParameters? capability. When this feature is not enabled, shader modules must not declare the SPV_KHR_shader_draw_parameters extension or the DrawParameters capability.O""""""""""""""""""""""amnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn(((((((((((((((((((((((((((((((((((((((((((((((((((>>#####!!============kkklkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllmmmmmmmmm,,,,,,,,,,&&============="""""""<<<<<<<<<<<<<<<<<<< ##################################''''''''''''***************************,,,,<<<<=====>lllllnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnmmmmnnnnnn  ,,,,,,,,,,   ,,,,None* !#$&'(./0289:<>?>$ooooNone( #$&'(./0289:<>?>snvulkanVkCommandBufferInheritanceInfo - Structure specifying command buffer inheritance information Valid Usage>VUID-VkCommandBufferInheritanceInfo-occlusionQueryEnable-00056 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-inheritedQueriesinherited queries feature is not enabled, occlusionQueryEnable must be /4VUID-VkCommandBufferInheritanceInfo-queryFlags-00057 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-inheritedQueriesinherited queries feature is enabled,  queryFlags must be a valid combination of \ values4VUID-VkCommandBufferInheritanceInfo-queryFlags-02788 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-inheritedQueriesinherited queries feature is not enabled,  queryFlags must be 0commandBufferCount  handlesVUID-vkAllocateCommandBuffers-pAllocateInfo::commandBufferCount-arraylength !pAllocateInfo->commandBufferCount must be greater than 0Host SynchronizationHost access to pAllocateInfo->commandPool must be externally synchronized Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , ovulkan=A convenience wrapper to make a compatible pair of calls to o and oTo ensure that o is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.ovulkan+vkFreeCommandBuffers - Free command buffers Description+Any primary command buffer that is in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording or executable state and has any element of pCommandBuffers recorded into it, becomes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycleinvalid. Valid Usage/VUID-vkFreeCommandBuffers-pCommandBuffers-00047 All elements of pCommandBuffers must not be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state/VUID-vkFreeCommandBuffers-pCommandBuffers-00048 pCommandBuffers must# be a valid pointer to an array of commandBufferCount % handles, each element of which must either be a valid handle or NULLValid Usage (Implicit)*VUID-vkFreeCommandBuffers-device-parameter device must be a valid  handle/VUID-vkFreeCommandBuffers-commandPool-parameter  commandPool must be a valid  handle8VUID-vkFreeCommandBuffers-commandBufferCount-arraylength commandBufferCount must be greater than 0,VUID-vkFreeCommandBuffers-commandPool-parent  commandPool must6 have been created, allocated, or retrieved from device0VUID-vkFreeCommandBuffers-pCommandBuffers-parent Each element of pCommandBuffers that is a valid handle must6 have been created, allocated, or retrieved from  commandPoolHost SynchronizationHost access to  commandPool must be externally synchronizedHost access to each member of pCommandBuffers must be externally synchronizedSee Also, , ovulkan7vkBeginCommandBuffer - Start recording a command buffer Valid Usage-VUID-vkBeginCommandBuffer-commandBuffer-00049  commandBuffer must not be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording or pending state-VUID-vkBeginCommandBuffer-commandBuffer-00050 If  commandBuffer was allocated from a " which did not have the  flag set,  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle initial state-VUID-vkBeginCommandBuffer-commandBuffer-00051 If  commandBuffer) is a secondary command buffer, the pInheritanceInfo member of  pBeginInfo must be a valid  structure-VUID-vkBeginCommandBuffer-commandBuffer-00052 If  commandBuffer3 is a secondary command buffer and either the occlusionQueryEnable member of the pInheritanceInfo member of  pBeginInfo is /, or the precise occlusion queries feature is not enabled, then (pBeginInfo->pInheritanceInfo->queryFlags must not contain -VUID-vkBeginCommandBuffer-commandBuffer-02840 If  commandBuffer( is a primary command buffer, then pBeginInfo->flags must not set both the ) and the ) flagsValid Usage (Implicit)1VUID-vkBeginCommandBuffer-commandBuffer-parameter  commandBuffer must be a valid  handle.VUID-vkBeginCommandBuffer-pBeginInfo-parameter  pBeginInfo must$ be a valid pointer to a valid  structureHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the  that  commandBuffer was allocated from must be externally synchronized Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, ovulkan>This function will call the supplied action between calls to o and o Note that o is *not* called if an exception is thrown by the inner action.ovulkan6vkEndCommandBuffer - Finish recording a command buffer DescriptionIf there was an error during recording, the application will be notified by an unsuccessful return code returned by o. If the application wishes to further use the command buffer, the command buffer must be reset.The command buffer must have been in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state, and is moved to the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycleexecutable state. Valid Usage+VUID-vkEndCommandBuffer-commandBuffer-00059  commandBuffer must be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state+VUID-vkEndCommandBuffer-commandBuffer-00060 If  commandBuffer) is a primary command buffer, there must+ not be an active render pass instance+VUID-vkEndCommandBuffer-commandBuffer-00061 All queries made  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-activeactive during the recording of  commandBuffer must have been made inactive"VUID-vkEndCommandBuffer-None-01978 Conditional rendering must not be https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#active-conditional-renderingactive+VUID-vkEndCommandBuffer-commandBuffer-01815 If  commandBuffer+ is a secondary command buffer, there must not be an outstanding   command recorded to  commandBuffer; that has not previously been ended by a call to  +VUID-vkEndCommandBuffer-commandBuffer-00062 If  commandBuffer+ is a secondary command buffer, there must not be an outstanding   command recorded to  commandBuffer; that has not previously been ended by a call to  Valid Usage (Implicit)/VUID-vkEndCommandBuffer-commandBuffer-parameter  commandBuffer must be a valid  handleHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the  that  commandBuffer was allocated from must be externally synchronized Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee AlsoovulkanvkResetCommandBuffer - Reset a command buffer to the initial state Description+Any primary command buffer that is in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording or executable state and has  commandBuffer recorded into it, becomes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycleinvalid. Valid Usage-VUID-vkResetCommandBuffer-commandBuffer-00045  commandBuffer must not be in the https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state-VUID-vkResetCommandBuffer-commandBuffer-00046  commandBuffer must have been allocated from a pool that was created with the Valid Usage (Implicit)1VUID-vkResetCommandBuffer-commandBuffer-parameter  commandBuffer must be a valid  handle)VUID-vkResetCommandBuffer-flags-parameter flags must% be a valid combination of @ valuesHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the  that  commandBuffer was allocated from must be externally synchronized Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, Aovulkandevice2 is the logical device that owns the command pool.vulkan pAllocateInfo is a pointer to a 4 structure describing parameters of the allocation.ovulkandevice2 is the logical device that owns the command pool.vulkan commandPool is the command pool from which the command buffers were allocated.vulkanpCommandBuffers is a pointer to an array of handles of command buffers to free.ovulkan commandBuffer is the handle of the command buffer which is to be put in the recording state.vulkan pBeginInfo is a pointer to a  structure defining additional information about how the command buffer begins recording.ovulkan commandBuffer- is the command buffer to complete recording.ovulkan commandBuffer4 is the command buffer to reset. The command buffer can be in any state other than  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclepending, and is moved into the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle initial state.vulkanflags is a bitmask of @" controlling the reset operation.0oooooooooooooooo@))A\]111))))))))))ooooooo7ooooooooooooooooooooooo111))))))\])))))))))@)))ANone( #$&'(./0289:<>?> vulkanVkBufferCreateInfo - Structure specifying the parameters of a newly created buffer object Valid Usage"VUID-VkBufferCreateInfo-size-00912 size must be greater than 0)VUID-VkBufferCreateInfo-sharingMode-00913 If  sharingMode is , pQueueFamilyIndices must( be a valid pointer to an array of queueFamilyIndexCount uint32_t values)VUID-VkBufferCreateInfo-sharingMode-00914 If  sharingMode is , queueFamilyIndexCount must be greater than 1)VUID-VkBufferCreateInfo-sharingMode-01419 If  sharingMode is , each element of pQueueFamilyIndices must be unique and must be less than pQueueFamilyPropertyCount returned by either   or U  for the physicalDevice that was used to create device#VUID-VkBufferCreateInfo-flags-00915 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseBindingsparse bindings feature is not enabled, flags must not contain *#VUID-VkBufferCreateInfo-flags-00916 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidencyBuffersparse buffer residency feature is not enabled, flags must not contain *#VUID-VkBufferCreateInfo-flags-00917 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidencyAliasedsparse aliased residency feature is not enabled, flags must not contain *#VUID-VkBufferCreateInfo-flags-00918 If flags contains * or * , it must also contain *#VUID-VkBufferCreateInfo-pNext-00920 If the pNext chain includes a  structure, its  handleTypes member must. only contain bits that are also in Q::.externalMemoryProperties.compatibleHandleTypes, as returned by Q  with pExternalBufferInfo->handleType= equal to any one of the handle types specified in :: handleTypes#VUID-VkBufferCreateInfo-flags-018876 If the protected memory feature is not enabled, flags must not contain *"VUID-VkBufferCreateInfo-None-01888 If any of the bits *, *, or * are set, * must not also be set#VUID-VkBufferCreateInfo-pNext-01571 If the pNext chain includes a  structure, and the dedicatedAllocation) member of the chained structure is /, then flags must not include *, *, or *+VUID-VkBufferCreateInfo-deviceAddress-02604 If :: deviceAddress is not zero, flags must include *2VUID-VkBufferCreateInfo-opaqueCaptureAddress-03337 If ::opaqueCaptureAddress is not zero, flags must include *#VUID-VkBufferCreateInfo-flags-03338 If flags includes *, the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressCaptureReplay bufferDeviceAddressCaptureReplay or  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressCaptureReplayEXT"::bufferDeviceAddressCaptureReplay feature must be enabledValid Usage (Implicit)#VUID-VkBufferCreateInfo-sType-sType sType must be  #VUID-VkBufferCreateInfo-pNext-pNext Each pNext: member of any structure (including this one) in the pNext chain must be either NULL* or a pointer to a valid instance of , , , ,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileKHRVkVideoProfileKHR, or https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfilesKHRVkVideoProfilesKHR$VUID-VkBufferCreateInfo-sType-unique The sType" value of each struct in the pNext chain must be unique'VUID-VkBufferCreateInfo-flags-parameter flags must% be a valid combination of * values'VUID-VkBufferCreateInfo-usage-parameter usage must% be a valid combination of * values-VUID-VkBufferCreateInfo-usage-requiredbitmask usage must not be 0-VUID-VkBufferCreateInfo-sharingMode-parameter  sharingMode must be a valid  valueSee Also*, *, o, , , oovulkanpNext is NULL6 or a pointer to a structure extending this structure.ovulkanflags is a bitmask of *1 specifying additional parameters of the buffer.ovulkansize2 is the size in bytes of the buffer to be created.ovulkanusage is a bitmask of ** specifying allowed usages of the buffer.ovulkan sharingMode is a  value specifying the sharing mode of the buffer when it will be accessed by multiple queue families.ovulkanpQueueFamilyIndices is a pointer to an array of queue families that will access this buffer. It is ignored if  sharingMode is not .ovulkan+vkCreateBuffer - Create a new buffer object Valid UsageVUID-vkCreateBuffer-flags-00911 If the flags member of  pCreateInfo includes *, creating this  must not cause the total required sparse memory for all currently valid sparse resources on the device to exceed  ::sparseAddressSpaceSizeValid Usage (Implicit)$VUID-vkCreateBuffer-device-parameter device must be a valid  handle)VUID-vkCreateBuffer-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid  structure(VUID-vkCreateBuffer-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure%VUID-vkCreateBuffer-pBuffer-parameter pBuffer must be a valid pointer to a  handle Return Codes  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , ovulkan=A convenience wrapper to make a compatible pair of calls to o and oTo ensure that o is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.ovulkan)vkDestroyBuffer - Destroy a buffer object Valid Usage!VUID-vkDestroyBuffer-buffer-00922+ All submitted commands that refer to buffer , either directly or via a 0 , must have completed execution!VUID-vkDestroyBuffer-buffer-00923 If  were provided when buffer1 was created, a compatible set of callbacks must be provided here!VUID-vkDestroyBuffer-buffer-00924 If no  were provided when buffer was created,  pAllocator must be NULLValid Usage (Implicit)%VUID-vkDestroyBuffer-device-parameter device must be a valid  handle%VUID-vkDestroyBuffer-buffer-parameter If buffer is not , buffer must be a valid  handle)VUID-vkDestroyBuffer-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure"VUID-vkDestroyBuffer-buffer-parent If buffer is a valid handle, it must1 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to buffer must be externally synchronizedSee Also, , ovulkandevice6 is the logical device that creates the buffer object.vulkan pCreateInfo is a pointer to a  structure containing parameters affecting creation of the buffer.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.ovulkandevice0 is the logical device that destroys the buffer.vulkanbuffer is the buffer to destroy.vulkan pAllocator6 controls host memory allocation as described in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.,ooooooo1***************************ooooooooooooo1************************************************None( #$&'(./0289:<>?>R------+,,++++oooooooSSSSSSooooooooooooooooiiiiiiiiiiiiii iiiiii!iiiiii"iiiii#iiii$iii%iiii&iiiiiii'iiii(SSS)hhhhhhhhhh*hhhh+hhhhhh,hhhh-hhh.hhhhh/hhhh0hhhh1hhhhhhhh2ggggg3ggggggg4ddddd5cccccc6dddddddddd7ddddd8bccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb9cddddccccccccccccccccccccccccccccccccccccccccccccccccccc:ddd;ddddddd?dddddd@))AB))CD)))))))))E)))))FG((((HI'J&&&&K$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&$&L###M""""""""""""""""NO""""""""""""""""""""""P!!!!Q!!!!R!!!!!!!!!!!!ST!!!!!U ! !V W  XYZ[\]^_`abcdefghijSSkSSSlbbbmnopqrstuvw1x1y1z1{|111}1~111111111111111111111111111aaaaaaabbbabbbababaa]]]]]]]]]]]]]]]]]]]SSSSS]]]]]]]]SSSSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\WWWWWWWWWWWVWVWWVVVVVVVVWWWWWWWWVVVVVVVVVVVVVVVVWWWWWWWVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWSSSSSSSSRSRSVVVVVVUVUVUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""##################################&&&&&&&&&&&&&&&&&&&&&&&&'''''''''''''''''''''&'''''''''''''''''''''''''''''''''''')))))))))))))))))))))))))****************************************************************************************+++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,SSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTUUUUUUUUUVVVVVVVVVVWWWWW\\\\\\\]]]]]]]]]]]]bbbbbbbbbbbddddddddddddggghhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjooooooooooooNone( #$&'(./0289:<>?>ovulkan:The set of other extensions required to use this extensionovulkan6The minimum required API version to use this extensionooooNone( #$&'(./0289:<>?>,$w1x1y1z1|111}1~11111111111111111111111111@@@@@@@@@@@@@@@@@RRRR  <<<<<<<<<<<<<<<<<<_____________________&&&&>>>>>><<<<<<<;;;<;;;;;;;;;kkkkkkkkRRRRRRRRRRRRRMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNMNNNNNMNMMMMMMLMMMMLMMMMMMMMMMMLLLMLLLLLLLLLLMMM   LLLL;;;;;;LLLLLLLLKKKKKKKKKKKKKK\\;;;;:::::::&&&&&]]]]]]]]]]KKKKKK ,,,,,KKKKKKKKKKKKKKbbbbbbbbbbbbbbbbbb::::::::::::::,,,JJJ::::::::::: JJJJJJ99999999999999999999999999999999988999999999999999JJJJJJ  888888888888IIIIIIIIIIIIIIIIIII IIIIIIIIHHHIIIIII__HGHHHHHHHHHHHHHHHHHHOONOOONOOOOOONOOOONOONOOOONOONOOONOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOONOOOOOOOOONNNNOOOOOOOOOOOOOOOOOOOOGGGjjjjjjjjjjjjkkkkkkjkkkjkjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkjjjjjjjFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88888888fffffffffffff88888888eeeeeeeeeeeee88888888eeeeeffffeeeeeeeeelllllllllllllllllllllllllllllllllllllGGGGGGGGGGGEEEEEEEE777777777777777777777776666666666666666666666666EEhhZZYZZZZYZYYYYYYYYZZZZZZZYYYYZZZZZZZZZZYYYYYYYYYYYYYYYYEECCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^]^]^^]]]^^^^^]]]]^^^^^^^^^^^^^^^^^^^^^^^^^]]]^^^^^^^^^^CCCC666666CCCCBBBBBBBBBBBBBBBBBNNNNNNNNNNNNNNNNN55555555555555555555555555554444444444444444444444XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXffffeeeeeeeeee44444eeeeeemmmmmmmmmmmmmmmmmmmmmmmXXXXXX33333333333333333333ZZ[[[[[[[[[[[[[[[ZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[ZZZZZZZZZ[[ZZZZZQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ33333332333333222232233322222222222222DDDDDDDAAAA''''''  !!!!!!""""""""""""""#######################$$$$$$$$$$$$$&&&&&&&&&&&&&&&&''''((((((((((((((((((((((()))))))))))+++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---------------------2222222333333333332333333333333333333333344444444444444444444444444555555555555555555555555555555555556666666666666666666666666666666667676677777676777777777767677676666666777777777778888888888888888888888888889999999999999999999999999999999::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<==================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?????????????????????????????????????????????????????????????@@@@@@@@AAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHGHGHGHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNONONONONNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZ[[Z[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\]]]]]]]]^]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^]^]^^^^^^^^^^^^^^^^^____________````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffggggggggggggggggggggggggggggghhhhhhiiiiiiiiiiiiiiiiiiiiiiiiijjkkkkkkkkkkkkllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmooNone( #$&'(./0289:<>?>------+,,++++oooooooSSSSSSooooooooooooooooiiiiiiiiiiiiii iiiiii!iiiiii"iiiii#iiii$iii%iiii&iiiiiii'iiii(SSS)hhhhhhhhhh*hhhh+hhhhhh,hhhh-hhh.hhhhh/hhhh0hhhh1hhhhhhhh2ggggg3ggggggg4ddddd5cccccc6dddddddddd7ddddd8bccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb9cddddccccccccccccccccccccccccccccccccccccccccccccccccccc:ddd;ddddddd?dddddd@))AB))CD)))))))))E)))))FG((((HI'J&&&&K$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&$&L###M""""""""""""""""NO""""""""""""""""""""""P!!!!Q!!!!R!!!!!!!!!!!!ST!!!!!U ! !V W  XYZ[\]^_`abcdefghijSSkSSSlbbbmnopqrstuvw1x1y1z1{|111}1~111111111111111111111111111aaaaaaabbbabbbababaa]]]]]]]]]]]]]]]]]]]SSSSS]]]]]]]]SSSSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\WWWWWWWWWWWVWVWWVVVVVVVVWWWWWWWWVVVVVVVVVVVVVVVVWWWWWWWVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWSSSSSSSSRSRSVVVVVVUVUVUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT@@@@@@@@@@@@TTTTTTTTTT@@@@@@RRRRRRRRRRRRRRR???????????????"""""????????????------>>>>>>>>>>>>>>>>>>>>SSSSSSSUUUUUUUUUUUUfffffffffffffffffffffffffffffffff############iiiiii(((((((()((````````````````````mnnnnnnmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn(((((((((((((((((((((((((((((((((((((((((((((((((((>>#####!!============kkklkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllmmmmmmmmm,,,,,,,,,,&&============="""""""<<<<<<<<<<<<<<<<<<<@@@@@@@@@@@@@@@RRRR  <<<<<<<<<<<<<<<<<<_____________________&&&&>>>>>><<<<<<<;;;<;;;;;;;;;kkkkkkkkRRRRRRRRRRRRRMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNMNNNNNMNMMMMMMLMMMMLMMMMMMMMMMMLLLMLLLLLLLLLLMMM   LLLL;;;;;;LLLLLLLLKKKKKKKKKKKKKK\\;;;;:::::::&&&&&]]]]]]]]]]KKKKKK ,,,,,KKKKKKKKKKKKKKbbbbbbbbbbbbbbbbbb::::::::::::::,,,JJJ::::::::::: JJJJJJ99999999999999999999999999999999988999999999999999JJJJJJ  888888888888IIIIIIIIIIIIIIIIIII IIIIIIIIHHHIIIIII__HGHHHHHHHHHHHHHHHHHHOONOOONOOOOOONOOOONOONOOOONOONOOONOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOONOOOOOOOOONNNNOOOOOOOOOOOOOOOOOOOOGGGjjjjjjjjjjjjkkkkkkjkkkjkjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkjjjjjjjFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88888888fffffffffffff88888888eeeeeeeeeeeee88888888eeeeeffffeeeeeeeeelllllllllllllllllllllllllllllllllllllGGGGGGGGGGGEEEEEEEE777777777777777777777776666666666666666666666666EEhhZZYZZZZYZYYYYYYYYZZZZZZZYYYYZZZZZZZZZZYYYYYYYYYYYYYYYYEECCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^]^]^^]]]^^^^^]]]]^^^^^^^^^^^^^^^^^^^^^^^^^]]]^^^^^^^^^^CCCC666666CCCCBBBBBBBBBBBBBBBBBNNNNNNNNNNNNNNNNN55555555555555555555555555554444444444444444444444XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXffffeeeeeeeeee44444eeeeeemmmmmmmmmmmmmmmmmmmmmmmXXXXXX33333333333333333333ZZ[[[[[[[[[[[[[[[ZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[ZZZZZZZZZ[[ZZZZZQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ33333332333333222232233322222222222222DDDDDDDAAAA''''''   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""#########################################################$$$$$$$$$$$$$&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'''''''''''''''''''''&''''''''''''''''''''''''''''''''''''''''((((((((((((((((((((((())))))))))))))))))))))))))))))))))))****************************************************************************************+++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---------------------12222222333333333332333333333333333333333344444444444444444444444444555555555555555555555555555555555556666666666666666666666666666666667676677777676777777777767677676666666777777777778888888888888888888888888889999999999999999999999999999999::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<=======================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????@@@@@@@@@@@@AAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHGHGHGHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNONONONONNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZ[[Z[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]^]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^]^]^^^^^^^^^^^^^^^^^____________```````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeefffffffffffffffffffffgggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkklllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnooooooooooooooo                              !""##$%&& ' '(()*+,-..////////0 0 0 0 00 0 0 00 00 00000 0 0 000 0 0 0 0 00 0 0 11222 34456 6666667 7777 7888 88888888888888889::;<=>?@@ @@ @@@ @@AB BCCD D EEEEFGHHIIJ JKKKKKLLMMNOOPPPQQQQQQRSSTTTTTUUUUUUUUUVVVVVWWXXXYYYYYYZ[\\\\]]]]]^__`abcccccdddddddeeffghhhhiiijklmnnnnnnopqqq q q q q q q q q qqq q rssttttuuuuvvvvwxxxxyyyyz{||||}~               *********}}}}}}}}}}}}}}}}}}}}}}}}}{{{{{{{{{{{{{{{{{{{{{{wwwwwwwwwwwwwwwwwwwwwww)))))))))))))))    %%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%% %%%%%%%%%%%%/// /////////////////////////////////////////////////////////                                                       ~ ~ ~ ~ ~ ~~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ z z z z z zz z z z z z z z z z z z z z z z z r r rr r r r r r r r r pp p p p p p p p p       oo o o o o o o       mm m m m m m m!!!!!!!ll!l!l!l!l!l!l!l!l!l!l!l!l!l!l!l!l!l!l!l!l!l!l!!!!!!!!!!!kk!k!k!k!k!k!k!k!!!!!!!!!jj!j!j!j!j!j!j!j!!!!!!!bb!b!b!b!b!b!b!b!b!!!!!!!``!`!`!`!`!`!`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!![![[![![![![![![![![!!"""!"""Z"ZZ"Z"Z"Z"Z"Z"Z"Z"GG"G"G"G"G"G"G"G"G"G""""""""""""""""""""""""  " """"""""CC"C"C"C"C"C"C"C"C"C"C"C"""""""""""""  """"""""""  "  """""""""RR"R"R"R"R"R"R"""""""""""""""""""""""B B"B B B BB BBB B BBBB"B"B"B"B#B#B#B###############  #  ########NN#N#N#N#N#N#N#################################AA#A#A#A#A#A#A#A## ########((#(#(#(#(#(#(#(#(#(#(#(##########################' '''''''#'#''#' '''''#'#'#'#'#'#'#'#'####$$$$$$##$$$$$$$$$$$$$$$$$$FF$F$F$F$F$F$F$F$F$F$$$$$$$$$$$$$$$$$$$$$$$$$  $$$$$$$$&&$&$&&&&&&$&$&$&$&$&$&$&$$$$$$$$$$$$$$$$  $$$$$$$$$$ $$ $ $ $$ $$$$$$$$$$$$$$##$#$#$#$#$#$#$#$#$#$#$#$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%"""%"%"%"%"%"%"%"%!!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%           % % %               % % % % % % % % %%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&   &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  '''''''''''''''''''''  '''''''' '''''''''''''''''''''''''''''''.'.'.'.'.'.'. .'. .''''''''((( ((((((        ((((((((( ((((((((           ((((((((aa(a(a(a(a(a(a((((((((((((( ((((((((((((ii(i(ii(ii(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(((((((((((((((      ((((((((LL(L(LL(L(L(L(L(L(L(L(L(     ((((   ((((((((VV(VV)VV)VV)VV)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)))))))))))))))))))))))))))))))))))))))))  )))))  ) ))))))))__)__)_)_)_)_)_)_)_)_)_)_)_)_)_)))))))))))))))))))))))))))))))**********************  ****************************************************** ********************* *******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++gg+g+g+g+g++++++++ +++++++++++++  +++++++++++++++++++++++++++++++++++,,    ,,          ,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,              ,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,  ,,,,,,,,,]],]],]],]],],],],],],],],],],],],],],],],],],],],],],],]],],],],],],],],],],],],],],],],],],]-]-]-]-]-]-]-]-]-]-]-]-]-]-]-]-]-]-]-]-]-]-]-]-]-]-]-]--------------------------------XX-X-X-XX-X-XX-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X--------------------------------------------------............................  . . . . . . . . .................................    ......... ........................................................///////////////////////////////////////////////////////////////////////////////// //// ///////    //////////////////////////// ///// ////////000/ ///// //////000000000000000000000000000000000ff0f0f0f0ff0f0f0f0f0f0f0f0f0f0f0f0f0f0f00000000//0000000000000PP0PP0PP0P0P0P0P0P0P0P0P0P0P0P0P0P0P0P0P0P0P000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333334444444444444444444444444444444444444444444444444444444444444444444400 0 0 0 0 0 0 0 0 0 0 0 0 000 0 0 0 0 04040 0404004040 04040040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050555555555555555566666666666666666655666666666666666666   6666666666666666666666666666666666666666666666666666666666666666666666666666666666 6666666666666667777777777 7777777777777777777  77777777777777777777777777777777777777777777777777777 777777777777777777777777777777777777777777777777777777777777888888 888888888888888888888888888888888888888 8888888888888888888  88888888888888888888888888888888888888888888888888888888888888888   888888888899999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999    9999999999999999999999999999999999999999:::::::::::::::::::::::::::::::::::::::::::::  :::::::::::::::::::::  ::::::::::::::::::::::::::::  ::::::::::::::::::::::::: :::::::::::::::::;;;;;;;;;;;;;;;;;;;;;; ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <<<<<<<<<<<<<<<<<<<<<<<<  <<<<<<<<  <<<<<<<<<<<<<<<<<<============================== = ===================================================  =============================== =====================nn=n=nn=n=n=nn>n>n>n>nn>n>nn>nn>n n n>n n>n>n>n>n>n>n>n>n>n>n>n>n>n>n>n>n>n>n>n>n>n>n>n>n>n>n>n>n>n>n>n>>>>>>>>>>>>>>>>>>>>>   hh>hh>h>h>h>h>h>hh>hh>h>h>h>h>h>h>h>h>h>h>h>h>h>h>h>h>h>h>>>>>>>>>>>>>>>>>>>>>>cc>cc>cc>cc>cc>c>c>c c c c>c>c>c>c>c>c>c>c>c>c>c>c>c>c>c>c>c>c>c>c?c?c?c?c?c?c?c?c?c???????????????????   ??????????????? ????????????^^?^ ^?^?^?^?^?^???????  ????????? QQ?Q?Q?Q?Q?QQ?QQ?Q?Q?QQ?QQ?QQ?Q?Q?Q Q?Q?Q?Q?Q?Q?Q?Q?Q?Q?Q?Q?Q?Q?Q?Q?Q?Q?Q?Q?Q?Q?Q?Q?Q?Q?Q?Q?Q?Q?Q?Q?Q???????????????0@@@@@@@ @@@@@ OO@O@O@OO@O O@O@O@O@O@O@O@O@O@O@O@O@@@@@@@@@@@@@@@@@@@ MM@MM@M@M@M M@M@M@M@M@M@M@M@M@@@@@@@0@@@ KK@K@KK@K@K@KK@KK@K@KK@K@K K K K K@K@K@K@K@K@K@K@K@K@K@K@K@K@K@K@K@K@K@K@K@K@K@K@K@K@II@I@II@I@I@I@I@I@I@I@I@I@I@I@I@I@@@@@@@@@EE@E@E@EE@EE@EE@E EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAD D DADADADADADADADADADADADADADAq q qq q q qqq q q q q qq qAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqAqBqBqBqBqBqBqBqBqBqBqBqBqBqBqBBBBBBBBBBB  BBBBBBBBBBBBBBBBBB  BBBBBBBB BBBBBBBBBBBBBBBBBBBBB BBBBBBBBBBBBBBBBBBBBB BBBBBBBBBBBBBBBBBBBBBBB  BBBBBBBBBBBBBBBBBBBBBBBB  BBBBBBBBCCCCCCCCCCCCCCCCC  CCCCCCCCCCCCCCCCCCCCCCCC  CCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC    CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD   D   DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEE EEEEEEEEEEE EEEEEEEEEEEEEEEE  EEEEEEEEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE       EEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF    FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF   FFFF F    FFFFFFFFF FFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGFFGGGGGGGGGGGG         GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG  GGGGGGGGGGGGGHHHHHHHHHHHHHHHHHH HHHHHHHHHHHHHHHHHHHHHH HHHHHHHHHHHHHHHHHHHHHHHH  HHHHHHHHHHHHHHHHHHHHH  HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH H   HHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIII I   IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIIIIIIIIIIIIIIIII IIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIIIIIIIIIIIIIIIIIIII    IIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJ JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ    JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ  JJJJJJJJJJJJJJJJJJ JJJJJJJJJJJJJJJJJJJJJJKKKKKKKKJJKKKKKKK      K   K  KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK K  KKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL L L   LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM           M    MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO     OOOOOOOOOOOOOOOOO  OOOO  sOsOssOssOsOsOssOsOsOsOsOsOsOsOsOsOsOsOJJOJOJOJOJOJOJOJ JOJOJOJOJOJOJ JOJ J JOJOJOJOJOJOJOJOJOJO::O:O:O::O:O:P: :P: :P:P:P:P:P:P:P:P:P:P99P9P9P9 9P9 9 9 9P9P9P9P9P55P5P5P5 55 55P5P5P5P5P5P33P3P3P3P33 3P3P3P3P3P,,P,P,, ,P,P,P,P,P++P+ +P+ + + + +P+P+P+P+P+P  P P P P P P P P PPPPPP P PPPPPPSSPSPSPSSPSPS SPSPSPSPSPSPSPSPSPSPSPPPPPPPPPPPPPPPPPPPP HHPHPHPHPHHPHPHPHPH H HPHPHPHPHPHPHPHPHPHPPPQQPPQQQ  @@Q@Q@Q@Q@Q@Q@ @Q@Q@ @Q@Q@ @Q@Q@@Q@Q@Q@Q@Q@Q@@Q@Q@Q@Q@Q@@Q@Q@Q@@Q@Q@Q@Q@Q@@Q@Q@Q@ @ @ @Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@QTTQTTQTQTTQTTQTQTTQT T T TQTQTQTQTQTQTQTQTQTQTQTQTQTQTQTQTQTQTQTQTQTQTQTQTQTQTQQQQQQQQQQQQQQ   ??R?R?R? ?R? ?R?R?R?R?R>>R>R>R>R>R>R>R>R>R>R>R>R>R>R>R>R>R> >R> >R>R>R>R>R==R=R= =R= =R=R=R=R=R<<R<R<R<R<R< < < <R< <R<R<R<R<R<R;;R;R;R;R;R; ;R; ;;R;R;R;R;R88R8R8R8R8R8R8R8R8R8R8R8R8R8R8R8R8R88R8R8R8R8R8R8R8R8R8R88R8R8R8R8R8R8R88R8R88R8R8R8R8R8R88R8R8R8R8R8R8R8R88R8R8R8R8R8R8R8R88R8R8R8R8R8R8R8S8S8S8S8S88S8S8S8S8S8S88S8S8S88S8S8S88S8S8S8S8 8S8S8S8S88S8S8S88S8S8S8S8S8S88S8S8S8S8S8S88S8S8S88S8S8S88S8S8S8S8S8S88S88S8 8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8S8T8T8T8T8T8T8T8T8T8T8T8T8T8T8T8T8T8T8T8T8T8T8T8T8T8TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT    T TTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU   V  VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW  W      W WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW     WWWWWW77W7W7W7W7W7W7W77W7W7W7W7W77W7W7W7W7W7W7W7 7X7X7X7X7X7X7X7 7X7X77X7X7X7X7X7X7X7X7X7 7X7 7 7X7 77X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7XXXXXXXXXXXXXXXXXXXXXXXXXXXX44X4X4X44X4X4X4 4X4 44X4 4 4 44X4X4X4X4X4X4X4X4X4X4X22X2X2X2X2X2X2X22X2X2X2X2X2 2X2X2X2X2 2X2 2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2Y2YYYYYYYY YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YYYYYYYYYYY YYYYYYYYYYYYYYYYYYYYYYYY YYYYYYYYYYYYYYYYYYYYYYYYYYYY   Y    YYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ ZZZZZZZZZZZZZZZZZZZZZZZZZ  ZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[YY[YY[YY[YY[YY[Y[Y[Y[Y[Y[Y[Y[Y[YY[Y Y[Y Y[Y[Y[Y[Y[Y[Y[Y[Y[Y[Y[Y[Y[Y[Y[Y[Y[Y[Y[Y[Y[Y[Y[Y[Y[Y[Y[Y[Y[Y[Y[Y[Y[Y[Y[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\  66\6\6\66\6\6\6\6\66\6\6\6\6 6\6\6\6\6\66\6\6\6\6\6\6\6\6\66\6\6\6\6\6\6\66\6\6\6\6\6\6\6\6\6\6\6\6\6\6\6\6\6\6\6\6\6\6\6\6\6\6\6\6\6\6\6\6\6\6\6\6\6\6\6\6\6\11\1\1\1\1\11\1\1\1\1\1\1\1\1\1\1\1\1\1 1\1 1 1\1\1\1\1\1\1\1\1\1\1\\\\\\\\\\ \\\\\\\ \\\\\\]]]]]]]]]]]]]]]]]]]]]]]]--]-]- -]- - - --]-]-]-]-]-]  ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^  ^ ^ ^ ^ ^  ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^  ^ ^ ^ ^ ^  ^ ^ ^  ^ ^  ^ ^  ^ ^ ^ ^  ^ ^ ^ ^  ^ ^ ^ ^ ^  ^ ^ ^ ^ ^  ^ ^ ^ ^ ^ ^ ^ ^ ^ ^   ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ___________________ _______________________________ __________________________  ____________``````````````````````````````  ````````````````````````````````````  ````````````````````````````````````UU`U`U`U`U`UU`UU`U`UU`U`UU`U`U`U`U`U`UU`U`UU`U`UU`U`UU`U`UUU U U U U U`U`U`U`U`U`U`U`UaUaUaUaUaUaUaUaUaUaUaUaUaUaUaUaUaUaUaUaUaUaUaUaUaUaUaUaUaUaUaUaUaUaUaUaUaUaaaaaaaaaaaaaaaaaaaaaaa        a a a a a a  a a a a a a a a a a a a a a aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  a a a  a a a a  a a  a a b  b b b b b  b b b b b b b  b b b b b b b b b  b b b  b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b bbbbbb  bbbbbbbbbbbbbbbbbbb   WWbWbWWbWbW WbWbWbWbWbWbWbWbWbWbWbbbbbbbbb bbbbbbbbccccccccccccccccccccccccccccccccccccccc                         c  c    cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddcc      ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddededededededed d ded d dededededededededededededededededededededededededededededededededededededeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee eeeeffffffffffffffffffffffffffffffffffffffffffff    eefefefeefefefefefefefefefefefefefeffffffffffffffff\\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\\f\f\f\f\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\g\gggggggggggggggg g  g gggggggggggggggggghhhh h hhhhhhhhhhhhhhhhhhh"vulkan-3.12-4bO67Yh5p0dANCdi7YPJD0Vulkan.CStructVulkan.CStruct.ExtendsVulkan.CStruct.Utils!Vulkan.Core10.AllocationCallbacksVulkan.Core10.BufferVulkan.Core10.BufferViewVulkan.Core10.CommandBuffer#Vulkan.Core10.CommandBufferBuildingVulkan.Core10.CommandPoolVulkan.Core10.DescriptorSetVulkan.Core10.Device"Vulkan.Core10.DeviceInitialization.Vulkan.Core10.Enums.CommandBufferResetFlagBits,Vulkan.Core10.Enums.CommandPoolResetFlagBitsVulkan.Core10.Enums.CompareOp$Vulkan.Core10.Enums.CullModeFlagBits&Vulkan.Core10.Enums.DependencyFlagBits,Vulkan.Core10.Enums.DescriptorPoolResetFlagsVulkan.Core10.Enums.FilterVulkan.Core10.Enums.FormatVulkan.Core10.Enums.FrontFace'Vulkan.Core10.Enums.ImageCreateFlagBitsVulkan.Core10.Enums.ImageLayoutVulkan.Core10.Enums.ImageTilingVulkan.Core10.Enums.ImageType&Vulkan.Core10.Enums.ImageUsageFlagBitsVulkan.Core10.Enums.IndexTypeVulkan.Core10.Enums.LogicOp"Vulkan.Core10.Enums.MemoryMapFlagsVulkan.Core10.Enums.ObjectType%Vulkan.Core10.Enums.PipelineBindPoint)Vulkan.Core10.Enums.PipelineStageFlagBits%Vulkan.Core10.Enums.PrimitiveTopology(Vulkan.Core10.Enums.QueryControlFlagBits'Vulkan.Core10.Enums.QueryResultFlagBitsVulkan.Core10.Enums.QueryTypeVulkan.Core10.Enums.Result'Vulkan.Core10.Enums.SampleCountFlagBits'Vulkan.Core10.Enums.ShaderStageFlagBits'Vulkan.Core10.Enums.StencilFaceFlagBitsVulkan.Core10.Enums.StencilOp#Vulkan.Core10.Enums.SubpassContentsVulkan.Core10.Event Vulkan.Core10.ExtensionDiscoveryVulkan.Core10.FenceVulkan.Core10.FuncPointersVulkan.Core10.FundamentalTypesVulkan.Core10.HandlesVulkan.Core10.ImageVulkan.Core10.ImageViewVulkan.Core10.LayerDiscoveryVulkan.Core10.MemoryVulkan.Core10.MemoryManagementVulkan.Core10.OtherTypesVulkan.Core10.PassVulkan.Core10.PipelineVulkan.Core10.PipelineCacheVulkan.Core10.PipelineLayoutVulkan.Core10.QueryVulkan.Core10.QueueVulkan.Core10.QueueSemaphoreVulkan.Core10.SamplerVulkan.Core10.Shader,Vulkan.Core10.SparseResourceMemoryManagement(Vulkan.Core11.Enums.CommandPoolTrimFlags4Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits-Vulkan.Core11.Enums.PeerMemoryFeatureFlagBitsVulkan.Core11.Handles9Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory1Vulkan.Core11.Originally_Based_On_VK_KHR_subgroup0Vulkan.Core11.Promoted_From_VK_KHR_16bit_storage/Vulkan.Core11.Promoted_From_VK_KHR_bind_memory27Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation=Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template/Vulkan.Core11.Promoted_From_VK_KHR_device_groupVulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory28Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation1Vulkan.Core11.Promoted_From_VK_KHR_external_fence>Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities2Vulkan.Core11.Promoted_From_VK_KHR_external_memory?Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities5Vulkan.Core11.Promoted_From_VK_KHR_external_semaphoreVulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities;Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2/Vulkan.Core11.Promoted_From_VK_KHR_maintenance2/Vulkan.Core11.Promoted_From_VK_KHR_maintenance3,Vulkan.Core11.Promoted_From_VK_KHR_multiview;Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion9Vulkan.Core11.Promoted_From_VK_KHR_shader_draw_parameters4Vulkan.Core11.Promoted_From_VK_KHR_variable_pointers Vulkan.Core126Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing3Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset8Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax6Vulkan.Core12.Promoted_From_VK_EXT_scalar_block_layout9Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage/Vulkan.Core12.Promoted_From_VK_KHR_8bit_storage8Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address5Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass28Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve4Vulkan.Core12.Promoted_From_VK_KHR_driver_properties4Vulkan.Core12.Promoted_From_VK_KHR_image_format_list8Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebufferVulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts6Vulkan.Core12.Promoted_From_VK_KHR_shader_atomic_int646Vulkan.Core12.Promoted_From_VK_KHR_shader_float16_int88Vulkan.Core12.Promoted_From_VK_KHR_shader_float_controlsVulkan.Core12.Promoted_From_VK_KHR_shader_subgroup_extended_types5Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphoreVulkan.Core12.Promoted_From_VK_KHR_uniform_buffer_standard_layout6Vulkan.Core12.Promoted_From_VK_KHR_vulkan_memory_modelVulkan.Extensions.Handles/Vulkan.Extensions.VK_AMD_device_coherent_memory+Vulkan.Extensions.VK_AMD_display_native_hdr#Vulkan.Extensions.VK_AMD_gcn_shader.Vulkan.Extensions.VK_AMD_gpu_shader_half_float)Vulkan.Extensions.VK_AMD_gpu_shader_int167Vulkan.Extensions.VK_AMD_memory_overallocation_behavior1Vulkan.Extensions.VK_AMD_mixed_attachment_samples1Vulkan.Extensions.VK_AMD_negative_viewport_height2Vulkan.Extensions.VK_AMD_pipeline_compiler_control,Vulkan.Extensions.VK_AMD_rasterization_order&Vulkan.Extensions.VK_AMD_shader_ballot/Vulkan.Extensions.VK_AMD_shader_core_properties0Vulkan.Extensions.VK_AMD_shader_core_properties29Vulkan.Extensions.VK_AMD_shader_explicit_vertex_parameter-Vulkan.Extensions.VK_AMD_shader_fragment_mask4Vulkan.Extensions.VK_AMD_shader_image_load_store_lod$Vulkan.Extensions.VK_AMD_shader_info.Vulkan.Extensions.VK_AMD_shader_trinary_minmax0Vulkan.Extensions.VK_AMD_texture_gather_bias_lodVulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer%Vulkan.Extensions.VK_EXT_4444_formats-Vulkan.Extensions.VK_EXT_acquire_xlib_display)Vulkan.Extensions.VK_EXT_astc_decode_mode1Vulkan.Extensions.VK_EXT_blend_operation_advanced.Vulkan.Extensions.VK_EXT_buffer_device_address.Vulkan.Extensions.VK_EXT_calibrated_timestamps+Vulkan.Extensions.VK_EXT_color_write_enable.Vulkan.Extensions.VK_EXT_conditional_rendering3Vulkan.Extensions.VK_EXT_conservative_rasterization,Vulkan.Extensions.VK_EXT_custom_border_color%Vulkan.Extensions.VK_EXT_debug_marker%Vulkan.Extensions.VK_EXT_debug_report$Vulkan.Extensions.VK_EXT_debug_utils*Vulkan.Extensions.VK_EXT_depth_clip_enable1Vulkan.Extensions.VK_EXT_depth_range_unrestricted-Vulkan.Extensions.VK_EXT_device_memory_report)Vulkan.Extensions.VK_EXT_directfb_surface+Vulkan.Extensions.VK_EXT_discard_rectangles(Vulkan.Extensions.VK_EXT_display_control0Vulkan.Extensions.VK_EXT_display_surface_counter/Vulkan.Extensions.VK_EXT_extended_dynamic_state0Vulkan.Extensions.VK_EXT_extended_dynamic_state20Vulkan.Extensions.VK_EXT_external_memory_dma_buf-Vulkan.Extensions.VK_EXT_external_memory_host%Vulkan.Extensions.VK_EXT_filter_cubic-Vulkan.Extensions.VK_EXT_fragment_density_map.Vulkan.Extensions.VK_EXT_fragment_density_map22Vulkan.Extensions.VK_EXT_fragment_shader_interlock.Vulkan.Extensions.VK_EXT_full_screen_exclusive(Vulkan.Extensions.VK_EXT_global_priority.Vulkan.Extensions.VK_EXT_global_priority_query%Vulkan.Extensions.VK_EXT_hdr_metadata)Vulkan.Extensions.VK_EXT_headless_surface2Vulkan.Extensions.VK_EXT_image_drm_format_modifier)Vulkan.Extensions.VK_EXT_image_robustness)Vulkan.Extensions.VK_EXT_index_type_uint8-Vulkan.Extensions.VK_EXT_inline_uniform_block+Vulkan.Extensions.VK_EXT_line_rasterization+Vulkan.Extensions.VK_EXT_load_store_op_none&Vulkan.Extensions.VK_EXT_memory_budget(Vulkan.Extensions.VK_EXT_memory_priority&Vulkan.Extensions.VK_EXT_metal_surface#Vulkan.Extensions.VK_EXT_multi_draw%Vulkan.Extensions.VK_EXT_pci_bus_info,Vulkan.Extensions.VK_EXT_physical_device_drm8Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control3Vulkan.Extensions.VK_EXT_pipeline_creation_feedback,Vulkan.Extensions.VK_EXT_post_depth_coverage%Vulkan.Extensions.VK_EXT_private_data)Vulkan.Extensions.VK_EXT_provoking_vertex$Vulkan.Extensions.VK_EXT_robustness2)Vulkan.Extensions.VK_EXT_sample_locations,Vulkan.Extensions.VK_EXT_shader_atomic_float-Vulkan.Extensions.VK_EXT_shader_atomic_float2;Vulkan.Extensions.VK_EXT_shader_demote_to_helper_invocation2Vulkan.Extensions.VK_EXT_shader_image_atomic_int64.Vulkan.Extensions.VK_EXT_shader_stencil_export/Vulkan.Extensions.VK_EXT_shader_subgroup_ballot-Vulkan.Extensions.VK_EXT_shader_subgroup_vote4Vulkan.Extensions.VK_EXT_shader_viewport_index_layer.Vulkan.Extensions.VK_EXT_subgroup_size_control/Vulkan.Extensions.VK_EXT_texel_buffer_alignment5Vulkan.Extensions.VK_EXT_texture_compression_astc_hdr%Vulkan.Extensions.VK_EXT_tooling_info+Vulkan.Extensions.VK_EXT_transform_feedback)Vulkan.Extensions.VK_EXT_validation_cache,Vulkan.Extensions.VK_EXT_validation_features)Vulkan.Extensions.VK_EXT_validation_flags1Vulkan.Extensions.VK_EXT_vertex_attribute_divisor3Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state1Vulkan.Extensions.VK_EXT_ycbcr_2plane_444_formats+Vulkan.Extensions.VK_EXT_ycbcr_image_arrays,Vulkan.Extensions.VK_FUCHSIA_external_memory/Vulkan.Extensions.VK_FUCHSIA_external_semaphore.Vulkan.Extensions.VK_FUCHSIA_imagepipe_surface$Vulkan.Extensions.VK_GGP_frame_token2Vulkan.Extensions.VK_GGP_stream_descriptor_surface+Vulkan.Extensions.VK_GOOGLE_decorate_string*Vulkan.Extensions.VK_GOOGLE_display_timing/Vulkan.Extensions.VK_GOOGLE_hlsl_functionality1%Vulkan.Extensions.VK_GOOGLE_user_type+Vulkan.Extensions.VK_HUAWEI_invocation_mask%Vulkan.Extensions.VK_IMG_filter_cubic%Vulkan.Extensions.VK_IMG_format_pvrtc,Vulkan.Extensions.VK_INTEL_performance_query4Vulkan.Extensions.VK_INTEL_shader_integer_functions2/Vulkan.Extensions.VK_KHR_acceleration_structure(Vulkan.Extensions.VK_KHR_android_surface'Vulkan.Extensions.VK_KHR_copy_commands2 Vulkan.Extensions.VK_KHR_display*Vulkan.Extensions.VK_KHR_display_swapchain*Vulkan.Extensions.VK_KHR_external_fence_fd-Vulkan.Extensions.VK_KHR_external_fence_win32+Vulkan.Extensions.VK_KHR_external_memory_fd.Vulkan.Extensions.VK_KHR_external_memory_win32.Vulkan.Extensions.VK_KHR_external_semaphore_fd1Vulkan.Extensions.VK_KHR_external_semaphore_win32.Vulkan.Extensions.VK_KHR_fragment_shading_rate0Vulkan.Extensions.VK_KHR_get_display_properties21Vulkan.Extensions.VK_KHR_get_memory_requirements22Vulkan.Extensions.VK_KHR_get_surface_capabilities2,Vulkan.Extensions.VK_KHR_incremental_present*Vulkan.Extensions.VK_KHR_performance_query7Vulkan.Extensions.VK_KHR_pipeline_executable_properties)Vulkan.Extensions.VK_KHR_pipeline_library+Vulkan.Extensions.VK_KHR_portability_subset#Vulkan.Extensions.VK_KHR_present_id%Vulkan.Extensions.VK_KHR_present_wait(Vulkan.Extensions.VK_KHR_push_descriptor"Vulkan.Extensions.VK_KHR_ray_query-Vulkan.Extensions.VK_KHR_ray_tracing_pipeline-Vulkan.Extensions.VK_KHR_relaxed_block_layout%Vulkan.Extensions.VK_KHR_shader_clock/Vulkan.Extensions.VK_KHR_shader_draw_parameters1Vulkan.Extensions.VK_KHR_shader_non_semantic_info=Vulkan.Extensions.VK_KHR_shader_subgroup_uniform_control_flow4Vulkan.Extensions.VK_KHR_shader_terminate_invocation1Vulkan.Extensions.VK_KHR_shared_presentable_image"Vulkan.Extensions.VK_KHR_spirv_1_45Vulkan.Extensions.VK_KHR_storage_buffer_storage_class Vulkan.Extensions.VK_KHR_surface7Vulkan.Extensions.VK_KHR_surface_protected_capabilities"Vulkan.Extensions.VK_KHR_swapchain)Vulkan.Extensions.VK_KHR_synchronization2(Vulkan.Extensions.VK_KHR_wayland_surface*Vulkan.Extensions.VK_KHR_win32_keyed_mutex&Vulkan.Extensions.VK_KHR_win32_surface9Vulkan.Extensions.VK_KHR_workgroup_memory_explicit_layout$Vulkan.Extensions.VK_KHR_xcb_surface%Vulkan.Extensions.VK_KHR_xlib_surface9Vulkan.Extensions.VK_KHR_zero_initialize_workgroup_memory$Vulkan.Extensions.VK_MVK_ios_surface&Vulkan.Extensions.VK_MVK_macos_surface"Vulkan.Extensions.VK_NN_vi_surface&Vulkan.Extensions.VK_NVX_binary_import*Vulkan.Extensions.VK_NVX_image_view_handle6Vulkan.Extensions.VK_NVX_multiview_per_view_attributes,Vulkan.Extensions.VK_NV_clip_space_w_scaling2Vulkan.Extensions.VK_NV_compute_shader_derivatives*Vulkan.Extensions.VK_NV_cooperative_matrix,Vulkan.Extensions.VK_NV_corner_sampled_image/Vulkan.Extensions.VK_NV_coverage_reduction_mode,Vulkan.Extensions.VK_NV_dedicated_allocation;Vulkan.Extensions.VK_NV_dedicated_allocation_image_aliasing5Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints1Vulkan.Extensions.VK_NV_device_diagnostics_config1Vulkan.Extensions.VK_NV_device_generated_commands'Vulkan.Extensions.VK_NV_external_memory4Vulkan.Extensions.VK_NV_external_memory_capabilities,Vulkan.Extensions.VK_NV_external_memory_rdma-Vulkan.Extensions.VK_NV_external_memory_win32&Vulkan.Extensions.VK_NV_fill_rectangle2Vulkan.Extensions.VK_NV_fragment_coverage_to_color3Vulkan.Extensions.VK_NV_fragment_shader_barycentric3Vulkan.Extensions.VK_NV_fragment_shading_rate_enums1Vulkan.Extensions.VK_NV_framebuffer_mixed_samples3Vulkan.Extensions.VK_NV_geometry_shader_passthrough#Vulkan.Extensions.VK_NV_glsl_shader2Vulkan.Extensions.VK_NV_inherited_viewport_scissor#Vulkan.Extensions.VK_NV_mesh_shader#Vulkan.Extensions.VK_NV_ray_tracing/Vulkan.Extensions.VK_NV_ray_tracing_motion_blur4Vulkan.Extensions.VK_NV_representative_fragment_test5Vulkan.Extensions.VK_NV_sample_mask_override_coverage)Vulkan.Extensions.VK_NV_scissor_exclusive.Vulkan.Extensions.VK_NV_shader_image_footprint*Vulkan.Extensions.VK_NV_shader_sm_builtins3Vulkan.Extensions.VK_NV_shader_subgroup_partitioned*Vulkan.Extensions.VK_NV_shading_rate_image'Vulkan.Extensions.VK_NV_viewport_array2(Vulkan.Extensions.VK_NV_viewport_swizzle)Vulkan.Extensions.VK_NV_win32_keyed_mutex4Vulkan.Extensions.VK_QCOM_render_pass_shader_resolve/Vulkan.Extensions.VK_QCOM_render_pass_transform/Vulkan.Extensions.VK_QCOM_rotated_copy_commands'Vulkan.Extensions.VK_QNX_screen_surface2Vulkan.Extensions.VK_VALVE_mutable_descriptor_typeVulkan.Internal.UtilsVulkan.NamedTypeVulkan.Version Vulkan.Zero3Vulkan.Core12.Enums.ShaderFloatControlsIndependence!Vulkan.Core12.Enums.SemaphoreType(Vulkan.Core12.Enums.SamplerReductionModeVulkan.Core12.Enums.DriverId,Vulkan.Core11.Enums.TessellationDomainOrigin%Vulkan.Core11.Enums.SamplerYcbcrRange/Vulkan.Core11.Enums.SamplerYcbcrModelConversion)Vulkan.Core11.Enums.PointClippingBehavior0Vulkan.Core11.Enums.DescriptorUpdateTemplateType"Vulkan.Core11.Enums.ChromaLocation#Vulkan.Core10.Enums.VertexInputRateVulkan.Core10.Enums.VendorId)Vulkan.Core10.Enums.SystemAllocationScope!Vulkan.Core10.Enums.StructureTypeVulkan.Core10.Enums.SharingMode%Vulkan.Core10.Enums.SamplerMipmapMode&Vulkan.Core10.Enums.SamplerAddressMode5Vulkan.Extensions.VK_KHR_sampler_mirror_clamp_to_edgeVulkan.Exception,Vulkan.Extensions.VK_KHR_vulkan_memory_model7Vulkan.Extensions.VK_KHR_uniform_buffer_standard_layout7Vulkan.Extensions.VK_KHR_shader_subgroup_extended_types.Vulkan.Extensions.VK_KHR_shader_float_controls,Vulkan.Extensions.VK_KHR_shader_float16_int8,Vulkan.Extensions.VK_KHR_shader_atomic_int64%Vulkan.Extensions.VK_KHR_8bit_storage,Vulkan.Extensions.VK_EXT_scalar_block_layout)Vulkan.Core12.Enums.SemaphoreWaitFlagBits'Vulkan.Core12.Enums.ResolveModeFlagBits-Vulkan.Core12.Enums.DescriptorBindingFlagBits*Vulkan.Extensions.VK_KHR_variable_pointers&Vulkan.Extensions.VK_KHR_16bit_storage+Vulkan.Core11.Enums.SubgroupFeatureFlagBits+Vulkan.Core11.Enums.SemaphoreImportFlagBits*Vulkan.Core11.Enums.MemoryAllocateFlagBits'Vulkan.Core11.Enums.FenceImportFlagBits7Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits+Vulkan.Extensions.VK_KHR_external_semaphore4Vulkan.Core11.Enums.ExternalSemaphoreFeatureFlagBits1Vulkan.Core11.Enums.ExternalMemoryFeatureFlagBits3Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits'Vulkan.Extensions.VK_KHR_external_fence0Vulkan.Core11.Enums.ExternalFenceFeatureFlagBits7Vulkan.Core11.Enums.DescriptorUpdateTemplateCreateFlags.Vulkan.Core10.Enums.SubpassDescriptionFlagBits,Vulkan.Core10.Enums.SparseMemoryBindFlagBits-Vulkan.Core10.Enums.SparseImageFormatFlagBits.Vulkan.Core10.Enums.ShaderModuleCreateFlagBits(Vulkan.Core10.Enums.SemaphoreCreateFlags)Vulkan.Core10.Enums.SamplerCreateFlagBits,Vulkan.Core10.Enums.RenderPassCreateFlagBits!Vulkan.Core10.Enums.QueueFlagBits(Vulkan.Core10.Enums.QueryPoolCreateFlags2Vulkan.Core10.Enums.QueryPipelineStatisticFlagBitsVulkan.Core10.Enums.PolygonMode4Vulkan.Core10.Enums.PipelineViewportStateCreateFlags7Vulkan.Core10.Enums.PipelineVertexInputStateCreateFlags8Vulkan.Core10.Enums.PipelineTessellationStateCreateFlags5Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits9Vulkan.Core10.Enums.PipelineRasterizationStateCreateFlags7Vulkan.Core10.Enums.PipelineMultisampleStateCreateFlags-Vulkan.Core10.Enums.PipelineLayoutCreateFlags9Vulkan.Core10.Enums.PipelineInputAssemblyStateCreateFlags3Vulkan.Core10.Enums.PipelineDynamicStateCreateFlags8Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlags*Vulkan.Core10.Enums.PipelineCreateFlagBits6Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlags.Vulkan.Core10.Enums.PipelineCacheHeaderVersion/Vulkan.Core10.Enums.PipelineCacheCreateFlagBits&Vulkan.Core10.Enums.PhysicalDeviceType*Vulkan.Core10.Enums.MemoryPropertyFlagBits&Vulkan.Core10.Enums.MemoryHeapFlagBits*Vulkan.Core10.Enums.InternalAllocationType'Vulkan.Core10.Enums.InstanceCreateFlags!Vulkan.Core10.Enums.ImageViewType+Vulkan.Core10.Enums.ImageViewCreateFlagBits/Vulkan.Extensions.VK_EXT_separate_stencil_usage7Vulkan.Extensions.VK_KHR_separate_depth_stencil_layouts'Vulkan.Core10.Enums.ImageAspectFlagBits%Vulkan.Extensions.VK_KHR_maintenance2-Vulkan.Core10.Enums.FramebufferCreateFlagBits)Vulkan.Core10.Enums.FormatFeatureFlagBits.Vulkan.Extensions.VK_EXT_sampler_filter_minmax*Vulkan.Extensions.VK_KHR_image_format_list'Vulkan.Core10.Enums.FenceCreateFlagBits'Vulkan.Core10.Enums.EventCreateFlagBits Vulkan.Core10.Enums.DynamicState-Vulkan.Core10.Enums.DeviceQueueCreateFlagBits%Vulkan.Core10.Enums.DeviceCreateFlags"Vulkan.Core10.Enums.DescriptorType5Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits0Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits,Vulkan.Extensions.VK_EXT_descriptor_indexing"Vulkan.Extensions.VK_KHR_multiview$Vulkan.Core10.Enums.ComponentSwizzle-Vulkan.Core10.Enums.CommandPoolCreateFlagBits.Vulkan.Core10.Enums.CommandBufferUsageFlagBits&Vulkan.Core10.Enums.CommandBufferLevel*Vulkan.Core10.Enums.ColorComponentFlagBits)Vulkan.Core10.Enums.BufferViewCreateFlags'Vulkan.Core10.Enums.BufferUsageFlagBits(Vulkan.Core10.Enums.BufferCreateFlagBitsVulkan.Core10.Enums.BorderColorVulkan.Core10.Enums.BlendOpVulkan.Core10.Enums.BlendFactor%Vulkan.Core10.Enums.AttachmentStoreOp/Vulkan.Extensions.VK_QCOM_render_pass_store_ops$Vulkan.Core10.Enums.AttachmentLoadOp1Vulkan.Core10.Enums.AttachmentDescriptionFlagBits"Vulkan.Core10.Enums.AccessFlagBitsVulkan.Core10.APIConstants-Vulkan.Extensions.VK_EXT_queue_family_foreign*Vulkan.Extensions.VK_KHR_driver_properties(Vulkan.Extensions.VK_KHR_external_memoryVulkan.Dynamic"Vulkan.Core11.DeviceInitialization&Vulkan.Extensions.VK_AMD_buffer_marker+Vulkan.Extensions.VK_KHR_timeline_semaphore.Vulkan.Extensions.VK_KHR_imageless_framebuffer6Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count,Vulkan.Extensions.VK_KHR_draw_indirect_count,Vulkan.Extensions.VK_AMD_draw_indirect_count.Vulkan.Extensions.VK_KHR_buffer_device_address)Vulkan.Extensions.VK_EXT_host_query_reset/Vulkan.Core11.Promoted_From_VK_KHR_maintenance1%Vulkan.Extensions.VK_KHR_maintenance15Vulkan.Extensions.VK_KHR_external_memory_capabilities4Vulkan.Extensions.VK_KHR_external_fence_capabilities.Vulkan.Extensions.VK_KHR_device_group_creation-Vulkan.Extensions.VK_KHR_dedicated_allocation-Vulkan.Extensions.VK_NV_acquire_winrt_display1Vulkan.Extensions.VK_KHR_swapchain_mutable_format-Vulkan.Extensions.VK_EXT_swapchain_colorspace%Vulkan.Extensions.VK_KHR_device_group1Vulkan.Extensions.VK_KHR_deferred_host_operations,Vulkan.Extensions.VK_EXT_direct_mode_display,Vulkan.Extensions.VK_EXT_acquire_drm_display8Vulkan.Extensions.VK_KHR_external_semaphore_capabilities%Vulkan.Extensions.VK_KHR_bind_memory21Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion8Vulkan.Extensions.VK_KHR_get_physical_device_properties2Vulkan.Requirement3Vulkan.Extensions.VK_KHR_descriptor_update_template%Vulkan.Extensions.VK_KHR_maintenance3 Vulkan.Core11+Vulkan.Extensions.VK_KHR_create_renderpass2.Vulkan.Extensions.VK_KHR_depth_stencil_resolveVulkan.SPIRVRequirements Vulkan.Core10Vulkan.Extensions.Dependencies%PhysicalDeviceFloatControlsProperties PhysicalDeviceVulkan12PropertiesSemaphoreTypeCreateInfoSamplerReductionModeCreateInfoPhysicalDeviceDriverProperties/PipelineTessellationDomainOriginStateCreateInfo+SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY SamplerYcbcrConversionCreateInfo,AndroidHardwareBufferFormatPropertiesANDROIDFORMAT_R8G8B8A8_UNORMCOMPONENT_SWIZZLE_IDENTITYCOMPONENT_SWIZZLE_BCOMPONENT_SWIZZLE_RCOMPONENT_SWIZZLE_G%PhysicalDevicePointClippingProperties PhysicalDeviceVulkan11Properties"DescriptorUpdateTemplateCreateInfoVertexInputBindingDescription!VertexInputBindingDescription2EXT PipelineCacheValidationCacheEXTDeviceInstanceAllocationCallbacksSubpassBeginInfocmdBeginRenderPasscmdNextSubpasscmdExecuteCommandscmdEndRenderPass)AccelerationStructureBuildGeometryInfoKHR&AccelerationStructureBuildSizesInfoKHR"AccelerationStructureCreateInfoKHR!AccelerationStructureCreateInfoNV)AccelerationStructureDeviceAddressInfoKHR)AccelerationStructureGeometryAabbsDataKHR-AccelerationStructureGeometryInstancesDataKHR AccelerationStructureGeometryKHR2AccelerationStructureGeometryMotionTrianglesDataNV-AccelerationStructureGeometryTrianglesDataKHRAccelerationStructureInfoNV-AccelerationStructureMemoryRequirementsInfoNV!AccelerationStructureMotionInfoNV#AccelerationStructureVersionInfoKHRAcquireNextImageInfoKHRAcquireProfilingLockInfoKHR&AndroidHardwareBufferPropertiesANDROID!AndroidHardwareBufferUsageANDROIDAndroidSurfaceCreateInfoKHRApplicationInfoAttachmentDescription2"AttachmentDescriptionStencilLayoutAttachmentReference2 AttachmentReferenceStencilLayoutBaseInStructureBaseOutStructure%BindAccelerationStructureMemoryInfoNVBindBufferMemoryDeviceGroupInfoBindBufferMemoryInfoBindImageMemoryDeviceGroupInfoBindImageMemoryInfoBindImageMemorySwapchainInfoKHRBindImagePlaneMemoryInfoBindSparseInfoBlitImageInfo2KHRBufferCopy2KHRBufferCreateInfo BufferDeviceAddressCreateInfoEXTBufferDeviceAddressInfoBufferImageCopy2KHRBufferMemoryBarrierBufferMemoryBarrier2KHRBufferMemoryRequirementsInfo2$BufferOpaqueCaptureAddressCreateInfoBufferViewCreateInfoCalibratedTimestampInfoEXTCheckpointData2NVCheckpointDataNVCommandBufferAllocateInfoCommandBufferBeginInfo3CommandBufferInheritanceConditionalRenderingInfoEXTCommandBufferInheritanceInfo3CommandBufferInheritanceRenderPassTransformInfoQCOM-CommandBufferInheritanceViewportScissorInfoNVCommandBufferSubmitInfoKHRCommandPoolCreateInfoComputePipelineCreateInfo ConditionalRenderingBeginInfoEXTCooperativeMatrixPropertiesNV CopyAccelerationStructureInfoKHR(CopyAccelerationStructureToMemoryInfoKHRCopyBufferInfo2KHRCopyBufferToImageInfo2KHRCopyCommandTransformInfoQCOMCopyDescriptorSetCopyImageInfo2KHRCopyImageToBufferInfo2KHR(CopyMemoryToAccelerationStructureInfoKHRCuFunctionCreateInfoNVXCuLaunchInfoNVXCuModuleCreateInfoNVXD3D12FenceSubmitInfoKHRDebugMarkerMarkerInfoEXTDebugMarkerObjectNameInfoEXTDebugMarkerObjectTagInfoEXT DebugReportCallbackCreateInfoEXTDebugUtilsLabelEXT"DebugUtilsMessengerCallbackDataEXT DebugUtilsMessengerCreateInfoEXTDebugUtilsObjectNameInfoEXTDebugUtilsObjectTagInfoEXT%DedicatedAllocationBufferCreateInfoNV$DedicatedAllocationImageCreateInfoNV'DedicatedAllocationMemoryAllocateInfoNVDependencyInfoKHRDescriptorPoolCreateInfo-DescriptorPoolInlineUniformBlockCreateInfoEXTDescriptorSetAllocateInfo)DescriptorSetLayoutBindingFlagsCreateInfoDescriptorSetLayoutCreateInfoDescriptorSetLayoutSupport0DescriptorSetVariableDescriptorCountAllocateInfo1DescriptorSetVariableDescriptorCountLayoutSupportDeviceCreateInfo%DeviceDeviceMemoryReportCreateInfoEXT#DeviceDiagnosticsConfigCreateInfoNVDeviceEventInfoEXTDeviceGroupBindSparseInfo!DeviceGroupCommandBufferBeginInfoDeviceGroupDeviceCreateInfo!DeviceGroupPresentCapabilitiesKHRDeviceGroupPresentInfoKHRDeviceGroupRenderPassBeginInfoDeviceGroupSubmitInfo!DeviceGroupSwapchainCreateInfoKHR$DeviceMemoryOpaqueCaptureAddressInfo'DeviceMemoryOverallocationCreateInfoAMD!DeviceMemoryReportCallbackDataEXTDevicePrivateDataCreateInfoEXTDeviceQueueCreateInfo&DeviceQueueGlobalPriorityCreateInfoEXTDeviceQueueInfo2DirectFBSurfaceCreateInfoEXTDisplayEventInfoEXTDisplayModeCreateInfoKHRDisplayModeProperties2KHR&DisplayNativeHdrSurfaceCapabilitiesAMDDisplayPlaneCapabilities2KHRDisplayPlaneInfo2KHRDisplayPlaneProperties2KHRDisplayPowerInfoEXTDisplayPresentInfoKHRDisplayProperties2KHRDisplaySurfaceCreateInfoKHR"DrmFormatModifierPropertiesListEXTEventCreateInfoExportFenceCreateInfoExportFenceWin32HandleInfoKHRExportMemoryAllocateInfoExportMemoryAllocateInfoNVExportMemoryWin32HandleInfoKHRExportMemoryWin32HandleInfoNVExportSemaphoreCreateInfo!ExportSemaphoreWin32HandleInfoKHRExternalBufferPropertiesExternalFencePropertiesExternalFormatANDROIDExternalImageFormatPropertiesExternalMemoryBufferCreateInfoExternalMemoryImageCreateInfoExternalMemoryImageCreateInfoNVExternalSemaphorePropertiesFenceCreateInfoFenceGetFdInfoKHRFenceGetWin32HandleInfoKHR,FilterCubicImageViewImageFormatPropertiesEXTFormatProperties2$FragmentShadingRateAttachmentInfoKHRFramebufferAttachmentImageInfo FramebufferAttachmentsCreateInfoFramebufferCreateInfo$FramebufferMixedSamplesCombinationNVGeneratedCommandsInfoNV)GeneratedCommandsMemoryRequirementsInfoNVGeometryAABBNV GeometryNVGeometryTrianglesNVGraphicsPipelineCreateInfo(GraphicsPipelineShaderGroupsCreateInfoNVGraphicsShaderGroupCreateInfoNVHdrMetadataEXTHeadlessSurfaceCreateInfoEXTIOSSurfaceCreateInfoMVK ImageBlit2KHR ImageCopy2KHRImageCreateInfo+ImageDrmFormatModifierExplicitCreateInfoEXT'ImageDrmFormatModifierListCreateInfoEXT#ImageDrmFormatModifierPropertiesEXTImageFormatListCreateInfoImageFormatProperties2ImageMemoryBarrierImageMemoryBarrier2KHRImageMemoryRequirementsInfo2!ImagePipeSurfaceCreateInfoFUCHSIA ImagePlaneMemoryRequirementsInfoImageResolve2KHR"ImageSparseMemoryRequirementsInfo2ImageStencilUsageCreateInfoImageSwapchainCreateInfoKHRImageViewASTCDecodeModeEXTImageViewAddressPropertiesNVXImageViewCreateInfoImageViewHandleInfoNVXImageViewUsageCreateInfo&ImportAndroidHardwareBufferInfoANDROIDImportFenceFdInfoKHRImportFenceWin32HandleInfoKHRImportMemoryFdInfoKHRImportMemoryHostPointerInfoEXTImportMemoryWin32HandleInfoKHRImportMemoryWin32HandleInfoNV#ImportMemoryZirconHandleInfoFUCHSIAImportSemaphoreFdInfoKHR!ImportSemaphoreWin32HandleInfoKHR&ImportSemaphoreZirconHandleInfoFUCHSIA"IndirectCommandsLayoutCreateInfoNVIndirectCommandsLayoutTokenNV!InitializePerformanceApiInfoINTELInstanceCreateInfoMacOSSurfaceCreateInfoMVKMappedMemoryRangeMemoryAllocateFlagsInfoMemoryAllocateInfo MemoryBarrierMemoryBarrier2KHRMemoryDedicatedAllocateInfoMemoryDedicatedRequirementsMemoryFdPropertiesKHR)MemoryGetAndroidHardwareBufferInfoANDROIDMemoryGetFdInfoKHRMemoryGetRemoteAddressInfoNVMemoryGetWin32HandleInfoKHR MemoryGetZirconHandleInfoFUCHSIAMemoryHostPointerPropertiesEXT&MemoryOpaqueCaptureAddressAllocateInfoMemoryPriorityAllocateInfoEXTMemoryRequirements2MemoryWin32HandlePropertiesKHR#MemoryZirconHandlePropertiesFUCHSIAMetalSurfaceCreateInfoEXTMultisamplePropertiesEXT$MutableDescriptorTypeCreateInfoVALVE(PerformanceConfigurationAcquireInfoINTEL PerformanceCounterDescriptionKHRPerformanceCounterKHRPerformanceMarkerInfoINTELPerformanceOverrideInfoINTELPerformanceQuerySubmitInfoKHR PerformanceStreamMarkerInfoINTEL"PhysicalDevice16BitStorageFeatures$PhysicalDevice4444FormatsFeaturesEXT!PhysicalDevice8BitStorageFeatures#PhysicalDeviceASTCDecodeFeaturesEXT.PhysicalDeviceAccelerationStructureFeaturesKHR0PhysicalDeviceAccelerationStructurePropertiesKHR/PhysicalDeviceBlendOperationAdvancedFeaturesEXT1PhysicalDeviceBlendOperationAdvancedPropertiesEXT)PhysicalDeviceBufferDeviceAddressFeatures,PhysicalDeviceBufferDeviceAddressFeaturesEXT'PhysicalDeviceCoherentMemoryFeaturesAMD)PhysicalDeviceColorWriteEnableFeaturesEXT0PhysicalDeviceComputeShaderDerivativesFeaturesNV-PhysicalDeviceConditionalRenderingFeaturesEXT4PhysicalDeviceConservativeRasterizationPropertiesEXT)PhysicalDeviceCooperativeMatrixFeaturesNV+PhysicalDeviceCooperativeMatrixPropertiesNV*PhysicalDeviceCornerSampledImageFeaturesNV-PhysicalDeviceCoverageReductionModeFeaturesNV*PhysicalDeviceCustomBorderColorFeaturesEXT,PhysicalDeviceCustomBorderColorPropertiesEXT8PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV(PhysicalDeviceDepthClipEnableFeaturesEXT+PhysicalDeviceDepthStencilResolveProperties(PhysicalDeviceDescriptorIndexingFeatures*PhysicalDeviceDescriptorIndexingProperties/PhysicalDeviceDeviceGeneratedCommandsFeaturesNV1PhysicalDeviceDeviceGeneratedCommandsPropertiesNV+PhysicalDeviceDeviceMemoryReportFeaturesEXT)PhysicalDeviceDiagnosticsConfigFeaturesNV+PhysicalDeviceDiscardRectanglePropertiesEXTPhysicalDeviceDrmPropertiesEXT(PhysicalDeviceExclusiveScissorFeaturesNV.PhysicalDeviceExtendedDynamicState2FeaturesEXT-PhysicalDeviceExtendedDynamicStateFeaturesEXT PhysicalDeviceExternalBufferInfoPhysicalDeviceExternalFenceInfo%PhysicalDeviceExternalImageFormatInfo-PhysicalDeviceExternalMemoryHostPropertiesEXT*PhysicalDeviceExternalMemoryRDMAFeaturesNV#PhysicalDeviceExternalSemaphoreInfoPhysicalDeviceFeatures2,PhysicalDeviceFragmentDensityMap2FeaturesEXT.PhysicalDeviceFragmentDensityMap2PropertiesEXT+PhysicalDeviceFragmentDensityMapFeaturesEXT-PhysicalDeviceFragmentDensityMapPropertiesEXT1PhysicalDeviceFragmentShaderBarycentricFeaturesNV0PhysicalDeviceFragmentShaderInterlockFeaturesEXT0PhysicalDeviceFragmentShadingRateEnumsFeaturesNV2PhysicalDeviceFragmentShadingRateEnumsPropertiesNV,PhysicalDeviceFragmentShadingRateFeaturesKHR$PhysicalDeviceFragmentShadingRateKHR.PhysicalDeviceFragmentShadingRatePropertiesKHR,PhysicalDeviceGlobalPriorityQueryFeaturesEXTPhysicalDeviceGroupProperties$PhysicalDeviceHostQueryResetFeaturesPhysicalDeviceIDProperties+PhysicalDeviceImageDrmFormatModifierInfoEXTPhysicalDeviceImageFormatInfo2(PhysicalDeviceImageRobustnessFeaturesEXT)PhysicalDeviceImageViewImageFormatInfoEXT*PhysicalDeviceImagelessFramebufferFeatures'PhysicalDeviceIndexTypeUint8FeaturesEXT0PhysicalDeviceInheritedViewportScissorFeaturesNV+PhysicalDeviceInlineUniformBlockFeaturesEXT-PhysicalDeviceInlineUniformBlockPropertiesEXT*PhysicalDeviceInvocationMaskFeaturesHUAWEI*PhysicalDeviceLineRasterizationFeaturesEXT,PhysicalDeviceLineRasterizationPropertiesEXT$PhysicalDeviceMaintenance3Properties'PhysicalDeviceMemoryBudgetPropertiesEXT'PhysicalDeviceMemoryPriorityFeaturesEXTPhysicalDeviceMemoryProperties2"PhysicalDeviceMeshShaderFeaturesNV$PhysicalDeviceMeshShaderPropertiesNV"PhysicalDeviceMultiDrawFeaturesEXT$PhysicalDeviceMultiDrawPropertiesEXTPhysicalDeviceMultiviewFeatures5PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX!PhysicalDeviceMultiviewProperties0PhysicalDeviceMutableDescriptorTypeFeaturesVALVE%PhysicalDevicePCIBusInfoPropertiesEXT)PhysicalDevicePerformanceQueryFeaturesKHR+PhysicalDevicePerformanceQueryPropertiesKHR5PhysicalDevicePipelineCreationCacheControlFeaturesEXT5PhysicalDevicePipelineExecutablePropertiesFeaturesKHR*PhysicalDevicePortabilitySubsetFeaturesKHR,PhysicalDevicePortabilitySubsetPropertiesKHR"PhysicalDevicePresentIdFeaturesKHR$PhysicalDevicePresentWaitFeaturesKHR$PhysicalDevicePrivateDataFeaturesEXTPhysicalDeviceProperties2%PhysicalDeviceProtectedMemoryFeatures'PhysicalDeviceProtectedMemoryProperties(PhysicalDeviceProvokingVertexFeaturesEXT*PhysicalDeviceProvokingVertexPropertiesEXT)PhysicalDevicePushDescriptorPropertiesKHR!PhysicalDeviceRayQueryFeaturesKHR,PhysicalDeviceRayTracingMotionBlurFeaturesNV+PhysicalDeviceRayTracingPipelineFeaturesKHR-PhysicalDeviceRayTracingPipelinePropertiesKHR$PhysicalDeviceRayTracingPropertiesNV2PhysicalDeviceRepresentativeFragmentTestFeaturesNV$PhysicalDeviceRobustness2FeaturesEXT&PhysicalDeviceRobustness2PropertiesEXT*PhysicalDeviceSampleLocationsPropertiesEXT+PhysicalDeviceSamplerFilterMinmaxProperties,PhysicalDeviceSamplerYcbcrConversionFeatures'PhysicalDeviceScalarBlockLayoutFeatures1PhysicalDeviceSeparateDepthStencilLayoutsFeatures+PhysicalDeviceShaderAtomicFloat2FeaturesEXT*PhysicalDeviceShaderAtomicFloatFeaturesEXT'PhysicalDeviceShaderAtomicInt64Features$PhysicalDeviceShaderClockFeaturesKHR&PhysicalDeviceShaderCoreProperties2AMD%PhysicalDeviceShaderCorePropertiesAMD7PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT*PhysicalDeviceShaderDrawParametersFeatures'PhysicalDeviceShaderFloat16Int8Features/PhysicalDeviceShaderImageAtomicInt64FeaturesEXT,PhysicalDeviceShaderImageFootprintFeaturesNV2PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL(PhysicalDeviceShaderSMBuiltinsFeaturesNV*PhysicalDeviceShaderSMBuiltinsPropertiesNV1PhysicalDeviceShaderSubgroupExtendedTypesFeatures9PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR2PhysicalDeviceShaderTerminateInvocationFeaturesKHR(PhysicalDeviceShadingRateImageFeaturesNV*PhysicalDeviceShadingRateImagePropertiesNV$PhysicalDeviceSparseImageFormatInfo2 PhysicalDeviceSubgroupProperties,PhysicalDeviceSubgroupSizeControlFeaturesEXT.PhysicalDeviceSubgroupSizeControlPropertiesEXTPhysicalDeviceSurfaceInfo2KHR)PhysicalDeviceSynchronization2FeaturesKHR-PhysicalDeviceTexelBufferAlignmentFeaturesEXT/PhysicalDeviceTexelBufferAlignmentPropertiesEXT2PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT'PhysicalDeviceTimelineSemaphoreFeatures)PhysicalDeviceTimelineSemaphorePropertiesPhysicalDeviceToolPropertiesEXT*PhysicalDeviceTransformFeedbackFeaturesEXT,PhysicalDeviceTransformFeedbackPropertiesEXT1PhysicalDeviceUniformBufferStandardLayoutFeatures&PhysicalDeviceVariablePointersFeatures/PhysicalDeviceVertexAttributeDivisorFeaturesEXT1PhysicalDeviceVertexAttributeDivisorPropertiesEXT0PhysicalDeviceVertexInputDynamicStateFeaturesEXTPhysicalDeviceVulkan11FeaturesPhysicalDeviceVulkan12Features'PhysicalDeviceVulkanMemoryModelFeatures6PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT)PhysicalDeviceYcbcrImageArraysFeaturesEXT6PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHRPipelineCacheCreateInfo,PipelineColorBlendAdvancedStateCreateInfoEXT!PipelineColorBlendStateCreateInfoPipelineColorWriteCreateInfoEXT$PipelineCompilerControlCreateInfoAMD+PipelineCoverageModulationStateCreateInfoNV*PipelineCoverageReductionStateCreateInfoNV(PipelineCoverageToColorStateCreateInfoNV%PipelineCreationFeedbackCreateInfoEXT#PipelineDepthStencilStateCreateInfo*PipelineDiscardRectangleStateCreateInfoEXTPipelineDynamicStateCreateInfoPipelineExecutableInfoKHR+PipelineExecutableInternalRepresentationKHRPipelineExecutablePropertiesKHRPipelineExecutableStatisticKHR0PipelineFragmentShadingRateEnumStateCreateInfoNV-PipelineFragmentShadingRateStateCreateInfoKHRPipelineInfoKHR$PipelineInputAssemblyStateCreateInfoPipelineLayoutCreateInfoPipelineLibraryCreateInfoKHR"PipelineMultisampleStateCreateInfo3PipelineRasterizationConservativeStateCreateInfoEXT0PipelineRasterizationDepthClipStateCreateInfoEXT+PipelineRasterizationLineStateCreateInfoEXT6PipelineRasterizationProvokingVertexStateCreateInfoEXT$PipelineRasterizationStateCreateInfo/PipelineRasterizationStateRasterizationOrderAMD-PipelineRasterizationStateStreamCreateInfoEXT3PipelineRepresentativeFragmentTestStateCreateInfoNV)PipelineSampleLocationsStateCreateInfoEXTPipelineShaderStageCreateInfo4PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT#PipelineTessellationStateCreateInfo,PipelineVertexInputDivisorStateCreateInfoEXT"PipelineVertexInputStateCreateInfo2PipelineViewportCoarseSampleOrderStateCreateInfoNV1PipelineViewportExclusiveScissorStateCreateInfoNV1PipelineViewportShadingRateImageStateCreateInfoNVPipelineViewportStateCreateInfo(PipelineViewportSwizzleStateCreateInfoNV)PipelineViewportWScalingStateCreateInfoNVPresentFrameTokenGGP PresentIdKHRPresentInfoKHRPresentRegionsKHRPresentTimesInfoGOOGLEPrivateDataSlotCreateInfoEXTProtectedSubmitInfoQueryPoolCreateInfo!QueryPoolPerformanceCreateInfoKHR(QueryPoolPerformanceQueryCreateInfoINTEL"QueueFamilyCheckpointProperties2NV!QueueFamilyCheckpointPropertiesNV&QueueFamilyGlobalPriorityPropertiesEXTQueueFamilyProperties2RayTracingPipelineCreateInfoKHRRayTracingPipelineCreateInfoNV(RayTracingPipelineInterfaceCreateInfoKHR"RayTracingShaderGroupCreateInfoKHR!RayTracingShaderGroupCreateInfoNVRenderPassAttachmentBeginInfoRenderPassBeginInfoRenderPassCreateInfoRenderPassCreateInfo2)RenderPassFragmentDensityMapCreateInfoEXT)RenderPassInputAttachmentAspectCreateInfoRenderPassMultiviewCreateInfo%RenderPassSampleLocationsBeginInfoEXT RenderPassTransformBeginInfoQCOMResolveImageInfo2KHRSampleLocationsInfoEXTSamplerCreateInfo%SamplerCustomBorderColorCreateInfoEXT+SamplerYcbcrConversionImageFormatPropertiesSamplerYcbcrConversionInfoScreenSurfaceCreateInfoQNXSemaphoreCreateInfoSemaphoreGetFdInfoKHRSemaphoreGetWin32HandleInfoKHR#SemaphoreGetZirconHandleInfoFUCHSIASemaphoreSignalInfoSemaphoreSubmitInfoKHRSemaphoreWaitInfoShaderModuleCreateInfo(ShaderModuleValidationCacheCreateInfoEXT#SharedPresentSurfaceCapabilitiesKHRSparseImageFormatProperties2SparseImageMemoryRequirements2$StreamDescriptorSurfaceCreateInfoGGP SubmitInfoSubmitInfo2KHRSubpassDependency2SubpassDescription2%SubpassDescriptionDepthStencilResolveSubpassEndInfoSurfaceCapabilities2EXTSurfaceCapabilities2KHR)SurfaceCapabilitiesFullScreenExclusiveEXTSurfaceFormat2KHR!SurfaceFullScreenExclusiveInfoEXT&SurfaceFullScreenExclusiveWin32InfoEXTSurfaceProtectedCapabilitiesKHRSwapchainCounterCreateInfoEXTSwapchainCreateInfoKHR&SwapchainDisplayNativeHdrCreateInfoAMD#TextureLODGatherFormatPropertiesAMDTimelineSemaphoreSubmitInfoValidationCacheCreateInfoEXTValidationFeaturesEXTValidationFlagsEXT#VertexInputAttributeDescription2EXTViSurfaceCreateInfoNNWaylandSurfaceCreateInfoKHR$Win32KeyedMutexAcquireReleaseInfoKHR#Win32KeyedMutexAcquireReleaseInfoNVWin32SurfaceCreateInfoKHRWriteDescriptorSet*WriteDescriptorSetAccelerationStructureKHR)WriteDescriptorSetAccelerationStructureNV'WriteDescriptorSetInlineUniformBlockEXTXcbSurfaceCreateInfoKHRXlibSurfaceCreateInfoKHRPhysicalDeviceLimitsgetPhysicalDeviceProperties2PhysicalDeviceMemoryPropertiesStencilOpStatecmdSetStencilOpEXTIMAGE_LAYOUT_UNDEFINEDIMAGE_LAYOUT_PREINITIALIZEDendCommandBuffer0FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT BufferCopyBufferImageCopyDescriptorBufferInfoImageFormatPropertiesIndirectCommandsStreamNV MemoryHeapMemoryRequirementsSparseImageMemoryBindSparseImageMemoryRequirementsSparseMemoryBindStridedDeviceAddressRegionKHRSubresourceLayoutbindBufferMemorybindImageMemorycmdBeginTransformFeedbackEXTcmdBindIndexBuffer"cmdBindTransformFeedbackBuffersEXTcmdBindVertexBufferscmdBindVertexBuffers2EXTcmdBuildAccelerationStructureNVcmdCopyQueryPoolResultscmdDispatchIndirectcmdDrawIndexedIndirectcmdDrawIndexedIndirectCountcmdDrawIndexedIndirectCountAMDcmdDrawIndexedIndirectCountKHRcmdDrawIndirectcmdDrawIndirectByteCountEXTcmdDrawIndirectCountcmdDrawIndirectCountAMDcmdDrawIndirectCountKHRcmdDrawMeshTasksIndirectCountNVcmdDrawMeshTasksIndirectNVcmdEndTransformFeedbackEXT cmdFillBuffercmdTraceRaysNVcmdUpdateBuffercmdWriteBufferMarker2AMDcmdWriteBufferMarkerAMDgetDeviceMemoryCommitmentgetQueryPoolResults mapMemory BindIndexBufferIndirectCommandNV!BindVertexBufferIndirectCommandNVDeviceOrHostAddressConstKHRDeviceOrHostAddressKHR)cmdBuildAccelerationStructuresIndirectKHRcmdTraceRaysIndirectKHRDisplayPropertiesKHRPerformanceValueDataINTELPhysicalDeviceFeaturesPhysicalDeviceSparseProperties!PipelineColorBlendAttachmentState#PipelineExecutableStatisticValueKHRcmdExecuteGeneratedCommandsNVcmdSetColorWriteEnableEXTcmdSetDepthBiasEnableEXTcmdSetDepthBoundsTestEnableEXTcmdSetDepthTestEnableEXTcmdSetDepthWriteEnableEXTcmdSetPrimitiveRestartEnableEXT cmdSetRasterizerDiscardEnableEXTcmdSetStencilTestEnableEXT"getPhysicalDeviceSurfaceSupportKHRsetLocalDimmingAMD waitForFences ClearRectcmdSetDiscardRectangleEXTcmdSetExclusiveScissorNV cmdSetScissorcmdSetScissorWithCountEXT%getPhysicalDevicePresentRectanglesKHR ImageBlit ImageCopy ImageResolveDisplayPlaneCapabilitiesKHR RectLayerKHRQueueFamilyPropertiesSparseImageFormatPropertiesDisplayModeParametersKHRSurfaceCapabilitiesKHRcmdSetFragmentShadingRateKHRgetRenderAreaGranularityColorComponentFlagsColorComponentFlagBitsgetPhysicalDeviceFeatures2FALSEAttachmentDescriptionTRUE#COVERAGE_REDUCTION_MODE_TRUNCATE_NVFormatFORMAT_R8_UINTFORMAT_R8_SINTFORMAT_R16_UINTFORMAT_R16_SINTFORMAT_R32_UINTFORMAT_R32_SINT"IMAGE_CREATE_CORNER_SAMPLED_BIT_NV"SWAPCHAIN_CREATE_PROTECTED_BIT_KHRqueuePresentKHR SwapchainKHR ImageViewImage$IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BITcreateSwapchainKHR#FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT4FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT4FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT&FORMAT_G16_B16R16_2PLANE_444_UNORM_EXTVERTEX_INPUT_RATE_INSTANCE FORMAT_FEATURE_SAMPLED_IMAGE_BITFORMAT_FEATURE_BLIT_SRC_BIT.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT!FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT!FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT!FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT"FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT"FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT"FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT!getPhysicalDeviceFormatProperties&getPhysicalDeviceImageFormatProperties NULL_HANDLEcreateGraphicsPipelinescreateRayTracingPipelinesKHRcreateRayTracingPipelinesNVcreateComputePipelines9PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT/PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT5PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT7DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT(DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT(DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BITINDEX_TYPE_UINT8_EXT7SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT PIPELINE_STAGE_VERTEX_SHADER_BITPipelineLayout7IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT SampleMask0ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT ACCESS_COLOR_ATTACHMENT_READ_BIT FORMAT_A4R4G4B4_UNORM_PACK16_EXTFormatFeatureFlagBits FORMAT_A4B4G4R4_UNORM_PACK16_EXT*PhysicalDeviceVulkanMemoryModelFeaturesKHR"updateDescriptorSetWithTemplateKHRupdateDescriptorSetsVulkan.Core12.Enums&BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT#getDeviceMemoryOpaqueCaptureAddress createFence#ExternalSemaphoreHandleTypeFlagBitsgetMemoryFdPropertiesKHR!getMemoryHostPointerPropertiesEXT!getMemoryWin32HandlePropertiesKHR&getMemoryZirconHandlePropertiesFUCHSIAAHardwareBuffer?EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID3EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT>EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXTExternalFenceHandleTypeFlagBitstrimCommandPooltrimCommandPoolKHRVulkan.Core11.EnumsgetShaderInfoAMDQUEUE_GRAPHICS_BITQUEUE_COMPUTE_BITPIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT;PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXTShaderStageFlagBitsSHADER_STAGE_COMPUTE_BITIMAGE_CREATE_SUBSAMPLED_BIT_EXT)getPhysicalDeviceMultisamplePropertiesEXT,getPhysicalDeviceSparseImageFormatProperties!DEVICE_QUEUE_CREATE_PROTECTED_BIT+cmdWriteAccelerationStructuresPropertiesKHR*cmdWriteAccelerationStructuresPropertiesNV(writeAccelerationStructuresPropertiesKHRcmdSetPrimitiveTopologyEXTPipelineStageFlags2KHRcmdWriteTimestampcmdCopyAccelerationStructureNV!cmdBuildAccelerationStructuresKHRcmdCopyAccelerationStructureKHR'cmdCopyAccelerationStructureToMemoryKHR'cmdCopyMemoryToAccelerationStructureKHRcmdTraceRaysKHR cmdPreprocessGeneratedCommandsNV AccessFlagscmdBlitImage2KHR cmdBlitImagecmdResolveImage2KHRcmdResolveImagecmdClearAttachmentsPIPELINE_CREATE_DISPATCH_BASEcmdDispatchBasecompileDeferredNV"getPipelineExecutableStatisticsKHR/getPipelineExecutableInternalRepresentationsKHRSHADER_UNUSED_KHRPipelinePIPELINE_COMPILE_REQUIRED_EXTPipelineCacheHeaderVersionOnecreatePipelineCachegetPipelineCacheDataSubpassDescriptioncmdBindDescriptorSetscmdBindPipelinecmdBindPipelineShaderGroupNVcmdPushDescriptorSetKHRPhysicalDevicePropertiesPhysicalDeviceQueue Semaphore CommandBufferFence DeviceMemoryBufferEvent QueryPool BufferView ShaderModule RenderPassDescriptorSetLayoutSamplerDescriptorPool DescriptorSet Framebuffer CommandPoolSamplerYcbcrConversionDescriptorUpdateTemplate SurfaceKHR DisplayKHRDisplayModeKHRDebugReportCallbackEXTIndirectCommandsLayoutNVDebugUtilsMessengerEXTAccelerationStructureNVAccelerationStructureKHRPerformanceConfigurationINTELDeferredOperationKHRPrivateDataSlotEXTgetPrivateDataEXTsetPrivateDataEXTflushMappedMemoryRangesinvalidateMappedMemoryRangesMEMORY_HEAP_DEVICE_LOCAL_BITcmdSetLogicOpEXT$PFN_vkInternalAllocationNotificationPFN_vkInternalFreeNotificationgetDeviceProcAddrgetInstanceProcAddrdestroyInstanceERROR_OUT_OF_HOST_MEMORY/PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT DESCRIPTOR_TYPE_INPUT_ATTACHMENT$MEMORY_PROPERTY_LAZILY_ALLOCATED_BITDESCRIPTOR_TYPE_STORAGE_IMAGEDESCRIPTOR_TYPE_SAMPLED_IMAGE&DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER'getPhysicalDeviceImageFormatProperties2$IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT(IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT IMAGE_USAGE_INPUT_ATTACHMENT_BITImageUsageFlagBits0getPhysicalDeviceExternalImageFormatPropertiesNV&getImageDrmFormatModifierPropertiesEXTDescriptorImageInfoAttachmentReferencecmdBindInvocationMaskHUAWEIcmdBindShadingRateImageNVcmdClearColorImagecmdClearDepthStencilImagecmdCopyBufferToImage cmdCopyImagecmdCopyImageToBufferacquireNextImageKHR(IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT4IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHRIMAGE_TILING_OPTIMALIMAGE_USAGE_TRANSFER_DST_BITIMAGE_USAGE_TRANSFER_SRC_BITIMAGE_USAGE_SAMPLED_BIT IMAGE_USAGE_COLOR_ATTACHMENT_BITIMAGE_ASPECT_DEPTH_BITIMAGE_ASPECT_STENCIL_BITbindImageMemory2IMAGE_VIEW_TYPE_2DIMAGE_VIEW_TYPE_2D_ARRAY!SAMPLER_CREATE_SUBSAMPLED_BIT_EXTDescriptorSetLayoutBindingIMAGE_VIEW_TYPE_CUBEIMAGE_VIEW_TYPE_CUBE_ARRAYMEMORY_HEAP_MULTI_INSTANCE_BITIMAGE_ASPECT_METADATA_BITImageAspectFlagBitscmdSetFrontFaceEXTDrmFormatModifierPropertiesEXT FILTER_LINEARSAMPLER_MIPMAP_MODE_LINEARSamplerReductionMode1FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXTFILTER_CUBIC_EXTCHROMA_LOCATION_MIDPOINTCHROMA_LOCATION_COSITED_EVENIMAGE_CREATE_DISJOINT_BIT$DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER$DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFERVertexInputAttributeDescriptionSurfaceFormatKHR"getPhysicalDeviceFormatProperties2%getPhysicalDeviceFormatProperties2KHRgetImageSubresourceLayoutIMAGE_ASPECT_PLANE_0_BITIMAGE_ASPECT_PLANE_1_BITIMAGE_ASPECT_PLANE_2_BITFORMAT_R16G16B16A16_SFLOATFORMAT_E5B9G9R9_UFLOAT_PACK32cmdSetViewportWScalingNVDiscardRectangleModeEXTcmdSetSampleLocationsEXT$cmdSetRayTracingPipelineStackSizeKHR"cmdSetViewportShadingRatePaletteNVcmdSetCoarseSampleOrderNVcmdSetFragmentShadingRateEnumNVcmdSetLineStippleEXTcmdSetCullModeEXTcmdSetViewportWithCountEXTcmdSetDepthCompareOpEXTcmdSetVertexInputEXTcmdSetPatchControlPointsEXTcmdSetStencilReferencecmdSetStencilWriteMaskcmdSetStencilCompareMaskcmdSetDepthBoundscmdSetBlendConstantscmdSetDepthBiascmdSetLineWidthcmdSetViewportDescriptorPoolSizeDescriptorUpdateTemplateEntryMutableDescriptorTypeListVALVEDESCRIPTOR_TYPE_MUTABLE_VALVEDESCRIPTOR_TYPE_UNIFORM_BUFFERDESCRIPTOR_TYPE_STORAGE_BUFFER5DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE*DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE&DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC&DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BITresetDescriptorPoolallocateDescriptorSetsfreeDescriptorSetsgetDescriptorSetLayoutSupportDESCRIPTOR_TYPE_SAMPLER*DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR)DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV/SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVXComponentMappingresetCommandBufferbeginCommandBuffergetBufferDeviceAddresscmdBeginConditionalRenderingEXT)ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT!ACCESS_COLOR_ATTACHMENT_WRITE_BIT(ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BITAccessFlags2KHR PIPELINE_STAGE_DRAW_INDIRECT_BIT3PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHRPIPELINE_STAGE_VERTEX_INPUT_BIT!PIPELINE_STAGE_TASK_SHADER_BIT_NV!PIPELINE_STAGE_MESH_SHADER_BIT_NV)PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT1PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT"PIPELINE_STAGE_GEOMETRY_SHADER_BIT"PIPELINE_STAGE_FRAGMENT_SHADER_BIT!PIPELINE_STAGE_COMPUTE_SHADER_BIT*PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT&PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BITPIPELINE_STAGE_TRANSFER_BITPIPELINE_STAGE_HOST_BIT(PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV,PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT7PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR(ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI+PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI)PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT%PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHRVulkan.Core10.EnumsallocateMemorycreateAccelerationStructureKHRcreateAccelerationStructureNVcreateAndroidSurfaceKHR createBuffercreateBufferViewcreateCommandPoolcreateCuFunctionNVXcreateCuModuleNVXcreateDebugReportCallbackEXTcreateDebugUtilsMessengerEXTcreateDeferredOperationKHRcreateDescriptorPoolcreateDescriptorSetLayoutcreateDescriptorUpdateTemplate!createDescriptorUpdateTemplateKHR createDevicecreateDirectFBSurfaceEXTcreateDisplayModeKHRcreateDisplayPlaneSurfaceKHR createEventcreateFramebuffercreateHeadlessSurfaceEXTcreateIOSSurfaceMVK createImagecreateImagePipeSurfaceFUCHSIAcreateImageViewcreateIndirectCommandsLayoutNVcreateInstancecreateMacOSSurfaceMVKcreateMetalSurfaceEXTcreatePipelineLayoutcreatePrivateDataSlotEXTcreateQueryPoolcreateRenderPasscreateRenderPass2createRenderPass2KHR createSamplercreateSamplerYcbcrConversioncreateSamplerYcbcrConversionKHRcreateScreenSurfaceQNXcreateSemaphorecreateShaderModulecreateSharedSwapchainsKHR createStreamDescriptorSurfaceGGPcreateValidationCacheEXTcreateViSurfaceNNcreateWaylandSurfaceKHRcreateWin32SurfaceKHRcreateXcbSurfaceKHRcreateXlibSurfaceKHRdestroyAccelerationStructureKHRdestroyAccelerationStructureNV destroyBufferdestroyBufferViewdestroyCommandPooldestroyCuFunctionNVXdestroyCuModuleNVXdestroyDebugReportCallbackEXTdestroyDebugUtilsMessengerEXTdestroyDeferredOperationKHRdestroyDescriptorPooldestroyDescriptorSetLayoutdestroyDescriptorUpdateTemplate"destroyDescriptorUpdateTemplateKHR destroyDevice destroyEvent destroyFencedestroyFramebuffer destroyImagedestroyImageViewdestroyIndirectCommandsLayoutNVdestroyPipelinedestroyPipelineCachedestroyPipelineLayoutdestroyPrivateDataSlotEXTdestroyQueryPooldestroyRenderPassdestroySamplerdestroySamplerYcbcrConversion destroySamplerYcbcrConversionKHRdestroySemaphoredestroyShaderModuledestroySurfaceKHRdestroySwapchainKHRdestroyValidationCacheEXT freeMemoryregisterDeviceEventEXTregisterDisplayEventEXT ExternalMemoryHandleTypeFlagBitsgetSemaphoreCounterValuegetSemaphoreCounterValueKHRgetDeviceQueuegetDeviceQueue2getQueueCheckpointData2NVgetQueueCheckpointDataNVqueueBeginDebugUtilsLabelEXTqueueBindSparsequeueEndDebugUtilsLabelEXTqueueInsertDebugUtilsLabelEXT%queueSetPerformanceConfigurationINTEL queueSubmitqueueSubmit2KHR queueWaitIdle cmdBeginQuerycmdBeginQueryIndexedEXT cmdEndQuerycmdEndQueryIndexedEXTcmdResetQueryPoolcmdWriteTimestamp2KHRresetQueryPoolresetQueryPoolEXTcmdPushConstants#cmdPushDescriptorSetWithTemplateKHRmergePipelineCaches/getRayTracingCaptureReplayShaderGroupHandlesKHR"getRayTracingShaderGroupHandlesKHR!getRayTracingShaderGroupHandlesNV$getRayTracingShaderGroupStackSizeKHRacquireDrmDisplayEXTacquireWinrtDisplayNVacquireXlibDisplayEXT"enumerateDeviceExtensionPropertiesenumerateDeviceLayerProperties=enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHRenumeratePhysicalDevicesgetDisplayModeProperties2KHRgetDisplayModePropertiesKHRgetDisplayPlaneCapabilities2KHRgetDisplayPlaneCapabilitiesKHR#getDisplayPlaneSupportedDisplaysKHRgetDrmDisplayEXT,getPhysicalDeviceCalibrateableTimeDomainsEXT.getPhysicalDeviceCooperativeMatrixPropertiesNV/getPhysicalDeviceDirectFBPresentationSupportEXT+getPhysicalDeviceDisplayPlaneProperties2KHR*getPhysicalDeviceDisplayPlanePropertiesKHR&getPhysicalDeviceDisplayProperties2KHR%getPhysicalDeviceDisplayPropertiesKHR)getPhysicalDeviceExternalBufferProperties,getPhysicalDeviceExternalBufferPropertiesKHR(getPhysicalDeviceExternalFenceProperties+getPhysicalDeviceExternalFencePropertiesKHR,getPhysicalDeviceExternalSemaphoreProperties/getPhysicalDeviceExternalSemaphorePropertiesKHRgetPhysicalDeviceFeaturesgetPhysicalDeviceFeatures2KHR(getPhysicalDeviceFragmentShadingRatesKHR*getPhysicalDeviceImageFormatProperties2KHR!getPhysicalDeviceMemoryProperties"getPhysicalDeviceMemoryProperties2%getPhysicalDeviceMemoryProperties2KHRgetPhysicalDevicePropertiesgetPhysicalDeviceProperties2KHR5getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR&getPhysicalDeviceQueueFamilyProperties'getPhysicalDeviceQueueFamilyProperties2*getPhysicalDeviceQueueFamilyProperties2KHR-getPhysicalDeviceScreenPresentationSupportQNX-getPhysicalDeviceSparseImageFormatProperties20getPhysicalDeviceSparseImageFormatProperties2KHR?getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(getPhysicalDeviceSurfaceCapabilities2EXT(getPhysicalDeviceSurfaceCapabilities2KHR'getPhysicalDeviceSurfaceCapabilitiesKHR#getPhysicalDeviceSurfaceFormats2KHR"getPhysicalDeviceSurfaceFormatsKHR(getPhysicalDeviceSurfacePresentModes2EXT'getPhysicalDeviceSurfacePresentModesKHR"getPhysicalDeviceToolPropertiesEXT.getPhysicalDeviceWaylandPresentationSupportKHR,getPhysicalDeviceWin32PresentationSupportKHR*getPhysicalDeviceXcbPresentationSupportKHR+getPhysicalDeviceXlibPresentationSupportKHRgetRandROutputDisplayEXTgetWinrtDisplayNVreleaseDisplayEXTdebugReportMessageEXTenumeratePhysicalDeviceGroups enumeratePhysicalDeviceGroupsKHRsubmitDebugUtilsMessageEXTgetImageViewAddressNVXSparseImageMemoryBindInfoSparseImageOpaqueMemoryBindInfogetImageMemoryRequirements getImageSparseMemoryRequirementsgetSwapchainImagesKHRgetFenceStatus resetFences cmdResetEventcmdResetEvent2KHR cmdSetEventcmdSetEvent2KHR cmdWaitEventscmdWaitEvents2KHRgetEventStatus resetEventsetEvent!acquireFullScreenExclusiveModeEXTacquireNextImage2KHR$acquirePerformanceConfigurationINTELacquireProfilingLockKHRallocateCommandBuffers!bindAccelerationStructureMemoryNVbindBufferMemory2bindBufferMemory2KHRbindImageMemory2KHRbuildAccelerationStructuresKHRcopyAccelerationStructureKHR$copyAccelerationStructureToMemoryKHR$copyMemoryToAccelerationStructureKHRdebugMarkerSetObjectNameEXTdebugMarkerSetObjectTagEXTdeferredOperationJoinKHRdeviceWaitIdledisplayPowerControlEXTfreeCommandBuffers%getAccelerationStructureBuildSizesKHR(getAccelerationStructureDeviceAddressKHR getAccelerationStructureHandleNV,getAccelerationStructureMemoryRequirementsNV)getAndroidHardwareBufferPropertiesANDROIDgetBufferDeviceAddressEXTgetBufferDeviceAddressKHRgetBufferMemoryRequirementsgetBufferMemoryRequirements2getBufferMemoryRequirements2KHRgetBufferOpaqueCaptureAddress getBufferOpaqueCaptureAddressKHRgetCalibratedTimestampsEXT%getDeferredOperationMaxConcurrencyKHRgetDeferredOperationResultKHR getDescriptorSetLayoutSupportKHR.getDeviceAccelerationStructureCompatibilityKHR getDeviceGroupPeerMemoryFeatures#getDeviceGroupPeerMemoryFeaturesKHR$getDeviceGroupPresentCapabilitiesKHR%getDeviceGroupSurfacePresentModes2EXT$getDeviceGroupSurfacePresentModesKHR&getDeviceMemoryOpaqueCaptureAddressKHR getFenceFdKHRgetFenceWin32HandleKHR(getGeneratedCommandsMemoryRequirementsNVgetImageMemoryRequirements2getImageMemoryRequirements2KHR!getImageSparseMemoryRequirements2$getImageSparseMemoryRequirements2KHRgetImageViewHandleNVX%getMemoryAndroidHardwareBufferANDROIDgetMemoryFdKHRgetMemoryRemoteAddressNVgetMemoryWin32HandleKHRgetMemoryWin32HandleNVgetMemoryZirconHandleFUCHSIAgetPastPresentationTimingGOOGLEgetPerformanceParameterINTEL"getPipelineExecutablePropertiesKHRgetRefreshCycleDurationGOOGLEgetSemaphoreFdKHRgetSemaphoreWin32HandleKHRgetSemaphoreZirconHandleFUCHSIAgetSwapchainCounterEXTgetSwapchainStatusKHRgetValidationCacheDataEXTimportFenceFdKHRimportFenceWin32HandleKHRimportSemaphoreFdKHRimportSemaphoreWin32HandleKHR"importSemaphoreZirconHandleFUCHSIAinitializePerformanceApiINTELmergeValidationCachesEXT!releaseFullScreenExclusiveModeEXT$releasePerformanceConfigurationINTELreleaseProfilingLockKHRresetCommandPoolsetDebugUtilsObjectNameEXTsetDebugUtilsObjectTagEXTsetHdrMetadataEXTsignalSemaphoresignalSemaphoreKHRuninitializePerformanceApiINTEL unmapMemoryupdateDescriptorSetWithTemplatewaitForPresentKHRwaitSemaphoreswaitSemaphoresKHRcmdBeginDebugUtilsLabelEXTcmdBeginRenderPass2cmdBeginRenderPass2KHR cmdCopyBuffercmdCopyBuffer2KHRcmdCopyBufferToImage2KHRcmdCopyImage2KHRcmdCopyImageToBuffer2KHRcmdCuLaunchKernelNVXcmdDebugMarkerBeginEXTcmdDebugMarkerEndEXTcmdDebugMarkerInsertEXT cmdDispatchcmdDispatchBaseKHRcmdDrawcmdDrawIndexedcmdDrawMeshTasksNVcmdDrawMultiEXTcmdDrawMultiIndexedEXTcmdEndConditionalRenderingEXTcmdEndDebugUtilsLabelEXTcmdEndRenderPass2cmdEndRenderPass2KHRcmdInsertDebugUtilsLabelEXTcmdNextSubpass2cmdNextSubpass2KHRcmdPipelineBarriercmdPipelineBarrier2KHRcmdSetCheckpointNVcmdSetDeviceMaskcmdSetDeviceMaskKHRcmdSetPerformanceMarkerINTELcmdSetPerformanceOverrideINTEL"cmdSetPerformanceStreamMarkerINTELSparseBufferMemoryBindInfo-DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NVSampleCountFlags"DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV'FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT ImageViewTypeSAMPLER_REDUCTION_MODE_MINSAMPLER_REDUCTION_MODE_MAXSamplerAddressMode"SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGEIMAGE_VIEW_TYPE_3DIMAGE_VIEW_TYPE_1D_ARRAY!IMAGE_CREATE_SPARSE_RESIDENCY_BIT"BUFFER_CREATE_SPARSE_RESIDENCY_BITPIPELINE_BIND_POINT_GRAPHICS6IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT%DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT$DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT#DYNAMIC_STATE_VIEWPORT_W_SCALING_NV.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV$DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT&DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT+DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT#DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXTDYNAMIC_STATE_LOGIC_OP_EXTLogicOp*DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT)FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BITDYNAMIC_STATE_VERTEX_INPUT_EXT-DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT BUFFER_USAGE_INDIRECT_BUFFER_BIT#MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV/EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NVIMAGE_CREATE_SPARSE_BINDING_BITIMAGE_CREATE_SPARSE_ALIASED_BITIMAGE_USAGE_STORAGE_BIT-EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT1EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BITPIPELINE_CREATE_LIBRARY_BIT_KHR*PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR8PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR SemaphoreTypeSEMAPHORE_TYPE_BINARY,EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT*EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BITSEMAPHORE_IMPORT_TEMPORARY_BITSEMAPHORE_TYPE_TIMELINESemaphoreImportFlagBits-EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR(EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT&EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BITFenceImportFlagBits FORMAT_FEATURE_VERTEX_BUFFER_BITFormatProperties(QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT.BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT WHOLE_SIZE6BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXTQUERY_TYPE_TIMESTAMP4QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR8QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR3QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NVQUERY_TYPE_OCCLUSIONQUERY_TYPE_PIPELINE_STATISTICS QUERY_TYPE_PERFORMANCE_QUERY_KHR,PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR)PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR"DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT!ERROR_INVALID_EXTERNAL_HANDLE_KHRExternalMemoryProperties#DYNAMIC_STATE_DISCARD_RECTANGLE_EXT*BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT$DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXTACCESS_TRANSFER_WRITE_BIT(PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NVBUFFER_USAGE_TRANSFER_DST_BITImageCreateFlagBitsDrawIndirectCommandDrawIndexedIndirectCommandERROR_FORMAT_NOT_SUPPORTEDBufferCreateFlagBitsBufferUsageFlagBitsATTACHMENT_LOAD_OP_CLEAR BUFFER_CREATE_SPARSE_BINDING_BIT,EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT0EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT*EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT.EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT)EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT2EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIADisplayModePropertiesKHRDisplayPlanePropertiesKHR CAMetalLayerCOLOR_SPACE_DCI_P3_LINEAR_EXTFORMAT_UNDEFINED%RENDER_PASS_CREATE_TRANSFORM_BIT_QCOMSHARING_MODE_CONCURRENTIMAGE_LAYOUT_PRESENT_SRC_KHRIMAGE_LAYOUT_SHARED_PRESENT_KHR!PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BITControl.ExceptionbracketPRESENT_MODE_MAILBOX_KHR"QUERY_TYPE_PERFORMANCE_QUERY_INTEL7EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA UUID_SIZEPresentModeKHRPRESENT_MODE_IMMEDIATE_KHRPRESENT_MODE_FIFO_KHRPRESENT_MODE_FIFO_RELAXED_KHROBJECT_TYPE_UNKNOWN+AccelerationStructureMatrixMotionInstanceNV)AccelerationStructureMotionInstanceDataNV;FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHRINDEX_TYPE_UINT16INDEX_TYPE_UINT32INDEX_TYPE_NONE_KHR(ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR/BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT3BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR%AccelerationStructureMotionInstanceNV)AccelerationStructureMotionInstanceTypeNV(AccelerationStructureSRTMotionInstanceNV*ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR+ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHRACCESS_TRANSFER_READ_BITACCESS_SHADER_READ_BITBUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHRBUFFER_USAGE_STORAGE_BUFFER_BIT ACCESS_INDIRECT_COMMAND_READ_BIT4DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHRBUFFER_CREATE_PROTECTED_BITMEMORY_PROPERTY_PROTECTED_BIT"MEMORY_ALLOCATE_DEVICE_ADDRESS_BITIMAGE_CREATE_PROTECTED_BIT%BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT%BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT'FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT'FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT$IMAGE_TILING_DRM_FORMAT_MODIFIER_EXTFORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT'SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGELOD_CLAMP_NONEIMAGE_VIEW_TYPE_1DCOMMAND_BUFFER_LEVEL_SECONDARY(COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT)COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BITSHARING_MODE_EXCLUSIVEPerformanceCounterResultKHRATTACHMENT_UNUSEDViewportWScalingNVShadingRatePaletteNV%LINE_RASTERIZATION_MODE_BRESENHAM_EXT.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT*FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR-FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR+FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV/FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV0FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV0FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV0FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV1FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV'FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV,SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM+SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOMDYNAMIC_STATE_SCISSORDYNAMIC_STATE_VIEWPORT-COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BITPushConstantRange(PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NVBUFFER_USAGE_VERTEX_BUFFER_BITBUFFER_USAGE_INDEX_BUFFER_BITFRONT_FACE_CLOCKWISEFRONT_FACE_COUNTER_CLOCKWISE FrontFaceSHADER_STAGE_RAYGEN_BIT_KHRSHADER_STAGE_MISS_BIT_KHRSHADER_STAGE_CALLABLE_BIT_KHR!SHADER_STAGE_INTERSECTION_BIT_KHR SHADER_STAGE_CLOSEST_HIT_BIT_KHRSHADER_STAGE_ANY_HIT_BIT_KHR1DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHRPIPELINE_CREATE_DERIVATIVE_BITPIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR2PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR;PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR?PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHRPIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR8PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHRPipelineCreateFlagBits)BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHRGEOMETRY_TYPE_TRIANGLES_KHRGEOMETRY_TYPE_AABBS_KHR%PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT/PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NVSHADER_UNUSED_NV$PIPELINE_CREATE_DEFER_COMPILE_BIT_NVFORMAT_R32G32B32_SFLOATFORMAT_R32G32_SFLOATFORMAT_R16G16B16_SFLOATFORMAT_R16G16_SFLOATFORMAT_R16G16_SNORMFORMAT_R16G16B16_SNORMDYNAMIC_STATE_CULL_MODE_EXTDYNAMIC_STATE_FRONT_FACE_EXT#DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT$DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT"DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT*DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT%DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXTDYNAMIC_STATE_STENCIL_OP_EXTRESOLVE_MODE_NONESAMPLE_COUNT_1_BIT#FORMAT_FEATURE_COLOR_ATTACHMENT_BIT+FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BITSUBPASS_EXTERNALQUEUE_FAMILY_IGNOREDPipelineStageFlagBits%IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL7IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL7IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL%IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL$IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL'IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL&IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL-IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL%IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL6IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT-IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXTIMAGE_LAYOUT_GENERALATTACHMENT_LOAD_OP_LOADATTACHMENT_LOAD_OP_DONT_CAREATTACHMENT_STORE_OP_DONT_CARE0EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR4EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR1MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT'MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD!MEMORY_PROPERTY_HOST_COHERENT_BIT MEMORY_PROPERTY_HOST_VISIBLE_BITACCESS_HOST_WRITE_BITACCESS_HOST_READ_BITIMAGE_CREATE_MUTABLE_FORMAT_BIT,IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BITIMAGE_ASPECT_COLOR_BIT IMAGE_TYPE_1D IMAGE_TYPE_2D IMAGE_TYPE_3D IMAGE_CREATE_CUBE_COMPATIBLE_BIT FORMAT_FEATURE_STORAGE_IMAGE_BITREMAINING_MIP_LEVELSREMAINING_ARRAY_LAYERS%IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV7FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR&IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI!IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL!IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL#IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR"IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR9IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHRDependencyFlagBitsAccessFlagBits EVENT_CREATE_DEVICE_ONLY_BIT_KHRSubpassDependencyDEPENDENCY_VIEW_LOCAL_BITSemaphoreTypeKHRSEMAPHORE_TYPE_BINARY_KHR*FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT)FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT?FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BITFORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BITCOMPONENT_SWIZZLE_ONECOMPONENT_SWIZZLE_ZEROFILTER_NEARESTIMAGE_TILING_LINEARComponentSwizzle!PIPELINE_CACHE_HEADER_VERSION_ONEIMAGE_CREATE_EXTENDED_USAGE_BITSAMPLE_COUNT_2_BITSAMPLE_COUNT_4_BITSAMPLE_COUNT_8_BITSAMPLE_COUNT_16_BITExternalImageFormatPropertiesNVFORMAT_FEATURE_DISJOINT_BITIMAGE_CREATE_ALIAS_BITImageAspectFlagsFORMAT_G8_B8R8_2PLANE_420_UNORM FORMAT_G8_B8_R8_3PLANE_420_UNORMOffset3DenumerateInstanceVersionVendorIdAPI_VERSION_1_0(SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT IndexTypeSHADER_STAGE_GEOMETRY_BIT%SHADER_STAGE_TESSELLATION_CONTROL_BIT(SHADER_STAGE_TESSELLATION_EVALUATION_BIT6STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFOBLEND_FACTOR_SRC1_COLOR!BLEND_FACTOR_ONE_MINUS_SRC1_COLORBLEND_FACTOR_SRC1_ALPHA!BLEND_FACTOR_ONE_MINUS_SRC1_ALPHADYNAMIC_STATE_DEPTH_BIASPOLYGON_MODE_POINTPOLYGON_MODE_LINEDYNAMIC_STATE_LINE_WIDTHQUERY_CONTROL_PRECISE_BITQueryPipelineStatisticFlagBits BUFFER_CREATE_SPARSE_ALIASED_BIT$enumerateInstanceExtensionProperties enumerateInstanceLayerProperties/EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT3EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT.EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT+EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT/EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BITDescriptorBindingFlagBitsBUFFER_USAGE_UNIFORM_BUFFER_BITSHADER_STAGE_FRAGMENT_BITBORDER_COLOR_FLOAT_CUSTOM_EXTBORDER_COLOR_INT_CUSTOM_EXTSHADER_STAGE_ALLERROR_FRAGMENTATION_EXT&DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT2DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT FRAMEBUFFER_CREATE_IMAGELESS_BITFORMAT_S8_UINTFORMAT_D16_UNORMFORMAT_D16_UNORM_S8_UINTFORMAT_D32_SFLOATFORMAT_D32_SFLOAT_S8_UINTFORMAT_X8_D24_UNORM_PACK32FORMAT_D24_UNORM_S8_UINTPOLYGON_MODE_FILL_RECTANGLE_NVDYNAMIC_STATE_DEPTH_BOUNDS"DYNAMIC_STATE_STENCIL_COMPARE_MASK DYNAMIC_STATE_STENCIL_WRITE_MASKDYNAMIC_STATE_STENCIL_REFERENCEDispatchIndirectCommandBUFFER_USAGE_TRANSFER_SRC_BITFORMAT_R8G8_UNORM1FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16FORMAT_FEATURE_TRANSFER_SRC_BITFORMAT_FEATURE_TRANSFER_DST_BITSAMPLER_MIPMAP_MODE_NEARESTFORMAT_FEATURE_BLIT_DST_BITERROR_DEVICE_LOST$ATTACHMENT_DESCRIPTION_MAY_ALIAS_BITFORMAT_B4G4R4A4_UNORM_PACK16FORMAT_B5G6R5_UNORM_PACK16FORMAT_B5G5R5A1_UNORM_PACK164SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVXSubpassDescriptionFlagBitsDEPENDENCY_BY_REGION_BITRenderPassCreateFlagBitsAttachmentDescriptionFlagBits"SURFACE_TRANSFORM_IDENTITY_BIT_KHR#SURFACE_TRANSFORM_ROTATE_90_BIT_KHR$SURFACE_TRANSFORM_ROTATE_270_BIT_KHR)SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE0DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BITResolveModeFlagBitsRESOLVE_MODE_SAMPLE_ZERO_BITRESOLVE_MODE_AVERAGE_BITSampleCountFlagBitsSubgroupFeatureFlagBitsSUBGROUP_FEATURE_BASIC_BIT,COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BITVulkan.ExtensionsVulkan FromCStruct peekCStruct ToCStruct withCStruct pokeCStructwithZeroCStructpokeZeroCStruct cStructSizecStructAlignmentChainExtendssExtends PokeChain PeekChain FixedArray'pokeFixedLengthNullTerminatedByteStringpokeFixedLengthByteString peekByteStringFromSizedVectorPtrcallocFixedArray lowerArrayPtradvancePtrBytesClearColorValueImageSubresourceLayersClearDepthStencilValueClearAttachment MemoryTypeCommandBufferResetFlagBitsCommandBufferResetFlagsCommandPoolResetFlagBitsCommandPoolResetFlags CompareOpCullModeFlagBits CullModeFlagsDependencyFlagsDescriptorPoolResetFlagsFilterImageCreateFlags ImageLayout ImageTiling ImageTypeImageUsageFlagsMemoryMapFlags ObjectTypePipelineBindPointPipelineStageFlagsPrimitiveTopologyQueryControlFlagBitsQueryControlFlagsQueryResultFlagBitsQueryResultFlags QueryTypeResultShaderStageFlagsStencilFaceFlagBitsStencilFaceFlags StencilOpSubpassContentsExtensionPropertiesPFN_vkVoidFunctionFN_vkVoidFunction DeviceSize DeviceAddressBool32Rect2DOffset2DExtent3DExtent2DQueue_TPhysicalDevice_T Instance_TDevice_TCommandBuffer_TImageSubresourceRangeLayerPropertiesViewportSpecializationMapEntrySpecializationInfoImageSubresourceCommandPoolTrimFlagsExternalMemoryHandleTypeFlagsPeerMemoryFeatureFlagBitsPeerMemoryFeatureFlagsInputAttachmentAspectReferenceConformanceVersion CuModuleNVX CuFunctionNVXAMD_GCN_SHADER_EXTENSION_NAMEAMD_GCN_SHADER_SPEC_VERSION(AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME&AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION#AMD_GPU_SHADER_INT16_EXTENSION_NAME!AMD_GPU_SHADER_INT16_SPEC_VERSION+AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME)AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION+AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME)AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION AMD_SHADER_BALLOT_EXTENSION_NAMEAMD_SHADER_BALLOT_SPEC_VERSION3AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME1AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION'AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME%AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION.AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME,AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSIONShaderInfoTypeAMDShaderStatisticsInfoAMDShaderResourceUsageAMD(AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME&AMD_SHADER_TRINARY_MINMAX_SPEC_VERSIONRROutput TimeDomainEXTDebugReportObjectTypeEXTDebugReportFlagBitsEXTDebugReportFlagsEXT DebugUtilsMessageTypeFlagBitsEXTDebugUtilsMessageTypeFlagsEXT$DebugUtilsMessageSeverityFlagBitsEXT!DebugUtilsMessageSeverityFlagsEXT+EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME)EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION IDirectFBSurfaceCounterFlagBitsEXTSurfaceCounterFlagsEXT*EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME(EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION XYColorEXT%EXT_LOAD_STORE_OP_NONE_EXTENSION_NAME#EXT_LOAD_STORE_OP_NONE_SPEC_VERSIONMultiDrawInfoEXTMultiDrawIndexedInfoEXTPipelineCreationFeedbackEXT&EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME$EXT_POST_DEPTH_COVERAGE_SPEC_VERSIONSubpassSampleLocationsEXTSampleLocationEXTAttachmentSampleLocationsEXT(EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME&EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION)EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME'EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION'EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME%EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION.EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME,EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION'VertexInputBindingDivisorDescriptionEXT Zx_handle_t%GOOGLE_DECORATE_STRING_EXTENSION_NAME#GOOGLE_DECORATE_STRING_SPEC_VERSIONRefreshCycleDurationGOOGLEPresentTimeGOOGLEPastPresentationTimingGOOGLE)GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME'GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSIONGOOGLE_USER_TYPE_EXTENSION_NAMEGOOGLE_USER_TYPE_SPEC_VERSIONIMG_FILTER_CUBIC_EXTENSION_NAMEIMG_FILTER_CUBIC_SPEC_VERSIONIMG_FORMAT_PVRTC_EXTENSION_NAMEIMG_FORMAT_PVRTC_SPEC_VERSIONPerformanceParameterTypeINTELPerformanceValueINTELGeometryTypeKHRAccelerationStructureTypeKHR%BuildAccelerationStructureFlagBitsKHR"BuildAccelerationStructureFlagsKHRGeometryInstanceFlagBitsKHRGeometryInstanceFlagsKHRGeometryFlagBitsKHRGeometryFlagsKHR CopyAccelerationStructureModeKHR%AccelerationStructureCompatibilityKHR!AccelerationStructureBuildTypeKHRTransformMatrixKHR AccelerationStructureInstanceKHR&AccelerationStructureBuildRangeInfoKHRAabbPositionsKHR FragmentShadingRateCombinerOpKHRMemoryRequirements2KHRPresentRegionKHRRayTracingShaderGroupTypeKHRShaderGroupShaderKHRTraceRaysIndirectCommandKHR'KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME%KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION)KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME'KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION+KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME)KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSIONKHR_SPIRV_1_4_EXTENSION_NAMEKHR_SPIRV_1_4_SPEC_VERSION/KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME-KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION!DeviceGroupPresentModeFlagBitsKHRDeviceGroupPresentModeFlagsKHRPipelineStageFlagBits2KHR Wl_displayXcb_visualid_tXcb_connection_tVisualIDDisplaySetStateFlagsIndirectCommandNV BindShaderGroupIndirectCommandNV"ExternalMemoryHandleTypeFlagBitsNVExternalMemoryHandleTypeFlagsNVRemoteAddressNVHANDLE NV_FILL_RECTANGLE_EXTENSION_NAMENV_FILL_RECTANGLE_SPEC_VERSIONFragmentShadingRateNV-NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME+NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSIONNV_GLSL_SHADER_EXTENSION_NAMENV_GLSL_SHADER_SPEC_VERSIONDrawMeshTasksIndirectCommandNVGeometryDataNV SRTDataNV/NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME-NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION-NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME+NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSIONCoarseSampleOrderTypeNVCoarseSampleOrderCustomNVCoarseSampleLocationNV!NV_VIEWPORT_ARRAY2_EXTENSION_NAMENV_VIEWPORT_ARRAY2_SPEC_VERSIONViewportSwizzleNV.QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME,QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION Screen_window enumReadPrec enumShowsPrectraceAroundEvent::: MAKE_VERSIONMAKE_API_VERSIONHEADER_VERSION_COMPLETEHEADER_VERSION_VERSION_MAJOR_VERSION_MINOR_VERSION_PATCH_API_VERSION_MAJOR_API_VERSION_MINOR_API_VERSION_PATCHZerozero $fZeroCInt $fZeroCSize $fZeroCChar $fZeroCFloat $fZeroFloat $fZeroWord64 $fZeroWord32 $fZeroWord16 $fZeroWord8 $fZeroInt64 $fZeroInt32 $fZeroInt16 $fZeroInt8 $fZeroPtr $fZeroFunPtr $fZeroBoolShaderFloatControlsIndependence'SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE&SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL.SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY%$fReadShaderFloatControlsIndependence%$fShowShaderFloatControlsIndependence#$fEqShaderFloatControlsIndependence$$fOrdShaderFloatControlsIndependence)$fStorableShaderFloatControlsIndependence%$fZeroShaderFloatControlsIndependence$fReadSemaphoreType$fShowSemaphoreType$fEqSemaphoreType$fOrdSemaphoreType$fStorableSemaphoreType$fZeroSemaphoreType$fReadSamplerReductionMode$fShowSamplerReductionMode$fEqSamplerReductionMode$fOrdSamplerReductionMode$fStorableSamplerReductionMode$fZeroSamplerReductionModeDriverId!DRIVER_ID_VERISILICON_PROPRIETARYDRIVER_ID_JUICE_PROPRIETARYDRIVER_ID_COREAVI_PROPRIETARYDRIVER_ID_MOLTENVKDRIVER_ID_MESA_LLVMPIPEDRIVER_ID_BROADCOM_PROPRIETARYDRIVER_ID_GGP_PROPRIETARYDRIVER_ID_GOOGLE_SWIFTSHADERDRIVER_ID_ARM_PROPRIETARYDRIVER_ID_QUALCOMM_PROPRIETARY!DRIVER_ID_IMAGINATION_PROPRIETARY DRIVER_ID_INTEL_OPEN_SOURCE_MESA#DRIVER_ID_INTEL_PROPRIETARY_WINDOWSDRIVER_ID_NVIDIA_PROPRIETARYDRIVER_ID_MESA_RADVDRIVER_ID_AMD_OPEN_SOURCEDRIVER_ID_AMD_PROPRIETARY$fReadDriverId$fShowDriverId $fEqDriverId $fOrdDriverId$fStorableDriverId$fZeroDriverIdTessellationDomainOrigin%TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT%TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT$fReadTessellationDomainOrigin$fShowTessellationDomainOrigin$fEqTessellationDomainOrigin$fOrdTessellationDomainOrigin"$fStorableTessellationDomainOrigin$fZeroTessellationDomainOriginSamplerYcbcrRangeSAMPLER_YCBCR_RANGE_ITU_NARROWSAMPLER_YCBCR_RANGE_ITU_FULL$fReadSamplerYcbcrRange$fShowSamplerYcbcrRange$fEqSamplerYcbcrRange$fOrdSamplerYcbcrRange$fStorableSamplerYcbcrRange$fZeroSamplerYcbcrRangeSamplerYcbcrModelConversion)SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020(SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601(SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709-SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY!$fReadSamplerYcbcrModelConversion!$fShowSamplerYcbcrModelConversion$fEqSamplerYcbcrModelConversion $fOrdSamplerYcbcrModelConversion%$fStorableSamplerYcbcrModelConversion!$fZeroSamplerYcbcrModelConversionPointClippingBehavior-POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY'POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES$fReadPointClippingBehavior$fShowPointClippingBehavior$fEqPointClippingBehavior$fOrdPointClippingBehavior$fStorablePointClippingBehavior$fZeroPointClippingBehaviorDescriptorUpdateTemplateType4DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET"$fReadDescriptorUpdateTemplateType"$fShowDescriptorUpdateTemplateType $fEqDescriptorUpdateTemplateType!$fOrdDescriptorUpdateTemplateType&$fStorableDescriptorUpdateTemplateType"$fZeroDescriptorUpdateTemplateTypeChromaLocation$fReadChromaLocation$fShowChromaLocation$fEqChromaLocation$fOrdChromaLocation$fStorableChromaLocation$fZeroChromaLocationVertexInputRateVERTEX_INPUT_RATE_VERTEX$fReadVertexInputRate$fShowVertexInputRate$fEqVertexInputRate$fOrdVertexInputRate$fStorableVertexInputRate$fZeroVertexInputRateVENDOR_ID_POCLVENDOR_ID_MESAVENDOR_ID_CODEPLAYVENDOR_ID_KAZAN VENDOR_ID_VSI VENDOR_ID_VIV$fReadVendorId$fShowVendorId $fEqVendorId $fOrdVendorId$fStorableVendorId$fZeroVendorIdSystemAllocationScope SYSTEM_ALLOCATION_SCOPE_INSTANCESYSTEM_ALLOCATION_SCOPE_DEVICESYSTEM_ALLOCATION_SCOPE_CACHESYSTEM_ALLOCATION_SCOPE_OBJECTSYSTEM_ALLOCATION_SCOPE_COMMAND$fReadSystemAllocationScope$fShowSystemAllocationScope$fEqSystemAllocationScope$fOrdSystemAllocationScope$fStorableSystemAllocationScope$fZeroSystemAllocationScope*SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERSSUBPASS_CONTENTS_INLINE$fReadSubpassContents$fShowSubpassContents$fEqSubpassContents$fOrdSubpassContents$fStorableSubpassContents$fZeroSubpassContents StructureType2STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES&STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO%STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO5STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS-STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO)STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO2STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO5STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO'STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO,STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO3STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO2STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO/STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES.STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO0STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2/STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_26STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2$STRUCTURE_TYPE_MEMORY_REQUIREMENTS_21STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2)STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2+STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2"STRUCTURE_TYPE_FORMAT_PROPERTIES_2(STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_22STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2(STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_22STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2/STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_29STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_28STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES>STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO+STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFOSTRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO0STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO1STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES3STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES9STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES$STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO8STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES:STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES"STRUCTURE_TYPE_DEVICE_QUEUE_INFO_23STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO,STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO+STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO3STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFOSTRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES?STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES5STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO9STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO/STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES3STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO)STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES,STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES1STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO0STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO*STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO2STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO(STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES'STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO+STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO6STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES7STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES,STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT>STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES2STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES4STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES2STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES4STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES,STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO'STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2%STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2$STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2#STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2(STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2!STRUCTURE_TYPE_SUBPASS_BEGIN_INFOSTRUCTURE_TYPE_SUBPASS_END_INFO4STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES0STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES;STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES;STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES8STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES>STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO;STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES=STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIESSTRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFOSTRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT?STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES8STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE;STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES.STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO?STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES1STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO;STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES=STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES2STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO0STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO0STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFOSTRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURESSTRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURESSTRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES2STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT4STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT8STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES:STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURESSTRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXTSTRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT(STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX*STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX!STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX)STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX0STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX7STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD8STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP?STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV3STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV-STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV1STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV1STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV8STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV4STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR.STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR3STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR*STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR,STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR5STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR#STRUCTURE_TYPE_VALIDATION_FLAGS_EXT(STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NNSTRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT.STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT7STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT2STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR2STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR1STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR/STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR(STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR'STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR%STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR9STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR5STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR5STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR*STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR2STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR+STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR(STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR=STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHRSTRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT3STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT"STRUCTURE_TYPE_PRESENT_REGIONS_KHR?STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV)STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT%STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT$STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT%STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT0STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT(STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLESTRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX=STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV?STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT?STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXTSTRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT=STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXTSTRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXTSTRUCTURE_TYPE_HDR_METADATA_EXT6STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR1STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR1STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR.STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR'STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR$STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR=STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR?STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR5STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR0STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR.STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR&STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR2STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR1STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR)STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR#STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR'STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR-STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR,STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR'STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR/STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR*STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK,STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK/STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT.STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT$STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT6STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT4STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT4STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID9STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROIDSTRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID:STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID>STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID&STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROIDSTRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXTSTRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT>STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT)STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXTSTRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT>STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV>STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR=STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR=STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR=STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHRSTRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHRSTRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR2STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR6STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR3STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR=STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR=STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHRSTRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHRSTRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR5STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR:STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHRSTRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHRSTRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR3STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR7STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR=STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR5STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHRSTRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV=STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV?STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV6STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT=STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXTSTRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT7STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT/STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT=STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT>STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHRSTRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHRSTRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV=STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV?STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NVSTRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV2STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV4STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NVSTRUCTURE_TYPE_GEOMETRY_NV$STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NVSTRUCTURE_TYPE_GEOMETRY_AABB_NV9STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV=STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NVSTRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV8STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV6STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV-STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NVSTRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NVSTRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV?STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXTSTRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT;STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT2STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT1STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT8STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR8STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD,STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT9STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD;STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMDSTRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXTSTRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT&STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP9STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV6STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV8STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NVSTRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NVSTRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NVSTRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NVSTRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT5STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT=STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT;STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT/STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT>STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXTSTRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT?STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXTSTRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHRSTRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV3STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV=STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV0STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV6STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV)STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV=STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NVSTRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NVSTRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NVSTRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NVSTRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXTSTRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM4STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOMSTRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT:STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT5STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT8STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT:STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT:STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT?STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT/STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHRSTRUCTURE_TYPE_PRESENT_ID_KHR6STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR8STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT2STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT0STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT=STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV7STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV#STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR*STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR)STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR"STRUCTURE_TYPE_DEPENDENCY_INFO_KHR STRUCTURE_TYPE_SUBMIT_INFO_2_KHR(STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR-STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR=STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR6STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV#STRUCTURE_TYPE_CHECKPOINT_DATA_2_NVSTRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHRSTRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHRSTRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NVSTRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NVSTRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NVSTRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NVSTRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV4STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NVSTRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT/STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOMSTRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI0STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV?STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NVSTRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT-STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX>STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT3STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT:STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT6STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT8STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT(STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO*STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFOSTRUCTURE_TYPE_MEMORY_BARRIER#STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER$STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER%STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO(STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO.STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO+STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO'STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO&STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO&STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO"STRUCTURE_TYPE_COPY_DESCRIPTOR_SET#STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET+STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO*STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO0STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO"STRUCTURE_TYPE_SAMPLER_CREATE_INFO*STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO+STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO,STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO1STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO5STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO7STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO5STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO7STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO2STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO8STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO6STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO0STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO)STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO(STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO%STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO STRUCTURE_TYPE_IMAGE_CREATE_INFO&STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO!STRUCTURE_TYPE_BUFFER_CREATE_INFO%STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO STRUCTURE_TYPE_EVENT_CREATE_INFO$STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO STRUCTURE_TYPE_FENCE_CREATE_INFOSTRUCTURE_TYPE_BIND_SPARSE_INFO"STRUCTURE_TYPE_MAPPED_MEMORY_RANGE#STRUCTURE_TYPE_MEMORY_ALLOCATE_INFOSTRUCTURE_TYPE_SUBMIT_INFO!STRUCTURE_TYPE_DEVICE_CREATE_INFO'STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO#STRUCTURE_TYPE_INSTANCE_CREATE_INFOSTRUCTURE_TYPE_APPLICATION_INFO$fReadStructureType$fShowStructureType$fEqStructureType$fOrdStructureType$fStorableStructureType$fZeroStructureType GgpFrameTokenGGP_FRAME_TOKEN_EXTENSION_NAMEGGP_FRAME_TOKEN_SPEC_VERSION$$sel:frameToken:PresentFrameTokenGGP$fZeroPresentFrameTokenGGP$fStorablePresentFrameTokenGGP!$fFromCStructPresentFrameTokenGGP$fToCStructPresentFrameTokenGGP$fEqPresentFrameTokenGGP$fShowPresentFrameTokenGGP#EXT_VALIDATION_FLAGS_EXTENSION_NAME!EXT_VALIDATION_FLAGS_SPEC_VERSIONValidationCheckEXT0$sel:disabledValidationChecks:ValidationFlagsEXTVALIDATION_CHECK_SHADERS_EXTVALIDATION_CHECK_ALL_EXT$fReadValidationCheckEXT$fShowValidationCheckEXT$fZeroValidationFlagsEXT$fFromCStructValidationFlagsEXT$fToCStructValidationFlagsEXT$fEqValidationCheckEXT$fOrdValidationCheckEXT$fStorableValidationCheckEXT$fZeroValidationCheckEXT$fShowValidationFlagsEXT&EXT_VALIDATION_FEATURES_EXTENSION_NAME$EXT_VALIDATION_FEATURES_SPEC_VERSIONValidationFeatureDisableEXTValidationFeatureEnableEXT4$sel:enabledValidationFeatures:ValidationFeaturesEXT5$sel:disabledValidationFeatures:ValidationFeaturesEXT6VALIDATION_FEATURE_DISABLE_SHADER_VALIDATION_CACHE_EXT-VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT*VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT/VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT-VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT,VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT&VALIDATION_FEATURE_DISABLE_SHADERS_EXT"VALIDATION_FEATURE_DISABLE_ALL_EXT8VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT*VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT,VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT?VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT*VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT $fReadValidationFeatureEnableEXT $fShowValidationFeatureEnableEXT!$fReadValidationFeatureDisableEXT!$fShowValidationFeatureDisableEXT$fZeroValidationFeaturesEXT"$fFromCStructValidationFeaturesEXT $fToCStructValidationFeaturesEXT$fEqValidationFeatureDisableEXT $fOrdValidationFeatureDisableEXT%$fStorableValidationFeatureDisableEXT!$fZeroValidationFeatureDisableEXT$fEqValidationFeatureEnableEXT$fOrdValidationFeatureEnableEXT$$fStorableValidationFeatureEnableEXT $fZeroValidationFeatureEnableEXT$fShowValidationFeaturesEXTEXT_PCI_BUS_INFO_EXTENSION_NAMEEXT_PCI_BUS_INFO_SPEC_VERSION4$sel:pciDomain:PhysicalDevicePCIBusInfoPropertiesEXT1$sel:pciBus:PhysicalDevicePCIBusInfoPropertiesEXT4$sel:pciDevice:PhysicalDevicePCIBusInfoPropertiesEXT6$sel:pciFunction:PhysicalDevicePCIBusInfoPropertiesEXT+$fZeroPhysicalDevicePCIBusInfoPropertiesEXT/$fStorablePhysicalDevicePCIBusInfoPropertiesEXT2$fFromCStructPhysicalDevicePCIBusInfoPropertiesEXT0$fToCStructPhysicalDevicePCIBusInfoPropertiesEXT)$fEqPhysicalDevicePCIBusInfoPropertiesEXT+$fShowPhysicalDevicePCIBusInfoPropertiesEXT"EXT_GLOBAL_PRIORITY_EXTENSION_NAME EXT_GLOBAL_PRIORITY_SPEC_VERSIONQueueGlobalPriorityEXT:$sel:globalPriority:DeviceQueueGlobalPriorityCreateInfoEXT"QUEUE_GLOBAL_PRIORITY_REALTIME_EXTQUEUE_GLOBAL_PRIORITY_HIGH_EXT QUEUE_GLOBAL_PRIORITY_MEDIUM_EXTQUEUE_GLOBAL_PRIORITY_LOW_EXT$fReadQueueGlobalPriorityEXT$fShowQueueGlobalPriorityEXT,$fZeroDeviceQueueGlobalPriorityCreateInfoEXT0$fStorableDeviceQueueGlobalPriorityCreateInfoEXT3$fFromCStructDeviceQueueGlobalPriorityCreateInfoEXT1$fToCStructDeviceQueueGlobalPriorityCreateInfoEXT*$fEqDeviceQueueGlobalPriorityCreateInfoEXT$fEqQueueGlobalPriorityEXT$fOrdQueueGlobalPriorityEXT $fStorableQueueGlobalPriorityEXT$fZeroQueueGlobalPriorityEXT,$fShowDeviceQueueGlobalPriorityCreateInfoEXT)AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME'AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION<$sel:shaderEngineCount:PhysicalDeviceShaderCorePropertiesAMD$sel:shaderArraysPerEngineCount:PhysicalDeviceShaderCorePropertiesAMD$sel:computeUnitsPerShaderArray:PhysicalDeviceShaderCorePropertiesAMD=$sel:simdPerComputeUnit:PhysicalDeviceShaderCorePropertiesAMD<$sel:wavefrontsPerSimd:PhysicalDeviceShaderCorePropertiesAMD8$sel:wavefrontSize:PhysicalDeviceShaderCorePropertiesAMD7$sel:sgprsPerSimd:PhysicalDeviceShaderCorePropertiesAMD<$sel:minSgprAllocation:PhysicalDeviceShaderCorePropertiesAMD<$sel:maxSgprAllocation:PhysicalDeviceShaderCorePropertiesAMD$sel:sgprAllocationGranularity:PhysicalDeviceShaderCorePropertiesAMD7$sel:vgprsPerSimd:PhysicalDeviceShaderCorePropertiesAMD<$sel:minVgprAllocation:PhysicalDeviceShaderCorePropertiesAMD<$sel:maxVgprAllocation:PhysicalDeviceShaderCorePropertiesAMD$sel:vgprAllocationGranularity:PhysicalDeviceShaderCorePropertiesAMD+$fZeroPhysicalDeviceShaderCorePropertiesAMD/$fStorablePhysicalDeviceShaderCorePropertiesAMD2$fFromCStructPhysicalDeviceShaderCorePropertiesAMD0$fToCStructPhysicalDeviceShaderCorePropertiesAMD)$fEqPhysicalDeviceShaderCorePropertiesAMD+$fShowPhysicalDeviceShaderCorePropertiesAMD&AMD_RASTERIZATION_ORDER_EXTENSION_NAME$AMD_RASTERIZATION_ORDER_SPEC_VERSIONRasterizationOrderAMD$sel:rasterizationOrder:PipelineRasterizationStateRasterizationOrderAMDRASTERIZATION_ORDER_RELAXED_AMDRASTERIZATION_ORDER_STRICT_AMD$fReadRasterizationOrderAMD$fShowRasterizationOrderAMD5$fZeroPipelineRasterizationStateRasterizationOrderAMD9$fStorablePipelineRasterizationStateRasterizationOrderAMD<$fFromCStructPipelineRasterizationStateRasterizationOrderAMD:$fToCStructPipelineRasterizationStateRasterizationOrderAMD3$fEqPipelineRasterizationStateRasterizationOrderAMD$fEqRasterizationOrderAMD$fOrdRasterizationOrderAMD$fStorableRasterizationOrderAMD$fZeroRasterizationOrderAMD5$fShowPipelineRasterizationStateRasterizationOrderAMD1AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME/AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSIONMemoryOverallocationBehaviorAMD$sel:overallocationBehavior:DeviceMemoryOverallocationCreateInfoAMD-MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD*MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD*MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD%$fReadMemoryOverallocationBehaviorAMD%$fShowMemoryOverallocationBehaviorAMD-$fZeroDeviceMemoryOverallocationCreateInfoAMD1$fStorableDeviceMemoryOverallocationCreateInfoAMD4$fFromCStructDeviceMemoryOverallocationCreateInfoAMD2$fToCStructDeviceMemoryOverallocationCreateInfoAMD+$fEqDeviceMemoryOverallocationCreateInfoAMD#$fEqMemoryOverallocationBehaviorAMD$$fOrdMemoryOverallocationBehaviorAMD)$fStorableMemoryOverallocationBehaviorAMD%$fZeroMemoryOverallocationBehaviorAMD-$fShowDeviceMemoryOverallocationCreateInfoAMDSTENCIL_OP_DECREMENT_AND_WRAPSTENCIL_OP_INCREMENT_AND_WRAPSTENCIL_OP_INVERTSTENCIL_OP_DECREMENT_AND_CLAMPSTENCIL_OP_INCREMENT_AND_CLAMPSTENCIL_OP_REPLACESTENCIL_OP_ZEROSTENCIL_OP_KEEP$fReadStencilOp$fShowStencilOp $fEqStencilOp$fOrdStencilOp$fStorableStencilOp$fZeroStencilOp SharingMode$fReadSharingMode$fShowSharingMode$fEqSharingMode$fOrdSharingMode$fStorableSharingMode$fZeroSharingModeSamplerMipmapMode$fReadSamplerMipmapMode$fShowSamplerMipmapMode$fEqSamplerMipmapMode$fOrdSamplerMipmapMode$fStorableSamplerMipmapMode$fZeroSamplerMipmapMode$SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER$SAMPLER_ADDRESS_MODE_MIRRORED_REPEATSAMPLER_ADDRESS_MODE_REPEAT$fReadSamplerAddressMode$fShowSamplerAddressMode$fEqSamplerAddressMode$fOrdSamplerAddressMode$fStorableSamplerAddressMode$fZeroSamplerAddressMode/KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME-KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION-SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHRERROR_OUT_OF_POOL_MEMORYERROR_INVALID_EXTERNAL_HANDLEERROR_FRAGMENTATION$ERROR_INVALID_OPAQUE_CAPTURE_ADDRESSERROR_SURFACE_LOST_KHRERROR_NATIVE_WINDOW_IN_USE_KHRSUBOPTIMAL_KHRERROR_OUT_OF_DATE_KHRERROR_INCOMPATIBLE_DISPLAY_KHRERROR_VALIDATION_FAILED_EXTERROR_INVALID_SHADER_NV2ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXTERROR_NOT_PERMITTED_EXT)ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXTTHREAD_IDLE_KHRTHREAD_DONE_KHROPERATION_DEFERRED_KHROPERATION_NOT_DEFERRED_KHR ERROR_UNKNOWNERROR_FRAGMENTED_POOLERROR_TOO_MANY_OBJECTSERROR_INCOMPATIBLE_DRIVERERROR_FEATURE_NOT_PRESENTERROR_EXTENSION_NOT_PRESENTERROR_LAYER_NOT_PRESENTERROR_MEMORY_MAP_FAILEDERROR_INITIALIZATION_FAILEDERROR_OUT_OF_DEVICE_MEMORY INCOMPLETE EVENT_RESET EVENT_SETTIMEOUT NOT_READYSUCCESS $fReadResult $fShowResult $fEqResult $fOrdResult$fStorableResult $fZeroResultVulkanException*$sel:vulkanExceptionResult:VulkanException$fExceptionVulkanException$fEqVulkanException$fOrdVulkanException$fReadVulkanException$fShowVulkanExceptionFlags64Flags$sel:offset:Rect2D$sel:extent:Rect2D$sel:width:Extent3D$sel:height:Extent3D$sel:depth:Extent3D$sel:width:Extent2D$sel:height:Extent2D$sel:x:Offset3D$sel:y:Offset3D$sel:z:Offset3D$sel:x:Offset2D$sel:y:Offset2D boolToBool32 bool32ToBool$fZeroOffset2D$fStorableOffset2D$fFromCStructOffset2D$fToCStructOffset2D$fZeroOffset3D$fStorableOffset3D$fFromCStructOffset3D$fToCStructOffset3D$fZeroExtent2D$fStorableExtent2D$fFromCStructExtent2D$fToCStructExtent2D$fZeroExtent3D$fStorableExtent3D$fFromCStructExtent3D$fToCStructExtent3D $fZeroRect2D$fStorableRect2D$fFromCStructRect2D$fToCStructRect2D $fReadBool32 $fShowBool32 $fEqBool32 $fOrdBool32$fStorableBool32 $fZeroBool32 $fEqExtent3D $fEqExtent2D $fEqOffset3D $fEqOffset2D $fShowRect2D$fShowExtent3D$fShowExtent2D$fShowOffset3D$fShowOffset2D"NV_VIEWPORT_SWIZZLE_EXTENSION_NAME NV_VIEWPORT_SWIZZLE_SPEC_VERSIONViewportCoordinateSwizzleNV)PipelineViewportSwizzleStateCreateFlagsNV3$sel:flags:PipelineViewportSwizzleStateCreateInfoNV>$sel:viewportSwizzles:PipelineViewportSwizzleStateCreateInfoNV$sel:x:ViewportSwizzleNV$sel:y:ViewportSwizzleNV$sel:z:ViewportSwizzleNV$sel:w:ViewportSwizzleNV)VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV)VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV)VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV)VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV)VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV)VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV)VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV)VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV/$fReadPipelineViewportSwizzleStateCreateFlagsNV/$fShowPipelineViewportSwizzleStateCreateFlagsNV!$fReadViewportCoordinateSwizzleNV!$fShowViewportCoordinateSwizzleNV$fZeroViewportSwizzleNV$fStorableViewportSwizzleNV$fFromCStructViewportSwizzleNV$fToCStructViewportSwizzleNV.$fZeroPipelineViewportSwizzleStateCreateInfoNV5$fFromCStructPipelineViewportSwizzleStateCreateInfoNV3$fToCStructPipelineViewportSwizzleStateCreateInfoNV$fEqViewportSwizzleNV$fEqViewportCoordinateSwizzleNV $fOrdViewportCoordinateSwizzleNV%$fStorableViewportCoordinateSwizzleNV!$fZeroViewportCoordinateSwizzleNV-$fEqPipelineViewportSwizzleStateCreateFlagsNV.$fOrdPipelineViewportSwizzleStateCreateFlagsNV3$fStorablePipelineViewportSwizzleStateCreateFlagsNV/$fZeroPipelineViewportSwizzleStateCreateFlagsNV/$fBitsPipelineViewportSwizzleStateCreateFlagsNV5$fFiniteBitsPipelineViewportSwizzleStateCreateFlagsNV.$fShowPipelineViewportSwizzleStateCreateInfoNV$fShowViewportSwizzleNV$NV_SHADER_SM_BUILTINS_EXTENSION_NAME"NV_SHADER_SM_BUILTINS_SPEC_VERSION>$sel:shaderSMBuiltins:PhysicalDeviceShaderSMBuiltinsFeaturesNV=$sel:shaderSMCount:PhysicalDeviceShaderSMBuiltinsPropertiesNV$sel:shaderWarpsPerSM:PhysicalDeviceShaderSMBuiltinsPropertiesNV0$fZeroPhysicalDeviceShaderSMBuiltinsPropertiesNV4$fStorablePhysicalDeviceShaderSMBuiltinsPropertiesNV7$fFromCStructPhysicalDeviceShaderSMBuiltinsPropertiesNV5$fToCStructPhysicalDeviceShaderSMBuiltinsPropertiesNV.$fZeroPhysicalDeviceShaderSMBuiltinsFeaturesNV2$fStorablePhysicalDeviceShaderSMBuiltinsFeaturesNV5$fFromCStructPhysicalDeviceShaderSMBuiltinsFeaturesNV3$fToCStructPhysicalDeviceShaderSMBuiltinsFeaturesNV,$fEqPhysicalDeviceShaderSMBuiltinsFeaturesNV.$fEqPhysicalDeviceShaderSMBuiltinsPropertiesNV.$fShowPhysicalDeviceShaderSMBuiltinsFeaturesNV0$fShowPhysicalDeviceShaderSMBuiltinsPropertiesNV(NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME&NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION$sel:imageFootprint:PhysicalDeviceShaderImageFootprintFeaturesNV2$fZeroPhysicalDeviceShaderImageFootprintFeaturesNV6$fStorablePhysicalDeviceShaderImageFootprintFeaturesNV9$fFromCStructPhysicalDeviceShaderImageFootprintFeaturesNV7$fToCStructPhysicalDeviceShaderImageFootprintFeaturesNV0$fEqPhysicalDeviceShaderImageFootprintFeaturesNV2$fShowPhysicalDeviceShaderImageFootprintFeaturesNV.NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME,NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION$sel:representativeFragmentTestEnable:PipelineRepresentativeFragmentTestStateCreateInfoNV$sel:representativeFragmentTest:PhysicalDeviceRepresentativeFragmentTestFeaturesNV8$fZeroPhysicalDeviceRepresentativeFragmentTestFeaturesNV<$fStorablePhysicalDeviceRepresentativeFragmentTestFeaturesNV?$fFromCStructPhysicalDeviceRepresentativeFragmentTestFeaturesNV=$fToCStructPhysicalDeviceRepresentativeFragmentTestFeaturesNV9$fZeroPipelineRepresentativeFragmentTestStateCreateInfoNV=$fStorablePipelineRepresentativeFragmentTestStateCreateInfoNV$fFromCStructPipelineRepresentativeFragmentTestStateCreateInfoNV>$fToCStructPipelineRepresentativeFragmentTestStateCreateInfoNV7$fEqPipelineRepresentativeFragmentTestStateCreateInfoNV6$fEqPhysicalDeviceRepresentativeFragmentTestFeaturesNV9$fShowPipelineRepresentativeFragmentTestStateCreateInfoNV8$fShowPhysicalDeviceRepresentativeFragmentTestFeaturesNV+NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME)NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSIONCoverageModulationModeNV,PipelineCoverageModulationStateCreateFlagsNV6$sel:flags:PipelineCoverageModulationStateCreateInfoNV$sel:coverageModulationMode:PipelineCoverageModulationStateCreateInfoNV$sel:coverageModulationTableEnable:PipelineCoverageModulationStateCreateInfoNV$sel:coverageModulationTableCount:PipelineCoverageModulationStateCreateInfoNV$sel:coverageModulationTable:PipelineCoverageModulationStateCreateInfoNV COVERAGE_MODULATION_MODE_RGBA_NV!COVERAGE_MODULATION_MODE_ALPHA_NVCOVERAGE_MODULATION_MODE_RGB_NV COVERAGE_MODULATION_MODE_NONE_NV2$fReadPipelineCoverageModulationStateCreateFlagsNV2$fShowPipelineCoverageModulationStateCreateFlagsNV$fReadCoverageModulationModeNV$fShowCoverageModulationModeNV1$fZeroPipelineCoverageModulationStateCreateInfoNV8$fFromCStructPipelineCoverageModulationStateCreateInfoNV6$fToCStructPipelineCoverageModulationStateCreateInfoNV$fEqCoverageModulationModeNV$fOrdCoverageModulationModeNV"$fStorableCoverageModulationModeNV$fZeroCoverageModulationModeNV0$fEqPipelineCoverageModulationStateCreateFlagsNV1$fOrdPipelineCoverageModulationStateCreateFlagsNV6$fStorablePipelineCoverageModulationStateCreateFlagsNV2$fZeroPipelineCoverageModulationStateCreateFlagsNV2$fBitsPipelineCoverageModulationStateCreateFlagsNV8$fFiniteBitsPipelineCoverageModulationStateCreateFlagsNV1$fShowPipelineCoverageModulationStateCreateInfoNV-NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME+NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION$sel:fragmentShaderBarycentric:PhysicalDeviceFragmentShaderBarycentricFeaturesNV7$fZeroPhysicalDeviceFragmentShaderBarycentricFeaturesNV;$fStorablePhysicalDeviceFragmentShaderBarycentricFeaturesNV>$fFromCStructPhysicalDeviceFragmentShaderBarycentricFeaturesNV<$fToCStructPhysicalDeviceFragmentShaderBarycentricFeaturesNV5$fEqPhysicalDeviceFragmentShaderBarycentricFeaturesNV7$fShowPhysicalDeviceFragmentShaderBarycentricFeaturesNV,NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME*NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION)PipelineCoverageToColorStateCreateFlagsNV3$sel:flags:PipelineCoverageToColorStateCreateInfoNV$sel:coverageToColorEnable:PipelineCoverageToColorStateCreateInfoNV$sel:coverageToColorLocation:PipelineCoverageToColorStateCreateInfoNV/$fReadPipelineCoverageToColorStateCreateFlagsNV/$fShowPipelineCoverageToColorStateCreateFlagsNV.$fZeroPipelineCoverageToColorStateCreateInfoNV2$fStorablePipelineCoverageToColorStateCreateInfoNV5$fFromCStructPipelineCoverageToColorStateCreateInfoNV3$fToCStructPipelineCoverageToColorStateCreateInfoNV,$fEqPipelineCoverageToColorStateCreateInfoNV-$fEqPipelineCoverageToColorStateCreateFlagsNV.$fOrdPipelineCoverageToColorStateCreateFlagsNV3$fStorablePipelineCoverageToColorStateCreateFlagsNV/$fZeroPipelineCoverageToColorStateCreateFlagsNV/$fBitsPipelineCoverageToColorStateCreateFlagsNV5$fFiniteBitsPipelineCoverageToColorStateCreateFlagsNV.$fShowPipelineCoverageToColorStateCreateInfoNV+NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME)NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION!DeviceDiagnosticsConfigFlagBitsNVDeviceDiagnosticsConfigFlagsNV.$sel:flags:DeviceDiagnosticsConfigCreateInfoNV$sel:diagnosticsConfig:PhysicalDeviceDiagnosticsConfigFeaturesNV=DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV9DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV9DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV/$fZeroPhysicalDeviceDiagnosticsConfigFeaturesNV3$fStorablePhysicalDeviceDiagnosticsConfigFeaturesNV6$fFromCStructPhysicalDeviceDiagnosticsConfigFeaturesNV4$fToCStructPhysicalDeviceDiagnosticsConfigFeaturesNV'$fReadDeviceDiagnosticsConfigFlagBitsNV'$fShowDeviceDiagnosticsConfigFlagBitsNV)$fZeroDeviceDiagnosticsConfigCreateInfoNV-$fStorableDeviceDiagnosticsConfigCreateInfoNV0$fFromCStructDeviceDiagnosticsConfigCreateInfoNV.$fToCStructDeviceDiagnosticsConfigCreateInfoNV'$fEqDeviceDiagnosticsConfigCreateInfoNV%$fEqDeviceDiagnosticsConfigFlagBitsNV&$fOrdDeviceDiagnosticsConfigFlagBitsNV+$fStorableDeviceDiagnosticsConfigFlagBitsNV'$fZeroDeviceDiagnosticsConfigFlagBitsNV'$fBitsDeviceDiagnosticsConfigFlagBitsNV-$fFiniteBitsDeviceDiagnosticsConfigFlagBitsNV-$fEqPhysicalDeviceDiagnosticsConfigFeaturesNV)$fShowDeviceDiagnosticsConfigCreateInfoNV/$fShowPhysicalDeviceDiagnosticsConfigFeaturesNV5NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME3NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION$sel:dedicatedAllocationImageAliasing:PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>$fZeroPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV$fStorablePhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV$fFromCStructPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV$fToCStructPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV<$fEqPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>$fShowPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV&NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME$NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION$sel:cornerSampledImage:PhysicalDeviceCornerSampledImageFeaturesNV0$fZeroPhysicalDeviceCornerSampledImageFeaturesNV4$fStorablePhysicalDeviceCornerSampledImageFeaturesNV7$fFromCStructPhysicalDeviceCornerSampledImageFeaturesNV5$fToCStructPhysicalDeviceCornerSampledImageFeaturesNV.$fEqPhysicalDeviceCornerSampledImageFeaturesNV0$fShowPhysicalDeviceCornerSampledImageFeaturesNV,NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME*NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION$sel:computeDerivativeGroupQuads:PhysicalDeviceComputeShaderDerivativesFeaturesNV$sel:computeDerivativeGroupLinear:PhysicalDeviceComputeShaderDerivativesFeaturesNV6$fZeroPhysicalDeviceComputeShaderDerivativesFeaturesNV:$fStorablePhysicalDeviceComputeShaderDerivativesFeaturesNV=$fFromCStructPhysicalDeviceComputeShaderDerivativesFeaturesNV;$fToCStructPhysicalDeviceComputeShaderDerivativesFeaturesNV4$fEqPhysicalDeviceComputeShaderDerivativesFeaturesNV6$fShowPhysicalDeviceComputeShaderDerivativesFeaturesNV0NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME.NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION$sel:perViewPositionAllComponents:PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;$fZeroPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX?$fStorablePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX$fFromCStructPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX$fToCStructPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX9$fEqPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;$fShowPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX3KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME1KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION$sel:shaderZeroInitializeWorkgroupMemory:PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR<$fZeroPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR$fStorablePhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR$fFromCStructPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR$fToCStructPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR:$fEqPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR<$fShowPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR3KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME1KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION$sel:workgroupMemoryExplicitLayout:PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR$sel:workgroupMemoryExplicitLayoutScalarBlockLayout:PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR$sel:workgroupMemoryExplicitLayout8BitAccess:PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR$sel:workgroupMemoryExplicitLayout16BitAccess:PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR<$fZeroPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR$fStorablePhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR$fFromCStructPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR$fToCStructPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR:$fEqPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR<$fShowPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR1KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME/KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION6$sel:supportsProtected:SurfaceProtectedCapabilitiesKHR%$fZeroSurfaceProtectedCapabilitiesKHR)$fStorableSurfaceProtectedCapabilitiesKHR,$fFromCStructSurfaceProtectedCapabilitiesKHR*$fToCStructSurfaceProtectedCapabilitiesKHR#$fEqSurfaceProtectedCapabilitiesKHR%$fShowSurfaceProtectedCapabilitiesKHR.KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME,KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION$sel:shaderTerminateInvocation:PhysicalDeviceShaderTerminateInvocationFeaturesKHR8$fZeroPhysicalDeviceShaderTerminateInvocationFeaturesKHR<$fStorablePhysicalDeviceShaderTerminateInvocationFeaturesKHR?$fFromCStructPhysicalDeviceShaderTerminateInvocationFeaturesKHR=$fToCStructPhysicalDeviceShaderTerminateInvocationFeaturesKHR6$fEqPhysicalDeviceShaderTerminateInvocationFeaturesKHR8$fShowPhysicalDeviceShaderTerminateInvocationFeaturesKHR7KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME5KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION$sel:shaderSubgroupUniformControlFlow:PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR?$fZeroPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR$fStorablePhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR$fFromCStructPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR$fToCStructPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR=$fEqPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR?$fShowPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHRKHR_SHADER_CLOCK_EXTENSION_NAMEKHR_SHADER_CLOCK_SPEC_VERSION=$sel:shaderSubgroupClock:PhysicalDeviceShaderClockFeaturesKHR;$sel:shaderDeviceClock:PhysicalDeviceShaderClockFeaturesKHR*$fZeroPhysicalDeviceShaderClockFeaturesKHR.$fStorablePhysicalDeviceShaderClockFeaturesKHR1$fFromCStructPhysicalDeviceShaderClockFeaturesKHR/$fToCStructPhysicalDeviceShaderClockFeaturesKHR($fEqPhysicalDeviceShaderClockFeaturesKHR*$fShowPhysicalDeviceShaderClockFeaturesKHRKHR_RAY_QUERY_EXTENSION_NAMEKHR_RAY_QUERY_SPEC_VERSION/$sel:rayQuery:PhysicalDeviceRayQueryFeaturesKHR'$fZeroPhysicalDeviceRayQueryFeaturesKHR+$fStorablePhysicalDeviceRayQueryFeaturesKHR.$fFromCStructPhysicalDeviceRayQueryFeaturesKHR,$fToCStructPhysicalDeviceRayQueryFeaturesKHR%$fEqPhysicalDeviceRayQueryFeaturesKHR'$fShowPhysicalDeviceRayQueryFeaturesKHRKHR_PRESENT_ID_EXTENSION_NAMEKHR_PRESENT_ID_SPEC_VERSION $sel:swapchainCount:PresentIdKHR$sel:presentIds:PresentIdKHR1$sel:presentId:PhysicalDevicePresentIdFeaturesKHR($fZeroPhysicalDevicePresentIdFeaturesKHR,$fStorablePhysicalDevicePresentIdFeaturesKHR/$fFromCStructPhysicalDevicePresentIdFeaturesKHR-$fToCStructPhysicalDevicePresentIdFeaturesKHR$fZeroPresentIdKHR$fFromCStructPresentIdKHR$fToCStructPresentIdKHR&$fEqPhysicalDevicePresentIdFeaturesKHR$fShowPresentIdKHR($fShowPhysicalDevicePresentIdFeaturesKHR%KHR_PORTABILITY_SUBSET_EXTENSION_NAME#KHR_PORTABILITY_SUBSET_SPEC_VERSION$sel:minVertexInputBindingStrideAlignment:PhysicalDevicePortabilitySubsetPropertiesKHR$sel:constantAlphaColorBlendFactors:PhysicalDevicePortabilitySubsetFeaturesKHR6$sel:events:PhysicalDevicePortabilitySubsetFeaturesKHR$sel:imageViewFormatReinterpretation:PhysicalDevicePortabilitySubsetFeaturesKHR$sel:imageViewFormatSwizzle:PhysicalDevicePortabilitySubsetFeaturesKHR$sel:imageView2DOn3DImage:PhysicalDevicePortabilitySubsetFeaturesKHR$sel:multisampleArrayImage:PhysicalDevicePortabilitySubsetFeaturesKHR$sel:mutableComparisonSamplers:PhysicalDevicePortabilitySubsetFeaturesKHR=$sel:pointPolygons:PhysicalDevicePortabilitySubsetFeaturesKHR$sel:samplerMipLodBias:PhysicalDevicePortabilitySubsetFeaturesKHR$sel:separateStencilMaskRef:PhysicalDevicePortabilitySubsetFeaturesKHR$sel:shaderSampleRateInterpolationFunctions:PhysicalDevicePortabilitySubsetFeaturesKHR$sel:tessellationIsolines:PhysicalDevicePortabilitySubsetFeaturesKHR$sel:tessellationPointMode:PhysicalDevicePortabilitySubsetFeaturesKHR<$sel:triangleFans:PhysicalDevicePortabilitySubsetFeaturesKHR$sel:vertexAttributeAccessBeyondStride:PhysicalDevicePortabilitySubsetFeaturesKHR0$fZeroPhysicalDevicePortabilitySubsetFeaturesKHR4$fStorablePhysicalDevicePortabilitySubsetFeaturesKHR7$fFromCStructPhysicalDevicePortabilitySubsetFeaturesKHR5$fToCStructPhysicalDevicePortabilitySubsetFeaturesKHR2$fZeroPhysicalDevicePortabilitySubsetPropertiesKHR6$fStorablePhysicalDevicePortabilitySubsetPropertiesKHR9$fFromCStructPhysicalDevicePortabilitySubsetPropertiesKHR7$fToCStructPhysicalDevicePortabilitySubsetPropertiesKHR0$fEqPhysicalDevicePortabilitySubsetPropertiesKHR.$fEqPhysicalDevicePortabilitySubsetFeaturesKHR2$fShowPhysicalDevicePortabilitySubsetPropertiesKHR0$fShowPhysicalDevicePortabilitySubsetFeaturesKHR&KHR_INCREMENTAL_PRESENT_EXTENSION_NAME$KHR_INCREMENTAL_PRESENT_SPEC_VERSION$sel:offset:RectLayerKHR$sel:extent:RectLayerKHR$sel:layer:RectLayerKHR$$sel:rectangleCount:PresentRegionKHR $sel:rectangles:PresentRegionKHR%$sel:swapchainCount:PresentRegionsKHR$sel:regions:PresentRegionsKHR$fZeroRectLayerKHR$fStorableRectLayerKHR$fFromCStructRectLayerKHR$fToCStructRectLayerKHR$fZeroPresentRegionKHR$fFromCStructPresentRegionKHR$fToCStructPresentRegionKHR$fZeroPresentRegionsKHR$fFromCStructPresentRegionsKHR$fToCStructPresentRegionsKHR$fShowRectLayerKHR$fShowPresentRegionKHR$fShowPresentRegionsKHR/INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME-INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION$sel:shaderIntegerFunctions2:PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL8$fZeroPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL<$fStorablePhysicalDeviceShaderIntegerFunctions2FeaturesINTEL?$fFromCStructPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL=$fToCStructPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL6$fEqPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL8$fShowPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL%EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME#EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION?$sel:ycbcrImageArrays:PhysicalDeviceYcbcrImageArraysFeaturesEXT/$fZeroPhysicalDeviceYcbcrImageArraysFeaturesEXT3$fStorablePhysicalDeviceYcbcrImageArraysFeaturesEXT6$fFromCStructPhysicalDeviceYcbcrImageArraysFeaturesEXT4$fToCStructPhysicalDeviceYcbcrImageArraysFeaturesEXT-$fEqPhysicalDeviceYcbcrImageArraysFeaturesEXT/$fShowPhysicalDeviceYcbcrImageArraysFeaturesEXT+EXT_YCBCR_2PLANE_444_FORMATS_EXTENSION_NAME)EXT_YCBCR_2PLANE_444_FORMATS_SPEC_VERSION$sel:ycbcr2plane444Formats:PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT4$fZeroPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT8$fStorablePhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT;$fFromCStructPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT9$fToCStructPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT2$fEqPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT4$fShowPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT+EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME)EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION$sel:vertexAttributeInstanceRateDivisor:PhysicalDeviceVertexAttributeDivisorFeaturesEXT$sel:vertexAttributeInstanceRateZeroDivisor:PhysicalDeviceVertexAttributeDivisorFeaturesEXT$sel:maxVertexAttribDivisor:PhysicalDeviceVertexAttributeDivisorPropertiesEXT$sel:vertexBindingDivisors:PipelineVertexInputDivisorStateCreateInfoEXT4$sel:binding:VertexInputBindingDivisorDescriptionEXT4$sel:divisor:VertexInputBindingDivisorDescriptionEXT-$fZeroVertexInputBindingDivisorDescriptionEXT1$fStorableVertexInputBindingDivisorDescriptionEXT4$fFromCStructVertexInputBindingDivisorDescriptionEXT2$fToCStructVertexInputBindingDivisorDescriptionEXT2$fZeroPipelineVertexInputDivisorStateCreateInfoEXT9$fFromCStructPipelineVertexInputDivisorStateCreateInfoEXT7$fToCStructPipelineVertexInputDivisorStateCreateInfoEXT7$fZeroPhysicalDeviceVertexAttributeDivisorPropertiesEXT;$fStorablePhysicalDeviceVertexAttributeDivisorPropertiesEXT>$fFromCStructPhysicalDeviceVertexAttributeDivisorPropertiesEXT<$fToCStructPhysicalDeviceVertexAttributeDivisorPropertiesEXT5$fZeroPhysicalDeviceVertexAttributeDivisorFeaturesEXT9$fStorablePhysicalDeviceVertexAttributeDivisorFeaturesEXT<$fFromCStructPhysicalDeviceVertexAttributeDivisorFeaturesEXT:$fToCStructPhysicalDeviceVertexAttributeDivisorFeaturesEXT3$fEqPhysicalDeviceVertexAttributeDivisorFeaturesEXT5$fEqPhysicalDeviceVertexAttributeDivisorPropertiesEXT+$fEqVertexInputBindingDivisorDescriptionEXT5$fShowPhysicalDeviceVertexAttributeDivisorFeaturesEXT7$fShowPhysicalDeviceVertexAttributeDivisorPropertiesEXT2$fShowPipelineVertexInputDivisorStateCreateInfoEXT-$fShowVertexInputBindingDivisorDescriptionEXT/EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME-EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION$sel:textureCompressionASTC_HDR:PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT8$fZeroPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT<$fStorablePhysicalDeviceTextureCompressionASTCHDRFeaturesEXT?$fFromCStructPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT=$fToCStructPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT6$fEqPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT8$fShowPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT)EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME'EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION$sel:storageTexelBufferOffsetAlignmentBytes:PhysicalDeviceTexelBufferAlignmentPropertiesEXT$sel:storageTexelBufferOffsetSingleTexelAlignment:PhysicalDeviceTexelBufferAlignmentPropertiesEXT$sel:uniformTexelBufferOffsetAlignmentBytes:PhysicalDeviceTexelBufferAlignmentPropertiesEXT$sel:uniformTexelBufferOffsetSingleTexelAlignment:PhysicalDeviceTexelBufferAlignmentPropertiesEXT$sel:texelBufferAlignment:PhysicalDeviceTexelBufferAlignmentFeaturesEXT3$fZeroPhysicalDeviceTexelBufferAlignmentFeaturesEXT7$fStorablePhysicalDeviceTexelBufferAlignmentFeaturesEXT:$fFromCStructPhysicalDeviceTexelBufferAlignmentFeaturesEXT8$fToCStructPhysicalDeviceTexelBufferAlignmentFeaturesEXT5$fZeroPhysicalDeviceTexelBufferAlignmentPropertiesEXT9$fStorablePhysicalDeviceTexelBufferAlignmentPropertiesEXT<$fFromCStructPhysicalDeviceTexelBufferAlignmentPropertiesEXT:$fToCStructPhysicalDeviceTexelBufferAlignmentPropertiesEXT3$fEqPhysicalDeviceTexelBufferAlignmentPropertiesEXT1$fEqPhysicalDeviceTexelBufferAlignmentFeaturesEXT5$fShowPhysicalDeviceTexelBufferAlignmentPropertiesEXT3$fShowPhysicalDeviceTexelBufferAlignmentFeaturesEXT,EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME*EXT_SHADER_IMAGE_ATOMIC_INT64_SPEC_VERSION$sel:shaderImageInt64Atomics:PhysicalDeviceShaderImageAtomicInt64FeaturesEXT$sel:sparseImageInt64Atomics:PhysicalDeviceShaderImageAtomicInt64FeaturesEXT5$fZeroPhysicalDeviceShaderImageAtomicInt64FeaturesEXT9$fStorablePhysicalDeviceShaderImageAtomicInt64FeaturesEXT<$fFromCStructPhysicalDeviceShaderImageAtomicInt64FeaturesEXT:$fToCStructPhysicalDeviceShaderImageAtomicInt64FeaturesEXT3$fEqPhysicalDeviceShaderImageAtomicInt64FeaturesEXT5$fShowPhysicalDeviceShaderImageAtomicInt64FeaturesEXT5EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME3EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION$sel:shaderDemoteToHelperInvocation:PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT=$fZeroPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT$fStorablePhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT$fFromCStructPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT$fToCStructPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT;$fEqPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT=$fShowPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT(EXT_SHADER_ATOMIC_FLOAT_2_EXTENSION_NAME&EXT_SHADER_ATOMIC_FLOAT_2_SPEC_VERSION$sel:shaderBufferFloat16Atomics:PhysicalDeviceShaderAtomicFloat2FeaturesEXT$sel:shaderBufferFloat16AtomicAdd:PhysicalDeviceShaderAtomicFloat2FeaturesEXT$sel:shaderBufferFloat16AtomicMinMax:PhysicalDeviceShaderAtomicFloat2FeaturesEXT$sel:shaderBufferFloat32AtomicMinMax:PhysicalDeviceShaderAtomicFloat2FeaturesEXT$sel:shaderBufferFloat64AtomicMinMax:PhysicalDeviceShaderAtomicFloat2FeaturesEXT$sel:shaderSharedFloat16Atomics:PhysicalDeviceShaderAtomicFloat2FeaturesEXT$sel:shaderSharedFloat16AtomicAdd:PhysicalDeviceShaderAtomicFloat2FeaturesEXT$sel:shaderSharedFloat16AtomicMinMax:PhysicalDeviceShaderAtomicFloat2FeaturesEXT$sel:shaderSharedFloat32AtomicMinMax:PhysicalDeviceShaderAtomicFloat2FeaturesEXT$sel:shaderSharedFloat64AtomicMinMax:PhysicalDeviceShaderAtomicFloat2FeaturesEXT$sel:shaderImageFloat32AtomicMinMax:PhysicalDeviceShaderAtomicFloat2FeaturesEXT$sel:sparseImageFloat32AtomicMinMax:PhysicalDeviceShaderAtomicFloat2FeaturesEXT1$fZeroPhysicalDeviceShaderAtomicFloat2FeaturesEXT5$fStorablePhysicalDeviceShaderAtomicFloat2FeaturesEXT8$fFromCStructPhysicalDeviceShaderAtomicFloat2FeaturesEXT6$fToCStructPhysicalDeviceShaderAtomicFloat2FeaturesEXT/$fEqPhysicalDeviceShaderAtomicFloat2FeaturesEXT1$fShowPhysicalDeviceShaderAtomicFloat2FeaturesEXT&EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME$EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION$sel:shaderBufferFloat32Atomics:PhysicalDeviceShaderAtomicFloatFeaturesEXT$sel:shaderBufferFloat32AtomicAdd:PhysicalDeviceShaderAtomicFloatFeaturesEXT$sel:shaderBufferFloat64Atomics:PhysicalDeviceShaderAtomicFloatFeaturesEXT$sel:shaderBufferFloat64AtomicAdd:PhysicalDeviceShaderAtomicFloatFeaturesEXT$sel:shaderSharedFloat32Atomics:PhysicalDeviceShaderAtomicFloatFeaturesEXT$sel:shaderSharedFloat32AtomicAdd:PhysicalDeviceShaderAtomicFloatFeaturesEXT$sel:shaderSharedFloat64Atomics:PhysicalDeviceShaderAtomicFloatFeaturesEXT$sel:shaderSharedFloat64AtomicAdd:PhysicalDeviceShaderAtomicFloatFeaturesEXT$sel:shaderImageFloat32Atomics:PhysicalDeviceShaderAtomicFloatFeaturesEXT$sel:shaderImageFloat32AtomicAdd:PhysicalDeviceShaderAtomicFloatFeaturesEXT$sel:sparseImageFloat32Atomics:PhysicalDeviceShaderAtomicFloatFeaturesEXT$sel:sparseImageFloat32AtomicAdd:PhysicalDeviceShaderAtomicFloatFeaturesEXT0$fZeroPhysicalDeviceShaderAtomicFloatFeaturesEXT4$fStorablePhysicalDeviceShaderAtomicFloatFeaturesEXT7$fFromCStructPhysicalDeviceShaderAtomicFloatFeaturesEXT5$fToCStructPhysicalDeviceShaderAtomicFloatFeaturesEXT.$fEqPhysicalDeviceShaderAtomicFloatFeaturesEXT0$fShowPhysicalDeviceShaderAtomicFloatFeaturesEXTEXT_ROBUSTNESS_2_EXTENSION_NAMEEXT_ROBUSTNESS_2_SPEC_VERSION$sel:robustStorageBufferAccessSizeAlignment:PhysicalDeviceRobustness2PropertiesEXT$sel:robustUniformBufferAccessSizeAlignment:PhysicalDeviceRobustness2PropertiesEXT=$sel:robustBufferAccess2:PhysicalDeviceRobustness2FeaturesEXT<$sel:robustImageAccess2:PhysicalDeviceRobustness2FeaturesEXT8$sel:nullDescriptor:PhysicalDeviceRobustness2FeaturesEXT*$fZeroPhysicalDeviceRobustness2FeaturesEXT.$fStorablePhysicalDeviceRobustness2FeaturesEXT1$fFromCStructPhysicalDeviceRobustness2FeaturesEXT/$fToCStructPhysicalDeviceRobustness2FeaturesEXT,$fZeroPhysicalDeviceRobustness2PropertiesEXT0$fStorablePhysicalDeviceRobustness2PropertiesEXT3$fFromCStructPhysicalDeviceRobustness2PropertiesEXT1$fToCStructPhysicalDeviceRobustness2PropertiesEXT*$fEqPhysicalDeviceRobustness2PropertiesEXT($fEqPhysicalDeviceRobustness2FeaturesEXT,$fShowPhysicalDeviceRobustness2PropertiesEXT*$fShowPhysicalDeviceRobustness2FeaturesEXT#EXT_PROVOKING_VERTEX_EXTENSION_NAME!EXT_PROVOKING_VERTEX_SPEC_VERSIONProvokingVertexModeEXT$sel:provokingVertexMode:PipelineRasterizationProvokingVertexStateCreateInfoEXT$sel:provokingVertexModePerPipeline:PhysicalDeviceProvokingVertexPropertiesEXT$sel:transformFeedbackPreservesTriangleFanProvokingVertex:PhysicalDeviceProvokingVertexPropertiesEXT$sel:provokingVertexLast:PhysicalDeviceProvokingVertexFeaturesEXT$sel:transformFeedbackPreservesProvokingVertex:PhysicalDeviceProvokingVertexFeaturesEXT%PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT&PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT.$fZeroPhysicalDeviceProvokingVertexFeaturesEXT2$fStorablePhysicalDeviceProvokingVertexFeaturesEXT5$fFromCStructPhysicalDeviceProvokingVertexFeaturesEXT3$fToCStructPhysicalDeviceProvokingVertexFeaturesEXT0$fZeroPhysicalDeviceProvokingVertexPropertiesEXT4$fStorablePhysicalDeviceProvokingVertexPropertiesEXT7$fFromCStructPhysicalDeviceProvokingVertexPropertiesEXT5$fToCStructPhysicalDeviceProvokingVertexPropertiesEXT$fReadProvokingVertexModeEXT$fShowProvokingVertexModeEXT<$fZeroPipelineRasterizationProvokingVertexStateCreateInfoEXT$fStorablePipelineRasterizationProvokingVertexStateCreateInfoEXT$fFromCStructPipelineRasterizationProvokingVertexStateCreateInfoEXT$fToCStructPipelineRasterizationProvokingVertexStateCreateInfoEXT:$fEqPipelineRasterizationProvokingVertexStateCreateInfoEXT$fEqProvokingVertexModeEXT$fOrdProvokingVertexModeEXT $fStorableProvokingVertexModeEXT$fZeroProvokingVertexModeEXT.$fEqPhysicalDeviceProvokingVertexPropertiesEXT,$fEqPhysicalDeviceProvokingVertexFeaturesEXT<$fShowPipelineRasterizationProvokingVertexStateCreateInfoEXT0$fShowPhysicalDeviceProvokingVertexPropertiesEXT.$fShowPhysicalDeviceProvokingVertexFeaturesEXT-EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME+EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION#PipelineCreationFeedbackFlagBitsEXT PipelineCreationFeedbackFlagsEXT$sel:pipelineCreationFeedback:PipelineCreationFeedbackCreateInfoEXT$sel:pipelineStageCreationFeedbackCount:PipelineCreationFeedbackCreateInfoEXT$sel:pipelineStageCreationFeedbacks:PipelineCreationFeedbackCreateInfoEXT&$sel:flags:PipelineCreationFeedbackEXT)$sel:duration:PipelineCreationFeedbackEXT=PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXTPIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT(PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT)$fReadPipelineCreationFeedbackFlagBitsEXT)$fShowPipelineCreationFeedbackFlagBitsEXT!$fZeroPipelineCreationFeedbackEXT%$fStorablePipelineCreationFeedbackEXT($fFromCStructPipelineCreationFeedbackEXT&$fToCStructPipelineCreationFeedbackEXT+$fZeroPipelineCreationFeedbackCreateInfoEXT/$fStorablePipelineCreationFeedbackCreateInfoEXT2$fFromCStructPipelineCreationFeedbackCreateInfoEXT0$fToCStructPipelineCreationFeedbackCreateInfoEXT)$fEqPipelineCreationFeedbackCreateInfoEXT$fEqPipelineCreationFeedbackEXT'$fEqPipelineCreationFeedbackFlagBitsEXT($fOrdPipelineCreationFeedbackFlagBitsEXT-$fStorablePipelineCreationFeedbackFlagBitsEXT)$fZeroPipelineCreationFeedbackFlagBitsEXT)$fBitsPipelineCreationFeedbackFlagBitsEXT/$fFiniteBitsPipelineCreationFeedbackFlagBitsEXT+$fShowPipelineCreationFeedbackCreateInfoEXT!$fShowPipelineCreationFeedbackEXT2EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME0EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION$sel:pipelineCreationCacheControl:PhysicalDevicePipelineCreationCacheControlFeaturesEXT#ERROR_PIPELINE_COMPILE_REQUIRED_EXT;$fZeroPhysicalDevicePipelineCreationCacheControlFeaturesEXT?$fStorablePhysicalDevicePipelineCreationCacheControlFeaturesEXT$fFromCStructPhysicalDevicePipelineCreationCacheControlFeaturesEXT$fToCStructPhysicalDevicePipelineCreationCacheControlFeaturesEXT9$fEqPhysicalDevicePipelineCreationCacheControlFeaturesEXT;$fShowPhysicalDevicePipelineCreationCacheControlFeaturesEXT&EXT_PHYSICAL_DEVICE_DRM_EXTENSION_NAME$EXT_PHYSICAL_DEVICE_DRM_SPEC_VERSION.$sel:hasPrimary:PhysicalDeviceDrmPropertiesEXT-$sel:hasRender:PhysicalDeviceDrmPropertiesEXT0$sel:primaryMajor:PhysicalDeviceDrmPropertiesEXT0$sel:primaryMinor:PhysicalDeviceDrmPropertiesEXT/$sel:renderMajor:PhysicalDeviceDrmPropertiesEXT/$sel:renderMinor:PhysicalDeviceDrmPropertiesEXT$$fZeroPhysicalDeviceDrmPropertiesEXT($fStorablePhysicalDeviceDrmPropertiesEXT+$fFromCStructPhysicalDeviceDrmPropertiesEXT)$fToCStructPhysicalDeviceDrmPropertiesEXT"$fEqPhysicalDeviceDrmPropertiesEXT$$fShowPhysicalDeviceDrmPropertiesEXT"EXT_MEMORY_PRIORITY_EXTENSION_NAME EXT_MEMORY_PRIORITY_SPEC_VERSION+$sel:priority:MemoryPriorityAllocateInfoEXT;$sel:memoryPriority:PhysicalDeviceMemoryPriorityFeaturesEXT-$fZeroPhysicalDeviceMemoryPriorityFeaturesEXT1$fStorablePhysicalDeviceMemoryPriorityFeaturesEXT4$fFromCStructPhysicalDeviceMemoryPriorityFeaturesEXT2$fToCStructPhysicalDeviceMemoryPriorityFeaturesEXT#$fZeroMemoryPriorityAllocateInfoEXT'$fStorableMemoryPriorityAllocateInfoEXT*$fFromCStructMemoryPriorityAllocateInfoEXT($fToCStructMemoryPriorityAllocateInfoEXT!$fEqMemoryPriorityAllocateInfoEXT+$fEqPhysicalDeviceMemoryPriorityFeaturesEXT#$fShowMemoryPriorityAllocateInfoEXT-$fShowPhysicalDeviceMemoryPriorityFeaturesEXT'EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME%EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION$sel:maxInlineUniformBlockBindings:DescriptorPoolInlineUniformBlockCreateInfoEXT5$sel:dataSize:WriteDescriptorSetInlineUniformBlockEXT2$sel:data':WriteDescriptorSetInlineUniformBlockEXT$sel:maxInlineUniformBlockSize:PhysicalDeviceInlineUniformBlockPropertiesEXT$sel:maxPerStageDescriptorInlineUniformBlocks:PhysicalDeviceInlineUniformBlockPropertiesEXT$sel:maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks:PhysicalDeviceInlineUniformBlockPropertiesEXT$sel:maxDescriptorSetInlineUniformBlocks:PhysicalDeviceInlineUniformBlockPropertiesEXT$sel:maxDescriptorSetUpdateAfterBindInlineUniformBlocks:PhysicalDeviceInlineUniformBlockPropertiesEXT$sel:inlineUniformBlock:PhysicalDeviceInlineUniformBlockFeaturesEXT$sel:descriptorBindingInlineUniformBlockUpdateAfterBind:PhysicalDeviceInlineUniformBlockFeaturesEXT1$fZeroPhysicalDeviceInlineUniformBlockFeaturesEXT5$fStorablePhysicalDeviceInlineUniformBlockFeaturesEXT8$fFromCStructPhysicalDeviceInlineUniformBlockFeaturesEXT6$fToCStructPhysicalDeviceInlineUniformBlockFeaturesEXT3$fZeroPhysicalDeviceInlineUniformBlockPropertiesEXT7$fStorablePhysicalDeviceInlineUniformBlockPropertiesEXT:$fFromCStructPhysicalDeviceInlineUniformBlockPropertiesEXT8$fToCStructPhysicalDeviceInlineUniformBlockPropertiesEXT-$fZeroWriteDescriptorSetInlineUniformBlockEXT1$fStorableWriteDescriptorSetInlineUniformBlockEXT4$fFromCStructWriteDescriptorSetInlineUniformBlockEXT2$fToCStructWriteDescriptorSetInlineUniformBlockEXT3$fZeroDescriptorPoolInlineUniformBlockCreateInfoEXT7$fStorableDescriptorPoolInlineUniformBlockCreateInfoEXT:$fFromCStructDescriptorPoolInlineUniformBlockCreateInfoEXT8$fToCStructDescriptorPoolInlineUniformBlockCreateInfoEXT1$fEqDescriptorPoolInlineUniformBlockCreateInfoEXT1$fEqPhysicalDeviceInlineUniformBlockPropertiesEXT/$fEqPhysicalDeviceInlineUniformBlockFeaturesEXT3$fShowDescriptorPoolInlineUniformBlockCreateInfoEXT-$fShowWriteDescriptorSetInlineUniformBlockEXT3$fShowPhysicalDeviceInlineUniformBlockPropertiesEXT1$fShowPhysicalDeviceInlineUniformBlockFeaturesEXT#EXT_INDEX_TYPE_UINT8_EXTENSION_NAME!EXT_INDEX_TYPE_UINT8_SPEC_VERSION;$sel:indexTypeUint8:PhysicalDeviceIndexTypeUint8FeaturesEXT-$fZeroPhysicalDeviceIndexTypeUint8FeaturesEXT1$fStorablePhysicalDeviceIndexTypeUint8FeaturesEXT4$fFromCStructPhysicalDeviceIndexTypeUint8FeaturesEXT2$fToCStructPhysicalDeviceIndexTypeUint8FeaturesEXT+$fEqPhysicalDeviceIndexTypeUint8FeaturesEXT-$fShowPhysicalDeviceIndexTypeUint8FeaturesEXT#EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME!EXT_IMAGE_ROBUSTNESS_SPEC_VERSION?$sel:robustImageAccess:PhysicalDeviceImageRobustnessFeaturesEXT.$fZeroPhysicalDeviceImageRobustnessFeaturesEXT2$fStorablePhysicalDeviceImageRobustnessFeaturesEXT5$fFromCStructPhysicalDeviceImageRobustnessFeaturesEXT3$fToCStructPhysicalDeviceImageRobustnessFeaturesEXT,$fEqPhysicalDeviceImageRobustnessFeaturesEXT.$fShowPhysicalDeviceImageRobustnessFeaturesEXT,EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME*EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION$sel:fragmentShaderSampleInterlock:PhysicalDeviceFragmentShaderInterlockFeaturesEXT$sel:fragmentShaderPixelInterlock:PhysicalDeviceFragmentShaderInterlockFeaturesEXT$sel:fragmentShaderShadingRateInterlock:PhysicalDeviceFragmentShaderInterlockFeaturesEXT6$fZeroPhysicalDeviceFragmentShaderInterlockFeaturesEXT:$fStorablePhysicalDeviceFragmentShaderInterlockFeaturesEXT=$fFromCStructPhysicalDeviceFragmentShaderInterlockFeaturesEXT;$fToCStructPhysicalDeviceFragmentShaderInterlockFeaturesEXT4$fEqPhysicalDeviceFragmentShaderInterlockFeaturesEXT6$fShowPhysicalDeviceFragmentShaderInterlockFeaturesEXT)EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME'EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION$sel:subsampledLoads:PhysicalDeviceFragmentDensityMap2PropertiesEXT$sel:subsampledCoarseReconstructionEarlyAccess:PhysicalDeviceFragmentDensityMap2PropertiesEXT$sel:maxSubsampledArrayLayers:PhysicalDeviceFragmentDensityMap2PropertiesEXT$sel:maxDescriptorSetSubsampledSamplers:PhysicalDeviceFragmentDensityMap2PropertiesEXT$sel:fragmentDensityMapDeferred:PhysicalDeviceFragmentDensityMap2FeaturesEXT2$fZeroPhysicalDeviceFragmentDensityMap2FeaturesEXT6$fStorablePhysicalDeviceFragmentDensityMap2FeaturesEXT9$fFromCStructPhysicalDeviceFragmentDensityMap2FeaturesEXT7$fToCStructPhysicalDeviceFragmentDensityMap2FeaturesEXT4$fZeroPhysicalDeviceFragmentDensityMap2PropertiesEXT8$fStorablePhysicalDeviceFragmentDensityMap2PropertiesEXT;$fFromCStructPhysicalDeviceFragmentDensityMap2PropertiesEXT9$fToCStructPhysicalDeviceFragmentDensityMap2PropertiesEXT2$fEqPhysicalDeviceFragmentDensityMap2PropertiesEXT0$fEqPhysicalDeviceFragmentDensityMap2FeaturesEXT4$fShowPhysicalDeviceFragmentDensityMap2PropertiesEXT2$fShowPhysicalDeviceFragmentDensityMap2FeaturesEXT$EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME"EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION1PipelineRasterizationDepthClipStateCreateFlagsEXT;$sel:flags:PipelineRasterizationDepthClipStateCreateInfoEXT$sel:depthClipEnable:PipelineRasterizationDepthClipStateCreateInfoEXT=$sel:depthClipEnable:PhysicalDeviceDepthClipEnableFeaturesEXT.$fZeroPhysicalDeviceDepthClipEnableFeaturesEXT2$fStorablePhysicalDeviceDepthClipEnableFeaturesEXT5$fFromCStructPhysicalDeviceDepthClipEnableFeaturesEXT3$fToCStructPhysicalDeviceDepthClipEnableFeaturesEXT7$fReadPipelineRasterizationDepthClipStateCreateFlagsEXT7$fShowPipelineRasterizationDepthClipStateCreateFlagsEXT6$fZeroPipelineRasterizationDepthClipStateCreateInfoEXT:$fStorablePipelineRasterizationDepthClipStateCreateInfoEXT=$fFromCStructPipelineRasterizationDepthClipStateCreateInfoEXT;$fToCStructPipelineRasterizationDepthClipStateCreateInfoEXT4$fEqPipelineRasterizationDepthClipStateCreateInfoEXT5$fEqPipelineRasterizationDepthClipStateCreateFlagsEXT6$fOrdPipelineRasterizationDepthClipStateCreateFlagsEXT;$fStorablePipelineRasterizationDepthClipStateCreateFlagsEXT7$fZeroPipelineRasterizationDepthClipStateCreateFlagsEXT7$fBitsPipelineRasterizationDepthClipStateCreateFlagsEXT=$fFiniteBitsPipelineRasterizationDepthClipStateCreateFlagsEXT,$fEqPhysicalDeviceDepthClipEnableFeaturesEXT6$fShowPipelineRasterizationDepthClipStateCreateInfoEXT.$fShowPhysicalDeviceDepthClipEnableFeaturesEXT-EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME+EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION ConservativeRasterizationModeEXT4PipelineRasterizationConservativeStateCreateFlagsEXT>$sel:flags:PipelineRasterizationConservativeStateCreateInfoEXT$sel:conservativeRasterizationMode:PipelineRasterizationConservativeStateCreateInfoEXT$sel:extraPrimitiveOverestimationSize:PipelineRasterizationConservativeStateCreateInfoEXT$sel:primitiveOverestimationSize:PhysicalDeviceConservativeRasterizationPropertiesEXT$sel:maxExtraPrimitiveOverestimationSize:PhysicalDeviceConservativeRasterizationPropertiesEXT$sel:extraPrimitiveOverestimationSizeGranularity:PhysicalDeviceConservativeRasterizationPropertiesEXT$sel:primitiveUnderestimation:PhysicalDeviceConservativeRasterizationPropertiesEXT$sel:conservativePointAndLineRasterization:PhysicalDeviceConservativeRasterizationPropertiesEXT$sel:degenerateTrianglesRasterized:PhysicalDeviceConservativeRasterizationPropertiesEXT$sel:degenerateLinesRasterized:PhysicalDeviceConservativeRasterizationPropertiesEXT$sel:fullyCoveredFragmentShaderInputVariable:PhysicalDeviceConservativeRasterizationPropertiesEXT$sel:conservativeRasterizationPostDepthCoverage:PhysicalDeviceConservativeRasterizationPropertiesEXT1CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT0CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT,CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT:$fZeroPhysicalDeviceConservativeRasterizationPropertiesEXT>$fStorablePhysicalDeviceConservativeRasterizationPropertiesEXT$fFromCStructPhysicalDeviceConservativeRasterizationPropertiesEXT?$fToCStructPhysicalDeviceConservativeRasterizationPropertiesEXT:$fReadPipelineRasterizationConservativeStateCreateFlagsEXT:$fShowPipelineRasterizationConservativeStateCreateFlagsEXT&$fReadConservativeRasterizationModeEXT&$fShowConservativeRasterizationModeEXT9$fZeroPipelineRasterizationConservativeStateCreateInfoEXT=$fStorablePipelineRasterizationConservativeStateCreateInfoEXT$fFromCStructPipelineRasterizationConservativeStateCreateInfoEXT>$fToCStructPipelineRasterizationConservativeStateCreateInfoEXT7$fEqPipelineRasterizationConservativeStateCreateInfoEXT$$fEqConservativeRasterizationModeEXT%$fOrdConservativeRasterizationModeEXT*$fStorableConservativeRasterizationModeEXT&$fZeroConservativeRasterizationModeEXT8$fEqPipelineRasterizationConservativeStateCreateFlagsEXT9$fOrdPipelineRasterizationConservativeStateCreateFlagsEXT>$fStorablePipelineRasterizationConservativeStateCreateFlagsEXT:$fZeroPipelineRasterizationConservativeStateCreateFlagsEXT:$fBitsPipelineRasterizationConservativeStateCreateFlagsEXT$fFiniteBitsPipelineRasterizationConservativeStateCreateFlagsEXT8$fEqPhysicalDeviceConservativeRasterizationPropertiesEXT9$fShowPipelineRasterizationConservativeStateCreateInfoEXT:$fShowPhysicalDeviceConservativeRasterizationPropertiesEXT+EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME)EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSIONBlendOverlapEXT$sel:srcPremultiplied:PipelineColorBlendAdvancedStateCreateInfoEXT$sel:dstPremultiplied:PipelineColorBlendAdvancedStateCreateInfoEXT>$sel:blendOverlap:PipelineColorBlendAdvancedStateCreateInfoEXT$sel:advancedBlendMaxColorAttachments:PhysicalDeviceBlendOperationAdvancedPropertiesEXT$sel:advancedBlendIndependentBlend:PhysicalDeviceBlendOperationAdvancedPropertiesEXT$sel:advancedBlendNonPremultipliedSrcColor:PhysicalDeviceBlendOperationAdvancedPropertiesEXT$sel:advancedBlendNonPremultipliedDstColor:PhysicalDeviceBlendOperationAdvancedPropertiesEXT$sel:advancedBlendCorrelatedOverlap:PhysicalDeviceBlendOperationAdvancedPropertiesEXT$sel:advancedBlendAllOperations:PhysicalDeviceBlendOperationAdvancedPropertiesEXT$sel:advancedBlendCoherentOperations:PhysicalDeviceBlendOperationAdvancedFeaturesEXTBLEND_OVERLAP_CONJOINT_EXTBLEND_OVERLAP_DISJOINT_EXTBLEND_OVERLAP_UNCORRELATED_EXT5$fZeroPhysicalDeviceBlendOperationAdvancedFeaturesEXT9$fStorablePhysicalDeviceBlendOperationAdvancedFeaturesEXT<$fFromCStructPhysicalDeviceBlendOperationAdvancedFeaturesEXT:$fToCStructPhysicalDeviceBlendOperationAdvancedFeaturesEXT7$fZeroPhysicalDeviceBlendOperationAdvancedPropertiesEXT;$fStorablePhysicalDeviceBlendOperationAdvancedPropertiesEXT>$fFromCStructPhysicalDeviceBlendOperationAdvancedPropertiesEXT<$fToCStructPhysicalDeviceBlendOperationAdvancedPropertiesEXT$fReadBlendOverlapEXT$fShowBlendOverlapEXT2$fZeroPipelineColorBlendAdvancedStateCreateInfoEXT6$fStorablePipelineColorBlendAdvancedStateCreateInfoEXT9$fFromCStructPipelineColorBlendAdvancedStateCreateInfoEXT7$fToCStructPipelineColorBlendAdvancedStateCreateInfoEXT0$fEqPipelineColorBlendAdvancedStateCreateInfoEXT$fEqBlendOverlapEXT$fOrdBlendOverlapEXT$fStorableBlendOverlapEXT$fZeroBlendOverlapEXT5$fEqPhysicalDeviceBlendOperationAdvancedPropertiesEXT3$fEqPhysicalDeviceBlendOperationAdvancedFeaturesEXT2$fShowPipelineColorBlendAdvancedStateCreateInfoEXT7$fShowPhysicalDeviceBlendOperationAdvancedPropertiesEXT5$fShowPhysicalDeviceBlendOperationAdvancedFeaturesEXTEXT_4444_FORMATS_EXTENSION_NAMEEXT_4444_FORMATS_SPEC_VERSION8$sel:formatA4R4G4B4:PhysicalDevice4444FormatsFeaturesEXT8$sel:formatA4B4G4R4:PhysicalDevice4444FormatsFeaturesEXT*$fZeroPhysicalDevice4444FormatsFeaturesEXT.$fStorablePhysicalDevice4444FormatsFeaturesEXT1$fFromCStructPhysicalDevice4444FormatsFeaturesEXT/$fToCStructPhysicalDevice4444FormatsFeaturesEXT($fEqPhysicalDevice4444FormatsFeaturesEXT*$fShowPhysicalDevice4444FormatsFeaturesEXT*AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME(AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION$sel:supportsTextureGatherLODBiasAMD:TextureLODGatherFormatPropertiesAMD)$fZeroTextureLODGatherFormatPropertiesAMD-$fStorableTextureLODGatherFormatPropertiesAMD0$fFromCStructTextureLODGatherFormatPropertiesAMD.$fToCStructTextureLODGatherFormatPropertiesAMD'$fEqTextureLODGatherFormatPropertiesAMD)$fShowTextureLODGatherFormatPropertiesAMD+AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME)AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSIONShaderCorePropertiesFlagBitsAMDShaderCorePropertiesFlagsAMD>$sel:shaderCoreFeatures:PhysicalDeviceShaderCoreProperties2AMD$sel:activeComputeUnitCount:PhysicalDeviceShaderCoreProperties2AMD%$fReadShaderCorePropertiesFlagBitsAMD%$fShowShaderCorePropertiesFlagBitsAMD,$fZeroPhysicalDeviceShaderCoreProperties2AMD0$fStorablePhysicalDeviceShaderCoreProperties2AMD3$fFromCStructPhysicalDeviceShaderCoreProperties2AMD1$fToCStructPhysicalDeviceShaderCoreProperties2AMD*$fEqPhysicalDeviceShaderCoreProperties2AMD#$fEqShaderCorePropertiesFlagBitsAMD$$fOrdShaderCorePropertiesFlagBitsAMD)$fStorableShaderCorePropertiesFlagBitsAMD%$fZeroShaderCorePropertiesFlagBitsAMD%$fBitsShaderCorePropertiesFlagBitsAMD+$fFiniteBitsShaderCorePropertiesFlagBitsAMD,$fShowPhysicalDeviceShaderCoreProperties2AMD,AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME*AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION"PipelineCompilerControlFlagBitsAMDPipelineCompilerControlFlagsAMD>$sel:compilerControlFlags:PipelineCompilerControlCreateInfoAMD($fReadPipelineCompilerControlFlagBitsAMD($fShowPipelineCompilerControlFlagBitsAMD*$fZeroPipelineCompilerControlCreateInfoAMD.$fStorablePipelineCompilerControlCreateInfoAMD1$fFromCStructPipelineCompilerControlCreateInfoAMD/$fToCStructPipelineCompilerControlCreateInfoAMD($fEqPipelineCompilerControlCreateInfoAMD&$fEqPipelineCompilerControlFlagBitsAMD'$fOrdPipelineCompilerControlFlagBitsAMD,$fStorablePipelineCompilerControlFlagBitsAMD($fZeroPipelineCompilerControlFlagBitsAMD($fBitsPipelineCompilerControlFlagBitsAMD.$fFiniteBitsPipelineCompilerControlFlagBitsAMD*$fShowPipelineCompilerControlCreateInfoAMD)AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME'AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION$sel:deviceCoherentMemory:PhysicalDeviceCoherentMemoryFeaturesAMD-$fZeroPhysicalDeviceCoherentMemoryFeaturesAMD1$fStorablePhysicalDeviceCoherentMemoryFeaturesAMD4$fFromCStructPhysicalDeviceCoherentMemoryFeaturesAMD2$fToCStructPhysicalDeviceCoherentMemoryFeaturesAMD+$fEqPhysicalDeviceCoherentMemoryFeaturesAMD-$fShowPhysicalDeviceCoherentMemoryFeaturesAMD>$sel:vulkanMemoryModel:PhysicalDeviceVulkanMemoryModelFeatures$sel:vulkanMemoryModelDeviceScope:PhysicalDeviceVulkanMemoryModelFeatures$sel:vulkanMemoryModelAvailabilityVisibilityChains:PhysicalDeviceVulkanMemoryModelFeatures-$fZeroPhysicalDeviceVulkanMemoryModelFeatures1$fStorablePhysicalDeviceVulkanMemoryModelFeatures4$fFromCStructPhysicalDeviceVulkanMemoryModelFeatures2$fToCStructPhysicalDeviceVulkanMemoryModelFeatures+$fEqPhysicalDeviceVulkanMemoryModelFeatures-$fShowPhysicalDeviceVulkanMemoryModelFeatures&KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME$KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION?STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR$sel:uniformBufferStandardLayout:PhysicalDeviceUniformBufferStandardLayoutFeatures7$fZeroPhysicalDeviceUniformBufferStandardLayoutFeatures;$fStorablePhysicalDeviceUniformBufferStandardLayoutFeatures>$fFromCStructPhysicalDeviceUniformBufferStandardLayoutFeatures<$fToCStructPhysicalDeviceUniformBufferStandardLayoutFeatures5$fEqPhysicalDeviceUniformBufferStandardLayoutFeatures7$fShowPhysicalDeviceUniformBufferStandardLayoutFeatures1KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME/KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION4PhysicalDeviceUniformBufferStandardLayoutFeaturesKHRSTRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR$sel:shaderSubgroupExtendedTypes:PhysicalDeviceShaderSubgroupExtendedTypesFeatures7$fZeroPhysicalDeviceShaderSubgroupExtendedTypesFeatures;$fStorablePhysicalDeviceShaderSubgroupExtendedTypesFeatures>$fFromCStructPhysicalDeviceShaderSubgroupExtendedTypesFeatures<$fToCStructPhysicalDeviceShaderSubgroupExtendedTypesFeatures5$fEqPhysicalDeviceShaderSubgroupExtendedTypesFeatures7$fShowPhysicalDeviceShaderSubgroupExtendedTypesFeatures1KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME/KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION4PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHRSTRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR$sel:denormBehaviorIndependence:PhysicalDeviceFloatControlsProperties$sel:roundingModeIndependence:PhysicalDeviceFloatControlsProperties$sel:shaderSignedZeroInfNanPreserveFloat16:PhysicalDeviceFloatControlsProperties$sel:shaderSignedZeroInfNanPreserveFloat32:PhysicalDeviceFloatControlsProperties$sel:shaderSignedZeroInfNanPreserveFloat64:PhysicalDeviceFloatControlsProperties$sel:shaderDenormPreserveFloat16:PhysicalDeviceFloatControlsProperties$sel:shaderDenormPreserveFloat32:PhysicalDeviceFloatControlsProperties$sel:shaderDenormPreserveFloat64:PhysicalDeviceFloatControlsProperties$sel:shaderDenormFlushToZeroFloat16:PhysicalDeviceFloatControlsProperties$sel:shaderDenormFlushToZeroFloat32:PhysicalDeviceFloatControlsProperties$sel:shaderDenormFlushToZeroFloat64:PhysicalDeviceFloatControlsProperties$sel:shaderRoundingModeRTEFloat16:PhysicalDeviceFloatControlsProperties$sel:shaderRoundingModeRTEFloat32:PhysicalDeviceFloatControlsProperties$sel:shaderRoundingModeRTEFloat64:PhysicalDeviceFloatControlsProperties$sel:shaderRoundingModeRTZFloat16:PhysicalDeviceFloatControlsProperties$sel:shaderRoundingModeRTZFloat32:PhysicalDeviceFloatControlsProperties$sel:shaderRoundingModeRTZFloat64:PhysicalDeviceFloatControlsProperties+$fZeroPhysicalDeviceFloatControlsProperties/$fStorablePhysicalDeviceFloatControlsProperties2$fFromCStructPhysicalDeviceFloatControlsProperties0$fToCStructPhysicalDeviceFloatControlsProperties)$fEqPhysicalDeviceFloatControlsProperties+$fShowPhysicalDeviceFloatControlsProperties(KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME&KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION(PhysicalDeviceFloatControlsPropertiesKHR"ShaderFloatControlsIndependenceKHR+SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR*SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR2SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR$sel:storageBuffer8BitAccess:PhysicalDevice8BitStorageFeatures$sel:uniformAndStorageBuffer8BitAccess:PhysicalDevice8BitStorageFeatures;$sel:storagePushConstant8:PhysicalDevice8BitStorageFeatures'$fZeroPhysicalDevice8BitStorageFeatures+$fStorablePhysicalDevice8BitStorageFeatures.$fFromCStructPhysicalDevice8BitStorageFeatures,$fToCStructPhysicalDevice8BitStorageFeatures%$fEqPhysicalDevice8BitStorageFeatures'$fShowPhysicalDevice8BitStorageFeaturesKHR_8BIT_STORAGE_EXTENSION_NAMEKHR_8BIT_STORAGE_SPEC_VERSION$PhysicalDevice8BitStorageFeaturesKHR8STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR>$sel:scalarBlockLayout:PhysicalDeviceScalarBlockLayoutFeatures-$fZeroPhysicalDeviceScalarBlockLayoutFeatures1$fStorablePhysicalDeviceScalarBlockLayoutFeatures4$fFromCStructPhysicalDeviceScalarBlockLayoutFeatures2$fToCStructPhysicalDeviceScalarBlockLayoutFeatures+$fEqPhysicalDeviceScalarBlockLayoutFeatures-$fShowPhysicalDeviceScalarBlockLayoutFeatures&EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME$EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION*PhysicalDeviceScalarBlockLayoutFeaturesEXT?STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXTSemaphoreWaitFlagBitsSemaphoreWaitFlagsSEMAPHORE_WAIT_ANY_BIT$fReadSemaphoreWaitFlagBits$fShowSemaphoreWaitFlagBits$fEqSemaphoreWaitFlagBits$fOrdSemaphoreWaitFlagBits$fStorableSemaphoreWaitFlagBits$fZeroSemaphoreWaitFlagBits$fBitsSemaphoreWaitFlagBits!$fFiniteBitsSemaphoreWaitFlagBitsResolveModeFlagsRESOLVE_MODE_MAX_BITRESOLVE_MODE_MIN_BIT$fReadResolveModeFlagBits$fShowResolveModeFlagBits$fEqResolveModeFlagBits$fOrdResolveModeFlagBits$fStorableResolveModeFlagBits$fZeroResolveModeFlagBits$fBitsResolveModeFlagBits$fFiniteBitsResolveModeFlagBitsDescriptorBindingFlags$fReadDescriptorBindingFlagBits$fShowDescriptorBindingFlagBits$fEqDescriptorBindingFlagBits$fOrdDescriptorBindingFlagBits#$fStorableDescriptorBindingFlagBits$fZeroDescriptorBindingFlagBits$fBitsDescriptorBindingFlagBits%$fFiniteBitsDescriptorBindingFlagBits%PhysicalDeviceVariablePointerFeatures$sel:variablePointersStorageBuffer:PhysicalDeviceVariablePointersFeatures<$sel:variablePointers:PhysicalDeviceVariablePointersFeatures8STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES,$fZeroPhysicalDeviceVariablePointersFeatures0$fStorablePhysicalDeviceVariablePointersFeatures3$fFromCStructPhysicalDeviceVariablePointersFeatures1$fToCStructPhysicalDeviceVariablePointersFeatures*$fEqPhysicalDeviceVariablePointersFeatures,$fShowPhysicalDeviceVariablePointersFeatures$KHR_VARIABLE_POINTERS_EXTENSION_NAME"KHR_VARIABLE_POINTERS_SPEC_VERSION(PhysicalDeviceVariablePointerFeaturesKHR)PhysicalDeviceVariablePointersFeaturesKHR$fStorablePipelineShaderStageRequiredSubgroupSizeCreateInfoEXT$fFromCStructPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT?$fToCStructPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT8$fEqPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT2$fEqPhysicalDeviceSubgroupSizeControlPropertiesEXT0$fEqPhysicalDeviceSubgroupSizeControlFeaturesEXT:$fShowPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT4$fShowPhysicalDeviceSubgroupSizeControlPropertiesEXT2$fShowPhysicalDeviceSubgroupSizeControlFeaturesEXT2$sel:subgroupSize:PhysicalDeviceSubgroupProperties5$sel:supportedStages:PhysicalDeviceSubgroupProperties9$sel:supportedOperations:PhysicalDeviceSubgroupProperties?$sel:quadOperationsInAllStages:PhysicalDeviceSubgroupProperties&$fZeroPhysicalDeviceSubgroupProperties*$fStorablePhysicalDeviceSubgroupProperties-$fFromCStructPhysicalDeviceSubgroupProperties+$fToCStructPhysicalDeviceSubgroupProperties$$fEqPhysicalDeviceSubgroupProperties&$fShowPhysicalDeviceSubgroupPropertiesShaderModuleCreateFlagBitsShaderModuleCreateFlags $fReadShaderModuleCreateFlagBits $fShowShaderModuleCreateFlagBits$fEqShaderModuleCreateFlagBits$fOrdShaderModuleCreateFlagBits$$fStorableShaderModuleCreateFlagBits $fZeroShaderModuleCreateFlagBits $fBitsShaderModuleCreateFlagBits&$fFiniteBitsShaderModuleCreateFlagBitsSemaphoreCreateFlags$fReadSemaphoreCreateFlags$fShowSemaphoreCreateFlags$fEqSemaphoreCreateFlags$fOrdSemaphoreCreateFlags$fStorableSemaphoreCreateFlags$fZeroSemaphoreCreateFlags$fBitsSemaphoreCreateFlags $fFiniteBitsSemaphoreCreateFlagsSamplerCreateFlagBitsSamplerCreateFlags$fReadSamplerCreateFlagBits$fShowSamplerCreateFlagBits$fEqSamplerCreateFlagBits$fOrdSamplerCreateFlagBits$fStorableSamplerCreateFlagBits$fZeroSamplerCreateFlagBits$fBitsSamplerCreateFlagBits!$fFiniteBitsSamplerCreateFlagBitsSAMPLE_COUNT_64_BITSAMPLE_COUNT_32_BIT$fReadSampleCountFlagBits$fShowSampleCountFlagBits$fEqSampleCountFlagBits$fOrdSampleCountFlagBits$fStorableSampleCountFlagBits$fZeroSampleCountFlagBits$fBitsSampleCountFlagBits$fFiniteBitsSampleCountFlagBitsRenderPassCreateFlags$fReadRenderPassCreateFlagBits$fShowRenderPassCreateFlagBits$fEqRenderPassCreateFlagBits$fOrdRenderPassCreateFlagBits"$fStorableRenderPassCreateFlagBits$fZeroRenderPassCreateFlagBits$fBitsRenderPassCreateFlagBits$$fFiniteBitsRenderPassCreateFlagBits QueueFlagBits QueueFlagsQUEUE_PROTECTED_BITQUEUE_SPARSE_BINDING_BITQUEUE_TRANSFER_BIT$fReadQueueFlagBits$fShowQueueFlagBits$fEqQueueFlagBits$fOrdQueueFlagBits$fStorableQueueFlagBits$fZeroQueueFlagBits$fBitsQueueFlagBits$fFiniteBitsQueueFlagBits$fReadQueryType$fShowQueryType $fEqQueryType$fOrdQueryType$fStorableQueryType$fZeroQueryTypeQUERY_RESULT_PARTIAL_BIT"QUERY_RESULT_WITH_AVAILABILITY_BITQUERY_RESULT_WAIT_BITQUERY_RESULT_64_BIT$fReadQueryResultFlagBits$fShowQueryResultFlagBits$fEqQueryResultFlagBits$fOrdQueryResultFlagBits$fStorableQueryResultFlagBits$fZeroQueryResultFlagBits$fBitsQueryResultFlagBits$fFiniteBitsQueryResultFlagBitsQueryPoolCreateFlags$fReadQueryPoolCreateFlags$fShowQueryPoolCreateFlags$fEqQueryPoolCreateFlags$fOrdQueryPoolCreateFlags$fStorableQueryPoolCreateFlags$fZeroQueryPoolCreateFlags$fBitsQueryPoolCreateFlags $fFiniteBitsQueryPoolCreateFlagsQueryPipelineStatisticFlags7QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BITQUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BITQUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT8QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT0QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT1QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT7QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT8QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT6QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT6QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT4QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT$$fReadQueryPipelineStatisticFlagBits$$fShowQueryPipelineStatisticFlagBits"$fEqQueryPipelineStatisticFlagBits#$fOrdQueryPipelineStatisticFlagBits($fStorableQueryPipelineStatisticFlagBits$$fZeroQueryPipelineStatisticFlagBits$$fBitsQueryPipelineStatisticFlagBits*$fFiniteBitsQueryPipelineStatisticFlagBits$fReadQueryControlFlagBits$fShowQueryControlFlagBits$fEqQueryControlFlagBits$fOrdQueryControlFlagBits$fStorableQueryControlFlagBits$fZeroQueryControlFlagBits$fBitsQueryControlFlagBits $fFiniteBitsQueryControlFlagBitsPRIMITIVE_TOPOLOGY_PATCH_LIST0PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY/PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY,PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY+PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCYPRIMITIVE_TOPOLOGY_TRIANGLE_FAN!PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP PRIMITIVE_TOPOLOGY_TRIANGLE_LISTPRIMITIVE_TOPOLOGY_LINE_STRIPPRIMITIVE_TOPOLOGY_LINE_LISTPRIMITIVE_TOPOLOGY_POINT_LIST$fReadPrimitiveTopology$fShowPrimitiveTopology$fEqPrimitiveTopology$fOrdPrimitiveTopology$fStorablePrimitiveTopology$fZeroPrimitiveTopology PolygonModePOLYGON_MODE_FILL$fReadPolygonMode$fShowPolygonMode$fEqPolygonMode$fOrdPolygonMode$fStorablePolygonMode$fZeroPolygonMode PipelineViewportStateCreateFlags&$fReadPipelineViewportStateCreateFlags&$fShowPipelineViewportStateCreateFlags$$fEqPipelineViewportStateCreateFlags%$fOrdPipelineViewportStateCreateFlags*$fStorablePipelineViewportStateCreateFlags&$fZeroPipelineViewportStateCreateFlags&$fBitsPipelineViewportStateCreateFlags,$fFiniteBitsPipelineViewportStateCreateFlags#PipelineVertexInputStateCreateFlags)$fReadPipelineVertexInputStateCreateFlags)$fShowPipelineVertexInputStateCreateFlags'$fEqPipelineVertexInputStateCreateFlags($fOrdPipelineVertexInputStateCreateFlags-$fStorablePipelineVertexInputStateCreateFlags)$fZeroPipelineVertexInputStateCreateFlags)$fBitsPipelineVertexInputStateCreateFlags/$fFiniteBitsPipelineVertexInputStateCreateFlags$PipelineTessellationStateCreateFlags*$fReadPipelineTessellationStateCreateFlags*$fShowPipelineTessellationStateCreateFlags($fEqPipelineTessellationStateCreateFlags)$fOrdPipelineTessellationStateCreateFlags.$fStorablePipelineTessellationStateCreateFlags*$fZeroPipelineTessellationStateCreateFlags*$fBitsPipelineTessellationStateCreateFlags0$fFiniteBitsPipelineTessellationStateCreateFlagsPIPELINE_STAGE_NONE_KHRPIPELINE_STAGE_ALL_COMMANDS_BITPIPELINE_STAGE_ALL_GRAPHICS_BITPIPELINE_STAGE_TOP_OF_PIPE_BIT$fReadPipelineStageFlagBits$fShowPipelineStageFlagBits$fEqPipelineStageFlagBits$fOrdPipelineStageFlagBits$fStorablePipelineStageFlagBits$fZeroPipelineStageFlagBits$fBitsPipelineStageFlagBits!$fFiniteBitsPipelineStageFlagBits!PipelineShaderStageCreateFlagBitsPipelineShaderStageCreateFlags'$fReadPipelineShaderStageCreateFlagBits'$fShowPipelineShaderStageCreateFlagBits%$fEqPipelineShaderStageCreateFlagBits&$fOrdPipelineShaderStageCreateFlagBits+$fStorablePipelineShaderStageCreateFlagBits'$fZeroPipelineShaderStageCreateFlagBits'$fBitsPipelineShaderStageCreateFlagBits-$fFiniteBitsPipelineShaderStageCreateFlagBits%PipelineRasterizationStateCreateFlags+$fReadPipelineRasterizationStateCreateFlags+$fShowPipelineRasterizationStateCreateFlags)$fEqPipelineRasterizationStateCreateFlags*$fOrdPipelineRasterizationStateCreateFlags/$fStorablePipelineRasterizationStateCreateFlags+$fZeroPipelineRasterizationStateCreateFlags+$fBitsPipelineRasterizationStateCreateFlags1$fFiniteBitsPipelineRasterizationStateCreateFlags#PipelineMultisampleStateCreateFlags)$fReadPipelineMultisampleStateCreateFlags)$fShowPipelineMultisampleStateCreateFlags'$fEqPipelineMultisampleStateCreateFlags($fOrdPipelineMultisampleStateCreateFlags-$fStorablePipelineMultisampleStateCreateFlags)$fZeroPipelineMultisampleStateCreateFlags)$fBitsPipelineMultisampleStateCreateFlags/$fFiniteBitsPipelineMultisampleStateCreateFlagsPipelineLayoutCreateFlags$fReadPipelineLayoutCreateFlags$fShowPipelineLayoutCreateFlags$fEqPipelineLayoutCreateFlags$fOrdPipelineLayoutCreateFlags#$fStorablePipelineLayoutCreateFlags$fZeroPipelineLayoutCreateFlags$fBitsPipelineLayoutCreateFlags%$fFiniteBitsPipelineLayoutCreateFlags%PipelineInputAssemblyStateCreateFlags+$fReadPipelineInputAssemblyStateCreateFlags+$fShowPipelineInputAssemblyStateCreateFlags)$fEqPipelineInputAssemblyStateCreateFlags*$fOrdPipelineInputAssemblyStateCreateFlags/$fStorablePipelineInputAssemblyStateCreateFlags+$fZeroPipelineInputAssemblyStateCreateFlags+$fBitsPipelineInputAssemblyStateCreateFlags1$fFiniteBitsPipelineInputAssemblyStateCreateFlagsPipelineDynamicStateCreateFlags%$fReadPipelineDynamicStateCreateFlags%$fShowPipelineDynamicStateCreateFlags#$fEqPipelineDynamicStateCreateFlags$$fOrdPipelineDynamicStateCreateFlags)$fStorablePipelineDynamicStateCreateFlags%$fZeroPipelineDynamicStateCreateFlags%$fBitsPipelineDynamicStateCreateFlags+$fFiniteBitsPipelineDynamicStateCreateFlags$PipelineDepthStencilStateCreateFlags*$fReadPipelineDepthStencilStateCreateFlags*$fShowPipelineDepthStencilStateCreateFlags($fEqPipelineDepthStencilStateCreateFlags)$fOrdPipelineDepthStencilStateCreateFlags.$fStorablePipelineDepthStencilStateCreateFlags*$fZeroPipelineDepthStencilStateCreateFlags*$fBitsPipelineDepthStencilStateCreateFlags0$fFiniteBitsPipelineDepthStencilStateCreateFlagsPipelineCreateFlags0PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT!PIPELINE_CREATE_DISPATCH_BASE_BIT(PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT$fReadPipelineCreateFlagBits$fShowPipelineCreateFlagBits$fEqPipelineCreateFlagBits$fOrdPipelineCreateFlagBits $fStorablePipelineCreateFlagBits$fZeroPipelineCreateFlagBits$fBitsPipelineCreateFlagBits"$fFiniteBitsPipelineCreateFlagBits"PipelineColorBlendStateCreateFlags($fReadPipelineColorBlendStateCreateFlags($fShowPipelineColorBlendStateCreateFlags&$fEqPipelineColorBlendStateCreateFlags'$fOrdPipelineColorBlendStateCreateFlags,$fStorablePipelineColorBlendStateCreateFlags($fZeroPipelineColorBlendStateCreateFlags($fBitsPipelineColorBlendStateCreateFlags.$fFiniteBitsPipelineColorBlendStateCreateFlagsPipelineCacheHeaderVersion $fReadPipelineCacheHeaderVersion $fShowPipelineCacheHeaderVersion$fEqPipelineCacheHeaderVersion$fOrdPipelineCacheHeaderVersion$$fStorablePipelineCacheHeaderVersion $fZeroPipelineCacheHeaderVersionPipelineCacheCreateFlagBitsPipelineCacheCreateFlags!$fReadPipelineCacheCreateFlagBits!$fShowPipelineCacheCreateFlagBits$fEqPipelineCacheCreateFlagBits $fOrdPipelineCacheCreateFlagBits%$fStorablePipelineCacheCreateFlagBits!$fZeroPipelineCacheCreateFlagBits!$fBitsPipelineCacheCreateFlagBits'$fFiniteBitsPipelineCacheCreateFlagBits#PIPELINE_BIND_POINT_RAY_TRACING_KHRPIPELINE_BIND_POINT_COMPUTE$fReadPipelineBindPoint$fShowPipelineBindPoint$fEqPipelineBindPoint$fOrdPipelineBindPoint$fStorablePipelineBindPoint$fZeroPipelineBindPointPhysicalDeviceTypePHYSICAL_DEVICE_TYPE_CPU PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU!PHYSICAL_DEVICE_TYPE_DISCRETE_GPU#PHYSICAL_DEVICE_TYPE_INTEGRATED_GPUPHYSICAL_DEVICE_TYPE_OTHER$fReadPhysicalDeviceType$fShowPhysicalDeviceType$fEqPhysicalDeviceType$fOrdPhysicalDeviceType$fStorablePhysicalDeviceType$fZeroPhysicalDeviceType$OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION&OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATEOBJECT_TYPE_SURFACE_KHROBJECT_TYPE_SWAPCHAIN_KHROBJECT_TYPE_DISPLAY_KHROBJECT_TYPE_DISPLAY_MODE_KHR%OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXTOBJECT_TYPE_CU_MODULE_NVXOBJECT_TYPE_CU_FUNCTION_NVX%OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT&OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR OBJECT_TYPE_VALIDATION_CACHE_EXT%OBJECT_TYPE_ACCELERATION_STRUCTURE_NV+OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL"OBJECT_TYPE_DEFERRED_OPERATION_KHR'OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV!OBJECT_TYPE_PRIVATE_DATA_SLOT_EXTOBJECT_TYPE_COMMAND_POOLOBJECT_TYPE_FRAMEBUFFEROBJECT_TYPE_DESCRIPTOR_SETOBJECT_TYPE_DESCRIPTOR_POOLOBJECT_TYPE_SAMPLER!OBJECT_TYPE_DESCRIPTOR_SET_LAYOUTOBJECT_TYPE_PIPELINEOBJECT_TYPE_RENDER_PASSOBJECT_TYPE_PIPELINE_LAYOUTOBJECT_TYPE_PIPELINE_CACHEOBJECT_TYPE_SHADER_MODULEOBJECT_TYPE_IMAGE_VIEWOBJECT_TYPE_BUFFER_VIEWOBJECT_TYPE_QUERY_POOLOBJECT_TYPE_EVENTOBJECT_TYPE_IMAGEOBJECT_TYPE_BUFFEROBJECT_TYPE_DEVICE_MEMORYOBJECT_TYPE_FENCEOBJECT_TYPE_COMMAND_BUFFEROBJECT_TYPE_SEMAPHOREOBJECT_TYPE_QUEUEOBJECT_TYPE_DEVICEOBJECT_TYPE_PHYSICAL_DEVICEOBJECT_TYPE_INSTANCE$fReadObjectType$fShowObjectType$fEqObjectType$fOrdObjectType$fStorableObjectType$fZeroObjectType'EXT_DEVICE_MEMORY_REPORT_EXTENSION_NAME%EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION#PFN_vkDeviceMemoryReportCallbackEXT"FN_vkDeviceMemoryReportCallbackEXTDeviceMemoryReportEventTypeEXTDeviceMemoryReportFlagsEXT,$sel:flags:DeviceMemoryReportCallbackDataEXT,$sel:type':DeviceMemoryReportCallbackDataEXT5$sel:memoryObjectId:DeviceMemoryReportCallbackDataEXT+$sel:size:DeviceMemoryReportCallbackDataEXT1$sel:objectType:DeviceMemoryReportCallbackDataEXT3$sel:objectHandle:DeviceMemoryReportCallbackDataEXT0$sel:heapIndex:DeviceMemoryReportCallbackDataEXT0$sel:flags:DeviceDeviceMemoryReportCreateInfoEXT:$sel:pfnUserCallback:DeviceDeviceMemoryReportCreateInfoEXT3$sel:userData:DeviceDeviceMemoryReportCreateInfoEXT$sel:deviceMemoryReport:PhysicalDeviceDeviceMemoryReportFeaturesEXT5DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT,DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT*DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT(DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT,DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT1$fZeroPhysicalDeviceDeviceMemoryReportFeaturesEXT5$fStorablePhysicalDeviceDeviceMemoryReportFeaturesEXT8$fFromCStructPhysicalDeviceDeviceMemoryReportFeaturesEXT6$fToCStructPhysicalDeviceDeviceMemoryReportFeaturesEXT $fReadDeviceMemoryReportFlagsEXT $fShowDeviceMemoryReportFlagsEXT$$fReadDeviceMemoryReportEventTypeEXT$$fShowDeviceMemoryReportEventTypeEXT'$fZeroDeviceMemoryReportCallbackDataEXT+$fStorableDeviceMemoryReportCallbackDataEXT.$fFromCStructDeviceMemoryReportCallbackDataEXT,$fToCStructDeviceMemoryReportCallbackDataEXT+$fZeroDeviceDeviceMemoryReportCreateInfoEXT/$fStorableDeviceDeviceMemoryReportCreateInfoEXT2$fFromCStructDeviceDeviceMemoryReportCreateInfoEXT0$fToCStructDeviceDeviceMemoryReportCreateInfoEXT%$fEqDeviceMemoryReportCallbackDataEXT"$fEqDeviceMemoryReportEventTypeEXT#$fOrdDeviceMemoryReportEventTypeEXT($fStorableDeviceMemoryReportEventTypeEXT$$fZeroDeviceMemoryReportEventTypeEXT$fEqDeviceMemoryReportFlagsEXT$fOrdDeviceMemoryReportFlagsEXT$$fStorableDeviceMemoryReportFlagsEXT $fZeroDeviceMemoryReportFlagsEXT $fBitsDeviceMemoryReportFlagsEXT&$fFiniteBitsDeviceMemoryReportFlagsEXT/$fEqPhysicalDeviceDeviceMemoryReportFeaturesEXT'$fShowDeviceMemoryReportCallbackDataEXT+$fShowDeviceDeviceMemoryReportCreateInfoEXT1$fShowPhysicalDeviceDeviceMemoryReportFeaturesEXTMemoryPropertyFlagBitsMemoryPropertyFlags'MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMDMEMORY_PROPERTY_HOST_CACHED_BIT MEMORY_PROPERTY_DEVICE_LOCAL_BIT$fReadMemoryPropertyFlagBits$fShowMemoryPropertyFlagBits$fEqMemoryPropertyFlagBits$fOrdMemoryPropertyFlagBits $fStorableMemoryPropertyFlagBits$fZeroMemoryPropertyFlagBits$fBitsMemoryPropertyFlagBits"$fFiniteBitsMemoryPropertyFlagBits$fReadMemoryMapFlags$fShowMemoryMapFlags$fEqMemoryMapFlags$fOrdMemoryMapFlags$fStorableMemoryMapFlags$fZeroMemoryMapFlags$fBitsMemoryMapFlags$fFiniteBitsMemoryMapFlagsMemoryHeapFlagBitsMemoryHeapFlags$fReadMemoryHeapFlagBits$fShowMemoryHeapFlagBits$fEqMemoryHeapFlagBits$fOrdMemoryHeapFlagBits$fStorableMemoryHeapFlagBits$fZeroMemoryHeapFlagBits$fBitsMemoryHeapFlagBits$fFiniteBitsMemoryHeapFlagBits LOGIC_OP_SET LOGIC_OP_NANDLOGIC_OP_OR_INVERTEDLOGIC_OP_COPY_INVERTEDLOGIC_OP_OR_REVERSELOGIC_OP_INVERTLOGIC_OP_EQUIVALENT LOGIC_OP_NOR LOGIC_OP_OR LOGIC_OP_XORLOGIC_OP_NO_OPLOGIC_OP_AND_INVERTED LOGIC_OP_COPYLOGIC_OP_AND_REVERSE LOGIC_OP_ANDLOGIC_OP_CLEAR $fReadLogicOp $fShowLogicOp $fEqLogicOp $fOrdLogicOp$fStorableLogicOp $fZeroLogicOpInternalAllocationType#INTERNAL_ALLOCATION_TYPE_EXECUTABLE$fReadInternalAllocationType$fShowInternalAllocationType$fEqInternalAllocationType$fOrdInternalAllocationType $fStorableInternalAllocationType$fZeroInternalAllocationTypePFN_vkFreeFunctionFN_vkFreeFunctionPFN_vkAllocationFunctionFN_vkAllocationFunctionPFN_vkReallocationFunctionFN_vkReallocationFunctionFN_vkInternalFreeNotification#FN_vkInternalAllocationNotificationInstanceCreateFlags$fReadInstanceCreateFlags$fShowInstanceCreateFlags$fEqInstanceCreateFlags$fOrdInstanceCreateFlags$fStorableInstanceCreateFlags$fZeroInstanceCreateFlags$fBitsInstanceCreateFlags$fFiniteBitsInstanceCreateFlags$fReadIndexType$fShowIndexType $fEqIndexType$fOrdIndexType$fStorableIndexType$fZeroIndexType$fReadImageViewType$fShowImageViewType$fEqImageViewType$fOrdImageViewType$fStorableImageViewType$fZeroImageViewTypeImageViewCreateFlagBitsImageViewCreateFlags$fReadImageViewCreateFlagBits$fShowImageViewCreateFlagBits$fEqImageViewCreateFlagBits$fOrdImageViewCreateFlagBits!$fStorableImageViewCreateFlagBits$fZeroImageViewCreateFlagBits$fBitsImageViewCreateFlagBits#$fFiniteBitsImageViewCreateFlagBits$fReadImageUsageFlagBits$fShowImageUsageFlagBits$fEqImageUsageFlagBits$fOrdImageUsageFlagBits$fStorableImageUsageFlagBits$fZeroImageUsageFlagBits$fBitsImageUsageFlagBits$fFiniteBitsImageUsageFlagBits-$sel:stencilUsage:ImageStencilUsageCreateInfo!$fZeroImageStencilUsageCreateInfo%$fStorableImageStencilUsageCreateInfo($fFromCStructImageStencilUsageCreateInfo&$fToCStructImageStencilUsageCreateInfo$fEqImageStencilUsageCreateInfo!$fShowImageStencilUsageCreateInfo)EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME'EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSIONImageStencilUsageCreateInfoEXT2STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT$fReadImageType$fShowImageType $fEqImageType$fOrdImageType$fStorableImageType$fZeroImageType$fReadImageTiling$fShowImageTiling$fEqImageTiling$fOrdImageTiling$fStorableImageTiling$fZeroImageTiling$fReadImageLayout$fShowImageLayout$fEqImageLayout$fOrdImageLayout$fStorableImageLayout$fZeroImageLayout<$sel:stencilInitialLayout:AttachmentDescriptionStencilLayout:$sel:stencilFinalLayout:AttachmentDescriptionStencilLayout3$sel:stencilLayout:AttachmentReferenceStencilLayout$sel:separateDepthStencilLayouts:PhysicalDeviceSeparateDepthStencilLayoutsFeatures7$fZeroPhysicalDeviceSeparateDepthStencilLayoutsFeatures;$fStorablePhysicalDeviceSeparateDepthStencilLayoutsFeatures>$fFromCStructPhysicalDeviceSeparateDepthStencilLayoutsFeatures<$fToCStructPhysicalDeviceSeparateDepthStencilLayoutsFeatures&$fZeroAttachmentReferenceStencilLayout*$fStorableAttachmentReferenceStencilLayout-$fFromCStructAttachmentReferenceStencilLayout+$fToCStructAttachmentReferenceStencilLayout($fZeroAttachmentDescriptionStencilLayout,$fStorableAttachmentDescriptionStencilLayout/$fFromCStructAttachmentDescriptionStencilLayout-$fToCStructAttachmentDescriptionStencilLayout&$fEqAttachmentDescriptionStencilLayout$$fEqAttachmentReferenceStencilLayout5$fEqPhysicalDeviceSeparateDepthStencilLayoutsFeatures($fShowAttachmentDescriptionStencilLayout&$fShowAttachmentReferenceStencilLayout7$fShowPhysicalDeviceSeparateDepthStencilLayoutsFeatures1KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME/KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION%AttachmentDescriptionStencilLayoutKHR#AttachmentReferenceStencilLayoutKHR4PhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR*IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR+IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR(IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR)IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR8STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR6STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHRSTRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR$fReadImageCreateFlagBits$fShowImageCreateFlagBits$fEqImageCreateFlagBits$fOrdImageCreateFlagBits$fStorableImageCreateFlagBits$fZeroImageCreateFlagBits$fBitsImageCreateFlagBits$fFiniteBitsImageCreateFlagBits1$sel:deviceIndices:BindImageMemoryDeviceGroupInfo<$sel:splitInstanceBindRegions:BindImageMemoryDeviceGroupInfo2$sel:deviceIndices:BindBufferMemoryDeviceGroupInfo%$fZeroBindBufferMemoryDeviceGroupInfo,$fFromCStructBindBufferMemoryDeviceGroupInfo*$fToCStructBindBufferMemoryDeviceGroupInfo$$fZeroBindImageMemoryDeviceGroupInfo+$fFromCStructBindImageMemoryDeviceGroupInfo)$fToCStructBindImageMemoryDeviceGroupInfo$$fShowBindImageMemoryDeviceGroupInfo%$fShowBindBufferMemoryDeviceGroupInfo#IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT#IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT#IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT#IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT$fReadImageAspectFlagBits$fShowImageAspectFlagBits$fEqImageAspectFlagBits$fOrdImageAspectFlagBits$fStorableImageAspectFlagBits$fZeroImageAspectFlagBits$fBitsImageAspectFlagBits$fFiniteBitsImageAspectFlagBits$sel:domainOrigin:PipelineTessellationDomainOriginStateCreateInfo#$sel:usage:ImageViewUsageCreateInfo$sel:pointClippingBehavior:PhysicalDevicePointClippingProperties?$sel:aspectReferences:RenderPassInputAttachmentAspectCreateInfo+$sel:subpass:InputAttachmentAspectReference8$sel:inputAttachmentIndex:InputAttachmentAspectReference.$sel:aspectMask:InputAttachmentAspectReference$$fZeroInputAttachmentAspectReference($fStorableInputAttachmentAspectReference+$fFromCStructInputAttachmentAspectReference)$fToCStructInputAttachmentAspectReference/$fZeroRenderPassInputAttachmentAspectCreateInfo6$fFromCStructRenderPassInputAttachmentAspectCreateInfo4$fToCStructRenderPassInputAttachmentAspectCreateInfo+$fZeroPhysicalDevicePointClippingProperties/$fStorablePhysicalDevicePointClippingProperties2$fFromCStructPhysicalDevicePointClippingProperties0$fToCStructPhysicalDevicePointClippingProperties$fZeroImageViewUsageCreateInfo"$fStorableImageViewUsageCreateInfo%$fFromCStructImageViewUsageCreateInfo#$fToCStructImageViewUsageCreateInfo5$fZeroPipelineTessellationDomainOriginStateCreateInfo9$fStorablePipelineTessellationDomainOriginStateCreateInfo<$fFromCStructPipelineTessellationDomainOriginStateCreateInfo:$fToCStructPipelineTessellationDomainOriginStateCreateInfo3$fEqPipelineTessellationDomainOriginStateCreateInfo$fEqImageViewUsageCreateInfo)$fEqPhysicalDevicePointClippingProperties"$fEqInputAttachmentAspectReference5$fShowPipelineTessellationDomainOriginStateCreateInfo$fShowImageViewUsageCreateInfo+$fShowPhysicalDevicePointClippingProperties/$fShowRenderPassInputAttachmentAspectCreateInfo$$fShowInputAttachmentAspectReferenceKHR_MAINTENANCE2_EXTENSION_NAMEKHR_MAINTENANCE2_SPEC_VERSION2PipelineTessellationDomainOriginStateCreateInfoKHRImageViewUsageCreateInfoKHR(PhysicalDevicePointClippingPropertiesKHR,RenderPassInputAttachmentAspectCreateInfoKHR!InputAttachmentAspectReferenceKHRTessellationDomainOriginKHRPointClippingBehaviorKHR)TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR)TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR1POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR+POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR;IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR;IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHRSTRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR/STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHRSTRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR$fFromCStructDescriptorSetVariableDescriptorCountLayoutSupport<$fToCStructDescriptorSetVariableDescriptorCountLayoutSupport5$fEqDescriptorSetVariableDescriptorCountLayoutSupport.$fEqPhysicalDeviceDescriptorIndexingProperties,$fEqPhysicalDeviceDescriptorIndexingFeatures7$fShowDescriptorSetVariableDescriptorCountLayoutSupport6$fShowDescriptorSetVariableDescriptorCountAllocateInfo/$fShowDescriptorSetLayoutBindingFlagsCreateInfo0$fShowPhysicalDeviceDescriptorIndexingProperties.$fShowPhysicalDeviceDescriptorIndexingFeatures&EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME$EXT_DESCRIPTOR_INDEXING_SPEC_VERSION4DescriptorSetVariableDescriptorCountLayoutSupportEXT3DescriptorSetVariableDescriptorCountAllocateInfoEXT,DescriptorSetLayoutBindingFlagsCreateInfoEXT-PhysicalDeviceDescriptorIndexingPropertiesEXT+PhysicalDeviceDescriptorIndexingFeaturesEXTDescriptorBindingFlagBitsEXTDescriptorBindingFlagsEXT;DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT0DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT4DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT*DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT6DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT,DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXTSTRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXTSTRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT?STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXTSTRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXTDEPENDENCY_DEVICE_GROUP_BIT$fReadDependencyFlagBits$fShowDependencyFlagBits$fEqDependencyFlagBits$fOrdDependencyFlagBits$fStorableDependencyFlagBits$fZeroDependencyFlagBits$fBitsDependencyFlagBits$fFiniteBitsDependencyFlagBits,$sel:viewMasks:RenderPassMultiviewCreateInfo.$sel:viewOffsets:RenderPassMultiviewCreateInfo3$sel:correlationMasks:RenderPassMultiviewCreateInfo<$sel:maxMultiviewViewCount:PhysicalDeviceMultiviewProperties$sel:maxMultiviewInstanceIndex:PhysicalDeviceMultiviewProperties.$sel:multiview:PhysicalDeviceMultiviewFeatures<$sel:multiviewGeometryShader:PhysicalDeviceMultiviewFeatures$sel:multiviewTessellationShader:PhysicalDeviceMultiviewFeatures%$fZeroPhysicalDeviceMultiviewFeatures)$fStorablePhysicalDeviceMultiviewFeatures,$fFromCStructPhysicalDeviceMultiviewFeatures*$fToCStructPhysicalDeviceMultiviewFeatures'$fZeroPhysicalDeviceMultiviewProperties+$fStorablePhysicalDeviceMultiviewProperties.$fFromCStructPhysicalDeviceMultiviewProperties,$fToCStructPhysicalDeviceMultiviewProperties#$fZeroRenderPassMultiviewCreateInfo*$fFromCStructRenderPassMultiviewCreateInfo($fToCStructRenderPassMultiviewCreateInfo%$fEqPhysicalDeviceMultiviewProperties#$fEqPhysicalDeviceMultiviewFeatures#$fShowRenderPassMultiviewCreateInfo'$fShowPhysicalDeviceMultiviewProperties%$fShowPhysicalDeviceMultiviewFeaturesKHR_MULTIVIEW_EXTENSION_NAMEKHR_MULTIVIEW_SPEC_VERSION RenderPassMultiviewCreateInfoKHR$PhysicalDeviceMultiviewPropertiesKHR"PhysicalDeviceMultiviewFeaturesKHRDEPENDENCY_VIEW_LOCAL_BIT_KHR7STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR5STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR4STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHRCULL_MODE_FRONT_AND_BACKCULL_MODE_BACK_BITCULL_MODE_FRONT_BITCULL_MODE_NONE$fReadCullModeFlagBits$fShowCullModeFlagBits$fEqCullModeFlagBits$fOrdCullModeFlagBits$fStorableCullModeFlagBits$fZeroCullModeFlagBits$fBitsCullModeFlagBits$fFiniteBitsCullModeFlagBitsCOMPONENT_SWIZZLE_A$fReadComponentSwizzle$fShowComponentSwizzle$fEqComponentSwizzle$fOrdComponentSwizzle$fStorableComponentSwizzle$fZeroComponentSwizzleCOMPARE_OP_ALWAYSCOMPARE_OP_GREATER_OR_EQUALCOMPARE_OP_NOT_EQUALCOMPARE_OP_GREATERCOMPARE_OP_LESS_OR_EQUALCOMPARE_OP_EQUALCOMPARE_OP_LESSCOMPARE_OP_NEVER$fReadCompareOp$fShowCompareOp $fEqCompareOp$fOrdCompareOp$fStorableCompareOp$fZeroCompareOp(COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT$fReadCommandPoolResetFlagBits$fShowCommandPoolResetFlagBits$fEqCommandPoolResetFlagBits$fOrdCommandPoolResetFlagBits"$fStorableCommandPoolResetFlagBits$fZeroCommandPoolResetFlagBits$fBitsCommandPoolResetFlagBits$$fFiniteBitsCommandPoolResetFlagBitsCommandPoolCreateFlagBitsCommandPoolCreateFlags!COMMAND_POOL_CREATE_PROTECTED_BIT!COMMAND_POOL_CREATE_TRANSIENT_BIT$fReadCommandPoolCreateFlagBits$fShowCommandPoolCreateFlagBits$fEqCommandPoolCreateFlagBits$fOrdCommandPoolCreateFlagBits#$fStorableCommandPoolCreateFlagBits$fZeroCommandPoolCreateFlagBits$fBitsCommandPoolCreateFlagBits%$fFiniteBitsCommandPoolCreateFlagBitsCommandBufferUsageFlagBitsCommandBufferUsageFlags $fReadCommandBufferUsageFlagBits $fShowCommandBufferUsageFlagBits$fEqCommandBufferUsageFlagBits$fOrdCommandBufferUsageFlagBits$$fStorableCommandBufferUsageFlagBits $fZeroCommandBufferUsageFlagBits $fBitsCommandBufferUsageFlagBits&$fFiniteBitsCommandBufferUsageFlagBits*COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT $fReadCommandBufferResetFlagBits $fShowCommandBufferResetFlagBits$fEqCommandBufferResetFlagBits$fOrdCommandBufferResetFlagBits$$fStorableCommandBufferResetFlagBits $fZeroCommandBufferResetFlagBits $fBitsCommandBufferResetFlagBits&$fFiniteBitsCommandBufferResetFlagBitsCommandBufferLevelCOMMAND_BUFFER_LEVEL_PRIMARY$fReadCommandBufferLevel$fShowCommandBufferLevel$fEqCommandBufferLevel$fOrdCommandBufferLevel$fStorableCommandBufferLevel$fZeroCommandBufferLevelCOLOR_COMPONENT_A_BITCOLOR_COMPONENT_B_BITCOLOR_COMPONENT_G_BITCOLOR_COMPONENT_R_BIT$fReadColorComponentFlagBits$fShowColorComponentFlagBits$fEqColorComponentFlagBits$fOrdColorComponentFlagBits $fStorableColorComponentFlagBits$fZeroColorComponentFlagBits$fBitsColorComponentFlagBits"$fFiniteBitsColorComponentFlagBitsBufferViewCreateFlags$fReadBufferViewCreateFlags$fShowBufferViewCreateFlags$fEqBufferViewCreateFlags$fOrdBufferViewCreateFlags$fStorableBufferViewCreateFlags$fZeroBufferViewCreateFlags$fBitsBufferViewCreateFlags!$fFiniteBitsBufferViewCreateFlagsBufferUsageFlags$fReadBufferUsageFlagBits$fShowBufferUsageFlagBits$fEqBufferUsageFlagBits$fOrdBufferUsageFlagBits$fStorableBufferUsageFlagBits$fZeroBufferUsageFlagBits$fBitsBufferUsageFlagBits$fFiniteBitsBufferUsageFlagBitsBufferCreateFlags$fReadBufferCreateFlagBits$fShowBufferCreateFlagBits$fEqBufferCreateFlagBits$fOrdBufferCreateFlagBits$fStorableBufferCreateFlagBits$fZeroBufferCreateFlagBits$fBitsBufferCreateFlagBits $fFiniteBitsBufferCreateFlagBits BorderColorBORDER_COLOR_INT_OPAQUE_WHITEBORDER_COLOR_FLOAT_OPAQUE_WHITEBORDER_COLOR_INT_OPAQUE_BLACKBORDER_COLOR_FLOAT_OPAQUE_BLACK"BORDER_COLOR_INT_TRANSPARENT_BLACK$BORDER_COLOR_FLOAT_TRANSPARENT_BLACK$fReadBorderColor$fShowBorderColor$fEqBorderColor$fOrdBorderColor$fStorableBorderColor$fZeroBorderColorBlendOpBLEND_OP_ZERO_EXTBLEND_OP_SRC_EXTBLEND_OP_DST_EXTBLEND_OP_SRC_OVER_EXTBLEND_OP_DST_OVER_EXTBLEND_OP_SRC_IN_EXTBLEND_OP_DST_IN_EXTBLEND_OP_SRC_OUT_EXTBLEND_OP_DST_OUT_EXTBLEND_OP_SRC_ATOP_EXTBLEND_OP_DST_ATOP_EXTBLEND_OP_XOR_EXTBLEND_OP_MULTIPLY_EXTBLEND_OP_SCREEN_EXTBLEND_OP_OVERLAY_EXTBLEND_OP_DARKEN_EXTBLEND_OP_LIGHTEN_EXTBLEND_OP_COLORDODGE_EXTBLEND_OP_COLORBURN_EXTBLEND_OP_HARDLIGHT_EXTBLEND_OP_SOFTLIGHT_EXTBLEND_OP_DIFFERENCE_EXTBLEND_OP_EXCLUSION_EXTBLEND_OP_INVERT_EXTBLEND_OP_INVERT_RGB_EXTBLEND_OP_LINEARDODGE_EXTBLEND_OP_LINEARBURN_EXTBLEND_OP_VIVIDLIGHT_EXTBLEND_OP_LINEARLIGHT_EXTBLEND_OP_PINLIGHT_EXTBLEND_OP_HARDMIX_EXTBLEND_OP_HSL_HUE_EXTBLEND_OP_HSL_SATURATION_EXTBLEND_OP_HSL_COLOR_EXTBLEND_OP_HSL_LUMINOSITY_EXTBLEND_OP_PLUS_EXTBLEND_OP_PLUS_CLAMPED_EXTBLEND_OP_PLUS_CLAMPED_ALPHA_EXTBLEND_OP_PLUS_DARKER_EXTBLEND_OP_MINUS_EXTBLEND_OP_MINUS_CLAMPED_EXTBLEND_OP_CONTRAST_EXTBLEND_OP_INVERT_OVG_EXTBLEND_OP_RED_EXTBLEND_OP_GREEN_EXTBLEND_OP_BLUE_EXT BLEND_OP_MAX BLEND_OP_MINBLEND_OP_REVERSE_SUBTRACTBLEND_OP_SUBTRACT BLEND_OP_ADD $fReadBlendOp $fShowBlendOp $fEqBlendOp $fOrdBlendOp$fStorableBlendOp $fZeroBlendOp BlendFactorBLEND_FACTOR_SRC_ALPHA_SATURATE%BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHABLEND_FACTOR_CONSTANT_ALPHA%BLEND_FACTOR_ONE_MINUS_CONSTANT_COLORBLEND_FACTOR_CONSTANT_COLOR BLEND_FACTOR_ONE_MINUS_DST_ALPHABLEND_FACTOR_DST_ALPHA BLEND_FACTOR_ONE_MINUS_SRC_ALPHABLEND_FACTOR_SRC_ALPHA BLEND_FACTOR_ONE_MINUS_DST_COLORBLEND_FACTOR_DST_COLOR BLEND_FACTOR_ONE_MINUS_SRC_COLORBLEND_FACTOR_SRC_COLORBLEND_FACTOR_ONEBLEND_FACTOR_ZERO$fReadBlendFactor$fShowBlendFactor$fEqBlendFactor$fOrdBlendFactor$fStorableBlendFactor$fZeroBlendFactorAttachmentStoreOpATTACHMENT_STORE_OP_NONE_EXTATTACHMENT_STORE_OP_STORE$fReadAttachmentStoreOp$fShowAttachmentStoreOp$fEqAttachmentStoreOp$fOrdAttachmentStoreOp$fStorableAttachmentStoreOp$fZeroAttachmentStoreOp)QCOM_RENDER_PASS_STORE_OPS_EXTENSION_NAME'QCOM_RENDER_PASS_STORE_OPS_SPEC_VERSIONATTACHMENT_STORE_OP_NONE_QCOMAttachmentLoadOpATTACHMENT_LOAD_OP_NONE_EXT$fReadAttachmentLoadOp$fShowAttachmentLoadOp$fEqAttachmentLoadOp$fOrdAttachmentLoadOp$fStorableAttachmentLoadOp$fZeroAttachmentLoadOpAttachmentDescriptionFlags#$fReadAttachmentDescriptionFlagBits#$fShowAttachmentDescriptionFlagBits!$fEqAttachmentDescriptionFlagBits"$fOrdAttachmentDescriptionFlagBits'$fStorableAttachmentDescriptionFlagBits#$fZeroAttachmentDescriptionFlagBits#$fBitsAttachmentDescriptionFlagBits)$fFiniteBitsAttachmentDescriptionFlagBits'ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT.ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT/ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT)ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT(ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT4ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR%ACCESS_COMMAND_PREPROCESS_READ_BIT_NV&ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NVACCESS_NONE_KHRACCESS_MEMORY_WRITE_BITACCESS_MEMORY_READ_BITACCESS_SHADER_WRITE_BIT ACCESS_INPUT_ATTACHMENT_READ_BITACCESS_UNIFORM_READ_BIT ACCESS_VERTEX_ATTRIBUTE_READ_BITACCESS_INDEX_READ_BIT$fReadAccessFlagBits$fShowAccessFlagBits$fEqAccessFlagBits$fOrdAccessFlagBits$fStorableAccessFlagBits$fZeroAccessFlagBits$fBitsAccessFlagBits$fFiniteBitsAccessFlagBits!$sel:userData:AllocationCallbacks&$sel:pfnAllocation:AllocationCallbacks($sel:pfnReallocation:AllocationCallbacks $sel:pfnFree:AllocationCallbacks.$sel:pfnInternalAllocation:AllocationCallbacks($sel:pfnInternalFree:AllocationCallbacks$fZeroAllocationCallbacks$fStorableAllocationCallbacks $fFromCStructAllocationCallbacks$fToCStructAllocationCallbacks$fShowAllocationCallbacks HasObjectTypeobjectTypeAndHandleIsHandleMAX_GLOBAL_PRIORITY_SIZE_EXTMAX_DRIVER_INFO_SIZEMAX_DRIVER_NAME_SIZEMAX_DEVICE_GROUP_SIZEQUEUE_FAMILY_FOREIGN_EXTQUEUE_FAMILY_EXTERNALMAX_MEMORY_HEAPSMAX_MEMORY_TYPESMAX_DESCRIPTION_SIZEMAX_EXTENSION_NAME_SIZE LUID_SIZEMAX_PHYSICAL_DEVICE_NAME_SIZEMAX_DRIVER_INFO_SIZE_KHRMAX_DRIVER_NAME_SIZE_KHRMAX_DEVICE_GROUP_SIZE_KHRQUEUE_FAMILY_EXTERNAL_KHR LUID_SIZE_KHR'EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME%EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION EXT_MEMORY_BUDGET_EXTENSION_NAMEEXT_MEMORY_BUDGET_SPEC_VERSION7$sel:heapBudget:PhysicalDeviceMemoryBudgetPropertiesEXT6$sel:heapUsage:PhysicalDeviceMemoryBudgetPropertiesEXT-$fZeroPhysicalDeviceMemoryBudgetPropertiesEXT1$fStorablePhysicalDeviceMemoryBudgetPropertiesEXT4$fFromCStructPhysicalDeviceMemoryBudgetPropertiesEXT2$fToCStructPhysicalDeviceMemoryBudgetPropertiesEXT-$fShowPhysicalDeviceMemoryBudgetPropertiesEXT(EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME&EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION9$sel:priorityCount:QueueFamilyGlobalPriorityPropertiesEXT6$sel:priorities:QueueFamilyGlobalPriorityPropertiesEXT$sel:globalPriorityQuery:PhysicalDeviceGlobalPriorityQueryFeaturesEXT2$fZeroPhysicalDeviceGlobalPriorityQueryFeaturesEXT6$fStorablePhysicalDeviceGlobalPriorityQueryFeaturesEXT9$fFromCStructPhysicalDeviceGlobalPriorityQueryFeaturesEXT7$fToCStructPhysicalDeviceGlobalPriorityQueryFeaturesEXT,$fZeroQueueFamilyGlobalPriorityPropertiesEXT0$fStorableQueueFamilyGlobalPriorityPropertiesEXT3$fFromCStructQueueFamilyGlobalPriorityPropertiesEXT1$fToCStructQueueFamilyGlobalPriorityPropertiesEXT0$fEqPhysicalDeviceGlobalPriorityQueryFeaturesEXT,$fShowQueueFamilyGlobalPriorityPropertiesEXT2$fShowPhysicalDeviceGlobalPriorityQueryFeaturesEXT,$sel:driverID:PhysicalDeviceDriverProperties.$sel:driverName:PhysicalDeviceDriverProperties.$sel:driverInfo:PhysicalDeviceDriverProperties6$sel:conformanceVersion:PhysicalDeviceDriverProperties$sel:major:ConformanceVersion$sel:minor:ConformanceVersion $sel:subminor:ConformanceVersion$sel:patch:ConformanceVersion$fZeroConformanceVersion$fStorableConformanceVersion$fFromCStructConformanceVersion$fToCStructConformanceVersion$$fZeroPhysicalDeviceDriverProperties($fStorablePhysicalDeviceDriverProperties+$fFromCStructPhysicalDeviceDriverProperties)$fToCStructPhysicalDeviceDriverProperties$fEqConformanceVersion$$fShowPhysicalDeviceDriverProperties$fShowConformanceVersion$KHR_DRIVER_PROPERTIES_EXTENSION_NAME"KHR_DRIVER_PROPERTIES_SPEC_VERSION!PhysicalDeviceDriverPropertiesKHRConformanceVersionKHR DriverIdKHR"DRIVER_ID_BROADCOM_PROPRIETARY_KHRDRIVER_ID_GGP_PROPRIETARY_KHR DRIVER_ID_GOOGLE_SWIFTSHADER_KHRDRIVER_ID_ARM_PROPRIETARY_KHR"DRIVER_ID_QUALCOMM_PROPRIETARY_KHR%DRIVER_ID_IMAGINATION_PROPRIETARY_KHR$DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR'DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR DRIVER_ID_NVIDIA_PROPRIETARY_KHRDRIVER_ID_MESA_RADV_KHRDRIVER_ID_AMD_OPEN_SOURCE_KHRDRIVER_ID_AMD_PROPRIETARY_KHR4STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR)$sel:handleTypes:ExportMemoryAllocateInfo/$sel:handleTypes:ExternalMemoryBufferCreateInfo.$sel:handleTypes:ExternalMemoryImageCreateInfo#$fZeroExternalMemoryImageCreateInfo'$fStorableExternalMemoryImageCreateInfo*$fFromCStructExternalMemoryImageCreateInfo($fToCStructExternalMemoryImageCreateInfo$$fZeroExternalMemoryBufferCreateInfo($fStorableExternalMemoryBufferCreateInfo+$fFromCStructExternalMemoryBufferCreateInfo)$fToCStructExternalMemoryBufferCreateInfo$fZeroExportMemoryAllocateInfo"$fStorableExportMemoryAllocateInfo%$fFromCStructExportMemoryAllocateInfo#$fToCStructExportMemoryAllocateInfo$fEqExportMemoryAllocateInfo"$fEqExternalMemoryBufferCreateInfo!$fEqExternalMemoryImageCreateInfo$fShowExportMemoryAllocateInfo$$fShowExternalMemoryBufferCreateInfo#$fShowExternalMemoryImageCreateInfo"KHR_EXTERNAL_MEMORY_EXTENSION_NAME KHR_EXTERNAL_MEMORY_SPEC_VERSIONExportMemoryAllocateInfoKHR!ExternalMemoryBufferCreateInfoKHR ExternalMemoryImageCreateInfoKHR.STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR4STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR5STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR peekChain withChain withZeroChain ExtensibleextensibleTypeNamegetNextsetNextextends SomeStruct$sel:sType:BaseInStructure$sel:next:BaseInStructure$sel:sType:BaseOutStructure$sel:next:BaseOutStructure:&::&forgetExtensionsextendSomeStructwithSomeStructwithSomeCStructpokeSomeCStructpeekSomeCStruct$fZeroBaseOutStructure$fStorableBaseOutStructure$fFromCStructBaseOutStructure$fToCStructBaseOutStructure$fZeroBaseInStructure$fStorableBaseInStructure$fFromCStructBaseInStructure$fToCStructBaseInStructure $fPokeChain: $fPokeChain[]$fZeroSomeStruct $fPeekChain: $fPeekChain[]$fEqBaseInStructure$fEqBaseOutStructure$fShowSomeStruct$fShowBaseInStructure$fShowBaseOutStructure DeviceCmdsdeviceCmdsHandlepVkGetDeviceProcAddrpVkDestroyDevicepVkGetDeviceQueuepVkQueueSubmitpVkQueueWaitIdlepVkDeviceWaitIdlepVkAllocateMemory pVkFreeMemory pVkMapMemorypVkUnmapMemorypVkFlushMappedMemoryRangespVkInvalidateMappedMemoryRangespVkGetDeviceMemoryCommitmentpVkGetBufferMemoryRequirementspVkBindBufferMemorypVkGetImageMemoryRequirementspVkBindImageMemory#pVkGetImageSparseMemoryRequirementspVkQueueBindSparsepVkCreateFencepVkDestroyFencepVkResetFencespVkGetFenceStatuspVkWaitForFencespVkCreateSemaphorepVkDestroySemaphorepVkCreateEventpVkDestroyEventpVkGetEventStatus pVkSetEvent pVkResetEventpVkCreateQueryPoolpVkDestroyQueryPoolpVkGetQueryPoolResultspVkResetQueryPoolpVkCreateBufferpVkDestroyBufferpVkCreateBufferViewpVkDestroyBufferViewpVkCreateImagepVkDestroyImagepVkGetImageSubresourceLayoutpVkCreateImageViewpVkDestroyImageViewpVkCreateShaderModulepVkDestroyShaderModulepVkCreatePipelineCachepVkDestroyPipelineCachepVkGetPipelineCacheDatapVkMergePipelineCachespVkCreateGraphicsPipelinespVkCreateComputePipelinespVkDestroyPipelinepVkCreatePipelineLayoutpVkDestroyPipelineLayoutpVkCreateSamplerpVkDestroySamplerpVkCreateDescriptorSetLayoutpVkDestroyDescriptorSetLayoutpVkCreateDescriptorPoolpVkDestroyDescriptorPoolpVkResetDescriptorPoolpVkAllocateDescriptorSetspVkFreeDescriptorSetspVkUpdateDescriptorSetspVkCreateFramebufferpVkDestroyFramebufferpVkCreateRenderPasspVkDestroyRenderPasspVkGetRenderAreaGranularitypVkCreateCommandPoolpVkDestroyCommandPoolpVkResetCommandPoolpVkAllocateCommandBufferspVkFreeCommandBufferspVkBeginCommandBufferpVkEndCommandBufferpVkResetCommandBufferpVkCmdBindPipelinepVkCmdSetViewportpVkCmdSetScissorpVkCmdSetLineWidthpVkCmdSetDepthBiaspVkCmdSetBlendConstantspVkCmdSetDepthBoundspVkCmdSetStencilCompareMaskpVkCmdSetStencilWriteMaskpVkCmdSetStencilReferencepVkCmdBindDescriptorSetspVkCmdBindIndexBufferpVkCmdBindVertexBuffers pVkCmdDrawpVkCmdDrawIndexedpVkCmdDrawMultiEXTpVkCmdDrawMultiIndexedEXTpVkCmdDrawIndirectpVkCmdDrawIndexedIndirectpVkCmdDispatchpVkCmdDispatchIndirectpVkCmdCopyBufferpVkCmdCopyImagepVkCmdBlitImagepVkCmdCopyBufferToImagepVkCmdCopyImageToBufferpVkCmdUpdateBufferpVkCmdFillBufferpVkCmdClearColorImagepVkCmdClearDepthStencilImagepVkCmdClearAttachmentspVkCmdResolveImagepVkCmdSetEventpVkCmdResetEventpVkCmdWaitEventspVkCmdPipelineBarrierpVkCmdBeginQuerypVkCmdEndQuery"pVkCmdBeginConditionalRenderingEXT pVkCmdEndConditionalRenderingEXTpVkCmdResetQueryPoolpVkCmdWriteTimestamppVkCmdCopyQueryPoolResultspVkCmdPushConstantspVkCmdBeginRenderPasspVkCmdNextSubpasspVkCmdEndRenderPasspVkCmdExecuteCommandspVkCreateSharedSwapchainsKHRpVkCreateSwapchainKHRpVkDestroySwapchainKHRpVkGetSwapchainImagesKHRpVkAcquireNextImageKHRpVkQueuePresentKHRpVkDebugMarkerSetObjectNameEXTpVkDebugMarkerSetObjectTagEXTpVkCmdDebugMarkerBeginEXTpVkCmdDebugMarkerEndEXTpVkCmdDebugMarkerInsertEXTpVkGetMemoryWin32HandleNV pVkCmdExecuteGeneratedCommandsNV#pVkCmdPreprocessGeneratedCommandsNVpVkCmdBindPipelineShaderGroupNV+pVkGetGeneratedCommandsMemoryRequirementsNV!pVkCreateIndirectCommandsLayoutNV"pVkDestroyIndirectCommandsLayoutNVpVkCmdPushDescriptorSetKHRpVkTrimCommandPoolpVkGetMemoryWin32HandleKHR$pVkGetMemoryWin32HandlePropertiesKHRpVkGetMemoryFdKHRpVkGetMemoryFdPropertiesKHRpVkGetMemoryZirconHandleFUCHSIA)pVkGetMemoryZirconHandlePropertiesFUCHSIApVkGetMemoryRemoteAddressNVpVkGetSemaphoreWin32HandleKHR pVkImportSemaphoreWin32HandleKHRpVkGetSemaphoreFdKHRpVkImportSemaphoreFdKHR"pVkGetSemaphoreZirconHandleFUCHSIA%pVkImportSemaphoreZirconHandleFUCHSIApVkGetFenceWin32HandleKHRpVkImportFenceWin32HandleKHRpVkGetFenceFdKHRpVkImportFenceFdKHRpVkDisplayPowerControlEXTpVkRegisterDeviceEventEXTpVkRegisterDisplayEventEXTpVkGetSwapchainCounterEXT#pVkGetDeviceGroupPeerMemoryFeaturespVkBindBufferMemory2pVkBindImageMemory2pVkCmdSetDeviceMask'pVkGetDeviceGroupPresentCapabilitiesKHR'pVkGetDeviceGroupSurfacePresentModesKHRpVkAcquireNextImage2KHRpVkCmdDispatchBase!pVkCreateDescriptorUpdateTemplate"pVkDestroyDescriptorUpdateTemplate"pVkUpdateDescriptorSetWithTemplate&pVkCmdPushDescriptorSetWithTemplateKHRpVkSetHdrMetadataEXTpVkGetSwapchainStatusKHR pVkGetRefreshCycleDurationGOOGLE"pVkGetPastPresentationTimingGOOGLEpVkCmdSetViewportWScalingNVpVkCmdSetDiscardRectangleEXTpVkCmdSetSampleLocationsEXTpVkGetBufferMemoryRequirements2pVkGetImageMemoryRequirements2$pVkGetImageSparseMemoryRequirements2pVkCreateSamplerYcbcrConversion pVkDestroySamplerYcbcrConversionpVkGetDeviceQueue2pVkCreateValidationCacheEXTpVkDestroyValidationCacheEXTpVkGetValidationCacheDataEXTpVkMergeValidationCachesEXT pVkGetDescriptorSetLayoutSupportpVkGetShaderInfoAMDpVkSetLocalDimmingAMDpVkGetCalibratedTimestampsEXTpVkSetDebugUtilsObjectNameEXTpVkSetDebugUtilsObjectTagEXTpVkQueueBeginDebugUtilsLabelEXTpVkQueueEndDebugUtilsLabelEXT pVkQueueInsertDebugUtilsLabelEXTpVkCmdBeginDebugUtilsLabelEXTpVkCmdEndDebugUtilsLabelEXTpVkCmdInsertDebugUtilsLabelEXT$pVkGetMemoryHostPointerPropertiesEXTpVkCmdWriteBufferMarkerAMDpVkCreateRenderPass2pVkCmdBeginRenderPass2pVkCmdNextSubpass2pVkCmdEndRenderPass2pVkGetSemaphoreCounterValuepVkWaitSemaphorespVkSignalSemaphore,pVkGetAndroidHardwareBufferPropertiesANDROID(pVkGetMemoryAndroidHardwareBufferANDROIDpVkCmdDrawIndirectCountpVkCmdDrawIndexedIndirectCountpVkCmdSetCheckpointNVpVkGetQueueCheckpointDataNV%pVkCmdBindTransformFeedbackBuffersEXTpVkCmdBeginTransformFeedbackEXTpVkCmdEndTransformFeedbackEXTpVkCmdBeginQueryIndexedEXTpVkCmdEndQueryIndexedEXTpVkCmdDrawIndirectByteCountEXTpVkCmdSetExclusiveScissorNVpVkCmdBindShadingRateImageNV%pVkCmdSetViewportShadingRatePaletteNVpVkCmdSetCoarseSampleOrderNVpVkCmdDrawMeshTasksNVpVkCmdDrawMeshTasksIndirectNV"pVkCmdDrawMeshTasksIndirectCountNVpVkCompileDeferredNV pVkCreateAccelerationStructureNVpVkCmdBindInvocationMaskHUAWEI"pVkDestroyAccelerationStructureKHR!pVkDestroyAccelerationStructureNV/pVkGetAccelerationStructureMemoryRequirementsNV$pVkBindAccelerationStructureMemoryNV!pVkCmdCopyAccelerationStructureNV"pVkCmdCopyAccelerationStructureKHRpVkCopyAccelerationStructureKHR*pVkCmdCopyAccelerationStructureToMemoryKHR'pVkCopyAccelerationStructureToMemoryKHR*pVkCmdCopyMemoryToAccelerationStructureKHR'pVkCopyMemoryToAccelerationStructureKHR.pVkCmdWriteAccelerationStructuresPropertiesKHR-pVkCmdWriteAccelerationStructuresPropertiesNV"pVkCmdBuildAccelerationStructureNV+pVkWriteAccelerationStructuresPropertiesKHRpVkCmdTraceRaysKHRpVkCmdTraceRaysNV%pVkGetRayTracingShaderGroupHandlesKHR2pVkGetRayTracingCaptureReplayShaderGroupHandlesKHR#pVkGetAccelerationStructureHandleNVpVkCreateRayTracingPipelinesNVpVkCreateRayTracingPipelinesKHRpVkCmdTraceRaysIndirectKHR1pVkGetDeviceAccelerationStructureCompatibilityKHR'pVkGetRayTracingShaderGroupStackSizeKHR'pVkCmdSetRayTracingPipelineStackSizeKHRpVkGetImageViewHandleNVXpVkGetImageViewAddressNVX(pVkGetDeviceGroupSurfacePresentModes2EXT$pVkAcquireFullScreenExclusiveModeEXT$pVkReleaseFullScreenExclusiveModeEXTpVkAcquireProfilingLockKHRpVkReleaseProfilingLockKHR)pVkGetImageDrmFormatModifierPropertiesEXT pVkGetBufferOpaqueCaptureAddresspVkGetBufferDeviceAddress pVkInitializePerformanceApiINTEL"pVkUninitializePerformanceApiINTELpVkCmdSetPerformanceMarkerINTEL%pVkCmdSetPerformanceStreamMarkerINTEL!pVkCmdSetPerformanceOverrideINTEL'pVkAcquirePerformanceConfigurationINTEL'pVkReleasePerformanceConfigurationINTEL(pVkQueueSetPerformanceConfigurationINTELpVkGetPerformanceParameterINTEL&pVkGetDeviceMemoryOpaqueCaptureAddress%pVkGetPipelineExecutablePropertiesKHR%pVkGetPipelineExecutableStatisticsKHR2pVkGetPipelineExecutableInternalRepresentationsKHRpVkCmdSetLineStippleEXT!pVkCreateAccelerationStructureKHR$pVkCmdBuildAccelerationStructuresKHR,pVkCmdBuildAccelerationStructuresIndirectKHR!pVkBuildAccelerationStructuresKHR+pVkGetAccelerationStructureDeviceAddressKHRpVkCreateDeferredOperationKHRpVkDestroyDeferredOperationKHR(pVkGetDeferredOperationMaxConcurrencyKHR pVkGetDeferredOperationResultKHRpVkDeferredOperationJoinKHRpVkCmdSetCullModeEXTpVkCmdSetFrontFaceEXTpVkCmdSetPrimitiveTopologyEXTpVkCmdSetViewportWithCountEXTpVkCmdSetScissorWithCountEXTpVkCmdBindVertexBuffers2EXTpVkCmdSetDepthTestEnableEXTpVkCmdSetDepthWriteEnableEXTpVkCmdSetDepthCompareOpEXT!pVkCmdSetDepthBoundsTestEnableEXTpVkCmdSetStencilTestEnableEXTpVkCmdSetStencilOpEXTpVkCmdSetPatchControlPointsEXT#pVkCmdSetRasterizerDiscardEnableEXTpVkCmdSetDepthBiasEnableEXTpVkCmdSetLogicOpEXT"pVkCmdSetPrimitiveRestartEnableEXTpVkCreatePrivateDataSlotEXTpVkDestroyPrivateDataSlotEXTpVkSetPrivateDataEXTpVkGetPrivateDataEXTpVkCmdCopyBuffer2KHRpVkCmdCopyImage2KHRpVkCmdBlitImage2KHRpVkCmdCopyBufferToImage2KHRpVkCmdCopyImageToBuffer2KHRpVkCmdResolveImage2KHRpVkCmdSetFragmentShadingRateKHR"pVkCmdSetFragmentShadingRateEnumNV(pVkGetAccelerationStructureBuildSizesKHRpVkCmdSetVertexInputEXTpVkCmdSetColorWriteEnableEXTpVkCmdSetEvent2KHRpVkCmdResetEvent2KHRpVkCmdWaitEvents2KHRpVkCmdPipelineBarrier2KHRpVkQueueSubmit2KHRpVkCmdWriteTimestamp2KHRpVkCmdWriteBufferMarker2AMDpVkGetQueueCheckpointData2NVpVkCreateCuModuleNVXpVkCreateCuFunctionNVXpVkDestroyCuModuleNVXpVkDestroyCuFunctionNVXpVkCmdCuLaunchKernelNVXpVkWaitForPresentKHR InstanceCmdsinstanceCmdsHandlepVkDestroyInstancepVkEnumeratePhysicalDevicespVkGetInstanceProcAddrpVkGetPhysicalDeviceProperties)pVkGetPhysicalDeviceQueueFamilyProperties$pVkGetPhysicalDeviceMemoryPropertiespVkGetPhysicalDeviceFeatures$pVkGetPhysicalDeviceFormatProperties)pVkGetPhysicalDeviceImageFormatPropertiespVkCreateDevice!pVkEnumerateDeviceLayerProperties%pVkEnumerateDeviceExtensionProperties/pVkGetPhysicalDeviceSparseImageFormatPropertiespVkCreateAndroidSurfaceKHR(pVkGetPhysicalDeviceDisplayPropertiesKHR-pVkGetPhysicalDeviceDisplayPlanePropertiesKHR&pVkGetDisplayPlaneSupportedDisplaysKHRpVkGetDisplayModePropertiesKHRpVkCreateDisplayModeKHR!pVkGetDisplayPlaneCapabilitiesKHRpVkCreateDisplayPlaneSurfaceKHRpVkDestroySurfaceKHR%pVkGetPhysicalDeviceSurfaceSupportKHR*pVkGetPhysicalDeviceSurfaceCapabilitiesKHR%pVkGetPhysicalDeviceSurfaceFormatsKHR*pVkGetPhysicalDeviceSurfacePresentModesKHRpVkCreateViSurfaceNNpVkCreateWaylandSurfaceKHR1pVkGetPhysicalDeviceWaylandPresentationSupportKHRpVkCreateWin32SurfaceKHR/pVkGetPhysicalDeviceWin32PresentationSupportKHRpVkCreateXlibSurfaceKHR.pVkGetPhysicalDeviceXlibPresentationSupportKHRpVkCreateXcbSurfaceKHR-pVkGetPhysicalDeviceXcbPresentationSupportKHRpVkCreateDirectFBSurfaceEXT2pVkGetPhysicalDeviceDirectFBPresentationSupportEXT pVkCreateImagePipeSurfaceFUCHSIA#pVkCreateStreamDescriptorSurfaceGGPpVkCreateScreenSurfaceQNX0pVkGetPhysicalDeviceScreenPresentationSupportQNXpVkCreateDebugReportCallbackEXT pVkDestroyDebugReportCallbackEXTpVkDebugReportMessageEXT3pVkGetPhysicalDeviceExternalImageFormatPropertiesNVpVkGetPhysicalDeviceFeatures2pVkGetPhysicalDeviceProperties2%pVkGetPhysicalDeviceFormatProperties2*pVkGetPhysicalDeviceImageFormatProperties2*pVkGetPhysicalDeviceQueueFamilyProperties2%pVkGetPhysicalDeviceMemoryProperties20pVkGetPhysicalDeviceSparseImageFormatProperties2,pVkGetPhysicalDeviceExternalBufferProperties/pVkGetPhysicalDeviceExternalSemaphoreProperties+pVkGetPhysicalDeviceExternalFencePropertiespVkReleaseDisplayEXTpVkAcquireXlibDisplayEXTpVkGetRandROutputDisplayEXTpVkAcquireWinrtDisplayNVpVkGetWinrtDisplayNV+pVkGetPhysicalDeviceSurfaceCapabilities2EXT pVkEnumeratePhysicalDeviceGroups(pVkGetPhysicalDevicePresentRectanglesKHRpVkCreateIOSSurfaceMVKpVkCreateMacOSSurfaceMVKpVkCreateMetalSurfaceEXT,pVkGetPhysicalDeviceMultisamplePropertiesEXT+pVkGetPhysicalDeviceSurfaceCapabilities2KHR&pVkGetPhysicalDeviceSurfaceFormats2KHR)pVkGetPhysicalDeviceDisplayProperties2KHR.pVkGetPhysicalDeviceDisplayPlaneProperties2KHRpVkGetDisplayModeProperties2KHR"pVkGetDisplayPlaneCapabilities2KHR/pVkGetPhysicalDeviceCalibrateableTimeDomainsEXTpVkCreateDebugUtilsMessengerEXT pVkDestroyDebugUtilsMessengerEXTpVkSubmitDebugUtilsMessageEXT1pVkGetPhysicalDeviceCooperativeMatrixPropertiesNV+pVkGetPhysicalDeviceSurfacePresentModes2EXTpVkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR8pVkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHRpVkCreateHeadlessSurfaceEXTpVkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV%pVkGetPhysicalDeviceToolPropertiesEXT+pVkGetPhysicalDeviceFragmentShadingRatesKHRpVkAcquireDrmDisplayEXTpVkGetDrmDisplayEXTgetInstanceProcAddr'initInstanceCmdsinitDeviceCmds$fZeroInstanceCmds$fZeroDeviceCmds$fShowDeviceCmds$fEqDeviceCmds$fShowInstanceCmds$fEqInstanceCmds&$sel:commandBufferHandle:CommandBuffer$sel:deviceCmds:CommandBuffer$sel:queueHandle:Queue$sel:deviceCmds:Queue$sel:deviceHandle:Device$sel:deviceCmds:Device($sel:physicalDeviceHandle:PhysicalDevice $sel:instanceCmds:PhysicalDevice$sel:instanceHandle:Instance$sel:instanceCmds:Instance$fHasObjectTypeInstance$fZeroInstance$fHasObjectTypePhysicalDevice$fZeroPhysicalDevice$fHasObjectTypeDevice $fZeroDevice$fHasObjectTypeQueue $fZeroQueue$fHasObjectTypeCommandBuffer$fZeroCommandBuffer$fShowDeviceMemory$fHasObjectTypeDeviceMemory$fShowCommandPool$fHasObjectTypeCommandPool $fShowBuffer$fHasObjectTypeBuffer$fShowBufferView$fHasObjectTypeBufferView $fShowImage$fHasObjectTypeImage$fShowImageView$fHasObjectTypeImageView$fShowShaderModule$fHasObjectTypeShaderModule$fShowPipeline$fHasObjectTypePipeline$fShowPipelineLayout$fHasObjectTypePipelineLayout $fShowSampler$fHasObjectTypeSampler$fShowDescriptorSet$fHasObjectTypeDescriptorSet$fShowDescriptorSetLayout"$fHasObjectTypeDescriptorSetLayout$fShowDescriptorPool$fHasObjectTypeDescriptorPool $fShowFence$fHasObjectTypeFence$fShowSemaphore$fHasObjectTypeSemaphore $fShowEvent$fHasObjectTypeEvent$fShowQueryPool$fHasObjectTypeQueryPool$fShowFramebuffer$fHasObjectTypeFramebuffer$fShowRenderPass$fHasObjectTypeRenderPass$fShowPipelineCache$fHasObjectTypePipelineCache$fEqPipelineCache$fOrdPipelineCache$fStorablePipelineCache$fZeroPipelineCache$fIsHandlePipelineCache$fEqRenderPass$fOrdRenderPass$fStorableRenderPass$fZeroRenderPass$fIsHandleRenderPass$fEqFramebuffer$fOrdFramebuffer$fStorableFramebuffer$fZeroFramebuffer$fIsHandleFramebuffer $fEqQueryPool$fOrdQueryPool$fStorableQueryPool$fZeroQueryPool$fIsHandleQueryPool $fEqEvent $fOrdEvent$fStorableEvent $fZeroEvent$fIsHandleEvent $fEqSemaphore$fOrdSemaphore$fStorableSemaphore$fZeroSemaphore$fIsHandleSemaphore $fEqFence $fOrdFence$fStorableFence $fZeroFence$fIsHandleFence$fEqDescriptorPool$fOrdDescriptorPool$fStorableDescriptorPool$fZeroDescriptorPool$fIsHandleDescriptorPool$fEqDescriptorSetLayout$fOrdDescriptorSetLayout$fStorableDescriptorSetLayout$fZeroDescriptorSetLayout$fIsHandleDescriptorSetLayout$fEqDescriptorSet$fOrdDescriptorSet$fStorableDescriptorSet$fZeroDescriptorSet$fIsHandleDescriptorSet $fEqSampler $fOrdSampler$fStorableSampler $fZeroSampler$fIsHandleSampler$fEqPipelineLayout$fOrdPipelineLayout$fStorablePipelineLayout$fZeroPipelineLayout$fIsHandlePipelineLayout $fEqPipeline $fOrdPipeline$fStorablePipeline$fZeroPipeline$fIsHandlePipeline$fEqShaderModule$fOrdShaderModule$fStorableShaderModule$fZeroShaderModule$fIsHandleShaderModule $fEqImageView$fOrdImageView$fStorableImageView$fZeroImageView$fIsHandleImageView $fEqImage $fOrdImage$fStorableImage $fZeroImage$fIsHandleImage$fEqBufferView$fOrdBufferView$fStorableBufferView$fZeroBufferView$fIsHandleBufferView $fEqBuffer $fOrdBuffer$fStorableBuffer $fZeroBuffer$fIsHandleBuffer$fEqCommandPool$fOrdCommandPool$fStorableCommandPool$fZeroCommandPool$fIsHandleCommandPool$fEqDeviceMemory$fOrdDeviceMemory$fStorableDeviceMemory$fZeroDeviceMemory$fIsHandleDeviceMemory$fEqCommandBuffer$fShowCommandBuffer$fIsHandleCommandBuffer $fEqQueue $fShowQueue$fIsHandleQueue $fEqDevice $fShowDevice$fIsHandleDevice$fEqPhysicalDevice$fShowPhysicalDevice$fIsHandlePhysicalDevice $fEqInstance$fShowInstance$fIsHandleInstance#NV_WIN32_KEYED_MUTEX_EXTENSION_NAME!NV_WIN32_KEYED_MUTEX_SPEC_VERSION5$sel:acquireSyncs:Win32KeyedMutexAcquireReleaseInfoNV4$sel:acquireKeys:Win32KeyedMutexAcquireReleaseInfoNV$sel:acquireTimeoutMilliseconds:Win32KeyedMutexAcquireReleaseInfoNV5$sel:releaseSyncs:Win32KeyedMutexAcquireReleaseInfoNV4$sel:releaseKeys:Win32KeyedMutexAcquireReleaseInfoNV)$fZeroWin32KeyedMutexAcquireReleaseInfoNV0$fFromCStructWin32KeyedMutexAcquireReleaseInfoNV.$fToCStructWin32KeyedMutexAcquireReleaseInfoNV)$fShowWin32KeyedMutexAcquireReleaseInfoNV$NV_SHADING_RATE_IMAGE_EXTENSION_NAME"NV_SHADING_RATE_IMAGE_SPEC_VERSIONShadingRatePaletteEntryNV$sel:sampleOrderType:PipelineViewportCoarseSampleOrderStateCreateInfoNV$sel:customSampleOrders:PipelineViewportCoarseSampleOrderStateCreateInfoNV*$sel:shadingRate:CoarseSampleOrderCustomNV*$sel:sampleCount:CoarseSampleOrderCustomNV.$sel:sampleLocations:CoarseSampleOrderCustomNV"$sel:pixelX:CoarseSampleLocationNV"$sel:pixelY:CoarseSampleLocationNV"$sel:sample:CoarseSampleLocationNV$sel:shadingRateTexelSize:PhysicalDeviceShadingRateImagePropertiesNV$sel:shadingRatePaletteSize:PhysicalDeviceShadingRateImagePropertiesNV$sel:shadingRateMaxCoarseSamples:PhysicalDeviceShadingRateImagePropertiesNV>$sel:shadingRateImage:PhysicalDeviceShadingRateImageFeaturesNV$sel:shadingRateCoarseSampleOrder:PhysicalDeviceShadingRateImageFeaturesNV$sel:shadingRateImageEnable:PipelineViewportShadingRateImageStateCreateInfoNV$sel:shadingRatePalettes:PipelineViewportShadingRateImageStateCreateInfoNV3$sel:shadingRatePaletteEntries:ShadingRatePaletteNV(COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV'COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV"COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV#COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV9SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV9SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV9SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV9SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV9SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV9SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV4SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV5SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV5SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV5SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV6SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV,SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV%ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV$IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV.$fZeroPhysicalDeviceShadingRateImageFeaturesNV2$fStorablePhysicalDeviceShadingRateImageFeaturesNV5$fFromCStructPhysicalDeviceShadingRateImageFeaturesNV3$fToCStructPhysicalDeviceShadingRateImageFeaturesNV0$fZeroPhysicalDeviceShadingRateImagePropertiesNV4$fStorablePhysicalDeviceShadingRateImagePropertiesNV7$fFromCStructPhysicalDeviceShadingRateImagePropertiesNV5$fToCStructPhysicalDeviceShadingRateImagePropertiesNV$fZeroCoarseSampleLocationNV $fStorableCoarseSampleLocationNV#$fFromCStructCoarseSampleLocationNV!$fToCStructCoarseSampleLocationNV$fReadShadingRatePaletteEntryNV$fShowShadingRatePaletteEntryNV$fZeroCoarseSampleOrderCustomNV&$fFromCStructCoarseSampleOrderCustomNV$$fToCStructCoarseSampleOrderCustomNV$fZeroShadingRatePaletteNV!$fFromCStructShadingRatePaletteNV$fToCStructShadingRatePaletteNV7$fZeroPipelineViewportShadingRateImageStateCreateInfoNV>$fFromCStructPipelineViewportShadingRateImageStateCreateInfoNV<$fToCStructPipelineViewportShadingRateImageStateCreateInfoNV$fReadCoarseSampleOrderTypeNV$fShowCoarseSampleOrderTypeNV8$fZeroPipelineViewportCoarseSampleOrderStateCreateInfoNV?$fFromCStructPipelineViewportCoarseSampleOrderStateCreateInfoNV=$fToCStructPipelineViewportCoarseSampleOrderStateCreateInfoNV$fEqCoarseSampleOrderTypeNV$fOrdCoarseSampleOrderTypeNV!$fStorableCoarseSampleOrderTypeNV$fZeroCoarseSampleOrderTypeNV$fEqShadingRatePaletteEntryNV$fOrdShadingRatePaletteEntryNV#$fStorableShadingRatePaletteEntryNV$fZeroShadingRatePaletteEntryNV$fEqCoarseSampleLocationNV,$fEqPhysicalDeviceShadingRateImageFeaturesNV8$fShowPipelineViewportCoarseSampleOrderStateCreateInfoNV$fShowCoarseSampleOrderCustomNV$fShowCoarseSampleLocationNV0$fShowPhysicalDeviceShadingRateImagePropertiesNV.$fShowPhysicalDeviceShadingRateImageFeaturesNV7$fShowPipelineViewportShadingRateImageStateCreateInfoNV$fShowShadingRatePaletteNV#NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME!NV_SCISSOR_EXCLUSIVE_SPEC_VERSION$sel:exclusiveScissors:PipelineViewportExclusiveScissorStateCreateInfoNV>$sel:exclusiveScissor:PhysicalDeviceExclusiveScissorFeaturesNV.$fZeroPhysicalDeviceExclusiveScissorFeaturesNV2$fStorablePhysicalDeviceExclusiveScissorFeaturesNV5$fFromCStructPhysicalDeviceExclusiveScissorFeaturesNV3$fToCStructPhysicalDeviceExclusiveScissorFeaturesNV7$fZeroPipelineViewportExclusiveScissorStateCreateInfoNV>$fFromCStructPipelineViewportExclusiveScissorStateCreateInfoNV<$fToCStructPipelineViewportExclusiveScissorStateCreateInfoNV,$fEqPhysicalDeviceExclusiveScissorFeaturesNV7$fShowPipelineViewportExclusiveScissorStateCreateInfoNV.$fShowPhysicalDeviceExclusiveScissorFeaturesNVNV_MESH_SHADER_EXTENSION_NAMENV_MESH_SHADER_SPEC_VERSION-$sel:taskCount:DrawMeshTasksIndirectCommandNV-$sel:firstTask:DrawMeshTasksIndirectCommandNV?$sel:maxDrawMeshTasksCount:PhysicalDeviceMeshShaderPropertiesNV$sel:maxTaskWorkGroupInvocations:PhysicalDeviceMeshShaderPropertiesNV>$sel:maxTaskWorkGroupSize:PhysicalDeviceMeshShaderPropertiesNV$sel:maxTaskTotalMemorySize:PhysicalDeviceMeshShaderPropertiesNV<$sel:maxTaskOutputCount:PhysicalDeviceMeshShaderPropertiesNV$sel:maxMeshWorkGroupInvocations:PhysicalDeviceMeshShaderPropertiesNV>$sel:maxMeshWorkGroupSize:PhysicalDeviceMeshShaderPropertiesNV$sel:maxMeshTotalMemorySize:PhysicalDeviceMeshShaderPropertiesNV?$sel:maxMeshOutputVertices:PhysicalDeviceMeshShaderPropertiesNV$sel:maxMeshOutputPrimitives:PhysicalDeviceMeshShaderPropertiesNV$sel:maxMeshMultiviewViewCount:PhysicalDeviceMeshShaderPropertiesNV$sel:meshOutputPerVertexGranularity:PhysicalDeviceMeshShaderPropertiesNV$sel:meshOutputPerPrimitiveGranularity:PhysicalDeviceMeshShaderPropertiesNV2$sel:taskShader:PhysicalDeviceMeshShaderFeaturesNV2$sel:meshShader:PhysicalDeviceMeshShaderFeaturesNV($fZeroPhysicalDeviceMeshShaderFeaturesNV,$fStorablePhysicalDeviceMeshShaderFeaturesNV/$fFromCStructPhysicalDeviceMeshShaderFeaturesNV-$fToCStructPhysicalDeviceMeshShaderFeaturesNV*$fZeroPhysicalDeviceMeshShaderPropertiesNV.$fStorablePhysicalDeviceMeshShaderPropertiesNV1$fFromCStructPhysicalDeviceMeshShaderPropertiesNV/$fToCStructPhysicalDeviceMeshShaderPropertiesNV$$fZeroDrawMeshTasksIndirectCommandNV($fStorableDrawMeshTasksIndirectCommandNV+$fFromCStructDrawMeshTasksIndirectCommandNV)$fToCStructDrawMeshTasksIndirectCommandNV"$fEqDrawMeshTasksIndirectCommandNV($fEqPhysicalDeviceMeshShaderPropertiesNV&$fEqPhysicalDeviceMeshShaderFeaturesNV$$fShowDrawMeshTasksIndirectCommandNV*$fShowPhysicalDeviceMeshShaderPropertiesNV($fShowPhysicalDeviceMeshShaderFeaturesNV&NV_EXTERNAL_MEMORY_RDMA_EXTENSION_NAME$NV_EXTERNAL_MEMORY_RDMA_SPEC_VERSION($sel:memory:MemoryGetRemoteAddressInfoNV,$sel:handleType:MemoryGetRemoteAddressInfoNV$sel:externalMemoryRDMA:PhysicalDeviceExternalMemoryRDMAFeaturesNV0$fZeroPhysicalDeviceExternalMemoryRDMAFeaturesNV4$fStorablePhysicalDeviceExternalMemoryRDMAFeaturesNV7$fFromCStructPhysicalDeviceExternalMemoryRDMAFeaturesNV5$fToCStructPhysicalDeviceExternalMemoryRDMAFeaturesNV"$fZeroMemoryGetRemoteAddressInfoNV&$fStorableMemoryGetRemoteAddressInfoNV)$fFromCStructMemoryGetRemoteAddressInfoNV'$fToCStructMemoryGetRemoteAddressInfoNV $fEqMemoryGetRemoteAddressInfoNV.$fEqPhysicalDeviceExternalMemoryRDMAFeaturesNV"$fShowMemoryGetRemoteAddressInfoNV0$fShowPhysicalDeviceExternalMemoryRDMAFeaturesNV/NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME-NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION$sel:stage:CheckpointDataNV&$sel:checkpointMarker:CheckpointDataNV$sel:checkpointExecutionStageMask:QueueFamilyCheckpointPropertiesNV'$fZeroQueueFamilyCheckpointPropertiesNV+$fStorableQueueFamilyCheckpointPropertiesNV.$fFromCStructQueueFamilyCheckpointPropertiesNV,$fToCStructQueueFamilyCheckpointPropertiesNV$fZeroCheckpointDataNV$fStorableCheckpointDataNV$fFromCStructCheckpointDataNV$fToCStructCheckpointDataNV%$fEqQueueFamilyCheckpointPropertiesNV$fShowCheckpointDataNV'$fShowQueueFamilyCheckpointPropertiesNV&NV_DEDICATED_ALLOCATION_EXTENSION_NAME$NV_DEDICATED_ALLOCATION_SPEC_VERSION2$sel:image:DedicatedAllocationMemoryAllocateInfoNV3$sel:buffer:DedicatedAllocationMemoryAllocateInfoNV>$sel:dedicatedAllocation:DedicatedAllocationBufferCreateInfoNV=$sel:dedicatedAllocation:DedicatedAllocationImageCreateInfoNV*$fZeroDedicatedAllocationImageCreateInfoNV.$fStorableDedicatedAllocationImageCreateInfoNV1$fFromCStructDedicatedAllocationImageCreateInfoNV/$fToCStructDedicatedAllocationImageCreateInfoNV+$fZeroDedicatedAllocationBufferCreateInfoNV/$fStorableDedicatedAllocationBufferCreateInfoNV2$fFromCStructDedicatedAllocationBufferCreateInfoNV0$fToCStructDedicatedAllocationBufferCreateInfoNV-$fZeroDedicatedAllocationMemoryAllocateInfoNV1$fStorableDedicatedAllocationMemoryAllocateInfoNV4$fFromCStructDedicatedAllocationMemoryAllocateInfoNV2$fToCStructDedicatedAllocationMemoryAllocateInfoNV+$fEqDedicatedAllocationMemoryAllocateInfoNV)$fEqDedicatedAllocationBufferCreateInfoNV($fEqDedicatedAllocationImageCreateInfoNV-$fShowDedicatedAllocationMemoryAllocateInfoNV+$fShowDedicatedAllocationBufferCreateInfoNV*$fShowDedicatedAllocationImageCreateInfoNV)NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME'NV_COVERAGE_REDUCTION_MODE_SPEC_VERSIONCoverageReductionModeNV+PipelineCoverageReductionStateCreateFlagsNV?$sel:coverageReductionMode:FramebufferMixedSamplesCombinationNV>$sel:rasterizationSamples:FramebufferMixedSamplesCombinationNV=$sel:depthStencilSamples:FramebufferMixedSamplesCombinationNV6$sel:colorSamples:FramebufferMixedSamplesCombinationNV5$sel:flags:PipelineCoverageReductionStateCreateInfoNV$sel:coverageReductionMode:PipelineCoverageReductionStateCreateInfoNV$sel:coverageReductionMode:PhysicalDeviceCoverageReductionModeFeaturesNV COVERAGE_REDUCTION_MODE_MERGE_NV3$fZeroPhysicalDeviceCoverageReductionModeFeaturesNV7$fStorablePhysicalDeviceCoverageReductionModeFeaturesNV:$fFromCStructPhysicalDeviceCoverageReductionModeFeaturesNV8$fToCStructPhysicalDeviceCoverageReductionModeFeaturesNV1$fReadPipelineCoverageReductionStateCreateFlagsNV1$fShowPipelineCoverageReductionStateCreateFlagsNV$fReadCoverageReductionModeNV$fShowCoverageReductionModeNV*$fZeroFramebufferMixedSamplesCombinationNV.$fStorableFramebufferMixedSamplesCombinationNV1$fFromCStructFramebufferMixedSamplesCombinationNV/$fToCStructFramebufferMixedSamplesCombinationNV0$fZeroPipelineCoverageReductionStateCreateInfoNV4$fStorablePipelineCoverageReductionStateCreateInfoNV7$fFromCStructPipelineCoverageReductionStateCreateInfoNV5$fToCStructPipelineCoverageReductionStateCreateInfoNV.$fEqPipelineCoverageReductionStateCreateInfoNV($fEqFramebufferMixedSamplesCombinationNV$fEqCoverageReductionModeNV$fOrdCoverageReductionModeNV!$fStorableCoverageReductionModeNV$fZeroCoverageReductionModeNV/$fEqPipelineCoverageReductionStateCreateFlagsNV0$fOrdPipelineCoverageReductionStateCreateFlagsNV5$fStorablePipelineCoverageReductionStateCreateFlagsNV1$fZeroPipelineCoverageReductionStateCreateFlagsNV1$fBitsPipelineCoverageReductionStateCreateFlagsNV7$fFiniteBitsPipelineCoverageReductionStateCreateFlagsNV1$fEqPhysicalDeviceCoverageReductionModeFeaturesNV*$fShowFramebufferMixedSamplesCombinationNV0$fShowPipelineCoverageReductionStateCreateInfoNV3$fShowPhysicalDeviceCoverageReductionModeFeaturesNV$NV_COOPERATIVE_MATRIX_EXTENSION_NAME"NV_COOPERATIVE_MATRIX_SPEC_VERSIONComponentTypeNVScopeNV($sel:mSize:CooperativeMatrixPropertiesNV($sel:nSize:CooperativeMatrixPropertiesNV($sel:kSize:CooperativeMatrixPropertiesNV($sel:aType:CooperativeMatrixPropertiesNV($sel:bType:CooperativeMatrixPropertiesNV($sel:cType:CooperativeMatrixPropertiesNV($sel:dType:CooperativeMatrixPropertiesNV($sel:scope:CooperativeMatrixPropertiesNV$sel:cooperativeMatrixSupportedStages:PhysicalDeviceCooperativeMatrixPropertiesNV$sel:cooperativeMatrix:PhysicalDeviceCooperativeMatrixFeaturesNV$sel:cooperativeMatrixRobustBufferAccess:PhysicalDeviceCooperativeMatrixFeaturesNVCOMPONENT_TYPE_UINT64_NVCOMPONENT_TYPE_UINT32_NVCOMPONENT_TYPE_UINT16_NVCOMPONENT_TYPE_UINT8_NVCOMPONENT_TYPE_SINT64_NVCOMPONENT_TYPE_SINT32_NVCOMPONENT_TYPE_SINT16_NVCOMPONENT_TYPE_SINT8_NVCOMPONENT_TYPE_FLOAT64_NVCOMPONENT_TYPE_FLOAT32_NVCOMPONENT_TYPE_FLOAT16_NVSCOPE_QUEUE_FAMILY_NVSCOPE_SUBGROUP_NVSCOPE_WORKGROUP_NVSCOPE_DEVICE_NV/$fZeroPhysicalDeviceCooperativeMatrixFeaturesNV3$fStorablePhysicalDeviceCooperativeMatrixFeaturesNV6$fFromCStructPhysicalDeviceCooperativeMatrixFeaturesNV4$fToCStructPhysicalDeviceCooperativeMatrixFeaturesNV1$fZeroPhysicalDeviceCooperativeMatrixPropertiesNV5$fStorablePhysicalDeviceCooperativeMatrixPropertiesNV8$fFromCStructPhysicalDeviceCooperativeMatrixPropertiesNV6$fToCStructPhysicalDeviceCooperativeMatrixPropertiesNV $fReadScopeNV $fShowScopeNV$fReadComponentTypeNV$fShowComponentTypeNV#$fZeroCooperativeMatrixPropertiesNV'$fStorableCooperativeMatrixPropertiesNV*$fFromCStructCooperativeMatrixPropertiesNV($fToCStructCooperativeMatrixPropertiesNV!$fEqCooperativeMatrixPropertiesNV$fEqComponentTypeNV$fOrdComponentTypeNV$fStorableComponentTypeNV$fZeroComponentTypeNV $fEqScopeNV $fOrdScopeNV$fStorableScopeNV $fZeroScopeNV/$fEqPhysicalDeviceCooperativeMatrixPropertiesNV-$fEqPhysicalDeviceCooperativeMatrixFeaturesNV#$fShowCooperativeMatrixPropertiesNV1$fShowPhysicalDeviceCooperativeMatrixPropertiesNV/$fShowPhysicalDeviceCooperativeMatrixFeaturesNV&NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME$NV_CLIP_SPACE_W_SCALING_SPEC_VERSION$sel:viewportWScalingEnable:PipelineViewportWScalingStateCreateInfoNV<$sel:viewportCount:PipelineViewportWScalingStateCreateInfoNV$sel:viewportWScalings:PipelineViewportWScalingStateCreateInfoNV$sel:xcoeff:ViewportWScalingNV$sel:ycoeff:ViewportWScalingNV$fZeroViewportWScalingNV$fStorableViewportWScalingNV$fFromCStructViewportWScalingNV$fToCStructViewportWScalingNV/$fZeroPipelineViewportWScalingStateCreateInfoNV6$fFromCStructPipelineViewportWScalingStateCreateInfoNV4$fToCStructPipelineViewportWScalingStateCreateInfoNV$fEqViewportWScalingNV/$fShowPipelineViewportWScalingStateCreateInfoNV$fShowViewportWScalingNV$NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME"NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION0$sel:deviceAddress:ImageViewAddressPropertiesNVX'$sel:size:ImageViewAddressPropertiesNVX%$sel:imageView:ImageViewHandleInfoNVX*$sel:descriptorType:ImageViewHandleInfoNVX#$sel:sampler:ImageViewHandleInfoNVX$fZeroImageViewHandleInfoNVX $fStorableImageViewHandleInfoNVX#$fFromCStructImageViewHandleInfoNVX!$fToCStructImageViewHandleInfoNVX#$fZeroImageViewAddressPropertiesNVX'$fStorableImageViewAddressPropertiesNVX*$fFromCStructImageViewAddressPropertiesNVX($fToCStructImageViewAddressPropertiesNVX!$fEqImageViewAddressPropertiesNVX$fEqImageViewHandleInfoNVX#$fShowImageViewAddressPropertiesNVX$fShowImageViewHandleInfoNVX$KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME"KHR_WIN32_KEYED_MUTEX_SPEC_VERSION6$sel:acquireSyncs:Win32KeyedMutexAcquireReleaseInfoKHR5$sel:acquireKeys:Win32KeyedMutexAcquireReleaseInfoKHR9$sel:acquireTimeouts:Win32KeyedMutexAcquireReleaseInfoKHR6$sel:releaseSyncs:Win32KeyedMutexAcquireReleaseInfoKHR5$sel:releaseKeys:Win32KeyedMutexAcquireReleaseInfoKHR*$fZeroWin32KeyedMutexAcquireReleaseInfoKHR1$fFromCStructWin32KeyedMutexAcquireReleaseInfoKHR/$fToCStructWin32KeyedMutexAcquireReleaseInfoKHR*$fShowWin32KeyedMutexAcquireReleaseInfoKHR#KHR_PIPELINE_LIBRARY_EXTENSION_NAME!KHR_PIPELINE_LIBRARY_SPEC_VERSION+$sel:libraries:PipelineLibraryCreateInfoKHR"$fZeroPipelineLibraryCreateInfoKHR)$fFromCStructPipelineLibraryCreateInfoKHR'$fToCStructPipelineLibraryCreateInfoKHR"$fShowPipelineLibraryCreateInfoKHR1KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME/KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION$PipelineExecutableStatisticFormatKHRB32I64U64F645$sel:name:PipelineExecutableInternalRepresentationKHR<$sel:description:PipelineExecutableInternalRepresentationKHR7$sel:isText:PipelineExecutableInternalRepresentationKHR9$sel:dataSize:PipelineExecutableInternalRepresentationKHR6$sel:data':PipelineExecutableInternalRepresentationKHR($sel:name:PipelineExecutableStatisticKHR/$sel:description:PipelineExecutableStatisticKHR*$sel:format:PipelineExecutableStatisticKHR)$sel:value:PipelineExecutableStatisticKHR'$sel:pipeline:PipelineExecutableInfoKHR.$sel:executableIndex:PipelineExecutableInfoKHR+$sel:stages:PipelineExecutablePropertiesKHR)$sel:name:PipelineExecutablePropertiesKHR0$sel:description:PipelineExecutablePropertiesKHR1$sel:subgroupSize:PipelineExecutablePropertiesKHR$sel:pipeline:PipelineInfoKHR$sel:pipelineExecutableInfo:PhysicalDevicePipelineExecutablePropertiesFeaturesKHR0PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR/PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR.PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR/PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR'peekPipelineExecutableStatisticValueKHR;$fZeroPhysicalDevicePipelineExecutablePropertiesFeaturesKHR?$fStorablePhysicalDevicePipelineExecutablePropertiesFeaturesKHR$fFromCStructPhysicalDevicePipelineExecutablePropertiesFeaturesKHR$fToCStructPhysicalDevicePipelineExecutablePropertiesFeaturesKHR$fZeroPipelineInfoKHR$fStorablePipelineInfoKHR$fFromCStructPipelineInfoKHR$fToCStructPipelineInfoKHR%$fZeroPipelineExecutablePropertiesKHR)$fStorablePipelineExecutablePropertiesKHR,$fFromCStructPipelineExecutablePropertiesKHR*$fToCStructPipelineExecutablePropertiesKHR$fZeroPipelineExecutableInfoKHR#$fStorablePipelineExecutableInfoKHR&$fFromCStructPipelineExecutableInfoKHR$$fToCStructPipelineExecutableInfoKHR1$fZeroPipelineExecutableInternalRepresentationKHR5$fStorablePipelineExecutableInternalRepresentationKHR8$fFromCStructPipelineExecutableInternalRepresentationKHR6$fToCStructPipelineExecutableInternalRepresentationKHR)$fZeroPipelineExecutableStatisticValueKHR.$fToCStructPipelineExecutableStatisticValueKHR*$fReadPipelineExecutableStatisticFormatKHR*$fShowPipelineExecutableStatisticFormatKHR$$fZeroPipelineExecutableStatisticKHR+$fFromCStructPipelineExecutableStatisticKHR)$fToCStructPipelineExecutableStatisticKHR($fEqPipelineExecutableStatisticFormatKHR)$fOrdPipelineExecutableStatisticFormatKHR.$fStorablePipelineExecutableStatisticFormatKHR*$fZeroPipelineExecutableStatisticFormatKHR)$fShowPipelineExecutableStatisticValueKHR$fEqPipelineExecutableInfoKHR$fEqPipelineInfoKHR9$fEqPhysicalDevicePipelineExecutablePropertiesFeaturesKHR1$fShowPipelineExecutableInternalRepresentationKHR$$fShowPipelineExecutableStatisticKHR$fShowPipelineExecutableInfoKHR%$fShowPipelineExecutablePropertiesKHR$fShowPipelineInfoKHR;$fShowPhysicalDevicePipelineExecutablePropertiesFeaturesKHR$KHR_PERFORMANCE_QUERY_EXTENSION_NAME"KHR_PERFORMANCE_QUERY_SPEC_VERSIONAcquireProfilingLockFlagBitsKHRAcquireProfilingLockFlagsKHR(PerformanceCounterDescriptionFlagBitsKHR%PerformanceCounterDescriptionFlagsKHRPerformanceCounterStorageKHRPerformanceCounterUnitKHRPerformanceCounterScopeKHR Int32Counter Int64Counter Uint32Counter Uint64CounterFloat32CounterFloat64Counter3$sel:counterPassIndex:PerformanceQuerySubmitInfoKHR&$sel:flags:AcquireProfilingLockInfoKHR($sel:timeout:AcquireProfilingLockInfoKHR7$sel:queueFamilyIndex:QueryPoolPerformanceCreateInfoKHR5$sel:counterIndices:QueryPoolPerformanceCreateInfoKHR+$sel:flags:PerformanceCounterDescriptionKHR*$sel:name:PerformanceCounterDescriptionKHR.$sel:category:PerformanceCounterDescriptionKHR1$sel:description:PerformanceCounterDescriptionKHR$sel:unit:PerformanceCounterKHR $sel:scope:PerformanceCounterKHR"$sel:storage:PerformanceCounterKHR$sel:uuid:PerformanceCounterKHR$sel:allowCommandBufferQueryCopies:PhysicalDevicePerformanceQueryPropertiesKHR$sel:performanceCounterQueryPools:PhysicalDevicePerformanceQueryFeaturesKHR$sel:performanceCounterMultipleQueryPools:PhysicalDevicePerformanceQueryFeaturesKHR=PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR=PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR'PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR'PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR&PERFORMANCE_COUNTER_STORAGE_UINT64_KHR&PERFORMANCE_COUNTER_STORAGE_UINT32_KHR%PERFORMANCE_COUNTER_STORAGE_INT64_KHR%PERFORMANCE_COUNTER_STORAGE_INT32_KHR#PERFORMANCE_COUNTER_UNIT_CYCLES_KHR"PERFORMANCE_COUNTER_UNIT_HERTZ_KHR!PERFORMANCE_COUNTER_UNIT_AMPS_KHR"PERFORMANCE_COUNTER_UNIT_VOLTS_KHR"PERFORMANCE_COUNTER_UNIT_WATTS_KHR#PERFORMANCE_COUNTER_UNIT_KELVIN_KHR-PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR"PERFORMANCE_COUNTER_UNIT_BYTES_KHR(PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR'PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR$PERFORMANCE_COUNTER_UNIT_GENERIC_KHR%PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR9PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR9PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHRQUERY_SCOPE_COMMAND_KHRQUERY_SCOPE_RENDER_PASS_KHRQUERY_SCOPE_COMMAND_BUFFER_KHR/$fZeroPhysicalDevicePerformanceQueryFeaturesKHR3$fStorablePhysicalDevicePerformanceQueryFeaturesKHR6$fFromCStructPhysicalDevicePerformanceQueryFeaturesKHR4$fToCStructPhysicalDevicePerformanceQueryFeaturesKHR1$fZeroPhysicalDevicePerformanceQueryPropertiesKHR5$fStorablePhysicalDevicePerformanceQueryPropertiesKHR8$fFromCStructPhysicalDevicePerformanceQueryPropertiesKHR6$fToCStructPhysicalDevicePerformanceQueryPropertiesKHR'$fZeroQueryPoolPerformanceCreateInfoKHR.$fFromCStructQueryPoolPerformanceCreateInfoKHR,$fToCStructQueryPoolPerformanceCreateInfoKHR#$fZeroPerformanceQuerySubmitInfoKHR'$fStorablePerformanceQuerySubmitInfoKHR*$fFromCStructPerformanceQuerySubmitInfoKHR($fToCStructPerformanceQuerySubmitInfoKHR!$fZeroPerformanceCounterResultKHR&$fToCStructPerformanceCounterResultKHR $fReadPerformanceCounterScopeKHR $fShowPerformanceCounterScopeKHR$fReadPerformanceCounterUnitKHR$fShowPerformanceCounterUnitKHR"$fReadPerformanceCounterStorageKHR"$fShowPerformanceCounterStorageKHR$fZeroPerformanceCounterKHR$fStorablePerformanceCounterKHR"$fFromCStructPerformanceCounterKHR $fToCStructPerformanceCounterKHR.$fReadPerformanceCounterDescriptionFlagBitsKHR.$fShowPerformanceCounterDescriptionFlagBitsKHR&$fZeroPerformanceCounterDescriptionKHR*$fStorablePerformanceCounterDescriptionKHR-$fFromCStructPerformanceCounterDescriptionKHR+$fToCStructPerformanceCounterDescriptionKHR%$fReadAcquireProfilingLockFlagBitsKHR%$fShowAcquireProfilingLockFlagBitsKHR!$fZeroAcquireProfilingLockInfoKHR%$fStorableAcquireProfilingLockInfoKHR($fFromCStructAcquireProfilingLockInfoKHR&$fToCStructAcquireProfilingLockInfoKHR$fEqAcquireProfilingLockInfoKHR#$fEqAcquireProfilingLockFlagBitsKHR$$fOrdAcquireProfilingLockFlagBitsKHR)$fStorableAcquireProfilingLockFlagBitsKHR%$fZeroAcquireProfilingLockFlagBitsKHR%$fBitsAcquireProfilingLockFlagBitsKHR+$fFiniteBitsAcquireProfilingLockFlagBitsKHR,$fEqPerformanceCounterDescriptionFlagBitsKHR-$fOrdPerformanceCounterDescriptionFlagBitsKHR2$fStorablePerformanceCounterDescriptionFlagBitsKHR.$fZeroPerformanceCounterDescriptionFlagBitsKHR.$fBitsPerformanceCounterDescriptionFlagBitsKHR4$fFiniteBitsPerformanceCounterDescriptionFlagBitsKHR $fEqPerformanceCounterStorageKHR!$fOrdPerformanceCounterStorageKHR&$fStorablePerformanceCounterStorageKHR"$fZeroPerformanceCounterStorageKHR$fEqPerformanceCounterUnitKHR$fOrdPerformanceCounterUnitKHR#$fStorablePerformanceCounterUnitKHR$fZeroPerformanceCounterUnitKHR$fEqPerformanceCounterScopeKHR$fOrdPerformanceCounterScopeKHR$$fStorablePerformanceCounterScopeKHR $fZeroPerformanceCounterScopeKHR!$fShowPerformanceCounterResultKHR!$fEqPerformanceQuerySubmitInfoKHR/$fEqPhysicalDevicePerformanceQueryPropertiesKHR-$fEqPhysicalDevicePerformanceQueryFeaturesKHR#$fShowPerformanceQuerySubmitInfoKHR!$fShowAcquireProfilingLockInfoKHR'$fShowQueryPoolPerformanceCreateInfoKHR&$fShowPerformanceCounterDescriptionKHR$fShowPerformanceCounterKHR1$fShowPhysicalDevicePerformanceQueryPropertiesKHR/$fShowPhysicalDevicePerformanceQueryFeaturesKHR(KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME&KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION$$sel:semaphore:SemaphoreGetFdInfoKHR%$sel:handleType:SemaphoreGetFdInfoKHR'$sel:semaphore:ImportSemaphoreFdInfoKHR#$sel:flags:ImportSemaphoreFdInfoKHR($sel:handleType:ImportSemaphoreFdInfoKHR $sel:fd:ImportSemaphoreFdInfoKHR$fZeroImportSemaphoreFdInfoKHR"$fStorableImportSemaphoreFdInfoKHR%$fFromCStructImportSemaphoreFdInfoKHR#$fToCStructImportSemaphoreFdInfoKHR$fZeroSemaphoreGetFdInfoKHR$fStorableSemaphoreGetFdInfoKHR"$fFromCStructSemaphoreGetFdInfoKHR $fToCStructSemaphoreGetFdInfoKHR$fEqSemaphoreGetFdInfoKHR$fEqImportSemaphoreFdInfoKHR$fShowSemaphoreGetFdInfoKHR$fShowImportSemaphoreFdInfoKHR%KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME#KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION$sel:memory:MemoryGetFdInfoKHR"$sel:handleType:MemoryGetFdInfoKHR)$sel:memoryTypeBits:MemoryFdPropertiesKHR%$sel:handleType:ImportMemoryFdInfoKHR$sel:fd:ImportMemoryFdInfoKHR$fZeroImportMemoryFdInfoKHR$fStorableImportMemoryFdInfoKHR"$fFromCStructImportMemoryFdInfoKHR $fToCStructImportMemoryFdInfoKHR$fZeroMemoryFdPropertiesKHR$fStorableMemoryFdPropertiesKHR"$fFromCStructMemoryFdPropertiesKHR $fToCStructMemoryFdPropertiesKHR$fZeroMemoryGetFdInfoKHR$fStorableMemoryGetFdInfoKHR$fFromCStructMemoryGetFdInfoKHR$fToCStructMemoryGetFdInfoKHR$fEqMemoryGetFdInfoKHR$fEqMemoryFdPropertiesKHR$fEqImportMemoryFdInfoKHR$fShowMemoryGetFdInfoKHR$fShowMemoryFdPropertiesKHR$fShowImportMemoryFdInfoKHR$KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME"KHR_EXTERNAL_FENCE_FD_SPEC_VERSION$sel:fence:FenceGetFdInfoKHR!$sel:handleType:FenceGetFdInfoKHR$sel:fence:ImportFenceFdInfoKHR$sel:flags:ImportFenceFdInfoKHR$$sel:handleType:ImportFenceFdInfoKHR$sel:fd:ImportFenceFdInfoKHR$fZeroImportFenceFdInfoKHR$fStorableImportFenceFdInfoKHR!$fFromCStructImportFenceFdInfoKHR$fToCStructImportFenceFdInfoKHR$fZeroFenceGetFdInfoKHR$fStorableFenceGetFdInfoKHR$fFromCStructFenceGetFdInfoKHR$fToCStructFenceGetFdInfoKHR$fEqFenceGetFdInfoKHR$fEqImportFenceFdInfoKHR$fShowFenceGetFdInfoKHR$fShowImportFenceFdInfoKHR-EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME+EXT_VERTEX_INPUT_DYNAMIC_STATE_SPEC_VERSION1$sel:location:VertexInputAttributeDescription2EXT0$sel:binding:VertexInputAttributeDescription2EXT/$sel:format:VertexInputAttributeDescription2EXT/$sel:offset:VertexInputAttributeDescription2EXT.$sel:binding:VertexInputBindingDescription2EXT-$sel:stride:VertexInputBindingDescription2EXT0$sel:inputRate:VertexInputBindingDescription2EXT.$sel:divisor:VertexInputBindingDescription2EXT$sel:vertexInputDynamicState:PhysicalDeviceVertexInputDynamicStateFeaturesEXT6$fZeroPhysicalDeviceVertexInputDynamicStateFeaturesEXT:$fStorablePhysicalDeviceVertexInputDynamicStateFeaturesEXT=$fFromCStructPhysicalDeviceVertexInputDynamicStateFeaturesEXT;$fToCStructPhysicalDeviceVertexInputDynamicStateFeaturesEXT'$fZeroVertexInputBindingDescription2EXT+$fStorableVertexInputBindingDescription2EXT.$fFromCStructVertexInputBindingDescription2EXT,$fToCStructVertexInputBindingDescription2EXT)$fZeroVertexInputAttributeDescription2EXT-$fStorableVertexInputAttributeDescription2EXT0$fFromCStructVertexInputAttributeDescription2EXT.$fToCStructVertexInputAttributeDescription2EXT'$fEqVertexInputAttributeDescription2EXT%$fEqVertexInputBindingDescription2EXT4$fEqPhysicalDeviceVertexInputDynamicStateFeaturesEXT)$fShowVertexInputAttributeDescription2EXT'$fShowVertexInputBindingDescription2EXT6$fShowPhysicalDeviceVertexInputDynamicStateFeaturesEXT%EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME#EXT_TRANSFORM_FEEDBACK_SPEC_VERSION.PipelineRasterizationStateStreamCreateFlagsEXT8$sel:flags:PipelineRasterizationStateStreamCreateInfoEXT$sel:rasterizationStream:PipelineRasterizationStateStreamCreateInfoEXT$sel:maxTransformFeedbackStreams:PhysicalDeviceTransformFeedbackPropertiesEXT$sel:maxTransformFeedbackBuffers:PhysicalDeviceTransformFeedbackPropertiesEXT$sel:maxTransformFeedbackBufferSize:PhysicalDeviceTransformFeedbackPropertiesEXT$sel:maxTransformFeedbackStreamDataSize:PhysicalDeviceTransformFeedbackPropertiesEXT$sel:maxTransformFeedbackBufferDataSize:PhysicalDeviceTransformFeedbackPropertiesEXT$sel:maxTransformFeedbackBufferDataStride:PhysicalDeviceTransformFeedbackPropertiesEXT$sel:transformFeedbackQueries:PhysicalDeviceTransformFeedbackPropertiesEXT$sel:transformFeedbackStreamsLinesTriangles:PhysicalDeviceTransformFeedbackPropertiesEXT$sel:transformFeedbackRasterizationStreamSelect:PhysicalDeviceTransformFeedbackPropertiesEXT$sel:transformFeedbackDraw:PhysicalDeviceTransformFeedbackPropertiesEXT$sel:transformFeedback:PhysicalDeviceTransformFeedbackFeaturesEXT?$sel:geometryStreams:PhysicalDeviceTransformFeedbackFeaturesEXTcmdUseTransformFeedbackEXTcmdUseQueryIndexedEXT0$fZeroPhysicalDeviceTransformFeedbackFeaturesEXT4$fStorablePhysicalDeviceTransformFeedbackFeaturesEXT7$fFromCStructPhysicalDeviceTransformFeedbackFeaturesEXT5$fToCStructPhysicalDeviceTransformFeedbackFeaturesEXT2$fZeroPhysicalDeviceTransformFeedbackPropertiesEXT6$fStorablePhysicalDeviceTransformFeedbackPropertiesEXT9$fFromCStructPhysicalDeviceTransformFeedbackPropertiesEXT7$fToCStructPhysicalDeviceTransformFeedbackPropertiesEXT4$fReadPipelineRasterizationStateStreamCreateFlagsEXT4$fShowPipelineRasterizationStateStreamCreateFlagsEXT3$fZeroPipelineRasterizationStateStreamCreateInfoEXT7$fStorablePipelineRasterizationStateStreamCreateInfoEXT:$fFromCStructPipelineRasterizationStateStreamCreateInfoEXT8$fToCStructPipelineRasterizationStateStreamCreateInfoEXT1$fEqPipelineRasterizationStateStreamCreateInfoEXT2$fEqPipelineRasterizationStateStreamCreateFlagsEXT3$fOrdPipelineRasterizationStateStreamCreateFlagsEXT8$fStorablePipelineRasterizationStateStreamCreateFlagsEXT4$fZeroPipelineRasterizationStateStreamCreateFlagsEXT4$fBitsPipelineRasterizationStateStreamCreateFlagsEXT:$fFiniteBitsPipelineRasterizationStateStreamCreateFlagsEXT0$fEqPhysicalDeviceTransformFeedbackPropertiesEXT.$fEqPhysicalDeviceTransformFeedbackFeaturesEXT3$fShowPipelineRasterizationStateStreamCreateInfoEXT2$fShowPhysicalDeviceTransformFeedbackPropertiesEXT0$fShowPhysicalDeviceTransformFeedbackFeaturesEXTEXT_TOOLING_INFO_EXTENSION_NAMEEXT_TOOLING_INFO_SPEC_VERSIONToolPurposeFlagBitsEXTToolPurposeFlagsEXT)$sel:name:PhysicalDeviceToolPropertiesEXT,$sel:version:PhysicalDeviceToolPropertiesEXT-$sel:purposes:PhysicalDeviceToolPropertiesEXT0$sel:description:PhysicalDeviceToolPropertiesEXT*$sel:layer:PhysicalDeviceToolPropertiesEXT$TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT"TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT'TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT(TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXTTOOL_PURPOSE_TRACING_BIT_EXTTOOL_PURPOSE_PROFILING_BIT_EXTTOOL_PURPOSE_VALIDATION_BIT_EXT$fReadToolPurposeFlagBitsEXT$fShowToolPurposeFlagBitsEXT%$fZeroPhysicalDeviceToolPropertiesEXT)$fStorablePhysicalDeviceToolPropertiesEXT,$fFromCStructPhysicalDeviceToolPropertiesEXT*$fToCStructPhysicalDeviceToolPropertiesEXT$fEqToolPurposeFlagBitsEXT$fOrdToolPurposeFlagBitsEXT $fStorableToolPurposeFlagBitsEXT$fZeroToolPurposeFlagBitsEXT$fBitsToolPurposeFlagBitsEXT"$fFiniteBitsToolPurposeFlagBitsEXT%$fShowPhysicalDeviceToolPropertiesEXT#EXT_SAMPLE_LOCATIONS_EXTENSION_NAME!EXT_SAMPLE_LOCATIONS_SPEC_VERSION7$sel:maxSampleLocationGridSize:MultisamplePropertiesEXT$sel:sampleLocationSampleCounts:PhysicalDeviceSampleLocationsPropertiesEXT$sel:maxSampleLocationGridSize:PhysicalDeviceSampleLocationsPropertiesEXT$sel:sampleLocationCoordinateRange:PhysicalDeviceSampleLocationsPropertiesEXT$sel:sampleLocationSubPixelBits:PhysicalDeviceSampleLocationsPropertiesEXT$sel:variableSampleLocations:PhysicalDeviceSampleLocationsPropertiesEXT$sel:sampleLocationsEnable:PipelineSampleLocationsStateCreateInfoEXT$sel:sampleLocationsInfo:PipelineSampleLocationsStateCreateInfoEXT$sel:attachmentInitialSampleLocations:RenderPassSampleLocationsBeginInfoEXT$sel:postSubpassSampleLocations:RenderPassSampleLocationsBeginInfoEXT+$sel:subpassIndex:SubpassSampleLocationsEXT2$sel:sampleLocationsInfo:SubpassSampleLocationsEXT1$sel:attachmentIndex:AttachmentSampleLocationsEXT5$sel:sampleLocationsInfo:AttachmentSampleLocationsEXT3$sel:sampleLocationsPerPixel:SampleLocationsInfoEXT2$sel:sampleLocationGridSize:SampleLocationsInfoEXT+$sel:sampleLocations:SampleLocationsInfoEXT$sel:x:SampleLocationEXT$sel:y:SampleLocationEXT$fZeroSampleLocationEXT$fStorableSampleLocationEXT$fFromCStructSampleLocationEXT$fToCStructSampleLocationEXT$fZeroSampleLocationsInfoEXT#$fFromCStructSampleLocationsInfoEXT!$fToCStructSampleLocationsInfoEXT"$fZeroAttachmentSampleLocationsEXT)$fFromCStructAttachmentSampleLocationsEXT'$fToCStructAttachmentSampleLocationsEXT$fZeroSubpassSampleLocationsEXT&$fFromCStructSubpassSampleLocationsEXT$$fToCStructSubpassSampleLocationsEXT+$fZeroRenderPassSampleLocationsBeginInfoEXT2$fFromCStructRenderPassSampleLocationsBeginInfoEXT0$fToCStructRenderPassSampleLocationsBeginInfoEXT/$fZeroPipelineSampleLocationsStateCreateInfoEXT6$fFromCStructPipelineSampleLocationsStateCreateInfoEXT4$fToCStructPipelineSampleLocationsStateCreateInfoEXT0$fZeroPhysicalDeviceSampleLocationsPropertiesEXT4$fStorablePhysicalDeviceSampleLocationsPropertiesEXT7$fFromCStructPhysicalDeviceSampleLocationsPropertiesEXT5$fToCStructPhysicalDeviceSampleLocationsPropertiesEXT$fZeroMultisamplePropertiesEXT"$fStorableMultisamplePropertiesEXT%$fFromCStructMultisamplePropertiesEXT#$fToCStructMultisamplePropertiesEXT$fEqSampleLocationEXT$fShowMultisamplePropertiesEXT0$fShowPhysicalDeviceSampleLocationsPropertiesEXT/$fShowPipelineSampleLocationsStateCreateInfoEXT+$fShowRenderPassSampleLocationsBeginInfoEXT$fShowSubpassSampleLocationsEXT"$fShowAttachmentSampleLocationsEXT$fShowSampleLocationsInfoEXT$fShowSampleLocationEXTEXT_MULTI_DRAW_EXTENSION_NAMEEXT_MULTI_DRAW_SPEC_VERSION1$sel:multiDraw:PhysicalDeviceMultiDrawFeaturesEXT;$sel:maxMultiDrawCount:PhysicalDeviceMultiDrawPropertiesEXT'$sel:firstIndex:MultiDrawIndexedInfoEXT'$sel:indexCount:MultiDrawIndexedInfoEXT)$sel:vertexOffset:MultiDrawIndexedInfoEXT!$sel:firstVertex:MultiDrawInfoEXT!$sel:vertexCount:MultiDrawInfoEXT$fZeroMultiDrawInfoEXT$fStorableMultiDrawInfoEXT$fFromCStructMultiDrawInfoEXT$fToCStructMultiDrawInfoEXT$fZeroMultiDrawIndexedInfoEXT!$fStorableMultiDrawIndexedInfoEXT$$fFromCStructMultiDrawIndexedInfoEXT"$fToCStructMultiDrawIndexedInfoEXT*$fZeroPhysicalDeviceMultiDrawPropertiesEXT.$fStorablePhysicalDeviceMultiDrawPropertiesEXT1$fFromCStructPhysicalDeviceMultiDrawPropertiesEXT/$fToCStructPhysicalDeviceMultiDrawPropertiesEXT($fZeroPhysicalDeviceMultiDrawFeaturesEXT,$fStorablePhysicalDeviceMultiDrawFeaturesEXT/$fFromCStructPhysicalDeviceMultiDrawFeaturesEXT-$fToCStructPhysicalDeviceMultiDrawFeaturesEXT&$fEqPhysicalDeviceMultiDrawFeaturesEXT($fEqPhysicalDeviceMultiDrawPropertiesEXT$fEqMultiDrawIndexedInfoEXT$fEqMultiDrawInfoEXT($fShowPhysicalDeviceMultiDrawFeaturesEXT*$fShowPhysicalDeviceMultiDrawPropertiesEXT$fShowMultiDrawIndexedInfoEXT$fShowMultiDrawInfoEXT%EXT_LINE_RASTERIZATION_EXTENSION_NAME#EXT_LINE_RASTERIZATION_SPEC_VERSIONLineRasterizationModeEXT$sel:lineRasterizationMode:PipelineRasterizationLineStateCreateInfoEXT$sel:stippledLineEnable:PipelineRasterizationLineStateCreateInfoEXT$sel:lineStippleFactor:PipelineRasterizationLineStateCreateInfoEXT$sel:lineStipplePattern:PipelineRasterizationLineStateCreateInfoEXT$sel:lineSubPixelPrecisionBits:PhysicalDeviceLineRasterizationPropertiesEXT$sel:rectangularLines:PhysicalDeviceLineRasterizationFeaturesEXT>$sel:bresenhamLines:PhysicalDeviceLineRasterizationFeaturesEXT;$sel:smoothLines:PhysicalDeviceLineRasterizationFeaturesEXT$sel:stippledRectangularLines:PhysicalDeviceLineRasterizationFeaturesEXT$sel:stippledBresenhamLines:PhysicalDeviceLineRasterizationFeaturesEXT$sel:stippledSmoothLines:PhysicalDeviceLineRasterizationFeaturesEXT'LINE_RASTERIZATION_MODE_RECTANGULAR_EXT#LINE_RASTERIZATION_MODE_DEFAULT_EXT0$fZeroPhysicalDeviceLineRasterizationFeaturesEXT4$fStorablePhysicalDeviceLineRasterizationFeaturesEXT7$fFromCStructPhysicalDeviceLineRasterizationFeaturesEXT5$fToCStructPhysicalDeviceLineRasterizationFeaturesEXT2$fZeroPhysicalDeviceLineRasterizationPropertiesEXT6$fStorablePhysicalDeviceLineRasterizationPropertiesEXT9$fFromCStructPhysicalDeviceLineRasterizationPropertiesEXT7$fToCStructPhysicalDeviceLineRasterizationPropertiesEXT$fReadLineRasterizationModeEXT$fShowLineRasterizationModeEXT1$fZeroPipelineRasterizationLineStateCreateInfoEXT5$fStorablePipelineRasterizationLineStateCreateInfoEXT8$fFromCStructPipelineRasterizationLineStateCreateInfoEXT6$fToCStructPipelineRasterizationLineStateCreateInfoEXT/$fEqPipelineRasterizationLineStateCreateInfoEXT$fEqLineRasterizationModeEXT$fOrdLineRasterizationModeEXT"$fStorableLineRasterizationModeEXT$fZeroLineRasterizationModeEXT0$fEqPhysicalDeviceLineRasterizationPropertiesEXT.$fEqPhysicalDeviceLineRasterizationFeaturesEXT1$fShowPipelineRasterizationLineStateCreateInfoEXT2$fShowPhysicalDeviceLineRasterizationPropertiesEXT0$fShowPhysicalDeviceLineRasterizationFeaturesEXT'EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME%EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION$sel:minImportedHostPointerAlignment:PhysicalDeviceExternalMemoryHostPropertiesEXT2$sel:memoryTypeBits:MemoryHostPointerPropertiesEXT.$sel:handleType:ImportMemoryHostPointerInfoEXT/$sel:hostPointer:ImportMemoryHostPointerInfoEXT$$fZeroImportMemoryHostPointerInfoEXT($fStorableImportMemoryHostPointerInfoEXT+$fFromCStructImportMemoryHostPointerInfoEXT)$fToCStructImportMemoryHostPointerInfoEXT$$fZeroMemoryHostPointerPropertiesEXT($fStorableMemoryHostPointerPropertiesEXT+$fFromCStructMemoryHostPointerPropertiesEXT)$fToCStructMemoryHostPointerPropertiesEXT3$fZeroPhysicalDeviceExternalMemoryHostPropertiesEXT7$fStorablePhysicalDeviceExternalMemoryHostPropertiesEXT:$fFromCStructPhysicalDeviceExternalMemoryHostPropertiesEXT8$fToCStructPhysicalDeviceExternalMemoryHostPropertiesEXT1$fEqPhysicalDeviceExternalMemoryHostPropertiesEXT"$fEqMemoryHostPointerPropertiesEXT3$fShowPhysicalDeviceExternalMemoryHostPropertiesEXT$$fShowMemoryHostPointerPropertiesEXT$$fShowImportMemoryHostPointerInfoEXT+EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME)EXT_EXTENDED_DYNAMIC_STATE_2_SPEC_VERSION$sel:extendedDynamicState2:PhysicalDeviceExtendedDynamicState2FeaturesEXT$sel:extendedDynamicState2LogicOp:PhysicalDeviceExtendedDynamicState2FeaturesEXT$sel:extendedDynamicState2PatchControlPoints:PhysicalDeviceExtendedDynamicState2FeaturesEXT4$fZeroPhysicalDeviceExtendedDynamicState2FeaturesEXT8$fStorablePhysicalDeviceExtendedDynamicState2FeaturesEXT;$fFromCStructPhysicalDeviceExtendedDynamicState2FeaturesEXT9$fToCStructPhysicalDeviceExtendedDynamicState2FeaturesEXT2$fEqPhysicalDeviceExtendedDynamicState2FeaturesEXT4$fShowPhysicalDeviceExtendedDynamicState2FeaturesEXT%EXT_DISCARD_RECTANGLES_EXTENSION_NAME#EXT_DISCARD_RECTANGLES_SPEC_VERSION+PipelineDiscardRectangleStateCreateFlagsEXT5$sel:flags:PipelineDiscardRectangleStateCreateInfoEXT$sel:discardRectangleMode:PipelineDiscardRectangleStateCreateInfoEXT$sel:discardRectangles:PipelineDiscardRectangleStateCreateInfoEXT$sel:maxDiscardRectangles:PhysicalDeviceDiscardRectanglePropertiesEXT$DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT$DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT1$fZeroPhysicalDeviceDiscardRectanglePropertiesEXT5$fStorablePhysicalDeviceDiscardRectanglePropertiesEXT8$fFromCStructPhysicalDeviceDiscardRectanglePropertiesEXT6$fToCStructPhysicalDeviceDiscardRectanglePropertiesEXT1$fReadPipelineDiscardRectangleStateCreateFlagsEXT1$fShowPipelineDiscardRectangleStateCreateFlagsEXT$fReadDiscardRectangleModeEXT$fShowDiscardRectangleModeEXT0$fZeroPipelineDiscardRectangleStateCreateInfoEXT7$fFromCStructPipelineDiscardRectangleStateCreateInfoEXT5$fToCStructPipelineDiscardRectangleStateCreateInfoEXT$fEqDiscardRectangleModeEXT$fOrdDiscardRectangleModeEXT!$fStorableDiscardRectangleModeEXT$fZeroDiscardRectangleModeEXT/$fEqPipelineDiscardRectangleStateCreateFlagsEXT0$fOrdPipelineDiscardRectangleStateCreateFlagsEXT5$fStorablePipelineDiscardRectangleStateCreateFlagsEXT1$fZeroPipelineDiscardRectangleStateCreateFlagsEXT1$fBitsPipelineDiscardRectangleStateCreateFlagsEXT7$fFiniteBitsPipelineDiscardRectangleStateCreateFlagsEXT/$fEqPhysicalDeviceDiscardRectanglePropertiesEXT0$fShowPipelineDiscardRectangleStateCreateInfoEXT1$fShowPhysicalDeviceDiscardRectanglePropertiesEXT(EXT_CONDITIONAL_RENDERING_EXTENSION_NAME&EXT_CONDITIONAL_RENDERING_SPEC_VERSIONConditionalRenderingFlagBitsEXTConditionalRenderingFlagsEXT$sel:conditionalRendering:PhysicalDeviceConditionalRenderingFeaturesEXT$sel:inheritedConditionalRendering:PhysicalDeviceConditionalRenderingFeaturesEXT$sel:conditionalRenderingEnable:CommandBufferInheritanceConditionalRenderingInfoEXT,$sel:buffer:ConditionalRenderingBeginInfoEXT,$sel:offset:ConditionalRenderingBeginInfoEXT+$sel:flags:ConditionalRenderingBeginInfoEXT&CONDITIONAL_RENDERING_INVERTED_BIT_EXTcmdUseConditionalRenderingEXT9$fZeroCommandBufferInheritanceConditionalRenderingInfoEXT=$fStorableCommandBufferInheritanceConditionalRenderingInfoEXT$fFromCStructCommandBufferInheritanceConditionalRenderingInfoEXT>$fToCStructCommandBufferInheritanceConditionalRenderingInfoEXT3$fZeroPhysicalDeviceConditionalRenderingFeaturesEXT7$fStorablePhysicalDeviceConditionalRenderingFeaturesEXT:$fFromCStructPhysicalDeviceConditionalRenderingFeaturesEXT8$fToCStructPhysicalDeviceConditionalRenderingFeaturesEXT%$fReadConditionalRenderingFlagBitsEXT%$fShowConditionalRenderingFlagBitsEXT&$fZeroConditionalRenderingBeginInfoEXT*$fStorableConditionalRenderingBeginInfoEXT-$fFromCStructConditionalRenderingBeginInfoEXT+$fToCStructConditionalRenderingBeginInfoEXT$$fEqConditionalRenderingBeginInfoEXT#$fEqConditionalRenderingFlagBitsEXT$$fOrdConditionalRenderingFlagBitsEXT)$fStorableConditionalRenderingFlagBitsEXT%$fZeroConditionalRenderingFlagBitsEXT%$fBitsConditionalRenderingFlagBitsEXT+$fFiniteBitsConditionalRenderingFlagBitsEXT1$fEqPhysicalDeviceConditionalRenderingFeaturesEXT7$fEqCommandBufferInheritanceConditionalRenderingInfoEXT3$fShowPhysicalDeviceConditionalRenderingFeaturesEXT9$fShowCommandBufferInheritanceConditionalRenderingInfoEXT&$fShowConditionalRenderingBeginInfoEXT%EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME#EXT_COLOR_WRITE_ENABLE_SPEC_VERSION6$sel:colorWriteEnables:PipelineColorWriteCreateInfoEXT?$sel:colorWriteEnable:PhysicalDeviceColorWriteEnableFeaturesEXT/$fZeroPhysicalDeviceColorWriteEnableFeaturesEXT3$fStorablePhysicalDeviceColorWriteEnableFeaturesEXT6$fFromCStructPhysicalDeviceColorWriteEnableFeaturesEXT4$fToCStructPhysicalDeviceColorWriteEnableFeaturesEXT%$fZeroPipelineColorWriteCreateInfoEXT,$fFromCStructPipelineColorWriteCreateInfoEXT*$fToCStructPipelineColorWriteCreateInfoEXT-$fEqPhysicalDeviceColorWriteEnableFeaturesEXT%$fShowPipelineColorWriteCreateInfoEXT/$fShowPhysicalDeviceColorWriteEnableFeaturesEXT(EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME&EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION*$sel:timeDomain:CalibratedTimestampInfoEXT)TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT#TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXTTIME_DOMAIN_CLOCK_MONOTONIC_EXTTIME_DOMAIN_DEVICE_EXT$fReadTimeDomainEXT$fShowTimeDomainEXT $fZeroCalibratedTimestampInfoEXT$$fStorableCalibratedTimestampInfoEXT'$fFromCStructCalibratedTimestampInfoEXT%$fToCStructCalibratedTimestampInfoEXT$fEqCalibratedTimestampInfoEXT$fEqTimeDomainEXT$fOrdTimeDomainEXT$fStorableTimeDomainEXT$fZeroTimeDomainEXT $fShowCalibratedTimestampInfoEXTAMD_SHADER_INFO_EXTENSION_NAMEAMD_SHADER_INFO_SPEC_VERSION,$sel:shaderStageMask:ShaderStatisticsInfoAMD*$sel:resourceUsage:ShaderStatisticsInfoAMD-$sel:numPhysicalVgprs:ShaderStatisticsInfoAMD-$sel:numPhysicalSgprs:ShaderStatisticsInfoAMD.$sel:numAvailableVgprs:ShaderStatisticsInfoAMD.$sel:numAvailableSgprs:ShaderStatisticsInfoAMD1$sel:computeWorkGroupSize:ShaderStatisticsInfoAMD($sel:numUsedVgprs:ShaderResourceUsageAMD($sel:numUsedSgprs:ShaderResourceUsageAMD4$sel:ldsSizePerLocalWorkGroup:ShaderResourceUsageAMD/$sel:ldsUsageSizeInBytes:ShaderResourceUsageAMD2$sel:scratchMemUsageInBytes:ShaderResourceUsageAMD SHADER_INFO_TYPE_DISASSEMBLY_AMDSHADER_INFO_TYPE_BINARY_AMDSHADER_INFO_TYPE_STATISTICS_AMD$fZeroShaderResourceUsageAMD $fStorableShaderResourceUsageAMD#$fFromCStructShaderResourceUsageAMD!$fToCStructShaderResourceUsageAMD$fZeroShaderStatisticsInfoAMD!$fStorableShaderStatisticsInfoAMD$$fFromCStructShaderStatisticsInfoAMD"$fToCStructShaderStatisticsInfoAMD$fReadShaderInfoTypeAMD$fShowShaderInfoTypeAMD$fEqShaderInfoTypeAMD$fOrdShaderInfoTypeAMD$fStorableShaderInfoTypeAMD$fZeroShaderInfoTypeAMD$fEqShaderResourceUsageAMD$fShowShaderStatisticsInfoAMD$fShowShaderResourceUsageAMD AMD_BUFFER_MARKER_EXTENSION_NAMEAMD_BUFFER_MARKER_SPEC_VERSION"$sel:semaphore:SemaphoreSignalInfo$sel:value:SemaphoreSignalInfo$sel:flags:SemaphoreWaitInfo!$sel:semaphores:SemaphoreWaitInfo$sel:values:SemaphoreWaitInfo8$sel:waitSemaphoreValueCount:TimelineSemaphoreSubmitInfo4$sel:waitSemaphoreValues:TimelineSemaphoreSubmitInfo:$sel:signalSemaphoreValueCount:TimelineSemaphoreSubmitInfo6$sel:signalSemaphoreValues:TimelineSemaphoreSubmitInfo*$sel:semaphoreType:SemaphoreTypeCreateInfo)$sel:initialValue:SemaphoreTypeCreateInfo$sel:maxTimelineSemaphoreValueDifference:PhysicalDeviceTimelineSemaphoreProperties>$sel:timelineSemaphore:PhysicalDeviceTimelineSemaphoreFeatureswaitSemaphoresSafe-$fZeroPhysicalDeviceTimelineSemaphoreFeatures1$fStorablePhysicalDeviceTimelineSemaphoreFeatures4$fFromCStructPhysicalDeviceTimelineSemaphoreFeatures2$fToCStructPhysicalDeviceTimelineSemaphoreFeatures/$fZeroPhysicalDeviceTimelineSemaphoreProperties3$fStorablePhysicalDeviceTimelineSemaphoreProperties6$fFromCStructPhysicalDeviceTimelineSemaphoreProperties4$fToCStructPhysicalDeviceTimelineSemaphoreProperties$fZeroSemaphoreTypeCreateInfo!$fStorableSemaphoreTypeCreateInfo$$fFromCStructSemaphoreTypeCreateInfo"$fToCStructSemaphoreTypeCreateInfo!$fZeroTimelineSemaphoreSubmitInfo($fFromCStructTimelineSemaphoreSubmitInfo&$fToCStructTimelineSemaphoreSubmitInfo$fZeroSemaphoreWaitInfo$fFromCStructSemaphoreWaitInfo$fToCStructSemaphoreWaitInfo$fZeroSemaphoreSignalInfo$fStorableSemaphoreSignalInfo $fFromCStructSemaphoreSignalInfo$fToCStructSemaphoreSignalInfo$fEqSemaphoreSignalInfo$fEqSemaphoreTypeCreateInfo-$fEqPhysicalDeviceTimelineSemaphoreProperties+$fEqPhysicalDeviceTimelineSemaphoreFeatures$fShowSemaphoreSignalInfo$fShowSemaphoreWaitInfo!$fShowTimelineSemaphoreSubmitInfo$fShowSemaphoreTypeCreateInfo/$fShowPhysicalDeviceTimelineSemaphoreProperties-$fShowPhysicalDeviceTimelineSemaphoreFeatures%KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME#KHR_TIMELINE_SEMAPHORE_SPEC_VERSIONSemaphoreSignalInfoKHRSemaphoreWaitInfoKHRTimelineSemaphoreSubmitInfoKHRSemaphoreTypeCreateInfoKHR,PhysicalDeviceTimelineSemaphorePropertiesKHR*PhysicalDeviceTimelineSemaphoreFeaturesKHRSemaphoreWaitFlagBitsKHRSemaphoreWaitFlagsKHRSEMAPHORE_WAIT_ANY_BIT_KHRSEMAPHORE_TYPE_TIMELINE_KHR(STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR&STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR1STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR-STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHRSTRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR>STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR.$sel:attachments:RenderPassAttachmentBeginInfo)$sel:flags:FramebufferAttachmentImageInfo)$sel:usage:FramebufferAttachmentImageInfo)$sel:width:FramebufferAttachmentImageInfo*$sel:height:FramebufferAttachmentImageInfo.$sel:layerCount:FramebufferAttachmentImageInfo/$sel:viewFormats:FramebufferAttachmentImageInfo:$sel:attachmentImageInfos:FramebufferAttachmentsCreateInfo$sel:imagelessFramebuffer:PhysicalDeviceImagelessFramebufferFeatures0$fZeroPhysicalDeviceImagelessFramebufferFeatures4$fStorablePhysicalDeviceImagelessFramebufferFeatures7$fFromCStructPhysicalDeviceImagelessFramebufferFeatures5$fToCStructPhysicalDeviceImagelessFramebufferFeatures$$fZeroFramebufferAttachmentImageInfo+$fFromCStructFramebufferAttachmentImageInfo)$fToCStructFramebufferAttachmentImageInfo&$fZeroFramebufferAttachmentsCreateInfo-$fFromCStructFramebufferAttachmentsCreateInfo+$fToCStructFramebufferAttachmentsCreateInfo#$fZeroRenderPassAttachmentBeginInfo*$fFromCStructRenderPassAttachmentBeginInfo($fToCStructRenderPassAttachmentBeginInfo.$fEqPhysicalDeviceImagelessFramebufferFeatures#$fShowRenderPassAttachmentBeginInfo$$fShowFramebufferAttachmentImageInfo&$fShowFramebufferAttachmentsCreateInfo0$fShowPhysicalDeviceImagelessFramebufferFeatures(KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME&KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION RenderPassAttachmentBeginInfoKHR!FramebufferAttachmentImageInfoKHR#FramebufferAttachmentsCreateInfoKHR-PhysicalDeviceImagelessFramebufferFeaturesKHR$FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR4STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR4STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR6STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHRSTRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR&KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME$KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION&AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME$AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION0$sel:memory:DeviceMemoryOpaqueCaptureAddressInfo$sel:opaqueCaptureAddress:MemoryOpaqueCaptureAddressAllocateInfo>$sel:opaqueCaptureAddress:BufferOpaqueCaptureAddressCreateInfo#$sel:buffer:BufferDeviceAddressInfo$sel:bufferDeviceAddress:PhysicalDeviceBufferDeviceAddressFeatures$sel:bufferDeviceAddressCaptureReplay:PhysicalDeviceBufferDeviceAddressFeatures$sel:bufferDeviceAddressMultiDevice:PhysicalDeviceBufferDeviceAddressFeatures/$fZeroPhysicalDeviceBufferDeviceAddressFeatures3$fStorablePhysicalDeviceBufferDeviceAddressFeatures6$fFromCStructPhysicalDeviceBufferDeviceAddressFeatures4$fToCStructPhysicalDeviceBufferDeviceAddressFeatures$fZeroBufferDeviceAddressInfo!$fStorableBufferDeviceAddressInfo$$fFromCStructBufferDeviceAddressInfo"$fToCStructBufferDeviceAddressInfo*$fZeroBufferOpaqueCaptureAddressCreateInfo.$fStorableBufferOpaqueCaptureAddressCreateInfo1$fFromCStructBufferOpaqueCaptureAddressCreateInfo/$fToCStructBufferOpaqueCaptureAddressCreateInfo,$fZeroMemoryOpaqueCaptureAddressAllocateInfo0$fStorableMemoryOpaqueCaptureAddressAllocateInfo3$fFromCStructMemoryOpaqueCaptureAddressAllocateInfo1$fToCStructMemoryOpaqueCaptureAddressAllocateInfo*$fZeroDeviceMemoryOpaqueCaptureAddressInfo.$fStorableDeviceMemoryOpaqueCaptureAddressInfo1$fFromCStructDeviceMemoryOpaqueCaptureAddressInfo/$fToCStructDeviceMemoryOpaqueCaptureAddressInfo($fEqDeviceMemoryOpaqueCaptureAddressInfo*$fEqMemoryOpaqueCaptureAddressAllocateInfo($fEqBufferOpaqueCaptureAddressCreateInfo$fEqBufferDeviceAddressInfo-$fEqPhysicalDeviceBufferDeviceAddressFeatures*$fShowDeviceMemoryOpaqueCaptureAddressInfo,$fShowMemoryOpaqueCaptureAddressAllocateInfo*$fShowBufferOpaqueCaptureAddressCreateInfo$fShowBufferDeviceAddressInfo/$fShowPhysicalDeviceBufferDeviceAddressFeatures(KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME&KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION'DeviceMemoryOpaqueCaptureAddressInfoKHR)MemoryOpaqueCaptureAddressAllocateInfoKHR'BufferOpaqueCaptureAddressCreateInfoKHRBufferDeviceAddressInfoKHR,PhysicalDeviceBufferDeviceAddressFeaturesKHR5MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR&MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR3BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR*BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHRSTRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR$fToCStructCommandBufferInheritanceRenderPassTransformInfoQCOM$$fEqRenderPassTransformBeginInfoQCOM9$fShowCommandBufferInheritanceRenderPassTransformInfoQCOM&$fShowRenderPassTransformBeginInfoQCOMKHR_SWAPCHAIN_EXTENSION_NAMEKHR_SWAPCHAIN_SPEC_VERSIONSwapchainCreateFlagBitsKHRSwapchainCreateFlagsKHR,$sel:modes:DeviceGroupSwapchainCreateInfoKHR*$sel:deviceMasks:DeviceGroupPresentInfoKHR#$sel:mode:DeviceGroupPresentInfoKHR&$sel:swapchain:AcquireNextImageInfoKHR$$sel:timeout:AcquireNextImageInfoKHR&$sel:semaphore:AcquireNextImageInfoKHR"$sel:fence:AcquireNextImageInfoKHR'$sel:deviceMask:AcquireNextImageInfoKHR.$sel:swapchain:BindImageMemorySwapchainInfoKHR/$sel:imageIndex:BindImageMemorySwapchainInfoKHR*$sel:swapchain:ImageSwapchainCreateInfoKHR2$sel:presentMask:DeviceGroupPresentCapabilitiesKHR,$sel:modes:DeviceGroupPresentCapabilitiesKHR$sel:next:PresentInfoKHR"$sel:waitSemaphores:PresentInfoKHR$sel:swapchains:PresentInfoKHR $sel:imageIndices:PresentInfoKHR$sel:results:PresentInfoKHR $sel:next:SwapchainCreateInfoKHR!$sel:flags:SwapchainCreateInfoKHR#$sel:surface:SwapchainCreateInfoKHR)$sel:minImageCount:SwapchainCreateInfoKHR'$sel:imageFormat:SwapchainCreateInfoKHR+$sel:imageColorSpace:SwapchainCreateInfoKHR'$sel:imageExtent:SwapchainCreateInfoKHR,$sel:imageArrayLayers:SwapchainCreateInfoKHR&$sel:imageUsage:SwapchainCreateInfoKHR,$sel:imageSharingMode:SwapchainCreateInfoKHR.$sel:queueFamilyIndices:SwapchainCreateInfoKHR($sel:preTransform:SwapchainCreateInfoKHR*$sel:compositeAlpha:SwapchainCreateInfoKHR'$sel:presentMode:SwapchainCreateInfoKHR#$sel:clipped:SwapchainCreateInfoKHR($sel:oldSwapchain:SwapchainCreateInfoKHR4SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR'SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR4DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR%DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR(DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR'DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHRwithSwapchainKHRacquireNextImageKHRSafeacquireNextImage2KHRSafe$fZeroPresentInfoKHR$fFromCStructPresentInfoKHR$fToCStructPresentInfoKHR!$fZeroImageSwapchainCreateInfoKHR%$fStorableImageSwapchainCreateInfoKHR($fFromCStructImageSwapchainCreateInfoKHR&$fToCStructImageSwapchainCreateInfoKHR%$fZeroBindImageMemorySwapchainInfoKHR)$fStorableBindImageMemorySwapchainInfoKHR,$fFromCStructBindImageMemorySwapchainInfoKHR*$fToCStructBindImageMemorySwapchainInfoKHR$fZeroAcquireNextImageInfoKHR!$fStorableAcquireNextImageInfoKHR$$fFromCStructAcquireNextImageInfoKHR"$fToCStructAcquireNextImageInfoKHR'$fReadDeviceGroupPresentModeFlagBitsKHR'$fShowDeviceGroupPresentModeFlagBitsKHR'$fZeroDeviceGroupSwapchainCreateInfoKHR+$fStorableDeviceGroupSwapchainCreateInfoKHR.$fFromCStructDeviceGroupSwapchainCreateInfoKHR,$fToCStructDeviceGroupSwapchainCreateInfoKHR'$fZeroDeviceGroupPresentCapabilitiesKHR+$fStorableDeviceGroupPresentCapabilitiesKHR.$fFromCStructDeviceGroupPresentCapabilitiesKHR,$fToCStructDeviceGroupPresentCapabilitiesKHR$fZeroDeviceGroupPresentInfoKHR&$fFromCStructDeviceGroupPresentInfoKHR$$fToCStructDeviceGroupPresentInfoKHR$fExtensiblePresentInfoKHR $fReadSwapchainCreateFlagBitsKHR $fShowSwapchainCreateFlagBitsKHR$fZeroSwapchainCreateInfoKHR#$fFromCStructSwapchainCreateInfoKHR!$fToCStructSwapchainCreateInfoKHR"$fExtensibleSwapchainCreateInfoKHR$fEqSwapchainCreateFlagBitsKHR$fOrdSwapchainCreateFlagBitsKHR$$fStorableSwapchainCreateFlagBitsKHR $fZeroSwapchainCreateFlagBitsKHR $fBitsSwapchainCreateFlagBitsKHR&$fFiniteBitsSwapchainCreateFlagBitsKHR%$fEqDeviceGroupSwapchainCreateInfoKHR%$fEqDeviceGroupPresentModeFlagBitsKHR&$fOrdDeviceGroupPresentModeFlagBitsKHR+$fStorableDeviceGroupPresentModeFlagBitsKHR'$fZeroDeviceGroupPresentModeFlagBitsKHR'$fBitsDeviceGroupPresentModeFlagBitsKHR-$fFiniteBitsDeviceGroupPresentModeFlagBitsKHR$fEqAcquireNextImageInfoKHR#$fEqBindImageMemorySwapchainInfoKHR$fEqImageSwapchainCreateInfoKHR'$fShowDeviceGroupSwapchainCreateInfoKHR$fShowDeviceGroupPresentInfoKHR$fShowAcquireNextImageInfoKHR%$fShowBindImageMemorySwapchainInfoKHR!$fShowImageSwapchainCreateInfoKHR'$fShowDeviceGroupPresentCapabilitiesKHR$fShowPresentInfoKHR$fShowSwapchainCreateInfoKHR+KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME)KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION(EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME&EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION+KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME)KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION$sel:sharedPresentSupportedUsageFlags:SharedPresentSurfaceCapabilitiesKHR)$fZeroSharedPresentSurfaceCapabilitiesKHR-$fStorableSharedPresentSurfaceCapabilitiesKHR0$fFromCStructSharedPresentSurfaceCapabilitiesKHR.$fToCStructSharedPresentSurfaceCapabilitiesKHR'$fEqSharedPresentSurfaceCapabilitiesKHR)$fShowSharedPresentSurfaceCapabilitiesKHRKHR_PRESENT_WAIT_EXTENSION_NAMEKHR_PRESENT_WAIT_SPEC_VERSION5$sel:presentWait:PhysicalDevicePresentWaitFeaturesKHRwaitForPresentKHRSafe*$fZeroPhysicalDevicePresentWaitFeaturesKHR.$fStorablePhysicalDevicePresentWaitFeaturesKHR1$fFromCStructPhysicalDevicePresentWaitFeaturesKHR/$fToCStructPhysicalDevicePresentWaitFeaturesKHR($fEqPhysicalDevicePresentWaitFeaturesKHR*$fShowPhysicalDevicePresentWaitFeaturesKHR-KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME+KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION$$sel:surfaceFormat:SurfaceFormat2KHR!$sel:next:SurfaceCapabilities2KHR0$sel:surfaceCapabilities:SurfaceCapabilities2KHR'$sel:next:PhysicalDeviceSurfaceInfo2KHR*$sel:surface:PhysicalDeviceSurfaceInfo2KHR#$fZeroPhysicalDeviceSurfaceInfo2KHR*$fFromCStructPhysicalDeviceSurfaceInfo2KHR($fToCStructPhysicalDeviceSurfaceInfo2KHR)$fExtensiblePhysicalDeviceSurfaceInfo2KHR$fZeroSurfaceCapabilities2KHR$$fFromCStructSurfaceCapabilities2KHR"$fToCStructSurfaceCapabilities2KHR#$fExtensibleSurfaceCapabilities2KHR$fZeroSurfaceFormat2KHR$fStorableSurfaceFormat2KHR$fFromCStructSurfaceFormat2KHR$fToCStructSurfaceFormat2KHR$fShowSurfaceFormat2KHR$fShowSurfaceCapabilities2KHR#$fShowPhysicalDeviceSurfaceInfo2KHR$KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME"KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION"$sel:srcRect:DisplayPresentInfoKHR"$sel:dstRect:DisplayPresentInfoKHR%$sel:persistent:DisplayPresentInfoKHR$fZeroDisplayPresentInfoKHR$fStorableDisplayPresentInfoKHR"$fFromCStructDisplayPresentInfoKHR $fToCStructDisplayPresentInfoKHR$fShowDisplayPresentInfoKHRKHR_DISPLAY_EXTENSION_NAMEKHR_DISPLAY_SPEC_VERSIONDisplayPlaneAlphaFlagBitsKHRDisplayPlaneAlphaFlagsKHRDisplaySurfaceCreateFlagsKHRDisplayModeCreateFlagsKHR&$sel:flags:DisplaySurfaceCreateInfoKHR,$sel:displayMode:DisplaySurfaceCreateInfoKHR+$sel:planeIndex:DisplaySurfaceCreateInfoKHR0$sel:planeStackIndex:DisplaySurfaceCreateInfoKHR*$sel:transform:DisplaySurfaceCreateInfoKHR,$sel:globalAlpha:DisplaySurfaceCreateInfoKHR*$sel:alphaMode:DisplaySurfaceCreateInfoKHR,$sel:imageExtent:DisplaySurfaceCreateInfoKHR/$sel:supportedAlpha:DisplayPlaneCapabilitiesKHR/$sel:minSrcPosition:DisplayPlaneCapabilitiesKHR/$sel:maxSrcPosition:DisplayPlaneCapabilitiesKHR-$sel:minSrcExtent:DisplayPlaneCapabilitiesKHR-$sel:maxSrcExtent:DisplayPlaneCapabilitiesKHR/$sel:minDstPosition:DisplayPlaneCapabilitiesKHR/$sel:maxDstPosition:DisplayPlaneCapabilitiesKHR-$sel:minDstExtent:DisplayPlaneCapabilitiesKHR-$sel:maxDstExtent:DisplayPlaneCapabilitiesKHR#$sel:flags:DisplayModeCreateInfoKHR($sel:parameters:DisplayModeCreateInfoKHR)$sel:displayMode:DisplayModePropertiesKHR($sel:parameters:DisplayModePropertiesKHR+$sel:visibleRegion:DisplayModeParametersKHR)$sel:refreshRate:DisplayModeParametersKHR-$sel:currentDisplay:DisplayPlanePropertiesKHR0$sel:currentStackIndex:DisplayPlanePropertiesKHR!$sel:display:DisplayPropertiesKHR%$sel:displayName:DisplayPropertiesKHR,$sel:physicalDimensions:DisplayPropertiesKHR,$sel:physicalResolution:DisplayPropertiesKHR-$sel:supportedTransforms:DisplayPropertiesKHR.$sel:planeReorderPossible:DisplayPropertiesKHR+$sel:persistentContent:DisplayPropertiesKHR3DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR%DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR"DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR"DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR$fZeroDisplayPropertiesKHR!$fFromCStructDisplayPropertiesKHR$fToCStructDisplayPropertiesKHR$fZeroDisplayPlanePropertiesKHR#$fStorableDisplayPlanePropertiesKHR&$fFromCStructDisplayPlanePropertiesKHR$$fToCStructDisplayPlanePropertiesKHR$fZeroDisplayModeParametersKHR"$fStorableDisplayModeParametersKHR%$fFromCStructDisplayModeParametersKHR#$fToCStructDisplayModeParametersKHR$fZeroDisplayModePropertiesKHR"$fStorableDisplayModePropertiesKHR%$fFromCStructDisplayModePropertiesKHR#$fToCStructDisplayModePropertiesKHR$fReadDisplayModeCreateFlagsKHR$fShowDisplayModeCreateFlagsKHR$fZeroDisplayModeCreateInfoKHR"$fStorableDisplayModeCreateInfoKHR%$fFromCStructDisplayModeCreateInfoKHR#$fToCStructDisplayModeCreateInfoKHR"$fReadDisplaySurfaceCreateFlagsKHR"$fShowDisplaySurfaceCreateFlagsKHR"$fReadDisplayPlaneAlphaFlagBitsKHR"$fShowDisplayPlaneAlphaFlagBitsKHR!$fZeroDisplayPlaneCapabilitiesKHR%$fStorableDisplayPlaneCapabilitiesKHR($fFromCStructDisplayPlaneCapabilitiesKHR&$fToCStructDisplayPlaneCapabilitiesKHR!$fZeroDisplaySurfaceCreateInfoKHR%$fStorableDisplaySurfaceCreateInfoKHR($fFromCStructDisplaySurfaceCreateInfoKHR&$fToCStructDisplaySurfaceCreateInfoKHR $fEqDisplayPlaneAlphaFlagBitsKHR!$fOrdDisplayPlaneAlphaFlagBitsKHR&$fStorableDisplayPlaneAlphaFlagBitsKHR"$fZeroDisplayPlaneAlphaFlagBitsKHR"$fBitsDisplayPlaneAlphaFlagBitsKHR($fFiniteBitsDisplayPlaneAlphaFlagBitsKHR $fEqDisplaySurfaceCreateFlagsKHR!$fOrdDisplaySurfaceCreateFlagsKHR&$fStorableDisplaySurfaceCreateFlagsKHR"$fZeroDisplaySurfaceCreateFlagsKHR"$fBitsDisplaySurfaceCreateFlagsKHR($fFiniteBitsDisplaySurfaceCreateFlagsKHR$fEqDisplayModeCreateFlagsKHR$fOrdDisplayModeCreateFlagsKHR#$fStorableDisplayModeCreateFlagsKHR$fZeroDisplayModeCreateFlagsKHR$fBitsDisplayModeCreateFlagsKHR%$fFiniteBitsDisplayModeCreateFlagsKHR$fEqDisplayPlanePropertiesKHR!$fShowDisplaySurfaceCreateInfoKHR!$fShowDisplayPlaneCapabilitiesKHR$fShowDisplayModeCreateInfoKHR$fShowDisplayModePropertiesKHR$fShowDisplayModeParametersKHR$fShowDisplayPlanePropertiesKHR$fShowDisplayPropertiesKHR+KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME)KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION.$sel:capabilities:DisplayPlaneCapabilities2KHR$sel:mode:DisplayPlaneInfo2KHR$$sel:planeIndex:DisplayPlaneInfo2KHR4$sel:displayModeProperties:DisplayModeProperties2KHR6$sel:displayPlaneProperties:DisplayPlaneProperties2KHR,$sel:displayProperties:DisplayProperties2KHR$fZeroDisplayProperties2KHR"$fFromCStructDisplayProperties2KHR $fToCStructDisplayProperties2KHR $fZeroDisplayPlaneProperties2KHR$$fStorableDisplayPlaneProperties2KHR'$fFromCStructDisplayPlaneProperties2KHR%$fToCStructDisplayPlaneProperties2KHR$fZeroDisplayModeProperties2KHR#$fStorableDisplayModeProperties2KHR&$fFromCStructDisplayModeProperties2KHR$$fToCStructDisplayModeProperties2KHR$fZeroDisplayPlaneInfo2KHR$fStorableDisplayPlaneInfo2KHR!$fFromCStructDisplayPlaneInfo2KHR$fToCStructDisplayPlaneInfo2KHR"$fZeroDisplayPlaneCapabilities2KHR&$fStorableDisplayPlaneCapabilities2KHR)$fFromCStructDisplayPlaneCapabilities2KHR'$fToCStructDisplayPlaneCapabilities2KHR$fEqDisplayPlaneInfo2KHR"$fShowDisplayPlaneCapabilities2KHR$fShowDisplayPlaneInfo2KHR$fShowDisplayModeProperties2KHR $fShowDisplayPlaneProperties2KHR$fShowDisplayProperties2KHRKHR_DEVICE_GROUP_EXTENSION_NAMEKHR_DEVICE_GROUP_SPEC_VERSIONDeviceGroupBindSparseInfoKHRDeviceGroupSubmitInfoKHR$DeviceGroupCommandBufferBeginInfoKHR!DeviceGroupRenderPassBeginInfoKHR!BindImageMemoryDeviceGroupInfoKHR"BindBufferMemoryDeviceGroupInfoKHRMemoryAllocateFlagsInfoKHRMemoryAllocateFlagBitsKHRPeerMemoryFeatureFlagBitsKHRMemoryAllocateFlagsKHRPeerMemoryFeatureFlagsKHR0IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR6STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR7STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHRDEPENDENCY_DEVICE_GROUP_BIT_KHR!PIPELINE_CREATE_DISPATCH_BASE_KHR4PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR#MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR'PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR'PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR$PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR$PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR0STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR+STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR9STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR6STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR-STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR+KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME)KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSIONwithDeferredOperationKHR ANativeWindow"KHR_ANDROID_SURFACE_EXTENSION_NAME KHR_ANDROID_SURFACE_SPEC_VERSIONAndroidSurfaceCreateFlagsKHR&$sel:flags:AndroidSurfaceCreateInfoKHR'$sel:window:AndroidSurfaceCreateInfoKHR"$fReadAndroidSurfaceCreateFlagsKHR"$fShowAndroidSurfaceCreateFlagsKHR!$fZeroAndroidSurfaceCreateInfoKHR%$fStorableAndroidSurfaceCreateInfoKHR($fFromCStructAndroidSurfaceCreateInfoKHR&$fToCStructAndroidSurfaceCreateInfoKHR$fEqAndroidSurfaceCreateInfoKHR $fEqAndroidSurfaceCreateFlagsKHR!$fOrdAndroidSurfaceCreateFlagsKHR&$fStorableAndroidSurfaceCreateFlagsKHR"$fZeroAndroidSurfaceCreateFlagsKHR"$fBitsAndroidSurfaceCreateFlagsKHR($fFiniteBitsAndroidSurfaceCreateFlagsKHR!$fShowAndroidSurfaceCreateInfoKHR&INTEL_PERFORMANCE_QUERY_EXTENSION_NAME$INTEL_PERFORMANCE_QUERY_SPEC_VERSIONQueryPoolCreateInfoINTELPerformanceValueTypeINTELPerformanceOverrideTypeINTELQueryPoolSamplingModeINTEL!PerformanceConfigurationTypeINTELValue32Value64 ValueFloat ValueBool ValueString3$sel:type':PerformanceConfigurationAcquireInfoINTEL'$sel:type':PerformanceOverrideInfoINTEL($sel:enable:PerformanceOverrideInfoINTEL+$sel:parameter:PerformanceOverrideInfoINTEL,$sel:marker:PerformanceStreamMarkerInfoINTEL&$sel:marker:PerformanceMarkerInfoINTEL$sel:performanceCountersSampling:QueryPoolPerformanceQueryCreateInfoINTEL/$sel:userData:InitializePerformanceApiInfoINTEL $sel:type':PerformanceValueINTEL $sel:data':PerformanceValueINTEL#PERFORMANCE_VALUE_TYPE_STRING_INTEL!PERFORMANCE_VALUE_TYPE_BOOL_INTEL"PERFORMANCE_VALUE_TYPE_FLOAT_INTEL#PERFORMANCE_VALUE_TYPE_UINT64_INTEL#PERFORMANCE_VALUE_TYPE_UINT32_INTEL9PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL6PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL0PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL-PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL%QUERY_POOL_SAMPLING_MODE_MANUAL_INTELPERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL+STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTELpeekPerformanceValueDataINTEL'$fZeroInitializePerformanceApiInfoINTEL+$fStorableInitializePerformanceApiInfoINTEL.$fFromCStructInitializePerformanceApiInfoINTEL,$fToCStructInitializePerformanceApiInfoINTEL $fZeroPerformanceMarkerInfoINTEL$$fStorablePerformanceMarkerInfoINTEL'$fFromCStructPerformanceMarkerInfoINTEL%$fToCStructPerformanceMarkerInfoINTEL&$fZeroPerformanceStreamMarkerInfoINTEL*$fStorablePerformanceStreamMarkerInfoINTEL-$fFromCStructPerformanceStreamMarkerInfoINTEL+$fToCStructPerformanceStreamMarkerInfoINTEL$fZeroPerformanceValueDataINTEL$$fToCStructPerformanceValueDataINTEL'$fReadPerformanceConfigurationTypeINTEL'$fShowPerformanceConfigurationTypeINTEL.$fZeroPerformanceConfigurationAcquireInfoINTEL2$fStorablePerformanceConfigurationAcquireInfoINTEL5$fFromCStructPerformanceConfigurationAcquireInfoINTEL3$fToCStructPerformanceConfigurationAcquireInfoINTEL $fReadQueryPoolSamplingModeINTEL $fShowQueryPoolSamplingModeINTEL.$fZeroQueryPoolPerformanceQueryCreateInfoINTEL2$fStorableQueryPoolPerformanceQueryCreateInfoINTEL5$fFromCStructQueryPoolPerformanceQueryCreateInfoINTEL3$fToCStructQueryPoolPerformanceQueryCreateInfoINTEL"$fReadPerformanceOverrideTypeINTEL"$fShowPerformanceOverrideTypeINTEL"$fZeroPerformanceOverrideInfoINTEL&$fStorablePerformanceOverrideInfoINTEL)$fFromCStructPerformanceOverrideInfoINTEL'$fToCStructPerformanceOverrideInfoINTEL#$fReadPerformanceParameterTypeINTEL#$fShowPerformanceParameterTypeINTEL$fReadPerformanceValueTypeINTEL$fShowPerformanceValueTypeINTEL$fZeroPerformanceValueINTEL"$fFromCStructPerformanceValueINTEL $fToCStructPerformanceValueINTEL$fEqPerformanceValueTypeINTEL$fOrdPerformanceValueTypeINTEL#$fStorablePerformanceValueTypeINTEL$fZeroPerformanceValueTypeINTEL!$fEqPerformanceParameterTypeINTEL"$fOrdPerformanceParameterTypeINTEL'$fStorablePerformanceParameterTypeINTEL#$fZeroPerformanceParameterTypeINTEL $fEqPerformanceOverrideInfoINTEL $fEqPerformanceOverrideTypeINTEL!$fOrdPerformanceOverrideTypeINTEL&$fStorablePerformanceOverrideTypeINTEL"$fZeroPerformanceOverrideTypeINTEL,$fEqQueryPoolPerformanceQueryCreateInfoINTEL$fEqQueryPoolSamplingModeINTEL$fOrdQueryPoolSamplingModeINTEL$$fStorableQueryPoolSamplingModeINTEL $fZeroQueryPoolSamplingModeINTEL,$fEqPerformanceConfigurationAcquireInfoINTEL%$fEqPerformanceConfigurationTypeINTEL&$fOrdPerformanceConfigurationTypeINTEL+$fStorablePerformanceConfigurationTypeINTEL'$fZeroPerformanceConfigurationTypeINTEL$fShowPerformanceValueDataINTEL$$fEqPerformanceStreamMarkerInfoINTEL$fEqPerformanceMarkerInfoINTEL.$fShowPerformanceConfigurationAcquireInfoINTEL"$fShowPerformanceOverrideInfoINTEL&$fShowPerformanceStreamMarkerInfoINTEL $fShowPerformanceMarkerInfoINTEL.$fShowQueryPoolPerformanceQueryCreateInfoINTEL'$fShowInitializePerformanceApiInfoINTEL$fShowPerformanceValueINTEL$GOOGLE_DISPLAY_TIMING_EXTENSION_NAME"GOOGLE_DISPLAY_TIMING_SPEC_VERSION $sel:presentID:PresentTimeGOOGLE)$sel:desiredPresentTime:PresentTimeGOOGLE*$sel:swapchainCount:PresentTimesInfoGOOGLE!$sel:times:PresentTimesInfoGOOGLE+$sel:presentID:PastPresentationTimingGOOGLE4$sel:desiredPresentTime:PastPresentationTimingGOOGLE3$sel:actualPresentTime:PastPresentationTimingGOOGLE5$sel:earliestPresentTime:PastPresentationTimingGOOGLE/$sel:presentMargin:PastPresentationTimingGOOGLE/$sel:refreshDuration:RefreshCycleDurationGOOGLE $fZeroRefreshCycleDurationGOOGLE$$fStorableRefreshCycleDurationGOOGLE'$fFromCStructRefreshCycleDurationGOOGLE%$fToCStructRefreshCycleDurationGOOGLE"$fZeroPastPresentationTimingGOOGLE&$fStorablePastPresentationTimingGOOGLE)$fFromCStructPastPresentationTimingGOOGLE'$fToCStructPastPresentationTimingGOOGLE$fZeroPresentTimeGOOGLE$fStorablePresentTimeGOOGLE$fFromCStructPresentTimeGOOGLE$fToCStructPresentTimeGOOGLE$fZeroPresentTimesInfoGOOGLE#$fFromCStructPresentTimesInfoGOOGLE!$fToCStructPresentTimesInfoGOOGLE$fEqPresentTimeGOOGLE $fEqPastPresentationTimingGOOGLE$fEqRefreshCycleDurationGOOGLE$fShowPresentTimeGOOGLE$fShowPresentTimesInfoGOOGLE"$fShowPastPresentationTimingGOOGLE $fShowRefreshCycleDurationGOOGLEGgpStreamDescriptor,GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME*GGP_STREAM_DESCRIPTOR_SURFACE_SPEC_VERSION%StreamDescriptorSurfaceCreateFlagsGGP/$sel:flags:StreamDescriptorSurfaceCreateInfoGGP:$sel:streamDescriptor:StreamDescriptorSurfaceCreateInfoGGP+$fReadStreamDescriptorSurfaceCreateFlagsGGP+$fShowStreamDescriptorSurfaceCreateFlagsGGP*$fZeroStreamDescriptorSurfaceCreateInfoGGP.$fStorableStreamDescriptorSurfaceCreateInfoGGP1$fFromCStructStreamDescriptorSurfaceCreateInfoGGP/$fToCStructStreamDescriptorSurfaceCreateInfoGGP($fEqStreamDescriptorSurfaceCreateInfoGGP)$fEqStreamDescriptorSurfaceCreateFlagsGGP*$fOrdStreamDescriptorSurfaceCreateFlagsGGP/$fStorableStreamDescriptorSurfaceCreateFlagsGGP+$fZeroStreamDescriptorSurfaceCreateFlagsGGP+$fBitsStreamDescriptorSurfaceCreateFlagsGGP1$fFiniteBitsStreamDescriptorSurfaceCreateFlagsGGP*$fShowStreamDescriptorSurfaceCreateInfoGGP(FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME&FUCHSIA_IMAGEPIPE_SURFACE_SPEC_VERSION"ImagePipeSurfaceCreateFlagsFUCHSIA,$sel:flags:ImagePipeSurfaceCreateInfoFUCHSIA6$sel:imagePipeHandle:ImagePipeSurfaceCreateInfoFUCHSIA($fReadImagePipeSurfaceCreateFlagsFUCHSIA($fShowImagePipeSurfaceCreateFlagsFUCHSIA'$fZeroImagePipeSurfaceCreateInfoFUCHSIA+$fStorableImagePipeSurfaceCreateInfoFUCHSIA.$fFromCStructImagePipeSurfaceCreateInfoFUCHSIA,$fToCStructImagePipeSurfaceCreateInfoFUCHSIA%$fEqImagePipeSurfaceCreateInfoFUCHSIA&$fEqImagePipeSurfaceCreateFlagsFUCHSIA'$fOrdImagePipeSurfaceCreateFlagsFUCHSIA,$fStorableImagePipeSurfaceCreateFlagsFUCHSIA($fZeroImagePipeSurfaceCreateFlagsFUCHSIA($fBitsImagePipeSurfaceCreateFlagsFUCHSIA.$fFiniteBitsImagePipeSurfaceCreateFlagsFUCHSIA'$fShowImagePipeSurfaceCreateInfoFUCHSIA)FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME'FUCHSIA_EXTERNAL_SEMAPHORE_SPEC_VERSION2$sel:semaphore:SemaphoreGetZirconHandleInfoFUCHSIA3$sel:handleType:SemaphoreGetZirconHandleInfoFUCHSIA5$sel:semaphore:ImportSemaphoreZirconHandleInfoFUCHSIA1$sel:flags:ImportSemaphoreZirconHandleInfoFUCHSIA6$sel:handleType:ImportSemaphoreZirconHandleInfoFUCHSIA8$sel:zirconHandle:ImportSemaphoreZirconHandleInfoFUCHSIA,$fZeroImportSemaphoreZirconHandleInfoFUCHSIA0$fStorableImportSemaphoreZirconHandleInfoFUCHSIA3$fFromCStructImportSemaphoreZirconHandleInfoFUCHSIA1$fToCStructImportSemaphoreZirconHandleInfoFUCHSIA)$fZeroSemaphoreGetZirconHandleInfoFUCHSIA-$fStorableSemaphoreGetZirconHandleInfoFUCHSIA0$fFromCStructSemaphoreGetZirconHandleInfoFUCHSIA.$fToCStructSemaphoreGetZirconHandleInfoFUCHSIA'$fEqSemaphoreGetZirconHandleInfoFUCHSIA*$fEqImportSemaphoreZirconHandleInfoFUCHSIA)$fShowSemaphoreGetZirconHandleInfoFUCHSIA,$fShowImportSemaphoreZirconHandleInfoFUCHSIA&FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME$FUCHSIA_EXTERNAL_MEMORY_SPEC_VERSION,$sel:memory:MemoryGetZirconHandleInfoFUCHSIA0$sel:handleType:MemoryGetZirconHandleInfoFUCHSIA7$sel:memoryTypeBits:MemoryZirconHandlePropertiesFUCHSIA3$sel:handleType:ImportMemoryZirconHandleInfoFUCHSIA/$sel:handle:ImportMemoryZirconHandleInfoFUCHSIA)$fZeroImportMemoryZirconHandleInfoFUCHSIA-$fStorableImportMemoryZirconHandleInfoFUCHSIA0$fFromCStructImportMemoryZirconHandleInfoFUCHSIA.$fToCStructImportMemoryZirconHandleInfoFUCHSIA)$fZeroMemoryZirconHandlePropertiesFUCHSIA-$fStorableMemoryZirconHandlePropertiesFUCHSIA0$fFromCStructMemoryZirconHandlePropertiesFUCHSIA.$fToCStructMemoryZirconHandlePropertiesFUCHSIA&$fZeroMemoryGetZirconHandleInfoFUCHSIA*$fStorableMemoryGetZirconHandleInfoFUCHSIA-$fFromCStructMemoryGetZirconHandleInfoFUCHSIA+$fToCStructMemoryGetZirconHandleInfoFUCHSIA$$fEqMemoryGetZirconHandleInfoFUCHSIA'$fEqMemoryZirconHandlePropertiesFUCHSIA'$fEqImportMemoryZirconHandleInfoFUCHSIA&$fShowMemoryGetZirconHandleInfoFUCHSIA)$fShowMemoryZirconHandlePropertiesFUCHSIA)$fShowImportMemoryZirconHandleInfoFUCHSIA#EXT_VALIDATION_CACHE_EXTENSION_NAME!EXT_VALIDATION_CACHE_SPEC_VERSIONValidationCacheHeaderVersionEXTValidationCacheCreateFlagsEXT=$sel:validationCache:ShaderModuleValidationCacheCreateInfoEXT'$sel:flags:ValidationCacheCreateInfoEXT1$sel:initialDataSize:ValidationCacheCreateInfoEXT-$sel:initialData:ValidationCacheCreateInfoEXT'VALIDATION_CACHE_HEADER_VERSION_ONE_EXTwithValidationCacheEXT.$fZeroShaderModuleValidationCacheCreateInfoEXT2$fStorableShaderModuleValidationCacheCreateInfoEXT5$fFromCStructShaderModuleValidationCacheCreateInfoEXT3$fToCStructShaderModuleValidationCacheCreateInfoEXT#$fReadValidationCacheCreateFlagsEXT#$fShowValidationCacheCreateFlagsEXT"$fZeroValidationCacheCreateInfoEXT&$fStorableValidationCacheCreateInfoEXT)$fFromCStructValidationCacheCreateInfoEXT'$fToCStructValidationCacheCreateInfoEXT%$fReadValidationCacheHeaderVersionEXT%$fShowValidationCacheHeaderVersionEXT#$fEqValidationCacheHeaderVersionEXT$$fOrdValidationCacheHeaderVersionEXT)$fStorableValidationCacheHeaderVersionEXT%$fZeroValidationCacheHeaderVersionEXT!$fEqValidationCacheCreateFlagsEXT"$fOrdValidationCacheCreateFlagsEXT'$fStorableValidationCacheCreateFlagsEXT#$fZeroValidationCacheCreateFlagsEXT#$fBitsValidationCacheCreateFlagsEXT)$fFiniteBitsValidationCacheCreateFlagsEXT,$fEqShaderModuleValidationCacheCreateInfoEXT.$fShowShaderModuleValidationCacheCreateInfoEXT"$fShowValidationCacheCreateInfoEXTEXT_PRIVATE_DATA_EXTENSION_NAMEEXT_PRIVATE_DATA_SPEC_VERSION PrivateDataSlotCreateFlagBitsEXTPrivateDataSlotCreateFlagsEXT5$sel:privateData:PhysicalDevicePrivateDataFeaturesEXT'$sel:flags:PrivateDataSlotCreateInfoEXT?$sel:privateDataSlotRequestCount:DevicePrivateDataCreateInfoEXTwithPrivateDataSlotEXT$$fZeroDevicePrivateDataCreateInfoEXT($fStorableDevicePrivateDataCreateInfoEXT+$fFromCStructDevicePrivateDataCreateInfoEXT)$fToCStructDevicePrivateDataCreateInfoEXT*$fZeroPhysicalDevicePrivateDataFeaturesEXT.$fStorablePhysicalDevicePrivateDataFeaturesEXT1$fFromCStructPhysicalDevicePrivateDataFeaturesEXT/$fToCStructPhysicalDevicePrivateDataFeaturesEXT&$fReadPrivateDataSlotCreateFlagBitsEXT&$fShowPrivateDataSlotCreateFlagBitsEXT"$fZeroPrivateDataSlotCreateInfoEXT&$fStorablePrivateDataSlotCreateInfoEXT)$fFromCStructPrivateDataSlotCreateInfoEXT'$fToCStructPrivateDataSlotCreateInfoEXT $fEqPrivateDataSlotCreateInfoEXT$$fEqPrivateDataSlotCreateFlagBitsEXT%$fOrdPrivateDataSlotCreateFlagBitsEXT*$fStorablePrivateDataSlotCreateFlagBitsEXT&$fZeroPrivateDataSlotCreateFlagBitsEXT&$fBitsPrivateDataSlotCreateFlagBitsEXT,$fFiniteBitsPrivateDataSlotCreateFlagBitsEXT($fEqPhysicalDevicePrivateDataFeaturesEXT"$fEqDevicePrivateDataCreateInfoEXT*$fShowPhysicalDevicePrivateDataFeaturesEXT"$fShowPrivateDataSlotCreateInfoEXT$$fShowDevicePrivateDataCreateInfoEXT EXT_METAL_SURFACE_EXTENSION_NAMEEXT_METAL_SURFACE_SPEC_VERSIONMetalSurfaceCreateFlagsEXT$$sel:flags:MetalSurfaceCreateInfoEXT$$sel:layer:MetalSurfaceCreateInfoEXT $fReadMetalSurfaceCreateFlagsEXT $fShowMetalSurfaceCreateFlagsEXT$fZeroMetalSurfaceCreateInfoEXT#$fStorableMetalSurfaceCreateInfoEXT&$fFromCStructMetalSurfaceCreateInfoEXT$$fToCStructMetalSurfaceCreateInfoEXT$fEqMetalSurfaceCreateInfoEXT$fEqMetalSurfaceCreateFlagsEXT$fOrdMetalSurfaceCreateFlagsEXT$$fStorableMetalSurfaceCreateFlagsEXT $fZeroMetalSurfaceCreateFlagsEXT $fBitsMetalSurfaceCreateFlagsEXT&$fFiniteBitsMetalSurfaceCreateFlagsEXT$fShowMetalSurfaceCreateInfoEXT#EXT_HEADLESS_SURFACE_EXTENSION_NAME!EXT_HEADLESS_SURFACE_SPEC_VERSIONHeadlessSurfaceCreateFlagsEXT'$sel:flags:HeadlessSurfaceCreateInfoEXT#$fReadHeadlessSurfaceCreateFlagsEXT#$fShowHeadlessSurfaceCreateFlagsEXT"$fZeroHeadlessSurfaceCreateInfoEXT&$fStorableHeadlessSurfaceCreateInfoEXT)$fFromCStructHeadlessSurfaceCreateInfoEXT'$fToCStructHeadlessSurfaceCreateInfoEXT $fEqHeadlessSurfaceCreateInfoEXT!$fEqHeadlessSurfaceCreateFlagsEXT"$fOrdHeadlessSurfaceCreateFlagsEXT'$fStorableHeadlessSurfaceCreateFlagsEXT#$fZeroHeadlessSurfaceCreateFlagsEXT#$fBitsHeadlessSurfaceCreateFlagsEXT)$fFiniteBitsHeadlessSurfaceCreateFlagsEXT"$fShowHeadlessSurfaceCreateInfoEXTEXT_HDR_METADATA_EXTENSION_NAMEEXT_HDR_METADATA_SPEC_VERSION%$sel:displayPrimaryRed:HdrMetadataEXT'$sel:displayPrimaryGreen:HdrMetadataEXT&$sel:displayPrimaryBlue:HdrMetadataEXT$sel:whitePoint:HdrMetadataEXT $sel:maxLuminance:HdrMetadataEXT $sel:minLuminance:HdrMetadataEXT($sel:maxContentLightLevel:HdrMetadataEXT-$sel:maxFrameAverageLightLevel:HdrMetadataEXT$sel:x:XYColorEXT$sel:y:XYColorEXT$fZeroXYColorEXT$fStorableXYColorEXT$fFromCStructXYColorEXT$fToCStructXYColorEXT$fZeroHdrMetadataEXT$fStorableHdrMetadataEXT$fFromCStructHdrMetadataEXT$fToCStructHdrMetadataEXT$fEqXYColorEXT$fShowHdrMetadataEXT$fShowXYColorEXTHMONITOR(EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME&EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSIONFullScreenExclusiveEXT$sel:fullScreenExclusiveSupported:SurfaceCapabilitiesFullScreenExclusiveEXT4$sel:hmonitor:SurfaceFullScreenExclusiveWin32InfoEXT:$sel:fullScreenExclusive:SurfaceFullScreenExclusiveInfoEXT$FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT!FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT!FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT/$fZeroSurfaceCapabilitiesFullScreenExclusiveEXT3$fStorableSurfaceCapabilitiesFullScreenExclusiveEXT6$fFromCStructSurfaceCapabilitiesFullScreenExclusiveEXT4$fToCStructSurfaceCapabilitiesFullScreenExclusiveEXT$fReadFullScreenExclusiveEXT$fShowFullScreenExclusiveEXT'$fZeroSurfaceFullScreenExclusiveInfoEXT+$fStorableSurfaceFullScreenExclusiveInfoEXT.$fFromCStructSurfaceFullScreenExclusiveInfoEXT,$fToCStructSurfaceFullScreenExclusiveInfoEXT,$fZeroSurfaceFullScreenExclusiveWin32InfoEXT0$fStorableSurfaceFullScreenExclusiveWin32InfoEXT3$fFromCStructSurfaceFullScreenExclusiveWin32InfoEXT1$fToCStructSurfaceFullScreenExclusiveWin32InfoEXT*$fEqSurfaceFullScreenExclusiveWin32InfoEXT%$fEqSurfaceFullScreenExclusiveInfoEXT$fEqFullScreenExclusiveEXT$fOrdFullScreenExclusiveEXT $fStorableFullScreenExclusiveEXT$fZeroFullScreenExclusiveEXT-$fEqSurfaceCapabilitiesFullScreenExclusiveEXT/$fShowSurfaceCapabilitiesFullScreenExclusiveEXT,$fShowSurfaceFullScreenExclusiveWin32InfoEXT'$fShowSurfaceFullScreenExclusiveInfoEXT*EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME(EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION*$sel:minImageCount:SurfaceCapabilities2EXT*$sel:maxImageCount:SurfaceCapabilities2EXT*$sel:currentExtent:SurfaceCapabilities2EXT+$sel:minImageExtent:SurfaceCapabilities2EXT+$sel:maxImageExtent:SurfaceCapabilities2EXT0$sel:maxImageArrayLayers:SurfaceCapabilities2EXT0$sel:supportedTransforms:SurfaceCapabilities2EXT-$sel:currentTransform:SurfaceCapabilities2EXT4$sel:supportedCompositeAlpha:SurfaceCapabilities2EXT0$sel:supportedUsageFlags:SurfaceCapabilities2EXT5$sel:supportedSurfaceCounters:SurfaceCapabilities2EXTSURFACE_COUNTER_VBLANK_BIT_EXTSURFACE_COUNTER_VBLANK_EXT(STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT$fReadSurfaceCounterFlagBitsEXT$fShowSurfaceCounterFlagBitsEXT$fZeroSurfaceCapabilities2EXT!$fStorableSurfaceCapabilities2EXT$$fFromCStructSurfaceCapabilities2EXT"$fToCStructSurfaceCapabilities2EXT$fEqSurfaceCounterFlagBitsEXT$fOrdSurfaceCounterFlagBitsEXT#$fStorableSurfaceCounterFlagBitsEXT$fZeroSurfaceCounterFlagBitsEXT$fBitsSurfaceCounterFlagBitsEXT%$fFiniteBitsSurfaceCounterFlagBitsEXT$fShowSurfaceCapabilities2EXT"EXT_DISPLAY_CONTROL_EXTENSION_NAME EXT_DISPLAY_CONTROL_SPEC_VERSIONDisplayEventTypeEXTDeviceEventTypeEXTDisplayPowerStateEXT2$sel:surfaceCounters:SwapchainCounterCreateInfoEXT%$sel:displayEvent:DisplayEventInfoEXT#$sel:deviceEvent:DeviceEventInfoEXT#$sel:powerState:DisplayPowerInfoEXT&DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT%DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXTDISPLAY_POWER_STATE_ON_EXTDISPLAY_POWER_STATE_SUSPEND_EXTDISPLAY_POWER_STATE_OFF_EXT#$fZeroSwapchainCounterCreateInfoEXT'$fStorableSwapchainCounterCreateInfoEXT*$fFromCStructSwapchainCounterCreateInfoEXT($fToCStructSwapchainCounterCreateInfoEXT$fReadDisplayPowerStateEXT$fShowDisplayPowerStateEXT$fZeroDisplayPowerInfoEXT$fStorableDisplayPowerInfoEXT $fFromCStructDisplayPowerInfoEXT$fToCStructDisplayPowerInfoEXT$fReadDeviceEventTypeEXT$fShowDeviceEventTypeEXT$fZeroDeviceEventInfoEXT$fStorableDeviceEventInfoEXT$fFromCStructDeviceEventInfoEXT$fToCStructDeviceEventInfoEXT$fReadDisplayEventTypeEXT$fShowDisplayEventTypeEXT$fZeroDisplayEventInfoEXT$fStorableDisplayEventInfoEXT $fFromCStructDisplayEventInfoEXT$fToCStructDisplayEventInfoEXT$fEqDisplayEventInfoEXT$fEqDisplayEventTypeEXT$fOrdDisplayEventTypeEXT$fStorableDisplayEventTypeEXT$fZeroDisplayEventTypeEXT$fEqDeviceEventInfoEXT$fEqDeviceEventTypeEXT$fOrdDeviceEventTypeEXT$fStorableDeviceEventTypeEXT$fZeroDeviceEventTypeEXT$fEqDisplayPowerInfoEXT$fEqDisplayPowerStateEXT$fOrdDisplayPowerStateEXT$fStorableDisplayPowerStateEXT$fZeroDisplayPowerStateEXT!$fEqSwapchainCounterCreateInfoEXT#$fShowSwapchainCounterCreateInfoEXT$fShowDisplayEventInfoEXT$fShowDeviceEventInfoEXT$fShowDisplayPowerInfoEXTIDirectFBSurface#EXT_DIRECTFB_SURFACE_EXTENSION_NAME!EXT_DIRECTFB_SURFACE_SPEC_VERSIONDirectFBSurfaceCreateFlagsEXT'$sel:flags:DirectFBSurfaceCreateInfoEXT%$sel:dfb:DirectFBSurfaceCreateInfoEXT)$sel:surface:DirectFBSurfaceCreateInfoEXT#$fReadDirectFBSurfaceCreateFlagsEXT#$fShowDirectFBSurfaceCreateFlagsEXT"$fZeroDirectFBSurfaceCreateInfoEXT&$fStorableDirectFBSurfaceCreateInfoEXT)$fFromCStructDirectFBSurfaceCreateInfoEXT'$fToCStructDirectFBSurfaceCreateInfoEXT $fEqDirectFBSurfaceCreateInfoEXT!$fEqDirectFBSurfaceCreateFlagsEXT"$fOrdDirectFBSurfaceCreateFlagsEXT'$fStorableDirectFBSurfaceCreateFlagsEXT#$fZeroDirectFBSurfaceCreateFlagsEXT#$fBitsDirectFBSurfaceCreateFlagsEXT)$fFiniteBitsDirectFBSurfaceCreateFlagsEXT"$fShowDirectFBSurfaceCreateInfoEXT&EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME$EXT_DIRECT_MODE_DISPLAY_SPEC_VERSIONEXT_DEBUG_UTILS_EXTENSION_NAMEEXT_DEBUG_UTILS_SPEC_VERSION$PFN_vkDebugUtilsMessengerCallbackEXT#FN_vkDebugUtilsMessengerCallbackEXT'DebugUtilsMessengerCallbackDataFlagsEXT!DebugUtilsMessengerCreateFlagsEXT-$sel:flags:DebugUtilsMessengerCallbackDataEXT5$sel:messageIdName:DebugUtilsMessengerCallbackDataEXT7$sel:messageIdNumber:DebugUtilsMessengerCallbackDataEXT/$sel:message:DebugUtilsMessengerCallbackDataEXT3$sel:queueLabels:DebugUtilsMessengerCallbackDataEXT4$sel:cmdBufLabels:DebugUtilsMessengerCallbackDataEXT/$sel:objects:DebugUtilsMessengerCallbackDataEXT+$sel:flags:DebugUtilsMessengerCreateInfoEXT5$sel:messageSeverity:DebugUtilsMessengerCreateInfoEXT1$sel:messageType:DebugUtilsMessengerCreateInfoEXT5$sel:pfnUserCallback:DebugUtilsMessengerCreateInfoEXT.$sel:userData:DebugUtilsMessengerCreateInfoEXT!$sel:labelName:DebugUtilsLabelEXT$sel:color:DebugUtilsLabelEXT*$sel:objectType:DebugUtilsObjectTagInfoEXT,$sel:objectHandle:DebugUtilsObjectTagInfoEXT'$sel:tagName:DebugUtilsObjectTagInfoEXT'$sel:tagSize:DebugUtilsObjectTagInfoEXT#$sel:tag:DebugUtilsObjectTagInfoEXT+$sel:objectType:DebugUtilsObjectNameInfoEXT-$sel:objectHandle:DebugUtilsObjectNameInfoEXT+$sel:objectName:DebugUtilsObjectNameInfoEXT,DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT+DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT(DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT*DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT,DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT)DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT,DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXTcmdUseDebugUtilsLabelEXTwithDebugUtilsMessengerEXT!$fZeroDebugUtilsObjectNameInfoEXT($fFromCStructDebugUtilsObjectNameInfoEXT&$fToCStructDebugUtilsObjectNameInfoEXT $fZeroDebugUtilsObjectTagInfoEXT$$fStorableDebugUtilsObjectTagInfoEXT'$fFromCStructDebugUtilsObjectTagInfoEXT%$fToCStructDebugUtilsObjectTagInfoEXT$fZeroDebugUtilsLabelEXT$fFromCStructDebugUtilsLabelEXT$fToCStructDebugUtilsLabelEXT'$fReadDebugUtilsMessengerCreateFlagsEXT'$fShowDebugUtilsMessengerCreateFlagsEXT-$fReadDebugUtilsMessengerCallbackDataFlagsEXT-$fShowDebugUtilsMessengerCallbackDataFlagsEXT($fZeroDebugUtilsMessengerCallbackDataEXT/$fFromCStructDebugUtilsMessengerCallbackDataEXT-$fToCStructDebugUtilsMessengerCallbackDataEXT*$fReadDebugUtilsMessageSeverityFlagBitsEXT*$fShowDebugUtilsMessageSeverityFlagBitsEXT&$fReadDebugUtilsMessageTypeFlagBitsEXT&$fShowDebugUtilsMessageTypeFlagBitsEXT&$fZeroDebugUtilsMessengerCreateInfoEXT*$fStorableDebugUtilsMessengerCreateInfoEXT-$fFromCStructDebugUtilsMessengerCreateInfoEXT+$fToCStructDebugUtilsMessengerCreateInfoEXT$$fEqDebugUtilsMessageTypeFlagBitsEXT%$fOrdDebugUtilsMessageTypeFlagBitsEXT*$fStorableDebugUtilsMessageTypeFlagBitsEXT&$fZeroDebugUtilsMessageTypeFlagBitsEXT&$fBitsDebugUtilsMessageTypeFlagBitsEXT,$fFiniteBitsDebugUtilsMessageTypeFlagBitsEXT($fEqDebugUtilsMessageSeverityFlagBitsEXT)$fOrdDebugUtilsMessageSeverityFlagBitsEXT.$fStorableDebugUtilsMessageSeverityFlagBitsEXT*$fZeroDebugUtilsMessageSeverityFlagBitsEXT*$fBitsDebugUtilsMessageSeverityFlagBitsEXT0$fFiniteBitsDebugUtilsMessageSeverityFlagBitsEXT+$fEqDebugUtilsMessengerCallbackDataFlagsEXT,$fOrdDebugUtilsMessengerCallbackDataFlagsEXT1$fStorableDebugUtilsMessengerCallbackDataFlagsEXT-$fZeroDebugUtilsMessengerCallbackDataFlagsEXT-$fBitsDebugUtilsMessengerCallbackDataFlagsEXT3$fFiniteBitsDebugUtilsMessengerCallbackDataFlagsEXT%$fEqDebugUtilsMessengerCreateFlagsEXT&$fOrdDebugUtilsMessengerCreateFlagsEXT+$fStorableDebugUtilsMessengerCreateFlagsEXT'$fZeroDebugUtilsMessengerCreateFlagsEXT'$fBitsDebugUtilsMessengerCreateFlagsEXT-$fFiniteBitsDebugUtilsMessengerCreateFlagsEXT($fShowDebugUtilsMessengerCallbackDataEXT&$fShowDebugUtilsMessengerCreateInfoEXT$fShowDebugUtilsLabelEXT $fShowDebugUtilsObjectTagInfoEXT!$fShowDebugUtilsObjectNameInfoEXTEXT_DEBUG_REPORT_EXTENSION_NAMEEXT_DEBUG_REPORT_SPEC_VERSIONPFN_vkDebugReportCallbackEXTFN_vkDebugReportCallbackEXT+$sel:flags:DebugReportCallbackCreateInfoEXT1$sel:pfnCallback:DebugReportCallbackCreateInfoEXT.$sel:userData:DebugReportCallbackCreateInfoEXT7DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT*DEBUG_REPORT_OBJECT_TYPE_CU_MODULE_NVX_EXT,DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT7DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT5DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT6DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT1DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT-DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT(DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT6DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT*DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT(DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT)DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT(DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT+DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT,DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT$DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT2DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT%DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT(DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT,DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT+DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT*DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT'DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT(DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT'DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT"DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT"DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT#DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT*DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT"DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT+DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT&DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT"DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT#DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT%DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT$DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXTDEBUG_REPORT_DEBUG_BIT_EXTDEBUG_REPORT_ERROR_BIT_EXT(DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXTDEBUG_REPORT_WARNING_BIT_EXT DEBUG_REPORT_INFORMATION_BIT_EXT-DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT)DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT+STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXTwithDebugReportCallbackEXT$fReadDebugReportFlagBitsEXT$fShowDebugReportFlagBitsEXT$fReadDebugReportObjectTypeEXT$fShowDebugReportObjectTypeEXT&$fZeroDebugReportCallbackCreateInfoEXT*$fStorableDebugReportCallbackCreateInfoEXT-$fFromCStructDebugReportCallbackCreateInfoEXT+$fToCStructDebugReportCallbackCreateInfoEXT$fEqDebugReportObjectTypeEXT$fOrdDebugReportObjectTypeEXT"$fStorableDebugReportObjectTypeEXT$fZeroDebugReportObjectTypeEXT$fEqDebugReportFlagBitsEXT$fOrdDebugReportFlagBitsEXT $fStorableDebugReportFlagBitsEXT$fZeroDebugReportFlagBitsEXT$fBitsDebugReportFlagBitsEXT"$fFiniteBitsDebugReportFlagBitsEXT&$fShowDebugReportCallbackCreateInfoEXT NVX_BINARY_IMPORT_EXTENSION_NAMENVX_BINARY_IMPORT_SPEC_VERSION$sel:function:CuLaunchInfoNVX$sel:gridDimX:CuLaunchInfoNVX$sel:gridDimY:CuLaunchInfoNVX$sel:gridDimZ:CuLaunchInfoNVX$sel:blockDimX:CuLaunchInfoNVX$sel:blockDimY:CuLaunchInfoNVX$sel:blockDimZ:CuLaunchInfoNVX#$sel:sharedMemBytes:CuLaunchInfoNVX$sel:params:CuLaunchInfoNVX$sel:extras:CuLaunchInfoNVX$$sel:module':CuFunctionCreateInfoNVX!$sel:name:CuFunctionCreateInfoNVX#$sel:dataSize:CuModuleCreateInfoNVX $sel:data':CuModuleCreateInfoNVXwithCuModuleNVXwithCuFunctionNVX$fZeroCuModuleCreateInfoNVX$fStorableCuModuleCreateInfoNVX"$fFromCStructCuModuleCreateInfoNVX $fToCStructCuModuleCreateInfoNVX$fZeroCuFunctionCreateInfoNVX$$fFromCStructCuFunctionCreateInfoNVX"$fToCStructCuFunctionCreateInfoNVX$fZeroCuLaunchInfoNVX$fFromCStructCuLaunchInfoNVX$fToCStructCuLaunchInfoNVX$fShowCuLaunchInfoNVX$fShowCuFunctionCreateInfoNVX$fShowCuModuleCreateInfoNVX)KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME'KHR_ACCELERATION_STRUCTURE_SPEC_VERSION!BuildAccelerationStructureModeKHR&AccelerationStructureCreateFlagBitsKHR#AccelerationStructureCreateFlagsKHR$AccelerationStructureGeometryDataKHR TrianglesAabbs InstancesDeviceAddressConstHostAddressConst HostAddress$sel:accelerationStructureSize:AccelerationStructureBuildSizesInfoKHR=$sel:updateScratchSize:AccelerationStructureBuildSizesInfoKHR<$sel:buildScratchSize:AccelerationStructureBuildSizesInfoKHR1$sel:src:CopyMemoryToAccelerationStructureInfoKHR1$sel:dst:CopyMemoryToAccelerationStructureInfoKHR2$sel:mode:CopyMemoryToAccelerationStructureInfoKHR1$sel:src:CopyAccelerationStructureToMemoryInfoKHR1$sel:dst:CopyAccelerationStructureToMemoryInfoKHR2$sel:mode:CopyAccelerationStructureToMemoryInfoKHR)$sel:src:CopyAccelerationStructureInfoKHR)$sel:dst:CopyAccelerationStructureInfoKHR*$sel:mode:CopyAccelerationStructureInfoKHR4$sel:versionData:AccelerationStructureVersionInfoKHR$sel:accelerationStructure:AccelerationStructureDeviceAddressInfoKHR/$sel:transform:AccelerationStructureInstanceKHR9$sel:instanceCustomIndex:AccelerationStructureInstanceKHR*$sel:mask:AccelerationStructureInstanceKHR$sel:instanceShaderBindingTableRecordOffset:AccelerationStructureInstanceKHR+$sel:flags:AccelerationStructureInstanceKHR$sel:accelerationStructureReference:AccelerationStructureInstanceKHR"$sel:matrixRow0:TransformMatrixKHR"$sel:matrixRow1:TransformMatrixKHR"$sel:matrixRow2:TransformMatrixKHR$sel:minX:AabbPositionsKHR$sel:minY:AabbPositionsKHR$sel:minZ:AabbPositionsKHR$sel:maxX:AabbPositionsKHR$sel:maxY:AabbPositionsKHR$sel:maxZ:AabbPositionsKHR,$sel:next:AccelerationStructureCreateInfoKHR3$sel:createFlags:AccelerationStructureCreateInfoKHR.$sel:buffer:AccelerationStructureCreateInfoKHR.$sel:offset:AccelerationStructureCreateInfoKHR,$sel:size:AccelerationStructureCreateInfoKHR-$sel:type':AccelerationStructureCreateInfoKHR5$sel:deviceAddress:AccelerationStructureCreateInfoKHR:$sel:primitiveCount:AccelerationStructureBuildRangeInfoKHR;$sel:primitiveOffset:AccelerationStructureBuildRangeInfoKHR7$sel:firstVertex:AccelerationStructureBuildRangeInfoKHR;$sel:transformOffset:AccelerationStructureBuildRangeInfoKHR4$sel:type':AccelerationStructureBuildGeometryInfoKHR4$sel:flags:AccelerationStructureBuildGeometryInfoKHR3$sel:mode:AccelerationStructureBuildGeometryInfoKHR$sel:srcAccelerationStructure:AccelerationStructureBuildGeometryInfoKHR$sel:dstAccelerationStructure:AccelerationStructureBuildGeometryInfoKHR9$sel:geometries:AccelerationStructureBuildGeometryInfoKHR:$sel:scratchData:AccelerationStructureBuildGeometryInfoKHR2$sel:geometryType:AccelerationStructureGeometryKHR.$sel:geometry:AccelerationStructureGeometryKHR+$sel:flags:AccelerationStructureGeometryKHR$sel:arrayOfPointers:AccelerationStructureGeometryInstancesDataKHR8$sel:data':AccelerationStructureGeometryInstancesDataKHR4$sel:data':AccelerationStructureGeometryAabbsDataKHR5$sel:stride:AccelerationStructureGeometryAabbsDataKHR7$sel:next:AccelerationStructureGeometryTrianglesDataKHR?$sel:vertexFormat:AccelerationStructureGeometryTrianglesDataKHR=$sel:vertexData:AccelerationStructureGeometryTrianglesDataKHR?$sel:vertexStride:AccelerationStructureGeometryTrianglesDataKHR<$sel:maxVertex:AccelerationStructureGeometryTrianglesDataKHR<$sel:indexType:AccelerationStructureGeometryTrianglesDataKHR<$sel:indexData:AccelerationStructureGeometryTrianglesDataKHR$sel:transformData:AccelerationStructureGeometryTrianglesDataKHR$sel:maxGeometryCount:PhysicalDeviceAccelerationStructurePropertiesKHR$sel:maxInstanceCount:PhysicalDeviceAccelerationStructurePropertiesKHR$sel:maxPrimitiveCount:PhysicalDeviceAccelerationStructurePropertiesKHR$sel:maxPerStageDescriptorAccelerationStructures:PhysicalDeviceAccelerationStructurePropertiesKHR$sel:maxPerStageDescriptorUpdateAfterBindAccelerationStructures:PhysicalDeviceAccelerationStructurePropertiesKHR$sel:maxDescriptorSetAccelerationStructures:PhysicalDeviceAccelerationStructurePropertiesKHR$sel:maxDescriptorSetUpdateAfterBindAccelerationStructures:PhysicalDeviceAccelerationStructurePropertiesKHR$sel:minAccelerationStructureScratchOffsetAlignment:PhysicalDeviceAccelerationStructurePropertiesKHR$sel:accelerationStructure:PhysicalDeviceAccelerationStructureFeaturesKHR$sel:accelerationStructureCaptureReplay:PhysicalDeviceAccelerationStructureFeaturesKHR$sel:accelerationStructureIndirectBuild:PhysicalDeviceAccelerationStructureFeaturesKHR$sel:accelerationStructureHostCommands:PhysicalDeviceAccelerationStructureFeaturesKHR$sel:descriptorBindingAccelerationStructureUpdateAfterBind:PhysicalDeviceAccelerationStructureFeaturesKHR$sel:accelerationStructures:WriteDescriptorSetAccelerationStructureKHR5ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR3ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR4ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR,ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR*ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHRGEOMETRY_TYPE_INSTANCES_KHR'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR,ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR)ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR,BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR+BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR0COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR.COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR,COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR*COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR+ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NVACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR*BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV/BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR6BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR6BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR5BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR1BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR0GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHRGEOMETRY_OPAQUE_BIT_KHR)GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR&GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR.GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR6GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR9GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHRwithAccelerationStructureKHR0$fZeroWriteDescriptorSetAccelerationStructureKHR7$fFromCStructWriteDescriptorSetAccelerationStructureKHR5$fToCStructWriteDescriptorSetAccelerationStructureKHR4$fZeroPhysicalDeviceAccelerationStructureFeaturesKHR8$fStorablePhysicalDeviceAccelerationStructureFeaturesKHR;$fFromCStructPhysicalDeviceAccelerationStructureFeaturesKHR9$fToCStructPhysicalDeviceAccelerationStructureFeaturesKHR6$fZeroPhysicalDeviceAccelerationStructurePropertiesKHR:$fStorablePhysicalDeviceAccelerationStructurePropertiesKHR=$fFromCStructPhysicalDeviceAccelerationStructurePropertiesKHR;$fToCStructPhysicalDeviceAccelerationStructurePropertiesKHR,$fZeroAccelerationStructureBuildRangeInfoKHR0$fStorableAccelerationStructureBuildRangeInfoKHR3$fFromCStructAccelerationStructureBuildRangeInfoKHR1$fToCStructAccelerationStructureBuildRangeInfoKHR$fZeroAabbPositionsKHR$fStorableAabbPositionsKHR$fFromCStructAabbPositionsKHR$fToCStructAabbPositionsKHR$fZeroTransformMatrixKHR$fStorableTransformMatrixKHR$fFromCStructTransformMatrixKHR$fToCStructTransformMatrixKHR/$fZeroAccelerationStructureDeviceAddressInfoKHR3$fStorableAccelerationStructureDeviceAddressInfoKHR6$fFromCStructAccelerationStructureDeviceAddressInfoKHR4$fToCStructAccelerationStructureDeviceAddressInfoKHR)$fZeroAccelerationStructureVersionInfoKHR0$fFromCStructAccelerationStructureVersionInfoKHR.$fToCStructAccelerationStructureVersionInfoKHR,$fZeroAccelerationStructureBuildSizesInfoKHR0$fStorableAccelerationStructureBuildSizesInfoKHR3$fFromCStructAccelerationStructureBuildSizesInfoKHR1$fToCStructAccelerationStructureBuildSizesInfoKHR$fZeroDeviceOrHostAddressKHR!$fToCStructDeviceOrHostAddressKHR!$fZeroDeviceOrHostAddressConstKHR&$fToCStructDeviceOrHostAddressConstKHR3$fZeroAccelerationStructureGeometryInstancesDataKHR8$fToCStructAccelerationStructureGeometryInstancesDataKHR/$fZeroAccelerationStructureGeometryAabbsDataKHR4$fToCStructAccelerationStructureGeometryAabbsDataKHR3$fZeroAccelerationStructureGeometryTrianglesDataKHR8$fToCStructAccelerationStructureGeometryTrianglesDataKHR9$fExtensibleAccelerationStructureGeometryTrianglesDataKHR*$fZeroAccelerationStructureGeometryDataKHR/$fToCStructAccelerationStructureGeometryDataKHR!$fReadGeometryInstanceFlagBitsKHR!$fShowGeometryInstanceFlagBitsKHR&$fZeroAccelerationStructureInstanceKHR*$fStorableAccelerationStructureInstanceKHR-$fFromCStructAccelerationStructureInstanceKHR+$fToCStructAccelerationStructureInstanceKHR$fReadGeometryFlagBitsKHR$fShowGeometryFlagBitsKHR+$fReadBuildAccelerationStructureFlagBitsKHR+$fShowBuildAccelerationStructureFlagBitsKHR,$fReadAccelerationStructureCreateFlagBitsKHR,$fShowAccelerationStructureCreateFlagBitsKHR&$fReadCopyAccelerationStructureModeKHR&$fShowCopyAccelerationStructureModeKHR.$fZeroCopyMemoryToAccelerationStructureInfoKHR3$fToCStructCopyMemoryToAccelerationStructureInfoKHR.$fZeroCopyAccelerationStructureToMemoryInfoKHR3$fToCStructCopyAccelerationStructureToMemoryInfoKHR&$fZeroCopyAccelerationStructureInfoKHR*$fStorableCopyAccelerationStructureInfoKHR-$fFromCStructCopyAccelerationStructureInfoKHR+$fToCStructCopyAccelerationStructureInfoKHR'$fReadBuildAccelerationStructureModeKHR'$fShowBuildAccelerationStructureModeKHR"$fReadAccelerationStructureTypeKHR"$fShowAccelerationStructureTypeKHR($fZeroAccelerationStructureCreateInfoKHR/$fFromCStructAccelerationStructureCreateInfoKHR-$fToCStructAccelerationStructureCreateInfoKHR.$fExtensibleAccelerationStructureCreateInfoKHR$fReadGeometryTypeKHR$fShowGeometryTypeKHR&$fZeroAccelerationStructureGeometryKHR+$fToCStructAccelerationStructureGeometryKHR/$fZeroAccelerationStructureBuildGeometryInfoKHR4$fToCStructAccelerationStructureBuildGeometryInfoKHR'$fReadAccelerationStructureBuildTypeKHR'$fShowAccelerationStructureBuildTypeKHR+$fReadAccelerationStructureCompatibilityKHR+$fShowAccelerationStructureCompatibilityKHR)$fEqAccelerationStructureCompatibilityKHR*$fOrdAccelerationStructureCompatibilityKHR/$fStorableAccelerationStructureCompatibilityKHR+$fZeroAccelerationStructureCompatibilityKHR%$fEqAccelerationStructureBuildTypeKHR&$fOrdAccelerationStructureBuildTypeKHR+$fStorableAccelerationStructureBuildTypeKHR'$fZeroAccelerationStructureBuildTypeKHR$fEqGeometryTypeKHR$fOrdGeometryTypeKHR$fStorableGeometryTypeKHR$fZeroGeometryTypeKHR $fEqAccelerationStructureTypeKHR!$fOrdAccelerationStructureTypeKHR&$fStorableAccelerationStructureTypeKHR"$fZeroAccelerationStructureTypeKHR%$fEqBuildAccelerationStructureModeKHR&$fOrdBuildAccelerationStructureModeKHR+$fStorableBuildAccelerationStructureModeKHR'$fZeroBuildAccelerationStructureModeKHR$$fEqCopyAccelerationStructureInfoKHR$$fEqCopyAccelerationStructureModeKHR%$fOrdCopyAccelerationStructureModeKHR*$fStorableCopyAccelerationStructureModeKHR&$fZeroCopyAccelerationStructureModeKHR*$fEqAccelerationStructureCreateFlagBitsKHR+$fOrdAccelerationStructureCreateFlagBitsKHR0$fStorableAccelerationStructureCreateFlagBitsKHR,$fZeroAccelerationStructureCreateFlagBitsKHR,$fBitsAccelerationStructureCreateFlagBitsKHR2$fFiniteBitsAccelerationStructureCreateFlagBitsKHR)$fEqBuildAccelerationStructureFlagBitsKHR*$fOrdBuildAccelerationStructureFlagBitsKHR/$fStorableBuildAccelerationStructureFlagBitsKHR+$fZeroBuildAccelerationStructureFlagBitsKHR+$fBitsBuildAccelerationStructureFlagBitsKHR1$fFiniteBitsBuildAccelerationStructureFlagBitsKHR$fEqGeometryFlagBitsKHR$fOrdGeometryFlagBitsKHR$fStorableGeometryFlagBitsKHR$fZeroGeometryFlagBitsKHR$fBitsGeometryFlagBitsKHR$fFiniteBitsGeometryFlagBitsKHR$fEqGeometryInstanceFlagBitsKHR $fOrdGeometryInstanceFlagBitsKHR%$fStorableGeometryInstanceFlagBitsKHR!$fZeroGeometryInstanceFlagBitsKHR!$fBitsGeometryInstanceFlagBitsKHR'$fFiniteBitsGeometryInstanceFlagBitsKHR*$fShowAccelerationStructureGeometryDataKHR!$fShowDeviceOrHostAddressConstKHR$fShowDeviceOrHostAddressKHR*$fEqAccelerationStructureBuildSizesInfoKHR-$fEqAccelerationStructureDeviceAddressInfoKHR$fEqTransformMatrixKHR$fEqAabbPositionsKHR*$fEqAccelerationStructureBuildRangeInfoKHR4$fEqPhysicalDeviceAccelerationStructurePropertiesKHR2$fEqPhysicalDeviceAccelerationStructureFeaturesKHR,$fShowAccelerationStructureBuildSizesInfoKHR.$fShowCopyMemoryToAccelerationStructureInfoKHR.$fShowCopyAccelerationStructureToMemoryInfoKHR&$fShowCopyAccelerationStructureInfoKHR)$fShowAccelerationStructureVersionInfoKHR/$fShowAccelerationStructureDeviceAddressInfoKHR&$fShowAccelerationStructureInstanceKHR$fShowTransformMatrixKHR$fShowAabbPositionsKHR($fShowAccelerationStructureCreateInfoKHR,$fShowAccelerationStructureBuildRangeInfoKHR/$fShowAccelerationStructureBuildGeometryInfoKHR&$fShowAccelerationStructureGeometryKHR3$fShowAccelerationStructureGeometryInstancesDataKHR/$fShowAccelerationStructureGeometryAabbsDataKHR3$fShowAccelerationStructureGeometryTrianglesDataKHR6$fShowPhysicalDeviceAccelerationStructurePropertiesKHR4$fShowPhysicalDeviceAccelerationStructureFeaturesKHR0$fShowWriteDescriptorSetAccelerationStructureKHR)NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME'NV_RAY_TRACING_MOTION_BLUR_SPEC_VERSION*AccelerationStructureMotionInstanceFlagsNV&AccelerationStructureMotionInfoFlagsNVStaticInstanceMatrixMotionInstanceSrtMotionInstance0$sel:type':AccelerationStructureMotionInstanceNV0$sel:flags:AccelerationStructureMotionInstanceNV0$sel:data':AccelerationStructureMotionInstanceNV<$sel:transformT0:AccelerationStructureMatrixMotionInstanceNV<$sel:transformT1:AccelerationStructureMatrixMotionInstanceNV$sel:instanceCustomIndex:AccelerationStructureMatrixMotionInstanceNV5$sel:mask:AccelerationStructureMatrixMotionInstanceNV$sel:instanceShaderBindingTableRecordOffset:AccelerationStructureMatrixMotionInstanceNV6$sel:flags:AccelerationStructureMatrixMotionInstanceNV$sel:accelerationStructureReference:AccelerationStructureMatrixMotionInstanceNV9$sel:transformT0:AccelerationStructureSRTMotionInstanceNV9$sel:transformT1:AccelerationStructureSRTMotionInstanceNV$sel:instanceCustomIndex:AccelerationStructureSRTMotionInstanceNV2$sel:mask:AccelerationStructureSRTMotionInstanceNV$sel:instanceShaderBindingTableRecordOffset:AccelerationStructureSRTMotionInstanceNV3$sel:flags:AccelerationStructureSRTMotionInstanceNV$sel:accelerationStructureReference:AccelerationStructureSRTMotionInstanceNV$sel:sx:SRTDataNV$sel:a:SRTDataNV$sel:b:SRTDataNV$sel:pvx:SRTDataNV$sel:sy:SRTDataNV$sel:c:SRTDataNV$sel:pvy:SRTDataNV$sel:sz:SRTDataNV$sel:pvz:SRTDataNV$sel:qx:SRTDataNV$sel:qy:SRTDataNV$sel:qz:SRTDataNV$sel:qw:SRTDataNV$sel:tx:SRTDataNV$sel:ty:SRTDataNV$sel:tz:SRTDataNV3$sel:maxInstances:AccelerationStructureMotionInfoNV,$sel:flags:AccelerationStructureMotionInfoNV$sel:vertexData:AccelerationStructureGeometryMotionTrianglesDataNV$sel:rayTracingMotionBlur:PhysicalDeviceRayTracingMotionBlurFeaturesNV$sel:rayTracingMotionBlurPipelineTraceRaysIndirect:PhysicalDeviceRayTracingMotionBlurFeaturesNV9ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV$sel:localDimmingEnable:SwapchainDisplayNativeHdrCreateInfoAMD?$sel:localDimmingSupport:DisplayNativeHdrSurfaceCapabilitiesAMD,$fZeroDisplayNativeHdrSurfaceCapabilitiesAMD0$fStorableDisplayNativeHdrSurfaceCapabilitiesAMD3$fFromCStructDisplayNativeHdrSurfaceCapabilitiesAMD1$fToCStructDisplayNativeHdrSurfaceCapabilitiesAMD,$fZeroSwapchainDisplayNativeHdrCreateInfoAMD0$fStorableSwapchainDisplayNativeHdrCreateInfoAMD3$fFromCStructSwapchainDisplayNativeHdrCreateInfoAMD1$fToCStructSwapchainDisplayNativeHdrCreateInfoAMD*$fEqSwapchainDisplayNativeHdrCreateInfoAMD*$fEqDisplayNativeHdrSurfaceCapabilitiesAMD,$fShowSwapchainDisplayNativeHdrCreateInfoAMD,$fShowDisplayNativeHdrSurfaceCapabilitiesAMD-$sel:flags:DescriptorUpdateTemplateCreateInfo?$sel:descriptorUpdateEntries:DescriptorUpdateTemplateCreateInfo4$sel:templateType:DescriptorUpdateTemplateCreateInfo;$sel:descriptorSetLayout:DescriptorUpdateTemplateCreateInfo9$sel:pipelineBindPoint:DescriptorUpdateTemplateCreateInfo6$sel:pipelineLayout:DescriptorUpdateTemplateCreateInfo+$sel:set:DescriptorUpdateTemplateCreateInfo-$sel:dstBinding:DescriptorUpdateTemplateEntry2$sel:dstArrayElement:DescriptorUpdateTemplateEntry2$sel:descriptorCount:DescriptorUpdateTemplateEntry1$sel:descriptorType:DescriptorUpdateTemplateEntry)$sel:offset:DescriptorUpdateTemplateEntry)$sel:stride:DescriptorUpdateTemplateEntrywithDescriptorUpdateTemplate#$fZeroDescriptorUpdateTemplateEntry'$fStorableDescriptorUpdateTemplateEntry*$fFromCStructDescriptorUpdateTemplateEntry($fToCStructDescriptorUpdateTemplateEntry($fZeroDescriptorUpdateTemplateCreateInfo/$fFromCStructDescriptorUpdateTemplateCreateInfo-$fToCStructDescriptorUpdateTemplateCreateInfo!$fEqDescriptorUpdateTemplateEntry($fShowDescriptorUpdateTemplateCreateInfo#$fShowDescriptorUpdateTemplateEntry#$sel:flags:PipelineLayoutCreateInfo($sel:setLayouts:PipelineLayoutCreateInfo0$sel:pushConstantRanges:PipelineLayoutCreateInfo!$sel:stageFlags:PushConstantRange$sel:offset:PushConstantRange$sel:size:PushConstantRangewithPipelineLayout$fZeroPushConstantRange$fStorablePushConstantRange$fFromCStructPushConstantRange$fToCStructPushConstantRange$fZeroPipelineLayoutCreateInfo%$fFromCStructPipelineLayoutCreateInfo#$fToCStructPipelineLayoutCreateInfo$fEqPushConstantRange$fShowPipelineLayoutCreateInfo$fShowPushConstantRange"$sel:flags:PipelineCacheCreateInfo,$sel:initialDataSize:PipelineCacheCreateInfo($sel:initialData:PipelineCacheCreateInfowithPipelineCache$fZeroPipelineCacheCreateInfo!$fStorablePipelineCacheCreateInfo$$fFromCStructPipelineCacheCreateInfo"$fToCStructPipelineCacheCreateInfo$fShowPipelineCacheCreateInfo$sel:size:MemoryRequirements!$sel:alignment:MemoryRequirements&$sel:memoryTypeBits:MemoryRequirements$fZeroMemoryRequirements$fStorableMemoryRequirements$fFromCStructMemoryRequirements$fToCStructMemoryRequirements$fEqMemoryRequirements$fShowMemoryRequirements$sel:layerName:LayerProperties $sel:specVersion:LayerProperties*$sel:implementationVersion:LayerProperties $sel:description:LayerProperties$fZeroLayerProperties$fStorableLayerProperties$fFromCStructLayerProperties$fToCStructLayerProperties$fShowLayerProperties&$sel:extensionName:ExtensionProperties$$sel:specVersion:ExtensionProperties$fZeroExtensionProperties$fStorableExtensionProperties $fFromCStructExtensionProperties$fToCStructExtensionProperties$fShowExtensionProperties$sel:flags:EventCreateInfo withEvent$fZeroEventCreateInfo$fStorableEventCreateInfo$fFromCStructEventCreateInfo$fToCStructEventCreateInfo$fEqEventCreateInfo$fShowEventCreateInfo $sel:flags:CommandPoolCreateInfo+$sel:queueFamilyIndex:CommandPoolCreateInfowithCommandPool$fZeroCommandPoolCreateInfo$fStorableCommandPoolCreateInfo"$fFromCStructCommandPoolCreateInfo $fToCStructCommandPoolCreateInfo$fEqCommandPoolCreateInfo$fShowCommandPoolCreateInfo$sel:flags:BufferViewCreateInfo $sel:buffer:BufferViewCreateInfo $sel:format:BufferViewCreateInfo $sel:offset:BufferViewCreateInfo$sel:range:BufferViewCreateInfowithBufferView$fZeroBufferViewCreateInfo$fStorableBufferViewCreateInfo!$fFromCStructBufferViewCreateInfo$fToCStructBufferViewCreateInfo$fEqBufferViewCreateInfo$fShowBufferViewCreateInfo>$sel:exportFromImportedHandleTypes:ExternalSemaphoreProperties6$sel:compatibleHandleTypes:ExternalSemaphoreProperties:$sel:externalSemaphoreFeatures:ExternalSemaphoreProperties-$sel:next:PhysicalDeviceExternalSemaphoreInfo3$sel:handleType:PhysicalDeviceExternalSemaphoreInfo)$fZeroPhysicalDeviceExternalSemaphoreInfo0$fFromCStructPhysicalDeviceExternalSemaphoreInfo.$fToCStructPhysicalDeviceExternalSemaphoreInfo/$fExtensiblePhysicalDeviceExternalSemaphoreInfo!$fZeroExternalSemaphoreProperties%$fStorableExternalSemaphoreProperties($fFromCStructExternalSemaphoreProperties&$fToCStructExternalSemaphoreProperties$fEqExternalSemaphoreProperties!$fShowExternalSemaphoreProperties)$fShowPhysicalDeviceExternalSemaphoreInfo2KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME0KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSIONExternalSemaphorePropertiesKHR&PhysicalDeviceExternalSemaphoreInfoKHR#ExternalSemaphoreFeatureFlagBitsKHR&ExternalSemaphoreHandleTypeFlagBitsKHR ExternalSemaphoreFeatureFlagsKHR#ExternalSemaphoreHandleTypeFlagsKHR-EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR-EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR.EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR2EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR7EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR3EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR0EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR0STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR:STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR$sel:next:BindImageMemoryInfo$sel:image:BindImageMemoryInfo$sel:memory:BindImageMemoryInfo%$sel:memoryOffset:BindImageMemoryInfo$sel:next:BindBufferMemoryInfo $sel:buffer:BindBufferMemoryInfo $sel:memory:BindBufferMemoryInfo&$sel:memoryOffset:BindBufferMemoryInfo$fZeroBindBufferMemoryInfo!$fFromCStructBindBufferMemoryInfo$fToCStructBindBufferMemoryInfo $fExtensibleBindBufferMemoryInfo$fZeroBindImageMemoryInfo $fFromCStructBindImageMemoryInfo$fToCStructBindImageMemoryInfo$fExtensibleBindImageMemoryInfo$fShowBindImageMemoryInfo$fShowBindBufferMemoryInfo KHR_BIND_MEMORY_2_EXTENSION_NAMEKHR_BIND_MEMORY_2_SPEC_VERSIONBindImageMemoryInfoKHRBindBufferMemoryInfoKHRIMAGE_CREATE_ALIAS_BIT_KHR)STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR*STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR$sel:next:BindSparseInfo"$sel:waitSemaphores:BindSparseInfo$sel:bufferBinds:BindSparseInfo$$sel:imageOpaqueBinds:BindSparseInfo$sel:imageBinds:BindSparseInfo$$sel:signalSemaphores:BindSparseInfo$$sel:image:SparseImageMemoryBindInfo$$sel:binds:SparseImageMemoryBindInfo*$sel:image:SparseImageOpaqueMemoryBindInfo*$sel:binds:SparseImageOpaqueMemoryBindInfo&$sel:buffer:SparseBufferMemoryBindInfo%$sel:binds:SparseBufferMemoryBindInfo&$sel:subresource:SparseImageMemoryBind!$sel:offset:SparseImageMemoryBind!$sel:extent:SparseImageMemoryBind!$sel:memory:SparseImageMemoryBind'$sel:memoryOffset:SparseImageMemoryBind $sel:flags:SparseImageMemoryBind$$sel:resourceOffset:SparseMemoryBind$sel:size:SparseMemoryBind$sel:memory:SparseMemoryBind"$sel:memoryOffset:SparseMemoryBind$sel:flags:SparseMemoryBind $sel:aspectMask:ImageSubresource$sel:mipLevel:ImageSubresource $sel:arrayLayer:ImageSubresource3$sel:formatProperties:SparseImageMemoryRequirements7$sel:imageMipTailFirstLod:SparseImageMemoryRequirements3$sel:imageMipTailSize:SparseImageMemoryRequirements5$sel:imageMipTailOffset:SparseImageMemoryRequirements5$sel:imageMipTailStride:SparseImageMemoryRequirements+$sel:aspectMask:SparseImageFormatProperties1$sel:imageGranularity:SparseImageFormatProperties&$sel:flags:SparseImageFormatProperties!$fZeroSparseImageFormatProperties%$fStorableSparseImageFormatProperties($fFromCStructSparseImageFormatProperties&$fToCStructSparseImageFormatProperties#$fZeroSparseImageMemoryRequirements'$fStorableSparseImageMemoryRequirements*$fFromCStructSparseImageMemoryRequirements($fToCStructSparseImageMemoryRequirements$fZeroImageSubresource$fStorableImageSubresource$fFromCStructImageSubresource$fToCStructImageSubresource$fZeroSparseMemoryBind$fStorableSparseMemoryBind$fFromCStructSparseMemoryBind$fToCStructSparseMemoryBind$fZeroSparseImageMemoryBind$fStorableSparseImageMemoryBind"$fFromCStructSparseImageMemoryBind $fToCStructSparseImageMemoryBind $fZeroSparseBufferMemoryBindInfo'$fFromCStructSparseBufferMemoryBindInfo%$fToCStructSparseBufferMemoryBindInfo%$fZeroSparseImageOpaqueMemoryBindInfo,$fFromCStructSparseImageOpaqueMemoryBindInfo*$fToCStructSparseImageOpaqueMemoryBindInfo$fZeroSparseImageMemoryBindInfo&$fFromCStructSparseImageMemoryBindInfo$$fToCStructSparseImageMemoryBindInfo$fZeroBindSparseInfo$fFromCStructBindSparseInfo$fToCStructBindSparseInfo$fExtensibleBindSparseInfo$fEqSparseMemoryBind$fEqImageSubresource$fShowBindSparseInfo$fShowSparseImageMemoryBindInfo%$fShowSparseImageOpaqueMemoryBindInfo $fShowSparseBufferMemoryBindInfo$fShowSparseImageMemoryBind$fShowSparseMemoryBind$fShowImageSubresource#$fShowSparseImageMemoryRequirements!$fShowSparseImageFormatProperties6$sel:memoryRequirements:SparseImageMemoryRequirements2$sel:next:MemoryRequirements2+$sel:memoryRequirements:MemoryRequirements2-$sel:image:ImageSparseMemoryRequirementsInfo2&$sel:next:ImageMemoryRequirementsInfo2'$sel:image:ImageMemoryRequirementsInfo2)$sel:buffer:BufferMemoryRequirementsInfo2#$fZeroBufferMemoryRequirementsInfo2'$fStorableBufferMemoryRequirementsInfo2*$fFromCStructBufferMemoryRequirementsInfo2($fToCStructBufferMemoryRequirementsInfo2"$fZeroImageMemoryRequirementsInfo2)$fFromCStructImageMemoryRequirementsInfo2'$fToCStructImageMemoryRequirementsInfo2($fExtensibleImageMemoryRequirementsInfo2($fZeroImageSparseMemoryRequirementsInfo2,$fStorableImageSparseMemoryRequirementsInfo2/$fFromCStructImageSparseMemoryRequirementsInfo2-$fToCStructImageSparseMemoryRequirementsInfo2$fZeroMemoryRequirements2 $fFromCStructMemoryRequirements2$fToCStructMemoryRequirements2$fExtensibleMemoryRequirements2$$fZeroSparseImageMemoryRequirements2($fStorableSparseImageMemoryRequirements2+$fFromCStructSparseImageMemoryRequirements2)$fToCStructSparseImageMemoryRequirements2&$fEqImageSparseMemoryRequirementsInfo2!$fEqBufferMemoryRequirementsInfo2$$fShowSparseImageMemoryRequirements2$fShowMemoryRequirements2($fShowImageSparseMemoryRequirementsInfo2"$fShowImageMemoryRequirementsInfo2#$fShowBufferMemoryRequirementsInfo2,KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME*KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION!SparseImageMemoryRequirements2KHR%ImageSparseMemoryRequirementsInfo2KHRImageMemoryRequirementsInfo2KHR BufferMemoryRequirementsInfo2KHR5STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR(STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR:STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR3STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR4STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR $sel:next:ShaderModuleCreateInfo!$sel:flags:ShaderModuleCreateInfo $sel:code:ShaderModuleCreateInfowithShaderModule$fZeroShaderModuleCreateInfo#$fFromCStructShaderModuleCreateInfo!$fToCStructShaderModuleCreateInfo"$fExtensibleShaderModuleCreateInfo$fShowShaderModuleCreateInfo$sel:next:SamplerCreateInfo$sel:flags:SamplerCreateInfo $sel:magFilter:SamplerCreateInfo $sel:minFilter:SamplerCreateInfo!$sel:mipmapMode:SamplerCreateInfo#$sel:addressModeU:SamplerCreateInfo#$sel:addressModeV:SamplerCreateInfo#$sel:addressModeW:SamplerCreateInfo!$sel:mipLodBias:SamplerCreateInfo'$sel:anisotropyEnable:SamplerCreateInfo$$sel:maxAnisotropy:SamplerCreateInfo$$sel:compareEnable:SamplerCreateInfo $sel:compareOp:SamplerCreateInfo$sel:minLod:SamplerCreateInfo$sel:maxLod:SamplerCreateInfo"$sel:borderColor:SamplerCreateInfo.$sel:unnormalizedCoordinates:SamplerCreateInfo withSampler$fZeroSamplerCreateInfo$fFromCStructSamplerCreateInfo$fToCStructSamplerCreateInfo$fExtensibleSamplerCreateInfo$fShowSamplerCreateInfo$sel:next:SemaphoreCreateInfo$sel:flags:SemaphoreCreateInfo withSemaphore$fZeroSemaphoreCreateInfo $fFromCStructSemaphoreCreateInfo$fToCStructSemaphoreCreateInfo$fExtensibleSemaphoreCreateInfo$fShowSemaphoreCreateInfo$sel:next:SubmitInfo$sel:waitSemaphores:SubmitInfo $sel:waitDstStageMask:SubmitInfo$sel:commandBuffers:SubmitInfo $sel:signalSemaphores:SubmitInfoqueueWaitIdleSafedeviceWaitIdleSafe$fZeroSubmitInfo$fFromCStructSubmitInfo$fToCStructSubmitInfo$fExtensibleSubmitInfo$fShowSubmitInfo$sel:next:QueryPoolCreateInfo$sel:flags:QueryPoolCreateInfo"$sel:queryType:QueryPoolCreateInfo#$sel:queryCount:QueryPoolCreateInfo+$sel:pipelineStatistics:QueryPoolCreateInfo withQueryPool$fZeroQueryPoolCreateInfo $fFromCStructQueryPoolCreateInfo$fToCStructQueryPoolCreateInfo$fExtensibleQueryPoolCreateInfo$fShowQueryPoolCreateInfo$$sel:next:GraphicsPipelineCreateInfo%$sel:flags:GraphicsPipelineCreateInfo&$sel:stages:GraphicsPipelineCreateInfo0$sel:vertexInputState:GraphicsPipelineCreateInfo2$sel:inputAssemblyState:GraphicsPipelineCreateInfo1$sel:tessellationState:GraphicsPipelineCreateInfo-$sel:viewportState:GraphicsPipelineCreateInfo2$sel:rasterizationState:GraphicsPipelineCreateInfo0$sel:multisampleState:GraphicsPipelineCreateInfo1$sel:depthStencilState:GraphicsPipelineCreateInfo/$sel:colorBlendState:GraphicsPipelineCreateInfo,$sel:dynamicState:GraphicsPipelineCreateInfo&$sel:layout:GraphicsPipelineCreateInfo*$sel:renderPass:GraphicsPipelineCreateInfo'$sel:subpass:GraphicsPipelineCreateInfo2$sel:basePipelineHandle:GraphicsPipelineCreateInfo1$sel:basePipelineIndex:GraphicsPipelineCreateInfo.$sel:flags:PipelineDepthStencilStateCreateInfo8$sel:depthTestEnable:PipelineDepthStencilStateCreateInfo9$sel:depthWriteEnable:PipelineDepthStencilStateCreateInfo7$sel:depthCompareOp:PipelineDepthStencilStateCreateInfo>$sel:depthBoundsTestEnable:PipelineDepthStencilStateCreateInfo:$sel:stencilTestEnable:PipelineDepthStencilStateCreateInfo.$sel:front:PipelineDepthStencilStateCreateInfo-$sel:back:PipelineDepthStencilStateCreateInfo7$sel:minDepthBounds:PipelineDepthStencilStateCreateInfo7$sel:maxDepthBounds:PipelineDepthStencilStateCreateInfo$sel:failOp:StencilOpState$sel:passOp:StencilOpState$sel:depthFailOp:StencilOpState$sel:compareOp:StencilOpState$sel:compareMask:StencilOpState$sel:writeMask:StencilOpState$sel:reference:StencilOpState)$sel:flags:PipelineDynamicStateCreateInfo1$sel:dynamicStates:PipelineDynamicStateCreateInfo+$sel:next:PipelineColorBlendStateCreateInfo,$sel:flags:PipelineColorBlendStateCreateInfo4$sel:logicOpEnable:PipelineColorBlendStateCreateInfo.$sel:logicOp:PipelineColorBlendStateCreateInfo2$sel:attachments:PipelineColorBlendStateCreateInfo5$sel:blendConstants:PipelineColorBlendStateCreateInfo2$sel:blendEnable:PipelineColorBlendAttachmentState:$sel:srcColorBlendFactor:PipelineColorBlendAttachmentState:$sel:dstColorBlendFactor:PipelineColorBlendAttachmentState3$sel:colorBlendOp:PipelineColorBlendAttachmentState:$sel:srcAlphaBlendFactor:PipelineColorBlendAttachmentState:$sel:dstAlphaBlendFactor:PipelineColorBlendAttachmentState3$sel:alphaBlendOp:PipelineColorBlendAttachmentState5$sel:colorWriteMask:PipelineColorBlendAttachmentState,$sel:next:PipelineMultisampleStateCreateInfo-$sel:flags:PipelineMultisampleStateCreateInfo<$sel:rasterizationSamples:PipelineMultisampleStateCreateInfo;$sel:sampleShadingEnable:PipelineMultisampleStateCreateInfo8$sel:minSampleShading:PipelineMultisampleStateCreateInfo2$sel:sampleMask:PipelineMultisampleStateCreateInfo=$sel:alphaToCoverageEnable:PipelineMultisampleStateCreateInfo8$sel:alphaToOneEnable:PipelineMultisampleStateCreateInfo.$sel:next:PipelineRasterizationStateCreateInfo/$sel:flags:PipelineRasterizationStateCreateInfo:$sel:depthClampEnable:PipelineRasterizationStateCreateInfo$sel:rasterizerDiscardEnable:PipelineRasterizationStateCreateInfo5$sel:polygonMode:PipelineRasterizationStateCreateInfo2$sel:cullMode:PipelineRasterizationStateCreateInfo3$sel:frontFace:PipelineRasterizationStateCreateInfo9$sel:depthBiasEnable:PipelineRasterizationStateCreateInfo$sel:depthBiasConstantFactor:PipelineRasterizationStateCreateInfo8$sel:depthBiasClamp:PipelineRasterizationStateCreateInfo>$sel:depthBiasSlopeFactor:PipelineRasterizationStateCreateInfo3$sel:lineWidth:PipelineRasterizationStateCreateInfo)$sel:next:PipelineViewportStateCreateInfo*$sel:flags:PipelineViewportStateCreateInfo2$sel:viewportCount:PipelineViewportStateCreateInfo.$sel:viewports:PipelineViewportStateCreateInfo1$sel:scissorCount:PipelineViewportStateCreateInfo-$sel:scissors:PipelineViewportStateCreateInfo-$sel:next:PipelineTessellationStateCreateInfo.$sel:flags:PipelineTessellationStateCreateInfo;$sel:patchControlPoints:PipelineTessellationStateCreateInfo/$sel:flags:PipelineInputAssemblyStateCreateInfo2$sel:topology:PipelineInputAssemblyStateCreateInfo$sel:primitiveRestartEnable:PipelineInputAssemblyStateCreateInfo,$sel:next:PipelineVertexInputStateCreateInfo-$sel:flags:PipelineVertexInputStateCreateInfo$sel:vertexBindingDescriptions:PipelineVertexInputStateCreateInfo$sel:vertexAttributeDescriptions:PipelineVertexInputStateCreateInfo-$sel:location:VertexInputAttributeDescription,$sel:binding:VertexInputAttributeDescription+$sel:format:VertexInputAttributeDescription+$sel:offset:VertexInputAttributeDescription*$sel:binding:VertexInputBindingDescription)$sel:stride:VertexInputBindingDescription,$sel:inputRate:VertexInputBindingDescription#$sel:next:ComputePipelineCreateInfo$$sel:flags:ComputePipelineCreateInfo$$sel:stage:ComputePipelineCreateInfo%$sel:layout:ComputePipelineCreateInfo1$sel:basePipelineHandle:ComputePipelineCreateInfo0$sel:basePipelineIndex:ComputePipelineCreateInfo'$sel:next:PipelineShaderStageCreateInfo($sel:flags:PipelineShaderStageCreateInfo($sel:stage:PipelineShaderStageCreateInfo*$sel:module':PipelineShaderStageCreateInfo'$sel:name:PipelineShaderStageCreateInfo5$sel:specializationInfo:PipelineShaderStageCreateInfo"$sel:mapEntries:SpecializationInfo $sel:dataSize:SpecializationInfo$sel:data':SpecializationInfo&$sel:constantID:SpecializationMapEntry"$sel:offset:SpecializationMapEntry $sel:size:SpecializationMapEntry$sel:x:Viewport$sel:y:Viewport$sel:width:Viewport$sel:height:Viewport$sel:minDepth:Viewport$sel:maxDepth:ViewportwithGraphicsPipelineswithComputePipelines$fZeroViewport$fStorableViewport$fFromCStructViewport$fToCStructViewport$fZeroSpecializationMapEntry $fStorableSpecializationMapEntry#$fFromCStructSpecializationMapEntry!$fToCStructSpecializationMapEntry$fZeroSpecializationInfo$fFromCStructSpecializationInfo$fToCStructSpecializationInfo#$fZeroPipelineShaderStageCreateInfo*$fFromCStructPipelineShaderStageCreateInfo($fToCStructPipelineShaderStageCreateInfo)$fExtensiblePipelineShaderStageCreateInfo$fZeroComputePipelineCreateInfo&$fFromCStructComputePipelineCreateInfo$$fToCStructComputePipelineCreateInfo%$fExtensibleComputePipelineCreateInfo#$fZeroVertexInputBindingDescription'$fStorableVertexInputBindingDescription*$fFromCStructVertexInputBindingDescription($fToCStructVertexInputBindingDescription%$fZeroVertexInputAttributeDescription)$fStorableVertexInputAttributeDescription,$fFromCStructVertexInputAttributeDescription*$fToCStructVertexInputAttributeDescription($fZeroPipelineVertexInputStateCreateInfo/$fFromCStructPipelineVertexInputStateCreateInfo-$fToCStructPipelineVertexInputStateCreateInfo.$fExtensiblePipelineVertexInputStateCreateInfo*$fZeroPipelineInputAssemblyStateCreateInfo.$fStorablePipelineInputAssemblyStateCreateInfo1$fFromCStructPipelineInputAssemblyStateCreateInfo/$fToCStructPipelineInputAssemblyStateCreateInfo)$fZeroPipelineTessellationStateCreateInfo0$fFromCStructPipelineTessellationStateCreateInfo.$fToCStructPipelineTessellationStateCreateInfo/$fExtensiblePipelineTessellationStateCreateInfo%$fZeroPipelineViewportStateCreateInfo,$fFromCStructPipelineViewportStateCreateInfo*$fToCStructPipelineViewportStateCreateInfo+$fExtensiblePipelineViewportStateCreateInfo*$fZeroPipelineRasterizationStateCreateInfo1$fFromCStructPipelineRasterizationStateCreateInfo/$fToCStructPipelineRasterizationStateCreateInfo0$fExtensiblePipelineRasterizationStateCreateInfo($fZeroPipelineMultisampleStateCreateInfo/$fFromCStructPipelineMultisampleStateCreateInfo-$fToCStructPipelineMultisampleStateCreateInfo.$fExtensiblePipelineMultisampleStateCreateInfo'$fZeroPipelineColorBlendAttachmentState+$fStorablePipelineColorBlendAttachmentState.$fFromCStructPipelineColorBlendAttachmentState,$fToCStructPipelineColorBlendAttachmentState'$fZeroPipelineColorBlendStateCreateInfo.$fFromCStructPipelineColorBlendStateCreateInfo,$fToCStructPipelineColorBlendStateCreateInfo-$fExtensiblePipelineColorBlendStateCreateInfo$$fZeroPipelineDynamicStateCreateInfo+$fFromCStructPipelineDynamicStateCreateInfo)$fToCStructPipelineDynamicStateCreateInfo$fZeroStencilOpState$fStorableStencilOpState$fFromCStructStencilOpState$fToCStructStencilOpState)$fZeroPipelineDepthStencilStateCreateInfo-$fStorablePipelineDepthStencilStateCreateInfo0$fFromCStructPipelineDepthStencilStateCreateInfo.$fToCStructPipelineDepthStencilStateCreateInfo $fZeroGraphicsPipelineCreateInfo'$fFromCStructGraphicsPipelineCreateInfo%$fToCStructGraphicsPipelineCreateInfo&$fExtensibleGraphicsPipelineCreateInfo$fEqStencilOpState%$fEqPipelineColorBlendAttachmentState($fEqPipelineInputAssemblyStateCreateInfo#$fEqVertexInputAttributeDescription!$fEqVertexInputBindingDescription$fEqSpecializationMapEntry $fEqViewport $fShowGraphicsPipelineCreateInfo)$fShowPipelineDepthStencilStateCreateInfo$fShowStencilOpState$$fShowPipelineDynamicStateCreateInfo'$fShowPipelineColorBlendStateCreateInfo'$fShowPipelineColorBlendAttachmentState($fShowPipelineMultisampleStateCreateInfo*$fShowPipelineRasterizationStateCreateInfo%$fShowPipelineViewportStateCreateInfo)$fShowPipelineTessellationStateCreateInfo*$fShowPipelineInputAssemblyStateCreateInfo($fShowPipelineVertexInputStateCreateInfo%$fShowVertexInputAttributeDescription#$fShowVertexInputBindingDescription$fShowComputePipelineCreateInfo#$fShowPipelineShaderStageCreateInfo$fShowSpecializationInfo$fShowSpecializationMapEntry$fShowViewport,NV_INHERITED_VIEWPORT_SCISSOR_EXTENSION_NAME*NV_INHERITED_VIEWPORT_SCISSOR_SPEC_VERSION$sel:viewportScissor2D:CommandBufferInheritanceViewportScissorInfoNV$sel:viewportDepthCount:CommandBufferInheritanceViewportScissorInfoNV$sel:viewportDepths:CommandBufferInheritanceViewportScissorInfoNV$sel:inheritedViewportScissor2D:PhysicalDeviceInheritedViewportScissorFeaturesNV6$fZeroPhysicalDeviceInheritedViewportScissorFeaturesNV:$fStorablePhysicalDeviceInheritedViewportScissorFeaturesNV=$fFromCStructPhysicalDeviceInheritedViewportScissorFeaturesNV;$fToCStructPhysicalDeviceInheritedViewportScissorFeaturesNV3$fZeroCommandBufferInheritanceViewportScissorInfoNV:$fFromCStructCommandBufferInheritanceViewportScissorInfoNV8$fToCStructCommandBufferInheritanceViewportScissorInfoNV4$fEqPhysicalDeviceInheritedViewportScissorFeaturesNV3$fShowCommandBufferInheritanceViewportScissorInfoNV6$fShowPhysicalDeviceInheritedViewportScissorFeaturesNV+NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME)NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSIONIndirectCommandsTokenTypeNVIndirectStateFlagBitsNVIndirectStateFlagsNV%IndirectCommandsLayoutUsageFlagBitsNV"IndirectCommandsLayoutUsageFlagsNV$sel:pipelineBindPoint:GeneratedCommandsMemoryRequirementsInfoNV7$sel:pipeline:GeneratedCommandsMemoryRequirementsInfoNV$sel:indirectCommandsLayout:GeneratedCommandsMemoryRequirementsInfoNV$sel:maxSequencesCount:GeneratedCommandsMemoryRequirementsInfoNV.$sel:pipelineBindPoint:GeneratedCommandsInfoNV%$sel:pipeline:GeneratedCommandsInfoNV3$sel:indirectCommandsLayout:GeneratedCommandsInfoNV$$sel:streams:GeneratedCommandsInfoNV+$sel:sequencesCount:GeneratedCommandsInfoNV-$sel:preprocessBuffer:GeneratedCommandsInfoNV-$sel:preprocessOffset:GeneratedCommandsInfoNV+$sel:preprocessSize:GeneratedCommandsInfoNV1$sel:sequencesCountBuffer:GeneratedCommandsInfoNV1$sel:sequencesCountOffset:GeneratedCommandsInfoNV1$sel:sequencesIndexBuffer:GeneratedCommandsInfoNV1$sel:sequencesIndexOffset:GeneratedCommandsInfoNV-$sel:flags:IndirectCommandsLayoutCreateInfoNV9$sel:pipelineBindPoint:IndirectCommandsLayoutCreateInfoNV.$sel:tokens:IndirectCommandsLayoutCreateInfoNV5$sel:streamStrides:IndirectCommandsLayoutCreateInfoNV,$sel:tokenType:IndirectCommandsLayoutTokenNV)$sel:stream:IndirectCommandsLayoutTokenNV)$sel:offset:IndirectCommandsLayoutTokenNV4$sel:vertexBindingUnit:IndirectCommandsLayoutTokenNV6$sel:vertexDynamicStride:IndirectCommandsLayoutTokenNV=$sel:pushconstantPipelineLayout:IndirectCommandsLayoutTokenNV?$sel:pushconstantShaderStageFlags:IndirectCommandsLayoutTokenNV5$sel:pushconstantOffset:IndirectCommandsLayoutTokenNV3$sel:pushconstantSize:IndirectCommandsLayoutTokenNV5$sel:indirectStateFlags:IndirectCommandsLayoutTokenNV-$sel:indexTypes:IndirectCommandsLayoutTokenNV2$sel:indexTypeValues:IndirectCommandsLayoutTokenNV$$sel:buffer:IndirectCommandsStreamNV$$sel:offset:IndirectCommandsStreamNV)$sel:data':SetStateFlagsIndirectCommandNV4$sel:bufferAddress:BindVertexBufferIndirectCommandNV+$sel:size:BindVertexBufferIndirectCommandNV-$sel:stride:BindVertexBufferIndirectCommandNV3$sel:bufferAddress:BindIndexBufferIndirectCommandNV*$sel:size:BindIndexBufferIndirectCommandNV/$sel:indexType:BindIndexBufferIndirectCommandNV0$sel:groupIndex:BindShaderGroupIndirectCommandNV4$sel:groups:GraphicsPipelineShaderGroupsCreateInfoNV7$sel:pipelines:GraphicsPipelineShaderGroupsCreateInfoNV+$sel:stages:GraphicsShaderGroupCreateInfoNV5$sel:vertexInputState:GraphicsShaderGroupCreateInfoNV6$sel:tessellationState:GraphicsShaderGroupCreateInfoNV$sel:maxGraphicsShaderGroupCount:PhysicalDeviceDeviceGeneratedCommandsPropertiesNV$sel:maxIndirectSequenceCount:PhysicalDeviceDeviceGeneratedCommandsPropertiesNV$sel:maxIndirectCommandsTokenCount:PhysicalDeviceDeviceGeneratedCommandsPropertiesNV$sel:maxIndirectCommandsStreamCount:PhysicalDeviceDeviceGeneratedCommandsPropertiesNV$sel:maxIndirectCommandsTokenOffset:PhysicalDeviceDeviceGeneratedCommandsPropertiesNV$sel:maxIndirectCommandsStreamStride:PhysicalDeviceDeviceGeneratedCommandsPropertiesNV$sel:minSequencesCountBufferOffsetAlignment:PhysicalDeviceDeviceGeneratedCommandsPropertiesNV$sel:minSequencesIndexBufferOffsetAlignment:PhysicalDeviceDeviceGeneratedCommandsPropertiesNV$sel:minIndirectCommandsBufferOffsetAlignment:PhysicalDeviceDeviceGeneratedCommandsPropertiesNV$sel:deviceGeneratedCommands:PhysicalDeviceDeviceGeneratedCommandsFeaturesNV*INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV$INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV,INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV-INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV-INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV,INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV+INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV,INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV$INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV9INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV7INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV9INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NVwithIndirectCommandsLayoutNV5$fZeroPhysicalDeviceDeviceGeneratedCommandsFeaturesNV9$fStorablePhysicalDeviceDeviceGeneratedCommandsFeaturesNV<$fFromCStructPhysicalDeviceDeviceGeneratedCommandsFeaturesNV:$fToCStructPhysicalDeviceDeviceGeneratedCommandsFeaturesNV7$fZeroPhysicalDeviceDeviceGeneratedCommandsPropertiesNV;$fStorablePhysicalDeviceDeviceGeneratedCommandsPropertiesNV>$fFromCStructPhysicalDeviceDeviceGeneratedCommandsPropertiesNV<$fToCStructPhysicalDeviceDeviceGeneratedCommandsPropertiesNV%$fZeroGraphicsShaderGroupCreateInfoNV,$fFromCStructGraphicsShaderGroupCreateInfoNV*$fToCStructGraphicsShaderGroupCreateInfoNV.$fZeroGraphicsPipelineShaderGroupsCreateInfoNV5$fFromCStructGraphicsPipelineShaderGroupsCreateInfoNV3$fToCStructGraphicsPipelineShaderGroupsCreateInfoNV&$fZeroBindShaderGroupIndirectCommandNV*$fStorableBindShaderGroupIndirectCommandNV-$fFromCStructBindShaderGroupIndirectCommandNV+$fToCStructBindShaderGroupIndirectCommandNV&$fZeroBindIndexBufferIndirectCommandNV*$fStorableBindIndexBufferIndirectCommandNV-$fFromCStructBindIndexBufferIndirectCommandNV+$fToCStructBindIndexBufferIndirectCommandNV'$fZeroBindVertexBufferIndirectCommandNV+$fStorableBindVertexBufferIndirectCommandNV.$fFromCStructBindVertexBufferIndirectCommandNV,$fToCStructBindVertexBufferIndirectCommandNV$$fZeroSetStateFlagsIndirectCommandNV($fStorableSetStateFlagsIndirectCommandNV+$fFromCStructSetStateFlagsIndirectCommandNV)$fToCStructSetStateFlagsIndirectCommandNV$fZeroIndirectCommandsStreamNV"$fStorableIndirectCommandsStreamNV%$fFromCStructIndirectCommandsStreamNV#$fToCStructIndirectCommandsStreamNV$fZeroGeneratedCommandsInfoNV$$fFromCStructGeneratedCommandsInfoNV"$fToCStructGeneratedCommandsInfoNV/$fZeroGeneratedCommandsMemoryRequirementsInfoNV3$fStorableGeneratedCommandsMemoryRequirementsInfoNV6$fFromCStructGeneratedCommandsMemoryRequirementsInfoNV4$fToCStructGeneratedCommandsMemoryRequirementsInfoNV+$fReadIndirectCommandsLayoutUsageFlagBitsNV+$fShowIndirectCommandsLayoutUsageFlagBitsNV$fReadIndirectStateFlagBitsNV$fShowIndirectStateFlagBitsNV!$fReadIndirectCommandsTokenTypeNV!$fShowIndirectCommandsTokenTypeNV#$fZeroIndirectCommandsLayoutTokenNV*$fFromCStructIndirectCommandsLayoutTokenNV($fToCStructIndirectCommandsLayoutTokenNV($fZeroIndirectCommandsLayoutCreateInfoNV/$fFromCStructIndirectCommandsLayoutCreateInfoNV-$fToCStructIndirectCommandsLayoutCreateInfoNV$fEqIndirectCommandsTokenTypeNV $fOrdIndirectCommandsTokenTypeNV%$fStorableIndirectCommandsTokenTypeNV!$fZeroIndirectCommandsTokenTypeNV$fEqIndirectStateFlagBitsNV$fOrdIndirectStateFlagBitsNV!$fStorableIndirectStateFlagBitsNV$fZeroIndirectStateFlagBitsNV$fBitsIndirectStateFlagBitsNV#$fFiniteBitsIndirectStateFlagBitsNV)$fEqIndirectCommandsLayoutUsageFlagBitsNV*$fOrdIndirectCommandsLayoutUsageFlagBitsNV/$fStorableIndirectCommandsLayoutUsageFlagBitsNV+$fZeroIndirectCommandsLayoutUsageFlagBitsNV+$fBitsIndirectCommandsLayoutUsageFlagBitsNV1$fFiniteBitsIndirectCommandsLayoutUsageFlagBitsNV-$fEqGeneratedCommandsMemoryRequirementsInfoNV$fEqIndirectCommandsStreamNV"$fEqSetStateFlagsIndirectCommandNV%$fEqBindVertexBufferIndirectCommandNV$$fEqBindIndexBufferIndirectCommandNV$$fEqBindShaderGroupIndirectCommandNV5$fEqPhysicalDeviceDeviceGeneratedCommandsPropertiesNV3$fEqPhysicalDeviceDeviceGeneratedCommandsFeaturesNV/$fShowGeneratedCommandsMemoryRequirementsInfoNV$fShowGeneratedCommandsInfoNV($fShowIndirectCommandsLayoutCreateInfoNV#$fShowIndirectCommandsLayoutTokenNV$fShowIndirectCommandsStreamNV$$fShowSetStateFlagsIndirectCommandNV'$fShowBindVertexBufferIndirectCommandNV&$fShowBindIndexBufferIndirectCommandNV&$fShowBindShaderGroupIndirectCommandNV.$fShowGraphicsPipelineShaderGroupsCreateInfoNV%$fShowGraphicsShaderGroupCreateInfoNV7$fShowPhysicalDeviceDeviceGeneratedCommandsPropertiesNV5$fShowPhysicalDeviceDeviceGeneratedCommandsFeaturesNV'KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME%KHR_RAY_TRACING_PIPELINE_SPEC_VERSION$sel:maxPipelineRayPayloadSize:RayTracingPipelineInterfaceCreateInfoKHR$sel:maxPipelineRayHitAttributeSize:RayTracingPipelineInterfaceCreateInfoKHR&$sel:width:TraceRaysIndirectCommandKHR'$sel:height:TraceRaysIndirectCommandKHR&$sel:depth:TraceRaysIndirectCommandKHR0$sel:deviceAddress:StridedDeviceAddressRegionKHR)$sel:stride:StridedDeviceAddressRegionKHR'$sel:size:StridedDeviceAddressRegionKHR$sel:shaderGroupHandleSize:PhysicalDeviceRayTracingPipelinePropertiesKHR$sel:maxRayRecursionDepth:PhysicalDeviceRayTracingPipelinePropertiesKHR$sel:maxShaderGroupStride:PhysicalDeviceRayTracingPipelinePropertiesKHR$sel:shaderGroupBaseAlignment:PhysicalDeviceRayTracingPipelinePropertiesKHR$sel:shaderGroupHandleCaptureReplaySize:PhysicalDeviceRayTracingPipelinePropertiesKHR$sel:maxRayDispatchInvocationCount:PhysicalDeviceRayTracingPipelinePropertiesKHR$sel:shaderGroupHandleAlignment:PhysicalDeviceRayTracingPipelinePropertiesKHR$sel:maxRayHitAttributeSize:PhysicalDeviceRayTracingPipelinePropertiesKHR$sel:rayTracingPipeline:PhysicalDeviceRayTracingPipelineFeaturesKHR$sel:rayTracingPipelineShaderGroupHandleCaptureReplay:PhysicalDeviceRayTracingPipelineFeaturesKHR$sel:rayTracingPipelineShaderGroupHandleCaptureReplayMixed:PhysicalDeviceRayTracingPipelineFeaturesKHR$sel:rayTracingPipelineTraceRaysIndirect:PhysicalDeviceRayTracingPipelineFeaturesKHR$sel:rayTraversalPrimitiveCulling:PhysicalDeviceRayTracingPipelineFeaturesKHR)$sel:next:RayTracingPipelineCreateInfoKHR*$sel:flags:RayTracingPipelineCreateInfoKHR+$sel:stages:RayTracingPipelineCreateInfoKHR+$sel:groups:RayTracingPipelineCreateInfoKHR$sel:maxPipelineRayRecursionDepth:RayTracingPipelineCreateInfoKHR0$sel:libraryInfo:RayTracingPipelineCreateInfoKHR5$sel:libraryInterface:RayTracingPipelineCreateInfoKHR1$sel:dynamicState:RayTracingPipelineCreateInfoKHR+$sel:layout:RayTracingPipelineCreateInfoKHR7$sel:basePipelineHandle:RayTracingPipelineCreateInfoKHR6$sel:basePipelineIndex:RayTracingPipelineCreateInfoKHR-$sel:type':RayTracingShaderGroupCreateInfoKHR5$sel:generalShader:RayTracingShaderGroupCreateInfoKHR8$sel:closestHitShader:RayTracingShaderGroupCreateInfoKHR4$sel:anyHitShader:RayTracingShaderGroupCreateInfoKHR:$sel:intersectionShader:RayTracingShaderGroupCreateInfoKHR$sel:shaderGroupCaptureReplayHandle:RayTracingShaderGroupCreateInfoKHR$SHADER_GROUP_SHADER_INTERSECTION_KHRSHADER_GROUP_SHADER_ANY_HIT_KHR#SHADER_GROUP_SHADER_CLOSEST_HIT_KHRSHADER_GROUP_SHADER_GENERAL_KHR6RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR5RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR)RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHRwithRayTracingPipelinesKHR1$fZeroPhysicalDeviceRayTracingPipelineFeaturesKHR5$fStorablePhysicalDeviceRayTracingPipelineFeaturesKHR8$fFromCStructPhysicalDeviceRayTracingPipelineFeaturesKHR6$fToCStructPhysicalDeviceRayTracingPipelineFeaturesKHR3$fZeroPhysicalDeviceRayTracingPipelinePropertiesKHR7$fStorablePhysicalDeviceRayTracingPipelinePropertiesKHR:$fFromCStructPhysicalDeviceRayTracingPipelinePropertiesKHR8$fToCStructPhysicalDeviceRayTracingPipelinePropertiesKHR#$fZeroStridedDeviceAddressRegionKHR'$fStorableStridedDeviceAddressRegionKHR*$fFromCStructStridedDeviceAddressRegionKHR($fToCStructStridedDeviceAddressRegionKHR!$fZeroTraceRaysIndirectCommandKHR%$fStorableTraceRaysIndirectCommandKHR($fFromCStructTraceRaysIndirectCommandKHR&$fToCStructTraceRaysIndirectCommandKHR.$fZeroRayTracingPipelineInterfaceCreateInfoKHR2$fStorableRayTracingPipelineInterfaceCreateInfoKHR5$fFromCStructRayTracingPipelineInterfaceCreateInfoKHR3$fToCStructRayTracingPipelineInterfaceCreateInfoKHR"$fReadRayTracingShaderGroupTypeKHR"$fShowRayTracingShaderGroupTypeKHR($fZeroRayTracingShaderGroupCreateInfoKHR,$fStorableRayTracingShaderGroupCreateInfoKHR/$fFromCStructRayTracingShaderGroupCreateInfoKHR-$fToCStructRayTracingShaderGroupCreateInfoKHR%$fZeroRayTracingPipelineCreateInfoKHR,$fFromCStructRayTracingPipelineCreateInfoKHR*$fToCStructRayTracingPipelineCreateInfoKHR+$fExtensibleRayTracingPipelineCreateInfoKHR$fReadShaderGroupShaderKHR$fShowShaderGroupShaderKHR$fEqShaderGroupShaderKHR$fOrdShaderGroupShaderKHR$fStorableShaderGroupShaderKHR$fZeroShaderGroupShaderKHR $fEqRayTracingShaderGroupTypeKHR!$fOrdRayTracingShaderGroupTypeKHR&$fStorableRayTracingShaderGroupTypeKHR"$fZeroRayTracingShaderGroupTypeKHR,$fEqRayTracingPipelineInterfaceCreateInfoKHR$fEqTraceRaysIndirectCommandKHR!$fEqStridedDeviceAddressRegionKHR1$fEqPhysicalDeviceRayTracingPipelinePropertiesKHR/$fEqPhysicalDeviceRayTracingPipelineFeaturesKHR.$fShowRayTracingPipelineInterfaceCreateInfoKHR!$fShowTraceRaysIndirectCommandKHR#$fShowStridedDeviceAddressRegionKHR3$fShowPhysicalDeviceRayTracingPipelinePropertiesKHR1$fShowPhysicalDeviceRayTracingPipelineFeaturesKHR%$fShowRayTracingPipelineCreateInfoKHR($fShowRayTracingShaderGroupCreateInfoKHRNV_RAY_TRACING_EXTENSION_NAMENV_RAY_TRACING_SPEC_VERSIONAccelerationStructureInstanceNVTransformMatrixNVAabbPositionsNVRayTracingShaderGroupTypeNVGeometryTypeNVAccelerationStructureTypeNVCopyAccelerationStructureModeNV$BuildAccelerationStructureFlagBitsNVGeometryInstanceFlagBitsNVGeometryFlagBitsNV!BuildAccelerationStructureFlagsNVGeometryInstanceFlagsNVGeometryFlagsNV-AccelerationStructureMemoryRequirementsTypeNV?$sel:shaderGroupHandleSize:PhysicalDeviceRayTracingPropertiesNV;$sel:maxRecursionDepth:PhysicalDeviceRayTracingPropertiesNV>$sel:maxShaderGroupStride:PhysicalDeviceRayTracingPropertiesNV$sel:shaderGroupBaseAlignment:PhysicalDeviceRayTracingPropertiesNV:$sel:maxGeometryCount:PhysicalDeviceRayTracingPropertiesNV:$sel:maxInstanceCount:PhysicalDeviceRayTracingPropertiesNV:$sel:maxTriangleCount:PhysicalDeviceRayTracingPropertiesNV$sel:maxDescriptorSetAccelerationStructures:PhysicalDeviceRayTracingPropertiesNV8$sel:type':AccelerationStructureMemoryRequirementsInfoNV$sel:accelerationStructure:AccelerationStructureMemoryRequirementsInfoNV$sel:accelerationStructures:WriteDescriptorSetAccelerationStructureNV$sel:accelerationStructure:BindAccelerationStructureMemoryInfoNV1$sel:memory:BindAccelerationStructureMemoryInfoNV7$sel:memoryOffset:BindAccelerationStructureMemoryInfoNV8$sel:deviceIndices:BindAccelerationStructureMemoryInfoNV4$sel:compactedSize:AccelerationStructureCreateInfoNV+$sel:info:AccelerationStructureCreateInfoNV&$sel:type':AccelerationStructureInfoNV&$sel:flags:AccelerationStructureInfoNV.$sel:instanceCount:AccelerationStructureInfoNV+$sel:geometries:AccelerationStructureInfoNV$sel:geometryType:GeometryNV$sel:geometry:GeometryNV$sel:flags:GeometryNV$sel:triangles:GeometryDataNV$sel:aabbs:GeometryDataNV$sel:aabbData:GeometryAABBNV$sel:numAABBs:GeometryAABBNV$sel:stride:GeometryAABBNV$sel:offset:GeometryAABBNV#$sel:vertexData:GeometryTrianglesNV%$sel:vertexOffset:GeometryTrianglesNV$$sel:vertexCount:GeometryTrianglesNV%$sel:vertexStride:GeometryTrianglesNV%$sel:vertexFormat:GeometryTrianglesNV"$sel:indexData:GeometryTrianglesNV$$sel:indexOffset:GeometryTrianglesNV#$sel:indexCount:GeometryTrianglesNV"$sel:indexType:GeometryTrianglesNV&$sel:transformData:GeometryTrianglesNV($sel:transformOffset:GeometryTrianglesNV($sel:next:RayTracingPipelineCreateInfoNV)$sel:flags:RayTracingPipelineCreateInfoNV*$sel:stages:RayTracingPipelineCreateInfoNV*$sel:groups:RayTracingPipelineCreateInfoNV5$sel:maxRecursionDepth:RayTracingPipelineCreateInfoNV*$sel:layout:RayTracingPipelineCreateInfoNV6$sel:basePipelineHandle:RayTracingPipelineCreateInfoNV5$sel:basePipelineIndex:RayTracingPipelineCreateInfoNV,$sel:type':RayTracingShaderGroupCreateInfoNV4$sel:generalShader:RayTracingShaderGroupCreateInfoNV7$sel:closestHitShader:RayTracingShaderGroupCreateInfoNV3$sel:anyHitShader:RayTracingShaderGroupCreateInfoNV9$sel:intersectionShader:RayTracingShaderGroupCreateInfoNVACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NVACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV9ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV+COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV)COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV.BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV5BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV5BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV4BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV0BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV(GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV%GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV8GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV.GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV/GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NVGEOMETRY_OPAQUE_BIT_NV+ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV(ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NVGEOMETRY_TYPE_AABBS_NVGEOMETRY_TYPE_TRIANGLES_NV5RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV4RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV(RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NVINDEX_TYPE_NONE_NV*ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV)ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV"PIPELINE_BIND_POINT_RAY_TRACING_NVBUFFER_USAGE_RAY_TRACING_BIT_NV2PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV(PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NVSHADER_STAGE_CALLABLE_BIT_NV SHADER_STAGE_INTERSECTION_BIT_NVSHADER_STAGE_MISS_BIT_NVSHADER_STAGE_CLOSEST_HIT_BIT_NVSHADER_STAGE_ANY_HIT_BIT_NVSHADER_STAGE_RAYGEN_BIT_NVwithAccelerationStructureNVwithRayTracingPipelinesNV'$fZeroRayTracingShaderGroupCreateInfoNV+$fStorableRayTracingShaderGroupCreateInfoNV.$fFromCStructRayTracingShaderGroupCreateInfoNV,$fToCStructRayTracingShaderGroupCreateInfoNV$$fZeroRayTracingPipelineCreateInfoNV+$fFromCStructRayTracingPipelineCreateInfoNV)$fToCStructRayTracingPipelineCreateInfoNV*$fExtensibleRayTracingPipelineCreateInfoNV$fZeroGeometryTrianglesNV$fStorableGeometryTrianglesNV $fFromCStructGeometryTrianglesNV$fToCStructGeometryTrianglesNV$fZeroGeometryAABBNV$fStorableGeometryAABBNV$fFromCStructGeometryAABBNV$fToCStructGeometryAABBNV$fZeroGeometryDataNV$fStorableGeometryDataNV$fFromCStructGeometryDataNV$fToCStructGeometryDataNV$fZeroGeometryNV$fStorableGeometryNV$fFromCStructGeometryNV$fToCStructGeometryNV+$fZeroBindAccelerationStructureMemoryInfoNV2$fFromCStructBindAccelerationStructureMemoryInfoNV0$fToCStructBindAccelerationStructureMemoryInfoNV/$fZeroWriteDescriptorSetAccelerationStructureNV6$fFromCStructWriteDescriptorSetAccelerationStructureNV4$fToCStructWriteDescriptorSetAccelerationStructureNV*$fZeroPhysicalDeviceRayTracingPropertiesNV.$fStorablePhysicalDeviceRayTracingPropertiesNV1$fFromCStructPhysicalDeviceRayTracingPropertiesNV/$fToCStructPhysicalDeviceRayTracingPropertiesNV3$fReadAccelerationStructureMemoryRequirementsTypeNV3$fShowAccelerationStructureMemoryRequirementsTypeNV3$fZeroAccelerationStructureMemoryRequirementsInfoNV7$fStorableAccelerationStructureMemoryRequirementsInfoNV:$fFromCStructAccelerationStructureMemoryRequirementsInfoNV8$fToCStructAccelerationStructureMemoryRequirementsInfoNV!$fZeroAccelerationStructureInfoNV($fFromCStructAccelerationStructureInfoNV&$fToCStructAccelerationStructureInfoNV'$fZeroAccelerationStructureCreateInfoNV.$fFromCStructAccelerationStructureCreateInfoNV,$fToCStructAccelerationStructureCreateInfoNV1$fEqAccelerationStructureMemoryRequirementsInfoNV1$fEqAccelerationStructureMemoryRequirementsTypeNV2$fOrdAccelerationStructureMemoryRequirementsTypeNV7$fStorableAccelerationStructureMemoryRequirementsTypeNV3$fZeroAccelerationStructureMemoryRequirementsTypeNV($fEqPhysicalDeviceRayTracingPropertiesNV$fEqGeometryAABBNV$fEqGeometryTrianglesNV%$fEqRayTracingShaderGroupCreateInfoNV*$fShowPhysicalDeviceRayTracingPropertiesNV3$fShowAccelerationStructureMemoryRequirementsInfoNV/$fShowWriteDescriptorSetAccelerationStructureNV+$fShowBindAccelerationStructureMemoryInfoNV'$fShowAccelerationStructureCreateInfoNV!$fShowAccelerationStructureInfoNV$fShowGeometryNV$fShowGeometryDataNV$fShowGeometryAABBNV$fShowGeometryTrianglesNV$$fShowRayTracingPipelineCreateInfoNV'$fShowRayTracingShaderGroupCreateInfoNV)EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME'EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION$sel:extendedDynamicState:PhysicalDeviceExtendedDynamicStateFeaturesEXT3$fZeroPhysicalDeviceExtendedDynamicStateFeaturesEXT7$fStorablePhysicalDeviceExtendedDynamicStateFeaturesEXT:$fFromCStructPhysicalDeviceExtendedDynamicStateFeaturesEXT8$fToCStructPhysicalDeviceExtendedDynamicStateFeaturesEXT1$fEqPhysicalDeviceExtendedDynamicStateFeaturesEXT3$fShowPhysicalDeviceExtendedDynamicStateFeaturesEXT$sel:next:FramebufferCreateInfo $sel:flags:FramebufferCreateInfo%$sel:renderPass:FramebufferCreateInfo&$sel:attachments:FramebufferCreateInfo $sel:width:FramebufferCreateInfo!$sel:height:FramebufferCreateInfo!$sel:layers:FramebufferCreateInfo$sel:next:RenderPassCreateInfo$sel:flags:RenderPassCreateInfo%$sel:attachments:RenderPassCreateInfo#$sel:subpasses:RenderPassCreateInfo&$sel:dependencies:RenderPassCreateInfo!$sel:srcSubpass:SubpassDependency!$sel:dstSubpass:SubpassDependency#$sel:srcStageMask:SubpassDependency#$sel:dstStageMask:SubpassDependency$$sel:srcAccessMask:SubpassDependency$$sel:dstAccessMask:SubpassDependency&$sel:dependencyFlags:SubpassDependency$sel:flags:SubpassDescription)$sel:pipelineBindPoint:SubpassDescription($sel:inputAttachments:SubpassDescription($sel:colorAttachments:SubpassDescription*$sel:resolveAttachments:SubpassDescription.$sel:depthStencilAttachment:SubpassDescription+$sel:preserveAttachments:SubpassDescription#$sel:attachment:AttachmentReference$sel:layout:AttachmentReference $sel:flags:AttachmentDescription!$sel:format:AttachmentDescription"$sel:samples:AttachmentDescription!$sel:loadOp:AttachmentDescription"$sel:storeOp:AttachmentDescription($sel:stencilLoadOp:AttachmentDescription)$sel:stencilStoreOp:AttachmentDescription($sel:initialLayout:AttachmentDescription&$sel:finalLayout:AttachmentDescriptionwithFramebufferwithRenderPass$fZeroAttachmentDescription$fStorableAttachmentDescription"$fFromCStructAttachmentDescription $fToCStructAttachmentDescription$fZeroAttachmentReference$fStorableAttachmentReference $fFromCStructAttachmentReference$fToCStructAttachmentReference$fZeroSubpassDescription$fFromCStructSubpassDescription$fToCStructSubpassDescription$fZeroSubpassDependency$fStorableSubpassDependency$fFromCStructSubpassDependency$fToCStructSubpassDependency$fZeroRenderPassCreateInfo!$fFromCStructRenderPassCreateInfo$fToCStructRenderPassCreateInfo $fExtensibleRenderPassCreateInfo$fZeroFramebufferCreateInfo"$fFromCStructFramebufferCreateInfo $fToCStructFramebufferCreateInfo!$fExtensibleFramebufferCreateInfo$fEqSubpassDependency$fEqAttachmentReference$fEqAttachmentDescription$fShowFramebufferCreateInfo$fShowRenderPassCreateInfo$fShowSubpassDependency$fShowSubpassDescription$fShowAttachmentReference$fShowAttachmentDescription'EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME%EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION$sel:fragmentDensityMapAttachment:RenderPassFragmentDensityMapCreateInfoEXT$sel:minFragmentDensityTexelSize:PhysicalDeviceFragmentDensityMapPropertiesEXT$sel:maxFragmentDensityTexelSize:PhysicalDeviceFragmentDensityMapPropertiesEXT$sel:fragmentDensityInvocations:PhysicalDeviceFragmentDensityMapPropertiesEXT$sel:fragmentDensityMap:PhysicalDeviceFragmentDensityMapFeaturesEXT$sel:fragmentDensityMapDynamic:PhysicalDeviceFragmentDensityMapFeaturesEXT$sel:fragmentDensityMapNonSubsampledImages:PhysicalDeviceFragmentDensityMapFeaturesEXT1$fZeroPhysicalDeviceFragmentDensityMapFeaturesEXT5$fStorablePhysicalDeviceFragmentDensityMapFeaturesEXT8$fFromCStructPhysicalDeviceFragmentDensityMapFeaturesEXT6$fToCStructPhysicalDeviceFragmentDensityMapFeaturesEXT3$fZeroPhysicalDeviceFragmentDensityMapPropertiesEXT7$fStorablePhysicalDeviceFragmentDensityMapPropertiesEXT:$fFromCStructPhysicalDeviceFragmentDensityMapPropertiesEXT8$fToCStructPhysicalDeviceFragmentDensityMapPropertiesEXT/$fZeroRenderPassFragmentDensityMapCreateInfoEXT3$fStorableRenderPassFragmentDensityMapCreateInfoEXT6$fFromCStructRenderPassFragmentDensityMapCreateInfoEXT4$fToCStructRenderPassFragmentDensityMapCreateInfoEXT/$fEqPhysicalDeviceFragmentDensityMapFeaturesEXT/$fShowRenderPassFragmentDensityMapCreateInfoEXT3$fShowPhysicalDeviceFragmentDensityMapPropertiesEXT1$fShowPhysicalDeviceFragmentDensityMapFeaturesEXT$sel:memory:MappedMemoryRange$sel:offset:MappedMemoryRange$sel:size:MappedMemoryRange$sel:next:MemoryAllocateInfo&$sel:allocationSize:MemoryAllocateInfo'$sel:memoryTypeIndex:MemoryAllocateInfo withMemorywithMappedMemory$fZeroMemoryAllocateInfo$fFromCStructMemoryAllocateInfo$fToCStructMemoryAllocateInfo$fExtensibleMemoryAllocateInfo$fZeroMappedMemoryRange$fStorableMappedMemoryRange$fFromCStructMappedMemoryRange$fToCStructMappedMemoryRange$fEqMappedMemoryRange$fShowMappedMemoryRange$fShowMemoryAllocateInfo$sel:next:ImageViewCreateInfo$sel:flags:ImageViewCreateInfo$sel:image:ImageViewCreateInfo!$sel:viewType:ImageViewCreateInfo$sel:format:ImageViewCreateInfo#$sel:components:ImageViewCreateInfo)$sel:subresourceRange:ImageViewCreateInfo%$sel:aspectMask:ImageSubresourceRange'$sel:baseMipLevel:ImageSubresourceRange%$sel:levelCount:ImageSubresourceRange)$sel:baseArrayLayer:ImageSubresourceRange%$sel:layerCount:ImageSubresourceRange$sel:r:ComponentMapping$sel:g:ComponentMapping$sel:b:ComponentMapping$sel:a:ComponentMapping withImageView$fZeroComponentMapping$fStorableComponentMapping$fFromCStructComponentMapping$fToCStructComponentMapping$fZeroImageSubresourceRange$fStorableImageSubresourceRange"$fFromCStructImageSubresourceRange $fToCStructImageSubresourceRange$fZeroImageViewCreateInfo $fFromCStructImageViewCreateInfo$fToCStructImageViewCreateInfo$fExtensibleImageViewCreateInfo$fEqImageSubresourceRange$fEqComponentMapping$fShowImageViewCreateInfo$fShowImageSubresourceRange$fShowComponentMapping$KHR_SYNCHRONIZATION_2_EXTENSION_NAME"KHR_SYNCHRONIZATION_2_SPEC_VERSIONSubmitFlagBitsKHRSubmitFlagsKHRAccessFlagBits2KHR?$sel:synchronization2:PhysicalDeviceSynchronization2FeaturesKHR$sel:stage:CheckpointData2NV'$sel:checkpointMarker:CheckpointData2NV$sel:checkpointExecutionStageMask:QueueFamilyCheckpointProperties2NV$sel:next:SubmitInfo2KHR$sel:flags:SubmitInfo2KHR&$sel:waitSemaphoreInfos:SubmitInfo2KHR&$sel:commandBufferInfos:SubmitInfo2KHR($sel:signalSemaphoreInfos:SubmitInfo2KHR-$sel:commandBuffer:CommandBufferSubmitInfoKHR*$sel:deviceMask:CommandBufferSubmitInfoKHR%$sel:semaphore:SemaphoreSubmitInfoKHR!$sel:value:SemaphoreSubmitInfoKHR%$sel:stageMask:SemaphoreSubmitInfoKHR'$sel:deviceIndex:SemaphoreSubmitInfoKHR&$sel:dependencyFlags:DependencyInfoKHR%$sel:memoryBarriers:DependencyInfoKHR+$sel:bufferMemoryBarriers:DependencyInfoKHR*$sel:imageMemoryBarriers:DependencyInfoKHR)$sel:srcStageMask:BufferMemoryBarrier2KHR*$sel:srcAccessMask:BufferMemoryBarrier2KHR)$sel:dstStageMask:BufferMemoryBarrier2KHR*$sel:dstAccessMask:BufferMemoryBarrier2KHR0$sel:srcQueueFamilyIndex:BufferMemoryBarrier2KHR0$sel:dstQueueFamilyIndex:BufferMemoryBarrier2KHR#$sel:buffer:BufferMemoryBarrier2KHR#$sel:offset:BufferMemoryBarrier2KHR!$sel:size:BufferMemoryBarrier2KHR $sel:next:ImageMemoryBarrier2KHR($sel:srcStageMask:ImageMemoryBarrier2KHR)$sel:srcAccessMask:ImageMemoryBarrier2KHR($sel:dstStageMask:ImageMemoryBarrier2KHR)$sel:dstAccessMask:ImageMemoryBarrier2KHR%$sel:oldLayout:ImageMemoryBarrier2KHR%$sel:newLayout:ImageMemoryBarrier2KHR/$sel:srcQueueFamilyIndex:ImageMemoryBarrier2KHR/$sel:dstQueueFamilyIndex:ImageMemoryBarrier2KHR!$sel:image:ImageMemoryBarrier2KHR,$sel:subresourceRange:ImageMemoryBarrier2KHR#$sel:srcStageMask:MemoryBarrier2KHR$$sel:srcAccessMask:MemoryBarrier2KHR#$sel:dstStageMask:MemoryBarrier2KHR$$sel:dstAccessMask:MemoryBarrier2KHRSUBMIT_PROTECTED_BIT_KHR+PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT.PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT*PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV9PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR5PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR+PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR1PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT#PIPELINE_STAGE_2_TASK_SHADER_BIT_NV#PIPELINE_STAGE_2_MESH_SHADER_BIT_NV2PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT_KHR/PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR$PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHRPIPELINE_STAGE_2_CLEAR_BIT_KHRPIPELINE_STAGE_2_BLIT_BIT_KHR PIPELINE_STAGE_2_RESOLVE_BIT_KHRPIPELINE_STAGE_2_COPY_BIT_KHR%PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR%PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHRPIPELINE_STAGE_2_HOST_BIT_KHR'PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR'PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR0PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR,PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR-PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR(PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR(PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR7PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR4PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR&PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR%PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR&PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR$PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHRPIPELINE_STAGE_2_NONE_KHR)ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT0ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT1ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT+ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT'ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV(ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV6ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR,ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR-ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR*ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT2ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT%ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR$ACCESS_2_SHADER_STORAGE_READ_BIT_KHR$ACCESS_2_SHADER_SAMPLED_READ_BIT_KHRACCESS_2_MEMORY_WRITE_BIT_KHRACCESS_2_MEMORY_READ_BIT_KHRACCESS_2_HOST_WRITE_BIT_KHRACCESS_2_HOST_READ_BIT_KHRACCESS_2_TRANSFER_WRITE_BIT_KHRACCESS_2_TRANSFER_READ_BIT_KHR/ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR.ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR'ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR&ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHRACCESS_2_SHADER_WRITE_BIT_KHRACCESS_2_SHADER_READ_BIT_KHR&ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHRACCESS_2_UNIFORM_READ_BIT_KHR&ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHRACCESS_2_INDEX_READ_BIT_KHR&ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHRACCESS_2_NONE_KHR!PIPELINE_STAGE_2_TRANSFER_BIT_KHR,ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_NV+ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_NV4PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_NV*PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_NV'ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV*PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NVcmdWaitEvents2KHRSafe $fZeroCommandBufferSubmitInfoKHR$$fStorableCommandBufferSubmitInfoKHR'$fFromCStructCommandBufferSubmitInfoKHR%$fToCStructCommandBufferSubmitInfoKHR/$fZeroPhysicalDeviceSynchronization2FeaturesKHR3$fStorablePhysicalDeviceSynchronization2FeaturesKHR6$fFromCStructPhysicalDeviceSynchronization2FeaturesKHR4$fToCStructPhysicalDeviceSynchronization2FeaturesKHR$fReadAccessFlagBits2KHR$fShowAccessFlagBits2KHR$fReadPipelineStageFlagBits2KHR$fShowPipelineStageFlagBits2KHR$fZeroCheckpointData2NV$fStorableCheckpointData2NV$fFromCStructCheckpointData2NV$fToCStructCheckpointData2NV($fZeroQueueFamilyCheckpointProperties2NV,$fStorableQueueFamilyCheckpointProperties2NV/$fFromCStructQueueFamilyCheckpointProperties2NV-$fToCStructQueueFamilyCheckpointProperties2NV$fZeroSemaphoreSubmitInfoKHR $fStorableSemaphoreSubmitInfoKHR#$fFromCStructSemaphoreSubmitInfoKHR!$fToCStructSemaphoreSubmitInfoKHR$fZeroBufferMemoryBarrier2KHR!$fStorableBufferMemoryBarrier2KHR$$fFromCStructBufferMemoryBarrier2KHR"$fToCStructBufferMemoryBarrier2KHR$fZeroImageMemoryBarrier2KHR#$fFromCStructImageMemoryBarrier2KHR!$fToCStructImageMemoryBarrier2KHR"$fExtensibleImageMemoryBarrier2KHR$fZeroMemoryBarrier2KHR$fStorableMemoryBarrier2KHR$fFromCStructMemoryBarrier2KHR$fToCStructMemoryBarrier2KHR$fZeroDependencyInfoKHR$fFromCStructDependencyInfoKHR$fToCStructDependencyInfoKHR$fReadSubmitFlagBitsKHR$fShowSubmitFlagBitsKHR$fZeroSubmitInfo2KHR$fFromCStructSubmitInfo2KHR$fToCStructSubmitInfo2KHR$fExtensibleSubmitInfo2KHR$fEqSubmitFlagBitsKHR$fOrdSubmitFlagBitsKHR$fStorableSubmitFlagBitsKHR$fZeroSubmitFlagBitsKHR$fBitsSubmitFlagBitsKHR$fFiniteBitsSubmitFlagBitsKHR$fEqMemoryBarrier2KHR$fEqBufferMemoryBarrier2KHR$fEqSemaphoreSubmitInfoKHR&$fEqQueueFamilyCheckpointProperties2NV$fEqPipelineStageFlagBits2KHR$fOrdPipelineStageFlagBits2KHR#$fStorablePipelineStageFlagBits2KHR$fZeroPipelineStageFlagBits2KHR$fBitsPipelineStageFlagBits2KHR%$fFiniteBitsPipelineStageFlagBits2KHR$fEqAccessFlagBits2KHR$fOrdAccessFlagBits2KHR$fStorableAccessFlagBits2KHR$fZeroAccessFlagBits2KHR$fBitsAccessFlagBits2KHR$fFiniteBitsAccessFlagBits2KHR-$fEqPhysicalDeviceSynchronization2FeaturesKHR$fEqCommandBufferSubmitInfoKHR/$fShowPhysicalDeviceSynchronization2FeaturesKHR$fShowCheckpointData2NV($fShowQueueFamilyCheckpointProperties2NV$fShowSubmitInfo2KHR $fShowCommandBufferSubmitInfoKHR$fShowSemaphoreSubmitInfoKHR$fShowDependencyInfoKHR$fShowBufferMemoryBarrier2KHR$fShowImageMemoryBarrier2KHR$fShowMemoryBarrier2KHR%HUAWEI_INVOCATION_MASK_EXTENSION_NAME#HUAWEI_INVOCATION_MASK_SPEC_VERSION>$sel:invocationMask:PhysicalDeviceInvocationMaskFeaturesHUAWEI0$fZeroPhysicalDeviceInvocationMaskFeaturesHUAWEI4$fStorablePhysicalDeviceInvocationMaskFeaturesHUAWEI7$fFromCStructPhysicalDeviceInvocationMaskFeaturesHUAWEI5$fToCStructPhysicalDeviceInvocationMaskFeaturesHUAWEI.$fEqPhysicalDeviceInvocationMaskFeaturesHUAWEI0$fShowPhysicalDeviceInvocationMaskFeaturesHUAWEI>ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME$sel:drmFormatModifierCount:DrmFormatModifierPropertiesListEXT$sel:drmFormatModifierProperties:DrmFormatModifierPropertiesListEXT$$fZeroDrmFormatModifierPropertiesEXT($fStorableDrmFormatModifierPropertiesEXT+$fFromCStructDrmFormatModifierPropertiesEXT)$fToCStructDrmFormatModifierPropertiesEXT($fZeroDrmFormatModifierPropertiesListEXT,$fStorableDrmFormatModifierPropertiesListEXT/$fFromCStructDrmFormatModifierPropertiesListEXT-$fToCStructDrmFormatModifierPropertiesListEXT1$fZeroPhysicalDeviceImageDrmFormatModifierInfoEXT8$fFromCStructPhysicalDeviceImageDrmFormatModifierInfoEXT6$fToCStructPhysicalDeviceImageDrmFormatModifierInfoEXT-$fZeroImageDrmFormatModifierListCreateInfoEXT4$fFromCStructImageDrmFormatModifierListCreateInfoEXT2$fToCStructImageDrmFormatModifierListCreateInfoEXT1$fZeroImageDrmFormatModifierExplicitCreateInfoEXT8$fFromCStructImageDrmFormatModifierExplicitCreateInfoEXT6$fToCStructImageDrmFormatModifierExplicitCreateInfoEXT)$fZeroImageDrmFormatModifierPropertiesEXT-$fStorableImageDrmFormatModifierPropertiesEXT0$fFromCStructImageDrmFormatModifierPropertiesEXT.$fToCStructImageDrmFormatModifierPropertiesEXT'$fEqImageDrmFormatModifierPropertiesEXT&$fEqDrmFormatModifierPropertiesListEXT"$fEqDrmFormatModifierPropertiesEXT)$fShowImageDrmFormatModifierPropertiesEXT1$fShowImageDrmFormatModifierExplicitCreateInfoEXT-$fShowImageDrmFormatModifierListCreateInfoEXT1$fShowPhysicalDeviceImageDrmFormatModifierInfoEXT$$fShowDrmFormatModifierPropertiesEXT($fShowDrmFormatModifierPropertiesListEXT$sel:next:FenceCreateInfo$sel:flags:FenceCreateInfo withFencewaitForFencesSafe$fZeroFenceCreateInfo$fFromCStructFenceCreateInfo$fToCStructFenceCreateInfo$fExtensibleFenceCreateInfo$fShowFenceCreateInfo-$sel:maxImageDimension1D:PhysicalDeviceLimits-$sel:maxImageDimension2D:PhysicalDeviceLimits-$sel:maxImageDimension3D:PhysicalDeviceLimits/$sel:maxImageDimensionCube:PhysicalDeviceLimits-$sel:maxImageArrayLayers:PhysicalDeviceLimits0$sel:maxTexelBufferElements:PhysicalDeviceLimits/$sel:maxUniformBufferRange:PhysicalDeviceLimits/$sel:maxStorageBufferRange:PhysicalDeviceLimits.$sel:maxPushConstantsSize:PhysicalDeviceLimits2$sel:maxMemoryAllocationCount:PhysicalDeviceLimits3$sel:maxSamplerAllocationCount:PhysicalDeviceLimits0$sel:bufferImageGranularity:PhysicalDeviceLimits0$sel:sparseAddressSpaceSize:PhysicalDeviceLimits0$sel:maxBoundDescriptorSets:PhysicalDeviceLimits7$sel:maxPerStageDescriptorSamplers:PhysicalDeviceLimits=$sel:maxPerStageDescriptorUniformBuffers:PhysicalDeviceLimits=$sel:maxPerStageDescriptorStorageBuffers:PhysicalDeviceLimits<$sel:maxPerStageDescriptorSampledImages:PhysicalDeviceLimits<$sel:maxPerStageDescriptorStorageImages:PhysicalDeviceLimits?$sel:maxPerStageDescriptorInputAttachments:PhysicalDeviceLimits.$sel:maxPerStageResources:PhysicalDeviceLimits2$sel:maxDescriptorSetSamplers:PhysicalDeviceLimits8$sel:maxDescriptorSetUniformBuffers:PhysicalDeviceLimits?$sel:maxDescriptorSetUniformBuffersDynamic:PhysicalDeviceLimits8$sel:maxDescriptorSetStorageBuffers:PhysicalDeviceLimits?$sel:maxDescriptorSetStorageBuffersDynamic:PhysicalDeviceLimits7$sel:maxDescriptorSetSampledImages:PhysicalDeviceLimits7$sel:maxDescriptorSetStorageImages:PhysicalDeviceLimits:$sel:maxDescriptorSetInputAttachments:PhysicalDeviceLimits2$sel:maxVertexInputAttributes:PhysicalDeviceLimits0$sel:maxVertexInputBindings:PhysicalDeviceLimits7$sel:maxVertexInputAttributeOffset:PhysicalDeviceLimits5$sel:maxVertexInputBindingStride:PhysicalDeviceLimits3$sel:maxVertexOutputComponents:PhysicalDeviceLimits8$sel:maxTessellationGenerationLevel:PhysicalDeviceLimits2$sel:maxTessellationPatchSize:PhysicalDeviceLimits$sel:maxTessellationControlPerVertexInputComponents:PhysicalDeviceLimits$sel:maxTessellationControlPerVertexOutputComponents:PhysicalDeviceLimits$sel:maxTessellationControlPerPatchOutputComponents:PhysicalDeviceLimits$sel:maxTessellationControlTotalOutputComponents:PhysicalDeviceLimits$sel:maxTessellationEvaluationInputComponents:PhysicalDeviceLimits$sel:maxTessellationEvaluationOutputComponents:PhysicalDeviceLimits6$sel:maxGeometryShaderInvocations:PhysicalDeviceLimits4$sel:maxGeometryInputComponents:PhysicalDeviceLimits5$sel:maxGeometryOutputComponents:PhysicalDeviceLimits3$sel:maxGeometryOutputVertices:PhysicalDeviceLimits:$sel:maxGeometryTotalOutputComponents:PhysicalDeviceLimits4$sel:maxFragmentInputComponents:PhysicalDeviceLimits6$sel:maxFragmentOutputAttachments:PhysicalDeviceLimits7$sel:maxFragmentDualSrcAttachments:PhysicalDeviceLimits<$sel:maxFragmentCombinedOutputResources:PhysicalDeviceLimits4$sel:maxComputeSharedMemorySize:PhysicalDeviceLimits2$sel:maxComputeWorkGroupCount:PhysicalDeviceLimits8$sel:maxComputeWorkGroupInvocations:PhysicalDeviceLimits1$sel:maxComputeWorkGroupSize:PhysicalDeviceLimits/$sel:subPixelPrecisionBits:PhysicalDeviceLimits/$sel:subTexelPrecisionBits:PhysicalDeviceLimits-$sel:mipmapPrecisionBits:PhysicalDeviceLimits2$sel:maxDrawIndexedIndexValue:PhysicalDeviceLimits.$sel:maxDrawIndirectCount:PhysicalDeviceLimits+$sel:maxSamplerLodBias:PhysicalDeviceLimits.$sel:maxSamplerAnisotropy:PhysicalDeviceLimits&$sel:maxViewports:PhysicalDeviceLimits/$sel:maxViewportDimensions:PhysicalDeviceLimits-$sel:viewportBoundsRange:PhysicalDeviceLimits.$sel:viewportSubPixelBits:PhysicalDeviceLimits/$sel:minMemoryMapAlignment:PhysicalDeviceLimits7$sel:minTexelBufferOffsetAlignment:PhysicalDeviceLimits9$sel:minUniformBufferOffsetAlignment:PhysicalDeviceLimits9$sel:minStorageBufferOffsetAlignment:PhysicalDeviceLimits($sel:minTexelOffset:PhysicalDeviceLimits($sel:maxTexelOffset:PhysicalDeviceLimits.$sel:minTexelGatherOffset:PhysicalDeviceLimits.$sel:maxTexelGatherOffset:PhysicalDeviceLimits0$sel:minInterpolationOffset:PhysicalDeviceLimits0$sel:maxInterpolationOffset:PhysicalDeviceLimits9$sel:subPixelInterpolationOffsetBits:PhysicalDeviceLimits-$sel:maxFramebufferWidth:PhysicalDeviceLimits.$sel:maxFramebufferHeight:PhysicalDeviceLimits.$sel:maxFramebufferLayers:PhysicalDeviceLimits6$sel:framebufferColorSampleCounts:PhysicalDeviceLimits6$sel:framebufferDepthSampleCounts:PhysicalDeviceLimits8$sel:framebufferStencilSampleCounts:PhysicalDeviceLimits>$sel:framebufferNoAttachmentsSampleCounts:PhysicalDeviceLimits-$sel:maxColorAttachments:PhysicalDeviceLimits7$sel:sampledImageColorSampleCounts:PhysicalDeviceLimits9$sel:sampledImageIntegerSampleCounts:PhysicalDeviceLimits7$sel:sampledImageDepthSampleCounts:PhysicalDeviceLimits9$sel:sampledImageStencilSampleCounts:PhysicalDeviceLimits2$sel:storageImageSampleCounts:PhysicalDeviceLimits,$sel:maxSampleMaskWords:PhysicalDeviceLimits5$sel:timestampComputeAndGraphics:PhysicalDeviceLimits)$sel:timestampPeriod:PhysicalDeviceLimits*$sel:maxClipDistances:PhysicalDeviceLimits*$sel:maxCullDistances:PhysicalDeviceLimits9$sel:maxCombinedClipAndCullDistances:PhysicalDeviceLimits1$sel:discreteQueuePriorities:PhysicalDeviceLimits($sel:pointSizeRange:PhysicalDeviceLimits($sel:lineWidthRange:PhysicalDeviceLimits.$sel:pointSizeGranularity:PhysicalDeviceLimits.$sel:lineWidthGranularity:PhysicalDeviceLimits%$sel:strictLines:PhysicalDeviceLimits1$sel:standardSampleLocations:PhysicalDeviceLimits:$sel:optimalBufferCopyOffsetAlignment:PhysicalDeviceLimits<$sel:optimalBufferCopyRowPitchAlignment:PhysicalDeviceLimits-$sel:nonCoherentAtomSize:PhysicalDeviceLimits$sel:residencyStandard2DBlockShape:PhysicalDeviceSparseProperties$sel:residencyStandard2DMultisampleBlockShape:PhysicalDeviceSparseProperties$sel:residencyStandard3DBlockShape:PhysicalDeviceSparseProperties;$sel:residencyAlignedMipSize:PhysicalDeviceSparseProperties>$sel:residencyNonResidentStrict:PhysicalDeviceSparseProperties.$sel:robustBufferAccess:PhysicalDeviceFeatures/$sel:fullDrawIndexUint32:PhysicalDeviceFeatures*$sel:imageCubeArray:PhysicalDeviceFeatures,$sel:independentBlend:PhysicalDeviceFeatures*$sel:geometryShader:PhysicalDeviceFeatures.$sel:tessellationShader:PhysicalDeviceFeatures-$sel:sampleRateShading:PhysicalDeviceFeatures($sel:dualSrcBlend:PhysicalDeviceFeatures#$sel:logicOp:PhysicalDeviceFeatures-$sel:multiDrawIndirect:PhysicalDeviceFeatures5$sel:drawIndirectFirstInstance:PhysicalDeviceFeatures&$sel:depthClamp:PhysicalDeviceFeatures*$sel:depthBiasClamp:PhysicalDeviceFeatures,$sel:fillModeNonSolid:PhysicalDeviceFeatures'$sel:depthBounds:PhysicalDeviceFeatures%$sel:wideLines:PhysicalDeviceFeatures'$sel:largePoints:PhysicalDeviceFeatures&$sel:alphaToOne:PhysicalDeviceFeatures)$sel:multiViewport:PhysicalDeviceFeatures-$sel:samplerAnisotropy:PhysicalDeviceFeatures2$sel:textureCompressionETC2:PhysicalDeviceFeatures6$sel:textureCompressionASTC_LDR:PhysicalDeviceFeatures0$sel:textureCompressionBC:PhysicalDeviceFeatures1$sel:occlusionQueryPrecise:PhysicalDeviceFeatures3$sel:pipelineStatisticsQuery:PhysicalDeviceFeatures:$sel:vertexPipelineStoresAndAtomics:PhysicalDeviceFeatures4$sel:fragmentStoresAndAtomics:PhysicalDeviceFeatures$sel:shaderTessellationAndGeometryPointSize:PhysicalDeviceFeatures5$sel:shaderImageGatherExtended:PhysicalDeviceFeatures=$sel:shaderStorageImageExtendedFormats:PhysicalDeviceFeatures9$sel:shaderStorageImageMultisample:PhysicalDeviceFeatures?$sel:shaderStorageImageReadWithoutFormat:PhysicalDeviceFeatures$sel:shaderStorageImageWriteWithoutFormat:PhysicalDeviceFeatures$sel:shaderUniformBufferArrayDynamicIndexing:PhysicalDeviceFeatures$sel:shaderSampledImageArrayDynamicIndexing:PhysicalDeviceFeatures$sel:shaderStorageBufferArrayDynamicIndexing:PhysicalDeviceFeatures$sel:shaderStorageImageArrayDynamicIndexing:PhysicalDeviceFeatures.$sel:shaderClipDistance:PhysicalDeviceFeatures.$sel:shaderCullDistance:PhysicalDeviceFeatures)$sel:shaderFloat64:PhysicalDeviceFeatures'$sel:shaderInt64:PhysicalDeviceFeatures'$sel:shaderInt16:PhysicalDeviceFeatures3$sel:shaderResourceResidency:PhysicalDeviceFeatures0$sel:shaderResourceMinLod:PhysicalDeviceFeatures)$sel:sparseBinding:PhysicalDeviceFeatures1$sel:sparseResidencyBuffer:PhysicalDeviceFeatures2$sel:sparseResidencyImage2D:PhysicalDeviceFeatures2$sel:sparseResidencyImage3D:PhysicalDeviceFeatures3$sel:sparseResidency2Samples:PhysicalDeviceFeatures3$sel:sparseResidency4Samples:PhysicalDeviceFeatures3$sel:sparseResidency8Samples:PhysicalDeviceFeatures4$sel:sparseResidency16Samples:PhysicalDeviceFeatures2$sel:sparseResidencyAliased:PhysicalDeviceFeatures3$sel:variableMultisampleRate:PhysicalDeviceFeatures,$sel:inheritedQueries:PhysicalDeviceFeatures$$sel:maxExtent:ImageFormatProperties'$sel:maxMipLevels:ImageFormatProperties)$sel:maxArrayLayers:ImageFormatProperties'$sel:sampleCounts:ImageFormatProperties*$sel:maxResourceSize:ImageFormatProperties*$sel:linearTilingFeatures:FormatProperties+$sel:optimalTilingFeatures:FormatProperties$$sel:bufferFeatures:FormatProperties$sel:size:MemoryHeap$sel:flags:MemoryHeap$sel:propertyFlags:MemoryType$sel:heapIndex:MemoryType3$sel:memoryTypeCount:PhysicalDeviceMemoryProperties/$sel:memoryTypes:PhysicalDeviceMemoryProperties3$sel:memoryHeapCount:PhysicalDeviceMemoryProperties/$sel:memoryHeaps:PhysicalDeviceMemoryProperties%$sel:queueFlags:QueueFamilyProperties%$sel:queueCount:QueueFamilyProperties-$sel:timestampValidBits:QueueFamilyProperties6$sel:minImageTransferGranularity:QueueFamilyProperties$sel:next:InstanceCreateInfo$sel:flags:InstanceCreateInfo'$sel:applicationInfo:InstanceCreateInfo)$sel:enabledLayerNames:InstanceCreateInfo-$sel:enabledExtensionNames:InstanceCreateInfo$$sel:applicationName:ApplicationInfo'$sel:applicationVersion:ApplicationInfo$sel:engineName:ApplicationInfo"$sel:engineVersion:ApplicationInfo$sel:apiVersion:ApplicationInfo($sel:apiVersion:PhysicalDeviceProperties+$sel:driverVersion:PhysicalDeviceProperties&$sel:vendorID:PhysicalDeviceProperties&$sel:deviceID:PhysicalDeviceProperties($sel:deviceType:PhysicalDeviceProperties($sel:deviceName:PhysicalDeviceProperties/$sel:pipelineCacheUUID:PhysicalDeviceProperties$$sel:limits:PhysicalDeviceProperties.$sel:sparseProperties:PhysicalDeviceProperties withInstance$fZeroApplicationInfo$fFromCStructApplicationInfo$fToCStructApplicationInfo$fZeroInstanceCreateInfo$fFromCStructInstanceCreateInfo$fToCStructInstanceCreateInfo$fExtensibleInstanceCreateInfo$fZeroQueueFamilyProperties$fStorableQueueFamilyProperties"$fFromCStructQueueFamilyProperties $fToCStructQueueFamilyProperties$fZeroMemoryType$fStorableMemoryType$fFromCStructMemoryType$fToCStructMemoryType$fZeroMemoryHeap$fStorableMemoryHeap$fFromCStructMemoryHeap$fToCStructMemoryHeap$$fZeroPhysicalDeviceMemoryProperties($fStorablePhysicalDeviceMemoryProperties+$fFromCStructPhysicalDeviceMemoryProperties)$fToCStructPhysicalDeviceMemoryProperties$fZeroFormatProperties$fStorableFormatProperties$fFromCStructFormatProperties$fToCStructFormatProperties$fZeroImageFormatProperties$fStorableImageFormatProperties"$fFromCStructImageFormatProperties $fToCStructImageFormatProperties$fZeroPhysicalDeviceFeatures $fStorablePhysicalDeviceFeatures#$fFromCStructPhysicalDeviceFeatures!$fToCStructPhysicalDeviceFeatures$$fZeroPhysicalDeviceSparseProperties($fStorablePhysicalDeviceSparseProperties+$fFromCStructPhysicalDeviceSparseProperties)$fToCStructPhysicalDeviceSparseProperties$fZeroPhysicalDeviceLimits$fStorablePhysicalDeviceLimits!$fFromCStructPhysicalDeviceLimits$fToCStructPhysicalDeviceLimits$fZeroPhysicalDeviceProperties"$fStorablePhysicalDeviceProperties%$fFromCStructPhysicalDeviceProperties#$fToCStructPhysicalDeviceProperties$fEqPhysicalDeviceLimits"$fEqPhysicalDeviceSparseProperties$fEqPhysicalDeviceFeatures$fEqFormatProperties$fEqMemoryHeap$fEqMemoryType$fShowPhysicalDeviceLimits$$fShowPhysicalDeviceSparseProperties$fShowPhysicalDeviceFeatures$fShowImageFormatProperties$fShowFormatProperties$fShowMemoryHeap$fShowMemoryType$$fShowPhysicalDeviceMemoryProperties$fShowQueueFamilyProperties$fShowInstanceCreateInfo$fShowApplicationInfo$fShowPhysicalDeviceProperties.NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME,NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSIONExternalMemoryFeatureFlagBitsNVExternalMemoryFeatureFlagsNV:$sel:imageFormatProperties:ExternalImageFormatPropertiesNV;$sel:externalMemoryFeatures:ExternalImageFormatPropertiesNV$sel:exportFromImportedHandleTypes:ExternalImageFormatPropertiesNV:$sel:compatibleHandleTypes:ExternalImageFormatPropertiesNV)EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV)EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV-EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV2EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV.EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV3EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV/EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV($fReadExternalMemoryHandleTypeFlagBitsNV($fShowExternalMemoryHandleTypeFlagBitsNV%$fReadExternalMemoryFeatureFlagBitsNV%$fShowExternalMemoryFeatureFlagBitsNV%$fZeroExternalImageFormatPropertiesNV)$fStorableExternalImageFormatPropertiesNV,$fFromCStructExternalImageFormatPropertiesNV*$fToCStructExternalImageFormatPropertiesNV#$fEqExternalMemoryFeatureFlagBitsNV$$fOrdExternalMemoryFeatureFlagBitsNV)$fStorableExternalMemoryFeatureFlagBitsNV%$fZeroExternalMemoryFeatureFlagBitsNV%$fBitsExternalMemoryFeatureFlagBitsNV+$fFiniteBitsExternalMemoryFeatureFlagBitsNV&$fEqExternalMemoryHandleTypeFlagBitsNV'$fOrdExternalMemoryHandleTypeFlagBitsNV,$fStorableExternalMemoryHandleTypeFlagBitsNV($fZeroExternalMemoryHandleTypeFlagBitsNV($fBitsExternalMemoryHandleTypeFlagBitsNV.$fFiniteBitsExternalMemoryHandleTypeFlagBitsNV%$fShowExternalImageFormatPropertiesNVSECURITY_ATTRIBUTESDWORD'NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME%NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION-$sel:attributes:ExportMemoryWin32HandleInfoNV+$sel:dwAccess:ExportMemoryWin32HandleInfoNV-$sel:handleType:ImportMemoryWin32HandleInfoNV)$sel:handle:ImportMemoryWin32HandleInfoNV#$fZeroImportMemoryWin32HandleInfoNV'$fStorableImportMemoryWin32HandleInfoNV*$fFromCStructImportMemoryWin32HandleInfoNV($fToCStructImportMemoryWin32HandleInfoNV#$fZeroExportMemoryWin32HandleInfoNV'$fStorableExportMemoryWin32HandleInfoNV*$fFromCStructExportMemoryWin32HandleInfoNV($fToCStructExportMemoryWin32HandleInfoNV!$fEqExportMemoryWin32HandleInfoNV!$fEqImportMemoryWin32HandleInfoNV#$fShowExportMemoryWin32HandleInfoNV#$fShowImportMemoryWin32HandleInfoNVLPCWSTR(KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME&KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION'$sel:memory:MemoryGetWin32HandleInfoKHR+$sel:handleType:MemoryGetWin32HandleInfoKHR2$sel:memoryTypeBits:MemoryWin32HandlePropertiesKHR.$sel:attributes:ExportMemoryWin32HandleInfoKHR,$sel:dwAccess:ExportMemoryWin32HandleInfoKHR($sel:name:ExportMemoryWin32HandleInfoKHR.$sel:handleType:ImportMemoryWin32HandleInfoKHR*$sel:handle:ImportMemoryWin32HandleInfoKHR($sel:name:ImportMemoryWin32HandleInfoKHR$$fZeroMemoryWin32HandlePropertiesKHR($fStorableMemoryWin32HandlePropertiesKHR+$fFromCStructMemoryWin32HandlePropertiesKHR)$fToCStructMemoryWin32HandlePropertiesKHR!$fZeroMemoryGetWin32HandleInfoKHR%$fStorableMemoryGetWin32HandleInfoKHR($fFromCStructMemoryGetWin32HandleInfoKHR&$fToCStructMemoryGetWin32HandleInfoKHR$$fZeroExportMemoryWin32HandleInfoKHR($fStorableExportMemoryWin32HandleInfoKHR+$fFromCStructExportMemoryWin32HandleInfoKHR)$fToCStructExportMemoryWin32HandleInfoKHR$$fZeroImportMemoryWin32HandleInfoKHR($fStorableImportMemoryWin32HandleInfoKHR+$fFromCStructImportMemoryWin32HandleInfoKHR)$fToCStructImportMemoryWin32HandleInfoKHR"$fEqImportMemoryWin32HandleInfoKHR"$fEqExportMemoryWin32HandleInfoKHR$fEqMemoryGetWin32HandleInfoKHR"$fEqMemoryWin32HandlePropertiesKHR!$fShowMemoryGetWin32HandleInfoKHR$$fShowMemoryWin32HandlePropertiesKHR$$fShowExportMemoryWin32HandleInfoKHR$$fShowImportMemoryWin32HandleInfoKHR+KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME)KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION-$sel:semaphore:SemaphoreGetWin32HandleInfoKHR.$sel:handleType:SemaphoreGetWin32HandleInfoKHR5$sel:waitSemaphoreValuesCount:D3D12FenceSubmitInfoKHR0$sel:waitSemaphoreValues:D3D12FenceSubmitInfoKHR7$sel:signalSemaphoreValuesCount:D3D12FenceSubmitInfoKHR2$sel:signalSemaphoreValues:D3D12FenceSubmitInfoKHR1$sel:attributes:ExportSemaphoreWin32HandleInfoKHR/$sel:dwAccess:ExportSemaphoreWin32HandleInfoKHR+$sel:name:ExportSemaphoreWin32HandleInfoKHR0$sel:semaphore:ImportSemaphoreWin32HandleInfoKHR,$sel:flags:ImportSemaphoreWin32HandleInfoKHR1$sel:handleType:ImportSemaphoreWin32HandleInfoKHR-$sel:handle:ImportSemaphoreWin32HandleInfoKHR+$sel:name:ImportSemaphoreWin32HandleInfoKHR'$fZeroImportSemaphoreWin32HandleInfoKHR+$fStorableImportSemaphoreWin32HandleInfoKHR.$fFromCStructImportSemaphoreWin32HandleInfoKHR,$fToCStructImportSemaphoreWin32HandleInfoKHR'$fZeroExportSemaphoreWin32HandleInfoKHR+$fStorableExportSemaphoreWin32HandleInfoKHR.$fFromCStructExportSemaphoreWin32HandleInfoKHR,$fToCStructExportSemaphoreWin32HandleInfoKHR$fZeroD3D12FenceSubmitInfoKHR$$fFromCStructD3D12FenceSubmitInfoKHR"$fToCStructD3D12FenceSubmitInfoKHR$$fZeroSemaphoreGetWin32HandleInfoKHR($fStorableSemaphoreGetWin32HandleInfoKHR+$fFromCStructSemaphoreGetWin32HandleInfoKHR)$fToCStructSemaphoreGetWin32HandleInfoKHR"$fEqSemaphoreGetWin32HandleInfoKHR%$fEqExportSemaphoreWin32HandleInfoKHR%$fEqImportSemaphoreWin32HandleInfoKHR$$fShowSemaphoreGetWin32HandleInfoKHR$fShowD3D12FenceSubmitInfoKHR'$fShowExportSemaphoreWin32HandleInfoKHR'$fShowImportSemaphoreWin32HandleInfoKHR'KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME%KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION%$sel:fence:FenceGetWin32HandleInfoKHR*$sel:handleType:FenceGetWin32HandleInfoKHR-$sel:attributes:ExportFenceWin32HandleInfoKHR+$sel:dwAccess:ExportFenceWin32HandleInfoKHR'$sel:name:ExportFenceWin32HandleInfoKHR($sel:fence:ImportFenceWin32HandleInfoKHR($sel:flags:ImportFenceWin32HandleInfoKHR-$sel:handleType:ImportFenceWin32HandleInfoKHR)$sel:handle:ImportFenceWin32HandleInfoKHR'$sel:name:ImportFenceWin32HandleInfoKHR#$fZeroImportFenceWin32HandleInfoKHR'$fStorableImportFenceWin32HandleInfoKHR*$fFromCStructImportFenceWin32HandleInfoKHR($fToCStructImportFenceWin32HandleInfoKHR#$fZeroExportFenceWin32HandleInfoKHR'$fStorableExportFenceWin32HandleInfoKHR*$fFromCStructExportFenceWin32HandleInfoKHR($fToCStructExportFenceWin32HandleInfoKHR $fZeroFenceGetWin32HandleInfoKHR$$fStorableFenceGetWin32HandleInfoKHR'$fFromCStructFenceGetWin32HandleInfoKHR%$fToCStructFenceGetWin32HandleInfoKHR$fEqFenceGetWin32HandleInfoKHR!$fEqExportFenceWin32HandleInfoKHR!$fEqImportFenceWin32HandleInfoKHR $fShowFenceGetWin32HandleInfoKHR#$fShowExportFenceWin32HandleInfoKHR#$fShowImportFenceWin32HandleInfoKHR!NV_EXTERNAL_MEMORY_EXTENSION_NAMENV_EXTERNAL_MEMORY_SPEC_VERSION+$sel:handleTypes:ExportMemoryAllocateInfoNV0$sel:handleTypes:ExternalMemoryImageCreateInfoNV%$fZeroExternalMemoryImageCreateInfoNV)$fStorableExternalMemoryImageCreateInfoNV,$fFromCStructExternalMemoryImageCreateInfoNV*$fToCStructExternalMemoryImageCreateInfoNV $fZeroExportMemoryAllocateInfoNV$$fStorableExportMemoryAllocateInfoNV'$fFromCStructExportMemoryAllocateInfoNV%$fToCStructExportMemoryAllocateInfoNV$fEqExportMemoryAllocateInfoNV#$fEqExternalMemoryImageCreateInfoNV $fShowExportMemoryAllocateInfoNV%$fShowExternalMemoryImageCreateInfoNV0$sel:format:PhysicalDeviceSparseImageFormatInfo2/$sel:type':PhysicalDeviceSparseImageFormatInfo21$sel:samples:PhysicalDeviceSparseImageFormatInfo2/$sel:usage:PhysicalDeviceSparseImageFormatInfo20$sel:tiling:PhysicalDeviceSparseImageFormatInfo2,$sel:properties:SparseImageFormatProperties2)$sel:next:PhysicalDeviceMemoryProperties25$sel:memoryProperties:PhysicalDeviceMemoryProperties2 $sel:next:QueueFamilyProperties21$sel:queueFamilyProperties:QueueFamilyProperties2($sel:next:PhysicalDeviceImageFormatInfo2*$sel:format:PhysicalDeviceImageFormatInfo2)$sel:type':PhysicalDeviceImageFormatInfo2*$sel:tiling:PhysicalDeviceImageFormatInfo2)$sel:usage:PhysicalDeviceImageFormatInfo2)$sel:flags:PhysicalDeviceImageFormatInfo2 $sel:next:ImageFormatProperties21$sel:imageFormatProperties:ImageFormatProperties2$sel:next:FormatProperties2'$sel:formatProperties:FormatProperties2#$sel:next:PhysicalDeviceProperties2)$sel:properties:PhysicalDeviceProperties2!$sel:next:PhysicalDeviceFeatures2%$sel:features:PhysicalDeviceFeatures2$fZeroPhysicalDeviceFeatures2$$fFromCStructPhysicalDeviceFeatures2"$fToCStructPhysicalDeviceFeatures2#$fExtensiblePhysicalDeviceFeatures2$fZeroPhysicalDeviceProperties2&$fFromCStructPhysicalDeviceProperties2$$fToCStructPhysicalDeviceProperties2%$fExtensiblePhysicalDeviceProperties2$fZeroFormatProperties2$fFromCStructFormatProperties2$fToCStructFormatProperties2$fExtensibleFormatProperties2$fZeroImageFormatProperties2#$fFromCStructImageFormatProperties2!$fToCStructImageFormatProperties2"$fExtensibleImageFormatProperties2$$fZeroPhysicalDeviceImageFormatInfo2+$fFromCStructPhysicalDeviceImageFormatInfo2)$fToCStructPhysicalDeviceImageFormatInfo2*$fExtensiblePhysicalDeviceImageFormatInfo2$fZeroQueueFamilyProperties2#$fFromCStructQueueFamilyProperties2!$fToCStructQueueFamilyProperties2"$fExtensibleQueueFamilyProperties2%$fZeroPhysicalDeviceMemoryProperties2,$fFromCStructPhysicalDeviceMemoryProperties2*$fToCStructPhysicalDeviceMemoryProperties2+$fExtensiblePhysicalDeviceMemoryProperties2"$fZeroSparseImageFormatProperties2&$fStorableSparseImageFormatProperties2)$fFromCStructSparseImageFormatProperties2'$fToCStructSparseImageFormatProperties2*$fZeroPhysicalDeviceSparseImageFormatInfo2.$fStorablePhysicalDeviceSparseImageFormatInfo21$fFromCStructPhysicalDeviceSparseImageFormatInfo2/$fToCStructPhysicalDeviceSparseImageFormatInfo2($fEqPhysicalDeviceSparseImageFormatInfo2*$fShowPhysicalDeviceSparseImageFormatInfo2"$fShowSparseImageFormatProperties2%$fShowPhysicalDeviceMemoryProperties2$fShowQueueFamilyProperties2$$fShowPhysicalDeviceImageFormatInfo2$fShowImageFormatProperties2$fShowFormatProperties2$fShowPhysicalDeviceProperties2$fShowPhysicalDeviceFeatures23KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME1KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION'PhysicalDeviceSparseImageFormatInfo2KHRSparseImageFormatProperties2KHR"PhysicalDeviceMemoryProperties2KHRQueueFamilyProperties2KHR!PhysicalDeviceImageFormatInfo2KHRImageFormatProperties2KHRFormatProperties2KHRPhysicalDeviceProperties2KHRPhysicalDeviceFeatures2KHR=STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR3STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR6STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR,STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR6STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR,STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR&STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR/STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR-STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR$sel:next:DeviceCreateInfo$sel:flags:DeviceCreateInfo&$sel:queueCreateInfos:DeviceCreateInfo'$sel:enabledLayerNames:DeviceCreateInfo+$sel:enabledExtensionNames:DeviceCreateInfo%$sel:enabledFeatures:DeviceCreateInfo$sel:next:DeviceQueueCreateInfo $sel:flags:DeviceQueueCreateInfo+$sel:queueFamilyIndex:DeviceQueueCreateInfo*$sel:queuePriorities:DeviceQueueCreateInfo withDevice$fZeroDeviceQueueCreateInfo"$fFromCStructDeviceQueueCreateInfo $fToCStructDeviceQueueCreateInfo!$fExtensibleDeviceQueueCreateInfo$fZeroDeviceCreateInfo$fFromCStructDeviceCreateInfo$fToCStructDeviceCreateInfo$fExtensibleDeviceCreateInfo$fShowDeviceCreateInfo$fShowDeviceQueueCreateInfoKnownPropertyStructsPropertyStructSPropertyStructBasicPropertyStructExtendedPropertyStructKnownFeatureStructsFeatureStructSFeatureStructBasicFeatureStructExtendedFeatureStructDeviceRequirementRequireDeviceVersionRequireDeviceFeatureRequireDevicePropertyRequireDeviceExtension!$sel:version:RequireDeviceVersion%$sel:featureName:RequireDeviceVersion&$sel:checkFeature:RequireDeviceVersion'$sel:enableFeature:RequireDeviceVersion&$sel:propertyName:RequireDeviceVersion'$sel:checkProperty:RequireDeviceVersion2$sel:deviceExtensionLayerName:RequireDeviceVersion-$sel:deviceExtensionName:RequireDeviceVersion3$sel:deviceExtensionMinVersion:RequireDeviceVersionInstanceRequirementRequireInstanceVersionRequireInstanceLayerRequireInstanceExtension#$sel:version:RequireInstanceVersion-$sel:instanceLayerName:RequireInstanceVersion3$sel:instanceLayerMinVersion:RequireInstanceVersion6$sel:instanceExtensionLayerName:RequireInstanceVersion1$sel:instanceExtensionName:RequireInstanceVersion7$sel:instanceExtensionMinVersion:RequireInstanceVersion$fKnownFeatureStructfeat*$fKnownFeatureStructPhysicalDeviceFeatures$fKnownPropertyStructprop-$fKnownPropertyStructPhysicalDeviceProperties#$sel:next:DescriptorSetAllocateInfo-$sel:descriptorPool:DescriptorSetAllocateInfo)$sel:setLayouts:DescriptorSetAllocateInfo"$sel:next:DescriptorPoolCreateInfo#$sel:flags:DescriptorPoolCreateInfo%$sel:maxSets:DescriptorPoolCreateInfo'$sel:poolSizes:DescriptorPoolCreateInfo$sel:type':DescriptorPoolSize'$sel:descriptorCount:DescriptorPoolSize'$sel:next:DescriptorSetLayoutCreateInfo($sel:flags:DescriptorSetLayoutCreateInfo+$sel:bindings:DescriptorSetLayoutCreateInfo'$sel:binding:DescriptorSetLayoutBinding.$sel:descriptorType:DescriptorSetLayoutBinding/$sel:descriptorCount:DescriptorSetLayoutBinding*$sel:stageFlags:DescriptorSetLayoutBinding1$sel:immutableSamplers:DescriptorSetLayoutBinding$sel:srcSet:CopyDescriptorSet!$sel:srcBinding:CopyDescriptorSet&$sel:srcArrayElement:CopyDescriptorSet$sel:dstSet:CopyDescriptorSet!$sel:dstBinding:CopyDescriptorSet&$sel:dstArrayElement:CopyDescriptorSet&$sel:descriptorCount:CopyDescriptorSet$sel:next:WriteDescriptorSet$sel:dstSet:WriteDescriptorSet"$sel:dstBinding:WriteDescriptorSet'$sel:dstArrayElement:WriteDescriptorSet'$sel:descriptorCount:WriteDescriptorSet&$sel:descriptorType:WriteDescriptorSet!$sel:imageInfo:WriteDescriptorSet"$sel:bufferInfo:WriteDescriptorSet'$sel:texelBufferView:WriteDescriptorSet $sel:sampler:DescriptorImageInfo"$sel:imageView:DescriptorImageInfo$$sel:imageLayout:DescriptorImageInfo $sel:buffer:DescriptorBufferInfo $sel:offset:DescriptorBufferInfo$sel:range:DescriptorBufferInfowithDescriptorSetLayoutwithDescriptorPoolwithDescriptorSets$fZeroDescriptorBufferInfo$fStorableDescriptorBufferInfo!$fFromCStructDescriptorBufferInfo$fToCStructDescriptorBufferInfo$fZeroDescriptorImageInfo$fStorableDescriptorImageInfo $fFromCStructDescriptorImageInfo$fToCStructDescriptorImageInfo$fZeroWriteDescriptorSet$fFromCStructWriteDescriptorSet$fToCStructWriteDescriptorSet$fExtensibleWriteDescriptorSet$fZeroCopyDescriptorSet$fStorableCopyDescriptorSet$fFromCStructCopyDescriptorSet$fToCStructCopyDescriptorSet $fZeroDescriptorSetLayoutBinding'$fFromCStructDescriptorSetLayoutBinding%$fToCStructDescriptorSetLayoutBinding#$fZeroDescriptorSetLayoutCreateInfo*$fFromCStructDescriptorSetLayoutCreateInfo($fToCStructDescriptorSetLayoutCreateInfo)$fExtensibleDescriptorSetLayoutCreateInfo$fZeroDescriptorPoolSize$fStorableDescriptorPoolSize$fFromCStructDescriptorPoolSize$fToCStructDescriptorPoolSize$fZeroDescriptorPoolCreateInfo%$fFromCStructDescriptorPoolCreateInfo#$fToCStructDescriptorPoolCreateInfo$$fExtensibleDescriptorPoolCreateInfo$fZeroDescriptorSetAllocateInfo&$fFromCStructDescriptorSetAllocateInfo$$fToCStructDescriptorSetAllocateInfo%$fExtensibleDescriptorSetAllocateInfo$fEqDescriptorPoolSize$fEqCopyDescriptorSet$fEqDescriptorImageInfo$fEqDescriptorBufferInfo$fShowDescriptorSetAllocateInfo$fShowDescriptorPoolCreateInfo$fShowDescriptorPoolSize#$fShowDescriptorSetLayoutCreateInfo $fShowDescriptorSetLayoutBinding$fShowCopyDescriptorSet$fShowWriteDescriptorSet$fShowDescriptorImageInfo$fShowDescriptorBufferInfo"KHR_PUSH_DESCRIPTOR_EXTENSION_NAME KHR_PUSH_DESCRIPTOR_SPEC_VERSION$sel:maxPushDescriptors:PhysicalDevicePushDescriptorPropertiesKHR/$fZeroPhysicalDevicePushDescriptorPropertiesKHR3$fStorablePhysicalDevicePushDescriptorPropertiesKHR6$fFromCStructPhysicalDevicePushDescriptorPropertiesKHR4$fToCStructPhysicalDevicePushDescriptorPropertiesKHR-$fEqPhysicalDevicePushDescriptorPropertiesKHR/$fShowPhysicalDevicePushDescriptorPropertiesKHR-KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME+KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION%DescriptorUpdateTemplateCreateInfoKHR DescriptorUpdateTemplateEntryKHRDescriptorUpdateTemplateTypeKHRDescriptorUpdateTemplateKHR&DescriptorUpdateTemplateCreateFlagsKHR;DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT2DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR*OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR9STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR$$sel:next:DescriptorSetLayoutSupport)$sel:supported:DescriptorSetLayoutSupport>$sel:maxPerSetDescriptors:PhysicalDeviceMaintenance3Properties$sel:maxMemoryAllocationSize:PhysicalDeviceMaintenance3Properties*$fZeroPhysicalDeviceMaintenance3Properties.$fStorablePhysicalDeviceMaintenance3Properties1$fFromCStructPhysicalDeviceMaintenance3Properties/$fToCStructPhysicalDeviceMaintenance3Properties $fZeroDescriptorSetLayoutSupport'$fFromCStructDescriptorSetLayoutSupport%$fToCStructDescriptorSetLayoutSupport&$fExtensibleDescriptorSetLayoutSupport($fEqPhysicalDeviceMaintenance3Properties $fShowDescriptorSetLayoutSupport*$fShowPhysicalDeviceMaintenance3PropertiesKHR_MAINTENANCE3_EXTENSION_NAMEKHR_MAINTENANCE3_SPEC_VERSIONDescriptorSetLayoutSupportKHR'PhysicalDeviceMaintenance3PropertiesKHR0STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR;STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHRAPI_VERSION_1_1 ClearValueColor DepthStencilFloat32Int32Uint32$sel:aspectMask:ClearAttachment$$sel:colorAttachment:ClearAttachment$sel:clearValue:ClearAttachment!$sel:depth:ClearDepthStencilValue#$sel:stencil:ClearDepthStencilValue$sel:next:RenderPassBeginInfo#$sel:renderPass:RenderPassBeginInfo$$sel:framebuffer:RenderPassBeginInfo#$sel:renderArea:RenderPassBeginInfo$$sel:clearValues:RenderPassBeginInfo $sel:srcSubresource:ImageResolve$sel:srcOffset:ImageResolve $sel:dstSubresource:ImageResolve$sel:dstOffset:ImageResolve$sel:extent:ImageResolve!$sel:bufferOffset:BufferImageCopy$$sel:bufferRowLength:BufferImageCopy&$sel:bufferImageHeight:BufferImageCopy%$sel:imageSubresource:BufferImageCopy $sel:imageOffset:BufferImageCopy $sel:imageExtent:BufferImageCopy$sel:srcSubresource:ImageBlit$sel:srcOffsets:ImageBlit$sel:dstSubresource:ImageBlit$sel:dstOffsets:ImageBlit$sel:srcSubresource:ImageCopy$sel:srcOffset:ImageCopy$sel:dstSubresource:ImageCopy$sel:dstOffset:ImageCopy$sel:extent:ImageCopy$sel:srcOffset:BufferCopy$sel:dstOffset:BufferCopy$sel:size:BufferCopy&$sel:aspectMask:ImageSubresourceLayers$$sel:mipLevel:ImageSubresourceLayers*$sel:baseArrayLayer:ImageSubresourceLayers&$sel:layerCount:ImageSubresourceLayers$sel:rect:ClearRect$sel:baseArrayLayer:ClearRect$sel:layerCount:ClearRectcmdWaitEventsSafe cmdUseQuerycmdUseRenderPass$fZeroClearRect$fStorableClearRect$fFromCStructClearRect$fToCStructClearRect$fZeroImageSubresourceLayers $fStorableImageSubresourceLayers#$fFromCStructImageSubresourceLayers!$fToCStructImageSubresourceLayers$fZeroBufferCopy$fStorableBufferCopy$fFromCStructBufferCopy$fToCStructBufferCopy$fZeroImageCopy$fStorableImageCopy$fFromCStructImageCopy$fToCStructImageCopy$fZeroImageBlit$fStorableImageBlit$fFromCStructImageBlit$fToCStructImageBlit$fZeroBufferImageCopy$fStorableBufferImageCopy$fFromCStructBufferImageCopy$fToCStructBufferImageCopy$fZeroImageResolve$fStorableImageResolve$fFromCStructImageResolve$fToCStructImageResolve$fZeroClearDepthStencilValue $fStorableClearDepthStencilValue#$fFromCStructClearDepthStencilValue!$fToCStructClearDepthStencilValue$fZeroClearColorValue$fToCStructClearColorValue$fZeroClearValue$fToCStructClearValue$fZeroClearAttachment$fToCStructClearAttachment$fZeroRenderPassBeginInfo$fToCStructRenderPassBeginInfo$fExtensibleRenderPassBeginInfo$fShowClearValue$fShowClearColorValue$fEqClearDepthStencilValue$fEqBufferCopy$fEqImageSubresourceLayers$fShowClearAttachment$fShowClearDepthStencilValue$fShowRenderPassBeginInfo$fShowImageResolve$fShowBufferImageCopy$fShowImageBlit$fShowImageCopy$fShowBufferCopy$fShowImageSubresourceLayers$fShowClearRect"KHR_COPY_COMMANDS_2_EXTENSION_NAME KHR_COPY_COMMANDS_2_SPEC_VERSION"$sel:srcImage:ResolveImageInfo2KHR($sel:srcImageLayout:ResolveImageInfo2KHR"$sel:dstImage:ResolveImageInfo2KHR($sel:dstImageLayout:ResolveImageInfo2KHR!$sel:regions:ResolveImageInfo2KHR'$sel:srcImage:CopyImageToBufferInfo2KHR-$sel:srcImageLayout:CopyImageToBufferInfo2KHR($sel:dstBuffer:CopyImageToBufferInfo2KHR&$sel:regions:CopyImageToBufferInfo2KHR($sel:srcBuffer:CopyBufferToImageInfo2KHR'$sel:dstImage:CopyBufferToImageInfo2KHR-$sel:dstImageLayout:CopyBufferToImageInfo2KHR&$sel:regions:CopyBufferToImageInfo2KHR$sel:srcImage:BlitImageInfo2KHR%$sel:srcImageLayout:BlitImageInfo2KHR$sel:dstImage:BlitImageInfo2KHR%$sel:dstImageLayout:BlitImageInfo2KHR$sel:regions:BlitImageInfo2KHR$sel:filter':BlitImageInfo2KHR$sel:srcImage:CopyImageInfo2KHR%$sel:srcImageLayout:CopyImageInfo2KHR$sel:dstImage:CopyImageInfo2KHR%$sel:dstImageLayout:CopyImageInfo2KHR$sel:regions:CopyImageInfo2KHR!$sel:srcBuffer:CopyBufferInfo2KHR!$sel:dstBuffer:CopyBufferInfo2KHR$sel:regions:CopyBufferInfo2KHR$$sel:srcSubresource:ImageResolve2KHR$sel:srcOffset:ImageResolve2KHR$$sel:dstSubresource:ImageResolve2KHR$sel:dstOffset:ImageResolve2KHR$sel:extent:ImageResolve2KHR$sel:next:BufferImageCopy2KHR%$sel:bufferOffset:BufferImageCopy2KHR($sel:bufferRowLength:BufferImageCopy2KHR*$sel:bufferImageHeight:BufferImageCopy2KHR)$sel:imageSubresource:BufferImageCopy2KHR$$sel:imageOffset:BufferImageCopy2KHR$$sel:imageExtent:BufferImageCopy2KHR$sel:next:ImageBlit2KHR!$sel:srcSubresource:ImageBlit2KHR$sel:srcOffsets:ImageBlit2KHR!$sel:dstSubresource:ImageBlit2KHR$sel:dstOffsets:ImageBlit2KHR!$sel:srcSubresource:ImageCopy2KHR$sel:srcOffset:ImageCopy2KHR!$sel:dstSubresource:ImageCopy2KHR$sel:dstOffset:ImageCopy2KHR$sel:extent:ImageCopy2KHR$sel:srcOffset:BufferCopy2KHR$sel:dstOffset:BufferCopy2KHR$sel:size:BufferCopy2KHR$fZeroBufferCopy2KHR$fStorableBufferCopy2KHR$fFromCStructBufferCopy2KHR$fToCStructBufferCopy2KHR$fZeroImageCopy2KHR$fStorableImageCopy2KHR$fFromCStructImageCopy2KHR$fToCStructImageCopy2KHR$fZeroImageBlit2KHR$fFromCStructImageBlit2KHR$fToCStructImageBlit2KHR$fExtensibleImageBlit2KHR$fZeroBufferImageCopy2KHR $fFromCStructBufferImageCopy2KHR$fToCStructBufferImageCopy2KHR$fExtensibleBufferImageCopy2KHR$fZeroImageResolve2KHR$fStorableImageResolve2KHR$fFromCStructImageResolve2KHR$fToCStructImageResolve2KHR$fZeroCopyBufferInfo2KHR$fFromCStructCopyBufferInfo2KHR$fToCStructCopyBufferInfo2KHR$fZeroCopyImageInfo2KHR$fFromCStructCopyImageInfo2KHR$fToCStructCopyImageInfo2KHR$fZeroBlitImageInfo2KHR$fFromCStructBlitImageInfo2KHR$fToCStructBlitImageInfo2KHR$fZeroCopyBufferToImageInfo2KHR&$fFromCStructCopyBufferToImageInfo2KHR$$fToCStructCopyBufferToImageInfo2KHR$fZeroCopyImageToBufferInfo2KHR&$fFromCStructCopyImageToBufferInfo2KHR$$fToCStructCopyImageToBufferInfo2KHR$fZeroResolveImageInfo2KHR!$fFromCStructResolveImageInfo2KHR$fToCStructResolveImageInfo2KHR$fEqBufferCopy2KHR$fShowResolveImageInfo2KHR$fShowCopyImageToBufferInfo2KHR$fShowCopyBufferToImageInfo2KHR$fShowBlitImageInfo2KHR$fShowCopyImageInfo2KHR$fShowCopyBufferInfo2KHR$fShowImageResolve2KHR$fShowBufferImageCopy2KHR$fShowImageBlit2KHR$fShowImageCopy2KHR$fShowBufferCopy2KHR&EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME$EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION$sel:customBorderColors:PhysicalDeviceCustomBorderColorFeaturesEXT$sel:customBorderColorWithoutFormat:PhysicalDeviceCustomBorderColorFeaturesEXT$sel:maxCustomBorderColorSamplers:PhysicalDeviceCustomBorderColorPropertiesEXT<$sel:customBorderColor:SamplerCustomBorderColorCreateInfoEXT1$sel:format:SamplerCustomBorderColorCreateInfoEXT+$fZeroSamplerCustomBorderColorCreateInfoEXT0$fToCStructSamplerCustomBorderColorCreateInfoEXT2$fZeroPhysicalDeviceCustomBorderColorPropertiesEXT6$fStorablePhysicalDeviceCustomBorderColorPropertiesEXT9$fFromCStructPhysicalDeviceCustomBorderColorPropertiesEXT7$fToCStructPhysicalDeviceCustomBorderColorPropertiesEXT0$fZeroPhysicalDeviceCustomBorderColorFeaturesEXT4$fStorablePhysicalDeviceCustomBorderColorFeaturesEXT7$fFromCStructPhysicalDeviceCustomBorderColorFeaturesEXT5$fToCStructPhysicalDeviceCustomBorderColorFeaturesEXT.$fEqPhysicalDeviceCustomBorderColorFeaturesEXT0$fEqPhysicalDeviceCustomBorderColorPropertiesEXT0$fShowPhysicalDeviceCustomBorderColorFeaturesEXT2$fShowPhysicalDeviceCustomBorderColorPropertiesEXT+$fShowSamplerCustomBorderColorCreateInfoEXT$sel:contents:SubpassBeginInfo$sel:next:RenderPassCreateInfo2 $sel:flags:RenderPassCreateInfo2&$sel:attachments:RenderPassCreateInfo2$$sel:subpasses:RenderPassCreateInfo2'$sel:dependencies:RenderPassCreateInfo2.$sel:correlatedViewMasks:RenderPassCreateInfo2$sel:next:SubpassDependency2"$sel:srcSubpass:SubpassDependency2"$sel:dstSubpass:SubpassDependency2$$sel:srcStageMask:SubpassDependency2$$sel:dstStageMask:SubpassDependency2%$sel:srcAccessMask:SubpassDependency2%$sel:dstAccessMask:SubpassDependency2'$sel:dependencyFlags:SubpassDependency2"$sel:viewOffset:SubpassDependency2$sel:next:SubpassDescription2$sel:flags:SubpassDescription2*$sel:pipelineBindPoint:SubpassDescription2!$sel:viewMask:SubpassDescription2)$sel:inputAttachments:SubpassDescription2)$sel:colorAttachments:SubpassDescription2+$sel:resolveAttachments:SubpassDescription2/$sel:depthStencilAttachment:SubpassDescription2,$sel:preserveAttachments:SubpassDescription2$sel:next:AttachmentReference2$$sel:attachment:AttachmentReference2 $sel:layout:AttachmentReference2$$sel:aspectMask:AttachmentReference2 $sel:next:AttachmentDescription2!$sel:flags:AttachmentDescription2"$sel:format:AttachmentDescription2#$sel:samples:AttachmentDescription2"$sel:loadOp:AttachmentDescription2#$sel:storeOp:AttachmentDescription2)$sel:stencilLoadOp:AttachmentDescription2*$sel:stencilStoreOp:AttachmentDescription2)$sel:initialLayout:AttachmentDescription2'$sel:finalLayout:AttachmentDescription2cmdUseRenderPass2$fZeroAttachmentDescription2#$fFromCStructAttachmentDescription2!$fToCStructAttachmentDescription2"$fExtensibleAttachmentDescription2$fZeroAttachmentReference2!$fFromCStructAttachmentReference2$fToCStructAttachmentReference2 $fExtensibleAttachmentReference2$fZeroSubpassDescription2 $fFromCStructSubpassDescription2$fToCStructSubpassDescription2$fExtensibleSubpassDescription2$fZeroSubpassDependency2$fFromCStructSubpassDependency2$fToCStructSubpassDependency2$fExtensibleSubpassDependency2$fZeroRenderPassCreateInfo2"$fFromCStructRenderPassCreateInfo2 $fToCStructRenderPassCreateInfo2!$fExtensibleRenderPassCreateInfo2$fZeroSubpassBeginInfo$fStorableSubpassBeginInfo$fFromCStructSubpassBeginInfo$fToCStructSubpassBeginInfo$fZeroSubpassEndInfo$fStorableSubpassEndInfo$fFromCStructSubpassEndInfo$fToCStructSubpassEndInfo$fEqSubpassEndInfo$fEqSubpassBeginInfo$fShowSubpassEndInfo$fShowSubpassBeginInfo$fShowRenderPassCreateInfo2$fShowSubpassDependency2$fShowSubpassDescription2$fShowAttachmentReference2$fShowAttachmentDescription2(KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME&KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION6$sel:sampleCounts:PhysicalDeviceFragmentShadingRateKHR6$sel:fragmentSize:PhysicalDeviceFragmentShadingRateKHR$sel:minFragmentShadingRateAttachmentTexelSize:PhysicalDeviceFragmentShadingRatePropertiesKHR$sel:maxFragmentShadingRateAttachmentTexelSize:PhysicalDeviceFragmentShadingRatePropertiesKHR$sel:maxFragmentShadingRateAttachmentTexelSizeAspectRatio:PhysicalDeviceFragmentShadingRatePropertiesKHR$sel:primitiveFragmentShadingRateWithMultipleViewports:PhysicalDeviceFragmentShadingRatePropertiesKHR$sel:layeredShadingRateAttachments:PhysicalDeviceFragmentShadingRatePropertiesKHR$sel:fragmentShadingRateNonTrivialCombinerOps:PhysicalDeviceFragmentShadingRatePropertiesKHR$sel:maxFragmentSize:PhysicalDeviceFragmentShadingRatePropertiesKHR$sel:maxFragmentSizeAspectRatio:PhysicalDeviceFragmentShadingRatePropertiesKHR$sel:maxFragmentShadingRateCoverageSamples:PhysicalDeviceFragmentShadingRatePropertiesKHR$sel:maxFragmentShadingRateRasterizationSamples:PhysicalDeviceFragmentShadingRatePropertiesKHR$sel:fragmentShadingRateWithShaderDepthStencilWrites:PhysicalDeviceFragmentShadingRatePropertiesKHR$sel:fragmentShadingRateWithSampleMask:PhysicalDeviceFragmentShadingRatePropertiesKHR$sel:fragmentShadingRateWithShaderSampleMask:PhysicalDeviceFragmentShadingRatePropertiesKHR$sel:fragmentShadingRateWithConservativeRasterization:PhysicalDeviceFragmentShadingRatePropertiesKHR$sel:fragmentShadingRateWithFragmentShaderInterlock:PhysicalDeviceFragmentShadingRatePropertiesKHR$sel:fragmentShadingRateWithCustomSampleLocations:PhysicalDeviceFragmentShadingRatePropertiesKHR$sel:fragmentShadingRateStrictMultiplyCombiner:PhysicalDeviceFragmentShadingRatePropertiesKHR$sel:pipelineFragmentShadingRate:PhysicalDeviceFragmentShadingRateFeaturesKHR$sel:primitiveFragmentShadingRate:PhysicalDeviceFragmentShadingRateFeaturesKHR$sel:attachmentFragmentShadingRate:PhysicalDeviceFragmentShadingRateFeaturesKHR?$sel:fragmentSize:PipelineFragmentShadingRateStateCreateInfoKHR>$sel:combinerOps:PipelineFragmentShadingRateStateCreateInfoKHR$sel:fragmentShadingRateAttachment:FragmentShadingRateAttachmentInfoKHR$sel:shadingRateAttachmentTexelSize:FragmentShadingRateAttachmentInfoKHR)FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR)FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR)FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR*$fZeroFragmentShadingRateAttachmentInfoKHR1$fFromCStructFragmentShadingRateAttachmentInfoKHR/$fToCStructFragmentShadingRateAttachmentInfoKHR2$fZeroPhysicalDeviceFragmentShadingRateFeaturesKHR6$fStorablePhysicalDeviceFragmentShadingRateFeaturesKHR9$fFromCStructPhysicalDeviceFragmentShadingRateFeaturesKHR7$fToCStructPhysicalDeviceFragmentShadingRateFeaturesKHR4$fZeroPhysicalDeviceFragmentShadingRatePropertiesKHR8$fStorablePhysicalDeviceFragmentShadingRatePropertiesKHR;$fFromCStructPhysicalDeviceFragmentShadingRatePropertiesKHR9$fToCStructPhysicalDeviceFragmentShadingRatePropertiesKHR*$fZeroPhysicalDeviceFragmentShadingRateKHR.$fStorablePhysicalDeviceFragmentShadingRateKHR1$fFromCStructPhysicalDeviceFragmentShadingRateKHR/$fToCStructPhysicalDeviceFragmentShadingRateKHR&$fReadFragmentShadingRateCombinerOpKHR&$fShowFragmentShadingRateCombinerOpKHR3$fZeroPipelineFragmentShadingRateStateCreateInfoKHR7$fStorablePipelineFragmentShadingRateStateCreateInfoKHR:$fFromCStructPipelineFragmentShadingRateStateCreateInfoKHR8$fToCStructPipelineFragmentShadingRateStateCreateInfoKHR$$fEqFragmentShadingRateCombinerOpKHR%$fOrdFragmentShadingRateCombinerOpKHR*$fStorableFragmentShadingRateCombinerOpKHR&$fZeroFragmentShadingRateCombinerOpKHR0$fEqPhysicalDeviceFragmentShadingRateFeaturesKHR*$fShowPhysicalDeviceFragmentShadingRateKHR4$fShowPhysicalDeviceFragmentShadingRatePropertiesKHR2$fShowPhysicalDeviceFragmentShadingRateFeaturesKHR3$fShowPipelineFragmentShadingRateStateCreateInfoKHR*$fShowFragmentShadingRateAttachmentInfoKHR-NV_FRAGMENT_SHADING_RATE_ENUMS_EXTENSION_NAME+NV_FRAGMENT_SHADING_RATE_ENUMS_SPEC_VERSIONFragmentShadingRateTypeNV$sel:shadingRateType:PipelineFragmentShadingRateEnumStateCreateInfoNV$sel:shadingRate:PipelineFragmentShadingRateEnumStateCreateInfoNV$sel:combinerOps:PipelineFragmentShadingRateEnumStateCreateInfoNV$sel:maxFragmentShadingRateInvocationCount:PhysicalDeviceFragmentShadingRateEnumsPropertiesNV$sel:fragmentShadingRateEnums:PhysicalDeviceFragmentShadingRateEnumsFeaturesNV$sel:supersampleFragmentShadingRates:PhysicalDeviceFragmentShadingRateEnumsFeaturesNV$sel:noInvocationFragmentShadingRates:PhysicalDeviceFragmentShadingRateEnumsFeaturesNV#FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV4FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV4FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV4FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV4FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV4FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV4FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV6$fZeroPhysicalDeviceFragmentShadingRateEnumsFeaturesNV:$fStorablePhysicalDeviceFragmentShadingRateEnumsFeaturesNV=$fFromCStructPhysicalDeviceFragmentShadingRateEnumsFeaturesNV;$fToCStructPhysicalDeviceFragmentShadingRateEnumsFeaturesNV8$fZeroPhysicalDeviceFragmentShadingRateEnumsPropertiesNV<$fStorablePhysicalDeviceFragmentShadingRateEnumsPropertiesNV?$fFromCStructPhysicalDeviceFragmentShadingRateEnumsPropertiesNV=$fToCStructPhysicalDeviceFragmentShadingRateEnumsPropertiesNV$fReadFragmentShadingRateNV$fShowFragmentShadingRateNV$fReadFragmentShadingRateTypeNV$fShowFragmentShadingRateTypeNV6$fZeroPipelineFragmentShadingRateEnumStateCreateInfoNV:$fStorablePipelineFragmentShadingRateEnumStateCreateInfoNV=$fFromCStructPipelineFragmentShadingRateEnumStateCreateInfoNV;$fToCStructPipelineFragmentShadingRateEnumStateCreateInfoNV4$fEqPipelineFragmentShadingRateEnumStateCreateInfoNV$fEqFragmentShadingRateTypeNV$fOrdFragmentShadingRateTypeNV#$fStorableFragmentShadingRateTypeNV$fZeroFragmentShadingRateTypeNV$fEqFragmentShadingRateNV$fOrdFragmentShadingRateNV$fStorableFragmentShadingRateNV$fZeroFragmentShadingRateNV6$fEqPhysicalDeviceFragmentShadingRateEnumsPropertiesNV4$fEqPhysicalDeviceFragmentShadingRateEnumsFeaturesNV6$fShowPipelineFragmentShadingRateEnumStateCreateInfoNV8$fShowPhysicalDeviceFragmentShadingRateEnumsPropertiesNV6$fShowPhysicalDeviceFragmentShadingRateEnumsFeaturesNV&KHR_CREATE_RENDERPASS_2_EXTENSION_NAME$KHR_CREATE_RENDERPASS_2_SPEC_VERSIONSubpassEndInfoKHRSubpassBeginInfoKHRRenderPassCreateInfo2KHRSubpassDependency2KHRSubpassDescription2KHRAttachmentReference2KHRAttachmentDescription2KHR#STRUCTURE_TYPE_SUBPASS_END_INFO_KHR%STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR,STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR'STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR(STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR)STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR+STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR;$sel:depthResolveMode:SubpassDescriptionDepthStencilResolve=$sel:stencilResolveMode:SubpassDescriptionDepthStencilResolve$sel:depthStencilResolveAttachment:SubpassDescriptionDepthStencilResolve$sel:supportedDepthResolveModes:PhysicalDeviceDepthStencilResolveProperties$sel:supportedStencilResolveModes:PhysicalDeviceDepthStencilResolveProperties$sel:independentResolveNone:PhysicalDeviceDepthStencilResolveProperties$sel:independentResolve:PhysicalDeviceDepthStencilResolveProperties1$fZeroPhysicalDeviceDepthStencilResolveProperties5$fStorablePhysicalDeviceDepthStencilResolveProperties8$fFromCStructPhysicalDeviceDepthStencilResolveProperties6$fToCStructPhysicalDeviceDepthStencilResolveProperties+$fZeroSubpassDescriptionDepthStencilResolve2$fFromCStructSubpassDescriptionDepthStencilResolve0$fToCStructSubpassDescriptionDepthStencilResolve/$fEqPhysicalDeviceDepthStencilResolveProperties+$fShowSubpassDescriptionDepthStencilResolve1$fShowPhysicalDeviceDepthStencilResolveProperties(KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME&KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION(SubpassDescriptionDepthStencilResolveKHR.PhysicalDeviceDepthStencilResolvePropertiesKHRResolveModeFlagBitsKHRResolveModeFlagsKHRRESOLVE_MODE_MAX_BIT_KHRRESOLVE_MODE_MIN_BIT_KHRRESOLVE_MODE_AVERAGE_BIT_KHR RESOLVE_MODE_SAMPLE_ZERO_BIT_KHRRESOLVE_MODE_NONE_KHR$sel:roundingModeIndependence:PhysicalDeviceVulkan12Properties$sel:shaderSignedZeroInfNanPreserveFloat16:PhysicalDeviceVulkan12Properties$sel:shaderSignedZeroInfNanPreserveFloat32:PhysicalDeviceVulkan12Properties$sel:shaderSignedZeroInfNanPreserveFloat64:PhysicalDeviceVulkan12Properties$sel:shaderDenormPreserveFloat16:PhysicalDeviceVulkan12Properties$sel:shaderDenormPreserveFloat32:PhysicalDeviceVulkan12Properties$sel:shaderDenormPreserveFloat64:PhysicalDeviceVulkan12Properties$sel:shaderDenormFlushToZeroFloat16:PhysicalDeviceVulkan12Properties$sel:shaderDenormFlushToZeroFloat32:PhysicalDeviceVulkan12Properties$sel:shaderDenormFlushToZeroFloat64:PhysicalDeviceVulkan12Properties$sel:shaderRoundingModeRTEFloat16:PhysicalDeviceVulkan12Properties$sel:shaderRoundingModeRTEFloat32:PhysicalDeviceVulkan12Properties$sel:shaderRoundingModeRTEFloat64:PhysicalDeviceVulkan12Properties$sel:shaderRoundingModeRTZFloat16:PhysicalDeviceVulkan12Properties$sel:shaderRoundingModeRTZFloat32:PhysicalDeviceVulkan12Properties$sel:shaderRoundingModeRTZFloat64:PhysicalDeviceVulkan12Properties$sel:maxUpdateAfterBindDescriptorsInAllPools:PhysicalDeviceVulkan12Properties$sel:shaderUniformBufferArrayNonUniformIndexingNative:PhysicalDeviceVulkan12Properties$sel:shaderSampledImageArrayNonUniformIndexingNative:PhysicalDeviceVulkan12Properties$sel:shaderStorageBufferArrayNonUniformIndexingNative:PhysicalDeviceVulkan12Properties$sel:shaderStorageImageArrayNonUniformIndexingNative:PhysicalDeviceVulkan12Properties$sel:shaderInputAttachmentArrayNonUniformIndexingNative:PhysicalDeviceVulkan12Properties$sel:robustBufferAccessUpdateAfterBind:PhysicalDeviceVulkan12Properties>$sel:quadDivergentImplicitLod:PhysicalDeviceVulkan12Properties$sel:maxPerStageDescriptorUpdateAfterBindSamplers:PhysicalDeviceVulkan12Properties$sel:maxPerStageDescriptorUpdateAfterBindUniformBuffers:PhysicalDeviceVulkan12Properties$sel:maxPerStageDescriptorUpdateAfterBindStorageBuffers:PhysicalDeviceVulkan12Properties$sel:maxPerStageDescriptorUpdateAfterBindSampledImages:PhysicalDeviceVulkan12Properties$sel:maxPerStageDescriptorUpdateAfterBindStorageImages:PhysicalDeviceVulkan12Properties$sel:maxPerStageDescriptorUpdateAfterBindInputAttachments:PhysicalDeviceVulkan12Properties$sel:maxPerStageUpdateAfterBindResources:PhysicalDeviceVulkan12Properties$sel:maxDescriptorSetUpdateAfterBindSamplers:PhysicalDeviceVulkan12Properties$sel:maxDescriptorSetUpdateAfterBindUniformBuffers:PhysicalDeviceVulkan12Properties$sel:maxDescriptorSetUpdateAfterBindUniformBuffersDynamic:PhysicalDeviceVulkan12Properties$sel:maxDescriptorSetUpdateAfterBindStorageBuffers:PhysicalDeviceVulkan12Properties$sel:maxDescriptorSetUpdateAfterBindStorageBuffersDynamic:PhysicalDeviceVulkan12Properties$sel:maxDescriptorSetUpdateAfterBindSampledImages:PhysicalDeviceVulkan12Properties$sel:maxDescriptorSetUpdateAfterBindStorageImages:PhysicalDeviceVulkan12Properties$sel:maxDescriptorSetUpdateAfterBindInputAttachments:PhysicalDeviceVulkan12Properties$sel:supportedDepthResolveModes:PhysicalDeviceVulkan12Properties$sel:supportedStencilResolveModes:PhysicalDeviceVulkan12Properties<$sel:independentResolveNone:PhysicalDeviceVulkan12Properties8$sel:independentResolve:PhysicalDeviceVulkan12Properties$sel:filterMinmaxSingleComponentFormats:PhysicalDeviceVulkan12Properties$sel:filterMinmaxImageComponentMapping:PhysicalDeviceVulkan12Properties$sel:maxTimelineSemaphoreValueDifference:PhysicalDeviceVulkan12Properties$sel:framebufferIntegerColorSampleCounts:PhysicalDeviceVulkan12Properties<$sel:samplerMirrorClampToEdge:PhysicalDeviceVulkan12Features5$sel:drawIndirectCount:PhysicalDeviceVulkan12Features;$sel:storageBuffer8BitAccess:PhysicalDeviceVulkan12Features$sel:uniformAndStorageBuffer8BitAccess:PhysicalDeviceVulkan12Features8$sel:storagePushConstant8:PhysicalDeviceVulkan12Features<$sel:shaderBufferInt64Atomics:PhysicalDeviceVulkan12Features<$sel:shaderSharedInt64Atomics:PhysicalDeviceVulkan12Features1$sel:shaderFloat16:PhysicalDeviceVulkan12Features.$sel:shaderInt8:PhysicalDeviceVulkan12Features6$sel:descriptorIndexing:PhysicalDeviceVulkan12Features$sel:shaderInputAttachmentArrayDynamicIndexing:PhysicalDeviceVulkan12Features$sel:shaderUniformTexelBufferArrayDynamicIndexing:PhysicalDeviceVulkan12Features$sel:shaderStorageTexelBufferArrayDynamicIndexing:PhysicalDeviceVulkan12Features$sel:shaderUniformBufferArrayNonUniformIndexing:PhysicalDeviceVulkan12Features$sel:shaderSampledImageArrayNonUniformIndexing:PhysicalDeviceVulkan12Features$sel:shaderStorageBufferArrayNonUniformIndexing:PhysicalDeviceVulkan12Features$sel:shaderStorageImageArrayNonUniformIndexing:PhysicalDeviceVulkan12Features$sel:shaderInputAttachmentArrayNonUniformIndexing:PhysicalDeviceVulkan12Features$sel:shaderUniformTexelBufferArrayNonUniformIndexing:PhysicalDeviceVulkan12Features$sel:shaderStorageTexelBufferArrayNonUniformIndexing:PhysicalDeviceVulkan12Features$sel:descriptorBindingUniformBufferUpdateAfterBind:PhysicalDeviceVulkan12Features$sel:descriptorBindingSampledImageUpdateAfterBind:PhysicalDeviceVulkan12Features$sel:descriptorBindingStorageImageUpdateAfterBind:PhysicalDeviceVulkan12Features$sel:descriptorBindingStorageBufferUpdateAfterBind:PhysicalDeviceVulkan12Features$sel:descriptorBindingUniformTexelBufferUpdateAfterBind:PhysicalDeviceVulkan12Features$sel:descriptorBindingStorageTexelBufferUpdateAfterBind:PhysicalDeviceVulkan12Features$sel:descriptorBindingUpdateUnusedWhilePending:PhysicalDeviceVulkan12Features$sel:descriptorBindingPartiallyBound:PhysicalDeviceVulkan12Features$sel:descriptorBindingVariableDescriptorCount:PhysicalDeviceVulkan12Features:$sel:runtimeDescriptorArray:PhysicalDeviceVulkan12Features7$sel:samplerFilterMinmax:PhysicalDeviceVulkan12Features5$sel:scalarBlockLayout:PhysicalDeviceVulkan12Features8$sel:imagelessFramebuffer:PhysicalDeviceVulkan12Features?$sel:uniformBufferStandardLayout:PhysicalDeviceVulkan12Features?$sel:shaderSubgroupExtendedTypes:PhysicalDeviceVulkan12Features?$sel:separateDepthStencilLayouts:PhysicalDeviceVulkan12Features2$sel:hostQueryReset:PhysicalDeviceVulkan12Features5$sel:timelineSemaphore:PhysicalDeviceVulkan12Features7$sel:bufferDeviceAddress:PhysicalDeviceVulkan12Features$sel:bufferDeviceAddressCaptureReplay:PhysicalDeviceVulkan12Features$sel:bufferDeviceAddressMultiDevice:PhysicalDeviceVulkan12Features5$sel:vulkanMemoryModel:PhysicalDeviceVulkan12Features$sel:vulkanMemoryModelDeviceScope:PhysicalDeviceVulkan12Features$sel:vulkanMemoryModelAvailabilityVisibilityChains:PhysicalDeviceVulkan12Features=$sel:shaderOutputViewportIndex:PhysicalDeviceVulkan12Features5$sel:shaderOutputLayer:PhysicalDeviceVulkan12Features>$sel:subgroupBroadcastDynamicId:PhysicalDeviceVulkan12Features0$sel:deviceUUID:PhysicalDeviceVulkan11Properties0$sel:driverUUID:PhysicalDeviceVulkan11Properties0$sel:deviceLUID:PhysicalDeviceVulkan11Properties4$sel:deviceNodeMask:PhysicalDeviceVulkan11Properties5$sel:deviceLUIDValid:PhysicalDeviceVulkan11Properties2$sel:subgroupSize:PhysicalDeviceVulkan11Properties=$sel:subgroupSupportedStages:PhysicalDeviceVulkan11Properties$sel:subgroupSupportedOperations:PhysicalDeviceVulkan11Properties$sel:subgroupQuadOperationsInAllStages:PhysicalDeviceVulkan11Properties;$sel:pointClippingBehavior:PhysicalDeviceVulkan11Properties;$sel:maxMultiviewViewCount:PhysicalDeviceVulkan11Properties?$sel:maxMultiviewInstanceIndex:PhysicalDeviceVulkan11Properties6$sel:protectedNoFault:PhysicalDeviceVulkan11Properties:$sel:maxPerSetDescriptors:PhysicalDeviceVulkan11Properties=$sel:maxMemoryAllocationSize:PhysicalDeviceVulkan11Properties<$sel:storageBuffer16BitAccess:PhysicalDeviceVulkan11Features$sel:uniformAndStorageBuffer16BitAccess:PhysicalDeviceVulkan11Features9$sel:storagePushConstant16:PhysicalDeviceVulkan11Features8$sel:storageInputOutput16:PhysicalDeviceVulkan11Features-$sel:multiview:PhysicalDeviceVulkan11Features;$sel:multiviewGeometryShader:PhysicalDeviceVulkan11Features?$sel:multiviewTessellationShader:PhysicalDeviceVulkan11Features$sel:variablePointersStorageBuffer:PhysicalDeviceVulkan11Features4$sel:variablePointers:PhysicalDeviceVulkan11Features3$sel:protectedMemory:PhysicalDeviceVulkan11Features:$sel:samplerYcbcrConversion:PhysicalDeviceVulkan11Features8$sel:shaderDrawParameters:PhysicalDeviceVulkan11FeaturesAPI_VERSION_1_2$$fZeroPhysicalDeviceVulkan11Features($fStorablePhysicalDeviceVulkan11Features+$fFromCStructPhysicalDeviceVulkan11Features)$fToCStructPhysicalDeviceVulkan11Features&$fZeroPhysicalDeviceVulkan11Properties*$fStorablePhysicalDeviceVulkan11Properties-$fFromCStructPhysicalDeviceVulkan11Properties+$fToCStructPhysicalDeviceVulkan11Properties$$fZeroPhysicalDeviceVulkan12Features($fStorablePhysicalDeviceVulkan12Features+$fFromCStructPhysicalDeviceVulkan12Features)$fToCStructPhysicalDeviceVulkan12Features&$fZeroPhysicalDeviceVulkan12Properties*$fStorablePhysicalDeviceVulkan12Properties-$fFromCStructPhysicalDeviceVulkan12Properties+$fToCStructPhysicalDeviceVulkan12Properties"$fEqPhysicalDeviceVulkan12Features"$fEqPhysicalDeviceVulkan11Features&$fShowPhysicalDeviceVulkan12Properties$$fShowPhysicalDeviceVulkan12Features&$fShowPhysicalDeviceVulkan11Properties$$fShowPhysicalDeviceVulkan11FeaturesspirvExtensionRequirementsspirvCapabilityRequirements $sel:next:CommandBufferBeginInfo!$sel:flags:CommandBufferBeginInfo+$sel:inheritanceInfo:CommandBufferBeginInfo&$sel:next:CommandBufferInheritanceInfo,$sel:renderPass:CommandBufferInheritanceInfo)$sel:subpass:CommandBufferInheritanceInfo-$sel:framebuffer:CommandBufferInheritanceInfo6$sel:occlusionQueryEnable:CommandBufferInheritanceInfo,$sel:queryFlags:CommandBufferInheritanceInfo4$sel:pipelineStatistics:CommandBufferInheritanceInfo*$sel:commandPool:CommandBufferAllocateInfo$$sel:level:CommandBufferAllocateInfo1$sel:commandBufferCount:CommandBufferAllocateInfowithCommandBuffersuseCommandBuffer$fZeroCommandBufferAllocateInfo#$fStorableCommandBufferAllocateInfo&$fFromCStructCommandBufferAllocateInfo$$fToCStructCommandBufferAllocateInfo"$fZeroCommandBufferInheritanceInfo)$fFromCStructCommandBufferInheritanceInfo'$fToCStructCommandBufferInheritanceInfo($fExtensibleCommandBufferInheritanceInfo$fZeroCommandBufferBeginInfo#$fFromCStructCommandBufferBeginInfo!$fToCStructCommandBufferBeginInfo"$fExtensibleCommandBufferBeginInfo$fEqCommandBufferAllocateInfo$fShowCommandBufferBeginInfo"$fShowCommandBufferInheritanceInfo$fShowCommandBufferAllocateInfo$sel:next:BufferCreateInfo$sel:flags:BufferCreateInfo$sel:size:BufferCreateInfo$sel:usage:BufferCreateInfo!$sel:sharingMode:BufferCreateInfo($sel:queueFamilyIndices:BufferCreateInfo withBuffer$fZeroBufferCreateInfo$fFromCStructBufferCreateInfo$fToCStructBufferCreateInfo$fExtensibleBufferCreateInfo$fShowBufferCreateInfoextensionDependenciesextensionCoreRequirementbaseGHC.PtrPtrbytestring-0.10.12.0Data.ByteString.Internal ByteStringplusPtr Debug.Trace traceEventIO