Change log for December 10, 2016 Vulkan 1.0.37 spec update:

* Bump API patch number and header version number to 37 for this update.

Github Issues:

  * Add usability guarantees on the values returned by
    flink:vkGetPhysicalDeviceSurfaceCapabilitiesKHR in the
    slink:VkSurfaceCapabilitiesKHR structure and by
    flink:vkGetPhysicalDeviceSurfaceFormatsKHR in the
    pname:pSurfaceFormatCount parameter (public issue 385).
  * Add elink:VkDebugReportObjectTypeEXT enumerants for new object types
    introduced by new extensions (public issue 408).
  * Add +VK_NVX_device_generated_commands+ etext:ACCESS bits and define how
    they are used (public issue 415).
  * Fix indentation for slink:VkDebugReportCallbackCreateInfoEXT member
    descriptions (public issue 419).

Internal Issues:

  * Expand requirements memory binding of non-sparse images and buffers from
    the <<resources-association,Resource Memory Association>> section into
    valid usage statements for all of the applicable API calls (internal
    issue 508).
  * Explicitly state that valid usage of flink:vkCreateImage requires that
    flink:vkGetPhysicalDeviceImageFormatProperties would return
    ename:VK_SUCCESS for the requested image configuration (internal issue
    598).
This commit is contained in:
Jon Leech 2016-12-10 20:59:58 -08:00
parent 7cba8f5d99
commit 8f014fa579
20 changed files with 333 additions and 63 deletions

View File

@ -1680,8 +1680,8 @@ Github Issues:
* Added validation language for slink:VkSubpassDependency and in the
<<synchronization-access-types-supported,supported access types>>
section to catch access masks that include bits which are not supported
by pipeline stages in the stage masks (partially addresses public issue
1006).
by pipeline stages in the stage masks (partially addresses
github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/issues/1006 ).
Internal Issues:
@ -1707,3 +1707,34 @@ Other Issues:
* Add validity language requiring that
slink:VkPushConstantRange::pname:offset be a multiple of 4, as stated in
the spec language.
-----------------------------------------------------
Change log for December 10, 2016 Vulkan 1.0.37 spec update:
* Bump API patch number and header version number to 37 for this update.
Github Issues:
* Add usability guarantees on the values returned by
flink:vkGetPhysicalDeviceSurfaceCapabilitiesKHR in the
slink:VkSurfaceCapabilitiesKHR structure and by
flink:vkGetPhysicalDeviceSurfaceFormatsKHR in the
pname:pSurfaceFormatCount parameter (public issue 385).
* Add elink:VkDebugReportObjectTypeEXT enumerants for new object types
introduced by new extensions (public issue 408).
* Add +VK_NVX_device_generated_commands+ etext:ACCESS bits and define how
they are used (public issue 415).
* Fix indentation for slink:VkDebugReportCallbackCreateInfoEXT member
descriptions (public issue 419).
Internal Issues:
* Expand requirements memory binding of non-sparse images and buffers from
the <<resources-association,Resource Memory Association>> section into
valid usage statements for all of the applicable API calls (internal
issue 508).
* Explicitly state that valid usage of flink:vkCreateImage requires that
flink:vkGetPhysicalDeviceImageFormatProperties would return
ename:VK_SUCCESS for the requested image configuration (internal issue
598).

View File

@ -160,7 +160,7 @@ GENDEPENDS = api/timeMarker validity/timeMarker hostsynctable/timeMarker
COMMONDOCS = $(CHAPTERS) $(GENINCLUDE) $(GENDEPENDS)
# A generated included file containing the spec version, date, and git commit
SPECVERSION = specversion.txt
SPECREVISION = 1.0.36
SPECREVISION = 1.0.37
SPECREMARK =
# Spec targets

View File

@ -8,9 +8,9 @@
*Registered Extension Number*::
12
*Last Modified Date*::
2016-09-17
2016-12-08
*Revision*::
3
4
*IP Status*::
No known IP claims.
*Dependencies*::
@ -19,6 +19,7 @@
- Courtney Goeltzenleuchter, LunarG
- Dan Ginsburg, Valve
- Jon Ashburn, LunarG
- Mark Lobodzinski, LunarG
*Contacts*::
- Courtney Goeltzenleuchter
@ -152,9 +153,18 @@ We should probably add some.
=== Version History
[NOTE]
.Note
====
There is no revision history in the current spec.
We should probably add some.
====
* Revision 1, 2015-05-20 (Courtney Goetzenleuchter)
- Initial draft, based on LunarG KHR spec, other KHR specs
* Revision 2, 2016-02-16 (Courtney Goetzenleuchter)
- Update usage, documentation
* Revision 3, 2016-06-14 (Courtney Goetzenleuchter)
- Update VK_EXT_DEBUG_REPORT_SPEC_VERSION to indicate added support for
vkCreateInstance and vkDestroyInstance
* Revision 4, 2016-12-08 (Mark Lobodzinski)
- Added Display_KHR, DisplayModeKHR extension objects
- Added ObjectTable_NVX, IndirectCommandsLayout_NVX extension objects
- Bumped spec revision
- Retroactively added version history

