diff options
| author | Dustin Graves <dustin@lunarg.com> | 2016-05-10 16:44:16 -0600 |
|---|---|---|
| committer | Jon Ashburn <jon@lunarg.com> | 2016-05-11 17:01:07 -0600 |
| commit | 48daa85fa10f281ffa73fb98f6901d63d1d73286 (patch) | |
| tree | 636755661d07a4c81fb11161232368915c0bd514 /vk.xml | |
| parent | 8a8b9e9bd3dfbd92759a0475a7082e7b0f1058ac (diff) | |
| download | usermoji-48daa85fa10f281ffa73fb98f6901d63d1d73286.tar.xz | |
layers: Sync XML registry files from Vulkan-Docs
Sync the vk.xml and related Python scripts with the latest revisions from
Vulkan-Docs:
- Update local copy of vk.xml from Vulkan-Docs
- Merge minor changes to genvk.py and generator.py from Vulkan-Docs to
local copies
- Add debug marker function pointers to VkLayerDispatchTable
- Update parameter_validation code generation to support use of types
across API features; The core API feature needs to be aware of a
structure defined by the AMD_rasterization_order feature for the
purpose of pNext validation
- Modify thread_check code generation to add TODO messages for debug
marker support
Change-Id: I4d5b98683592f4ef404cb46e5b0f6ad519912382
Diffstat (limited to 'vk.xml')
| -rw-r--r-- | vk.xml | 354 |
1 files changed, 244 insertions, 110 deletions
@@ -94,7 +94,7 @@ maintained in the master branch of the Khronos Vulkan Github project. <type category="define">// Vulkan 1.0 version number #define <name>VK_API_VERSION_1_0</name> <type>VK_MAKE_VERSION</type>(1, 0, 0)</type> <!-- The patch version here should never be set to anything other than 0 --> <type category="define">// Version of this file -#define <name>VK_HEADER_VERSION</name> 7</type> +#define <name>VK_HEADER_VERSION</name> 12</type> <type category="define"> #define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type> @@ -329,6 +329,7 @@ maintained in the master branch of the Khronos Vulkan Github project. <type name="VkDebugReportFlagBitsEXT" category="enum"/> <type name="VkDebugReportObjectTypeEXT" category="enum"/> <type name="VkDebugReportErrorEXT" category="enum"/> + <type name="VkRasterizationOrderAMD" category="enum"/> <!-- The PFN_vk*Function types are used by VkAllocationCallbacks below --> <type category="funcpointer">typedef void (VKAPI_PTR *<name>PFN_vkInternalAllocationNotification</name>)( @@ -469,7 +470,7 @@ maintained in the master branch of the Khronos Vulkan Github project. <usage>pname:pfnAllocation must: be a pointer to a valid user-defined PFN_vkAllocationFunction</usage> <usage>pname:pfnReallocation must: be a pointer to a valid user-defined PFN_vkReallocationFunction</usage> <usage>pname:pfnFree must: be a pointer to a valid user-defined PFN_vkFreeFunction</usage> - <usage>If either of pname:pfnInternalAllocatione or pname:pfnInternalFree is not `NULL`, both must: be valid callbacks</usage> + <usage>If either of pname:pfnInternalAllocation or pname:pfnInternalFree is not `NULL`, both must: be valid callbacks</usage> </validity> </type> <type category="struct" name="VkDeviceQueueCreateInfo"> @@ -671,7 +672,7 @@ maintained in the master branch of the Khronos Vulkan Github project. <usage>If the <<features-features-sparseBinding,sparse bindings>> feature is not enabled, pname:flags mustnot: contain ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT</usage> <usage>If the <<features-features-sparseResidencyBuffer,sparse buffer residency>> feature is not enabled, pname:flags mustnot: contain ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</usage> <usage>If the <<features-features-sparseResidencyAliased,sparse aliased residency>> feature is not enabled, pname:flags mustnot: contain ename:VK_BUFFER_CREATE_SPARSE_ALIASED_BIT</usage> - <usage>If pname:flags contains ename:VK_BUFFER_CREATE_SPARSE_ALIASED_BIT, it must: also contain at least one of ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT or ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</usage> + <usage>If pname:flags contains ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT or ename:VK_BUFFER_CREATE_SPARSE_ALIASED_BIT, it must: also contain ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT</usage> </validity> </type> <type category="struct" name="VkBufferViewCreateInfo"> @@ -685,11 +686,11 @@ maintained in the master branch of the Khronos Vulkan Github project. <validity> <usage>pname:offset must: be less than the size of pname:buffer</usage> <usage>pname:offset must: be a multiple of sname:VkPhysicalDeviceLimits::pname:minTexelBufferOffsetAlignment</usage> - <usage>If pname:range is not equal to ename:VK_WHOLE_SIZE:</usage> - <usage> pname:range must: be greater than `0`</usage> - <usage> pname:range must: be a multiple of the element size of pname:format</usage> - <usage> pname:range divided by the size of an element of pname:format, must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxTexelBufferElements</usage> - <usage> the sum of pname:offset and pname:range must: be less than or equal to the size of pname:buffer</usage> + <usage>If pname:range is not equal to ename:VK_WHOLE_SIZE: + ** pname:range must: be greater than `0` + ** pname:range must: be a multiple of the element size of pname:format + ** pname:range divided by the size of an element of pname:format, must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxTexelBufferElements + ** the sum of pname:offset and pname:range must: be less than or equal to the size of pname:buffer</usage> <usage>pname:buffer must: have been created with a pname:usage value containing at least one of ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT or ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT</usage> <usage>If pname:buffer was created with pname:usage containing ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT, pname:format must: be supported for uniform texel buffers, as specified by the ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT flag in sname:VkFormatProperties::pname:bufferFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage> <usage>If pname:buffer was created with pname:usage containing ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT, pname:format must: be supported for storage texel buffers, as specified by the ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT flag in sname:VkFormatProperties::pname:bufferFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage> @@ -769,7 +770,7 @@ maintained in the master branch of the Khronos Vulkan Github project. <usage>If pname:image was created with a sharing mode of ename:VK_SHARING_MODE_CONCURRENT, pname:srcQueueFamilyIndex and pname:dstQueueFamilyIndex must: both be ename:VK_QUEUE_FAMILY_IGNORED</usage> <usage>If pname:image was created with a sharing mode of ename:VK_SHARING_MODE_EXCLUSIVE, pname:srcQueueFamilyIndex and pname:dstQueueFamilyIndex must: either both be ename:VK_QUEUE_FAMILY_IGNORED, or both be a valid queue family (see <<devsandqueues-queueprops>>)</usage> <usage>If pname:image was created with a sharing mode of ename:VK_SHARING_MODE_EXCLUSIVE, and pname:srcQueueFamilyIndex and pname:dstQueueFamilyIndex are valid queue families, at least one of them must: be the same as the family of the queue that will execute this barrier</usage> - <usage>pname:subresourceRange must: be a valid subresource range for the image (see <<resources-image-views>>)</usage> + <usage>pname:subresourceRange must: be a valid image subresource range for the image (see <<resources-image-views>>)</usage> <usage>If pname:image has a depth/stencil format with both depth and stencil components, then pname:aspectMask member of pname:subresourceRange must: include both ename:VK_IMAGE_ASPECT_DEPTH_BIT and ename:VK_IMAGE_ASPECT_STENCIL_BIT</usage> <usage>If either pname:oldLayout or pname:newLayout is ename:VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL then pname:image must: have been created with ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT set</usage> <usage>If either pname:oldLayout or pname:newLayout is ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL then pname:image must: have been created with ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set</usage> @@ -807,19 +808,21 @@ maintained in the master branch of the Khronos Vulkan Github project. <usage>If pname:imageType is ename:VK_IMAGE_TYPE_2D and pname:flags contains ename:VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT, pname:extent.width and pname:extent.height must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxImageDimensionCube, or sname:VkImageFormatProperties::pname:maxExtent.width/height (as returned by fname:vkGetPhysicalDeviceImageFormatProperties with pname:format, pname:type, pname:tiling, pname:usage and pname:flags equal to those in this structure) - whichever is higher</usage> <usage>If pname:imageType is ename:VK_IMAGE_TYPE_2D and pname:flags contains ename:VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT, pname:extent.width and pname:extent.height must: be equal</usage> <usage>If pname:imageType is ename:VK_IMAGE_TYPE_3D, pname:extent.width, pname:extent.height and pname:extent.depth must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxImageDimension3D, or sname:VkImageFormatProperties::pname:maxExtent.width/height/depth (as returned by fname:vkGetPhysicalDeviceImageFormatProperties with pname:format, pname:type, pname:tiling, pname:usage and pname:flags equal to those in this structure) - whichever is higher</usage> + <usage>If pname:imageType is ename:VK_IMAGE_TYPE_1D, both pname:extent.height and pname:extent.depth must: be `1`</usage> + <usage>If pname:imageType is ename:VK_IMAGE_TYPE_2D, pname:extent.depth must: be `1`</usage> <usage>pname:mipLevels must: be less than or equal to latexmath:[$\lfloor\log_2(\max(\mathit{extent.width}, \mathit{extent.height}, \mathit{extent.depth}))\rfloor + 1$]</usage> <usage>If any of pname:extent.width, pname:extent.height or pname:extent.depth are greater than the equivalently named members of sname:VkPhysicalDeviceLimits::pname:maxImageDimension3D, pname:mipLevels must: be less than or equal to sname:VkImageFormatProperties::pname:maxMipLevels (as returned by fname:vkGetPhysicalDeviceImageFormatProperties with pname:format, pname:type, pname:tiling, pname:usage and pname:flags equal to those in this structure)</usage> <usage>pname:arrayLayers must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxImageArrayLayers, or sname:VkImageFormatProperties::pname:maxArrayLayers (as returned by fname:vkGetPhysicalDeviceImageFormatProperties with pname:format, pname:type, pname:tiling, pname:usage and pname:flags equal to those in this structure) - whichever is higher</usage> - <usage>pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:sampleCounts returned by flink:vkGetPhysicalDeviceProperties, or sname:VkImageFormatProperties::pname:maxExtent.sampleCounts returned by fname:vkGetPhysicalDeviceImageFormatProperties with pname:format, pname:type, pname:tiling, pname:usage and pname:flags equal to those in this structure</usage> + <usage>pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:sampleCounts returned by flink:vkGetPhysicalDeviceProperties, or sname:VkImageFormatProperties::pname:sampleCounts returned by fname:vkGetPhysicalDeviceImageFormatProperties with pname:format, pname:type, pname:tiling, pname:usage and pname:flags equal to those in this structure</usage> <usage>If pname:usage includes ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, ename:VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT or ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, pname:extent.width must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxFramebufferWidth</usage> <usage>If pname:usage includes ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, ename:VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT or ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, pname:extent.height must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxFramebufferHeight</usage> - <usage>If pname:usage includes ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:maxFramebufferColorSamples</usage> - <usage>If pname:usage includes ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, and pname:format includes a depth aspect, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:maxFramebufferDepthSamples</usage> - <usage>If pname:usage includes ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, and pname:format includes a stencil aspect, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:maxFramebufferStencilSamples</usage> - <usage>If pname:usage includes ename:VK_IMAGE_USAGE_SAMPLED_BIT, and pname:format includes a color aspect, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:maxSampledImageColorSamples</usage> - <usage>If pname:usage includes ename:VK_IMAGE_USAGE_SAMPLED_BIT, and pname:format includes a depth aspect, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:maxSampledImageDepthSamples</usage> - <usage>If pname:usage includes ename:VK_IMAGE_USAGE_SAMPLED_BIT, and pname:format is an integer format, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:maxSampledImageIntegerSamples</usage> - <usage>If pname:usage includes ename:VK_IMAGE_USAGE_STORAGE_BIT, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:maxStorageImageSamples</usage> + <usage>If pname:usage includes ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:framebufferColorSampleCounts</usage> + <usage>If pname:usage includes ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, and pname:format includes a depth aspect, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:framebufferDepthSampleCounts</usage> + <usage>If pname:usage includes ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, and pname:format includes a stencil aspect, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:framebufferStencilSampleCounts</usage> + <usage>If pname:usage includes ename:VK_IMAGE_USAGE_SAMPLED_BIT, and pname:format includes a color aspect, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:sampledImageColorSampleCounts</usage> + <usage>If pname:usage includes ename:VK_IMAGE_USAGE_SAMPLED_BIT, and pname:format includes a depth aspect, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:sampledImageDepthSampleCounts</usage> + <usage>If pname:usage includes ename:VK_IMAGE_USAGE_SAMPLED_BIT, and pname:format is an integer format, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:sampledImageIntegerSampleCounts</usage> + <usage>If pname:usage includes ename:VK_IMAGE_USAGE_STORAGE_BIT, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:storageImageSampleCounts</usage> <usage>If the <<features-features-textureCompressionETC2,ETC2 texture compression>> feature is not enabled, pname:format mustnot: be ename:VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK, ename:VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK, ename:VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK, ename:VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK, ename:VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK, ename:VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK, ename:VK_FORMAT_EAC_R11_UNORM_BLOCK, ename:VK_FORMAT_EAC_R11_SNORM_BLOCK, ename:VK_FORMAT_EAC_R11G11_UNORM_BLOCK, or ename:VK_FORMAT_EAC_R11G11_SNORM_BLOCK</usage> <usage>If the <<features-features-textureCompressionASTC_LDR,ASTC LDR texture compression>> feature is not enabled, pname:format mustnot: be ename:VK_FORMAT_ASTC_4x4_UNORM_BLOCK, ename:VK_FORMAT_ASTC_4x4_SRGB_BLOCK, ename:VK_FORMAT_ASTC_5x4_UNORM_BLOCK, ename:VK_FORMAT_ASTC_5x4_SRGB_BLOCK, ename:VK_FORMAT_ASTC_5x5_UNORM_BLOCK, ename:VK_FORMAT_ASTC_5x5_SRGB_BLOCK, ename:VK_FORMAT_ASTC_6x5_UNORM_BLOCK, ename:VK_FORMAT_ASTC_6x5_SRGB_BLOCK, ename:VK_FORMAT_ASTC_6x6_UNORM_BLOCK, ename:VK_FORMAT_ASTC_6x6_SRGB_BLOCK, ename:VK_FORMAT_ASTC_8x5_UNORM_BLOCK, ename:VK_FORMAT_ASTC_8x5_SRGB_BLOCK, ename:VK_FORMAT_ASTC_8x6_UNORM_BLOCK, ename:VK_FORMAT_ASTC_8x6_SRGB_BLOCK, ename:VK_FORMAT_ASTC_8x8_UNORM_BLOCK, ename:VK_FORMAT_ASTC_8x8_SRGB_BLOCK, ename:VK_FORMAT_ASTC_10x5_UNORM_BLOCK, ename:VK_FORMAT_ASTC_10x5_SRGB_BLOCK, ename:VK_FORMAT_ASTC_10x6_UNORM_BLOCK, ename:VK_FORMAT_ASTC_10x6_SRGB_BLOCK, ename:VK_FORMAT_ASTC_10x8_UNORM_BLOCK, ename:VK_FORMAT_ASTC_10x8_SRGB_BLOCK, ename:VK_FORMAT_ASTC_10x10_UNORM_BLOCK, ename:VK_FORMAT_ASTC_10x10_SRGB_BLOCK, ename:VK_FORMAT_ASTC_12x10_UNORM_BLOCK, ename:VK_FORMAT_ASTC_12x10_SRGB_BLOCK, ename:VK_FORMAT_ASTC_12x12_UNORM_BLOCK, or ename:VK_FORMAT_ASTC_12x12_SRGB_BLOCK</usage> <usage>If the <<features-features-textureCompressionBC,BC texture compression>> feature is not enabled, pname:format mustnot: be ename:VK_FORMAT_BC1_RGB_UNORM_BLOCK, ename:VK_FORMAT_BC1_RGB_SRGB_BLOCK, ename:VK_FORMAT_BC1_RGBA_UNORM_BLOCK, ename:VK_FORMAT_BC1_RGBA_SRGB_BLOCK, ename:VK_FORMAT_BC2_UNORM_BLOCK, ename:VK_FORMAT_BC2_SRGB_BLOCK, ename:VK_FORMAT_BC3_UNORM_BLOCK, ename:VK_FORMAT_BC3_SRGB_BLOCK, ename:VK_FORMAT_BC4_UNORM_BLOCK, ename:VK_FORMAT_BC4_SNORM_BLOCK, ename:VK_FORMAT_BC5_UNORM_BLOCK, ename:VK_FORMAT_BC5_SNORM_BLOCK, ename:VK_FORMAT_BC6H_UFLOAT_BLOCK, ename:VK_FORMAT_BC6H_SFLOAT_BLOCK, ename:VK_FORMAT_BC7_UNORM_BLOCK, or ename:VK_FORMAT_BC7_SRGB_BLOCK</usage> @@ -839,7 +842,7 @@ maintained in the master branch of the Khronos Vulkan Github project. <usage>If pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_STORAGE_BIT</usage> <usage>If pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</usage> <usage>If pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</usage> - <usage>If pname:flags contains ename:VK_IMAGE_CREATE_SPARSE_ALIASED_BIT, it must: also contain at least one of ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT or ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</usage> + <usage>If pname:flags contains ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT or ename:VK_IMAGE_CREATE_SPARSE_ALIASED_BIT, it must: also contain ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT</usage> </validity> </type> <type category="struct" name="VkSubresourceLayout" returnedonly="true"> @@ -872,7 +875,7 @@ maintained in the master branch of the Khronos Vulkan Github project. <usage>If pname:image was created with ename:VK_IMAGE_TILING_OPTIMAL and pname:usage containing ename:VK_IMAGE_USAGE_STORAGE_BIT, pname:format must: be supported for storage images, as specified by the ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT flag in sname:VkFormatProperties::pname:optimalTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage> <usage>If pname:image was created with ename:VK_IMAGE_TILING_OPTIMAL and pname:usage containing ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, pname:format must: be supported for color attachments, as specified by the ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT flag in sname:VkFormatProperties::pname:optimalTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage> <usage>If pname:image was created with ename:VK_IMAGE_TILING_OPTIMAL and pname:usage containing ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, pname:format must: be supported for depth/stencil attachments, as specified by the ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT flag in sname:VkFormatProperties::pname:optimalTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage> - <usage>pname:subresourceRange must: be a valid subresource range for pname:image (see <<resources-image-views>>)</usage> + <usage>pname:subresourceRange must: be a valid image subresource range for pname:image (see <<resources-image-views>>)</usage> <usage>If pname:image was created with the ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT flag, pname:format must: be compatible with the pname:format used to create pname:image, as defined in <<features-formats-compatibility-classes,Format Compatibility Classes>></usage> <usage>If pname:image was not created with the ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT flag, pname:format must: be identical to the pname:format used to create pname:image</usage> <usage>pname:subResourceRange and pname:viewType must: be compatible with the image, as described in the <<resources-image-views-compatibility,table below>></usage> @@ -909,7 +912,7 @@ maintained in the master branch of the Khronos Vulkan Github project. <validity> <usage>If the <<features-features-sparseResidencyAliased,sparse aliased residency>> feature is not enabled, and if any other resources are bound to ranges of pname:memory, the range of pname:memory being bound mustnot: overlap with those bound ranges</usage> <usage>pname:memory and pname:memoryOffset must: match the memory requirements of the calling command's pname:image, as described in section <<resources-association>></usage> - <usage>pname:subresource must: be a valid subresource for pname:image (see <<resources-image-views>>)</usage> + <usage>pname:subresource must: be a valid image subresource for pname:image (see <<resources-image-views>>)</usage> <usage>pname:offset.x must: be a multiple of the sparse image block width (sname:VkSparseImageFormatProperties::pname:imageGranularity.width) of the image</usage> <usage>pname:extent.width must: either be a multiple of the sparse image block width of the image, or else pname:extent.width + pname:offset.x must: equal the width of the image subresource</usage> <usage>pname:offset.y must: be a multiple of the sparse image block height (sname:VkSparseImageFormatProperties::pname:imageGranularity.height) of the image</usage> @@ -968,24 +971,24 @@ maintained in the master branch of the Khronos Vulkan Github project. <usage>pname:dstOffset.x and (pname:extent.width + pname:dstOffset.x) must: both be greater than or equal to `0` and less than or equal to the destination image subresource width</usage> <usage>pname:dstOffset.y and (pname:extent.height + pname:dstOffset.y) must: both be greater than or equal to `0` and less than or equal to the destination image subresource height</usage> <usage>pname:dstOffset.z and (pname:extent.depth + pname:dstOffset.z) must: both be greater than or equal to `0` and less than or equal to the destination image subresource depth</usage> - <usage>If the calling command's pname:srcImage is a compressed format image:</usage> - <usage> all members of pname:srcOffset must: be a multiple of the corresponding dimensions of the compressed texel block</usage> - <usage> pname:extent.width must: be a multiple of the compressed texel block width or (pname:extent.width + pname:srcOffset.x) must: equal the source image subresource width</usage> - <usage> pname:extent.height must: be a multiple of the compressed texel block height or (pname:extent.height + pname:srcOffset.y) must: equal the source image subresource height</usage> - <usage> pname:extent.depth must: be a multiple of the compressed texel block depth or (pname:extent.depth + pname:srcOffset.z) must: equal the source image subresource depth</usage> - <usage>If the calling command's pname:dstImage is a compressed format image:</usage> - <usage> all members of pname:dstOffset must: be a multiple of the corresponding dimensions of the compressed texel block</usage> - <usage> pname:extent.width must: be a multiple of the compressed texel block width or (pname:extent.width + pname:dstOffset.x) must: equal the destination image subresource width</usage> - <usage> pname:extent.height must: be a multiple of the compressed texel block height or (pname:extent.height + pname:dstOffset.y) must: equal the destination image subresource height</usage> - <usage> pname:extent.depth must: be a multiple of the compressed texel block depth or (pname:extent.depth + pname:dstOffset.z) must: equal the destination image subresource depth</usage> - <usage>pname:srcOffset, pname:dstOffset, and pname:extent must: respect the image transfer granularity requirements of the queue family that it will be submitted against, as described in <<execution-physical-device-enumeration,Physical Device Enumeration>></usage> + <usage>If the calling command's pname:srcImage is a compressed format image: + ** all members of pname:srcOffset must: be a multiple of the corresponding dimensions of the compressed texel block + ** pname:extent.width must: be a multiple of the compressed texel block width or (pname:extent.width + pname:srcOffset.x) must: equal the source image subresource width + ** pname:extent.height must: be a multiple of the compressed texel block height or (pname:extent.height + pname:srcOffset.y) must: equal the source image subresource height + ** pname:extent.depth must: be a multiple of the compressed texel block depth or (pname:extent.depth + pname:srcOffset.z) must: equal the source image subresource depth</usage> + <usage>If the calling command's pname:dstImage is a compressed format image: + ** all members of pname:dstOffset must: be a multiple of the corresponding dimensions of the compressed texel block + ** pname:extent.width must: be a multiple of the compressed texel block width or (pname:extent.width + pname:dstOffset.x) must: equal the destination image subresource width + ** pname:extent.height must: be a multiple of the compressed texel block height or (pname:extent.height + pname:dstOffset.y) must: equal the destination image subresource height + ** pname:extent.depth must: be a multiple of the compressed texel block depth or (pname:extent.depth + pname:dstOffset.z) must: equal the destination image subresource depth</usage> + <usage>pname:srcOffset, pname:dstOffset, and pname:extent must: respect the image transfer granularity requirements of the queue family that it will be submitted against, as described in <<devsandqueues-physical-device-enumeration,Physical Device Enumeration>></usage> </validity> </type> <type category="struct" name="VkImageBlit"> <member><type>VkImageSubresourceLayers</type> <name>srcSubresource</name></member> - <member><type>VkOffset3D</type> <name>srcOffsets[2]</name></member> <!-- Specified in pixels for both compressed and uncompressed images --> + <member><type>VkOffset3D</type> <name>srcOffsets</name>[2]</member> <!-- Specified in pixels for both compressed and uncompressed images --> <member><type>VkImageSubresourceLayers</type> <name>dstSubresource</name></member> - <member><type>VkOffset3D</type> <name>dstOffsets[2]</name></member> <!-- Specified in pixels for both compressed and uncompressed images --> + <member><type>VkOffset3D</type> <name>dstOffsets</name>[2]</member> <!-- Specified in pixels for both compressed and uncompressed images --> <validity> <usage>The pname:aspectMask member of pname:srcSubresource and pname:dstSubresource must: match</usage> <usage>The pname:layerCount member of pname:srcSubresource and pname:dstSubresource must: match</usage> @@ -1015,15 +1018,15 @@ maintained in the master branch of the Khronos Vulkan Github project. <usage>pname:imageOffset.x and (pname:imageExtent.width + pname:imageOffset.x) must: both be greater than or equal to `0` and less than or equal to the image subresource width</usage> <usage>pname:imageOffset.y and (imageExtent.height + pname:imageOffset.y) must: both be greater than or equal to `0` and less than or equal to the image subresource height</usage> <usage>pname:imageOffset.z and (imageExtent.depth + pname:imageOffset.z) must: both be greater than or equal to `0` and less than or equal to the image subresource depth</usage> - <usage>If the calling command's sname:VkImage parameter is a compressed format image:</usage> - <usage> pname:bufferRowLength must: be a multiple of the compressed texel block width</usage> - <usage> pname:bufferImageHeight must: be a multiple of the compressed texel block height</usage> - <usage> all members of pname:imageOffset must: be a multiple of the corresponding dimensions of the compressed texel block</usage> - <usage> pname:bufferOffset must: be a multiple of the compressed texel block size in bytes</usage> - <usage> pname:imageExtent.width must: be a multiple of the compressed texel block width or (pname:imageExtent.width + pname:imageOffset.x) must: equal the image subresource width</usage> - <usage> pname:imageExtent.height must: be a multiple of the compressed texel block height or (pname:imageExtent.height + pname:imageOffset.y) must: equal the image subresource height</usage> - <usage> pname:imageExtent.depth must: be a multiple of the compressed texel block depth or (pname:imageExtent.depth + pname:imageOffset.z) must: equal the image subresource depth</usage> - <usage>pname:bufferOffset, pname:bufferRowLength, pname:bufferImageHeight and all members of pname:imageOffset and pname:imageExtent must: respect the image transfer granularity requirements of the queue family that it will be submitted against, as described in <<execution-physical-device-enumeration,Physical Device Enumeration>></usage> + <usage>If the calling command's sname:VkImage parameter is a compressed format image: + ** pname:bufferRowLength must: be a multiple of the compressed texel block width + ** pname:bufferImageHeight must: be a multiple of the compressed texel block height + ** all members of pname:imageOffset must: be a multiple of the corresponding dimensions of the compressed texel block + ** pname:bufferOffset must: be a multiple of the compressed texel block size in bytes + ** pname:imageExtent.width must: be a multiple of the compressed texel block width or (pname:imageExtent.width + pname:imageOffset.x) must: equal the image subresource width + ** pname:imageExtent.height must: be a multiple of the compressed texel block height or (pname:imageExtent.height + pname:imageOffset.y) must: equal the image subresource height + ** pname:imageExtent.depth must: be a multiple of the compressed texel block depth or (pname:imageExtent.depth + pname:imageOffset.z) must: equal the image subresource depth</usage> + <usage>pname:bufferOffset, pname:bufferRowLength, pname:bufferImageHeight and all members of pname:imageOffset and pname:imageExtent must: respect the image transfer granularity requirements of the queue family that it will be submitted against, as described in <<devsandqueues-physical-device-enumeration,Physical Device Enumeration>></usage> <usage>The pname:aspectMask member of pname:imageSubresource must: specify aspects present in the calling command's sname:VkImage parameter</usage> <usage>The pname:aspectMask member of pname:imageSubresource must: only have a single bit set</usage> <usage>If the calling command's sname:VkImage parameter is of elink:VkImageType ename:VK_IMAGE_TYPE_3D, the pname:baseArrayLayer and pname:layerCount members of pname:imageSubresource must: be `0` and `1`, respectively</usage> @@ -1116,7 +1119,7 @@ maintained in the master branch of the Khronos Vulkan Github project. <member len="dataSize">const <type>void</type>* <name>pData</name></member> <!-- Pointer to SpecConstant data --> <validity> <usage>The pname:offset member of any given element of pname:pMapEntries must: be less than pname:dataSize</usage> - <usage>For any given element of pname:pMapEntries, pname:size must be less than or equal to pname:dataSize minus pname:offset</usage> + <usage>For any given element of pname:pMapEntries, pname:size must: be less than or equal to pname:dataSize minus pname:offset</usage> </validity> </type> <type category="struct" name="VkPipelineShaderStageCreateInfo"> @@ -1204,7 +1207,7 @@ maintained in the master branch of the Khronos Vulkan Github project. </validity> </type> <type category="struct" name="VkPipelineInputAssemblyStateCreateInfo"> - <member><type>VkStructureType</type> <name>sType</name></member> <!-- Must be VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO --> + <member><type>VkStructureType</type> <name>sType</name></member> <!-- Must be VK_STRUCTURE_TYPE_PIPELINE_IINPUT_ASSEMBLY_STATE_CREATE_INFO --> <member>const <type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure --> <member optional="true"><type>VkPipelineInputAssemblyStateCreateFlags</type> <name>flags</name></member> <!-- Reserved --> <member><type>VkPrimitiveTopology</type> <name>topology</name></member> @@ -1242,7 +1245,7 @@ maintained in the master branch of the Khronos Vulkan Github project. </type> <type category="struct" name="VkPipelineRasterizationStateCreateInfo"> <member><type>VkStructureType</type> <name>sType</name></member> <!-- Must be VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO --> - <member>const <type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure --> + <member validextensionstructs="VkPipelineRasterizationStateRasterizationOrderAMD">const <type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure --> <member optional="true"><type>VkPipelineRasterizationStateCreateFlags</type> <name>flags</name></member> <!-- Reserved --> <member><type>VkBool32</type> <name>depthClampEnable</name></member> <member><type>VkBool32</type> <name>rasterizerDiscardEnable</name></member> @@ -1285,10 +1288,10 @@ maintained in the master branch of the Khronos Vulkan Github project. <member><type>VkBlendOp</type> <name>alphaBlendOp</name></member> <member optional="true"><type>VkColorComponentFlags</type> <name>colorWriteMask</name></member> <validity> - <usage>If the <<features-features-dualSrcBlend,dual source blending>> feature is not enabled, pname:srcColorBlendFactor mustnot: be ename:VK_BLEND_SRC1_COLOR, ename:VK_BLEND_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_SRC1_ALPHA, or ename:VK_BLEND_ONE_MINUS_SRC1_ALPHA</usage> - <usage>If the <<features-features-dualSrcBlend,dual source blending>> feature is not enabled, pname:dstColorBlendFactor mustnot: be ename:VK_BLEND_SRC1_COLOR, ename:VK_BLEND_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_SRC1_ALPHA, or ename:VK_BLEND_ONE_MINUS_SRC1_ALPHA</usage> - <usage>If the <<features-features-dualSrcBlend,dual source blending>> feature is not enabled, pname:srcAlphaBlendFactor mustnot: be ename:VK_BLEND_SRC1_COLOR, ename:VK_BLEND_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_SRC1_ALPHA, or ename:VK_BLEND_ONE_MINUS_SRC1_ALPHA</usage> - <usage>If the <<features-features-dualSrcBlend,dual source blending>> feature is not enabled, pname:dstAlphaBlendFactor mustnot: be ename:VK_BLEND_SRC1_COLOR, ename:VK_BLEND_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_SRC1_ALPHA, or ename:VK_BLEND_ONE_MINUS_SRC1_ALPHA</usage> + <usage>If the <<features-features-dualSrcBlend,dual source blending>> feature is not enabled, pname:srcColorBlendFactor mustnot: be ename:VK_BLEND_FACTOR_SRC1_COLOR, ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_FACTOR_SRC1_ALPHA, or ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA</usage> + <usage>If the <<features-features-dualSrcBlend,dual source blending>> feature is not enabled, pname:dstColorBlendFactor mustnot: be ename:VK_BLEND_FACTOR_SRC1_COLOR, ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_FACTOR_SRC1_ALPHA, or ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA</usage> + <usage>If the <<features-features-dualSrcBlend,dual source blending>> feature is not enabled, pname:srcAlphaBlendFactor mustnot: be ename:VK_BLEND_FACTOR_SRC1_COLOR, ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_FACTOR_SRC1_ALPHA, or ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA</usage> + <usage>If the <<features-features-dualSrcBlend,dual source blending>> feature is not enabled, pname:dstAlphaBlendFactor mustnot: be ename:VK_BLEND_FACTOR_SRC1_COLOR, ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_FACTOR_SRC1_ALPHA, or ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA</usage> </validity> </type> <type category="struct" name="VkPipelineColorBlendStateCreateInfo"> @@ -1587,7 +1590,7 @@ maintained in the master branch of the Khronos Vulkan Github project. <usage>If any input attachments are ename:VK_ATTACHMENT_UNUSED, then any pipelines bound during the subpass mustnot: accesss those input attachments from the fragment shader</usage> <usage>The pname:attachment member of any element of pname:pPreserveAttachments mustnot: be ename:VK_ATTACHMENT_UNUSED</usage> <usage>Any given element of pname:pPreserveAttachments mustnot: also be an element of any other member of the subpass description</usage> - <usage>If any attachment is used as both an input attachment and a color or depth/stencil attachment, then each use must use the same pname:layout</usage> + <usage>If any attachment is used as both an input attachment and a color or depth/stencil attachment, then each use must: use the same pname:layout</usage> </validity> </type> <type category="struct" name="VkSubpassDependency"> @@ -1958,8 +1961,8 @@ maintained in the master branch of the Khronos Vulkan Github project. <member optional="true"><type>VkDisplayModeCreateFlagsKHR</type> <name>flags</name></member> <!-- Reserved --> <member><type>VkDisplayModeParametersKHR</type> <name>parameters</name></member> <!-- The parameters this mode uses. --> <validity> - <usage>The pname:width and pname:height members of the pname:visibleRegion member of pname:parameters must be greater than `0`</usage> - <usage>The pname:refreshRate member of pname:parameters must be greater than `0`</usage> + <usage>The pname:width and pname:height members of the pname:visibleRegion member of pname:parameters must: be greater than `0`</usage> + <usage>The pname:refreshRate member of pname:parameters must: be greater than `0`</usage> </validity> </type> <type category="struct" name="VkDisplayPlaneCapabilitiesKHR"> @@ -1989,7 +1992,7 @@ maintained in the master branch of the Khronos Vulkan Github project. <usage>If the pname:planeReorderPossible member of the sname:VkDisplayPropertiesKHR structure returned by fname:vkGetPhysicalDeviceDisplayPropertiesKHR for the display corresponding to pname:displayMode is ename:VK_TRUE then pname:planeStackIndex must: be less than the number of display planes supported by the device as determined by calling fname:vkGetPhysicalDeviceDisplayPlanePropertiesKHR; otherwise pname:planeStackIndex must: equal the pname:currentStackIndex member of sname:VkDisplayPlanePropertiesKHR returned by fname:vkGetPhysicalDeviceDisplayPlanePropertiesKHR for the display plane corresponding to pname:displayMode</usage> <usage>If pname:alphaMode is ename:VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR then pname:globalAlpha must: be between `0` and `1`, inclusive</usage> <usage>pname:alphaMode must: be `0` or one of the bits present in the pname:supportedAlpha member of sname:VkDisplayPlaneCapabilitiesKHR returned by fname:vkGetDisplayPlaneCapabilitiesKHR for the display plane corresponding to pname:displayMode</usage> - <usage>The pname:width and pname:height members of pname:imageExtent must be less than the pname:maxImageDimensions2D member of sname:VkPhysicalDeviceLimits</usage> + <usage>The pname:width and pname:height members of pname:imageExtent must: be less than the pname:maxImageDimensions2D member of sname:VkPhysicalDeviceLimits</usage> </validity> </type> <type category="struct" name="VkDisplayPresentInfoKHR"> @@ -2102,14 +2105,14 @@ maintained in the master branch of the Khronos Vulkan Github project. <type category="struct" name="VkPresentInfoKHR"> <member><type>VkStructureType</type> <name>sType</name></member> <!-- Must be VK_STRUCTURE_TYPE_PRESENT_INFO_KHR --> <member>const <type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure --> - <member><type>uint32_t</type> <name>waitSemaphoreCount</name></member> <!-- Number of semaphores to wait for before presenting --> + <member optional="true"><type>uint32_t</type> <name>waitSemaphoreCount</name></member> <!-- Number of semaphores to wait for before presenting --> <member optional="true" len="waitSemaphoreCount">const <type>VkSemaphore</type>* <name>pWaitSemaphores</name></member> <!-- Semaphores to wait for before presenting --> <member><type>uint32_t</type> <name>swapchainCount</name></member> <!-- Number of swap chains to present in this call --> <member len="swapchainCount">const <type>VkSwapchainKHR</type>* <name>pSwapchains</name></member> <!-- Swapchains to present an image from --> <member len="swapchainCount">const <type>uint32_t</type>* <name>pImageIndices</name></member> <!-- Indices of which swapchain images to present --> <member optional="true" len="swapchainCount"><type>VkResult</type>* <name>pResults</name></member> <!-- Optional (i.e. if non-NULL) VkResult for each swapchain --> <validity> - <usage>Any given element of pname:pImageIndices must: be the index of a presentable image acquired from the swapchain specified by the corresponding element of the pname:pSwapchains array that is owned by the application</usage> + <usage>Any given element of pname:pImageIndices must: be the index of a presentable image acquired from the swapchain specified by the corresponding element of the pname:pSwapchains array</usage> <usage>Any given element of sname:VkSemaphore in pname:pWaitSemaphores must: refer to a prior signal of that sname:VkSemaphore that won't be consumed by any other wait on that semaphore</usage> </validity> </type> @@ -2120,6 +2123,33 @@ maintained in the master branch of the Khronos Vulkan Github project. <member><type>PFN_vkDebugReportCallbackEXT</type> <name>pfnCallback</name></member> <!-- Function pointer of a callback function--> <member optional="true"><type>void</type>* <name>pUserData</name></member> <!-- User data provided to callback function --> </type> + <type category="struct" name="VkPipelineRasterizationStateRasterizationOrderAMD"> + <member><type>VkStructureType</type> <name>sType</name></member> <!-- Must be VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD --> + <member>const <type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure --> + <member><type>VkRasterizationOrderAMD</type> <name>rasterizationOrder</name></member> <!-- Rasterization order to use for the pipeline --> + </type> + <type category="struct" name="VkDebugMarkerObjectNameInfoEXT"> + <member><type>VkStructureType</type> <name>sType</name></member> <!-- Must be VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT --> + <member>const <type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure --> + <member><type>VkDebugReportObjectTypeEXT</type> <name>objectType</name></member> <!-- The type of the object --> + <member><type>uint64_t</type> <name>object</name></member> <!-- The handle of the object, cast to uint64_t --> + <member len="null-terminated">const <type>char</type>* <name>pObjectName</name></member> <!-- Name to apply to the object --> + </type> + <type category="struct" name="VkDebugMarkerObjectTagInfoEXT"> + <member><type>VkStructureType</type> <name>sType</name></member> <!-- Must be VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT --> + <member>const <type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure --> + <member><type>VkDebugReportObjectTypeEXT</type> <name>objectType</name></member> <!-- The type of the object --> + <member><type>uint64_t</type> <name>object</name></member> <!-- The handle of the object, cast to uint64_t --> + <member><type>uint64_t</type> <name>tagName</name></member> <!-- The name of the tag to set on the object --> + <member><type>size_t</type> <name>tagSize</name></member> <!-- The length in bytes of the tag data --> + <member len="tagSize">const <type>void</type>* <name>pTag</name></member> <!-- Tag data to attach to the object --> + </type> + <type category="struct" name="VkDebugMarkerMarkerInfoEXT"> + <member><type>VkStructureType</type> <name>sType</name></member> <!-- Must be VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT --> + <member>const <type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure --> + <member len="null-terminated">const <type>char</type>* <name>pMarkerName</name></member> <!-- Name of the debug marker --> + <member optional="true"><type>float</type> <name>color</name>[4]</member> <!-- Optional color for debug marker --> + </type> </types> <!-- SECTION: Vulkan enumerant (token) definitions. --> @@ -2621,12 +2651,12 @@ maintained in the master branch of the Khronos Vulkan Github project. <enum value="2" name="VK_TIMEOUT" comment="A wait operation has not completed in the specified time"/> <enum value="3" name="VK_EVENT_SET" comment="An event is signaled"/> <enum value="4" name="VK_EVENT_RESET" comment="An event is unsignalled"/> - <enum value="5" name="VK_INCOMPLETE" comment="A return array was too small for the resul"/> + <enum value="5" name="VK_INCOMPLETE" comment="A return array was too small for the result"/> <!-- Error codes (negative values) --> <enum value="-1" name="VK_ERROR_OUT_OF_HOST_MEMORY" comment="A host memory allocation has failed"/> <enum value="-2" name="VK_ERROR_OUT_OF_DEVICE_MEMORY" comment="A device memory allocation has failed"/> - <enum value="-3" name="VK_ERROR_INITIALIZATION_FAILED" comment="The logical device has been lost. See <<devsandqueues-lost-device>>"/> - <enum value="-4" name="VK_ERROR_DEVICE_LOST" comment="Initialization of a object has failed"/> + <enum value="-3" name="VK_ERROR_INITIALIZATION_FAILED" comment="Initialization of a object has failed"/> + <enum value="-4" name="VK_ERROR_DEVICE_LOST" comment="The logical device has been lost. See <<devsandqueues-lost-device>>"/> <enum value="-5" name="VK_ERROR_MEMORY_MAP_FAILED" comment="Mapping of a memory object has failed"/> <enum value="-6" name="VK_ERROR_LAYER_NOT_PRESENT" comment="Layer specified does not exist"/> <enum value="-7" name="VK_ERROR_EXTENSION_NOT_PRESENT" comment="Extension specified does not exist"/> @@ -2656,7 +2686,7 @@ maintained in the master branch of the Khronos Vulkan Github project. <enum bitpos="3" name="VK_QUEUE_SPARSE_BINDING_BIT" comment="Queue supports sparse resource memory management operations"/> </enums> <enums name="VkMemoryPropertyFlagBits" type="bitmask"> - <enum bitpos="0" name="VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT" comment="If otherwise stated, then allocate memory on device"/> + <enum bitpos="0" name="VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT" comment="If otherwise stated, then allocate memory on device"/> <enum bitpos="1" name="VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT" comment="Memory is mappable by host"/> <enum bitpos="2" name="VK_MEMORY_PROPERTY_HOST_COHERENT_BIT" comment="Memory will have i/o coherency. If not set, application may need to use vkFlushMappedMemoryRanges and vkInvalidateMappedMemoryRanges to flush/invalidate host cache"/> <enum bitpos="3" name="VK_MEMORY_PROPERTY_HOST_CACHED_BIT" comment="Memory will be cached by the host"/> @@ -2685,8 +2715,8 @@ maintained in the master branch of the Khronos Vulkan Github project. <enum bitpos="16" name="VK_ACCESS_MEMORY_WRITE_BIT" comment="Controls coherency of memory writes"/> </enums> <enums name="VkBufferUsageFlagBits" type="bitmask"> - <enum bitpos="0" name="VK_BUFFER_USAGE_TRANSFER_SRC_BIT" comment="Can be used as a source of transfer operations"/> - <enum bitpos="1" name="VK_BUFFER_USAGE_TRANSFER_DST_BIT" comment="Can be used as a destination of transfer operations"/> + <enum bitpos="0" name="VK_BUFFER_USAGE_TRANSFER_SRC_BIT" comment="Can be used as a source of transfer operations"/> + <enum bitpos="1" name="VK_BUFFER_USAGE_TRANSFER_DST_BIT" comment="Can be used as a destination of transfer operations"/> <enum bitpos="2" name="VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT" comment="Can be used as TBO"/> <enum bitpos="3" name="VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT" comment="Can be used as IBO"/> <enum bitpos="4" name="VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT" comment="Can be used as UBO"/> @@ -2711,8 +2741,8 @@ maintained in the master branch of the Khronos Vulkan Github project. <enum value="0x7FFFFFFF" name="VK_SHADER_STAGE_ALL"/> </enums> <enums name="VkImageUsageFlagBits" type="bitmask"> - <enum bitpos="0" name="VK_IMAGE_USAGE_TRANSFER_SRC_BIT" comment="Can be used as a source of transfer operations"/> - <enum bitpos="1" name="VK_IMAGE_USAGE_TRANSFER_DST_BIT" comment="Can be used as a destination of transfer operations"/> + <enum bitpos="0" name="VK_IMAGE_USAGE_TRANSFER_SRC_BIT" comment="Can be used as a source of transfer operations"/> + <enum bitpos="1" name="VK_IMAGE_USAGE_TRANSFER_DST_BIT" comment="Can be used as a destination of transfer operations"/> <enum bitpos="2" name="VK_IMAGE_USAGE_SAMPLED_BIT" comment="Can be sampled from (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types)"/> <enum bitpos="3" name="VK_IMAGE_USAGE_STORAGE_BIT" comment="Can be used as storage image (STORAGE_IMAGE descriptor type)"/> <enum bitpos="4" name="VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT" comment="Can be used as framebuffer color attachment"/> @@ -2768,7 +2798,7 @@ maintained in the master branch of the Khronos Vulkan Github project. <enums name="VkCommandBufferUsageFlagBits" type="bitmask"> <enum bitpos="0" name="VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT"/> <enum bitpos="1" name="VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT"/> - <enum bitpos="2" name="VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT" comment="Command buffer may be submitted/executed more than once simultaneously"/> + <enum bitpos="2" name="VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT" comment="Command buffer may be submitted/executed more than once simultaneously"/> </enums> <enums name="VkQueryPipelineStatisticFlagBits" type="bitmask"> <enum bitpos="0" name="VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT" comment="Optional"/> @@ -2792,7 +2822,7 @@ maintained in the master branch of the Khronos Vulkan Github project. <enums name="VkSparseImageFormatFlagBits" type="bitmask"> <enum bitpos="0" name="VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT" comment="Image uses a single miptail region for all array layers"/> <enum bitpos="1" name="VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT" comment="Image requires mip level dimensions to be an integer multiple of the sparse image block dimensions for non-miptail levels."/> - <enum bitpos="2" name="VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT" comment="Image uses a non-standard sparse image block dimensions"/> + <enum bitpos="2" name="VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT" comment="Image uses a non-standard sparse image block dimensions"/> </enums> <enums name="VkSparseMemoryBindFlagBits" type="bitmask"> <enum bitpos="0" name="VK_SPARSE_MEMORY_BIND_METADATA_BIT" comment="Operation binds resource metadata to memory"/> @@ -2817,14 +2847,14 @@ maintained in the master branch of the Khronos Vulkan Github project. <enum bitpos="16" name="VK_PIPELINE_STAGE_ALL_COMMANDS_BIT" comment="All stages supported on the queue"/> </enums> <enums name="VkCommandPoolCreateFlagBits" type="bitmask"> - <enum bitpos="0" name="VK_COMMAND_POOL_CREATE_TRANSIENT_BIT" comment="Command buffers have a short lifetime"/> - <enum bitpos="1" name="VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT" comment="Command buffers may release their memory individually"/> + <enum bitpos="0" name="VK_COMMAND_POOL_CREATE_TRANSIENT_BIT" comment="Command buffers have a short lifetime"/> + <enum bitpos="1" name="VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT" comment="Command buffers may release their memory individually"/> </enums> <enums name="VkCommandPoolResetFlagBits" type="bitmask"> - <enum bitpos="0" name="VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT" comment="Release resources owned by the pool"/> + <enum bitpos="0" name="VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT" comment="Release resources owned by the pool"/> </enums> <enums name="VkCommandBufferResetFlagBits" type="bitmask"> - <enum bitpos="0" name="VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT" comment="Release resources owned by the buffer"/> + <enum bitpos="0" name="VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT" comment="Release resources owned by the buffer"/> </enums> <enums name="VkSampleCountFlagBits" type="bitmask"> <enum bitpos="0" name="VK_SAMPLE_COUNT_1_BIT" comment="Sample count 1 supported"/> @@ -2841,7 +2871,7 @@ maintained in the master branch of the Khronos Vulkan Github project. <enums name="VkStencilFaceFlagBits" type="bitmask"> <enum bitpos="0" name="VK_STENCIL_FACE_FRONT_BIT" comment="Front face"/> <enum bitpos="1" name="VK_STENCIL_FACE_BACK_BIT" comment="Back face"/> - <enum value="0x00000003" name="VK_STENCIL_FRONT_AND_BACK" comment="Front and back faces"/> + <enum value="0x00000003" name="VK_STENCIL_FRONT_AND_BACK" comment="Front and back faces"/> </enums> <enums name="VkDescriptorPoolCreateFlagBits" type="bitmask"> <enum bitpos="0" name="VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT" comment="Descriptor sets may be freed individually"/> @@ -2924,6 +2954,10 @@ maintained in the master branch of the Khronos Vulkan Github project. <enum value="0" name="VK_DEBUG_REPORT_ERROR_NONE_EXT"/> <!-- Used for INFO & other non-error messages --> <enum value="1" name="VK_DEBUG_REPORT_ERROR_CALLBACK_REF_EXT"/> <!-- Callbacks were not destroyed prior to calling DestroyInstance --> </enums> + <enums name="VkRasterizationOrderAMD" type="enum"> + <enum value="0" name="VK_RASTERIZATION_ORDER_STRICT_AMD"/> <!-- Rasterization order strictly follows API order --> + <enum value="1" name="VK_RASTERIZATION_ORDER_RELAXED_AMD"/> <!-- Rasterization order may not follow API order --> + </enums> <!-- SECTION: Vulkan command definitions --> <commands> @@ -3068,8 +3102,8 @@ maintained in the master branch of the Khronos Vulkan Github project. <param len="submitCount" externsync="pSubmits[].pWaitSemaphores[],pSubmits[].pSignalSemaphores[]">const <type>VkSubmitInfo</type>* <name>pSubmits</name></param> <param optional="true" externsync="true"><type>VkFence</type> <name>fence</name></param> <validity> - <usage>pname:fence must: be unsignalled</usage> - <usage>pname:fence mustnot: be associated with any other queue command that has not yet completed execution on that queue</usage> + <usage>If pname:fence is not sname:VK_NULL_HANDLE, pname:fence must: be unsignalled</usage> + <usage>If pname:fence is not sname:VK_NULL_HANDLE, pname:fence mustnot: be associated with any other queue command that has not yet completed execution on that queue</usage> </validity> </command> <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST"> @@ -3318,6 +3352,9 @@ maintained in the master branch of the Khronos Vulkan Github project. <proto><type>VkResult</type> <name>vkResetEvent</name></proto> <param><type>VkDevice</type> <name>device</name></param> <param externsync="true"><type>VkEvent</type> <name>event</name></param> + <validity> + <usage>pname:event mustnot: be waited on by a fname:vkCmdWaitEvents command that is currently executing</usage> + </validity> </command> <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> <proto><type>VkResult</type> <name>vkCreateQueryPool</name></proto> @@ -3349,8 +3386,8 @@ maintained in the master branch of the Khronos Vulkan Github project. <param optional="true"><type>VkQueryResultFlags</type> <name>flags</name></param> <validity> <usage>pname:firstQuery must: be less than the number of queries in pname:queryPool</usage> - <usage>If ename:VK_QUERY_RESULT_64_BIT is not set in pname:flags then pname:pData and pname:stride must be multiples of `4`</usage> - <usage>If ename:VK_QUERY_RESULT_64_BIT is set in pname:flags then pname:pData and pname:stride must be multiples of `8`</usage> + <usage>If ename:VK_QUERY_RESULT_64_BIT is not set in pname:flags then pname:pData and pname:stride must: be multiples of `4`</usage> + <usage>If ename:VK_QUERY_RESULT_64_BIT is set in pname:flags then pname:pData and pname:stride must: be multiples of `8`</usage> <usage>The sum of pname:firstQuery and pname:queryCount must: be less than or equal to the number of queries in pname:queryPool</usage> <usage>pname:dataSize must: be large enough to contain the result of each query, as described <<queries-operation-memorylayout,here>></usage> <usage>If the pname:queryType used to create pname:queryPool was ename:VK_QUERY_TYPE_TIMESTAMP, pname:flags mustnot: contain ename:VK_QUERY_RESULT_PARTIAL_BIT</usage> @@ -3363,7 +3400,7 @@ maintained in the master branch of the Khronos Vulkan Github project. <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> <param><type>VkBuffer</type>* <name>pBuffer</name></param> <validity> - <usage>If the pname:flags member of pname:pCreateInfo includes ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT or ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT, creating this sname:VkBuffer mustnot: cause the total required sparse memory for all currently valid sparse resources on the device to exceed sname:VkPhysicalDeviceLimits::pname:sparseAddressSpaceSize</usage> + <usage>If the pname:flags member of pname:pCreateInfo includes ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT, creating this sname:VkBuffer mustnot: cause the total required sparse memory for all currently valid sparse resources on the device to exceed sname:VkPhysicalDeviceLimits::pname:sparseAddressSpaceSize</usage> </validity> </command> <command> @@ -3402,7 +3439,7 @@ maintained in the master branch of the Khronos Vulkan Github project. <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> <param><type>VkImage</type>* <name>pImage</name></param> <validity> - <usage>If the pname:flags member of pname:pCreateInfo includes ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT or ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT, creating this sname:VkImage mustnot: cause the total required sparse memory for all currently valid sparse resources on the device to exceed sname:VkPhysicalDeviceLimits::pname:sparseAddressSpaceSize</usage> + <usage>If the pname:flags member of pname:pCreateInfo includes ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT, creating this sname:VkImage mustnot: cause the total required sparse memory for all currently valid sparse resources on the device to exceed sname:VkPhysicalDeviceLimits::pname:sparseAddressSpaceSize</usage> </validity> </command> <command> @@ -3731,6 +3768,7 @@ maintained in the master branch of the Khronos Vulkan Github project. <param>const <type>VkCommandBufferBeginInfo</type>* <name>pBeginInfo</name></param> <validity> <usage>pname:commandBuffer mustnot: be in the recording state</usage> + <usage>pname:commandBuffer mustnot: currently be pending execution</usage> <usage>If pname:commandBuffer was allocated from a sname:VkCommandPool which did not have the ename:VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT flag set, pname:commandBuffer must: be in the initial state.</usage> <usage>If pname:commandBuffer is a secondary command buffer, the pname:pInheritanceInfo member of pname:pBeginInfo must: be a valid sname:VkCommandBufferInheritanceInfo structure</usage> <usage>If pname:commandBuffer is a secondary command buffer and either the pname:occlusionQueryEnable member of the pname:pInheritanceInfo member of pname:pBeginInfo is ename:VK_FALSE, or the precise occlusion queries feature is not enabled, the pname:queryFlags member of the pname:pInheritanceInfo member pname:pBeginInfo mustnot: contain ename:VK_QUERY_CONTROL_PRECISE_BIT</usage> @@ -3908,7 +3946,7 @@ maintained in the master branch of the Khronos Vulkan Github project. <usage>If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: 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</usage> <usage>If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set</usage> <usage>If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set</usage> - <usage>Any slink:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage> + <usage>Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties</usage> </validity> </command> <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary"> @@ -3934,7 +3972,7 @@ maintained in the master branch of the Khronos Vulkan Github project. <usage>If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: 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</usage> <usage>If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set</usage> <usage>If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set</usage> - <usage>Any slink:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage> + <usage>Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties</usage> </validity> </command> <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary"> @@ -3964,7 +4002,7 @@ maintained in the master branch of the Khronos Vulkan Github project. <usage>If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: 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</usage> <usage>If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set</usage> <usage>If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set</usage> - <usage>Any slink:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage> + <usage>Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties</usage> </validity> </command> <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary"> @@ -3994,7 +4032,7 @@ maintained in the master branch of the Khronos Vulkan Github project. <usage>If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: 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</usage> <usage>If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set</usage> <usage>If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set</usage> - <usage>Any slink:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage> + <usage>Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties</usage> </validity> </command> <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary"> @@ -4016,7 +4054,7 @@ maintained in the master branch of the Khronos Vulkan Github project. <usage>If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE uses unnormalized coordinates, it mustnot: 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</usage> <usage>If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set</usage> <usage>If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set</usage> - <usage>Any slink:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage> + <usage>Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties</usage> </validity> </command> <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary"> @@ -4037,7 +4075,7 @@ maintained in the master branch of the Khronos Vulkan Github project. <usage>If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE uses unnormalized coordinates, it mustnot: 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</usage> <usage>If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set</usage> <usage>If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set</usage> - <usage>Any slink:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage> + <usage>Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties</usage> </validity> </command> <command queues="transfer,graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary"> @@ -4048,11 +4086,11 @@ maintained in the master branch of the Khronos Vulkan Github project. <param><type>uint32_t</type> <name>regionCount</name></param> <param len="regionCount">const <type>VkBufferCopy</type>* <name>pRegions</name></param> <validity> - <usage>The pname:copySize member of a given element of pname:pRegions must: be greater than `0`</usage> + <usage>The pname:size member of a given element of pname:pRegions must: be greater than `0`</usage> <usage>The pname:srcOffset member of a given element of pname:pRegions must: be less than the size of pname:srcBuffer</usage> <usage>The pname:dstOffset member of a given element of pname:pRegions must: be less than the size of pname:dstBuffer</usage> - <usage>The pname:copySize member of a given element of pname:pRegions must: be less than or equal to the size of pname:srcBuffer minus pname:srcOffset</usage> - <usage>The pname:copySize member of a given element of pname:pRegions must: be less than or equal to the size of pname:dstBuffer minus pname:dstOffset</usage> + <usage>The pname:size member of a given element of pname:pRegions must: be less than or equal to the size of pname:srcBuffer minus pname:srcOffset</usage> + <usage>The pname:size member of a given element of pname:pRegions must: be less than or equal to the size of pname:dstBuffer minus pname:dstOffset</usage> <usage>The union of the source regions, and the union of the destination regions, specified by the elements of pname:pRegions, mustnot: overlap in memory</usage> <usage>pname:srcBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_SRC_BIT usage flag</usage> <usage>pname:dstBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag</usage> @@ -4072,10 +4110,10 @@ maintained in the master branch of the Khronos Vulkan Github project. <usage>The destination region specified by a given element of pname:pRegions must: be a region that is contained within pname:dstImage</usage> <usage>The union of all source regions, and the union of all destination regions, specified by the elements of pname:pRegions, mustnot: overlap in memory</usage> <usage>pname:srcImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage flag</usage> - <usage>pname:srcImageLayout must: specify the layout of the subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage> + <usage>pname:srcImageLayout must: specify the layout of the image subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage> <usage>pname:srcImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage> <usage>pname:dstImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag</usage> - <usage>pname:dstImageLayout must: specify the layout of the subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage> + <usage>pname:dstImageLayout must: specify the layout of the image subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage> <usage>pname:dstImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage> <usage>The elink:VkFormat of each of pname:srcImage and pname:dstImage must: be compatible, as defined <<copies-images-format-compatibility, below>></usage> <usage>The sample count of pname:srcImage and pname:dstImage must: match</usage> @@ -4097,17 +4135,18 @@ maintained in the master branch of the Khronos Vulkan Github project. <usage>The union of all source regions, and the union of all destination regions, specified by the elements of pname:pRegions, mustnot: overlap in memory</usage> <usage>pname:srcImage must: use a format that supports ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT, which is indicated by sname:VkFormatProperties::pname:linearTilingFeatures (for linear tiled images) or sname:VkFormatProperties::pname:optimalTilingFeatures (for optimally tiled images) - as returned by fname:vkGetPhysicalDeviceFormatProperties</usage> <usage>pname:srcImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage flag</usage> - <usage>pname:srcImageLayout must: specify the layout of the subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage> + <usage>pname:srcImageLayout must: specify the layout of the image subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage> <usage>pname:srcImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage> <usage>pname:dstImage must: use a format that supports ename:VK_FORMAT_FEATURE_BLIT_DST_BIT, which is indicated by sname:VkFormatProperties::pname:linearTilingFeatures (for linear tiled images) or sname:VkFormatProperties::pname:optimalTilingFeatures (for optimally tiled images) - as returned by fname:vkGetPhysicalDeviceFormatProperties</usage> <usage>pname:dstImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag</usage> - <usage>pname:dstImageLayout must: specify the layout of the subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage> + <usage>pname:dstImageLayout must: specify the layout of the image subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage> <usage>pname:dstImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage> <usage>The sample count of pname:srcImage and pname:dstImage must: both be equal to ename:VK_SAMPLE_COUNT_1_BIT</usage> <usage>If either of pname:srcImage or pname:dstImage was created with a signed integer elink:VkFormat, the other must: also have been created with a signed integer elink:VkFormat</usage> <usage>If either of pname:srcImage or pname:dstImage was created with an unsigned integer elink:VkFormat, the other must: also have been created with an unsigned integer elink:VkFormat</usage> <usage>If either of pname:srcImage or pname:dstImage was created with a depth/stencil format, the other must: have exactly the same format</usage> <usage>If pname:srcImage was created with a depth/stencil format, pname:filter must: be ename:VK_FILTER_NEAREST</usage> + <usage>If pname:filter is ename:VK_FILTER_LINEAR, pname:srcImage must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties</usage> </validity> </command> <command queues="transfer,graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary"> @@ -4125,7 +4164,7 @@ maintained in the master branch of the Khronos Vulkan Github project. <usage>pname:srcBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_SRC_BIT usage flag</usage> <usage>pname:dstImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag</usage> <usage>pname:dstImage must: have a sample count equal to ename:VK_SAMPLE_COUNT_1_BIT</usage> - <usage>pname:dstImageLayout must: specify the layout of the subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage> + <usage>pname:dstImageLayout must: specify the layout of the image subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage> <usage>pname:dstImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage> </validity> </command> @@ -4143,7 +4182,7 @@ maintained in the master branch of the Khronos Vulkan Github project. <usage>The union of all source regions, and the union of all destination regions, specified by the elements of pname:pRegions, mustnot: overlap in memory</usage> <usage>pname:srcImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage flag</usage> <usage>pname:srcImage must: have a sample count equal to ename:VK_SAMPLE_COUNT_1_BIT</usage> - <usage>pname:srcImageLayout must: specify the layout of the subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage> + <usage>pname:srcImageLayout must: specify the layout of the image subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage> <usage>pname:srcImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage> <usage>pname:dstBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag</usage> </validity> @@ -4191,9 +4230,10 @@ maintained in the master branch of the Khronos Vulkan Github project. <param len="rangeCount">const <type>VkImageSubresourceRange</type>* <name>pRanges</name></param> <validity> <usage>pname:image must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag</usage> - <usage>pname:imageLayout must: specify the layout of the subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice</usage> + <usage>pname:imageLayout must: specify the layout of the image subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice</usage> <usage>pname:imageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage> - <usage>The image range of any given element of pname:pRanges must: be a subresource range that is contained within pname:image</usage> + <usage>The image range of any given element of pname:pRanges must: be an image subresource range that is contained within pname:image</usage> + <usage>pname:image mustnot: have a compressed or depth/stencil format</usage> </validity> </command> <command queues="graphics" renderpass="outside" cmdbufferlevel="primary,secondary"> @@ -4206,9 +4246,10 @@ maintained in the master branch of the Khronos Vulkan Github project. <param len="rangeCount">const <type>VkImageSubresourceRange</type>* <name>pRanges</name></param> <validity> <usage>pname:image must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag</usage> - <usage>pname:imageLayout must: specify the layout of the subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice</usage> + <usage>pname:imageLayout must: specify the layout of the image subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice</usage> <usage>pname:imageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage> - <usage>The image range of any given element of pname:pRanges must: be a subresource range that is contained within pname:image</usage> + <usage>The image range of any given element of pname:pRanges must: be an image subresource range that is contained within pname:image</usage> + <usage>pname:image must: have a depth/stencil format</usage> </validity> </command> <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary"> @@ -4239,9 +4280,9 @@ maintained in the master branch of the Khronos Vulkan Github project. <usage>The union of all source regions, and the union of all destination regions, specified by the elements of pname:pRegions, mustnot: overlap in memory</usage> <usage>pname:srcImage must: have a sample count equal to any valid sample count value other than ename:VK_SAMPLE_COUNT_1_BIT</usage> <usage>pname:dstImage must: have a sample count equal to ename:VK_SAMPLE_COUNT_1_BIT</usage> - <usage>pname:srcImageLayout must: specify the layout of the subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage> + <usage>pname:srcImageLayout must: specify the layout of the image subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage> <usage>pname:srcImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage> - <usage>pname:dstImageLayout must: specify the layout of the subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage> + <usage>pname:dstImageLayout must: specify the layout of the image subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage> <usage>pname:dstImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage> <usage>If pname:dstImage was created with pname:tiling equal to ename:VK_IMAGE_TILING_LINEAR, pname:dstImage must: have been created with a pname:format that supports being a color attachment, as specified by the ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage> <usage>If pname:dstImage was created with pname:tiling equal to ename:VK_IMAGE_TILING_OPTIMAL, pname:dstImage must: have been created with a pname:format that supports being a color attachment, as specified by the ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT flag in sname:VkFormatProperties::pname:optimalTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage> @@ -4266,6 +4307,7 @@ maintained in the master branch of the Khronos Vulkan Github project. <validity> <usage>If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:stageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage> <usage>If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, pname:stageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</usage> + <usage>When this command executes, pname:event mustnot: be waited on by a fname:vkCmdWaitEvents command that is currently executing</usage> </validity> </command> <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary"> @@ -4306,7 +4348,7 @@ maintained in the master branch of the Khronos Vulkan Github project. <usage>If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:srcStageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage> <usage>If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:dstStageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage> <usage>If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, pname:srcStageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</usage> - <usage>If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, pname:dstStageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or pname:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</usage> + <usage>If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, pname:dstStageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</usage> <usage>If fname:vkCmdPipelineBarrier is called within a render pass instance, the render pass must: declare at least one self-dependency from the current subpass to itself - see <<synchronization-pipeline-barriers-subpass-self-dependencies,Subpass Self-dependency>></usage> </validity> </command> @@ -4373,10 +4415,10 @@ maintained in the master branch of the Khronos Vulkan Github project. <usage>pname:dstOffset must: be less than the size of pname:dstBuffer</usage> <usage>pname:firstQuery must: be less than the number of queries in pname:queryPool</usage> <usage>The sum of pname:firstQuery and pname:queryCount must: be less than or equal to the number of queries in pname:queryPool</usage> - <usage>If ename:VK_QUERY_RESULT_64_BIT is not set in pname:flags then pname:dstOffset and pname:stride must be multiples of `4`</usage> - <usage>If ename:VK_QUERY_RESULT_64_BIT is set in pname:flags then pname:dstOffset and pname:stride must be multiples of `8`</usage> + <usage>If ename:VK_QUERY_RESULT_64_BIT is not set in pname:flags then pname:dstOffset and pname:stride must: be multiples of `4`</usage> + <usage>If ename:VK_QUERY_RESULT_64_BIT is set in pname:flags then pname:dstOffset and pname:stride must: be multiples of `8`</usage> <usage>pname:dstBuffer must: have enough storage, from pname:dstOffset, to contain the result of each query, as described <<queries-operation-memorylayout,here>></usage> - <usage>pname:dstBuffer must: have been created with pname:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag</usage> + <usage>pname:dstBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag</usage> <usage>If the pname:queryType used to create pname:queryPool was ename:VK_QUERY_TYPE_TIMESTAMP, pname:flags mustnot: contain ename:VK_QUERY_RESULT_PARTIAL_BIT</usage> </validity> </command> @@ -4443,7 +4485,7 @@ maintained in the master branch of the Khronos Vulkan Github project. <usage>If the <<features-features-inheritedQueries,inherited queries>> feature is not enabled, pname:commandBuffer mustnot: have any queries <<queries-operation-active,active>></usage> <usage>If pname:commandBuffer has a ename:VK_QUERY_TYPE_OCCLUSION query <<queries-operation-active,active>>, then each element of pname:pCommandBuffers must: have been recorded with sname:VkCommandBufferBeginInfo::pname:occlusionQueryEnable set to ename:VK_TRUE</usage> <usage>If pname:commandBuffer has a ename:VK_QUERY_TYPE_OCCLUSION query <<queries-operation-active,active>>, then each element of pname:pCommandBuffers must: have been recorded with sname:VkCommandBufferBeginInfo::pname:queryFlags having all bits set that are set for the query</usage> - <usage>If pname:commandBuffer has a ename:VK_QUERY_TYPE_PIPELINE_STATISTICS query <<queries-operation-active,active>>, then each element of pname:pCommandBuffers must: have been recorded with sname:VkCommandBufferBeginInfo::pname:pipelineStatistics having all bits set that are set in the sname:VkQueryPool the query uses</usage> + <usage>If pname:commandBuffer has a ename:VK_QUERY_TYPE_PIPELINE_STATISTICS query <<queries-operation-active,active>>, then each element of pname:pCommandBuffers must: have been recorded with sname:VkCommandBufferInheritanceInfo::pname:pipelineStatistics having all bits set that are set in the sname:VkQueryPool the query uses</usage> <usage>Any given element of pname:pCommandBuffers mustnot: begin any query types that are <<queries-operation-active,active>> in pname:commandBuffer</usage> </validity> </command> @@ -4487,7 +4529,7 @@ maintained in the master branch of the Khronos Vulkan Github project. <proto><type>VkResult</type> <name>vkCreateDisplayModeKHR</name></proto> <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> <param externsync="true"><type>VkDisplayKHR</type> <name>display</name></param> - <param>const <type>VkDisplayModeCreateInfoKHR</type>*<name>pCreateInfo</name></param> + <param>const <type>VkDisplayModeCreateInfoKHR</type>* <name>pCreateInfo</name></param> <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> <param><type>VkDisplayModeKHR</type>* <name>pMode</name></param> </command> @@ -4583,7 +4625,7 @@ maintained in the master branch of the Khronos Vulkan Github project. <param optional="true" externsync="true"><type>VkSwapchainKHR</type> <name>swapchain</name></param> <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> <validity> - <usage>All uses of presentable images acquired from pname:swapchain and owned by the application must: have completed execution</usage> + <usage>All uses of presentable images acquired from pname:swapchain must: have completed execution</usage> <usage>If sname:VkAllocationCallbacks were provided when pname:swapchain was created, a compatible set of callbacks must: be provided here</usage> <usage>If no sname:VkAllocationCallbacks were provided when pname:swapchain was created, pname:pAllocator must: be `NULL`</usage> </validity> @@ -4595,7 +4637,7 @@ maintained in the master branch of the Khronos Vulkan Github project. <param optional="false,true"><type>uint32_t</type>* <name>pSwapchainImageCount</name></param> <param optional="true" len="pSwapchainImageCount"><type>VkImage</type>* <name>pSwapchainImages</name></param> </command> - <command successcodes="VK_SUCCESS,VK_SUBOPTIMAL_KHR" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST,VK_ERROR_OUT_OF_DATE_KHR,VK_ERROR_SURFACE_LOST_KHR"> + <command successcodes="VK_SUCCESS,VK_TIMEOUT,VK_NOT_READY,VK_SUBOPTIMAL_KHR" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST,VK_ERROR_OUT_OF_DATE_KHR,VK_ERROR_SURFACE_LOST_KHR"> <proto><type>VkResult</type> <name>vkAcquireNextImageKHR</name></proto> <param><type>VkDevice</type> <name>device</name></param> <param externsync="true"><type>VkSwapchainKHR</type> <name>swapchain</name></param> @@ -4710,13 +4752,49 @@ maintained in the master branch of the Khronos Vulkan Github project. <param>const <type>char</type>* <name>pMessage</name></param> <validity> <usage>pname:instance must: be a valid sname:VkInstance handle</usage> - <usage>pname:flags must be a combination of one or more of sname:VkDebugReportFlagBitsEXT</usage> - <usage>pname:objType must be one of sname:VkDebugReportObjectTypeEXT, ename:VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT if pname:object is `NULL`</usage> - <usage>pname:object may be a {apiname} object</usage> + <usage>pname:flags must: be a combination of one or more of sname:VkDebugReportFlagBitsEXT</usage> + <usage>pname:objType must: be one of sname:VkDebugReportObjectTypeEXT, ename:VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT if pname:object is `NULL`</usage> + <usage>pname:object may: be a {apiname} object</usage> <usage>pname:pLayerPrefix must: be a `NULL` terminated string.</usage> <usage>pname:pMsg must: be a `NULL` terminated string.</usage> </validity> </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkDebugMarkerSetObjectNameEXT</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param externsync="pNameInfo.object"><type>VkDebugMarkerObjectNameInfoEXT</type>* <name>pNameInfo</name></param> + <validity> + <usage>pname:pNameInfo.object must: be a Vulkan object</usage> + </validity> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkDebugMarkerSetObjectTagEXT</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param externsync="pTagInfo.object"><type>VkDebugMarkerObjectTagInfoEXT</type>* <name>pTagInfo</name></param> + <validity> + <usage>pname:pTagInfo.object must: be a Vulkan object</usage> + <usage>pname:pTagInfo.tagName mustnot: be `0`</usage> + </validity> + </command> + <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary"> + <proto><type>void</type> <name>vkCmdDebugMarkerBeginEXT</name></proto> + <param><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>VkDebugMarkerMarkerInfoEXT</type>* <name>pMarkerInfo</name></param> + </command> + <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary"> + <proto><type>void</type> <name>vkCmdDebugMarkerEndEXT</name></proto> + <param><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <validity> + <usage>There must: be an outstanding flink:vkCmdDebugMarkerBeginEXT command prior to the fname:vkCmdDebugMarkerEndEXT on the queue that pname:commandBuffer is submitted to.</usage> + <usage>If the matching flink:vkCmdDebugMarkerBeginEXT command was in a secondary command buffer, the fname:vkCmdDebugMarkerEndEXT must be in the same pname:commandBuffer.</usage> + + </validity> + </command> + <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary"> + <proto><type>void</type> <name>vkCmdDebugMarkerInsertEXT</name></proto> + <param><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>VkDebugMarkerMarkerInfoEXT</type>* <name>pMarkerInfo</name></param> + </command> </commands> <!-- SECTION: Vulkan API interface definitions --> @@ -4967,7 +5045,7 @@ maintained in the master branch of the Khronos Vulkan Github project. </extension> <extension name="VK_KHR_swapchain" number="2" supported="vulkan"> <require> - <enum value="67" name="VK_KHR_SWAPCHAIN_SPEC_VERSION"/> + <enum value="68" name="VK_KHR_SWAPCHAIN_SPEC_VERSION"/> <enum value=""VK_KHR_swapchain"" name="VK_KHR_SWAPCHAIN_EXTENSION_NAME"/> <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR"/> <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PRESENT_INFO_KHR"/> @@ -5127,7 +5205,7 @@ maintained in the master branch of the Khronos Vulkan Github project. <enum value="1" name="VK_IMG_FILTER_CUBIC_SPEC_VERSION"/> <enum value=""VK_IMG_filter_cubic"" name="VK_IMG_FILTER_CUBIC_EXTENSION_NAME"/> <enum offset="0" extends="VkFilter" name="VK_FILTER_CUBIC_IMG"/> - <enum bitpos="13" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG" comment="Format can be filtered with VK_FILTER_CUBIC_IMG when being sampled"/> + <enum bitpos="13" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG" comment="Format can be filtered with VK_FILTER_CUBIC_IMG when being sampled"/> <usage command="vkCmdDraw">Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_IMG as a result of this command must: be of a format which supports cubic filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties</usage> <usage command="vkCmdDraw">Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_IMG as a result of this command mustnot: have an elink:VkImageViewType of ename:VK_IMAGE_VIEW_TYPE_3D, ename:VK_IMAGE_VIEW_TYPE_CUBE, or ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</usage> <usage command="vkCmdDrawIndexed">Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_IMG as a result of this command must: be of a format which supports cubic filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties</usage> @@ -5144,5 +5222,61 @@ maintained in the master branch of the Khronos Vulkan Github project. <usage struct="VkSamplerCreateInfo">If either pname:magFilter or pname:minFilter is ename:VK_FILTER_CUBIC_IMG, pname:anisotropyEnable must: be ename:VK_FALSE</usage> </require> </extension> + <extension name="VK_AMD_extension_1" number="17" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled"> + <require> + <enum value="0" name="VK_AMD_EXTENSION_1_SPEC_VERSION"/> + <enum value=""VK_AMD_extension_1"" name="VK_AMD_EXTENSION_1_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_extension_2" number="18" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled"> + <require> + <enum value="0" name="VK_AMD_EXTENSION_2_SPEC_VERSION"/> + <enum value=""VK_AMD_extension_2"" name="VK_AMD_EXTENSION_2_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_rasterization_order" number="19" author="AMD" contact="Daniel Rakos @aqnuep" supported="vulkan"> + <require> + <enum value="1" name="VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION"/> + <enum value=""VK_AMD_rasterization_order"" name="VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD"/> + <type name="VkRasterizationOrderAMD"/> + <type name="VkPipelineRasterizationStateRasterizationOrderAMD"/> + </require> + </extension> + <extension name="VK_AMD_extension_4" number="20" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled"> + <require> + <enum value="0" name="VK_AMD_EXTENSION_4_SPEC_VERSION"/> + <enum value=""VK_AMD_extension_4"" name="VK_AMD_EXTENSION_4_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_extension_5" number="21" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled"> + <require> + <enum value="0" name="VK_AMD_EXTENSION_5_SPEC_VERSION"/> + <enum value=""VK_AMD_extension_5"" name="VK_AMD_EXTENSION_5_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_extension_6" number="22" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled"> + <require> + <enum value="0" name="VK_AMD_EXTENSION_6_SPEC_VERSION"/> + <enum value=""VK_AMD_extension_6"" name="VK_AMD_EXTENSION_6_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_EXT_debug_marker" number="23" author="Baldur Karlsson" contact="baldurk@baldurk.org" supported="vulkan"> + <require> + <enum value="3" name="VK_EXT_DEBUG_MARKER_SPEC_VERSION"/> + <enum value=""VK_EXT_debug_marker"" name="VK_EXT_DEBUG_MARKER_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT"/> + <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT"/> + <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT"/> + <type name="VkDebugMarkerObjectNameInfoEXT"/> + <type name="VkDebugMarkerObjectTagInfoEXT"/> + <type name="VkDebugMarkerMarkerInfoEXT"/> + <command name="vkDebugMarkerSetObjectTagEXT"/> + <command name="vkDebugMarkerSetObjectNameEXT"/> + <command name="vkCmdDebugMarkerBeginEXT"/> + <command name="vkCmdDebugMarkerEndEXT"/> + <command name="vkCmdDebugMarkerInsertEXT"/> + </require> + </extension> </extensions> </registry> |