View File

@ -95,7 +95,7 @@ shaders...).
* sname:VkObjectTableNVX
* sname:VkIndirectCommandsLayoutNVX
== New Flag Types
=== New Flag Types
* sname:VkIndirectCommandsLayoutUsageFlagsNVX
* sname:VkObjectEntryUsageFlagsNVX
@ -313,11 +313,35 @@ vkCmdProcessCommandsNVX
22) In which pipeline stage do the device generated command expansion
happen?
This is required in order to allow applications to properly syncronize
access (e.g. via memory barriers) when writing to the buffers referenced
by vkCmdProcessCommandsNVX
vkCmdProcessCommandsNVX is treated as if it occurs in a separate logical
pipeline from either graphics or compute, and that pipeline only includes
TOP_OF_PIPE, a new stage ename:VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT, and
BOTTOM_OF_PIPE.
This new stage has two corresponding new access types,
ename:VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX and
ename:VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX, used to synchronize reading
the buffer inputs and writing the command buffer memory output.
The output written in the target command buffer is considered to be
consumed by the DRAW_INDIRECT pipeline stage.
added VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT
Thus, to synchronize from writing the input buffers to executing
flink:vkCmdProcessCommandsNVX, use:
* dstStageMask = VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX
* dstAccessMask = VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX
To synchronize from executing flink:vkCmdProcessCommandsNVX to executing
the generated commands, use
* srcStageMask = VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX
* srcAccessMask = VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX
* dstStageMask = VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT
* dstAccessMask = VK_ACCESS_INDIRECT_COMMAND_READ_BIT
When flink:vkCmdProcessCommandsNVX is used with a
pname:targetCommandBuffer of `NULL`, the generated commands are
immediately executed and there is implicit synchronization between
generation and execution.
23) What if most token data is "static", but we frequently want to render a
subsection?
@ -360,13 +384,34 @@ TODO links to gameworks & designworks samples
// If you modify the input buffer data referenced by VkCmdProcessCommandsInfoNVX,
// ensure you have added the appropriate barriers prior generation process.
// When regenerating the content of the same reserved space, ensure prior operations have completed
vkCmdPipelineBarrier (mainCmd, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX, ...);
VkMemoryBarrier memoryBarrier = { VK_STRUCTURE_TYPE_MEMORY_BARRIER };
memoryBarrier.srcAccessMask = ...;
memoryBarrier.dstAccessMask = VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX;
vkCmdPipelineBarrier(mainCmd,
/*srcStageMask*/VK_PIPELINE_STAGE_ALL_COMMANDS_BIT,
/*dstStageMask*/VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX,
/*dependencyFlags*/0,
/*memoryBarrierCount*/1,
/*pMemoryBarriers*/&memoryBarrier,
...);
vkCmdProcessCommandsNVX(mainCmd, &processInfo);
...
// execute the secondary command buffer and ensure the processing that modifies command-buffer content
// has completed
vkCmdPipelineBarrier(mainCmd, VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, ...)
memoryBarrier.srcAccessMask = VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX;
memoryBarrier.dstAccessMask = VK_ACCESS_INDIRECT_COMMAND_READ_BIT;
vkCmdPipelineBarrier(mainCmd,
/*srcStageMask*/VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX,
/*dstStageMask*/VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT,
/*dependencyFlags*/0,
/*memoryBarrierCount*/1,
/*pMemoryBarriers*/&memoryBarrier,
...)
vkCmdExecuteCommands(mainCmd, 1, &generatedCmdBuffer);
---------------------------------------------------

View File

@ -54,10 +54,14 @@ include::../api/enums/VkDebugReportFlagBitsEXT.txt[]
* ename:VK_DEBUG_REPORT_ERROR_BIT_EXT indicates an error that may cause
undefined results, including an application crash.
* ename:VK_DEBUG_REPORT_WARNING_BIT_EXT indicates an unexpected use.
E.g. Not destroying objects prior to destroying the containing object or
potential inconsistencies between descriptor set layout and the layout
in the corresponding shader, etc.
* ename:VK_DEBUG_REPORT_WARNING_BIT_EXT indicates use of Vulkan that may
expose an app bug.
Such cases may not be immediately harmful, such as a fragment shader
outputting to a location with no attachment.
Other cases may point to behavior that is almost certainly bad when
unintended such as using an image whose memory hasn't been filled.
In general if you see a warning but you know that the behavior is
intended/desired, then simply ignore the warning.
* ename:VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT indicates a
potentially non-optimal use of Vulkan.
E.g. using flink:vkCmdClearColorImage when a RenderPass load_op would
@ -67,10 +71,10 @@ include::../api/enums/VkDebugReportFlagBitsEXT.txt[]
application.
* ename:VK_DEBUG_REPORT_DEBUG_BIT_EXT indicates diagnostic information
from the loader and layers.
--
+
* pname:pfnCallback is the application callback function to call.
* pname:pUserData is user data to be passed to the callback.
--
For each sname:VkDebugReportCallbackEXT that is created the flags determine
when that function is called.

View File

@ -232,9 +232,11 @@ The sname:VkSurfaceCapabilitiesKHR structure is defined as:
include::../../api/structs/VkSurfaceCapabilitiesKHR.txt[]
* pname:minImageCount is the minimum number of images the specified device
supports for a swapchain created for the surface.
supports for a swapchain created for the surface, and will be at least
one.
* pname:maxImageCount is the maximum number of images the specified device
supports for a swapchain created for the surface.
supports for a swapchain created for the surface, and will be either 0,
or greater than or equal to pname:minImageCount.
A value of 0 means that there is no limit on the number of images,
though there may: be limits related to the total amount of memory used
by swapchain images.
@ -244,20 +246,33 @@ include::../../api/structs/VkSurfaceCapabilitiesKHR.txt[]
the surface.
* pname:minImageExtent contains the smallest valid swapchain extent for
the surface on the specified device.
The pname:width and pname:height of the extent will each be less than or
equal to the corresponding pname:width and pname:height of
pname:currentExtent, unless pname:currentExtent has the special value
described above.
* pname:maxImageExtent contains the largest valid swapchain extent for the
surface on the specified device.
The pname:width and pname:height of the extent will each be greater than
or equal to the corresponding pname:width and pname:height of
pname:minImageExtent.
The pname:width and pname:height of the extent will each be greater than
or equal to the corresponding pname:width and pname:height of
pname:currentExtent, unless pname:currentExtent has the special value
described above.
* pname:maxImageArrayLayers is the maximum number of layers swapchain
images can: have for a swapchain created for this device and surface.
images can: have for a swapchain created for this device and surface,
and will be at least one.
* pname:supportedTransforms is a bitmask of
elink:VkSurfaceTransformFlagBitsKHR, describing the presentation
transforms supported for the surface on the specified device.
* pname:currentTransform is a bitmask of
elink:VkSurfaceTransformFlagBitsKHR, describing the surface's current
transform relative to the presentation engine's natural orientation.
transforms supported for the surface on the specified device, and at
least one bit will be set.
* pname:currentTransform is the surface's current transform relative to
the presentation engine's natural orientation, as described by
elink:VkSurfaceTransformFlagBitsKHR.
* pname:supportedCompositeAlpha is a bitmask of
elink:VkCompositeAlphaFlagBitsKHR, representing the alpha compositing
modes supported by the presentation engine for the surface on the
specified device.
specified device, and at least one bit will be set.
Opaque composition can: be achieved in any alpha compositing mode by
either using a swapchain image format that has no alpha component, or by
ensuring that all pixels in the swapchain images have an alpha value of
@ -279,8 +294,10 @@ include::../../validity/structs/VkSurfaceCapabilitiesKHR.txt[]
// refBegin VkSurfaceTransformFlagBitsKHR - presentation transforms supported on a device
The pname:supportedTransforms and pname:currentTransform members are of type
ename:VkSurfaceTransformFlagBitsKHR, which contains the following values:
slink:VkSurfaceCapabilitiesKHR::pname:supportedTransforms is a bitmask of,
and slink:VkSurfaceCapabilitiesKHR::pname:currentTransform is a single bit
from ename:VkSurfaceTransformFlagBitsKHR, which contains the following
values:
include::../../api/enums/VkSurfaceTransformFlagBitsKHR.txt[]
@ -362,6 +379,7 @@ include::../../api/protos/vkGetPhysicalDeviceSurfaceFormatsKHR.txt[]
If pname:pSurfaceFormats is `NULL`, then the number of format pairs
supported for the given pname:surface is returned in
pname:pSurfaceFormatCount.
The number of format pairs supported will be greater than or equal to 1.
Otherwise, pname:pSurfaceFormatCount must: point to a variable set by the
user to the number of elements in the pname:pSurfaceFormats array, and on
return the variable is overwritten with the number of structures actually

View File

@ -43,7 +43,7 @@ include::../../api/structs/VkWaylandSurfaceCreateInfoKHR.txt[]
include::../../validity/structs/VkWaylandSurfaceCreateInfoKHR.txt[]
On Wayland, pname:currentExtent is undefined [eq]#(0,0)#.
On Wayland, pname:currentExtent is undefined [eq]#(0xFFFFFFFF, 0xFFFFFFFF)#.
Whatever the application sets a swapchain's pname:imageExtent to will be the
size of the window, after the first image is presented.
pname:minImageExtent is [eq]#(1,1)#, and pname:maxImageExtent is the maximum

View File

@ -25,6 +25,14 @@ Similar to sname:VkDescriptorSet special care must be taken for the lifetime
of resources referenced in sname:VkObjectTableNVX, which may be accessed at
either generation or execution time.
flink:vkCmdProcessCommandsNVX executes in a separate logical pipeline from
either graphics or compute.
When generating commands into a secondary command buffer, the command
generation must: be explicitly synchronized against the secondary command
buffer's execution.
When not using a secondary command buffer, the command generation is
automatically synchronized against the command execution.
== Features and Limitations
// refBegin vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX Returns device-generated commands related properties of a physical device

View File

@ -44,6 +44,8 @@ pname:pColor.
****
* pname:image must: have been created with
ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag
* If pname:image is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
* 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
@ -90,6 +92,8 @@ include::../api/protos/vkCmdClearDepthStencilImage.txt[]
****
* pname:image must: have been created with
ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag
* If pname:image is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
* 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
@ -339,6 +343,8 @@ fname:vkCmdFillBuffer.
multiple of `4`
* pname:dstBuffer must: have been created with
ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag
* If pname:dstBuffer is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
****
include::../validity/protos/vkCmdFillBuffer.txt[]
@ -384,6 +390,8 @@ fname:vkCmdUpdateBuffer.
pname:dstBuffer minus pname:dstOffset
* pname:dstBuffer must: have been created with
ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag
* If pname:dstBuffer is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
* pname:dstOffset must: be a multiple of `4`
* pname:dataSize must: be less than or equal to `65536`
* pname:dataSize must: be a multiple of `4`

View File

@ -95,8 +95,12 @@ memory.
in memory
* pname:srcBuffer must: have been created with
ename:VK_BUFFER_USAGE_TRANSFER_SRC_BIT usage flag
* If pname:srcBuffer is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
* pname:dstBuffer must: have been created with
ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag
* If pname:dstBuffer is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
****
include::../validity/protos/vkCmdCopyBuffer.txt[]
@ -241,6 +245,8 @@ images, but both images must: have the same number of samples.
in memory
* pname:srcImage must: have been created with
ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage flag
* If pname:srcImage is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
* 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
@ -249,6 +255,8 @@ images, but both images must: have the same number of samples.
ename:VK_IMAGE_LAYOUT_GENERAL
* pname:dstImage must: have been created with
ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag
* If pname:dstImage is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
* 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
@ -417,8 +425,12 @@ source buffer to the specified region of the destination image.
in memory
* pname:srcBuffer must: have been created with
ename:VK_BUFFER_USAGE_TRANSFER_SRC_BIT usage flag
* If pname:srcBuffer is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
* pname:dstImage must: have been created with
ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag
* If pname:dstImage is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
* pname:dstImage must: have a sample count equal to
ename:VK_SAMPLE_COUNT_1_BIT
* pname:dstImageLayout must: specify the layout of the image subresources
@ -461,6 +473,8 @@ source image to the specified region of the destination buffer.
in memory
* pname:srcImage must: have been created with
ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage flag
* If pname:srcImage is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
* pname:srcImage must: have a sample count equal to
ename:VK_SAMPLE_COUNT_1_BIT
* pname:srcImageLayout must: specify the layout of the image subresources
@ -471,6 +485,8 @@ source image to the specified region of the destination buffer.
ename:VK_IMAGE_LAYOUT_GENERAL
* pname:dstBuffer must: have been created with
ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag
* If pname:dstBuffer is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
****
include::../validity/protos/vkCmdCopyImageToBuffer.txt[]
@ -805,6 +821,8 @@ representable range of the destination format, then casting the value.
fname:vkGetPhysicalDeviceFormatProperties
* pname:srcImage must: have been created with
ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage flag
* If pname:srcImage is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
* 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
@ -819,6 +837,8 @@ representable range of the destination format, then casting the value.
fname:vkGetPhysicalDeviceFormatProperties
* pname:dstImage must: have been created with
ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag
* If pname:dstImage is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
* 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
@ -980,8 +1000,12 @@ pname:layerCount layers are resolved to the destination image.
* The union of all source regions, and the union of all destination
regions, specified by the elements of pname:pRegions, must: not overlap
in memory
* If pname:srcImage is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
* pname:srcImage must: have a sample count equal to any valid sample count
value other than ename:VK_SAMPLE_COUNT_1_BIT
* If pname:dstImage is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
* pname:dstImage must: have a sample count equal to
ename:VK_SAMPLE_COUNT_1_BIT
* pname:srcImageLayout must: specify the layout of the image subresources

View File

@ -1609,6 +1609,13 @@ use immutable samplers or must: all not use immutable samplers.
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, the pname:offset member
of any given element of pname:pBufferInfo must: be a multiple of
sname:VkPhysicalDeviceLimits::pname:minStorageBufferOffsetAlignment
* If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, or
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, the pname:buffer member
of any given element of pname:pBufferInfo that is non-sparse must: be
bound completely and contiguously to a single sname:VkDeviceMemory
object
* If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, the pname:buffer member
of any given element of pname:pBufferInfo must: have been created with

View File

@ -131,6 +131,8 @@ at pname:offset.
.Valid Usage
****
* If pname:buffer is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
* For each set _n_ that is statically used by the sname:VkPipeline
currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE, a descriptor
set must: have been bound to _n_ at

View File

@ -427,6 +427,8 @@ include::../api/enums/VkIndexType.txt[]
multiple of the type indicated by pname:indexType
* pname:buffer must: have been created with the
ename:VK_BUFFER_USAGE_INDEX_BUFFER_BIT flag
* If pname:buffer is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
****
include::../validity/protos/vkCmdBindIndexBuffer.txt[]
@ -736,6 +738,8 @@ If pname:drawCount is less than or equal to one, pname:stride is ignored.
.Valid Usage
****
* If pname:buffer is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
* pname:offset must: be a multiple of `4`
* If pname:drawCount is greater than `1`, pname:stride must: be a multiple
of `4` and must: be greater than or equal to
@ -1039,6 +1043,8 @@ If pname:drawCount is less than or equal to one, pname:stride is ignored.
.Valid Usage
****
* If pname:buffer is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
* pname:offset must: be a multiple of `4`
* If pname:drawCount is greater than `1`, pname:stride must: be a multiple
of `4` and must: be greater than or equal to

View File

@ -3745,7 +3745,7 @@ include::../api/protos/vkGetPhysicalDeviceImageFormatProperties.txt[]
The pname:format, pname:type, pname:tiling, pname:usage, and pname:flags
parameters correspond to parameters that would be consumed by
flink:vkCreateImage.
flink:vkCreateImage (as members of sname:VkImageCreateInfo).
If pname:format is not a supported image format, or if the combination of
pname:format, pname:type, pname:tiling, pname:usage, and pname:flags is not

View File

@ -409,6 +409,8 @@ commands.
corresponding element in pname:pBuffers
* All elements of pname:pBuffers must: have been created with the
ename:VK_BUFFER_USAGE_VERTEX_BUFFER_BIT flag
* Each element of pname:pBuffers that is non-sparse must: be bound
completely and contiguously to a single sname:VkDeviceMemory object
****
include::../validity/protos/vkCmdBindVertexBuffers.txt[]

View File

@ -550,6 +550,8 @@ before using the results.
<<queries-operation-memorylayout,here>>
* pname:dstBuffer must: have been created with
ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag
* If pname:dstBuffer is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
* If the pname:queryType used to create pname:queryPool was
ename:VK_QUERY_TYPE_TIMESTAMP, pname:flags must: not contain
ename:VK_QUERY_RESULT_PARTIAL_BIT

View File

@ -317,6 +317,8 @@ include::../api/structs/VkBufferViewCreateInfo.txt[]
ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT flag in
sname:VkFormatProperties::pname:bufferFeatures returned by
fname:vkGetPhysicalDeviceFormatProperties
* If pname:buffer is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
****
include::../validity/structs/VkBufferViewCreateInfo.txt[]
@ -432,10 +434,6 @@ include::../api/structs/VkImageCreateInfo.txt[]
pname:initialLayout must: be ename:VK_IMAGE_LAYOUT_UNDEFINED or
ename:VK_IMAGE_LAYOUT_PREINITIALIZED.
Valid limits for the image pname:extent, pname:mipLevels, pname:arrayLayers
and pname:samples members are queried with the
flink:vkGetPhysicalDeviceImageFormatProperties command.
Images created with pname:tiling equal to ename:VK_IMAGE_TILING_LINEAR have
further restrictions on their limits and capabilities compared to images
created with pname:tiling equal to ename:VK_IMAGE_TILING_OPTIMAL.
@ -452,13 +450,25 @@ supported unless other parameters meet all of the constraints:
Implementations may: support additional limits and capabilities beyond those
listed above.
To determine the specific capabilities of an implementation, query the valid
pname:usage bits by calling flink:vkGetPhysicalDeviceFormatProperties and
the valid limits for pname:mipLevels and pname:arrayLayers by calling
flink:vkGetPhysicalDeviceImageFormatProperties.
To query an implementation's specific capabilities for a given combination
of pname:format, pname:type, pname:tiling, pname:usage, and pname:flags,
call flink:vkGetPhysicalDeviceImageFormatProperties.
The return value indicates whether that combination of image settings is
supported.
On success, the sname:VkImageFormatProperties output parameter indicates the
set of valid pname:samples bits and the limits for pname:extent,
pname:mipLevels, and pname:arrayLayers.
To determine the set of valid pname:usage bits for a given format, call
flink:vkGetPhysicalDeviceFormatProperties.
.Valid Usage
****
* The combination of pname:format, pname:type, pname:tiling, pname:usage,
and pname:flags must: be supported, as indicated by a VK_SUCCESS return
value from fname:vkGetPhysicalDeviceImageFormatProperties invoked with
the same values passed to the corresponding parameters.
* If pname:sharingMode is ename:VK_SHARING_MODE_CONCURRENT,
pname:pQueueFamilyIndices must: be a pointer to an array of
pname:queueFamilyIndexCount basetype:uint32_t values
@ -1505,6 +1515,8 @@ pname:layerCount = 1
* 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
* If pname:image is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
* pname:subResourceRange and pname:viewType must: be compatible with the
image, as described in the
<<resources-image-views-compatibility,compatibility table>>

View File

@ -278,6 +278,10 @@ ifdef::VK_NVX_device_generated_commands[]
endif::VK_NVX_device_generated_commands[]
* ename:VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT: Stage of the pipeline where
Draw/DispatchIndirect data structures are consumed.
ifdef::VK_NVX_device_generated_commands[]
This stage also includes reading commands written by
flink:vkCmdProcessCommandsNVX.
endif::VK_NVX_device_generated_commands[]
* ename:VK_PIPELINE_STAGE_VERTEX_INPUT_BIT: Stage of the pipeline where
vertex and index buffers are consumed.
* ename:VK_PIPELINE_STAGE_VERTEX_SHADER_BIT: Vertex shader stage.
@ -320,9 +324,6 @@ endif::VK_NVX_device_generated_commands[]
Equivalent to the logical or of:
** ename:VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT
ifdef::VK_NVX_device_generated_commands[]
** ename:VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX
endif::VK_NVX_device_generated_commands[]
** ename:VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT
** ename:VK_PIPELINE_STAGE_VERTEX_INPUT_BIT
** ename:VK_PIPELINE_STAGE_VERTEX_SHADER_BIT
@ -422,9 +423,6 @@ and <<devsandqueues-queues,Queues>>.
|====
|Pipeline stage flag | Required queue capability flag
|ename:VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT | None required
ifdef::VK_NVX_device_generated_commands[]
|ename:VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX | ename:VK_QUEUE_GRAPHICS_BIT or ename:VK_QUEUE_COMPUTE_BIT
endif::VK_NVX_device_generated_commands[]
|ename:VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT | ename:VK_QUEUE_GRAPHICS_BIT or ename:VK_QUEUE_COMPUTE_BIT
|ename:VK_PIPELINE_STAGE_VERTEX_INPUT_BIT | ename:VK_QUEUE_GRAPHICS_BIT
|ename:VK_PIPELINE_STAGE_VERTEX_SHADER_BIT | ename:VK_QUEUE_GRAPHICS_BIT
@ -441,6 +439,9 @@ endif::VK_NVX_device_generated_commands[]
|ename:VK_PIPELINE_STAGE_HOST_BIT | None required
|ename:VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT | ename:VK_QUEUE_GRAPHICS_BIT
|ename:VK_PIPELINE_STAGE_ALL_COMMANDS_BIT | None required
ifdef::VK_NVX_device_generated_commands[]
|ename:VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX | ename:VK_QUEUE_GRAPHICS_BIT or ename:VK_QUEUE_COMPUTE_BIT
endif::VK_NVX_device_generated_commands[]
|====
[[synchronization-pipeline-stages-order]]
@ -473,9 +474,6 @@ compute, transfer or host.
For the graphics pipeline, the following stages occur in this order:
* ename:VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT
ifdef::VK_NVX_device_generated_commands[]
* ename:VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX
endif::VK_NVX_device_generated_commands[]
* ename:VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT
* ename:VK_PIPELINE_STAGE_VERTEX_INPUT_BIT
* ename:VK_PIPELINE_STAGE_VERTEX_SHADER_BIT
@ -491,9 +489,6 @@ endif::VK_NVX_device_generated_commands[]
For the compute pipeline, the following stages occur in this order:
* ename:VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT
ifdef::VK_NVX_device_generated_commands[]
* ename:VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX
endif::VK_NVX_device_generated_commands[]
* ename:VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT
* ename:VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT
* ename:VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT
@ -509,6 +504,14 @@ guaranteed:
* ename:VK_PIPELINE_STAGE_HOST_BIT
ifdef::VK_NVX_device_generated_commands[]
For the command processing pipeline, the following stages occur in this
order:
* ename:VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT
* ename:VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX
* ename:VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT
endif::VK_NVX_device_generated_commands[]
[[synchronization-access-types]]
=== Access Types
@ -599,6 +602,12 @@ include::../api/enums/VkAccessFlagBits.txt[]
When included in a destination access mask, makes all available writes
visible to all future write accesses on entities known to the Vulkan
device.
ifdef::VK_NVX_device_generated_commands[]
* ename:VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX: Reads from sname:VkBuffer
inputs to flink:vkCmdProcessCommandsNVX.
* ename:VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX: Writes to the target
command buffer in flink:vkCmdProcessCommandsNVX.
endif::VK_NVX_device_generated_commands[]
Certain access types are only performed by a subset of pipeline stages.
Any synchronization command that takes both stage masks and access masks
@ -633,6 +642,10 @@ perform that type of access.
|ename:VK_ACCESS_HOST_WRITE_BIT | ename:VK_PIPELINE_STAGE_HOST_BIT
|ename:VK_ACCESS_MEMORY_READ_BIT | N/A
|ename:VK_ACCESS_MEMORY_WRITE_BIT | N/A
ifdef::VK_NVX_device_generated_commands[]
|ename:VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX | ename:VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX
|ename:VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX | ename:VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX
endif::VK_NVX_device_generated_commands[]
|====

View File

@ -104,7 +104,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> 36</type>
#define <name>VK_HEADER_VERSION</name> 37</type>
<type category="define">
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
@ -1660,7 +1660,7 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
<member externsync="true"><type>VkObjectTableNVX</type> <name>objectTable</name></member>
<member><type>VkIndirectCommandsLayoutNVX</type> <name>indirectCommandsLayout</name></member>
<member><type>uint32_t</type> <name>indirectCommandsTokenCount</name></member>
<member len="tokenCount">const <type>VkIndirectCommandsTokenNVX</type>* <name>pIndirectCommandsTokens</name></member>
<member len="indirectCommandsTokenCount">const <type>VkIndirectCommandsTokenNVX</type>* <name>pIndirectCommandsTokens</name></member>
<member><type>uint32_t</type> <name>maxSequencesCount</name></member>
<member optional="true" externsync="true"><type>VkCommandBuffer</type> <name>targetCommandBuffer</name></member>
<member optional="true"><type>VkBuffer</type> <name>sequencesCountBuffer</name></member>
@ -2520,6 +2520,10 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
<enum value="26" name="VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT"/>
<enum value="27" name="VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT"/>
<enum value="28" name="VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT"/>
<enum value="29" name="VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT"/>
<enum value="30" name="VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT"/>
<enum value="31" name="VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT"/>
<enum value="32" name="VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT"/>
</enums>
<enums name="VkDebugReportErrorEXT" type="enum">
<enum value="0" name="VK_DEBUG_REPORT_ERROR_NONE_EXT"/> <!-- Used for INFO & other non-error messages -->
@ -4231,7 +4235,7 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
</extension>
<extension name="VK_EXT_debug_report" number="12" type="instance" author="Google, Inc." contact="Courtney Goeltzenleuchter @courtney" supported="vulkan">
<require>
<enum value="3" name="VK_EXT_DEBUG_REPORT_SPEC_VERSION"/>
<enum value="4" name="VK_EXT_DEBUG_REPORT_SPEC_VERSION"/>
<enum value="&quot;VK_EXT_debug_report&quot;" name="VK_EXT_DEBUG_REPORT_EXTENSION_NAME"/>
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT"/>
<enum offset="1" dir="-" extends="VkResult" name="VK_ERROR_VALIDATION_FAILED_EXT"/>
@ -4752,6 +4756,8 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
<enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX"/>
<enum offset="5" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX"/>
<enum bitpos="17" extends="VkPipelineStageFlagBits" name="VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX"/>
<enum bitpos="17" extends="VkAccessFlagBits" name="VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX"/>
<enum bitpos="18" extends="VkAccessFlagBits" name="VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX"/>
<type name="VkObjectTableNVX"/>
<type name="VkIndirectCommandsLayoutNVX"/>
<type name="VkIndirectCommandsLayoutUsageFlagsNVX"/>
@ -4827,5 +4833,71 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
<enum value="&quot;VK_KHR_extension_94&quot;" name="VK_KHR_EXTENSION_94_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_NV_extension_95" number="95" author="NVIDIA" contact="Daniel Koch @dgkoch" supported="disabled">
<require>
<enum value="0" name="VK_NV_EXTENSION_95_SPEC_VERSION"/>
<enum value="&quot;VK_NV_extension_95&quot;" name="VK_NV_EXTENSION_95_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_NV_extension_96" number="96" author="NVIDIA" contact="Daniel Koch @dgkoch" supported="disabled">
<require>
<enum value="0" name="VK_NV_EXTENSION_96_SPEC_VERSION"/>
<enum value="&quot;VK_NV_extension_96&quot;" name="VK_NV_EXTENSION_96_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_NV_extension_97" number="97" author="NVIDIA" contact="Daniel Koch @dgkoch" supported="disabled">
<require>
<enum value="0" name="VK_NV_EXTENSION_97_SPEC_VERSION"/>
<enum value="&quot;VK_NV_extension_97&quot;" name="VK_NV_EXTENSION_97_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_NV_extension_98" number="98" author="NVIDIA" contact="Daniel Koch @dgkoch" supported="disabled">
<require>
<enum value="0" name="VK_NV_EXTENSION_98_SPEC_VERSION"/>
<enum value="&quot;VK_NV_extension_98&quot;" name="VK_NV_EXTENSION_98_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_NV_extension_99" number="99" author="NVIDIA" contact="Daniel Koch @dgkoch" supported="disabled">
<require>
<enum value="0" name="VK_NV_EXTENSION_99_SPEC_VERSION"/>
<enum value="&quot;VK_NV_extension_99&quot;" name="VK_NV_EXTENSION_99_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_NV_extension_100" number="100" author="NVIDIA" contact="Daniel Koch @dgkoch" supported="disabled">
<require>
<enum value="0" name="VK_NV_EXTENSION_100_SPEC_VERSION"/>
<enum value="&quot;VK_NV_extension_100&quot;" name="VK_NV_EXTENSION_100_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_NV_extension_101" number="101" author="NVIDIA" contact="Daniel Koch @dgkoch" supported="disabled">
<require>
<enum value="0" name="VK_NV_EXTENSION_101_SPEC_VERSION"/>
<enum value="&quot;VK_NV_extension_101&quot;" name="VK_NV_EXTENSION_101_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_NV_extension_102" number="102" author="NVIDIA" contact="Daniel Koch @dgkoch" supported="disabled">
<require>
<enum value="0" name="VK_NV_EXTENSION_102_SPEC_VERSION"/>
<enum value="&quot;VK_NV_extension_102&quot;" name="VK_NV_EXTENSION_102_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_NV_extension_103" number="103" author="NVIDIA" contact="Daniel Koch @dgkoch" supported="disabled">
<require>
<enum value="0" name="VK_NV_EXTENSION_103_SPEC_VERSION"/>
<enum value="&quot;VK_NV_extension_103&quot;" name="VK_NV_EXTENSION_103_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_NV_extension_104" number="104" author="NVIDIA" contact="Mathias Schott @mschott" supported="disabled">
<require>
<enum value="0" name="VK_NV_EXTENSION_104_SPEC_VERSION"/>
<enum value="&quot;VK_NV_extension_104&quot;" name="VK_NV_EXTENSION_104_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_EXT_extension_105" number="105" author="GOOGLE" contact="Courtney Goeltzenleuchter @courtneygo" supported="disabled">
<require>
<enum value="0" name="VK_KHR_EXTENSION_105_SPEC_VERSION"/>
<enum value="&quot;VK_EXT_extension_105&quot;" name="VK_KHR_EXTENSION_105_EXTENSION_NAME"/>
</require>
</extension>
</extensions>
</registry>

View File

@ -43,7 +43,7 @@ extern "C" {
#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
// Version of this file
#define VK_HEADER_VERSION 36
#define VK_HEADER_VERSION 37
#define VK_NULL_HANDLE 0
@ -1099,6 +1099,8 @@ typedef enum VkAccessFlagBits {
VK_ACCESS_HOST_WRITE_BIT = 0x00004000,
VK_ACCESS_MEMORY_READ_BIT = 0x00008000,
VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000,
VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX = 0x00020000,
VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX = 0x00040000,
VK_ACCESS_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
} VkAccessFlagBits;
typedef VkFlags VkAccessFlags;
@ -3742,7 +3744,7 @@ VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWin32PresentationSupportKHR(
#define VK_EXT_debug_report 1
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT)
#define VK_EXT_DEBUG_REPORT_SPEC_VERSION 3
#define VK_EXT_DEBUG_REPORT_SPEC_VERSION 4
#define VK_EXT_DEBUG_REPORT_EXTENSION_NAME "VK_EXT_debug_report"
#define VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT
@ -3777,9 +3779,13 @@ typedef enum VkDebugReportObjectTypeEXT {
VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26,
VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27,
VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28,
VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29,
VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30,
VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT = 31,
VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT = 32,
VK_DEBUG_REPORT_OBJECT_TYPE_BEGIN_RANGE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT,
VK_DEBUG_REPORT_OBJECT_TYPE_END_RANGE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT,
VK_DEBUG_REPORT_OBJECT_TYPE_RANGE_SIZE_EXT = (VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT - VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT + 1),
VK_DEBUG_REPORT_OBJECT_TYPE_END_RANGE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT,
VK_DEBUG_REPORT_OBJECT_TYPE_RANGE_SIZE_EXT = (VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT - VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT + 1),
VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
} VkDebugReportObjectTypeEXT;