Change log for October 13, 2018 Vulkan 1.1.88 spec update:
* Update release number to 88. Public Issues: * Make clear that tname:PFN_vkDebugUtilsMessengerCallbackEXT::pname:messageTypes is a bitmask, and correct a typo in the spelling of slink:VkDebugUtilsMessengerCreateInfoEXT.txt::pname:messageType (public pull request 800). * Make an ABI-compatible change of the type of slink:VkPhysicalDeviceDriverPropertiesKHR::pname:driverID to use the new elink:VkDriverIdKHR type (public issue 811). Internal Issues: * Clarify for the <<features-features-shaderStorageImageExtendedFormats>> feature and in the <<spirvenv-capabilities-table>> that the feature means that all of the formats are supported, and that otherwise the features can be queried per-format (internal issue 1273). * Clarified interactions of `VK_EXT_external_memory_host` with host cache management commands and structures flink:vkMapMemory, flink:vkFlushMappedMemoryRanges, slink:VkMappedMemoryRange, and flink:vkUnmapMemory using the new glossary term "`Host Mapped Device Memory`" (internal issue 1385). * Update the language for flink:vkCreateViSurfaceNN.txt describing the pname:currentExtent of a VI surface to more accurately reflect current capabilities, replacing "`undefined`" with more explicit behavior (internal issue 1410). New Extensions: * `VK_EXT_calibrated_timestamps` * `VK_EXT_image_drm_format_modifier` (this extension was previously disabled in vk.xml, and has now been enabled after some changes to fix performance issues). * `VK_EXT_pci_bus_info` * `VK_EXT_transform_feedback` * `VK_GOOGLE_hlsl_functionality1`, exposing support for `SPV_GOOGLE_hlsl_functionality1`. * `VK_GOOGLE_decorate_string`, exposing support for `SPV_GOOGLE_decorate_string`.
This commit is contained in:
parent
ed15235082
commit
0a7a04f32b
|
@ -8,6 +8,52 @@ public pull requests that have been accepted.
|
||||||
|
|
||||||
-----------------------------------------------------
|
-----------------------------------------------------
|
||||||
|
|
||||||
|
Change log for October 13, 2018 Vulkan 1.1.88 spec update:
|
||||||
|
|
||||||
|
* Update release number to 88.
|
||||||
|
|
||||||
|
Public Issues:
|
||||||
|
|
||||||
|
* Make clear that
|
||||||
|
tname:PFN_vkDebugUtilsMessengerCallbackEXT::pname:messageTypes is a
|
||||||
|
bitmask, and correct a typo in the spelling of
|
||||||
|
slink:VkDebugUtilsMessengerCreateInfoEXT.txt::pname:messageType (public
|
||||||
|
pull request 800).
|
||||||
|
* Make an ABI-compatible change of the type of
|
||||||
|
slink:VkPhysicalDeviceDriverPropertiesKHR::pname:driverID to use the new
|
||||||
|
elink:VkDriverIdKHR type (public issue 811).
|
||||||
|
|
||||||
|
Internal Issues:
|
||||||
|
|
||||||
|
* Clarify for the <<features-features-shaderStorageImageExtendedFormats>>
|
||||||
|
feature and in the <<spirvenv-capabilities-table>> that the feature
|
||||||
|
means that all of the formats are supported, and that otherwise the
|
||||||
|
features can be queried per-format (internal issue 1273).
|
||||||
|
* Clarified interactions of `VK_EXT_external_memory_host` with host cache
|
||||||
|
management commands and structures flink:vkMapMemory,
|
||||||
|
flink:vkFlushMappedMemoryRanges, slink:VkMappedMemoryRange, and
|
||||||
|
flink:vkUnmapMemory using the new glossary term "`Host Mapped Device
|
||||||
|
Memory`" (internal issue 1385).
|
||||||
|
* Update the language for flink:vkCreateViSurfaceNN.txt describing the
|
||||||
|
pname:currentExtent of a VI surface to more accurately reflect current
|
||||||
|
capabilities, replacing "`undefined`" with more explicit behavior
|
||||||
|
(internal issue 1410).
|
||||||
|
|
||||||
|
New Extensions:
|
||||||
|
|
||||||
|
* `VK_EXT_calibrated_timestamps`
|
||||||
|
* `VK_EXT_image_drm_format_modifier` (this extension was previously
|
||||||
|
disabled in vk.xml, and has now been enabled after some changes to fix
|
||||||
|
performance issues).
|
||||||
|
* `VK_EXT_pci_bus_info`
|
||||||
|
* `VK_EXT_transform_feedback`
|
||||||
|
* `VK_GOOGLE_hlsl_functionality1`, exposing support for
|
||||||
|
`SPV_GOOGLE_hlsl_functionality1`.
|
||||||
|
* `VK_GOOGLE_decorate_string`, exposing support for
|
||||||
|
`SPV_GOOGLE_decorate_string`.
|
||||||
|
|
||||||
|
-----------------------------------------------------
|
||||||
|
|
||||||
Change log for October 7, 2018 Vulkan 1.1.87 spec update:
|
Change log for October 7, 2018 Vulkan 1.1.87 spec update:
|
||||||
|
|
||||||
* Update release number to 87.
|
* Update release number to 87.
|
||||||
|
|
2
Makefile
2
Makefile
|
@ -112,7 +112,7 @@ VERBOSE =
|
||||||
# EXTRAATTRIBS sets additional attributes, if passed to make
|
# EXTRAATTRIBS sets additional attributes, if passed to make
|
||||||
# ADOCOPTS options for asciidoc->HTML5 output
|
# ADOCOPTS options for asciidoc->HTML5 output
|
||||||
NOTEOPTS = -a editing-notes -a implementation-guide
|
NOTEOPTS = -a editing-notes -a implementation-guide
|
||||||
PATCHVERSION = 87
|
PATCHVERSION = 88
|
||||||
ifneq (,$(findstring VK_VERSION_1_1,$(VERSIONS)))
|
ifneq (,$(findstring VK_VERSION_1_1,$(VERSIONS)))
|
||||||
SPECREVISION = 1.1.$(PATCHVERSION)
|
SPECREVISION = 1.1.$(PATCHVERSION)
|
||||||
else
|
else
|
||||||
|
|
|
@ -0,0 +1,114 @@
|
||||||
|
include::meta//VK_EXT_calibrated_timestamps.txt[]
|
||||||
|
|
||||||
|
*Last Modified Date*::
|
||||||
|
2018-10-04
|
||||||
|
*IP Status*::
|
||||||
|
No known IP claims.
|
||||||
|
*Contributors*::
|
||||||
|
- Matthaeus G. Chajdas, AMD
|
||||||
|
- Alan Harrison, AMD
|
||||||
|
- Derrick Owens, AMD
|
||||||
|
- Daniel Rakos, AMD
|
||||||
|
- Keith Packard, Valve
|
||||||
|
|
||||||
|
This extension provides an interface to query calibrated timestamps obtained
|
||||||
|
quasi simultaneously from two time domains.
|
||||||
|
|
||||||
|
=== New Object Types
|
||||||
|
|
||||||
|
None.
|
||||||
|
|
||||||
|
=== New Enum Constants
|
||||||
|
|
||||||
|
* Extending elink:VkStructureType:
|
||||||
|
** ename:VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT
|
||||||
|
|
||||||
|
=== New Enums
|
||||||
|
|
||||||
|
* elink:VkTimeDomainEXT
|
||||||
|
|
||||||
|
=== New Structures
|
||||||
|
|
||||||
|
* slink:VkCalibratedTimestampInfoEXT
|
||||||
|
|
||||||
|
=== New Functions
|
||||||
|
|
||||||
|
* flink:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT
|
||||||
|
* flink:vkGetCalibratedTimestampsEXT
|
||||||
|
|
||||||
|
=== Issues
|
||||||
|
|
||||||
|
1) Is the device timestamp value returned in the same time domain as the
|
||||||
|
timestamp values written by flink:vkCmdWriteTimestamp?
|
||||||
|
|
||||||
|
*RESOLVED*: Yes.
|
||||||
|
|
||||||
|
2) What time domain is the host timestamp returned in?
|
||||||
|
|
||||||
|
*RESOLVED*: A query is provided to determine the calibrateable time domains.
|
||||||
|
The expected host time domain used on Windows is that of
|
||||||
|
QueryPerformanceCounter, and on Linux that of CLOCK_MONOTONIC.
|
||||||
|
|
||||||
|
3) Should we support other time domain combinations than just one host and
|
||||||
|
the device time domain?
|
||||||
|
|
||||||
|
*RESOLVED*: Supporting that would need the application to query the set of
|
||||||
|
supported time domains, while supporting only one host and the device time
|
||||||
|
domain would only need a query for the host time domain type.
|
||||||
|
The proposed API chooses the general approach for the sake of extensibility.
|
||||||
|
|
||||||
|
4) Shouldn't we use CLOCK_MONOTONIC_RAW instead of CLOCK_MONOTONIC?
|
||||||
|
|
||||||
|
*RESOLVED*: CLOCK_MONOTONIC is usable in a wider set of situations, however,
|
||||||
|
it is subject to NTP adjustments so some use cases may prefer
|
||||||
|
CLOCK_MONOTONIC_RAW.
|
||||||
|
Thus this extension allows both to be exposed.
|
||||||
|
|
||||||
|
5) How can the application extrapolate future device timestamp values from
|
||||||
|
the calibrated timestamp value?
|
||||||
|
|
||||||
|
*RESOLVED*: slink:VkPhysicalDeviceLimits::pname:timestampPeriod makes it
|
||||||
|
possible to calculate future device timestamps as follows:
|
||||||
|
|
||||||
|
[source,c]
|
||||||
|
---------------------------------------------------
|
||||||
|
futureTimestamp = calibratedTimestamp + deltaNanoseconds / timestampPeriod
|
||||||
|
---------------------------------------------------
|
||||||
|
|
||||||
|
6) Can the host and device timestamp values drift apart over longer periods
|
||||||
|
of time?
|
||||||
|
|
||||||
|
*RESOLVED*: Yes, especially as some time domains by definition allow for
|
||||||
|
that to happen (e.g. CLOCK_MONOTONIC is subject to NTP adjustments).
|
||||||
|
Thus it's recommended that applications re-calibrate from time to time.
|
||||||
|
|
||||||
|
7) Should we add a query for reporting the maximum deviation of the
|
||||||
|
timestamp values returned by calibrated timestamp queries?
|
||||||
|
|
||||||
|
*RESOLVED*: A global query seems inappropriate and difficult to enforce.
|
||||||
|
However, it's possible to return the maximum deviation any single calibrated
|
||||||
|
timestamp query can have by sampling one of the time domains twice as
|
||||||
|
follows:
|
||||||
|
|
||||||
|
[source,c]
|
||||||
|
---------------------------------------------------
|
||||||
|
timestampX = timestampX_before = SampleTimeDomain(X)
|
||||||
|
for each time domain Y != X
|
||||||
|
timestampY = SampleTimeDomain(Y)
|
||||||
|
timestampX_after = SampleTimeDomain(X)
|
||||||
|
maxDeviation = timestampX_after - timestampX_before
|
||||||
|
---------------------------------------------------
|
||||||
|
|
||||||
|
8) Can the maximum deviation reported ever be zero?
|
||||||
|
|
||||||
|
*RESOLVED*: Unless the tick of each clock corresponding to the set of time
|
||||||
|
domains coincides and all clocks can literally be sampled simutaneously,
|
||||||
|
there isn't really a possibility for the maximum deviation to be zero, so by
|
||||||
|
convention the maximum deviation is always at least the maximum of the
|
||||||
|
length of the ticks of the set of time domains calibrated and thus can never
|
||||||
|
be zero.
|
||||||
|
|
||||||
|
=== Version History
|
||||||
|
|
||||||
|
* Revision 1, 2018-10-04 (Daniel Rakos)
|
||||||
|
- Internal revisions.
|
|
@ -47,7 +47,7 @@ None
|
||||||
|
|
||||||
=== Examples
|
=== Examples
|
||||||
|
|
||||||
**Example 1**
|
*Example 1*
|
||||||
|
|
||||||
Associate a name with an image, for easier debugging in external tools or
|
Associate a name with an image, for easier debugging in external tools or
|
||||||
with validation layers that can print a friendly name when referring to
|
with validation layers that can print a friendly name when referring to
|
||||||
|
@ -78,7 +78,7 @@ objects in error messages.
|
||||||
// command buffer with no memory bound to it.
|
// command buffer with no memory bound to it.
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
|
|
||||||
**Example 2**
|
*Example 2*
|
||||||
|
|
||||||
Annotating regions of a workload with naming information so that offline
|
Annotating regions of a workload with naming information so that offline
|
||||||
analysis tools can display a more usable visualisation of the commands
|
analysis tools can display a more usable visualisation of the commands
|
||||||
|
|
|
@ -107,7 +107,7 @@ VkCommandBuffer the message occurred.
|
||||||
|
|
||||||
=== Examples
|
=== Examples
|
||||||
|
|
||||||
**Example 1**
|
*Example 1*
|
||||||
|
|
||||||
`VK_EXT_debug_utils` allows an application to register multiple callbacks
|
`VK_EXT_debug_utils` allows an application to register multiple callbacks
|
||||||
with any Vulkan component wishing to report debug information.
|
with any Vulkan component wishing to report debug information.
|
||||||
|
@ -188,7 +188,7 @@ happens and the third will log warnings to stdout.
|
||||||
pfnDestroyDebugUtilsMessengerEXT(instance, cb3, NULL);
|
pfnDestroyDebugUtilsMessengerEXT(instance, cb3, NULL);
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
**Example 2**
|
*Example 2*
|
||||||
|
|
||||||
Associate a name with an image, for easier debugging in external tools or
|
Associate a name with an image, for easier debugging in external tools or
|
||||||
with validation layers that can print a friendly name when referring to
|
with validation layers that can print a friendly name when referring to
|
||||||
|
@ -219,7 +219,7 @@ objects in error messages.
|
||||||
// command buffer with no memory bound to it.
|
// command buffer with no memory bound to it.
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
|
|
||||||
**Example 3**
|
*Example 3*
|
||||||
|
|
||||||
Annotating regions of a workload with naming information so that offline
|
Annotating regions of a workload with naming information so that offline
|
||||||
analysis tools can display a more usable visualization of the commands
|
analysis tools can display a more usable visualization of the commands
|
||||||
|
|
|
@ -10,6 +10,7 @@ include::meta/VK_EXT_image_drm_format_modifier.txt[]
|
||||||
No known IP claims.
|
No known IP claims.
|
||||||
*Contributors*::
|
*Contributors*::
|
||||||
- Antoine Labour, Google
|
- Antoine Labour, Google
|
||||||
|
- Bas Nieuwenhuizen, Google
|
||||||
- Chad Versace, Google
|
- Chad Versace, Google
|
||||||
- James Jones, NVIDIA
|
- James Jones, NVIDIA
|
||||||
- Jason Ekstrand, Intel
|
- Jason Ekstrand, Intel
|
||||||
|
|
|
@ -0,0 +1,57 @@
|
||||||
|
include::meta/VK_EXT_pci_bus_info.txt[]
|
||||||
|
|
||||||
|
*Last Modified Date*::
|
||||||
|
2018-10-11
|
||||||
|
*IP Status*::
|
||||||
|
No known IP claims.
|
||||||
|
*Contributors*::
|
||||||
|
- Matthaeus G. Chajdas, AMD
|
||||||
|
- Daniel Rakos, AMD
|
||||||
|
|
||||||
|
This extension adds a new query to obtain PCI bus information about a
|
||||||
|
physical device.
|
||||||
|
|
||||||
|
Not all physical devices have PCI bus information, either due to the device
|
||||||
|
not being connected to the system through a PCI interface or due to platform
|
||||||
|
specific restrictions and policies.
|
||||||
|
Thus this extension is only expected to be supported by physical devices
|
||||||
|
which can provide the information.
|
||||||
|
|
||||||
|
As a consequence, applications should always check for the presence of the
|
||||||
|
extension string for each individual physical device for which they intend
|
||||||
|
to issue the new query for and should not have any assumptions about the
|
||||||
|
availability of the extension on any given platform.
|
||||||
|
|
||||||
|
=== New Object Types
|
||||||
|
|
||||||
|
None.
|
||||||
|
|
||||||
|
=== New Enum Constants
|
||||||
|
|
||||||
|
* Extending elink:VkStructureType:
|
||||||
|
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT
|
||||||
|
|
||||||
|
=== New Enums
|
||||||
|
|
||||||
|
None.
|
||||||
|
|
||||||
|
=== New Structures
|
||||||
|
|
||||||
|
* slink:VkPhysicalDevicePCIBusInfoPropertiesEXT
|
||||||
|
|
||||||
|
=== New Functions
|
||||||
|
|
||||||
|
None.
|
||||||
|
|
||||||
|
=== Issues
|
||||||
|
|
||||||
|
None.
|
||||||
|
|
||||||
|
=== Examples
|
||||||
|
|
||||||
|
None.
|
||||||
|
|
||||||
|
=== Version History
|
||||||
|
|
||||||
|
* Revision 1, 2018-10-11 (Daniel Rakos)
|
||||||
|
- Initial revision
|
|
@ -0,0 +1,141 @@
|
||||||
|
include::meta/VK_EXT_transform_feedback.txt[]
|
||||||
|
|
||||||
|
*Last Modified Data*::
|
||||||
|
2018-10-09
|
||||||
|
*Contributors*::
|
||||||
|
- Baldur Karlsson, Valve
|
||||||
|
- Boris Zanin, Mobica
|
||||||
|
- Daniel Rakos, AMD
|
||||||
|
- Donald Scorgie, Imagination
|
||||||
|
- Henri Verbeet, CodeWeavers
|
||||||
|
- Jan-Harald Fredriksen, Arm
|
||||||
|
- Jason Ekstrand, Intel
|
||||||
|
- Jeff Bolz, NVIDIA
|
||||||
|
- Jesse Barker, Unity
|
||||||
|
- Jesse Hall, Google
|
||||||
|
- Pierre-Loup Griffais, Valve
|
||||||
|
- Philip Rebohle, DXVK
|
||||||
|
- Ruihao Zhang, Qualcomm
|
||||||
|
- Samuel Pitoiset, Valve
|
||||||
|
- Slawomir Grajewski, Intel
|
||||||
|
- Stu Smith, Imagination Technologies
|
||||||
|
|
||||||
|
|
||||||
|
This extension adds transform feedback to the Vulkan API by exposing the
|
||||||
|
SPIR-V code:TransformFeedback and code:GeometryStreams capabilities to
|
||||||
|
capture vertex, tessellation or geometry shader outputs to one or more
|
||||||
|
buffers.
|
||||||
|
It adds API functionality to bind transform feedback buffers to capture the
|
||||||
|
primitives emitted by the graphics pipeline from SPIR-V outputs decorated
|
||||||
|
for transform feedback.
|
||||||
|
The transform feedback capture can be paused and resumed by way of storing
|
||||||
|
and retrieving a byte counter.
|
||||||
|
The captured data can be drawn again where the vertex count is derived from
|
||||||
|
the byte counter without CPU intervention.
|
||||||
|
If the implementation is capable, a vertex stream other than zero can be
|
||||||
|
rasterized.
|
||||||
|
|
||||||
|
All these features are designed to match the full capabilities of OpenGL
|
||||||
|
core transform feedback functionality and beyond.
|
||||||
|
Many of the features are optional to allow base OpenGL ES GPUs to also
|
||||||
|
implement this extension.
|
||||||
|
|
||||||
|
The primary purpose of the functionality exposed by this extension is to
|
||||||
|
support translation layers from other 3D APIs.
|
||||||
|
This functionality is not considered forward looking, and is not expected to
|
||||||
|
be promoted to a KHR extension or to core Vulkan.
|
||||||
|
Unless this is needed for translation, it is recommended that developers use
|
||||||
|
alternative techniques of using the GPU to process and capture vertex data.
|
||||||
|
|
||||||
|
=== New Object Types
|
||||||
|
|
||||||
|
None.
|
||||||
|
|
||||||
|
=== New Enum Constants
|
||||||
|
|
||||||
|
* Extending elink:VkStructureType:
|
||||||
|
|
||||||
|
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT
|
||||||
|
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT
|
||||||
|
** ename:VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT
|
||||||
|
|
||||||
|
* Extending elink:VkQueryType:
|
||||||
|
|
||||||
|
** ename:VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT
|
||||||
|
|
||||||
|
* Extending elink:VkBufferUsageFlagBits:
|
||||||
|
|
||||||
|
** ename:VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT
|
||||||
|
** ename:VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT
|
||||||
|
|
||||||
|
* Extending elink:VkAccessFlagBits:
|
||||||
|
|
||||||
|
** ename:VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT
|
||||||
|
** ename:VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT
|
||||||
|
** ename:VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT
|
||||||
|
|
||||||
|
* Extending elink:VkPipelineStageFlagBits:
|
||||||
|
|
||||||
|
** ename:VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT
|
||||||
|
|
||||||
|
=== New Enums
|
||||||
|
|
||||||
|
* elink:VkPipelineRasterizationStateStreamCreateFlagsEXT
|
||||||
|
|
||||||
|
=== New Structures
|
||||||
|
|
||||||
|
* Extending slink:VkPhysicalDeviceFeatures2:
|
||||||
|
** slink:VkPhysicalDeviceTransformFeedbackFeaturesEXT
|
||||||
|
* Extending slink:VkPhysicalDeviceProperties2:
|
||||||
|
** slink:VkPhysicalDeviceTransformFeedbackPropertiesEXT
|
||||||
|
* Extending slink:VkPipelineRasterizationStateCreateInfo
|
||||||
|
** slink:VkPipelineRasterizationStateStreamCreateInfoEXT
|
||||||
|
|
||||||
|
=== New Functions
|
||||||
|
|
||||||
|
* flink:vkCmdBindTransformFeedbackBuffersEXT
|
||||||
|
* flink:vkCmdBeginTransformFeedbackEXT
|
||||||
|
* flink:vkCmdEndTransformFeedbackEXT
|
||||||
|
* flink:vkCmdBeginQueryIndexedEXT
|
||||||
|
* flink:vkCmdEndQueryIndexedEXT
|
||||||
|
* flink:vkCmdDrawIndirectByteCountEXT
|
||||||
|
|
||||||
|
=== Issues
|
||||||
|
|
||||||
|
1) Should we include pause/resume functionality?
|
||||||
|
|
||||||
|
*RESOLVED*: Yes, this is needed to ease layering other APIs which have this
|
||||||
|
functionality.
|
||||||
|
To pause use fname:vkCmdEndTransformFeedbackEXT and provide valid buffer
|
||||||
|
handles in the pname:pCounterBuffers array and offsets in the
|
||||||
|
pname:pCounterBufferOffsets array for the implementation to save the resume
|
||||||
|
points.
|
||||||
|
Then to resume use fname:vkCmdBeginTransformFeedbackEXT with the previous
|
||||||
|
pname:pCounterBuffers and pname:pCounterBufferOffsets values.
|
||||||
|
Between the pause and resume there needs to be a memory barrier for the
|
||||||
|
counter buffers with a source access of
|
||||||
|
ename:VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT at pipeline stage
|
||||||
|
ename:VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT to a destination access
|
||||||
|
of ename:VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT at pipeline stage
|
||||||
|
ename:VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT.
|
||||||
|
|
||||||
|
2) How does this interact with multiview?
|
||||||
|
|
||||||
|
*RESOLVED*: Transform feedback cannot be made active in a render pass with
|
||||||
|
multiview enabled.
|
||||||
|
|
||||||
|
3) How should queries be done?
|
||||||
|
|
||||||
|
*RESOLVED*: There is a new query type
|
||||||
|
ename:VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT.
|
||||||
|
query pool created with this type will capture 2 integers -
|
||||||
|
numPrimitivesWritten and numPrimitivesNeeded - for the specified vertex
|
||||||
|
stream output from the last vertex processing stage.
|
||||||
|
The vertex stream output queried is zero by default, but can be specified
|
||||||
|
with the new fname:vkCmdBeginQueryIndexedEXT and
|
||||||
|
fname:vkCmdEndQueryIndexedEXT commands.
|
||||||
|
|
||||||
|
=== Version History
|
||||||
|
|
||||||
|
* Revision 1, 2018-10-09 (Piers Daniell)
|
||||||
|
- Internal revisions
|
|
@ -0,0 +1,35 @@
|
||||||
|
include::meta/VK_GOOGLE_decorate_string.txt[]
|
||||||
|
|
||||||
|
*Last Modified Date*::
|
||||||
|
2018-07-09
|
||||||
|
*IP Status*::
|
||||||
|
No known IP claims.
|
||||||
|
*Interactions and External Dependencies*::
|
||||||
|
- Requires the
|
||||||
|
https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/GOOGLE/SPV_GOOGLE_decorate_string.asciidoc[+SPV_GOOGLE_decorate_string+]
|
||||||
|
SPIR-V extension.
|
||||||
|
*Contributors*::
|
||||||
|
- Hai Nguyen, Google
|
||||||
|
- Neil Henning, AMD
|
||||||
|
|
||||||
|
The `VK_GOOGLE_decorate_string` extension allows use of the
|
||||||
|
`SPV_GOOGLE_decorate_string` extension in SPIR-V shader modules.
|
||||||
|
|
||||||
|
=== New Enum Constants
|
||||||
|
|
||||||
|
None.
|
||||||
|
|
||||||
|
=== New Structures
|
||||||
|
|
||||||
|
None.
|
||||||
|
|
||||||
|
=== New SPIR-V Capabilities
|
||||||
|
|
||||||
|
None.
|
||||||
|
|
||||||
|
=== Issues
|
||||||
|
|
||||||
|
=== Version History
|
||||||
|
|
||||||
|
* Revision 1, 2018-07-09 (Neil Henning)
|
||||||
|
- Initial draft
|
|
@ -0,0 +1,35 @@
|
||||||
|
include::meta/VK_GOOGLE_hlsl_functionality1.txt[]
|
||||||
|
|
||||||
|
*Last Modified Date*::
|
||||||
|
2018-07-09
|
||||||
|
*IP Status*::
|
||||||
|
No known IP claims.
|
||||||
|
*Interactions and External Dependencies*::
|
||||||
|
- Requires the
|
||||||
|
https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/GOOGLE/SPV_GOOGLE_hlsl_functionality1.asciidoc[+SPV_GOOGLE_hlsl_functionality1+]
|
||||||
|
SPIR-V extension.
|
||||||
|
*Contributors*::
|
||||||
|
- Hai Nguyen, Google
|
||||||
|
- Neil Henning, AMD
|
||||||
|
|
||||||
|
The `VK_GOOGLE_hlsl_functionality1` extension allows use of the
|
||||||
|
`SPV_GOOGLE_hlsl_functionality1` extension in SPIR-V shader modules.
|
||||||
|
|
||||||
|
=== New Enum Constants
|
||||||
|
|
||||||
|
None.
|
||||||
|
|
||||||
|
=== New Structures
|
||||||
|
|
||||||
|
None.
|
||||||
|
|
||||||
|
=== New SPIR-V Capabilities
|
||||||
|
|
||||||
|
None.
|
||||||
|
|
||||||
|
=== Issues
|
||||||
|
|
||||||
|
=== Version History
|
||||||
|
|
||||||
|
* Revision 1, 2018-07-09 (Neil Henning)
|
||||||
|
- Initial draft
|
|
@ -29,7 +29,7 @@ GLSL, and compile it appropriately.
|
||||||
|
|
||||||
=== Examples
|
=== Examples
|
||||||
|
|
||||||
**Example 1**
|
*Example 1*
|
||||||
|
|
||||||
Passing in GLSL code
|
Passing in GLSL code
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,17 @@ Acquire Operation (Resource)::
|
||||||
An operation that acquires ownership of an image subresource or buffer
|
An operation that acquires ownership of an image subresource or buffer
|
||||||
range.
|
range.
|
||||||
|
|
||||||
|
ifdef::VK_EXT_transform_feedback[]
|
||||||
|
Active (Transform Feedback)::
|
||||||
|
Transform feedback is made active after
|
||||||
|
flink:vkCmdBeginTransformFeedbackEXT executes and remains active until
|
||||||
|
flink:vkCmdEndTransformFeedbackEXT executes.
|
||||||
|
While transform feedback is active, data written to variables in the
|
||||||
|
output interface of the last vertex processing stage of the graphics
|
||||||
|
pipeline are captured to the bound transform feedback buffers if those
|
||||||
|
variables are decorated for transform feedback.
|
||||||
|
endif::VK_EXT_transform_feedback[]
|
||||||
|
|
||||||
Adjacent Vertex::
|
Adjacent Vertex::
|
||||||
A vertex in an adjacency primitive topology that is not part of a given
|
A vertex in an adjacency primitive topology that is not part of a given
|
||||||
primitive, but is accessible in geometry shaders.
|
primitive, but is accessible in geometry shaders.
|
||||||
|
@ -582,6 +593,9 @@ Host::
|
||||||
The processor(s) and execution environment that the application runs on,
|
The processor(s) and execution environment that the application runs on,
|
||||||
and that the Vulkan API is exposed on.
|
and that the Vulkan API is exposed on.
|
||||||
|
|
||||||
|
Host Mapped Device Memory::
|
||||||
|
Device memory that is mapped for host access using flink:vkMapMemory.
|
||||||
|
|
||||||
ifdef::VK_EXT_external_memory_host[]
|
ifdef::VK_EXT_external_memory_host[]
|
||||||
Host Mapped Foreign Memory::
|
Host Mapped Foreign Memory::
|
||||||
Memory owned by a foreign device that is mapped for host access.
|
Memory owned by a foreign device that is mapped for host access.
|
||||||
|
@ -1429,6 +1443,17 @@ Vertex Input Attribute::
|
||||||
shader by reading data from a vertex input binding and converting it to
|
shader by reading data from a vertex input binding and converting it to
|
||||||
the attribute's format.
|
the attribute's format.
|
||||||
|
|
||||||
|
ifdef::VK_EXT_transform_feedback[]
|
||||||
|
Vertex Stream::
|
||||||
|
A vertex stream is where the last vertex processing stage outputs vertex
|
||||||
|
data, which then goes to the rasterizer, is captured to a transform
|
||||||
|
feedback buffer, or both.
|
||||||
|
Geometry shaders can: emit primitives to multiple independent vertex
|
||||||
|
streams.
|
||||||
|
Each vertex emitted by the geometry shader is directed at one of the
|
||||||
|
vertex streams.
|
||||||
|
endif::VK_EXT_transform_feedback[]
|
||||||
|
|
||||||
ifdef::VK_EXT_validation_cache[]
|
ifdef::VK_EXT_validation_cache[]
|
||||||
Validation Cache::
|
Validation Cache::
|
||||||
An object that can: be used to collect and retrieve validation results
|
An object that can: be used to collect and retrieve validation results
|
||||||
|
|
|
@ -81,7 +81,7 @@ endif::VK_KHR_shader_atomic_int64[]
|
||||||
| code:MinLod | <<features-features-shaderResourceMinLod,shaderResourceMinLod>>
|
| code:MinLod | <<features-features-shaderResourceMinLod,shaderResourceMinLod>>
|
||||||
| code:SampledCubeArray | <<features-features-imageCubeArray,imageCubeArray>>
|
| code:SampledCubeArray | <<features-features-imageCubeArray,imageCubeArray>>
|
||||||
| code:ImageMSArray | <<features-features-shaderStorageImageMultisample,shaderStorageImageMultisample>>
|
| code:ImageMSArray | <<features-features-shaderStorageImageMultisample,shaderStorageImageMultisample>>
|
||||||
| code:StorageImageExtendedFormats | <<features-features-shaderStorageImageExtendedFormats,shaderStorageImageExtendedFormats>>
|
| code:StorageImageExtendedFormats |
|
||||||
| code:InterpolationFunction | <<features-features-sampleRateShading,sampleRateShading>>
|
| code:InterpolationFunction | <<features-features-sampleRateShading,sampleRateShading>>
|
||||||
| code:StorageImageReadWithoutFormat | <<features-features-shaderStorageImageReadWithoutFormat,shaderStorageImageReadWithoutFormat>>
|
| code:StorageImageReadWithoutFormat | <<features-features-shaderStorageImageReadWithoutFormat,shaderStorageImageReadWithoutFormat>>
|
||||||
| code:StorageImageWriteWithoutFormat | <<features-features-shaderStorageImageWriteWithoutFormat,shaderStorageImageWriteWithoutFormat>>
|
| code:StorageImageWriteWithoutFormat | <<features-features-shaderStorageImageWriteWithoutFormat,shaderStorageImageWriteWithoutFormat>>
|
||||||
|
@ -240,6 +240,10 @@ ifdef::VK_NVX_raytracing[]
|
||||||
[[spirvenv-capabilities-table-raytracing]]
|
[[spirvenv-capabilities-table-raytracing]]
|
||||||
| code:RaytracingNVX | `<<VK_NVX_raytracing>>`
|
| code:RaytracingNVX | `<<VK_NVX_raytracing>>`
|
||||||
endif::VK_NVX_raytracing[]
|
endif::VK_NVX_raytracing[]
|
||||||
|
ifdef::VK_EXT_transform_feedback[]
|
||||||
|
| code:TransformFeedback | <<features-features-transformFeedback,transformFeedback>>
|
||||||
|
| code:GeometryStreams | <<features-features-geometryStreams,geometryStreams>>
|
||||||
|
endif::VK_EXT_transform_feedback[]
|
||||||
|====
|
|====
|
||||||
|
|
||||||
ifdef::VK_VERSION_1_1,VK_KHR_variable_pointers[]
|
ifdef::VK_VERSION_1_1,VK_KHR_variable_pointers[]
|
||||||
|
@ -401,6 +405,16 @@ The application can: pass a SPIR-V module to flink:vkCreateShaderModule that
|
||||||
uses the `SPV_NVX_raytracing` SPIR-V extension.
|
uses the `SPV_NVX_raytracing` SPIR-V extension.
|
||||||
endif::VK_NVX_raytracing[]
|
endif::VK_NVX_raytracing[]
|
||||||
|
|
||||||
|
ifdef::VK_GOOGLE_hlsl_functionality1[]
|
||||||
|
The application can: pass a SPIR-V module to flink:vkCreateShaderModule that
|
||||||
|
uses the `SPV_GOOGLE_hlsl_functionality1` SPIR-V extension.
|
||||||
|
endif::VK_GOOGLE_hlsl_functionality1[]
|
||||||
|
|
||||||
|
ifdef::VK_GOOGLE_decorate_string[]
|
||||||
|
The application can: pass a SPIR-V module to flink:vkCreateShaderModule that
|
||||||
|
uses the `SPV_GOOGLE_decorate_string` SPIR-V extension.
|
||||||
|
endif::VK_GOOGLE_decorate_string[]
|
||||||
|
|
||||||
The application must: not pass a SPIR-V module containing any of the
|
The application must: not pass a SPIR-V module containing any of the
|
||||||
following to flink:vkCreateShaderModule:
|
following to flink:vkCreateShaderModule:
|
||||||
|
|
||||||
|
@ -625,7 +639,64 @@ ifdef::VK_EXT_descriptor_indexing[]
|
||||||
(e.g. the pointer or sampled image operand) must: be decorated with
|
(e.g. the pointer or sampled image operand) must: be decorated with
|
||||||
code:NonUniformEXT.
|
code:NonUniformEXT.
|
||||||
endif::VK_EXT_descriptor_indexing[]
|
endif::VK_EXT_descriptor_indexing[]
|
||||||
|
ifdef::VK_EXT_transform_feedback[]
|
||||||
|
* The code:Offset plus size of the type of each variable, in the output
|
||||||
|
interface of the entry point being compiled, decorated with
|
||||||
|
code:XfbBuffer must: not be greater than
|
||||||
|
sname:VkPhysicalDeviceTransformFeedbackPropertiesEXT::pname:maxTransformFeedbackBufferDataSize
|
||||||
|
* For any given code:XfbBuffer value, define the buffer data size to be
|
||||||
|
smallest number of bytes such that, for all outputs decorated with the
|
||||||
|
same code:XfbBuffer value, the size of the output interface variable
|
||||||
|
plus the code:Offset is less than or equal to the buffer data size.
|
||||||
|
For a given code:Stream, the sum of all the buffer data sizes for all
|
||||||
|
buffers writing to that stream the must: not exceed
|
||||||
|
sname:VkPhysicalDeviceTransformFeedbackPropertiesEXT::pname:maxTransformFeedbackStreamDataSize
|
||||||
|
* Output variables or block members decorated with code:Offset that have a
|
||||||
|
64-bit type, or a composite type containing a 64-bit type, must: specify
|
||||||
|
an code:Offset value aligned to a 8 byte boundary
|
||||||
|
* Any output block or block member decorated with code:XfbOffset
|
||||||
|
containing a 64-bit type consumes a multiple of 8 bytes
|
||||||
|
* The size of any output block, that contains any member decorated with
|
||||||
|
code:Offset that is a 64-bit type, must: be a multiple of 8
|
||||||
|
* The first member of an output block that specifies a code:Offset
|
||||||
|
decoration must: specify a code:Offset value that is aligned to an 8
|
||||||
|
byte boundary if that block contains any member decorated with
|
||||||
|
code:Offset and is a 64-bit type
|
||||||
|
* Output variables or block members decorated with code:Offset that have a
|
||||||
|
32-bit type, or a composite type contains a 32-bit type, must: specify
|
||||||
|
an code:Offset value aligned to a 4 byte boundary
|
||||||
|
* Output variables, blocks or block members decorated with code:Offset
|
||||||
|
must: only contain base types that have components that are either
|
||||||
|
32-bit or 64-bit in size
|
||||||
|
* The Stream value to code:OpEmitStreamVertex and
|
||||||
|
code:OpEndStreamPrimitive must: be less than
|
||||||
|
sname:VkPhysicalDeviceTransformFeedbackPropertiesEXT::pname:maxTransformFeedbackStreams
|
||||||
|
* If the geometry shader emits to more than one vertex stream and
|
||||||
|
sname:VkPhysicalDeviceTransformFeedbackPropertiesEXT::pname:transformFeedbackStreamsLinesTriangles
|
||||||
|
is ename:VK_FALSE, then execution mode must: be code:OutputPoints
|
||||||
|
* Only variables or block members in the output interface decorated with
|
||||||
|
code:Offset can: be captured for transform feedback, and those variables
|
||||||
|
or block memebers must: also be decorated with code:XfbBuffer and
|
||||||
|
code:XfbStride, or inherit code:XfbBuffer and code:XfbStride decorations
|
||||||
|
from a block that contains them
|
||||||
|
* All variables or block members in the output interface of the entry
|
||||||
|
point being compiled decorated with a specific code:XfbBuffer value
|
||||||
|
must: all be decorated with identical code:XfbStride values
|
||||||
|
* If any variables or block members in the output interface of the entry
|
||||||
|
point being compiled are decorated with code:Stream, then all variables
|
||||||
|
belonging to the same code:XfbBuffer must specify the same code:Stream
|
||||||
|
value
|
||||||
|
* Output variables, blocks or block members that are not decorated with
|
||||||
|
code:Stream default to vertex stream zero
|
||||||
|
* For any two variables or block members in the output interface of the
|
||||||
|
entry point being compiled with the same code:XfbBuffer value, the
|
||||||
|
ranges determined by the code:Offset decoration and the size of the type
|
||||||
|
must: not overlap
|
||||||
|
* The stream number value to code:Stream must: be less than
|
||||||
|
sname:VkPhysicalDeviceTransformFeedbackPropertiesEXT::pname:maxTransformFeedbackStreams
|
||||||
|
* The XFB Stride value to code:XfbStride must be less than or equal to
|
||||||
|
sname:VkPhysicalDeviceTransformFeedbackPropertiesEXT::pname:maxTransformFeedbackBufferDataStride
|
||||||
|
endif::VK_EXT_transform_feedback[]
|
||||||
|
|
||||||
[[spirvenv-precision-operation]]
|
[[spirvenv-precision-operation]]
|
||||||
== Precision and Operation of SPIR-V Instructions
|
== Precision and Operation of SPIR-V Instructions
|
||||||
|
|
|
@ -156,9 +156,9 @@ layer-specified manner.
|
||||||
The application should: always return ename:VK_FALSE.
|
The application should: always return ename:VK_FALSE.
|
||||||
The ename:VK_TRUE value is reserved for use in layer development.
|
The ename:VK_TRUE value is reserved for use in layer development.
|
||||||
|
|
||||||
pname:object must: be a Vulkan object or ename:VK_NULL_HANDLE.
|
pname:object must: be a Vulkan object or dlink:VK_NULL_HANDLE.
|
||||||
If pname:objectType is not ename:VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT and
|
If pname:objectType is not ename:VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT and
|
||||||
pname:object is not ename:VK_NULL_HANDLE, pname:object must: be a Vulkan
|
pname:object is not dlink:VK_NULL_HANDLE, pname:object must: be a Vulkan
|
||||||
object of the corresponding type associated with pname:objectType as defined
|
object of the corresponding type associated with pname:objectType as defined
|
||||||
in <<debug-report-object-types>>.
|
in <<debug-report-object-types>>.
|
||||||
--
|
--
|
||||||
|
@ -254,7 +254,7 @@ include::../api/protos/vkDebugReportMessageEXT.txt[]
|
||||||
type of object being used or created at the time the event was
|
type of object being used or created at the time the event was
|
||||||
triggered.
|
triggered.
|
||||||
* pname:object this is the object where the issue was detected.
|
* pname:object this is the object where the issue was detected.
|
||||||
pname:object can: be ename:VK_NULL_HANDLE if there is no object
|
pname:object can: be dlink:VK_NULL_HANDLE if there is no object
|
||||||
associated with the event.
|
associated with the event.
|
||||||
* pname:location is an application defined value.
|
* pname:location is an application defined value.
|
||||||
* pname:messageCode is an application defined value.
|
* pname:messageCode is an application defined value.
|
||||||
|
@ -272,10 +272,10 @@ registered.
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
* [[VUID-vkDebugReportMessageEXT-object-01241]]
|
* [[VUID-vkDebugReportMessageEXT-object-01241]]
|
||||||
pname:object must: be a Vulkan object or ename:VK_NULL_HANDLE
|
pname:object must: be a Vulkan object or dlink:VK_NULL_HANDLE
|
||||||
* [[VUID-vkDebugReportMessageEXT-objectType-01498]]
|
* [[VUID-vkDebugReportMessageEXT-objectType-01498]]
|
||||||
If pname:objectType is not ename:VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT
|
If pname:objectType is not ename:VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT
|
||||||
and pname:object is not ename:VK_NULL_HANDLE, pname:object must: be a
|
and pname:object is not dlink:VK_NULL_HANDLE, pname:object must: be a
|
||||||
Vulkan object of the corresponding type associated with pname:objectType
|
Vulkan object of the corresponding type associated with pname:objectType
|
||||||
as defined in <<debug-report-object-types>>.
|
as defined in <<debug-report-object-types>>.
|
||||||
****
|
****
|
||||||
|
|
|
@ -199,7 +199,7 @@ include::../../api/structs/VkDisplayPlanePropertiesKHR.txt[]
|
||||||
* pname:currentDisplay is the handle of the display the plane is currently
|
* pname:currentDisplay is the handle of the display the plane is currently
|
||||||
associated with.
|
associated with.
|
||||||
If the plane is not currently attached to any displays, this will be
|
If the plane is not currently attached to any displays, this will be
|
||||||
sname:VK_NULL_HANDLE.
|
dlink:VK_NULL_HANDLE.
|
||||||
* pname:currentStackIndex is the current z-order of the plane.
|
* pname:currentStackIndex is the current z-order of the plane.
|
||||||
This will be between 0 and the value returned by
|
This will be between 0 and the value returned by
|
||||||
fname:vkGetPhysicalDeviceDisplayPlanePropertiesKHR in
|
fname:vkGetPhysicalDeviceDisplayPlanePropertiesKHR in
|
||||||
|
|
|
@ -873,8 +873,8 @@ include::../../api/structs/VkAcquireNextImageInfoKHR.txt[]
|
||||||
acquired.
|
acquired.
|
||||||
* pname:timeout specifies how long the function waits, in nanoseconds, if
|
* pname:timeout specifies how long the function waits, in nanoseconds, if
|
||||||
no image is available.
|
no image is available.
|
||||||
* pname:semaphore is code:VK_NULL_HANDLE or a semaphore to signal.
|
* pname:semaphore is dlink:VK_NULL_HANDLE or a semaphore to signal.
|
||||||
* pname:fence is code:VK_NULL_HANDLE or a fence to signal.
|
* pname:fence is dlink:VK_NULL_HANDLE or a fence to signal.
|
||||||
* pname:deviceMask is a mask of physical devices for which the swapchain
|
* pname:deviceMask is a mask of physical devices for which the swapchain
|
||||||
image will be ready to use when the semaphore or fence is signaled.
|
image will be ready to use when the semaphore or fence is signaled.
|
||||||
|
|
||||||
|
|
|
@ -27,9 +27,14 @@ surface for the same code:nn::code:vi::code:Layer and any attempts to
|
||||||
connect to the same code:nn::code:vi::code:Layer through other platform
|
connect to the same code:nn::code:vi::code:Layer through other platform
|
||||||
mechanisms will have undefined: results.
|
mechanisms will have undefined: results.
|
||||||
|
|
||||||
The pname:currentExtent of a VI surface is always undefined:.
|
If the native window is created with a specified size, pname:currentExtent
|
||||||
Applications are expected to choose an appropriate size for the swapchain's
|
will reflect that size.
|
||||||
pname:imageExtent (e.g., by matching the result of a call to
|
In this case, applications should use the same size for the swapchain's
|
||||||
|
pname:imageExtent.
|
||||||
|
Otherwise, the pname:currentExtent will have the special value
|
||||||
|
[eq]#(0xFFFFFFFF, 0xFFFFFFFF), indicating that applications are expected to
|
||||||
|
choose an appropriate size for the swapchain's pname:imageExtent (e.g., by
|
||||||
|
matching the result of a call to
|
||||||
code:nn::code:vi::code:GetDisplayResolution).
|
code:nn::code:vi::code:GetDisplayResolution).
|
||||||
|
|
||||||
include::../../validity/protos/vkCreateViSurfaceNN.txt[]
|
include::../../validity/protos/vkCreateViSurfaceNN.txt[]
|
||||||
|
|
|
@ -1476,6 +1476,11 @@ ifdef::VK_VERSION_1_1[]
|
||||||
If pname:commandBuffer is an unprotected command buffer, then each
|
If pname:commandBuffer is an unprotected command buffer, then each
|
||||||
element of pname:pCommandBuffers must: be an unprotected command buffer.
|
element of pname:pCommandBuffers must: be an unprotected command buffer.
|
||||||
endif::VK_VERSION_1_1[]
|
endif::VK_VERSION_1_1[]
|
||||||
|
ifdef::VK_EXT_transform_feedback[]
|
||||||
|
* [[VUID-vkCmdExecuteCommands-None-02286]]
|
||||||
|
This command must: not be recorded when transform feedback is active
|
||||||
|
endif::VK_EXT_transform_feedback[]
|
||||||
|
|
||||||
****
|
****
|
||||||
|
|
||||||
include::../validity/protos/vkCmdExecuteCommands.txt[]
|
include::../validity/protos/vkCmdExecuteCommands.txt[]
|
||||||
|
|
|
@ -464,6 +464,30 @@ include::../validity/structs/VkConformanceVersionKHR.txt[]
|
||||||
|
|
||||||
endif::VK_KHR_driver_properties[]
|
endif::VK_KHR_driver_properties[]
|
||||||
|
|
||||||
|
ifdef::VK_EXT_pci_bus_info[]
|
||||||
|
|
||||||
|
[open,refpage='VkPhysicalDevicePCIBusInfoPropertiesEXT',desc='Structure containing PCI bus information of a physical device',type='structs']
|
||||||
|
--
|
||||||
|
|
||||||
|
To query the PCI bus information of a physical device, add
|
||||||
|
slink:VkPhysicalDevicePCIBusInfoPropertiesEXT to the pname:pNext chain of
|
||||||
|
the slink:VkPhysicalDeviceProperties2 structure.
|
||||||
|
The sname:VkPhysicalDevicePCIBusInfoPropertiesEXT structure is defined as:
|
||||||
|
|
||||||
|
include::../api/structs/VkPhysicalDevicePCIBusInfoPropertiesEXT.txt[]
|
||||||
|
|
||||||
|
* pname:sType is the type of this structure.
|
||||||
|
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||||
|
* pname:pciDomain is the PCI bus domain.
|
||||||
|
* pname:pciBus is the PCI bus identifier.
|
||||||
|
* pname:pciDevice is the PCI device identifier.
|
||||||
|
* pname:pciFunction is the PCI device function identifier.
|
||||||
|
|
||||||
|
include::../validity/structs/VkPhysicalDevicePCIBusInfoPropertiesEXT.txt[]
|
||||||
|
--
|
||||||
|
|
||||||
|
endif::VK_EXT_pci_bus_info[]
|
||||||
|
|
||||||
endif::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[]
|
endif::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[]
|
||||||
|
|
||||||
[open,refpage='vkGetPhysicalDeviceQueueFamilyProperties',desc='Reports properties of the queues of the specified physical device',type='protos']
|
[open,refpage='vkGetPhysicalDeviceQueueFamilyProperties',desc='Reports properties of the queues of the specified physical device',type='protos']
|
||||||
|
@ -1504,7 +1528,7 @@ The queue returned by fname:vkGetDeviceQueue2 must: have the same
|
||||||
pname:flags value from this structure as that used at device creation time
|
pname:flags value from this structure as that used at device creation time
|
||||||
in a sname:VkDeviceQueueCreateInfo instance.
|
in a sname:VkDeviceQueueCreateInfo instance.
|
||||||
If no matching pname:flags were specified at device creation time then
|
If no matching pname:flags were specified at device creation time then
|
||||||
pname:pQueue will return code:VK_NULL_HANDLE.
|
pname:pQueue will return dlink:VK_NULL_HANDLE.
|
||||||
|
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
|
|
|
@ -2210,6 +2210,216 @@ include::../validity/protos/vkCmdDrawIndexedIndirectCountAMD.txt[]
|
||||||
--
|
--
|
||||||
endif::VK_AMD_draw_indirect_count[]
|
endif::VK_AMD_draw_indirect_count[]
|
||||||
|
|
||||||
|
ifdef::VK_EXT_transform_feedback[]
|
||||||
|
[[drawing-transform-feedback]]
|
||||||
|
=== Drawing Transform Feedback
|
||||||
|
|
||||||
|
It is possible to draw vertex data that was previously captured during
|
||||||
|
active <<vertexpostproc-transform-feedback,transform feedback>> by binding
|
||||||
|
one or more of the transform feedback buffers as vertex buffers.
|
||||||
|
A pipeline barrier is required between using the buffers as transform
|
||||||
|
feedback buffers and vertex buffers to ensure all writes to the transform
|
||||||
|
feedback buffers are visible when the data is read as vertex attributes.
|
||||||
|
The source access is ename:VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT and
|
||||||
|
the destination access is ename:VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT for the
|
||||||
|
pipeline stages ename:VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT and
|
||||||
|
ename:VK_PIPELINE_STAGE_VERTEX_INPUT_BIT respectively.
|
||||||
|
The value written to the counter buffer by
|
||||||
|
flink:vkCmdEndTransformFeedbackEXT can: be used to determine the vertex
|
||||||
|
count for the draw.
|
||||||
|
A pipeline barrier is required between using the counter buffer for
|
||||||
|
fname:vkCmdEndTransformFeedbackEXT and fname:vkCmdDrawIndirectByteCountEXT
|
||||||
|
where the source access is
|
||||||
|
ename:VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT and the destination
|
||||||
|
access is ename:VK_ACCESS_INDIRECT_COMMAND_READ_BIT for the pipeline stages
|
||||||
|
ename:VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT and
|
||||||
|
ename:VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT respectively.
|
||||||
|
|
||||||
|
[open,refpage='vkCmdDrawIndirectByteCountEXT',desc='Draw primitives where the vertex count is derived from the counter byte value in the counter buffer',type='protos']
|
||||||
|
--
|
||||||
|
|
||||||
|
To record a non-indexed draw call, where the vertex count is based on a byte
|
||||||
|
count read from a buffer and the passed in vertex stride parameter, call:
|
||||||
|
|
||||||
|
include::../api/protos/vkCmdDrawIndirectByteCountEXT.txt[]
|
||||||
|
|
||||||
|
* pname:commandBuffer is the command buffer into which the command is
|
||||||
|
recorded.
|
||||||
|
* pname:instanceCount is the number of instances to draw.
|
||||||
|
* pname:firstInstance is the instance ID of the first instance to draw.
|
||||||
|
* pname:counterBuffer is the buffer handle from where the byte count is
|
||||||
|
read.
|
||||||
|
* pname:counterBufferOffset is the offset into the buffer used to read the
|
||||||
|
byte count, which is used to calculate the vertex count for this draw
|
||||||
|
call.
|
||||||
|
* pname:counterOffset is subtracted from the byte count read from the
|
||||||
|
pname:counterBuffer at the pname:counterBufferOffset
|
||||||
|
* pname:vertexStride is the stride in bytes between each element of the
|
||||||
|
vertex data that is used to calculate the vertex count from the counter
|
||||||
|
value.
|
||||||
|
This value is typically the same value that was used in the graphics
|
||||||
|
pipeline state when the transform feedback was captured as the
|
||||||
|
code:XfbStride.
|
||||||
|
|
||||||
|
When the command is executed, primitives are assembled in the same way as
|
||||||
|
done with flink:vkCmdDraw except the pname:vertexCount is calculated based
|
||||||
|
on the byte count read from pname:counterBuffer at offset
|
||||||
|
pname:counterBufferOffset.
|
||||||
|
The assembled primitives execute the bound graphics pipeline.
|
||||||
|
|
||||||
|
The effective pname:vertexCount is calculated as follows:
|
||||||
|
|
||||||
|
[source,c]
|
||||||
|
---------------------------------------------------
|
||||||
|
const uint32_t * counterBufferPtr = (const uint8_t *)counterBuffer.address + counterBufferOffset;
|
||||||
|
vertexCount = floor(max(0, (*counterBufferPtr - counterOffset)) / vertexStride);
|
||||||
|
---------------------------------------------------
|
||||||
|
|
||||||
|
The effective pname:firstVertex is zero.
|
||||||
|
|
||||||
|
.Valid Usage
|
||||||
|
****
|
||||||
|
* [[VUID-vkCmdDrawIndirectByteCountEXT-transformFeedback-02287]]
|
||||||
|
sname:VkPhysicalDeviceTransformFeedbackFeaturesEXT::pname:transformFeedback
|
||||||
|
must: be enabled
|
||||||
|
* [[VUID-vkCmdDrawIndirectByteCountEXT-transformFeedbackDraw-02288]]
|
||||||
|
The implementation must: support
|
||||||
|
sname:VkPhysicalDeviceTransformFeedbackPropertiesEXT::pname:transformFeedbackDraw
|
||||||
|
* [[VUID-vkCmdDrawIndirectByteCountEXT-vertexStride-02289]]
|
||||||
|
pname:vertexStride must be less than or equal to
|
||||||
|
slink:VkPhysicalDeviceLimits::pname:maxVertexInputBindingStride
|
||||||
|
* [[VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-02290]]
|
||||||
|
pname:counterBuffer must: have been created with the
|
||||||
|
ename:VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT bit set
|
||||||
|
* [[VUID-vkCmdDrawIndirectByteCountEXT-renderPass-02291]]
|
||||||
|
The current render pass must: be <<renderpass-compatibility,compatible>>
|
||||||
|
with the pname:renderPass member of the
|
||||||
|
sname:VkGraphicsPipelineCreateInfo structure specified when creating the
|
||||||
|
sname:VkPipeline bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS
|
||||||
|
* [[VUID-vkCmdDrawIndirectByteCountEXT-subpass-02292]]
|
||||||
|
The subpass index of the current render pass must: be equal to the
|
||||||
|
pname:subpass member of the sname:VkGraphicsPipelineCreateInfo structure
|
||||||
|
specified when creating the sname:VkPipeline bound to
|
||||||
|
ename:VK_PIPELINE_BIND_POINT_GRAPHICS
|
||||||
|
* [[VUID-vkCmdDrawIndirectByteCountEXT-None-02293]]
|
||||||
|
For each set _n_ that is statically used by the sname:VkPipeline bound
|
||||||
|
to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor set must: have
|
||||||
|
been bound to _n_ at ename:VK_PIPELINE_BIND_POINT_GRAPHICS, with a
|
||||||
|
sname:VkPipelineLayout that is compatible for set _n_, with the
|
||||||
|
sname:VkPipelineLayout used to create the current sname:VkPipeline, as
|
||||||
|
described in <<descriptorsets-compatibility>>
|
||||||
|
* [[VUID-vkCmdDrawIndirectByteCountEXT-None-02294]]
|
||||||
|
For each push constant that is statically used by the sname:VkPipeline
|
||||||
|
bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a push constant value
|
||||||
|
must: have been set for ename:VK_PIPELINE_BIND_POINT_GRAPHICS, with a
|
||||||
|
sname:VkPipelineLayout that is compatible for push constants, with the
|
||||||
|
sname:VkPipelineLayout used to create the current sname:VkPipeline, as
|
||||||
|
described in <<descriptorsets-compatibility>>
|
||||||
|
* [[VUID-vkCmdDrawIndirectByteCountEXT-None-02295]]
|
||||||
|
Descriptors in each bound descriptor set, specified via
|
||||||
|
fname:vkCmdBindDescriptorSets, must: be valid if they are statically
|
||||||
|
used by the bound sname:VkPipeline object, specified via
|
||||||
|
fname:vkCmdBindPipeline
|
||||||
|
* [[VUID-vkCmdDrawIndirectByteCountEXT-None-02296]]
|
||||||
|
All vertex input bindings accessed via vertex input variables declared
|
||||||
|
in the vertex shader entry point's interface must: have valid buffers
|
||||||
|
bound
|
||||||
|
* [[VUID-vkCmdDrawIndirectByteCountEXT-None-02297]]
|
||||||
|
For a given vertex buffer binding, any attribute data fetched must: be
|
||||||
|
entirely contained within the corresponding vertex buffer binding, as
|
||||||
|
described in <<fxvertex-input>>
|
||||||
|
* [[VUID-vkCmdDrawIndirectByteCountEXT-None-02298]]
|
||||||
|
A valid graphics pipeline must: be bound to the current command buffer
|
||||||
|
with ename:VK_PIPELINE_BIND_POINT_GRAPHICS
|
||||||
|
* [[VUID-vkCmdDrawIndirectByteCountEXT-None-02299]]
|
||||||
|
If the sname:VkPipeline object bound to
|
||||||
|
ename:VK_PIPELINE_BIND_POINT_GRAPHICS requires any dynamic state, that
|
||||||
|
state must: have been set on the current command buffer
|
||||||
|
* [[VUID-vkCmdDrawIndirectByteCountEXT-None-02300]]
|
||||||
|
Every input attachment used by the current subpass must: be bound to the
|
||||||
|
pipeline via a descriptor set
|
||||||
|
* [[VUID-vkCmdDrawIndirectByteCountEXT-None-02301]]
|
||||||
|
If any sname:VkSampler object that is accessed from a shader by the
|
||||||
|
sname:VkPipeline bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses
|
||||||
|
unnormalized coordinates, it must: not be used to sample from any
|
||||||
|
sname:VkImage with a sname:VkImageView of the type
|
||||||
|
ename:VK_IMAGE_VIEW_TYPE_3D, ename:VK_IMAGE_VIEW_TYPE_CUBE,
|
||||||
|
ename:VK_IMAGE_VIEW_TYPE_1D_ARRAY, ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY or
|
||||||
|
ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
|
||||||
|
* [[VUID-vkCmdDrawIndirectByteCountEXT-None-02302]]
|
||||||
|
If any sname:VkSampler object that is accessed from a shader by the
|
||||||
|
sname:VkPipeline bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses
|
||||||
|
unnormalized coordinates, it must: not be used with any of the SPIR-V
|
||||||
|
`OpImageSample*` or `OpImageSparseSample*` instructions with
|
||||||
|
code:ImplicitLod, code:Dref or code:Proj in their name, in any shader
|
||||||
|
stage
|
||||||
|
* [[VUID-vkCmdDrawIndirectByteCountEXT-None-02303]]
|
||||||
|
If any sname:VkSampler object that is accessed from a shader by the
|
||||||
|
sname:VkPipeline bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses
|
||||||
|
unnormalized coordinates, it must: not be used with any of the SPIR-V
|
||||||
|
`OpImageSample*` or `OpImageSparseSample*` instructions that includes a
|
||||||
|
LOD bias or any offset values, in any shader stage
|
||||||
|
* [[VUID-vkCmdDrawIndirectByteCountEXT-None-02304]]
|
||||||
|
Image subresources used as attachments in the current render pass must:
|
||||||
|
not be accessed in any way other than as an attachment by this command
|
||||||
|
* [[VUID-vkCmdDrawIndirectByteCountEXT-None-02305]]
|
||||||
|
If a sname:VkImageView is sampled with with ename:VK_FILTER_LINEAR as a
|
||||||
|
result of this command, then the image view's
|
||||||
|
<<resources-image-view-format-features,format features>> must: contain
|
||||||
|
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
|
||||||
|
ifdef::VK_IMG_filter_cubic[]
|
||||||
|
* [[VUID-vkCmdDrawIndirectByteCountEXT-None-02306]]
|
||||||
|
If a sname:VkImageView is sampled with with ename:VK_FILTER_CUBIC_IMG as
|
||||||
|
a result of this command, then the image view's
|
||||||
|
<<resources-image-view-format-features,format features>> must: contain
|
||||||
|
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG
|
||||||
|
* [[VUID-vkCmdDrawIndirectByteCountEXT-None-02307]]
|
||||||
|
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_IMG as a
|
||||||
|
result of this command must: not have a elink:VkImageViewType of
|
||||||
|
ename:VK_IMAGE_VIEW_TYPE_3D, ename:VK_IMAGE_VIEW_TYPE_CUBE, or
|
||||||
|
ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
|
||||||
|
endif::VK_IMG_filter_cubic[]
|
||||||
|
ifdef::VK_VERSION_1_1,VK_KHR_multiview[]
|
||||||
|
* [[VUID-vkCmdDrawIndirectByteCountEXT-maxMultiviewInstanceIndex-02308]]
|
||||||
|
If the draw is recorded in a render pass instance with multiview
|
||||||
|
enabled, the maximum instance index must: be less than or equal to
|
||||||
|
slink:VkPhysicalDeviceMultiviewProperties::pname:maxMultiviewInstanceIndex
|
||||||
|
endif::VK_VERSION_1_1,VK_KHR_multiview[]
|
||||||
|
ifdef::VK_VERSION_1_1[]
|
||||||
|
* [[VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02309]]
|
||||||
|
If pname:commandBuffer is an unprotected command buffer, and any
|
||||||
|
pipeline stage in the sname:VkPipeline object bound to
|
||||||
|
ename:VK_PIPELINE_BIND_POINT_GRAPHICS reads from or writes to any image
|
||||||
|
or buffer, that image or buffer must: not be a protected image or
|
||||||
|
protected buffer
|
||||||
|
* [[VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02310]]
|
||||||
|
If pname:commandBuffer is a protected command buffer, and any pipeline
|
||||||
|
stage in the sname:VkPipeline object bound to
|
||||||
|
ename:VK_PIPELINE_BIND_POINT_GRAPHICS writes to any image or buffer,
|
||||||
|
that image or buffer must: not be an unprotected image or unprotected
|
||||||
|
buffer
|
||||||
|
* [[VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02311]]
|
||||||
|
If pname:commandBuffer is a protected command buffer, and any pipeline
|
||||||
|
stage other than the framebuffer-space pipeline stages in the
|
||||||
|
sname:VkPipeline object bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS
|
||||||
|
reads from or writes to any image or buffer, the image or buffer must:
|
||||||
|
not be a protected image or protected buffer
|
||||||
|
endif::VK_VERSION_1_1[]
|
||||||
|
ifdef::VK_EXT_sample_locations[]
|
||||||
|
* [[VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-02312]]
|
||||||
|
If the bound graphics pipeline was created with
|
||||||
|
slink:VkPipelineSampleLocationsStateCreateInfoEXT::pname:sampleLocationsEnable
|
||||||
|
set to ename:VK_TRUE and the current subpass has a depth/stencil
|
||||||
|
attachment, then that attachment must: have been created with the
|
||||||
|
ename:VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set
|
||||||
|
endif::VK_EXT_sample_locations[]
|
||||||
|
****
|
||||||
|
|
||||||
|
include::../validity/protos/vkCmdDrawIndirectByteCountEXT.txt[]
|
||||||
|
--
|
||||||
|
|
||||||
|
endif::VK_EXT_transform_feedback[]
|
||||||
|
|
||||||
ifdef::VK_EXT_conditional_rendering[]
|
ifdef::VK_EXT_conditional_rendering[]
|
||||||
|
|
||||||
[[drawing-conditional-rendering]]
|
[[drawing-conditional-rendering]]
|
||||||
|
|
|
@ -564,13 +564,15 @@ supported properties of individual formats as normal.
|
||||||
This also specifies whether shader modules can: declare the
|
This also specifies whether shader modules can: declare the
|
||||||
code:ImageGatherExtended capability.
|
code:ImageGatherExtended capability.
|
||||||
* [[features-features-shaderStorageImageExtendedFormats]]
|
* [[features-features-shaderStorageImageExtendedFormats]]
|
||||||
pname:shaderStorageImageExtendedFormats specifies whether the extended
|
pname:shaderStorageImageExtendedFormats specifies whether all the
|
||||||
storage image formats are available in shader code.
|
extended storage image formats are available in shader code.
|
||||||
If this feature is not enabled, the formats requiring the
|
If this feature is enabled then the
|
||||||
code:StorageImageExtendedFormats capability are not supported for
|
ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT feature must: be supported in
|
||||||
storage images.
|
pname:optimalTilingFeatures for all of the extended formats.
|
||||||
This also specifies whether shader modules can: declare the
|
To query for additional properties, or if the feature is not enabled,
|
||||||
code:StorageImageExtendedFormats capability.
|
flink:vkGetPhysicalDeviceFormatProperties and
|
||||||
|
flink:vkGetPhysicalDeviceImageFormatProperties can: be used to check for
|
||||||
|
supported properties of individual formats as normal.
|
||||||
* [[features-features-shaderStorageImageMultisample]]
|
* [[features-features-shaderStorageImageMultisample]]
|
||||||
pname:shaderStorageImageMultisample specifies whether multisampled
|
pname:shaderStorageImageMultisample specifies whether multisampled
|
||||||
storage images are supported.
|
storage images are supported.
|
||||||
|
@ -1437,6 +1439,36 @@ include::../validity/structs/VkPhysicalDeviceASTCDecodeFeaturesEXT.txt[]
|
||||||
|
|
||||||
endif::VK_EXT_astc_decode_mode[]
|
endif::VK_EXT_astc_decode_mode[]
|
||||||
|
|
||||||
|
ifdef::VK_EXT_transform_feedback[]
|
||||||
|
|
||||||
|
[open,refpage='VkPhysicalDeviceTransformFeedbackFeaturesEXT',desc='Structure describing transform feedback features that can be supported by an implementation',type='structs']
|
||||||
|
--
|
||||||
|
The sname:VkPhysicalDeviceTransformFeedbackFeaturesEXT structure is defined
|
||||||
|
as:
|
||||||
|
|
||||||
|
include::../api/structs/VkPhysicalDeviceTransformFeedbackFeaturesEXT.txt[]
|
||||||
|
|
||||||
|
The members of the sname:VkPhysicalDeviceTransformFeedbackFeaturesEXT
|
||||||
|
structure describe the following features:
|
||||||
|
|
||||||
|
* [[features-features-transformFeedback]] pname:transformFeedback
|
||||||
|
indicates whether the implementation supports transform feedback and
|
||||||
|
shader modules can: declare the code:TransformFeedback capability.
|
||||||
|
|
||||||
|
* [[features-features-geometryStreams]] pname:geometryStreams indicates
|
||||||
|
whether the implementation supports the code:GeometryStreams SPIR-V
|
||||||
|
capability.
|
||||||
|
|
||||||
|
If the sname:VkPhysicalDeviceTransformFeedbackFeaturesEXT structure is
|
||||||
|
included in the pname:pNext chain of slink:VkPhysicalDeviceFeatures2KHR, it
|
||||||
|
is filled with values indicating whether each feature is supported.
|
||||||
|
sname:VkPhysicalDeviceTransformFeedbackFeaturesEXT can: also be used in the
|
||||||
|
pname:pNext chain of slink:VkDeviceCreateInfo to enable features.
|
||||||
|
|
||||||
|
include::../validity/structs/VkPhysicalDeviceTransformFeedbackFeaturesEXT.txt[]
|
||||||
|
--
|
||||||
|
|
||||||
|
endif::VK_EXT_transform_feedback[]
|
||||||
|
|
||||||
ifdef::VK_KHR_vulkan_memory_model[]
|
ifdef::VK_KHR_vulkan_memory_model[]
|
||||||
[open,refpage='VkPhysicalDeviceVulkanMemoryModelFeaturesKHR',desc='Structure describing features supported by VK_KHR_vulkan_memory_model',type='structs']
|
[open,refpage='VkPhysicalDeviceVulkanMemoryModelFeaturesKHR',desc='Structure describing features supported by VK_KHR_vulkan_memory_model',type='structs']
|
||||||
|
@ -3691,6 +3723,90 @@ is filled with the implementation-dependent limits.
|
||||||
|
|
||||||
endif::VK_NV_shading_rate_image[]
|
endif::VK_NV_shading_rate_image[]
|
||||||
|
|
||||||
|
ifdef::VK_EXT_transform_feedback[]
|
||||||
|
|
||||||
|
[open,refpage='VkPhysicalDeviceTransformFeedbackPropertiesEXT',desc='Structure describing transform feedback properties that can be supported by an implementation',type='structs']
|
||||||
|
--
|
||||||
|
|
||||||
|
The sname:VkPhysicalDeviceTransformFeedbackPropertiesEXT structure is
|
||||||
|
defined as:
|
||||||
|
|
||||||
|
include::../api/structs/VkPhysicalDeviceTransformFeedbackPropertiesEXT.txt[]
|
||||||
|
|
||||||
|
The members of the sname:VkPhysicalDeviceTransformFeedbackPropertiesEXT
|
||||||
|
structure describe the following implementation-dependent limits:
|
||||||
|
|
||||||
|
* [[features-limits-maxTransformFeedbackStreams]]
|
||||||
|
pname:maxTransformFeedbackStreams is the maximum number of vertex
|
||||||
|
streams that can be output from geometry shaders declared with the
|
||||||
|
code:GeometryStreams capability.
|
||||||
|
If the implementation does not support
|
||||||
|
sname:VkPhysicalDeviceTransformFeedbackFeaturesEXT::pname:geometryStreams
|
||||||
|
then pname:maxTransformFeedbackStreams must: be set to `1`.
|
||||||
|
|
||||||
|
* [[features-limits-maxTransformFeedbackBuffers]]
|
||||||
|
pname:maxTransformFeedbackBuffers is the maximum number of transform
|
||||||
|
feedback buffers that can be bound for capturing shader outputs from the
|
||||||
|
last vertex processing stage.
|
||||||
|
|
||||||
|
* [[features-limits-maxTransformFeedbackBufferSize]]
|
||||||
|
pname:maxTransformFeedbackBufferSize is the maximum size that can be
|
||||||
|
specified when binding a buffer for transform feedback in
|
||||||
|
flink:vkCmdBindTransformFeedbackBuffersEXT.
|
||||||
|
|
||||||
|
* [[features-limits-maxTransformFeedbackStreamDataSize]]
|
||||||
|
pname:maxTransformFeedbackStreamDataSize is the maximum amount of data
|
||||||
|
in bytes for each vertex that captured to one or more transform feedback
|
||||||
|
buffers associated with a specific vertex stream.
|
||||||
|
|
||||||
|
* [[features-limits-maxTransformFeedbackBufferDataSize]]
|
||||||
|
pname:maxTransformFeedbackBufferDataSize is the maximum amount of data
|
||||||
|
in bytes for each vertex that can be captured to a specific transform
|
||||||
|
feedback buffer.
|
||||||
|
|
||||||
|
* [[features-limits-maxTransformFeedbackBufferDataStride]]
|
||||||
|
pname:maxTransformFeedbackBufferDataStride is the maximum stride between
|
||||||
|
each capture of vertex data to the buffer.
|
||||||
|
|
||||||
|
* [[features-limits-transformFeedbackQueries]]
|
||||||
|
pname:transformFeedbackQueries is true if the implementation supports
|
||||||
|
the ename:VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT query type.
|
||||||
|
pname:transformFeedbackQueries is false if queries of this type cannot:
|
||||||
|
be created.
|
||||||
|
|
||||||
|
* [[features-limits-transformFeedbackStreamsLinesTriangles]]
|
||||||
|
pname:transformFeedbackStreamsLinesTriangles is true if the
|
||||||
|
implementation supports the geometry shader code:OpExecutionMode of
|
||||||
|
code:OutputLineStrip and code:OutputTriangleStrip in addition to
|
||||||
|
code:OutputPoints when more than one vertex stream is output.
|
||||||
|
If pname:transformFeedbackStreamsLinesTriangles is false the
|
||||||
|
implementation only supports an code:OpExecutionMode of
|
||||||
|
code:OutputPoints when more than one vertex stream is output from the
|
||||||
|
geometry shader.
|
||||||
|
|
||||||
|
* [[features-limits-transformFeedbackRasterizationStreamSelect]]
|
||||||
|
pname:transformFeedbackRasterizationStreamSelect is true if the
|
||||||
|
implementation supports the code:GeometryStreams SPIR-V capability and
|
||||||
|
the application can use
|
||||||
|
slink:VkPipelineRasterizationStateStreamCreateInfoEXT to modify which
|
||||||
|
vertex stream output is used for rasterization.
|
||||||
|
Otherwise vertex stream `0` must: always be used for rasterization.
|
||||||
|
|
||||||
|
* [[features-limits-transformFeedbackDraw]] pname:transformFeedbackDraw is
|
||||||
|
true if the implementation supports the
|
||||||
|
flink:vkCmdDrawIndirectByteCountEXT function otherwise the function
|
||||||
|
must: not be called.
|
||||||
|
|
||||||
|
include::../validity/structs/VkPhysicalDeviceTransformFeedbackPropertiesEXT.txt[]
|
||||||
|
|
||||||
|
If the sname:VkPhysicalDeviceTransformFeedbackPropertiesEXT structure is
|
||||||
|
included in the pname:pNext chain of slink:VkPhysicalDeviceProperties2KHR,
|
||||||
|
it is filled with the implementation-dependent limits and properties.
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
endif::VK_EXT_transform_feedback[]
|
||||||
|
|
||||||
[[features-limits-minmax]]
|
[[features-limits-minmax]]
|
||||||
=== Limit Requirements
|
=== Limit Requirements
|
||||||
|
|
||||||
|
@ -3847,6 +3963,18 @@ ifdef::VK_NV_mesh_shader[]
|
||||||
| code:uint32_t | pname:meshOutputPerVertexGranularity | `<<VK_NV_mesh_shader>>`
|
| code:uint32_t | pname:meshOutputPerVertexGranularity | `<<VK_NV_mesh_shader>>`
|
||||||
| code:uint32_t | pname:meshOutputPerPrimitiveGranularity | `<<VK_NV_mesh_shader>>`
|
| code:uint32_t | pname:meshOutputPerPrimitiveGranularity | `<<VK_NV_mesh_shader>>`
|
||||||
endif::VK_NV_mesh_shader[]
|
endif::VK_NV_mesh_shader[]
|
||||||
|
ifdef::VK_EXT_transform_feedback[]
|
||||||
|
| code:uint32_t | pname:maxTransformFeedbackStreams | `<<VK_EXT_transform_feedback>>`
|
||||||
|
| code:uint32_t | pname:maxTransformFeedbackBuffers | `<<VK_EXT_transform_feedback>>`
|
||||||
|
| basetype:VkDeviceSize | pname:maxTransformFeedbackBufferSize | `<<VK_EXT_transform_feedback>>`
|
||||||
|
| code:uint32_t | pname:maxTransformFeedbackStreamDataSize | `<<VK_EXT_transform_feedback>>`
|
||||||
|
| code:uint32_t | pname:maxTransformFeedbackBufferDataSize | `<<VK_EXT_transform_feedback>>`
|
||||||
|
| code:uint32_t | pname:maxTransformFeedbackBufferDataStride | `<<VK_EXT_transform_feedback>>`
|
||||||
|
| code:VkBool32 | pname:transformFeedbackQueries | `<<VK_EXT_transform_feedback>>`
|
||||||
|
| code:VkBool32 | pname:transformFeedbackStreamsLinesTriangles | `<<VK_EXT_transform_feedback>>`
|
||||||
|
| code:VkBool32 | pname:transformFeedbackRasterizationStreamSelect | `<<VK_EXT_transform_feedback>>`
|
||||||
|
| code:VkBool32 | pname:transformFeedbackDraw | `<<VK_EXT_transform_feedback>>`
|
||||||
|
endif::VK_EXT_transform_feedback[]
|
||||||
|====
|
|====
|
||||||
|
|
||||||
[[features-limits-required]]
|
[[features-limits-required]]
|
||||||
|
@ -4058,6 +4186,18 @@ ifdef::VK_NV_mesh_shader[]
|
||||||
| pname:meshOutputPerVertexGranularity | - | - | implementation dependent
|
| pname:meshOutputPerVertexGranularity | - | - | implementation dependent
|
||||||
| pname:meshOutputPerPrimitiveGranularity | - | - | implementation dependent
|
| pname:meshOutputPerPrimitiveGranularity | - | - | implementation dependent
|
||||||
endif::VK_NV_mesh_shader[]
|
endif::VK_NV_mesh_shader[]
|
||||||
|
ifdef::VK_EXT_transform_feedback[]
|
||||||
|
| pname:maxTransformFeedbackStreams | - | 1 | min
|
||||||
|
| pname:maxTransformFeedbackBuffers | - | 1 | min
|
||||||
|
| pname:maxTransformFeedbackBufferSize | - | 2^27^ | min
|
||||||
|
| pname:maxTransformFeedbackStreamDataSize | - | 512 | min
|
||||||
|
| pname:maxTransformFeedbackBufferDataSize | - | 512 | min
|
||||||
|
| pname:maxTransformFeedbackBufferDataStride | - | 512 | min
|
||||||
|
| pname:transformFeedbackQueries | - | false | implementation dependent
|
||||||
|
| pname:transformFeedbackStreamsLinesTriangles | - | false | implementation dependent
|
||||||
|
| pname:transformFeedbackRasterizationStreamSelect | - | false | implementation dependent
|
||||||
|
| pname:transformFeedbackDraw | - | false | implementation dependent
|
||||||
|
endif::VK_EXT_transform_feedback[]
|
||||||
|====
|
|====
|
||||||
|
|
||||||
1::
|
1::
|
||||||
|
@ -7254,10 +7394,15 @@ pname:sType and pname:pNext added for extensibility.
|
||||||
ifdef::VK_EXT_image_drm_format_modifier[]
|
ifdef::VK_EXT_image_drm_format_modifier[]
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
* [[VUID-VkPhysicalDeviceImageFormatInfo2KHR-tiling-02249]]
|
* [[VUID-VkPhysicalDeviceImageFormatInfo2-tiling-02249]]
|
||||||
pname:tiling must: be ename:VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT if
|
pname:tiling must: be ename:VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT if
|
||||||
and only if the pname:pNext chain contains
|
and only if the pname:pNext chain contains
|
||||||
slink:VkPhysicalDeviceImageDrmFormatModifierInfoEXT.
|
slink:VkPhysicalDeviceImageDrmFormatModifierInfoEXT.
|
||||||
|
* [[VUID-VkPhysicalDeviceImageFormatInfo2-tiling-02313]]
|
||||||
|
If pname:tiling is ename:VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT and
|
||||||
|
pname:flags contains ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT, then the
|
||||||
|
pname:pNext chain must: contain slink:VkImageFormatListCreateInfoKHR
|
||||||
|
with non-zero pname:viewFormatCount.
|
||||||
****
|
****
|
||||||
endif::VK_EXT_image_drm_format_modifier[]
|
endif::VK_EXT_image_drm_format_modifier[]
|
||||||
|
|
||||||
|
@ -7667,6 +7812,13 @@ include::../api/structs/VkPhysicalDeviceImageDrmFormatModifierInfoEXT.txt[]
|
||||||
corresponding to
|
corresponding to
|
||||||
slink:VkImageDrmFormatModifierExplicitCreateInfoEXT::pname:modifier or
|
slink:VkImageDrmFormatModifierExplicitCreateInfoEXT::pname:modifier or
|
||||||
to slink:VkImageDrmFormatModifierListCreateInfoEXT::pname:pModifiers.
|
to slink:VkImageDrmFormatModifierListCreateInfoEXT::pname:pModifiers.
|
||||||
|
* pname:sharingMode specifies how the image will be accessed by multiple
|
||||||
|
queue families.
|
||||||
|
* pname:queueFamilyIndexCount is the number of entries in the
|
||||||
|
pname:pQueueFamilyIndices array.
|
||||||
|
* pname:pQueueFamilyIndices is a list of queue families that will access
|
||||||
|
the image (ignored if pname:sharingMode is not
|
||||||
|
ename:VK_SHARING_MODE_CONCURRENT).
|
||||||
|
|
||||||
If the pname:drmFormatModifier is incompatible with the parameters specified
|
If the pname:drmFormatModifier is incompatible with the parameters specified
|
||||||
in slink:VkPhysicalDeviceImageFormatInfo2 and its pname:pNext chain, then
|
in slink:VkPhysicalDeviceImageFormatInfo2 and its pname:pNext chain, then
|
||||||
|
@ -7675,6 +7827,23 @@ ename:VK_ERROR_FORMAT_NOT_SUPPORTED.
|
||||||
The implementation must: support the query of any pname:drmFormatModifier,
|
The implementation must: support the query of any pname:drmFormatModifier,
|
||||||
including unknown and invalid modifier values.
|
including unknown and invalid modifier values.
|
||||||
|
|
||||||
|
.Valid Usage
|
||||||
|
****
|
||||||
|
* [[VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02314]]
|
||||||
|
If pname:sharingMode is ename:VK_SHARING_MODE_CONCURRENT, then
|
||||||
|
pname:pQueueFamilyIndices must: be a valid pointer to an array of
|
||||||
|
pname:queueFamilyIndexCount basetype:uint32_t values.
|
||||||
|
* [[VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02315]]
|
||||||
|
If pname:sharingMode is ename:VK_SHARING_MODE_CONCURRENT, then
|
||||||
|
pname:queueFamilyIndexCount must: be greater than `1`.
|
||||||
|
* [[VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02316]]
|
||||||
|
If pname:sharingMode is ename:VK_SHARING_MODE_CONCURRENT, each element
|
||||||
|
of pname:pQueueFamilyIndices must: be unique and must: be less than the
|
||||||
|
pname:pQueueFamilyPropertyCount returned by
|
||||||
|
flink:vkGetPhysicalDeviceQueueFamilyProperties2 for the
|
||||||
|
pname:physicalDevice that was used to create pname:device.
|
||||||
|
****
|
||||||
|
|
||||||
include::../validity/structs/VkPhysicalDeviceImageDrmFormatModifierInfoEXT.txt[]
|
include::../validity/structs/VkPhysicalDeviceImageDrmFormatModifierInfoEXT.txt[]
|
||||||
--
|
--
|
||||||
endif::VK_EXT_image_drm_format_modifier[]
|
endif::VK_EXT_image_drm_format_modifier[]
|
||||||
|
@ -8410,3 +8579,44 @@ zero or more slink:VkExternalFenceFeatureFlagBits.
|
||||||
--
|
--
|
||||||
|
|
||||||
endif::VK_VERSION_1_1,VK_KHR_external_fence_capabilities[]
|
endif::VK_VERSION_1_1,VK_KHR_external_fence_capabilities[]
|
||||||
|
|
||||||
|
ifdef::VK_EXT_calibrated_timestamps[]
|
||||||
|
|
||||||
|
[[features-timestamp-calibration]]
|
||||||
|
== Timestamp Calibration Capabilities
|
||||||
|
|
||||||
|
[open,refpage='vkGetPhysicalDeviceCalibrateableTimeDomainsEXT',desc='Query calibrateable time domains',type='protos']
|
||||||
|
--
|
||||||
|
|
||||||
|
To query the set of time domains for which a physical device supports
|
||||||
|
timestamp calibration, call:
|
||||||
|
|
||||||
|
include::../api/protos/vkGetPhysicalDeviceCalibrateableTimeDomainsEXT.txt[]
|
||||||
|
|
||||||
|
* pname:physicalDevice is the physical device from which to query the set
|
||||||
|
of calibrateable time domains.
|
||||||
|
* pname:pTimeDomainCount is a pointer to an integer related to the number
|
||||||
|
of calibrateable time domains available or queried, as described below.
|
||||||
|
* pname:pTimeDomains is either `NULL` or a pointer to an array of
|
||||||
|
elink:VkTimeDomainEXT values, indicating the supported calibrateable
|
||||||
|
time domains.
|
||||||
|
|
||||||
|
If pname:pTimeDomains is `NULL`, then the number of calibrateable time
|
||||||
|
domains supported for the given pname:physicalDevice is returned in
|
||||||
|
pname:pTimeDomainCount.
|
||||||
|
Otherwise, pname:pTimeDomainCount must: point to a variable set by the user
|
||||||
|
to the number of elements in the pname:pTimeDomains array, and on return the
|
||||||
|
variable is overwritten with the number of values actually written to
|
||||||
|
pname:pTimeDomains.
|
||||||
|
If the value of pname:pTimeDomainCount is less than the number of
|
||||||
|
calibrateable time domains supported, at most pname:pTimeDomainCount values
|
||||||
|
will be written to pname:pTimeDomains.
|
||||||
|
If pname:pTimeDomainCount is smaller than the number of calibrateable time
|
||||||
|
domains supported for the given pname:physicalDevice, ename:VK_INCOMPLETE
|
||||||
|
will be returned instead of ename:VK_SUCCESS to indicate that not all the
|
||||||
|
available values were returned.
|
||||||
|
|
||||||
|
include::../validity/protos/vkGetPhysicalDeviceCalibrateableTimeDomainsEXT.txt[]
|
||||||
|
--
|
||||||
|
|
||||||
|
endif::VK_EXT_calibrated_timestamps[]
|
||||||
|
|
|
@ -103,6 +103,10 @@ the subsequent stage if the two variables are declared with the same
|
||||||
code:Location and code:Component decoration and match in type and
|
code:Location and code:Component decoration and match in type and
|
||||||
decoration, except that <<shaders-interpolation-decorations,interpolation
|
decoration, except that <<shaders-interpolation-decorations,interpolation
|
||||||
decorations>> are not required: to match.
|
decorations>> are not required: to match.
|
||||||
|
ifdef::VK_EXT_transform_feedback
|
||||||
|
code:XfbBuffer, code:XfbStride, code:Offset, and code:Stream are also not
|
||||||
|
required to match for the purposes of interface matching.
|
||||||
|
endif::VK_EXT_transform_feedback
|
||||||
For the purposes of interface matching, variables declared without a
|
For the purposes of interface matching, variables declared without a
|
||||||
code:Component decoration are considered to have a code:Component decoration
|
code:Component decoration are considered to have a code:Component decoration
|
||||||
of zero.
|
of zero.
|
||||||
|
|
|
@ -987,7 +987,7 @@ ifdef::VK_NV_dedicated_allocation[or]
|
||||||
endif::VK_KHR_dedicated_allocation[]
|
endif::VK_KHR_dedicated_allocation[]
|
||||||
ifdef::VK_NV_dedicated_allocation[slink:VkDedicatedAllocationMemoryAllocateInfoNV]
|
ifdef::VK_NV_dedicated_allocation[slink:VkDedicatedAllocationMemoryAllocateInfoNV]
|
||||||
with either its pname:image or pname:buffer field set to a value other
|
with either its pname:image or pname:buffer field set to a value other
|
||||||
than ename:VK_NULL_HANDLE.
|
than dlink:VK_NULL_HANDLE.
|
||||||
endif::VK_KHR_dedicated_allocation,VK_NV_dedicated_allocation[]
|
endif::VK_KHR_dedicated_allocation,VK_NV_dedicated_allocation[]
|
||||||
endif::VK_KHR_external_memory[]
|
endif::VK_KHR_external_memory[]
|
||||||
ifdef::VK_KHR_external_memory[]
|
ifdef::VK_KHR_external_memory[]
|
||||||
|
@ -1180,7 +1180,7 @@ endif::VK_KHR_dedicated_allocation[]
|
||||||
slink:VkBufferCreateInfo::pname:flags
|
slink:VkBufferCreateInfo::pname:flags
|
||||||
ifdef::VK_KHR_external_memory_win32[]
|
ifdef::VK_KHR_external_memory_win32[]
|
||||||
* [[VUID-VkMemoryDedicatedAllocateInfo-image-01876]]
|
* [[VUID-VkMemoryDedicatedAllocateInfo-image-01876]]
|
||||||
If pname:image is not sname:VK_NULL_HANDLE and
|
If pname:image is not dlink:VK_NULL_HANDLE and
|
||||||
slink:VkMemoryAllocateInfo defines a memory import operation with handle
|
slink:VkMemoryAllocateInfo defines a memory import operation with handle
|
||||||
type ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT,
|
type ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT,
|
||||||
ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
|
ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
|
||||||
|
@ -1206,14 +1206,14 @@ ifdef::VK_KHR_external_memory_win32[]
|
||||||
endif::VK_KHR_external_memory_win32[]
|
endif::VK_KHR_external_memory_win32[]
|
||||||
ifdef::VK_KHR_external_memory_fd[]
|
ifdef::VK_KHR_external_memory_fd[]
|
||||||
* [[VUID-VkMemoryDedicatedAllocateInfo-image-01878]]
|
* [[VUID-VkMemoryDedicatedAllocateInfo-image-01878]]
|
||||||
If pname:image is not sname:VK_NULL_HANDLE and
|
If pname:image is not dlink:VK_NULL_HANDLE and
|
||||||
slink:VkMemoryAllocateInfo defines a memory import operation with handle
|
slink:VkMemoryAllocateInfo defines a memory import operation with handle
|
||||||
type ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT, the memory
|
type ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT, the memory
|
||||||
being imported must: also be a dedicated image allocation and
|
being imported must: also be a dedicated image allocation and
|
||||||
pname:image must be identical to the image associated with the imported
|
pname:image must be identical to the image associated with the imported
|
||||||
memory.
|
memory.
|
||||||
* [[VUID-VkMemoryDedicatedAllocateInfo-buffer-01879]]
|
* [[VUID-VkMemoryDedicatedAllocateInfo-buffer-01879]]
|
||||||
If pname:buffer is not sname:VK_NULL_HANDLE and
|
If pname:buffer is not dlink:VK_NULL_HANDLE and
|
||||||
slink:VkMemoryAllocateInfo defines a memory import operation with handle
|
slink:VkMemoryAllocateInfo defines a memory import operation with handle
|
||||||
type ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT, the memory
|
type ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT, the memory
|
||||||
being imported must: also be a dedicated buffer allocation and
|
being imported must: also be a dedicated buffer allocation and
|
||||||
|
@ -2327,8 +2327,10 @@ include::../api/protos/vkMapMemory.txt[]
|
||||||
This pointer minus pname:offset must: be aligned to at least
|
This pointer minus pname:offset must: be aligned to at least
|
||||||
slink:VkPhysicalDeviceLimits::pname:minMemoryMapAlignment.
|
slink:VkPhysicalDeviceLimits::pname:minMemoryMapAlignment.
|
||||||
|
|
||||||
|
After a successful call to fname:vkMapMemory the memory object pname:memory
|
||||||
|
is considered to be currently _host mapped_.
|
||||||
It is an application error to call fname:vkMapMemory on a memory object that
|
It is an application error to call fname:vkMapMemory on a memory object that
|
||||||
is already mapped.
|
is already host mapped.
|
||||||
|
|
||||||
[NOTE]
|
[NOTE]
|
||||||
.Note
|
.Note
|
||||||
|
@ -2360,7 +2362,7 @@ slink:VkPhysicalDeviceLimits::pname:nonCoherentAtomSize, and round the end
|
||||||
of the range up to the nearest multiple of
|
of the range up to the nearest multiple of
|
||||||
slink:VkPhysicalDeviceLimits::pname:nonCoherentAtomSize.
|
slink:VkPhysicalDeviceLimits::pname:nonCoherentAtomSize.
|
||||||
|
|
||||||
While a range of device memory is mapped for host access, the application is
|
While a range of device memory is host mapped, the application is
|
||||||
responsible for synchronizing both device and host access to that memory
|
responsible for synchronizing both device and host access to that memory
|
||||||
range.
|
range.
|
||||||
|
|
||||||
|
@ -2376,7 +2378,7 @@ to maintaining memory access ordering.
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
* [[VUID-vkMapMemory-memory-00678]]
|
* [[VUID-vkMapMemory-memory-00678]]
|
||||||
pname:memory must: not be currently mapped
|
pname:memory must: not be currently host mapped
|
||||||
* [[VUID-vkMapMemory-offset-00679]]
|
* [[VUID-vkMapMemory-offset-00679]]
|
||||||
pname:offset must: be less than the size of pname:memory
|
pname:offset must: be less than the size of pname:memory
|
||||||
* [[VUID-vkMapMemory-size-00680]]
|
* [[VUID-vkMapMemory-size-00680]]
|
||||||
|
@ -2422,6 +2424,28 @@ See the description of <<synchronization-host-access-types, host access
|
||||||
types>> for more information.
|
types>> for more information.
|
||||||
====
|
====
|
||||||
|
|
||||||
|
ifdef::VK_EXT_external_memory_host[]
|
||||||
|
[NOTE]
|
||||||
|
.Note
|
||||||
|
====
|
||||||
|
While memory objects imported from a handle type of
|
||||||
|
ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT or
|
||||||
|
ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT are
|
||||||
|
inherently mapped to host address space, they are not considered to be host
|
||||||
|
mapped device memory unless they are explicitly host mapped using
|
||||||
|
flink:vkMapMemory.
|
||||||
|
That means flushing or invalidating host caches with respect to host
|
||||||
|
accesses performed on such memory through the original host pointer
|
||||||
|
specified at import time is the responsibility of the application and must:
|
||||||
|
be performed with appropriate synchronization primitives provided by the
|
||||||
|
platform which are outside the scope of Vulkan.
|
||||||
|
fname:vkFlushMappedMemoryRanges and fname:vkInvalidateMappedMemoryRanges,
|
||||||
|
however, can: still be used on such memory objects to synchronize host
|
||||||
|
accesses performed through the host pointer of the host mapped device memory
|
||||||
|
range returned by flink:vkMapMemory.
|
||||||
|
====
|
||||||
|
endif::VK_EXT_external_memory_host[]
|
||||||
|
|
||||||
[open,refpage='vkFlushMappedMemoryRanges',desc='Flush mapped memory ranges',type='protos']
|
[open,refpage='vkFlushMappedMemoryRanges',desc='Flush mapped memory ranges',type='protos']
|
||||||
--
|
--
|
||||||
|
|
||||||
|
@ -2444,16 +2468,16 @@ domain operations>> using the ename:VK_ACCESS_HOST_WRITE_BIT
|
||||||
|
|
||||||
Within each range described by pname:pMemoryRanges, each set of
|
Within each range described by pname:pMemoryRanges, each set of
|
||||||
pname:nonCoherentAtomSize bytes in that range is flushed if any byte in that
|
pname:nonCoherentAtomSize bytes in that range is flushed if any byte in that
|
||||||
set has been written by the host since it was first mapped, or the last time
|
set has been written by the host since it was first host mapped, or the last
|
||||||
it was flushed.
|
time it was flushed.
|
||||||
If pname:pMemoryRanges includes sets of pname:nonCoherentAtomSize bytes
|
If pname:pMemoryRanges includes sets of pname:nonCoherentAtomSize bytes
|
||||||
where no bytes have been written by the host, those bytes must: not be
|
where no bytes have been written by the host, those bytes must: not be
|
||||||
flushed.
|
flushed.
|
||||||
|
|
||||||
[[memory-device-unmap-does-not-flush]]
|
[[memory-device-unmap-does-not-flush]]
|
||||||
Unmapping non-coherent memory does not implicitly flush the mapped memory,
|
Unmapping non-coherent memory does not implicitly flush the host mapped
|
||||||
and host writes that have not been flushed may: not ever be visible to the
|
memory, and host writes that have not been flushed may: not ever be visible
|
||||||
device.
|
to the device.
|
||||||
However, implementations must: ensure that writes that have not been flushed
|
However, implementations must: ensure that writes that have not been flushed
|
||||||
do not become visible to any other memory.
|
do not become visible to any other memory.
|
||||||
|
|
||||||
|
@ -2492,8 +2516,8 @@ invalidated without first being flushed, its contents are undefined:.
|
||||||
|
|
||||||
Within each range described by pname:pMemoryRanges, each set of
|
Within each range described by pname:pMemoryRanges, each set of
|
||||||
pname:nonCoherentAtomSize bytes in that range is invalidated if any byte in
|
pname:nonCoherentAtomSize bytes in that range is invalidated if any byte in
|
||||||
that set has been written by the device since it was first mapped, or the
|
that set has been written by the device since it was first host mapped, or
|
||||||
last time it was invalidated.
|
the last time it was invalidated.
|
||||||
|
|
||||||
[NOTE]
|
[NOTE]
|
||||||
.Note
|
.Note
|
||||||
|
@ -2525,7 +2549,7 @@ include::../api/structs/VkMappedMemoryRange.txt[]
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
* [[VUID-VkMappedMemoryRange-memory-00684]]
|
* [[VUID-VkMappedMemoryRange-memory-00684]]
|
||||||
pname:memory must: be currently mapped
|
pname:memory must: be currently host mapped
|
||||||
* [[VUID-VkMappedMemoryRange-size-00685]]
|
* [[VUID-VkMappedMemoryRange-size-00685]]
|
||||||
If pname:size is not equal to ename:VK_WHOLE_SIZE, pname:offset and
|
If pname:size is not equal to ename:VK_WHOLE_SIZE, pname:offset and
|
||||||
pname:size must: specify a range contained within the currently mapped
|
pname:size must: specify a range contained within the currently mapped
|
||||||
|
@ -2566,7 +2590,7 @@ include::../api/protos/vkUnmapMemory.txt[]
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
* [[VUID-vkUnmapMemory-memory-00689]]
|
* [[VUID-vkUnmapMemory-memory-00689]]
|
||||||
pname:memory must: be currently mapped
|
pname:memory must: be currently host mapped
|
||||||
****
|
****
|
||||||
|
|
||||||
include::../validity/protos/vkUnmapMemory.txt[]
|
include::../validity/protos/vkUnmapMemory.txt[]
|
||||||
|
|
|
@ -929,6 +929,40 @@ endif::VK_NV_clip_space_w_scaling[]
|
||||||
If pname:pStages includes a vertex shader stage,
|
If pname:pStages includes a vertex shader stage,
|
||||||
pname:pInputAssemblyState must: be a valid pointer to a valid
|
pname:pInputAssemblyState must: be a valid pointer to a valid
|
||||||
slink:VkPipelineInputAssemblyStateCreateInfo structure
|
slink:VkPipelineInputAssemblyStateCreateInfo structure
|
||||||
|
ifdef::VK_EXT_transform_feedback[]
|
||||||
|
* [[VUID-VkGraphicsPipelineCreateInfo-pStages-02317]]
|
||||||
|
The code:Xfb execution mode can: be specified by only one shader stage
|
||||||
|
in pname:pStages
|
||||||
|
* [[VUID-VkGraphicsPipelineCreateInfo-pStages-02318]]
|
||||||
|
If any shader stage in pname:pStages specifies code:Xfb execution mode
|
||||||
|
it must: be the last vertex processing stage
|
||||||
|
* [[VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02319]]
|
||||||
|
If a
|
||||||
|
sname:VkPipelineRasterizationStateStreamCreateInfoEXT::pname:rasterizationStream
|
||||||
|
value other than zero is specified, all variables in the output
|
||||||
|
interface of the entry point being compiled decorated with
|
||||||
|
code:Position, code:PointSize, code:ClipDistance, or code:CullDistance
|
||||||
|
must: all be decorated with identical code:Stream values that match the
|
||||||
|
pname:rasterizationStream
|
||||||
|
* [[VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02320]]
|
||||||
|
If
|
||||||
|
sname:VkPipelineRasterizationStateStreamCreateInfoEXT::pname:rasterizationStream
|
||||||
|
is zero, or not specified, all variables in the output interface of the
|
||||||
|
entry point being compiled decorated with code:Position, code:PointSize,
|
||||||
|
code:ClipDistance, or code:CullDistance must: all be decorated with a
|
||||||
|
code:Stream value of zero, or must: not specify the code:Stream
|
||||||
|
decoration
|
||||||
|
* [[VUID-VkGraphicsPipelineCreateInfo-geometryStreams-02321]]
|
||||||
|
If the last vertex processing stage is a geometry shader, and that
|
||||||
|
geometry shader uses the code:GeometryStreams capability, then
|
||||||
|
sname:VkPhysicalDeviceTransformFeedbackFeaturesEXT::pname:geometryStreams
|
||||||
|
feature must: be enabled
|
||||||
|
ifdef::VK_NV_mesh_shader[]
|
||||||
|
* [[VUID-VkGraphicsPipelineCreateInfo-None-02322]]
|
||||||
|
If there are any mesh shader stages in the pipeline there must: not be
|
||||||
|
any shader stage in the pipeline with a code:Xfb execution mode.
|
||||||
|
endif::VK_NV_mesh_shader[]
|
||||||
|
endif::VK_EXT_transform_feedback[]
|
||||||
****
|
****
|
||||||
|
|
||||||
include::../validity/structs/VkGraphicsPipelineCreateInfo.txt[]
|
include::../validity/structs/VkGraphicsPipelineCreateInfo.txt[]
|
||||||
|
@ -1836,6 +1870,10 @@ ifdef::VK_EXT_sample_locations[]
|
||||||
slink:VkPipelineSampleLocationsStateCreateInfoEXT when the pipeline was
|
slink:VkPipelineSampleLocationsStateCreateInfoEXT when the pipeline was
|
||||||
created
|
created
|
||||||
endif::VK_EXT_sample_locations[]
|
endif::VK_EXT_sample_locations[]
|
||||||
|
ifdef::VK_EXT_transform_feedback[]
|
||||||
|
* [[VUID-vkCmdBindPipeline-None-02323]]
|
||||||
|
This command must: not be recorded when transform feedback is active
|
||||||
|
endif::VK_EXT_transform_feedback[]
|
||||||
****
|
****
|
||||||
|
|
||||||
include::../validity/protos/vkCmdBindPipeline.txt[]
|
include::../validity/protos/vkCmdBindPipeline.txt[]
|
||||||
|
|
|
@ -205,7 +205,6 @@ If the subpass for which this pipeline is being created does not use color
|
||||||
or depth/stencil attachments, pname:rasterizationSamples must: follow the
|
or depth/stencil attachments, pname:rasterizationSamples must: follow the
|
||||||
rules for a <<renderpass-noattachments, zero-attachment subpass>>.
|
rules for a <<renderpass-noattachments, zero-attachment subpass>>.
|
||||||
|
|
||||||
|
|
||||||
[[primsrast-discard]]
|
[[primsrast-discard]]
|
||||||
== Discarding Primitives Before Rasterization
|
== Discarding Primitives Before Rasterization
|
||||||
|
|
||||||
|
@ -215,6 +214,104 @@ slink:VkPipelineRasterizationStateCreateInfo is enabled.
|
||||||
When enabled, primitives are discarded after they are processed by the last
|
When enabled, primitives are discarded after they are processed by the last
|
||||||
active shader stage in the pipeline before rasterization.
|
active shader stage in the pipeline before rasterization.
|
||||||
|
|
||||||
|
ifdef::VK_EXT_transform_feedback[]
|
||||||
|
|
||||||
|
[[primsrast-stream]]
|
||||||
|
== Controlling the Vertex Stream Used for Rasterization
|
||||||
|
|
||||||
|
By default vertex data output from the last vertex processing stage are
|
||||||
|
directed to vertex stream zero.
|
||||||
|
Geometry shaders can: emit primitives to multiple independent vertex
|
||||||
|
streams.
|
||||||
|
Each vertex emitted by the geometry shader is directed at one of the vertex
|
||||||
|
streams.
|
||||||
|
As vertices are received on each vertex stream, they are arranged into
|
||||||
|
primitives of the type specified by the geometry shader output primitive
|
||||||
|
type.
|
||||||
|
The shading language instructions code:OpEndPrimitive and
|
||||||
|
code:OpEndStreamPrimitive can: be used to end the primitive being assembled
|
||||||
|
on a given vertex stream and start a new empty primitive of the same type.
|
||||||
|
An implementation supports up to
|
||||||
|
sname:VkPhysicalDeviceTransformFeedbackPropertiesEXT::pname:maxTransformFeedbackStreams
|
||||||
|
streams, which is at least 1.
|
||||||
|
The individual streams are numbered 0 through
|
||||||
|
pname:maxTransformFeedbackStreams minus 1.
|
||||||
|
There is no requirement on the order of the streams to which vertices are
|
||||||
|
emitted, and the number of vertices emitted to each vertex stream can: be
|
||||||
|
completely independent, subject only to the
|
||||||
|
sname:VkPhysicalDeviceTransformFeedbackPropertiesEXT::pname:maxTransformFeedbackStreamDataSize
|
||||||
|
and
|
||||||
|
sname:VkPhysicalDeviceTransformFeedbackPropertiesEXT::pname:maxTransformFeedbackBufferDataSize
|
||||||
|
limits.
|
||||||
|
The primitives output from all vertex streams are passed to the transform
|
||||||
|
feedback stage to be captured to transform feedback buffers in the manner
|
||||||
|
specified by the last vertex processing stage shader's code:XfbBuffer,
|
||||||
|
code:XfbStride, and code:Offsets decorations on the output interface
|
||||||
|
variables in the graphics pipeline.
|
||||||
|
To use a vertex stream other than zero, or to use multiple streams, the
|
||||||
|
code:GeometryStreams capability must: be specified.
|
||||||
|
|
||||||
|
By default, the primitives output from vertex stream zero are rasterized.
|
||||||
|
If the implementation supports the
|
||||||
|
slink:VkPhysicalDeviceTransformFeedbackPropertiesEXT::pname:transformFeedbackRasterizationStreamSelect
|
||||||
|
property it is possible to rasterize a vertex stream other than zero.
|
||||||
|
|
||||||
|
By default, geometry shaders that emit vertices to multiple vertex streams
|
||||||
|
are limited to using only the code:OutputPoints output primitive type.
|
||||||
|
If the implementation supports the
|
||||||
|
slink:VkPhysicalDeviceTransformFeedbackPropertiesEXT::pname:transformFeedbackStreamsLinesTriangles
|
||||||
|
property it is possible to emit code:OutputLineStrip or
|
||||||
|
code:OutputTriangleStrip in addition to code:OutputPoints.
|
||||||
|
|
||||||
|
|
||||||
|
[open,refpage='VkPipelineRasterizationStateStreamCreateInfoEXT',desc='Structure defining the geometry stream used for rasterization',type='structs']
|
||||||
|
--
|
||||||
|
|
||||||
|
The vertex stream used for rasterization is specified by adding a
|
||||||
|
sname:VkPipelineRasterizationStateStreamCreateInfoEXT structure to the
|
||||||
|
pname:pNext chain of a slink:VkPipelineRasterizationStateCreateInfo
|
||||||
|
structure.
|
||||||
|
|
||||||
|
The sname:VkPipelineRasterizationStateStreamCreateInfoEXT structure is
|
||||||
|
defined as:
|
||||||
|
|
||||||
|
include::../api/structs/VkPipelineRasterizationStateStreamCreateInfoEXT.txt[]
|
||||||
|
|
||||||
|
* pname:sType is the type of this structure.
|
||||||
|
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||||
|
* pname:flags is reserved for future use.
|
||||||
|
* pname:rasterizationStream is the vertex stream selected for
|
||||||
|
rasterization.
|
||||||
|
|
||||||
|
If this structure is not present, pname:rasterizationStream is assumed to be
|
||||||
|
zero.
|
||||||
|
|
||||||
|
.Valid Usage
|
||||||
|
****
|
||||||
|
* [[VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-geometryStreams-02324]]
|
||||||
|
sname:VkPhysicalDeviceTransformFeedbackFeaturesEXT::pname:geometryStreams
|
||||||
|
must: be enabled
|
||||||
|
* [[VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-rasterizationStream-02325]]
|
||||||
|
pname:rasterizationStream must: be less than
|
||||||
|
slink:VkPhysicalDeviceTransformFeedbackPropertiesEXT::pname:maxTransformFeedbackStreams
|
||||||
|
* [[VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-rasterizationStream-02326]]
|
||||||
|
pname:rasterizationStream must: be zero if
|
||||||
|
sname:VkPhysicalDeviceTransformFeedbackPropertiesEXT::pname:transformFeedbackRasterizationStreamSelect
|
||||||
|
is ename:VK_FALSE
|
||||||
|
****
|
||||||
|
|
||||||
|
include::../validity/structs/VkPipelineRasterizationStateStreamCreateInfoEXT.txt[]
|
||||||
|
--
|
||||||
|
|
||||||
|
[open,refpage='VkPipelineRasterizationStateStreamCreateFlagsEXT',desc='Reserved for future use',type='enums']
|
||||||
|
--
|
||||||
|
include::../api/flags/VkPipelineRasterizationStateStreamCreateFlagsEXT.txt[]
|
||||||
|
|
||||||
|
sname:VkPipelineRasterizationStateStreamCreateFlagsEXT is a bitmask type for
|
||||||
|
setting a mask, but is currently reserved for future use.
|
||||||
|
--
|
||||||
|
|
||||||
|
endif::VK_EXT_transform_feedback[]
|
||||||
|
|
||||||
[[primrast-order]]
|
[[primrast-order]]
|
||||||
== Rasterization Order
|
== Rasterization Order
|
||||||
|
@ -658,7 +755,7 @@ include::../api/protos/vkCmdBindShadingRateImageNV.txt[]
|
||||||
recorded.
|
recorded.
|
||||||
* pname:imageView is an image view handle that specifies the shading rate
|
* pname:imageView is an image view handle that specifies the shading rate
|
||||||
image.
|
image.
|
||||||
pname:imageView may: be set to ename:VK_NULL_HANDLE, which is equivalent
|
pname:imageView may: be set to dlink:VK_NULL_HANDLE, which is equivalent
|
||||||
to specifying a view of an image filled with zero values.
|
to specifying a view of an image filled with zero values.
|
||||||
* pname:imageLayout is the layout that the image subresources accessible
|
* pname:imageLayout is the layout that the image subresources accessible
|
||||||
from pname:imageView will be in when the shading rate image is accessed.
|
from pname:imageView will be in when the shading rate image is accessed.
|
||||||
|
@ -669,21 +766,21 @@ include::../api/protos/vkCmdBindShadingRateImageNV.txt[]
|
||||||
The <<features-features-shadingRateImage,shading rate image>> feature
|
The <<features-features-shadingRateImage,shading rate image>> feature
|
||||||
must: be enabled.
|
must: be enabled.
|
||||||
* [[VUID-vkCmdBindShadingRateImageNV-imageView-02059]]
|
* [[VUID-vkCmdBindShadingRateImageNV-imageView-02059]]
|
||||||
If pname:imageView is not ename:VK_NULL_HANDLE, it must: be a valid
|
If pname:imageView is not dlink:VK_NULL_HANDLE, it must: be a valid
|
||||||
slink:VkImageView handle of type ename:VK_IMAGE_VIEW_TYPE_2D or
|
slink:VkImageView handle of type ename:VK_IMAGE_VIEW_TYPE_2D or
|
||||||
ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY.
|
ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY.
|
||||||
* [[VUID-vkCmdBindShadingRateImageNV-imageView-02060]]
|
* [[VUID-vkCmdBindShadingRateImageNV-imageView-02060]]
|
||||||
If pname:imageView is not ename:VK_NULL_HANDLE, it must: have a format
|
If pname:imageView is not dlink:VK_NULL_HANDLE, it must: have a format
|
||||||
of ename:VK_FORMAT_R8_UINT.
|
of ename:VK_FORMAT_R8_UINT.
|
||||||
* [[VUID-vkCmdBindShadingRateImageNV-imageView-02061]]
|
* [[VUID-vkCmdBindShadingRateImageNV-imageView-02061]]
|
||||||
If pname:imageView is not ename:VK_NULL_HANDLE, the image must: have
|
If pname:imageView is not dlink:VK_NULL_HANDLE, the image must: have
|
||||||
been created with ename:VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV set
|
been created with ename:VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV set
|
||||||
* [[VUID-vkCmdBindShadingRateImageNV-imageView-02062]]
|
* [[VUID-vkCmdBindShadingRateImageNV-imageView-02062]]
|
||||||
If pname:imageView is not ename:VK_NULL_HANDLE, pname:imageLayout must:
|
If pname:imageView is not dlink:VK_NULL_HANDLE, pname:imageLayout must:
|
||||||
match the actual sname:VkImageLayout of each subresource accessible from
|
match the actual sname:VkImageLayout of each subresource accessible from
|
||||||
pname:imageView at the time the subresource is accessed.
|
pname:imageView at the time the subresource is accessed.
|
||||||
* [[VUID-vkCmdBindShadingRateImageNV-imageLayout-02063]]
|
* [[VUID-vkCmdBindShadingRateImageNV-imageLayout-02063]]
|
||||||
If pname:imageView is not ename:VK_NULL_HANDLE, pname:imageLayout must:
|
If pname:imageView is not dlink:VK_NULL_HANDLE, pname:imageLayout must:
|
||||||
be ename:VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV or
|
be ename:VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV or
|
||||||
ename:VK_IMAGE_LAYOUT_GENERAL.
|
ename:VK_IMAGE_LAYOUT_GENERAL.
|
||||||
****
|
****
|
||||||
|
@ -707,13 +804,13 @@ layer _l_, where _l_ is the layer of the framebuffer being rendered to.
|
||||||
If _l_ is greater than or equal to the number of layers in the image view,
|
If _l_ is greater than or equal to the number of layers in the image view,
|
||||||
layer zero will be used.
|
layer zero will be used.
|
||||||
|
|
||||||
If the bound shading rate image view is not ename:VK_NULL_HANDLE and
|
If the bound shading rate image view is not dlink:VK_NULL_HANDLE and
|
||||||
contains a texel with coordinates (_u_,_v_) in layer _l_ (if applicable),
|
contains a texel with coordinates (_u_,_v_) in layer _l_ (if applicable),
|
||||||
the single unsigned integer component for that texel will be used as the
|
the single unsigned integer component for that texel will be used as the
|
||||||
shading rate index.
|
shading rate index.
|
||||||
If the (_u_,_v_) coordinate is outside the extents of the subresource used
|
If the (_u_,_v_) coordinate is outside the extents of the subresource used
|
||||||
by the shading rate image view, or if the image view is
|
by the shading rate image view, or if the image view is
|
||||||
ename:VK_NULL_HANDLE, the shading rate index is zero.
|
dlink:VK_NULL_HANDLE, the shading rate index is zero.
|
||||||
If the shading rate image view has multiple mipmap levels, the base level
|
If the shading rate image view has multiple mipmap levels, the base level
|
||||||
identified by sname:VkImageSubresourceRange::pname:baseMipLevel will be
|
identified by sname:VkImageSubresourceRange::pname:baseMipLevel will be
|
||||||
used.
|
used.
|
||||||
|
|
|
@ -140,6 +140,10 @@ include::../api/enums/VkQueryType.txt[]
|
||||||
pipeline statistics query>>.
|
pipeline statistics query>>.
|
||||||
* ename:VK_QUERY_TYPE_TIMESTAMP specifies a <<queries-timestamps,
|
* ename:VK_QUERY_TYPE_TIMESTAMP specifies a <<queries-timestamps,
|
||||||
timestamp query>>.
|
timestamp query>>.
|
||||||
|
ifdef::VK_EXT_transform_feedback[]
|
||||||
|
* ename:VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT specifies a
|
||||||
|
<<queries-transform-feedback, transform feedback query>>.
|
||||||
|
endif::VK_EXT_transform_feedback[]
|
||||||
|
|
||||||
--
|
--
|
||||||
|
|
||||||
|
@ -335,11 +339,116 @@ ifdef::VK_VERSION_1_1,VK_KHR_multiview[]
|
||||||
view mask must: be less than or equal to the number of queries in
|
view mask must: be less than or equal to the number of queries in
|
||||||
pname:queryPool
|
pname:queryPool
|
||||||
endif::VK_VERSION_1_1,VK_KHR_multiview[]
|
endif::VK_VERSION_1_1,VK_KHR_multiview[]
|
||||||
|
ifdef::VK_EXT_transform_feedback[]
|
||||||
|
* [[VUID-vkCmdBeginQuery-queryType-02327]]
|
||||||
|
If the pname:queryType used to create pname:queryPool was
|
||||||
|
ename:VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT the
|
||||||
|
sname:VkCommandPool that pname:commandBuffer was allocated from must:
|
||||||
|
support graphics operations
|
||||||
|
* [[VUID-vkCmdBeginQuery-queryType-02328]]
|
||||||
|
If the pname:queryType used to create pname:queryPool was
|
||||||
|
ename:VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT then
|
||||||
|
sname:VkPhysicalDeviceTransformFeedbackPropertiesEXT::pname:transformFeedbackQueries
|
||||||
|
must: be supported
|
||||||
|
endif::VK_EXT_transform_feedback[]
|
||||||
****
|
****
|
||||||
|
|
||||||
include::../validity/protos/vkCmdBeginQuery.txt[]
|
include::../validity/protos/vkCmdBeginQuery.txt[]
|
||||||
--
|
--
|
||||||
|
|
||||||
|
ifdef::VK_EXT_transform_feedback[]
|
||||||
|
|
||||||
|
[open,refpage='vkCmdBeginQueryIndexedEXT',desc='Begin an indexed query',type='protos']
|
||||||
|
--
|
||||||
|
|
||||||
|
To begin an indexed query, call:
|
||||||
|
|
||||||
|
include::../api/protos/vkCmdBeginQueryIndexedEXT.txt[]
|
||||||
|
|
||||||
|
* pname:commandBuffer is the command buffer into which this command will
|
||||||
|
be recorded.
|
||||||
|
* pname:queryPool is the query pool that will manage the results of the
|
||||||
|
query.
|
||||||
|
* pname:query is the query index within the query pool that will contain
|
||||||
|
the results.
|
||||||
|
* pname:flags is a bitmask of elink:VkQueryControlFlagBits specifying
|
||||||
|
constraints on the types of queries that can: be performed.
|
||||||
|
* pname:index is the query type specific index.
|
||||||
|
When the query type is pname:VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT
|
||||||
|
the index represents the vertex stream.
|
||||||
|
|
||||||
|
The fname:vkCmdBeginQueryIndexedEXT command operates the same as the
|
||||||
|
flink:vkCmdBeginQuery command, except that it also accepts a query type
|
||||||
|
specific pname:index parameter.
|
||||||
|
|
||||||
|
.Valid Usage
|
||||||
|
****
|
||||||
|
* [[VUID-vkCmdBeginQueryIndexedEXT-queryPool-02329]]
|
||||||
|
pname:queryPool must: have been created with a pname:queryType that
|
||||||
|
differs from that of any queries that are
|
||||||
|
<<queries-operation-active,active>> within pname:commandBuffer
|
||||||
|
* [[VUID-vkCmdBeginQueryIndexedEXT-None-02330]]
|
||||||
|
All queries used by the command must: be unavailable
|
||||||
|
* [[VUID-vkCmdBeginQueryIndexedEXT-queryType-02331]]
|
||||||
|
If the <<features-features-occlusionQueryPrecise,precise occlusion
|
||||||
|
queries>> feature is not enabled, or the pname:queryType used to create
|
||||||
|
pname:queryPool was not ename:VK_QUERY_TYPE_OCCLUSION, pname:flags must:
|
||||||
|
not contain ename:VK_QUERY_CONTROL_PRECISE_BIT
|
||||||
|
* [[VUID-vkCmdBeginQueryIndexedEXT-query-02332]]
|
||||||
|
pname:query must: be less than the number of queries in pname:queryPool
|
||||||
|
* [[VUID-vkCmdBeginQueryIndexedEXT-queryType-02333]]
|
||||||
|
If the pname:queryType used to create pname:queryPool was
|
||||||
|
ename:VK_QUERY_TYPE_OCCLUSION, the sname:VkCommandPool that
|
||||||
|
pname:commandBuffer was allocated from must: support graphics operations
|
||||||
|
* [[VUID-vkCmdBeginQueryIndexedEXT-queryType-02334]]
|
||||||
|
If the pname:queryType used to create pname:queryPool was
|
||||||
|
ename:VK_QUERY_TYPE_PIPELINE_STATISTICS and any of the
|
||||||
|
pname:pipelineStatistics indicate graphics operations, the
|
||||||
|
sname:VkCommandPool that pname:commandBuffer was allocated from must:
|
||||||
|
support graphics operations
|
||||||
|
* [[VUID-vkCmdBeginQueryIndexedEXT-queryType-02335]]
|
||||||
|
If the pname:queryType used to create pname:queryPool was
|
||||||
|
ename:VK_QUERY_TYPE_PIPELINE_STATISTICS and any of the
|
||||||
|
pname:pipelineStatistics indicate compute operations, the
|
||||||
|
sname:VkCommandPool that pname:commandBuffer was allocated from must:
|
||||||
|
support compute operations
|
||||||
|
ifdef::VK_VERSION_1_1[]
|
||||||
|
* [[VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-02336]]
|
||||||
|
pname:commandBuffer must: not be a protected command buffer
|
||||||
|
endif::VK_VERSION_1_1[]
|
||||||
|
ifdef::VK_VERSION_1_1,VK_KHR_multiview[]
|
||||||
|
* [[VUID-vkCmdBeginQueryIndexedEXT-query-02337]]
|
||||||
|
If fname:vkCmdBeginQuery is called within a render pass instance, the
|
||||||
|
sum of pname:query and the number of bits set in the current subpass's
|
||||||
|
view mask must: be less than or equal to the number of queries in
|
||||||
|
pname:queryPool
|
||||||
|
endif::VK_VERSION_1_1,VK_KHR_multiview[]
|
||||||
|
* [[VUID-vkCmdBeginQueryIndexedEXT-queryType-02338]]
|
||||||
|
If the pname:queryType used to create pname:queryPool was
|
||||||
|
ename:VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT the
|
||||||
|
sname:VkCommandPool that pname:commandBuffer was allocated from must:
|
||||||
|
support graphics operations
|
||||||
|
* [[VUID-vkCmdBeginQueryIndexedEXT-queryType-02339]]
|
||||||
|
If the pname:queryType used to create pname:queryPool was
|
||||||
|
ename:VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT the pname:index
|
||||||
|
parameter must: be less than
|
||||||
|
sname:VkPhysicalDeviceTransformFeedbackPropertiesEXT::pname:maxTransformFeedbackStreams
|
||||||
|
* [[VUID-vkCmdBeginQueryIndexedEXT-queryType-02340]]
|
||||||
|
If the pname:queryType used to create pname:queryPool was not
|
||||||
|
ename:VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT the pname:index must:
|
||||||
|
be zero
|
||||||
|
* [[VUID-vkCmdBeginQueryIndexedEXT-queryType-02341]]
|
||||||
|
If the pname:queryType used to create pname:queryPool was
|
||||||
|
ename:VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT then
|
||||||
|
sname:VkPhysicalDeviceTransformFeedbackPropertiesEXT::pname:transformFeedbackQueries
|
||||||
|
must: be supported
|
||||||
|
****
|
||||||
|
|
||||||
|
include::../validity/protos/vkCmdBeginQueryIndexedEXT.txt[]
|
||||||
|
--
|
||||||
|
endif::VK_EXT_transform_feedback[]
|
||||||
|
|
||||||
|
|
||||||
[open,refpage='VkQueryControlFlagBits',desc='Bitmask specifying constraints on a query',type='enums']
|
[open,refpage='VkQueryControlFlagBits',desc='Bitmask specifying constraints on a query',type='enums']
|
||||||
--
|
--
|
||||||
|
|
||||||
|
@ -411,6 +520,60 @@ endif::VK_VERSION_1_1,VK_KHR_multiview[]
|
||||||
include::../validity/protos/vkCmdEndQuery.txt[]
|
include::../validity/protos/vkCmdEndQuery.txt[]
|
||||||
--
|
--
|
||||||
|
|
||||||
|
ifdef::VK_EXT_transform_feedback[]
|
||||||
|
[open,refpage='vkCmdEndQueryIndexedEXT',desc='Ends a query',type='protos']
|
||||||
|
--
|
||||||
|
|
||||||
|
To end an indexed query after the set of desired draw or dispatch commands
|
||||||
|
is recorded, call:
|
||||||
|
|
||||||
|
include::../api/protos/vkCmdEndQueryIndexedEXT.txt[]
|
||||||
|
|
||||||
|
* pname:commandBuffer is the command buffer into which this command will
|
||||||
|
be recorded.
|
||||||
|
* pname:queryPool is the query pool that is managing the results of the
|
||||||
|
query.
|
||||||
|
* pname:query is the query index within the query pool where the result is
|
||||||
|
stored.
|
||||||
|
* pname:index is the query type specific index.
|
||||||
|
|
||||||
|
The fname:vkCmdEndQueryIndexedEXT command operates the same as the
|
||||||
|
flink:vkCmdEndQuery command, except that it also accepts a query type
|
||||||
|
specific pname:index parameter.
|
||||||
|
|
||||||
|
.Valid Usage
|
||||||
|
****
|
||||||
|
* [[VUID-vkCmdEndQueryIndexedEXT-None-02342]]
|
||||||
|
All queries used by the command must: be
|
||||||
|
<<queries-operation-active,active>>
|
||||||
|
* [[VUID-vkCmdEndQueryIndexedEXT-query-02343]]
|
||||||
|
pname:query must: be less than the number of queries in pname:queryPool
|
||||||
|
ifdef::VK_VERSION_1_1[]
|
||||||
|
* [[VUID-vkCmdEndQueryIndexedEXT-commandBuffer-02344]]
|
||||||
|
pname:commandBuffer must: not be a protected command buffer
|
||||||
|
endif::VK_VERSION_1_1[]
|
||||||
|
ifdef::VK_VERSION_1_1,VK_KHR_multiview[]
|
||||||
|
* [[VUID-vkCmdEndQueryIndexedEXT-query-02345]]
|
||||||
|
If fname:vkCmdEndQuery is called within a render pass instance, the sum
|
||||||
|
of pname:query and the number of bits set in the current subpass's view
|
||||||
|
mask must: be less than or equal to the number of queries in
|
||||||
|
pname:queryPool
|
||||||
|
endif::VK_VERSION_1_1,VK_KHR_multiview[]
|
||||||
|
* [[VUID-vkCmdEndQueryIndexedEXT-queryType-02346]]
|
||||||
|
If the pname:queryType used to create pname:queryPool was
|
||||||
|
ename:VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT the pname:index
|
||||||
|
parameter must: be less than
|
||||||
|
sname:VkPhysicalDeviceTransformFeedbackPropertiesEXT::pname:maxTransformFeedbackStreams
|
||||||
|
* [[VUID-vkCmdEndQueryIndexedEXT-queryType-02347]]
|
||||||
|
If the pname:queryType used to create pname:queryPool was not
|
||||||
|
ename:VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT the pname:index must:
|
||||||
|
be zero
|
||||||
|
****
|
||||||
|
|
||||||
|
include::../validity/protos/vkCmdEndQueryIndexedEXT.txt[]
|
||||||
|
--
|
||||||
|
endif::VK_EXT_transform_feedback[]
|
||||||
|
|
||||||
[[queries-operation-memorylayout]]
|
[[queries-operation-memorylayout]]
|
||||||
An application can: retrieve results either by requesting they be written
|
An application can: retrieve results either by requesting they be written
|
||||||
into application-provided memory, or by requesting they be copied into a
|
into application-provided memory, or by requesting they be copied into a
|
||||||
|
@ -434,6 +597,18 @@ In either case, the layout in memory is defined as follows:
|
||||||
the statistics values are written in bit order starting from the least
|
the statistics values are written in bit order starting from the least
|
||||||
significant bit.
|
significant bit.
|
||||||
Timestamps write one integer value.
|
Timestamps write one integer value.
|
||||||
|
ifdef::VK_EXT_transform_feedback[]
|
||||||
|
Transform feedback queries write two integers; the first integer is the
|
||||||
|
number of primitives successfully written to the corresponding transform
|
||||||
|
feedback buffer and the second is the number of primitives output to the
|
||||||
|
vertex stream, regardless of whether they were successfully captured or
|
||||||
|
not.
|
||||||
|
In other words, if the transform feedback buffer was sized too small for
|
||||||
|
the number of primitives output by the vertex stream, the first integer
|
||||||
|
represents the number of primitives actually written and the second is
|
||||||
|
the number that would have been written if all the transform feedback
|
||||||
|
buffers associated with that vertex stream were large enough.
|
||||||
|
endif::VK_EXT_transform_feedback[]
|
||||||
* If more than one query is retrieved and pname:stride is not at least as
|
* If more than one query is retrieved and pname:stride is not at least as
|
||||||
large as the size of the array of integers corresponding to a single
|
large as the size of the array of integers corresponding to a single
|
||||||
query, the values written to memory are undefined:.
|
query, the values written to memory are undefined:.
|
||||||
|
@ -1047,3 +1222,39 @@ endif::VK_VERSION_1_1,VK_KHR_multiview[]
|
||||||
|
|
||||||
include::../validity/protos/vkCmdWriteTimestamp.txt[]
|
include::../validity/protos/vkCmdWriteTimestamp.txt[]
|
||||||
--
|
--
|
||||||
|
|
||||||
|
ifdef::VK_EXT_transform_feedback[]
|
||||||
|
|
||||||
|
[[queries-transform-feedback]]
|
||||||
|
== Transform Feedback Queries
|
||||||
|
|
||||||
|
Transform feedback queries track the number of primitives attempted to be
|
||||||
|
written and actually written, by the vertex stream being captured, to a
|
||||||
|
transform feedback buffer.
|
||||||
|
This query is updated during draw commands while transform feedback is
|
||||||
|
active.
|
||||||
|
The number of primitives actually written will be less than the number
|
||||||
|
attempted to be written if the bound transform feedback buffer size was too
|
||||||
|
small for the number of primitives actually drawn.
|
||||||
|
Primitives are not written beyond the bound range of the transform feedback
|
||||||
|
buffer.
|
||||||
|
A transform feedback query is begun and ended by calling
|
||||||
|
fname:vkCmdBeginQuery and fname:vkCmdEndQuery, respectively to query for
|
||||||
|
vertex stream zero.
|
||||||
|
fname:vkCmdBeginQueryIndexedEXT and fname:vkCmdEndQueryIndexexEXT can: be
|
||||||
|
used to begin and end transform feedback queries for any supported vertex
|
||||||
|
stream.
|
||||||
|
When a transform feedback query begins, the count of primitives written and
|
||||||
|
primitives needed starts from zero.
|
||||||
|
For each drawing command, the count is incremented as vertex attribute
|
||||||
|
outputs are captured to the transform feedback buffers while transform
|
||||||
|
feedback is active.
|
||||||
|
|
||||||
|
When a transform feedback query finishes, the result for that query is
|
||||||
|
marked as available.
|
||||||
|
The application can: then either copy the result to a buffer (via
|
||||||
|
fname:vkCmdCopyQueryPoolResults) or request it be put into host memory (via
|
||||||
|
fname:vkGetQueryPoolResults).
|
||||||
|
|
||||||
|
|
||||||
|
endif::VK_EXT_transform_feedback[]
|
||||||
|
|
|
@ -584,7 +584,7 @@ endif::VK_KHR_maintenance2[]
|
||||||
* [[VUID-VkInputAttachmentAspectReference-aspectMask-01964]]
|
* [[VUID-VkInputAttachmentAspectReference-aspectMask-01964]]
|
||||||
pname:aspectMask must: not include ename:VK_IMAGE_ASPECT_METADATA_BIT
|
pname:aspectMask must: not include ename:VK_IMAGE_ASPECT_METADATA_BIT
|
||||||
ifdef::VK_EXT_image_drm_format_modifier[]
|
ifdef::VK_EXT_image_drm_format_modifier[]
|
||||||
* [[VUID-VkInputAttachmentAspectReferenceKHR-aspectMask-02250]]
|
* [[VUID-VkInputAttachmentAspectReference-aspectMask-02250]]
|
||||||
pname:aspectMask must: not include
|
pname:aspectMask must: not include
|
||||||
etext:VK_IMAGE_ASPECT_MEMORY_PLANE___i___BIT_EXT for any index __i__.
|
etext:VK_IMAGE_ASPECT_MEMORY_PLANE___i___BIT_EXT for any index __i__.
|
||||||
endif::VK_EXT_image_drm_format_modifier[]
|
endif::VK_EXT_image_drm_format_modifier[]
|
||||||
|
@ -1199,6 +1199,12 @@ if each view were a separate attachment.
|
||||||
|
|
||||||
endif::VK_VERSION_1_1,VK_KHR_multiview[]
|
endif::VK_VERSION_1_1,VK_KHR_multiview[]
|
||||||
|
|
||||||
|
ifdef::VK_EXT_transform_feedback[]
|
||||||
|
If any two subpasses of a render pass activate transform feedback to the
|
||||||
|
same bound transform feedback buffers, a subpass dependency must: be
|
||||||
|
included (either directly or via some intermediate subpasses) between them.
|
||||||
|
endif::VK_EXT_transform_feedback[]
|
||||||
|
|
||||||
ifdef::editing-notes[]
|
ifdef::editing-notes[]
|
||||||
[NOTE]
|
[NOTE]
|
||||||
.editing-note
|
.editing-note
|
||||||
|
@ -1558,6 +1564,12 @@ respectively.
|
||||||
corresponding element of pname:pSubpasses includes more than one bit,
|
corresponding element of pname:pSubpasses includes more than one bit,
|
||||||
its pname:dependencyFlags member must: include
|
its pname:dependencyFlags member must: include
|
||||||
ename:VK_DEPENDENCY_VIEW_LOCAL_BIT
|
ename:VK_DEPENDENCY_VIEW_LOCAL_BIT
|
||||||
|
ifdef::VK_EXT_transform_feedback[]
|
||||||
|
* [[VUID-VkRenderPassCreateInfo2KHR-None-02348]]
|
||||||
|
If any two subpasses activate transform feedback to the same bound
|
||||||
|
transform feedback buffers a subpass dependency must: be included
|
||||||
|
(either directly or via some intermediate subpasses) between them
|
||||||
|
endif::VK_EXT_transform_feedback[]
|
||||||
****
|
****
|
||||||
|
|
||||||
include::../validity/structs/VkRenderPassCreateInfo2KHR.txt[]
|
include::../validity/structs/VkRenderPassCreateInfo2KHR.txt[]
|
||||||
|
@ -2774,6 +2786,11 @@ commands for that subpass.
|
||||||
* [[VUID-vkCmdNextSubpass-None-00909]]
|
* [[VUID-vkCmdNextSubpass-None-00909]]
|
||||||
The current subpass index must: be less than the number of subpasses in
|
The current subpass index must: be less than the number of subpasses in
|
||||||
the render pass minus one
|
the render pass minus one
|
||||||
|
ifdef::VK_EXT_transform_feedback[]
|
||||||
|
* [[VUID-vkCmdNextSubpass-None-02349]]
|
||||||
|
This command must: not be recorded when transform feedback is active
|
||||||
|
endif::VK_EXT_transform_feedback[]
|
||||||
|
|
||||||
****
|
****
|
||||||
|
|
||||||
include::../validity/protos/vkCmdNextSubpass.txt[]
|
include::../validity/protos/vkCmdNextSubpass.txt[]
|
||||||
|
@ -2808,6 +2825,10 @@ a flat parameter.
|
||||||
* [[VUID-vkCmdNextSubpass2KHR-None-03102]]
|
* [[VUID-vkCmdNextSubpass2KHR-None-03102]]
|
||||||
The current subpass index must: be less than the number of subpasses in
|
The current subpass index must: be less than the number of subpasses in
|
||||||
the render pass minus one
|
the render pass minus one
|
||||||
|
ifdef::VK_EXT_transform_feedback[]
|
||||||
|
* [[VUID-vkCmdNextSubpass2KHR-None-02350]]
|
||||||
|
This command must: not be recorded when transform feedback is active
|
||||||
|
endif::VK_EXT_transform_feedback[]
|
||||||
****
|
****
|
||||||
|
|
||||||
include::../validity/protos/vkCmdNextSubpass2KHR.txt[]
|
include::../validity/protos/vkCmdNextSubpass2KHR.txt[]
|
||||||
|
@ -2834,6 +2855,11 @@ the final subpass.
|
||||||
* [[VUID-vkCmdEndRenderPass-None-00910]]
|
* [[VUID-vkCmdEndRenderPass-None-00910]]
|
||||||
The current subpass index must: be equal to the number of subpasses in
|
The current subpass index must: be equal to the number of subpasses in
|
||||||
the render pass minus one
|
the render pass minus one
|
||||||
|
ifdef::VK_EXT_transform_feedback[]
|
||||||
|
* [[VUID-vkCmdEndRenderPass-None-02351]]
|
||||||
|
This command must: not be recorded when transform feedback is active
|
||||||
|
endif::VK_EXT_transform_feedback[]
|
||||||
|
|
||||||
****
|
****
|
||||||
|
|
||||||
include::../validity/protos/vkCmdEndRenderPass.txt[]
|
include::../validity/protos/vkCmdEndRenderPass.txt[]
|
||||||
|
@ -2863,6 +2889,10 @@ flink:vkCmdEndRenderPass, except that it is extensible.
|
||||||
* [[VUID-vkCmdEndRenderPass2KHR-None-03103]]
|
* [[VUID-vkCmdEndRenderPass2KHR-None-03103]]
|
||||||
The current subpass index must: be equal to the number of subpasses in
|
The current subpass index must: be equal to the number of subpasses in
|
||||||
the render pass minus one
|
the render pass minus one
|
||||||
|
ifdef::VK_EXT_transform_feedback[]
|
||||||
|
* [[VUID-vkCmdEndRenderPass2KHR-None-02352]]
|
||||||
|
This command must: not be recorded when transform feedback is active
|
||||||
|
endif::VK_EXT_transform_feedback[]
|
||||||
****
|
****
|
||||||
|
|
||||||
include::../validity/protos/vkCmdEndRenderPass2KHR.txt[]
|
include::../validity/protos/vkCmdEndRenderPass2KHR.txt[]
|
||||||
|
|
|
@ -225,6 +225,15 @@ ifdef::VK_EXT_conditional_rendering[]
|
||||||
buffer is suitable for passing as the pname:buffer parameter to
|
buffer is suitable for passing as the pname:buffer parameter to
|
||||||
flink:vkCmdBeginConditionalRenderingEXT.
|
flink:vkCmdBeginConditionalRenderingEXT.
|
||||||
endif::VK_EXT_conditional_rendering[]
|
endif::VK_EXT_conditional_rendering[]
|
||||||
|
ifdef::VK_EXT_transform_feedback[]
|
||||||
|
* ename:VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT specifies that
|
||||||
|
the buffer is suitable for using for binding as a transform feedback
|
||||||
|
buffer with flink:vkCmdBindTransformFeedbackBuffersEXT.
|
||||||
|
* ename:VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT
|
||||||
|
specifies that the buffer is suitable for using as a counter buffer with
|
||||||
|
flink:vkCmdBeginTransformFeedbackEXT and
|
||||||
|
flink:vkCmdEndTransformFeedbackEXT.
|
||||||
|
endif::VK_EXT_transform_feedback[]
|
||||||
|
|
||||||
--
|
--
|
||||||
|
|
||||||
|
@ -647,17 +656,6 @@ which the limiting values are derived.
|
||||||
The limiting values are referenced by the relevant valid usage statements of
|
The limiting values are referenced by the relevant valid usage statements of
|
||||||
sname:VkImageCreateInfo.
|
sname:VkImageCreateInfo.
|
||||||
|
|
||||||
ifdef::VK_VERSION_1_1,VK_KHR_external_memory_capabilities[]
|
|
||||||
* Let `VkExternalMemoryHandleTypeFlags imageCreateExternalMemoryHandles` be
|
|
||||||
the set of external memory handle types that may: be used with the
|
|
||||||
resultant image.
|
|
||||||
If sname:VkImageCreateInfo::pname:pNext contains an instance of
|
|
||||||
slink:VkExternalMemoryImageCreateInfo, then
|
|
||||||
pname:imageCreateExternalMemoryHandles is the value of
|
|
||||||
slink:VkExternalMemoryImageCreateInfo::pname:handleTypes.
|
|
||||||
Otherwise, pname:imageCreateExternalMemoryHandles is `0`
|
|
||||||
endif::VK_VERSION_1_1,VK_KHR_external_memory_capabilities[]
|
|
||||||
|
|
||||||
ifdef::VK_EXT_image_drm_format_modifier[]
|
ifdef::VK_EXT_image_drm_format_modifier[]
|
||||||
* Let `uint64_t imageCreateDrmFormatModifiers[]` be the set of
|
* Let `uint64_t imageCreateDrmFormatModifiers[]` be the set of
|
||||||
<<glossary-drm-format-modifier,Linux DRM format modifiers>> that the
|
<<glossary-drm-format-modifier,Linux DRM format modifiers>> that the
|
||||||
|
@ -743,36 +741,58 @@ ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||||
pname:imageCreateImageFormatPropertiesList is
|
pname:imageCreateImageFormatPropertiesList is
|
||||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||||
the list of structures obtained by calling
|
the list of structures obtained by calling
|
||||||
flink:vkGetPhysicalDeviceImageFormatProperties2 for each bit in
|
flink:vkGetPhysicalDeviceImageFormatProperties2, possibly multiple
|
||||||
pname:imageCreateExternalMemoryHandles, with
|
times, as follows:
|
||||||
slink:VkPhysicalDeviceExternalImageFormatInfo::pname:handleType set to
|
*** The parameters
|
||||||
that bit
|
slink:VkPhysicalDeviceImageFormatInfo2::pname:format,
|
||||||
ifndef::VK_EXT_image_drm_format_modifier[.]
|
pname:imageType, pname:tiling, pname:usage, and pname:flags must:
|
||||||
ifdef::VK_EXT_image_drm_format_modifier[,]
|
be equal to those in sname:VkImageCreateInfo.
|
||||||
|
*** If slink:VkImageCreateInfo::pname:pNext contains an instance of
|
||||||
|
slink:VkExternalMemoryImageCreateInfo where pname:handleTypes is
|
||||||
|
not `0`, then slink:VkPhysicalDeviceImageFormatInfo2::pname:pNext
|
||||||
|
must: contain an instance of
|
||||||
|
slink:VkPhysicalDeviceExternalImageFormatInfo where
|
||||||
|
pname:handleType is not `0`; and
|
||||||
|
flink:vkGetPhysicalDeviceImageFormatProperties2 must: be called for
|
||||||
|
each handle type in
|
||||||
|
slink:VkExternalMemoryImageCreateInfo::pname:handleTypes,
|
||||||
|
successively setting
|
||||||
|
slink:VkPhysicalDeviceExternalImageFormatInfo::pname:handleType on
|
||||||
|
each call.
|
||||||
|
*** If slink:VkImageCreateInfo::pname:pNext contains no instance of
|
||||||
|
slink:VkExternalMemoryImageCreateInfo or contains an instance where
|
||||||
|
pname:handleTypes is `0`, then
|
||||||
|
slink:VkPhysicalDeviceImageFormatInfo2::pname:pNext must: either
|
||||||
|
contain no instance of
|
||||||
|
slink:VkPhysicalDeviceExternalImageFormatInfo or contain an
|
||||||
|
instance where pname:handleType is `0`.
|
||||||
ifdef::VK_EXT_image_drm_format_modifier[]
|
ifdef::VK_EXT_image_drm_format_modifier[]
|
||||||
and for each modifier in pname:imageCreateDrmFormatModifiers, with
|
*** If pname:tiling is ename:VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT,
|
||||||
slink:VkPhysicalDeviceImageDrmFormatModifierInfoEXT::pname:drmFormatModifier
|
then slink:VkPhysicalDeviceImageFormatInfo2::pname:pNext must:
|
||||||
set to that modifier.
|
contain an instance of
|
||||||
|
slink:VkPhysicalDeviceImageDrmFormatModifierInfoEXT where
|
||||||
|
pname:sharingMode is equal to
|
||||||
|
slink:VkImageCreateInfo::pname:sharingMode; and, if
|
||||||
|
pname:sharingMode is ename:VK_SHARING_MODE_CONCURRENT, then
|
||||||
|
pname:queueFamilyIndexCount and pname:pQueueFamilyIndices must: be
|
||||||
|
equal to those in slink:VkImageCreateInfo; and, if pname:flags
|
||||||
|
contains ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT, then the
|
||||||
|
instance of slink:VkImageFormatListCreateInfoKHR in the pname:pNext
|
||||||
|
chain of slink:VkPhysicalDeviceImageFormatInfo2 must: be equivalent
|
||||||
|
to the one in the pname:pNext chain of slink:VkImageCreateInfo; and
|
||||||
|
flink:vkGetPhysicalDeviceImageFormatProperties2 must: be called for
|
||||||
|
each modifier in pname:imageCreateDrmFormatModifiers, successively
|
||||||
|
setting
|
||||||
|
slink:VkPhysicalDeviceImageDrmFormatModifierInfoEXT::pname:drmFormatModifier
|
||||||
|
on each call.
|
||||||
|
*** If pname:tiling is not
|
||||||
|
ename:VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, then
|
||||||
|
slink:VkPhysicalDeviceImageFormatInfo2::pname:pNext must: contain
|
||||||
|
no instance of slink:VkPhysicalDeviceImageDrmFormatModifierInfoEXT.
|
||||||
endif::VK_EXT_image_drm_format_modifier[]
|
endif::VK_EXT_image_drm_format_modifier[]
|
||||||
(If pname:imageCreateExternalMemoryHandles is empty, then
|
*** If any call to flink:vkGetPhysicalDeviceImageFormatProperties2
|
||||||
pname:imageCreateImageFormatPropertiesList is the list of structures
|
returns an error, then pname:imageCreateImageFormatPropertiesList is
|
||||||
obtained by calling flink:vkGetPhysicalDeviceImageFormatProperties2
|
defined to be the empty list.
|
||||||
with slink:VkPhysicalDeviceExternalImageFormatInfo omitted or with
|
|
||||||
slink:VkPhysicalDeviceExternalImageFormatInfo::pname:handleType equal
|
|
||||||
to `0`).
|
|
||||||
ifdef::VK_EXT_image_drm_format_modifier[]
|
|
||||||
(If pname:imageCreateDrmFormatModifiers is empty, then
|
|
||||||
pname:imageCreateImageFormatPropertiesList is the list of structures
|
|
||||||
obtained by calling flink:vkGetPhysicalDeviceImageFormatProperties2
|
|
||||||
with slink:VkPhysicalDeviceImageDrmFormatModifierInfoEXT omitted).
|
|
||||||
endif::VK_EXT_image_drm_format_modifier[]
|
|
||||||
In each call, the parameters
|
|
||||||
slink:VkPhysicalDeviceImageFormatInfo2::pname:format, pname:imageType,
|
|
||||||
pname:tiling, pname:usage, and pname:flags must: be equal to those in
|
|
||||||
sname:VkImageCreateInfo.
|
|
||||||
If any call returns an error, then
|
|
||||||
pname:imageCreateImageFormatPropertiesList is defined to be the empty
|
|
||||||
list.
|
|
||||||
ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||||
** If sname:VkImageCreateInfo::pname:pNext contains an instance of
|
** If sname:VkImageCreateInfo::pname:pNext contains an instance of
|
||||||
slink:VkExternalFormatANDROID with non-zero pname:externalFormat, then
|
slink:VkExternalFormatANDROID with non-zero pname:externalFormat, then
|
||||||
|
@ -1151,6 +1171,11 @@ ifdef::VK_EXT_image_drm_format_modifier[]
|
||||||
slink:VkImageDrmFormatModifierListCreateInfoEXT or
|
slink:VkImageDrmFormatModifierListCreateInfoEXT or
|
||||||
slink:VkImageDrmFormatModifierExplicitCreateInfoEXT, then pname:tiling
|
slink:VkImageDrmFormatModifierExplicitCreateInfoEXT, then pname:tiling
|
||||||
must: be ename:VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT.
|
must: be ename:VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT.
|
||||||
|
* [[VUID-VkImageCreateInfo-tiling-02353]]
|
||||||
|
If pname:tiling is ename:VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT and
|
||||||
|
pname:flags contains ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT, then the
|
||||||
|
pname:pNext chain must: contain slink:VkImageFormatListCreateInfoKHR
|
||||||
|
with non-zero pname:viewFormatCount.
|
||||||
endif::VK_EXT_image_drm_format_modifier[]
|
endif::VK_EXT_image_drm_format_modifier[]
|
||||||
ifdef::VK_EXT_sample_locations[]
|
ifdef::VK_EXT_sample_locations[]
|
||||||
* [[VUID-VkImageCreateInfo-flags-01533]]
|
* [[VUID-VkImageCreateInfo-flags-01533]]
|
||||||
|
@ -1510,16 +1535,14 @@ ename:VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT.
|
||||||
associated with slink:VkImageCreateInfo::pname:format and
|
associated with slink:VkImageCreateInfo::pname:format and
|
||||||
pname:drmFormatModifier, as found by querying
|
pname:drmFormatModifier, as found by querying
|
||||||
slink:VkDrmFormatModifierPropertiesListEXT.
|
slink:VkDrmFormatModifierPropertiesListEXT.
|
||||||
* [[VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-pPlaneLayouts-02266]]
|
* [[VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-size-02267]]
|
||||||
For each element of pname:pPlaneLayouts:
|
For each element of pname:pPlaneLayouts, pname:size must: be 0
|
||||||
** [[VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-size-02267]]
|
* [[VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-arrayPitch-02268]]
|
||||||
pname:size must: be 0
|
For each element of pname:pPlaneLayouts, pname:arrayPitch must: be 0 if
|
||||||
** [[VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-arrayPitch-02268]]
|
slink:VkImageCreateInfo::pname:arrayLayers is 1.
|
||||||
pname:arrayPitch must: be 0 if
|
* [[VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-depthPitch-02269]]
|
||||||
slink:VkImageCreateInfo::pname:arrayLayers is 1.
|
For each element of pname:pPlaneLayouts, pname:depthPitch must: be 0 if
|
||||||
** [[VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-depthPitch-02269]]
|
slink:VkImageCreateInfo::pname:extent::pname:depth is 1.
|
||||||
pname:depthPitch must: be 0 if
|
|
||||||
slink:VkImageCreateInfo::pname:extent::pname:depth is 1.
|
|
||||||
****
|
****
|
||||||
|
|
||||||
include::../validity/structs/VkImageDrmFormatModifierExplicitCreateInfoEXT.txt[]
|
include::../validity/structs/VkImageDrmFormatModifierExplicitCreateInfoEXT.txt[]
|
||||||
|
@ -1992,7 +2015,8 @@ include::../validity/structs/VkSubresourceLayout.txt[]
|
||||||
--
|
--
|
||||||
|
|
||||||
ifdef::VK_EXT_image_drm_format_modifier[]
|
ifdef::VK_EXT_image_drm_format_modifier[]
|
||||||
[open,refpage='vkGetImageDrmFormatModifierPropertiesEXT',desc='Returns an image's DRM format modifier',type='protos']
|
|
||||||
|
[open,refpage='vkGetImageDrmFormatModifierPropertiesEXT',desc='Returns an image\'s DRM format modifier',type='protos']
|
||||||
--
|
--
|
||||||
If an image was created with ename:VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT,
|
If an image was created with ename:VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT,
|
||||||
then the image has a <<glossary-drm-format-modifier,Linux DRM format
|
then the image has a <<glossary-drm-format-modifier,Linux DRM format
|
||||||
|
@ -2017,7 +2041,7 @@ include::../api/protos/vkGetImageDrmFormatModifierPropertiesEXT.txt[]
|
||||||
include::../validity/protos/vkGetImageDrmFormatModifierPropertiesEXT.txt[]
|
include::../validity/protos/vkGetImageDrmFormatModifierPropertiesEXT.txt[]
|
||||||
--
|
--
|
||||||
|
|
||||||
[open,refpage='VkImageDrmFormatModifierPropertiesEXT',desc='Properties of an image's Linux DRM format modifier']
|
[open,refpage='VkImageDrmFormatModifierPropertiesEXT',desc='Properties of an image\'s Linux DRM format modifier',type='structs']
|
||||||
--
|
--
|
||||||
The slink:VkImageDrmFormatModifierPropertiesEXT structure is defined as:
|
The slink:VkImageDrmFormatModifierPropertiesEXT structure is defined as:
|
||||||
|
|
||||||
|
@ -2041,6 +2065,7 @@ slink:VkImageDrmFormatModifierExplicitCreateInfoEXT::pname:drmFormatModifier.
|
||||||
|
|
||||||
include::../validity/structs/VkImageDrmFormatModifierPropertiesEXT.txt[]
|
include::../validity/structs/VkImageDrmFormatModifierPropertiesEXT.txt[]
|
||||||
--
|
--
|
||||||
|
|
||||||
endif::VK_EXT_image_drm_format_modifier[]
|
endif::VK_EXT_image_drm_format_modifier[]
|
||||||
|
|
||||||
[open,refpage='vkDestroyImage',desc='Destroy an image object',type='protos']
|
[open,refpage='vkDestroyImage',desc='Destroy an image object',type='protos']
|
||||||
|
@ -3011,8 +3036,8 @@ ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||||
* [[VUID-VkImageViewCreateInfo-pNext-01970]]
|
* [[VUID-VkImageViewCreateInfo-pNext-01970]]
|
||||||
If the pname:pNext chain contains an instance of
|
If the pname:pNext chain contains an instance of
|
||||||
slink:VkSamplerYcbcrConversionInfo with a pname:conversion value other
|
slink:VkSamplerYcbcrConversionInfo with a pname:conversion value other
|
||||||
than code:VK_NULL_HANDLE, all members of pname:components must: have the
|
than dlink:VK_NULL_HANDLE, all members of pname:components must: have
|
||||||
value ename:VK_COMPONENT_SWIZZLE_IDENTITY.
|
the value ename:VK_COMPONENT_SWIZZLE_IDENTITY.
|
||||||
endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||||
* [[VUID-VkImageViewCreateInfo-image-01020]]
|
* [[VUID-VkImageViewCreateInfo-image-01020]]
|
||||||
If pname:image is non-sparse then it must: be bound completely and
|
If pname:image is non-sparse then it must: be bound completely and
|
||||||
|
@ -3825,7 +3850,7 @@ ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||||
slink:VkImagePlaneMemoryRequirementsInfo in the pname:pNext chain of the
|
slink:VkImagePlaneMemoryRequirementsInfo in the pname:pNext chain of the
|
||||||
slink:VkImageMemoryRequirementsInfo2 structure
|
slink:VkImageMemoryRequirementsInfo2 structure
|
||||||
ifdef::VK_EXT_image_drm_format_modifier[]
|
ifdef::VK_EXT_image_drm_format_modifier[]
|
||||||
* [[VUID-VkImageMemoryRequirementsInfo2KHR-image-02279]]
|
* [[VUID-VkImageMemoryRequirementsInfo2-image-02279]]
|
||||||
If pname:image was created with ename:VK_IMAGE_CREATE_DISJOINT_BIT and
|
If pname:image was created with ename:VK_IMAGE_CREATE_DISJOINT_BIT and
|
||||||
with ename:VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, then there must: be
|
with ename:VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, then there must: be
|
||||||
a slink:VkImagePlaneMemoryRequirementsInfo in the pname:pNext chain of
|
a slink:VkImagePlaneMemoryRequirementsInfo in the pname:pNext chain of
|
||||||
|
@ -3843,7 +3868,7 @@ ifndef::VK_EXT_image_drm_format_modifier[]
|
||||||
of the slink:VkImageMemoryRequirementsInfo2 structure
|
of the slink:VkImageMemoryRequirementsInfo2 structure
|
||||||
endif::VK_EXT_image_drm_format_modifier[]
|
endif::VK_EXT_image_drm_format_modifier[]
|
||||||
ifdef::VK_EXT_image_drm_format_modifier[]
|
ifdef::VK_EXT_image_drm_format_modifier[]
|
||||||
* [[VUID-VkImageMemoryRequirementsInfo2KHR-image-02280]]
|
* [[VUID-VkImageMemoryRequirementsInfo2-image-02280]]
|
||||||
If pname:image was created with a single-plane format and with any
|
If pname:image was created with a single-plane format and with any
|
||||||
pname:tiling other than ename:VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT,
|
pname:tiling other than ename:VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT,
|
||||||
then there must: not be a slink:VkImagePlaneMemoryRequirementsInfo in
|
then there must: not be a slink:VkImagePlaneMemoryRequirementsInfo in
|
||||||
|
@ -3888,7 +3913,7 @@ endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||||
|
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
* [[VUID-VkImagePlaneMemoryRequirementsInfoKHR-planeAspect-02281]]
|
* [[VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-02281]]
|
||||||
If the image's tiling is ename:VK_IMAGE_TILING_LINEAR or
|
If the image's tiling is ename:VK_IMAGE_TILING_LINEAR or
|
||||||
ename:VK_IMAGE_TILING_OPTIMAL, then pname:planeAspect must: be a single
|
ename:VK_IMAGE_TILING_OPTIMAL, then pname:planeAspect must: be a single
|
||||||
valid _format plane_ for the image.
|
valid _format plane_ for the image.
|
||||||
|
@ -3898,7 +3923,7 @@ endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||||
ename:VK_IMAGE_ASPECT_PLANE_0_BIT, ename:VK_IMAGE_ASPECT_PLANE_1_BIT or
|
ename:VK_IMAGE_ASPECT_PLANE_0_BIT, ename:VK_IMAGE_ASPECT_PLANE_1_BIT or
|
||||||
ename:VK_IMAGE_ASPECT_PLANE_2_BIT).
|
ename:VK_IMAGE_ASPECT_PLANE_2_BIT).
|
||||||
ifdef::VK_EXT_image_drm_format_modifier[]
|
ifdef::VK_EXT_image_drm_format_modifier[]
|
||||||
* [[VUID-VkImagePlaneMemoryRequirementsInfoKHR-planeAspect-02282]]
|
* [[VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-02282]]
|
||||||
If the image's tiling is ename:VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT,
|
If the image's tiling is ename:VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT,
|
||||||
then pname:planeAspect must: be a single valid _memory plane_ for the
|
then pname:planeAspect must: be a single valid _memory plane_ for the
|
||||||
image.
|
image.
|
||||||
|
@ -4113,7 +4138,7 @@ ifdef::VK_VERSION_1_1,VK_KHR_dedicated_allocation[]
|
||||||
allocated included an instance of slink:VkMemoryDedicatedAllocateInfo in
|
allocated included an instance of slink:VkMemoryDedicatedAllocateInfo in
|
||||||
its pname:pNext chain, and
|
its pname:pNext chain, and
|
||||||
slink:VkMemoryDedicatedAllocateInfo::pname:buffer was not
|
slink:VkMemoryDedicatedAllocateInfo::pname:buffer was not
|
||||||
ename:VK_NULL_HANDLE, then pname:buffer must: equal
|
dlink:VK_NULL_HANDLE, then pname:buffer must: equal
|
||||||
slink:VkMemoryDedicatedAllocateInfo::pname:buffer, and
|
slink:VkMemoryDedicatedAllocateInfo::pname:buffer, and
|
||||||
pname:memoryOffset must: be zero.
|
pname:memoryOffset must: be zero.
|
||||||
endif::VK_VERSION_1_1,VK_KHR_dedicated_allocation[]
|
endif::VK_VERSION_1_1,VK_KHR_dedicated_allocation[]
|
||||||
|
@ -4239,7 +4264,7 @@ ifdef::VK_VERSION_1_1,VK_KHR_dedicated_allocation[]
|
||||||
allocated included an instance of slink:VkMemoryDedicatedAllocateInfo in
|
allocated included an instance of slink:VkMemoryDedicatedAllocateInfo in
|
||||||
its pname:pNext chain, and
|
its pname:pNext chain, and
|
||||||
slink:VkMemoryDedicatedAllocateInfo::pname:buffer was not
|
slink:VkMemoryDedicatedAllocateInfo::pname:buffer was not
|
||||||
ename:VK_NULL_HANDLE, then pname:buffer must: equal
|
dlink:VK_NULL_HANDLE, then pname:buffer must: equal
|
||||||
slink:VkMemoryDedicatedAllocateInfo::pname:buffer and pname:memoryOffset
|
slink:VkMemoryDedicatedAllocateInfo::pname:buffer and pname:memoryOffset
|
||||||
must: be zero.
|
must: be zero.
|
||||||
endif::VK_VERSION_1_1,VK_KHR_dedicated_allocation[]
|
endif::VK_VERSION_1_1,VK_KHR_dedicated_allocation[]
|
||||||
|
@ -4401,7 +4426,7 @@ ifdef::VK_VERSION_1_1,VK_KHR_dedicated_allocation[]
|
||||||
allocated included an instance of slink:VkMemoryDedicatedAllocateInfo in
|
allocated included an instance of slink:VkMemoryDedicatedAllocateInfo in
|
||||||
its pname:pNext chain, and
|
its pname:pNext chain, and
|
||||||
slink:VkMemoryDedicatedAllocateInfo::pname:image was not
|
slink:VkMemoryDedicatedAllocateInfo::pname:image was not
|
||||||
ename:VK_NULL_HANDLE, then pname:image must: equal
|
dlink:VK_NULL_HANDLE, then pname:image must: equal
|
||||||
slink:VkMemoryDedicatedAllocateInfo::pname:image and pname:memoryOffset
|
slink:VkMemoryDedicatedAllocateInfo::pname:image and pname:memoryOffset
|
||||||
must: be zero.
|
must: be zero.
|
||||||
endif::VK_VERSION_1_1,VK_KHR_dedicated_allocation[]
|
endif::VK_VERSION_1_1,VK_KHR_dedicated_allocation[]
|
||||||
|
@ -4581,7 +4606,7 @@ ifdef::VK_VERSION_1_1,VK_KHR_dedicated_allocation[]
|
||||||
allocated included an instance of slink:VkMemoryDedicatedAllocateInfo in
|
allocated included an instance of slink:VkMemoryDedicatedAllocateInfo in
|
||||||
its pname:pNext chain, and
|
its pname:pNext chain, and
|
||||||
slink:VkMemoryDedicatedAllocateInfo::pname:image was not
|
slink:VkMemoryDedicatedAllocateInfo::pname:image was not
|
||||||
ename:VK_NULL_HANDLE, then pname:image must: equal
|
dlink:VK_NULL_HANDLE, then pname:image must: equal
|
||||||
slink:VkMemoryDedicatedAllocateInfo::pname:image and pname:memoryOffset
|
slink:VkMemoryDedicatedAllocateInfo::pname:image and pname:memoryOffset
|
||||||
must: be zero.
|
must: be zero.
|
||||||
endif::VK_VERSION_1_1,VK_KHR_dedicated_allocation[]
|
endif::VK_VERSION_1_1,VK_KHR_dedicated_allocation[]
|
||||||
|
@ -4826,7 +4851,7 @@ endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||||
|
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
* [[VUID-VkBindImagePlaneMemoryInfoKHR-planeAspect-02283]]
|
* [[VUID-VkBindImagePlaneMemoryInfo-planeAspect-02283]]
|
||||||
If the image's tiling is ename:VK_IMAGE_TILING_LINEAR or
|
If the image's tiling is ename:VK_IMAGE_TILING_LINEAR or
|
||||||
ename:VK_IMAGE_TILING_OPTIMAL, then pname:planeAspect must: be a single
|
ename:VK_IMAGE_TILING_OPTIMAL, then pname:planeAspect must: be a single
|
||||||
valid _format plane_ for the image.
|
valid _format plane_ for the image.
|
||||||
|
@ -4836,7 +4861,7 @@ endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||||
ename:VK_IMAGE_ASPECT_PLANE_1_BIT, or ename:VK_IMAGE_ASPECT_PLANE_2_BIT
|
ename:VK_IMAGE_ASPECT_PLANE_1_BIT, or ename:VK_IMAGE_ASPECT_PLANE_2_BIT
|
||||||
for "`etext:_3PLANE`" formats.)
|
for "`etext:_3PLANE`" formats.)
|
||||||
ifdef::VK_EXT_image_drm_format_modifier[]
|
ifdef::VK_EXT_image_drm_format_modifier[]
|
||||||
* [[VUID-VkBindImagePlaneMemoryInfoKHR-planeAspect-02284]]
|
* [[VUID-VkBindImagePlaneMemoryInfo-planeAspect-02284]]
|
||||||
If the image's tiling is ename:VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT,
|
If the image's tiling is ename:VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT,
|
||||||
then pname:planeAspect must: be a single valid _memory plane_ for the
|
then pname:planeAspect must: be a single valid _memory plane_ for the
|
||||||
image.
|
image.
|
||||||
|
|
|
@ -385,6 +385,9 @@ endif::VK_NV_mesh_shader[]
|
||||||
ifdef::VK_EXT_conditional_rendering[]
|
ifdef::VK_EXT_conditional_rendering[]
|
||||||
** ename:VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT
|
** ename:VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT
|
||||||
endif::VK_EXT_conditional_rendering[]
|
endif::VK_EXT_conditional_rendering[]
|
||||||
|
ifdef::VK_EXT_transform_feedback[]
|
||||||
|
** ename:VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT
|
||||||
|
endif::VK_EXT_transform_feedback[]
|
||||||
ifdef::VK_NV_shading_rate_image[]
|
ifdef::VK_NV_shading_rate_image[]
|
||||||
** ename:VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV
|
** ename:VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV
|
||||||
endif::VK_NV_shading_rate_image[]
|
endif::VK_NV_shading_rate_image[]
|
||||||
|
@ -396,6 +399,12 @@ ifdef::VK_EXT_conditional_rendering[]
|
||||||
stage of the pipeline where the predicate of conditional rendering is
|
stage of the pipeline where the predicate of conditional rendering is
|
||||||
consumed.
|
consumed.
|
||||||
endif::VK_EXT_conditional_rendering[]
|
endif::VK_EXT_conditional_rendering[]
|
||||||
|
ifdef::VK_EXT_transform_feedback[]
|
||||||
|
* ename:VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT specifies the stage
|
||||||
|
of the pipeline where vertex attribute output values are written to the
|
||||||
|
transform feedback buffers.
|
||||||
|
endif::VK_EXT_transform_feedback[]
|
||||||
|
|
||||||
ifdef::VK_NVX_device_generated_commands[]
|
ifdef::VK_NVX_device_generated_commands[]
|
||||||
* ename:VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX specifies the stage of
|
* ename:VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX specifies the stage of
|
||||||
the pipeline where device-side generation of commands via
|
the pipeline where device-side generation of commands via
|
||||||
|
@ -506,6 +515,9 @@ and <<devsandqueues-queues,Queues>>.
|
||||||
ifdef::VK_EXT_conditional_rendering[]
|
ifdef::VK_EXT_conditional_rendering[]
|
||||||
|ename:VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT | ename:VK_QUEUE_GRAPHICS_BIT or ename:VK_QUEUE_COMPUTE_BIT
|
|ename:VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT | ename:VK_QUEUE_GRAPHICS_BIT or ename:VK_QUEUE_COMPUTE_BIT
|
||||||
endif::VK_EXT_conditional_rendering[]
|
endif::VK_EXT_conditional_rendering[]
|
||||||
|
ifdef::VK_EXT_transform_feedback[]
|
||||||
|
|ename:VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT | ename:VK_QUEUE_GRAPHICS_BIT
|
||||||
|
endif::VK_EXT_transform_feedback[]
|
||||||
ifdef::VK_NVX_device_generated_commands[]
|
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
|
|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[]
|
endif::VK_NVX_device_generated_commands[]
|
||||||
|
@ -576,6 +588,9 @@ endif::VK_NV_mesh_shader[]
|
||||||
* ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT
|
* ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT
|
||||||
* ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
|
* ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
|
||||||
* ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
|
* ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
|
||||||
|
ifdef::VK_EXT_transform_feedback[]
|
||||||
|
* ename:VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT
|
||||||
|
endif::VK_EXT_transform_feedback[]
|
||||||
ifdef::VK_NV_shading_rate_image[]
|
ifdef::VK_NV_shading_rate_image[]
|
||||||
* ename:VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV
|
* ename:VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV
|
||||||
endif::VK_NV_shading_rate_image[]
|
endif::VK_NV_shading_rate_image[]
|
||||||
|
@ -670,9 +685,9 @@ Access types that can: be set in an access mask include:
|
||||||
|
|
||||||
include::../api/enums/VkAccessFlagBits.txt[]
|
include::../api/enums/VkAccessFlagBits.txt[]
|
||||||
|
|
||||||
* ename:VK_ACCESS_INDIRECT_COMMAND_READ_BIT specifies read access to an
|
* ename:VK_ACCESS_INDIRECT_COMMAND_READ_BIT specifies read access to
|
||||||
indirect command structure read as part of an indirect drawing or
|
indirect command data read as part of an indirect drawing or dispatch
|
||||||
dispatch command.
|
command.
|
||||||
* ename:VK_ACCESS_INDEX_READ_BIT specifies read access to an index buffer
|
* ename:VK_ACCESS_INDEX_READ_BIT specifies read access to an index buffer
|
||||||
as part of an indexed drawing command, bound by
|
as part of an indexed drawing command, bound by
|
||||||
flink:vkCmdBindIndexBuffer.
|
flink:vkCmdBindIndexBuffer.
|
||||||
|
@ -747,6 +762,16 @@ ifdef::VK_EXT_conditional_rendering[]
|
||||||
* ename:VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT specifies read access
|
* ename:VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT specifies read access
|
||||||
to a predicate as part of conditional rendering.
|
to a predicate as part of conditional rendering.
|
||||||
endif::VK_EXT_conditional_rendering[]
|
endif::VK_EXT_conditional_rendering[]
|
||||||
|
ifdef::VK_EXT_transform_feedback[]
|
||||||
|
* ename:VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT specifies write access
|
||||||
|
to a transform feedback buffer made when transform feedback is active.
|
||||||
|
* ename:VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT specifies read
|
||||||
|
access to a transform feedback counter buffer which is read when
|
||||||
|
fname:vkCmdBeginTransformFeedbackEXT executes.
|
||||||
|
* ename:VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT specifies write
|
||||||
|
access to a transform feedback counter buffer which is written when
|
||||||
|
fname:vkCmdEndTransformFeedbackEXT executes.
|
||||||
|
endif::VK_EXT_transform_feedback[]
|
||||||
ifdef::VK_NVX_device_generated_commands[]
|
ifdef::VK_NVX_device_generated_commands[]
|
||||||
* ename:VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX specifies reads from
|
* ename:VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX specifies reads from
|
||||||
sname:VkBuffer inputs to flink:vkCmdProcessCommandsNVX.
|
sname:VkBuffer inputs to flink:vkCmdProcessCommandsNVX.
|
||||||
|
@ -817,6 +842,11 @@ endif::VK_EXT_conditional_rendering[]
|
||||||
ifdef::VK_NV_shading_rate_image[]
|
ifdef::VK_NV_shading_rate_image[]
|
||||||
|ename:VK_ACCESS_SHADING_RATE_IMAGE_BIT_NV | ename:VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV
|
|ename:VK_ACCESS_SHADING_RATE_IMAGE_BIT_NV | ename:VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV
|
||||||
endif::VK_NV_shading_rate_image[]
|
endif::VK_NV_shading_rate_image[]
|
||||||
|
ifdef::VK_EXT_transform_feedback[]
|
||||||
|
|ename:VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT | ename:VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT
|
||||||
|
|ename:VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT | ename:VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT
|
||||||
|
|ename:VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT | ename:VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT
|
||||||
|
endif::VK_EXT_transform_feedback[]
|
||||||
|====
|
|====
|
||||||
|
|
||||||
[[synchronization-host-access-types]]
|
[[synchronization-host-access-types]]
|
||||||
|
@ -4404,3 +4434,98 @@ An event can: only be waited on by the same physical device that signaled it
|
||||||
(or the host).
|
(or the host).
|
||||||
|
|
||||||
endif::VK_VERSION_1_1,VK_KHR_device_group[]
|
endif::VK_VERSION_1_1,VK_KHR_device_group[]
|
||||||
|
|
||||||
|
ifdef::VK_EXT_calibrated_timestamps[]
|
||||||
|
|
||||||
|
[[calibrated-timestamps]]
|
||||||
|
== Calibrated timestamps
|
||||||
|
|
||||||
|
[open,refpage='vkGetCalibratedTimestampsEXT',desc='Query calibrated timestamps',type='protos']
|
||||||
|
--
|
||||||
|
|
||||||
|
In order to be able to correlate the time a particular operation took place
|
||||||
|
at on timelines of different time domains (e.g. a device operation vs a host
|
||||||
|
operation), Vulkan allows querying calibrated timestamps from multiple time
|
||||||
|
domains.
|
||||||
|
|
||||||
|
To query calibrated timestamps from a set of time domains, call:
|
||||||
|
|
||||||
|
include::../api/protos/vkGetCalibratedTimestampsEXT.txt[]
|
||||||
|
|
||||||
|
* pname:device is the logical device used to perform the query.
|
||||||
|
* pname:timestampCount is the number of timestamps to query.
|
||||||
|
* pname:pTimestampInfos is a pointer to an array of pname:timestampCount
|
||||||
|
number of structures of type slink:VkCalibratedTimestampInfoEXT,
|
||||||
|
describing the time domains the calibrated timestamps should be captured
|
||||||
|
from.
|
||||||
|
* pname:pTimestamps is a pointer to an array of pname:timestampCount
|
||||||
|
number of 64-bit unsigned integer values in which the requested
|
||||||
|
calibrated timestamp values are returned.
|
||||||
|
* pname:pMaxDeviation is a pointer to a 64-bit unsigned integer value in
|
||||||
|
which the strictly positive maximum deviation, in nanoseconds, of the
|
||||||
|
calibrated timestamp values is returned.
|
||||||
|
|
||||||
|
[NOTE]
|
||||||
|
.Note
|
||||||
|
====
|
||||||
|
The maximum deviation may: vary between calls to
|
||||||
|
fname:vkGetCalibratedTimestampsEXT even for the same set of time domains due
|
||||||
|
to implementation and platform specific reasons.
|
||||||
|
It's the application's responsibility to assess whether the returned maximum
|
||||||
|
deviation makes the timestamp values suitable for any particular purpose and
|
||||||
|
can: choose to re-issue the timestamp calibration call pursuing a lower
|
||||||
|
devation value.
|
||||||
|
====
|
||||||
|
|
||||||
|
Calibrated timestamp values can: be extrapolated to estimate future
|
||||||
|
coinciding timestamp values, however, depending on the nature of the time
|
||||||
|
domains and other properties of the platform extrapolating values over a
|
||||||
|
sufficiently long period of time may: no longer be accurate enough to fit
|
||||||
|
any particular purpose so applications are expected to re-calibrate the
|
||||||
|
timestamps on a regular basis.
|
||||||
|
|
||||||
|
include::../validity/protos/vkGetCalibratedTimestampsEXT.txt[]
|
||||||
|
--
|
||||||
|
|
||||||
|
[open,refpage='VkCalibratedTimestampInfoEXT',desc='Structure specifying the input parameters of a calibrated timestamp query',type='structs']
|
||||||
|
--
|
||||||
|
|
||||||
|
The sname:VkCalibratedTimestampInfoEXT structure is defined as:
|
||||||
|
|
||||||
|
include::../api/structs/VkCalibratedTimestampInfoEXT.txt[]
|
||||||
|
|
||||||
|
* pname:sType is the type of this structure.
|
||||||
|
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||||
|
* pname:timeDomain is a elink:VkTimeDomainEXT value specifying the time
|
||||||
|
domain from which the calibrated timestamp value should be returned.
|
||||||
|
|
||||||
|
.Valid Usage
|
||||||
|
****
|
||||||
|
* [[VUID-VkCalibratedTimestampInfoEXT-timeDomain-02354]]
|
||||||
|
pname:timeDomain must: be one of the elink:VkTimeDomainEXT values
|
||||||
|
returned by flink:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT
|
||||||
|
****
|
||||||
|
include::../validity/structs/VkCalibratedTimestampInfoEXT.txt[]
|
||||||
|
--
|
||||||
|
|
||||||
|
[open,refpage='VkTimeDomainEXT',desc='Supported time domains',type='enums']
|
||||||
|
--
|
||||||
|
|
||||||
|
The set of supported time domains consists of:
|
||||||
|
|
||||||
|
include::../api/enums/VkTimeDomainEXT.txt[]
|
||||||
|
|
||||||
|
* ename:VK_TIME_DOMAIN_DEVICE_EXT specifies the device time domain.
|
||||||
|
Timestamp values in this time domain are comparable with device
|
||||||
|
timestamp values captured using flink:vkCmdWriteTimestamp and are
|
||||||
|
defined to be incrementing according to the
|
||||||
|
<<features-limits-timestampPeriod,timestampPeriod>> of the device.
|
||||||
|
* ename:VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT specifies the CLOCK_MONOTONIC
|
||||||
|
time domain available on POSIX platforms.
|
||||||
|
* ename:VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT specifies the
|
||||||
|
CLOCK_MONOTONIC_RAW time domain available on POSIX platforms.
|
||||||
|
* ename:VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT specifies the
|
||||||
|
performance counter (QPC) time domain available on Windows.
|
||||||
|
--
|
||||||
|
|
||||||
|
endif::VK_EXT_calibrated_timestamps[]
|
||||||
|
|
|
@ -8,6 +8,10 @@
|
||||||
After programmable vertex processing, the following fixed-function
|
After programmable vertex processing, the following fixed-function
|
||||||
operations are applied to vertices of the resulting primitives:
|
operations are applied to vertices of the resulting primitives:
|
||||||
|
|
||||||
|
ifdef::VK_EXT_transform_feedback[]
|
||||||
|
* Transform feedback (see <<vertexpostproc-transform-feedback,Transform
|
||||||
|
Feedback>>)
|
||||||
|
endif::VK_EXT_transform_feedback[]
|
||||||
ifdef::VK_NV_viewport_swizzle[]
|
ifdef::VK_NV_viewport_swizzle[]
|
||||||
* Viewport swizzle (see <<vertexpostproc-viewport-swizzle,Viewport
|
* Viewport swizzle (see <<vertexpostproc-viewport-swizzle,Viewport
|
||||||
Swizzle>>)
|
Swizzle>>)
|
||||||
|
@ -39,6 +43,316 @@ endif::editing-notes[]
|
||||||
Next, rasterization is performed on primitives as described in chapter
|
Next, rasterization is performed on primitives as described in chapter
|
||||||
<<primsrast,Rasterization>>.
|
<<primsrast,Rasterization>>.
|
||||||
|
|
||||||
|
ifdef::VK_EXT_transform_feedback[]
|
||||||
|
[[vertexpostproc-transform-feedback]]
|
||||||
|
== Transform Feedback
|
||||||
|
|
||||||
|
Before any other fixed-function vertex post-processing, vertex outputs from
|
||||||
|
the last shader in the vertex processing stage can: be written out to one or
|
||||||
|
more transform feedback buffers bound to the command buffer.
|
||||||
|
To capture vertex outputs the last vertex processing stage shader must: be
|
||||||
|
declared with the code:Xfb execution mode.
|
||||||
|
Outputs decorated with code:XfbBuffer will be written out to the
|
||||||
|
corresponding transform feedback buffers bound to the command buffer when
|
||||||
|
transform feedback is active.
|
||||||
|
Transform feedback buffers are bound to the command buffer by using
|
||||||
|
flink:vkCmdBindTransformFeedbackBuffersEXT.
|
||||||
|
Transform feedback is made active by calling
|
||||||
|
flink:vkCmdBeginTransformFeedbackEXT and made inactive by calling
|
||||||
|
flink:vkCmdEndTransformFeedbackEXT.
|
||||||
|
After vertex data is written it is possible to use
|
||||||
|
flink:vkCmdDrawIndirectByteCountEXT to start a new draw where the
|
||||||
|
pname:vertexCount is derived from the number of bytes written by a previous
|
||||||
|
transform feedback.
|
||||||
|
|
||||||
|
When an individual point, line, or triangle primitive reaches the transform
|
||||||
|
feedback stage while transform feedback is active, the values of the
|
||||||
|
specified output variables are assembled into primitives and appended to the
|
||||||
|
bound transform feedback buffers.
|
||||||
|
After activating transform feedback, the values of the first assembled
|
||||||
|
primitive are written at the starting offsets of the bound transform
|
||||||
|
feedback buffers, and subsequent primitives are appended to the buffer.
|
||||||
|
If the optional pname:pCounterBuffers and pname:pCounterBufferOffsets
|
||||||
|
parameters are specified, the starting points within the transform feedback
|
||||||
|
buffers are adjusted so data is appended to the previously written values
|
||||||
|
indicated by the value stored by the implementation in the counter buffer.
|
||||||
|
When capturing line and triangle primitives, all values from the first
|
||||||
|
vertex output are written first, followed by values of the subsequent vertex
|
||||||
|
outputs.
|
||||||
|
|
||||||
|
When capturing vertices, the stride associated with each transform feedback
|
||||||
|
buffer, as indicated by the code:XfbStride decoration, indicates the number
|
||||||
|
of bytes of storage reserved for each vertex in the transform feedback
|
||||||
|
buffer.
|
||||||
|
For every vertex captured, each output attribute with a code:Offset
|
||||||
|
decoration will be written to the storage reserved for the vertex at the
|
||||||
|
associated transform feedback buffer.
|
||||||
|
When writing output variables that are arrays or structures, individual
|
||||||
|
array elements or structure members are written tightly packed in order.
|
||||||
|
For vector types, individual components are written in order.
|
||||||
|
For matrix types, outputs are written as an array of column vectors.
|
||||||
|
|
||||||
|
If any component of an output with an assigned transform feedback offset was
|
||||||
|
not written to by its shader, the value recorded for that component is
|
||||||
|
undefined.
|
||||||
|
The results of writing an output variable to a transform feedback buffer are
|
||||||
|
undefined if any component of that variable would be written at an offset
|
||||||
|
not aligned to the size of the component, or the component is less than 4
|
||||||
|
bytes in size.
|
||||||
|
When capturing a vertex, any portion of the reserved storage not associated
|
||||||
|
with an output variable with an assigned transform feedback offset will be
|
||||||
|
unmodified.
|
||||||
|
|
||||||
|
When transform feedback is inactive, no vertices are recorded.
|
||||||
|
If there is a valid counter buffer handle and counter buffer offset in the
|
||||||
|
pname:pCounterBuffers and pname:pCounterBufferOffsets arrays, writes to the
|
||||||
|
corresponding transform feedback buffer will start at the byte offset
|
||||||
|
represented by the value stored in the counter buffer location.
|
||||||
|
|
||||||
|
Individual lines or triangles of a strip or fan primitive will be extracted
|
||||||
|
and recorded separately.
|
||||||
|
Incomplete primitives are not recorded.
|
||||||
|
|
||||||
|
When using a geometry shader that emits vertices to multiple vertex streams,
|
||||||
|
a primitive will be assembled and output for each stream when there are
|
||||||
|
enough vertices emitted for the output primitive type.
|
||||||
|
All outputs assigned to a given transform feedback buffer are required to
|
||||||
|
come from a single vertex stream.
|
||||||
|
|
||||||
|
The sizes of the transform feedback buffers are defined by the
|
||||||
|
flink:vkCmdBindTransformFeedbackBuffersEXT pname:pSizes parameter for each
|
||||||
|
of the bound buffers, or the size of the bound buffer, whichever is the
|
||||||
|
lesser.
|
||||||
|
If there is less space remaining in any of the transform feedback buffers
|
||||||
|
than the size of the all the vertex data for that primitive based on the
|
||||||
|
code:XfbStride for that code:XfbBuffer then no vertex data of that primitive
|
||||||
|
is recorded in any transform feedback buffer, and the value for the number
|
||||||
|
of primitives written in the corresponding
|
||||||
|
ename:VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT query for all transform
|
||||||
|
feedback buffers is no longer incremented.
|
||||||
|
|
||||||
|
Any outputs made to a code:XfbBuffer that is not bound to a transform
|
||||||
|
feedback buffer is ignored.
|
||||||
|
|
||||||
|
[open,refpage='vkCmdBindTransformFeedbackBuffersEXT',desc='Bind transform feedback buffers to a command buffer',type='protos']
|
||||||
|
--
|
||||||
|
|
||||||
|
To bind transform feedback buffers to a command buffer for use in subsequent
|
||||||
|
draw commands, call:
|
||||||
|
|
||||||
|
include::../api/protos/vkCmdBindTransformFeedbackBuffersEXT.txt[]
|
||||||
|
|
||||||
|
* pname:commandBuffer is the command buffer into which the command is
|
||||||
|
recorded.
|
||||||
|
* pname:firstBinding is the index of the first transform feedback binding
|
||||||
|
whose state is updated by the command.
|
||||||
|
* pname:bindingCount is the number of transform feedback bindings whose
|
||||||
|
state is updated by the command.
|
||||||
|
* pname:pBuffers is a pointer to an array of buffer handles.
|
||||||
|
* pname:pOffsets is a pointer to an array of buffer offsets.
|
||||||
|
* pname:pSizes is an optional array of buffer sizes, which specifies the
|
||||||
|
maximum number of bytes to capture to the corresponding transform
|
||||||
|
feedback buffer.
|
||||||
|
If pname:pSizes is `NULL`, or the value of the pname:pSizes array
|
||||||
|
element is ename:VK_WHOLE_SIZE, then the maximum bytes captured will be
|
||||||
|
the size of the corresponding buffer minus the buffer offset.
|
||||||
|
|
||||||
|
The values taken from elements [eq]#i# of pname:pBuffers, pname:pOffsets and
|
||||||
|
pname:pSizes replace the current state for the transform feedback binding
|
||||||
|
[eq]#pname:firstBinding {plus} i#, for [eq]#i# in [eq]#[0,
|
||||||
|
pname:bindingCount)#.
|
||||||
|
The transform feedback binding is updated to start at the offset indicated
|
||||||
|
by pname:pOffsets[i] from the start of the buffer pname:pBuffers[i].
|
||||||
|
|
||||||
|
.Valid Usage
|
||||||
|
****
|
||||||
|
* [[VUID-vkCmdBindTransformFeedbackBuffersEXT-transformFeedback-02355]]
|
||||||
|
sname:VkPhysicalDeviceTransformFeedbackFeaturesEXT::pname:transformFeedback
|
||||||
|
must: be enabled
|
||||||
|
* [[VUID-vkCmdBindTransformFeedbackBuffersEXT-firstBinding-02356]]
|
||||||
|
pname:firstBinding must: be less than
|
||||||
|
sname:VkPhysicalDeviceTransformFeedbackPropertiesEXT::pname:maxTransformFeedbackBuffers
|
||||||
|
* [[VUID-vkCmdBindTransformFeedbackBuffersEXT-firstBinding-02357]]
|
||||||
|
The sum of pname:firstBinding and pname:bindingCount must: be less than
|
||||||
|
or equal to
|
||||||
|
sname:VkPhysicalDeviceTransformFeedbackPropertiesEXT::pname:maxTransformFeedbackBuffers
|
||||||
|
* [[VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02358]]
|
||||||
|
All elements of pname:pOffsets must: be less than the size of the
|
||||||
|
corresponding element in pname:pBuffers
|
||||||
|
* [[VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02359]]
|
||||||
|
All elements of pname:pOffsets must: be a multiple of 4
|
||||||
|
* [[VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-02360]]
|
||||||
|
All elements of pname:pBuffers must: have been created with the
|
||||||
|
ename:VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT flag
|
||||||
|
* [[VUID-vkCmdBindTransformFeedbackBuffersEXT-pSize-02361]]
|
||||||
|
If the optional pname:pSize array is specified, each element of
|
||||||
|
pname:pSizes must: either be ename:VK_WHOLE_SIZE, or be less than or
|
||||||
|
equal to
|
||||||
|
sname:VkPhysicalDeviceTransformFeedbackPropertiesEXT::pname:maxTransformFeedbackBufferSize
|
||||||
|
* [[VUID-vkCmdBindTransformFeedbackBuffersEXT-pSizes-02362]]
|
||||||
|
All elements of pname:pSizes must: be less than or equal to the size of
|
||||||
|
the corresponding buffer in pname:pBuffers
|
||||||
|
* [[VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02363]]
|
||||||
|
All elements of pname:pOffsets plus pname:pSizes, where the
|
||||||
|
pname:pSizes, element is not ename:VK_WHOLE_SIZE, must: be less than or
|
||||||
|
equal to the size of the corresponding element in pname:pBuffers
|
||||||
|
* [[VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-02364]]
|
||||||
|
Each element of pname:pBuffers that is non-sparse must: be bound
|
||||||
|
completely and contiguously to a single sname:VkDeviceMemory object
|
||||||
|
* [[VUID-vkCmdBindTransformFeedbackBuffersEXT-None-02365]]
|
||||||
|
Transform feedback must: not be active when the
|
||||||
|
fname:vkCmdBindTransformFeedbackBuffersEXT command is recorded
|
||||||
|
****
|
||||||
|
|
||||||
|
include::../validity/protos/vkCmdBindTransformFeedbackBuffersEXT.txt[]
|
||||||
|
--
|
||||||
|
|
||||||
|
|
||||||
|
[open,refpage='vkCmdBeginTransformFeedbackEXT',desc='Make transform feedback active in the command buffer',type='protos']
|
||||||
|
--
|
||||||
|
|
||||||
|
Transform feedback for specific transform feedback buffers is made active by
|
||||||
|
calling:
|
||||||
|
|
||||||
|
include::../api/protos/vkCmdBeginTransformFeedbackEXT.txt[]
|
||||||
|
|
||||||
|
* pname:commandBuffer is the command buffer into which the command is
|
||||||
|
recorded.
|
||||||
|
* pname:firstCounterBuffer is the index of the first transform feedback
|
||||||
|
buffer corresponding to pname:pCounterBuffers[0] and
|
||||||
|
pname:pCounterBufferOffsets[0].
|
||||||
|
* pname:counterBufferCount is the size of the pname:pCounterBuffers and
|
||||||
|
pname:pCounterBufferOffsets arrays.
|
||||||
|
* pname:pCounterBuffers is an optional array of buffer handles to the
|
||||||
|
counter buffers which contain a 4 byte integer value representing the
|
||||||
|
byte offset from the start of the corresponding transform feedback
|
||||||
|
buffer from where to start capturing vertex data.
|
||||||
|
If the byte offset stored to the counter buffer location was done using
|
||||||
|
flink:vkCmdEndTransformFeedbackEXT it can be used to resume transform
|
||||||
|
feedback from the previous location.
|
||||||
|
If pname:pCounterBuffers is `NULL`, then transform feedback will start
|
||||||
|
capturing vertex data to byte offset zero in all bound transform
|
||||||
|
feedback buffers.
|
||||||
|
For each element of pname:pCounterBuffers that is dlink:VK_NULL_HANDLE,
|
||||||
|
transform feedback will start capturing vertex data to byte zero in the
|
||||||
|
corresponding bound transform feedback buffer.
|
||||||
|
* pname:pCounterBufferOffsets is an optional array of offsets within each
|
||||||
|
of the pname:pCounterBuffers where the counter values were previously
|
||||||
|
written.
|
||||||
|
The location in each counter buffer at these offsets must: be large
|
||||||
|
enough to contain 4 bytes of data.
|
||||||
|
This data is the number of bytes captured by the previous transform
|
||||||
|
feedback to this buffer.
|
||||||
|
If pname:pCounterBufferOffsets is `NULL`, then it is assumed the offsets
|
||||||
|
are zero.
|
||||||
|
|
||||||
|
The active transform feedback buffers will capture primitives emitted from
|
||||||
|
the corresponding code:XfbBuffer in the bound graphics pipeline.
|
||||||
|
Any code:XfbBuffer emitted that does not output to an active transform
|
||||||
|
feedback buffer will not be captured.
|
||||||
|
|
||||||
|
.Valid Usage
|
||||||
|
****
|
||||||
|
* [[VUID-vkCmdBeginTransformFeedbackEXT-transformFeedback-02366]]
|
||||||
|
sname:VkPhysicalDeviceTransformFeedbackFeaturesEXT::pname:transformFeedback
|
||||||
|
must: be enabled
|
||||||
|
* [[VUID-vkCmdBeginTransformFeedbackEXT-None-02367]]
|
||||||
|
Transform feedback must: not be active
|
||||||
|
* [[VUID-vkCmdBeginTransformFeedbackEXT-firstCounterBuffer-02368]]
|
||||||
|
pname:firstCounterBuffer must: be less than
|
||||||
|
sname:VkPhysicalDeviceTransformFeedbackPropertiesEXT::pname:maxTransformFeedbackBuffers
|
||||||
|
* [[VUID-vkCmdBeginTransformFeedbackEXT-firstCounterBuffer-02369]]
|
||||||
|
The sum of pname:firstCounterBuffer and pname:counterBufferCount must:
|
||||||
|
be less than or equal to
|
||||||
|
sname:VkPhysicalDeviceTransformFeedbackPropertiesEXT::pname:maxTransformFeedbackBuffers
|
||||||
|
* [[VUID-vkCmdBeginTransformFeedbackEXT-pCounterBufferOffsets-02370]]
|
||||||
|
For each buffer handle in the array, if it is not dlink:VK_NULL_HANDLE
|
||||||
|
it must: reference a buffer large enough to hold 4 bytes at the
|
||||||
|
corresponding offset from the pname:pCounterBufferOffsets array
|
||||||
|
* [[VUID-vkCmdBeginTransformFeedbackEXT-pCounterBuffer-02371]]
|
||||||
|
If pname:pCounterBuffer is `NULL`, then pname:pCounterBufferOffsets
|
||||||
|
must: also be `NULL`
|
||||||
|
* [[VUID-vkCmdBeginTransformFeedbackEXT-pCounterBuffers-02372]]
|
||||||
|
For each buffer handle in the pname:pCounterBuffers array that is not
|
||||||
|
dlink:VK_NULL_HANDLE it must: have been created with a pname:usage value
|
||||||
|
containing
|
||||||
|
ename:VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT
|
||||||
|
ifdef::VK_VERSION_1_1,VK_KHR_multiview[]
|
||||||
|
* [[VUID-vkCmdBeginTransformFeedbackEXT-None-02373]]
|
||||||
|
Transform feedback must: not be made active in a render pass instance
|
||||||
|
with multiview enabled
|
||||||
|
endif::VK_VERSION_1_1,VK_KHR_multiview[]
|
||||||
|
****
|
||||||
|
|
||||||
|
include::../validity/protos/vkCmdBeginTransformFeedbackEXT.txt[]
|
||||||
|
--
|
||||||
|
|
||||||
|
[open,refpage='vkCmdEndTransformFeedbackEXT',desc='Make transform feedback inactive in the command buffer',type='protos']
|
||||||
|
--
|
||||||
|
|
||||||
|
Transform feedback for specific transform feedback buffers is made inactive
|
||||||
|
by calling:
|
||||||
|
|
||||||
|
include::../api/protos/vkCmdEndTransformFeedbackEXT.txt[]
|
||||||
|
|
||||||
|
* pname:commandBuffer is the command buffer into which the command is
|
||||||
|
recorded.
|
||||||
|
* pname:firstCounterBuffer is the index of the first transform feedback
|
||||||
|
buffer corresponding to pname:pCounterBuffers[0] and
|
||||||
|
pname:pCounterBufferOffsets[0].
|
||||||
|
* pname:counterBufferCount is the size of the pname:pCounterBuffers and
|
||||||
|
pname:pCounterBufferOffsets arrays.
|
||||||
|
* pname:pCounterBuffers is an optional array of buffer handles to the
|
||||||
|
counter buffers used to record the current byte positions of each
|
||||||
|
transform feedback buffer where the next vertex output data would be
|
||||||
|
captured.
|
||||||
|
This can: be used by a subsequent flink:vkCmdBeginTransformFeedbackEXT
|
||||||
|
call to resume transform feedback capture from this position.
|
||||||
|
It can also be used by flink:vkCmdDrawIndirectByteCountEXT to determine
|
||||||
|
the vertex count of the draw call.
|
||||||
|
* pname:pCounterBufferOffsets is an optional array of offsets within each
|
||||||
|
of the pname:pCounterBuffers where the counter values can be written.
|
||||||
|
The location in each counter buffer at these offsets must: be large
|
||||||
|
enough to contain 4 bytes of data.
|
||||||
|
The data stored at this location is the byte offset from the start of
|
||||||
|
the transform feedback buffer binding where the next vertex data would
|
||||||
|
be written.
|
||||||
|
If pname:pCounterBufferOffsets is `NULL`, then it is assumed the offsets
|
||||||
|
are zero.
|
||||||
|
|
||||||
|
.Valid Usage
|
||||||
|
****
|
||||||
|
* [[VUID-vkCmdEndTransformFeedbackEXT-transformFeedback-02374]]
|
||||||
|
sname:VkPhysicalDeviceTransformFeedbackFeaturesEXT::pname:transformFeedback
|
||||||
|
must: be enabled
|
||||||
|
* [[VUID-vkCmdEndTransformFeedbackEXT-None-02375]]
|
||||||
|
Transform feedback must: be active
|
||||||
|
* [[VUID-vkCmdEndTransformFeedbackEXT-firstCounterBuffer-02376]]
|
||||||
|
pname:firstCounterBuffer must: be less than
|
||||||
|
sname:VkPhysicalDeviceTransformFeedbackPropertiesEXT::pname:maxTransformFeedbackBuffers
|
||||||
|
* [[VUID-vkCmdEndTransformFeedbackEXT-firstCounterBuffer-02377]]
|
||||||
|
The sum of pname:firstCounterBuffer and pname:counterBufferCount must:
|
||||||
|
be less than or equal to
|
||||||
|
sname:VkPhysicalDeviceTransformFeedbackPropertiesEXT::pname:maxTransformFeedbackBuffers
|
||||||
|
* [[VUID-vkCmdEndTransformFeedbackEXT-pCounterBufferOffsets-02378]]
|
||||||
|
For each buffer handle in the array, if it is not dlink:VK_NULL_HANDLE
|
||||||
|
it must: reference a buffer large enough to hold 4 bytes at the
|
||||||
|
corresponding offset from the pname:pCounterBufferOffsets array
|
||||||
|
* [[VUID-vkCmdEndTransformFeedbackEXT-pCounterBuffer-02379]]
|
||||||
|
If pname:pCounterBuffer is `NULL`, then pname:pCounterBufferOffsets
|
||||||
|
must: also be `NULL`
|
||||||
|
* [[VUID-vkCmdEndTransformFeedbackEXT-pCounterBuffers-02380]]
|
||||||
|
For each buffer handle in the pname:pCounterBuffers array that is not
|
||||||
|
dlink:VK_NULL_HANDLE it must: have been created with a pname:usage value
|
||||||
|
containing
|
||||||
|
ename:VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT
|
||||||
|
****
|
||||||
|
|
||||||
|
include::../validity/protos/vkCmdEndTransformFeedbackEXT.txt[]
|
||||||
|
--
|
||||||
|
|
||||||
|
endif::VK_EXT_transform_feedback[]
|
||||||
|
|
||||||
ifdef::VK_NV_viewport_swizzle[]
|
ifdef::VK_NV_viewport_swizzle[]
|
||||||
[[vertexpostproc-viewport-swizzle]]
|
[[vertexpostproc-viewport-swizzle]]
|
||||||
== Viewport Swizzle
|
== Viewport Swizzle
|
||||||
|
|
|
@ -43,7 +43,7 @@ extern "C" {
|
||||||
#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
|
#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
|
||||||
#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
|
#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
|
||||||
// Version of this file
|
// Version of this file
|
||||||
#define VK_HEADER_VERSION 87
|
#define VK_HEADER_VERSION 88
|
||||||
|
|
||||||
|
|
||||||
#define VK_NULL_HANDLE 0
|
#define VK_NULL_HANDLE 0
|
||||||
|
@ -147,6 +147,7 @@ typedef enum VkResult {
|
||||||
VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001,
|
VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001,
|
||||||
VK_ERROR_VALIDATION_FAILED_EXT = -1000011001,
|
VK_ERROR_VALIDATION_FAILED_EXT = -1000011001,
|
||||||
VK_ERROR_INVALID_SHADER_NV = -1000012000,
|
VK_ERROR_INVALID_SHADER_NV = -1000012000,
|
||||||
|
VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000,
|
||||||
VK_ERROR_FRAGMENTATION_EXT = -1000161000,
|
VK_ERROR_FRAGMENTATION_EXT = -1000161000,
|
||||||
VK_ERROR_NOT_PERMITTED_EXT = -1000174001,
|
VK_ERROR_NOT_PERMITTED_EXT = -1000174001,
|
||||||
VK_ERROR_OUT_OF_POOL_MEMORY_KHR = VK_ERROR_OUT_OF_POOL_MEMORY,
|
VK_ERROR_OUT_OF_POOL_MEMORY_KHR = VK_ERROR_OUT_OF_POOL_MEMORY,
|
||||||
|
@ -297,6 +298,9 @@ typedef enum VkStructureType {
|
||||||
VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000,
|
VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000,
|
||||||
VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001,
|
VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001,
|
||||||
VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002,
|
VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002,
|
||||||
|
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000,
|
||||||
|
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001,
|
||||||
|
VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002,
|
||||||
VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000,
|
VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000,
|
||||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000,
|
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000,
|
||||||
VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000,
|
VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000,
|
||||||
|
@ -398,6 +402,12 @@ typedef enum VkStructureType {
|
||||||
VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002,
|
VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002,
|
||||||
VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000,
|
VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000,
|
||||||
VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000,
|
VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000,
|
||||||
|
VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000,
|
||||||
|
VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158001,
|
||||||
|
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002,
|
||||||
|
VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003,
|
||||||
|
VK_STRUCTURE_TYPE_IMAGE_EXCPLICIT_DRM_FORMAT_MODIFIER_CREATE_INFO_EXT = 1000158004,
|
||||||
|
VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005,
|
||||||
VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000,
|
VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000,
|
||||||
VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001,
|
VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001,
|
||||||
VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = 1000161000,
|
VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = 1000161000,
|
||||||
|
@ -428,6 +438,7 @@ typedef enum VkStructureType {
|
||||||
VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001,
|
VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001,
|
||||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002,
|
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002,
|
||||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000,
|
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000,
|
||||||
|
VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000,
|
||||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000,
|
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000,
|
||||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000,
|
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000,
|
||||||
VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = 1000190001,
|
VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = 1000190001,
|
||||||
|
@ -443,6 +454,7 @@ typedef enum VkStructureType {
|
||||||
VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000,
|
VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000,
|
||||||
VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001,
|
VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001,
|
||||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000,
|
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000,
|
||||||
|
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000,
|
||||||
VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000,
|
VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000,
|
||||||
VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
|
VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
|
||||||
VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO,
|
VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO,
|
||||||
|
@ -812,6 +824,7 @@ typedef enum VkImageType {
|
||||||
typedef enum VkImageTiling {
|
typedef enum VkImageTiling {
|
||||||
VK_IMAGE_TILING_OPTIMAL = 0,
|
VK_IMAGE_TILING_OPTIMAL = 0,
|
||||||
VK_IMAGE_TILING_LINEAR = 1,
|
VK_IMAGE_TILING_LINEAR = 1,
|
||||||
|
VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000,
|
||||||
VK_IMAGE_TILING_BEGIN_RANGE = VK_IMAGE_TILING_OPTIMAL,
|
VK_IMAGE_TILING_BEGIN_RANGE = VK_IMAGE_TILING_OPTIMAL,
|
||||||
VK_IMAGE_TILING_END_RANGE = VK_IMAGE_TILING_LINEAR,
|
VK_IMAGE_TILING_END_RANGE = VK_IMAGE_TILING_LINEAR,
|
||||||
VK_IMAGE_TILING_RANGE_SIZE = (VK_IMAGE_TILING_LINEAR - VK_IMAGE_TILING_OPTIMAL + 1),
|
VK_IMAGE_TILING_RANGE_SIZE = (VK_IMAGE_TILING_LINEAR - VK_IMAGE_TILING_OPTIMAL + 1),
|
||||||
|
@ -834,6 +847,7 @@ typedef enum VkQueryType {
|
||||||
VK_QUERY_TYPE_OCCLUSION = 0,
|
VK_QUERY_TYPE_OCCLUSION = 0,
|
||||||
VK_QUERY_TYPE_PIPELINE_STATISTICS = 1,
|
VK_QUERY_TYPE_PIPELINE_STATISTICS = 1,
|
||||||
VK_QUERY_TYPE_TIMESTAMP = 2,
|
VK_QUERY_TYPE_TIMESTAMP = 2,
|
||||||
|
VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004,
|
||||||
VK_QUERY_TYPE_COMPACTED_SIZE_NVX = 1000165000,
|
VK_QUERY_TYPE_COMPACTED_SIZE_NVX = 1000165000,
|
||||||
VK_QUERY_TYPE_BEGIN_RANGE = VK_QUERY_TYPE_OCCLUSION,
|
VK_QUERY_TYPE_BEGIN_RANGE = VK_QUERY_TYPE_OCCLUSION,
|
||||||
VK_QUERY_TYPE_END_RANGE = VK_QUERY_TYPE_TIMESTAMP,
|
VK_QUERY_TYPE_END_RANGE = VK_QUERY_TYPE_TIMESTAMP,
|
||||||
|
@ -1429,6 +1443,7 @@ typedef enum VkPipelineStageFlagBits {
|
||||||
VK_PIPELINE_STAGE_HOST_BIT = 0x00004000,
|
VK_PIPELINE_STAGE_HOST_BIT = 0x00004000,
|
||||||
VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00008000,
|
VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00008000,
|
||||||
VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00010000,
|
VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00010000,
|
||||||
|
VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT = 0x01000000,
|
||||||
VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00040000,
|
VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00040000,
|
||||||
VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX = 0x00020000,
|
VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX = 0x00020000,
|
||||||
VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 0x00400000,
|
VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 0x00400000,
|
||||||
|
@ -1448,6 +1463,10 @@ typedef enum VkImageAspectFlagBits {
|
||||||
VK_IMAGE_ASPECT_PLANE_0_BIT = 0x00000010,
|
VK_IMAGE_ASPECT_PLANE_0_BIT = 0x00000010,
|
||||||
VK_IMAGE_ASPECT_PLANE_1_BIT = 0x00000020,
|
VK_IMAGE_ASPECT_PLANE_1_BIT = 0x00000020,
|
||||||
VK_IMAGE_ASPECT_PLANE_2_BIT = 0x00000040,
|
VK_IMAGE_ASPECT_PLANE_2_BIT = 0x00000040,
|
||||||
|
VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT = 0x00000080,
|
||||||
|
VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 0x00000100,
|
||||||
|
VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 0x00000200,
|
||||||
|
VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 0x00000400,
|
||||||
VK_IMAGE_ASPECT_PLANE_0_BIT_KHR = VK_IMAGE_ASPECT_PLANE_0_BIT,
|
VK_IMAGE_ASPECT_PLANE_0_BIT_KHR = VK_IMAGE_ASPECT_PLANE_0_BIT,
|
||||||
VK_IMAGE_ASPECT_PLANE_1_BIT_KHR = VK_IMAGE_ASPECT_PLANE_1_BIT,
|
VK_IMAGE_ASPECT_PLANE_1_BIT_KHR = VK_IMAGE_ASPECT_PLANE_1_BIT,
|
||||||
VK_IMAGE_ASPECT_PLANE_2_BIT_KHR = VK_IMAGE_ASPECT_PLANE_2_BIT,
|
VK_IMAGE_ASPECT_PLANE_2_BIT_KHR = VK_IMAGE_ASPECT_PLANE_2_BIT,
|
||||||
|
@ -1522,6 +1541,8 @@ typedef enum VkBufferUsageFlagBits {
|
||||||
VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040,
|
VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040,
|
||||||
VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080,
|
VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080,
|
||||||
VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100,
|
VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100,
|
||||||
|
VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 0x00000800,
|
||||||
|
VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 0x00001000,
|
||||||
VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00000200,
|
VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00000200,
|
||||||
VK_BUFFER_USAGE_RAYTRACING_BIT_NVX = 0x00000400,
|
VK_BUFFER_USAGE_RAYTRACING_BIT_NVX = 0x00000400,
|
||||||
VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
|
VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
|
||||||
|
@ -1644,6 +1665,9 @@ typedef enum VkAccessFlagBits {
|
||||||
VK_ACCESS_HOST_WRITE_BIT = 0x00004000,
|
VK_ACCESS_HOST_WRITE_BIT = 0x00004000,
|
||||||
VK_ACCESS_MEMORY_READ_BIT = 0x00008000,
|
VK_ACCESS_MEMORY_READ_BIT = 0x00008000,
|
||||||
VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000,
|
VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000,
|
||||||
|
VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 0x02000000,
|
||||||
|
VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 0x04000000,
|
||||||
|
VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 0x08000000,
|
||||||
VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 0x00100000,
|
VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 0x00100000,
|
||||||
VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX = 0x00020000,
|
VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX = 0x00020000,
|
||||||
VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX = 0x00040000,
|
VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX = 0x00040000,
|
||||||
|
@ -6093,7 +6117,7 @@ typedef struct VkConformanceVersionKHR {
|
||||||
typedef struct VkPhysicalDeviceDriverPropertiesKHR {
|
typedef struct VkPhysicalDeviceDriverPropertiesKHR {
|
||||||
VkStructureType sType;
|
VkStructureType sType;
|
||||||
void* pNext;
|
void* pNext;
|
||||||
uint32_t driverID;
|
VkDriverIdKHR driverID;
|
||||||
char driverName[VK_MAX_DRIVER_NAME_SIZE_KHR];
|
char driverName[VK_MAX_DRIVER_NAME_SIZE_KHR];
|
||||||
char driverInfo[VK_MAX_DRIVER_INFO_SIZE_KHR];
|
char driverInfo[VK_MAX_DRIVER_INFO_SIZE_KHR];
|
||||||
VkConformanceVersionKHR conformanceVersion;
|
VkConformanceVersionKHR conformanceVersion;
|
||||||
|
@ -6360,6 +6384,95 @@ typedef struct VkDedicatedAllocationMemoryAllocateInfoNV {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define VK_EXT_transform_feedback 1
|
||||||
|
#define VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION 1
|
||||||
|
#define VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME "VK_EXT_transform_feedback"
|
||||||
|
|
||||||
|
typedef VkFlags VkPipelineRasterizationStateStreamCreateFlagsEXT;
|
||||||
|
|
||||||
|
typedef struct VkPhysicalDeviceTransformFeedbackFeaturesEXT {
|
||||||
|
VkStructureType sType;
|
||||||
|
void* pNext;
|
||||||
|
VkBool32 transformFeedback;
|
||||||
|
VkBool32 geometryStreams;
|
||||||
|
} VkPhysicalDeviceTransformFeedbackFeaturesEXT;
|
||||||
|
|
||||||
|
typedef struct VkPhysicalDeviceTransformFeedbackPropertiesEXT {
|
||||||
|
VkStructureType sType;
|
||||||
|
void* pNext;
|
||||||
|
uint32_t maxTransformFeedbackStreams;
|
||||||
|
uint32_t maxTransformFeedbackBuffers;
|
||||||
|
VkDeviceSize maxTransformFeedbackBufferSize;
|
||||||
|
uint32_t maxTransformFeedbackStreamDataSize;
|
||||||
|
uint32_t maxTransformFeedbackBufferDataSize;
|
||||||
|
uint32_t maxTransformFeedbackBufferDataStride;
|
||||||
|
VkBool32 transformFeedbackQueries;
|
||||||
|
VkBool32 transformFeedbackStreamsLinesTriangles;
|
||||||
|
VkBool32 transformFeedbackRasterizationStreamSelect;
|
||||||
|
VkBool32 transformFeedbackDraw;
|
||||||
|
} VkPhysicalDeviceTransformFeedbackPropertiesEXT;
|
||||||
|
|
||||||
|
typedef struct VkPipelineRasterizationStateStreamCreateInfoEXT {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
VkPipelineRasterizationStateStreamCreateFlagsEXT flags;
|
||||||
|
uint32_t rasterizationStream;
|
||||||
|
} VkPipelineRasterizationStateStreamCreateInfoEXT;
|
||||||
|
|
||||||
|
|
||||||
|
typedef void (VKAPI_PTR *PFN_vkCmdBindTransformFeedbackBuffersEXT)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes);
|
||||||
|
typedef void (VKAPI_PTR *PFN_vkCmdBeginTransformFeedbackEXT)(VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets);
|
||||||
|
typedef void (VKAPI_PTR *PFN_vkCmdEndTransformFeedbackEXT)(VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets);
|
||||||
|
typedef void (VKAPI_PTR *PFN_vkCmdBeginQueryIndexedEXT)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags, uint32_t index);
|
||||||
|
typedef void (VKAPI_PTR *PFN_vkCmdEndQueryIndexedEXT)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, uint32_t index);
|
||||||
|
typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectByteCountEXT)(VkCommandBuffer commandBuffer, uint32_t instanceCount, uint32_t firstInstance, VkBuffer counterBuffer, VkDeviceSize counterBufferOffset, uint32_t counterOffset, uint32_t vertexStride);
|
||||||
|
|
||||||
|
#ifndef VK_NO_PROTOTYPES
|
||||||
|
VKAPI_ATTR void VKAPI_CALL vkCmdBindTransformFeedbackBuffersEXT(
|
||||||
|
VkCommandBuffer commandBuffer,
|
||||||
|
uint32_t firstBinding,
|
||||||
|
uint32_t bindingCount,
|
||||||
|
const VkBuffer* pBuffers,
|
||||||
|
const VkDeviceSize* pOffsets,
|
||||||
|
const VkDeviceSize* pSizes);
|
||||||
|
|
||||||
|
VKAPI_ATTR void VKAPI_CALL vkCmdBeginTransformFeedbackEXT(
|
||||||
|
VkCommandBuffer commandBuffer,
|
||||||
|
uint32_t firstCounterBuffer,
|
||||||
|
uint32_t counterBufferCount,
|
||||||
|
const VkBuffer* pCounterBuffers,
|
||||||
|
const VkDeviceSize* pCounterBufferOffsets);
|
||||||
|
|
||||||
|
VKAPI_ATTR void VKAPI_CALL vkCmdEndTransformFeedbackEXT(
|
||||||
|
VkCommandBuffer commandBuffer,
|
||||||
|
uint32_t firstCounterBuffer,
|
||||||
|
uint32_t counterBufferCount,
|
||||||
|
const VkBuffer* pCounterBuffers,
|
||||||
|
const VkDeviceSize* pCounterBufferOffsets);
|
||||||
|
|
||||||
|
VKAPI_ATTR void VKAPI_CALL vkCmdBeginQueryIndexedEXT(
|
||||||
|
VkCommandBuffer commandBuffer,
|
||||||
|
VkQueryPool queryPool,
|
||||||
|
uint32_t query,
|
||||||
|
VkQueryControlFlags flags,
|
||||||
|
uint32_t index);
|
||||||
|
|
||||||
|
VKAPI_ATTR void VKAPI_CALL vkCmdEndQueryIndexedEXT(
|
||||||
|
VkCommandBuffer commandBuffer,
|
||||||
|
VkQueryPool queryPool,
|
||||||
|
uint32_t query,
|
||||||
|
uint32_t index);
|
||||||
|
|
||||||
|
VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectByteCountEXT(
|
||||||
|
VkCommandBuffer commandBuffer,
|
||||||
|
uint32_t instanceCount,
|
||||||
|
uint32_t firstInstance,
|
||||||
|
VkBuffer counterBuffer,
|
||||||
|
VkDeviceSize counterBufferOffset,
|
||||||
|
uint32_t counterOffset,
|
||||||
|
uint32_t vertexStride);
|
||||||
|
#endif
|
||||||
|
|
||||||
#define VK_AMD_draw_indirect_count 1
|
#define VK_AMD_draw_indirect_count 1
|
||||||
#define VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION 1
|
#define VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION 1
|
||||||
#define VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_AMD_draw_indirect_count"
|
#define VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_AMD_draw_indirect_count"
|
||||||
|
@ -7342,7 +7455,7 @@ typedef struct VkDebugUtilsMessengerCallbackDataEXT {
|
||||||
|
|
||||||
typedef VkBool32 (VKAPI_PTR *PFN_vkDebugUtilsMessengerCallbackEXT)(
|
typedef VkBool32 (VKAPI_PTR *PFN_vkDebugUtilsMessengerCallbackEXT)(
|
||||||
VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
|
VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
|
||||||
VkDebugUtilsMessageTypeFlagsEXT messageType,
|
VkDebugUtilsMessageTypeFlagsEXT messageTypes,
|
||||||
const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData,
|
const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData,
|
||||||
void* pUserData);
|
void* pUserData);
|
||||||
|
|
||||||
|
@ -7677,6 +7790,65 @@ typedef struct VkPipelineCoverageModulationStateCreateInfoNV {
|
||||||
#define VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME "VK_EXT_post_depth_coverage"
|
#define VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME "VK_EXT_post_depth_coverage"
|
||||||
|
|
||||||
|
|
||||||
|
#define VK_EXT_image_drm_format_modifier 1
|
||||||
|
#define VK_EXT_EXTENSION_159_SPEC_VERSION 0
|
||||||
|
#define VK_EXT_EXTENSION_159_EXTENSION_NAME "VK_EXT_extension_159"
|
||||||
|
#define VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION 1
|
||||||
|
#define VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME "VK_EXT_image_drm_format_modifier"
|
||||||
|
|
||||||
|
typedef struct VkDrmFormatModifierPropertiesEXT {
|
||||||
|
uint64_t drmFormatModifier;
|
||||||
|
uint32_t drmFormatModifierPlaneCount;
|
||||||
|
VkFormatFeatureFlags drmFormatModifierTilingFeatures;
|
||||||
|
} VkDrmFormatModifierPropertiesEXT;
|
||||||
|
|
||||||
|
typedef struct VkDrmFormatModifierPropertiesListEXT {
|
||||||
|
VkStructureType sType;
|
||||||
|
void* pNext;
|
||||||
|
uint32_t drmFormatModifierCount;
|
||||||
|
VkDrmFormatModifierPropertiesEXT* pDrmFormatModifierProperties;
|
||||||
|
} VkDrmFormatModifierPropertiesListEXT;
|
||||||
|
|
||||||
|
typedef struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
uint64_t drmFormatModifier;
|
||||||
|
VkSharingMode sharingMode;
|
||||||
|
uint32_t queueFamilyIndexCount;
|
||||||
|
const uint32_t* pQueueFamilyIndices;
|
||||||
|
} VkPhysicalDeviceImageDrmFormatModifierInfoEXT;
|
||||||
|
|
||||||
|
typedef struct VkImageDrmFormatModifierListCreateInfoEXT {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
uint32_t drmFormatModifierCount;
|
||||||
|
const uint64_t* pDrmFormatModifiers;
|
||||||
|
} VkImageDrmFormatModifierListCreateInfoEXT;
|
||||||
|
|
||||||
|
typedef struct VkImageDrmFormatModifierExplicitCreateInfoEXT {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
uint64_t drmFormatModifier;
|
||||||
|
uint32_t drmFormatModifierPlaneCount;
|
||||||
|
const VkSubresourceLayout* pPlaneLayouts;
|
||||||
|
} VkImageDrmFormatModifierExplicitCreateInfoEXT;
|
||||||
|
|
||||||
|
typedef struct VkImageDrmFormatModifierPropertiesEXT {
|
||||||
|
VkStructureType sType;
|
||||||
|
void* pNext;
|
||||||
|
uint64_t drmFormatModifier;
|
||||||
|
} VkImageDrmFormatModifierPropertiesEXT;
|
||||||
|
|
||||||
|
|
||||||
|
typedef VkResult (VKAPI_PTR *PFN_vkGetImageDrmFormatModifierPropertiesEXT)(VkDevice device, VkImage image, VkImageDrmFormatModifierPropertiesEXT* pProperties);
|
||||||
|
|
||||||
|
#ifndef VK_NO_PROTOTYPES
|
||||||
|
VKAPI_ATTR VkResult VKAPI_CALL vkGetImageDrmFormatModifierPropertiesEXT(
|
||||||
|
VkDevice device,
|
||||||
|
VkImage image,
|
||||||
|
VkImageDrmFormatModifierPropertiesEXT* pProperties);
|
||||||
|
#endif
|
||||||
|
|
||||||
#define VK_EXT_validation_cache 1
|
#define VK_EXT_validation_cache 1
|
||||||
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkValidationCacheEXT)
|
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkValidationCacheEXT)
|
||||||
|
|
||||||
|
@ -8297,6 +8469,46 @@ VKAPI_ATTR void VKAPI_CALL vkCmdWriteBufferMarkerAMD(
|
||||||
uint32_t marker);
|
uint32_t marker);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define VK_EXT_calibrated_timestamps 1
|
||||||
|
#define VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION 1
|
||||||
|
#define VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME "VK_EXT_calibrated_timestamps"
|
||||||
|
|
||||||
|
|
||||||
|
typedef enum VkTimeDomainEXT {
|
||||||
|
VK_TIME_DOMAIN_DEVICE_EXT = 0,
|
||||||
|
VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1,
|
||||||
|
VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2,
|
||||||
|
VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3,
|
||||||
|
VK_TIME_DOMAIN_BEGIN_RANGE_EXT = VK_TIME_DOMAIN_DEVICE_EXT,
|
||||||
|
VK_TIME_DOMAIN_END_RANGE_EXT = VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT,
|
||||||
|
VK_TIME_DOMAIN_RANGE_SIZE_EXT = (VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT - VK_TIME_DOMAIN_DEVICE_EXT + 1),
|
||||||
|
VK_TIME_DOMAIN_MAX_ENUM_EXT = 0x7FFFFFFF
|
||||||
|
} VkTimeDomainEXT;
|
||||||
|
|
||||||
|
typedef struct VkCalibratedTimestampInfoEXT {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
VkTimeDomainEXT timeDomain;
|
||||||
|
} VkCalibratedTimestampInfoEXT;
|
||||||
|
|
||||||
|
|
||||||
|
typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT)(VkPhysicalDevice physicalDevice, uint32_t* pTimeDomainCount, VkTimeDomainEXT* pTimeDomains);
|
||||||
|
typedef VkResult (VKAPI_PTR *PFN_vkGetCalibratedTimestampsEXT)(VkDevice device, uint32_t timestampCount, const VkCalibratedTimestampInfoEXT* pTimestampInfos, uint64_t* pTimestamps, uint64_t* pMaxDeviation);
|
||||||
|
|
||||||
|
#ifndef VK_NO_PROTOTYPES
|
||||||
|
VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(
|
||||||
|
VkPhysicalDevice physicalDevice,
|
||||||
|
uint32_t* pTimeDomainCount,
|
||||||
|
VkTimeDomainEXT* pTimeDomains);
|
||||||
|
|
||||||
|
VKAPI_ATTR VkResult VKAPI_CALL vkGetCalibratedTimestampsEXT(
|
||||||
|
VkDevice device,
|
||||||
|
uint32_t timestampCount,
|
||||||
|
const VkCalibratedTimestampInfoEXT* pTimestampInfos,
|
||||||
|
uint64_t* pTimestamps,
|
||||||
|
uint64_t* pMaxDeviation);
|
||||||
|
#endif
|
||||||
|
|
||||||
#define VK_AMD_shader_core_properties 1
|
#define VK_AMD_shader_core_properties 1
|
||||||
#define VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION 1
|
#define VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION 1
|
||||||
#define VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME "VK_AMD_shader_core_properties"
|
#define VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME "VK_AMD_shader_core_properties"
|
||||||
|
@ -8517,6 +8729,31 @@ VKAPI_ATTR void VKAPI_CALL vkGetQueueCheckpointDataNV(
|
||||||
VkCheckpointDataNV* pCheckpointData);
|
VkCheckpointDataNV* pCheckpointData);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define VK_EXT_pci_bus_info 1
|
||||||
|
#define VK_EXT_PCI_BUS_INFO_SPEC_VERSION 1
|
||||||
|
#define VK_EXT_PCI_BUS_INFO_EXTENSION_NAME "VK_EXT_pci_bus_info"
|
||||||
|
|
||||||
|
typedef struct VkPhysicalDevicePCIBusInfoPropertiesEXT {
|
||||||
|
VkStructureType sType;
|
||||||
|
void* pNext;
|
||||||
|
uint16_t pciDomain;
|
||||||
|
uint8_t pciBus;
|
||||||
|
uint8_t pciDevice;
|
||||||
|
uint8_t pciFunction;
|
||||||
|
} VkPhysicalDevicePCIBusInfoPropertiesEXT;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define VK_GOOGLE_hlsl_functionality1 1
|
||||||
|
#define VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION 0
|
||||||
|
#define VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME "VK_GOOGLE_hlsl_functionality1"
|
||||||
|
|
||||||
|
|
||||||
|
#define VK_GOOGLE_decorate_string 1
|
||||||
|
#define VK_GOOGLE_DECORATE_STRING_SPEC_VERSION 0
|
||||||
|
#define VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME "VK_GOOGLE_decorate_string"
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
# The value to start tagging VU statements at, unless overridden by -nextvu
|
# The value to start tagging VU statements at, unless overridden by -nextvu
|
||||||
startVUID = 2286
|
startVUID = 2381
|
||||||
|
|
206
xml/vk.xml
206
xml/vk.xml
|
@ -150,7 +150,7 @@ server.
|
||||||
<type category="define">// Vulkan 1.1 version number
|
<type category="define">// Vulkan 1.1 version number
|
||||||
#define <name>VK_API_VERSION_1_1</name> <type>VK_MAKE_VERSION</type>(1, 1, 0)// Patch version should always be set to 0</type>
|
#define <name>VK_API_VERSION_1_1</name> <type>VK_MAKE_VERSION</type>(1, 1, 0)// Patch version should always be set to 0</type>
|
||||||
<type category="define">// Version of this file
|
<type category="define">// Version of this file
|
||||||
#define <name>VK_HEADER_VERSION</name> 87</type>
|
#define <name>VK_HEADER_VERSION</name> 88</type>
|
||||||
|
|
||||||
<type category="define">
|
<type category="define">
|
||||||
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
|
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
|
||||||
|
@ -182,6 +182,7 @@ server.
|
||||||
<type requires="vk_platform" name="char"/>
|
<type requires="vk_platform" name="char"/>
|
||||||
<type requires="vk_platform" name="float"/>
|
<type requires="vk_platform" name="float"/>
|
||||||
<type requires="vk_platform" name="uint8_t"/>
|
<type requires="vk_platform" name="uint8_t"/>
|
||||||
|
<type requires="vk_platform" name="uint16_t"/>
|
||||||
<type requires="vk_platform" name="uint32_t"/>
|
<type requires="vk_platform" name="uint32_t"/>
|
||||||
<type requires="vk_platform" name="uint64_t"/>
|
<type requires="vk_platform" name="uint64_t"/>
|
||||||
<type requires="vk_platform" name="int32_t"/>
|
<type requires="vk_platform" name="int32_t"/>
|
||||||
|
@ -314,6 +315,8 @@ server.
|
||||||
<type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineRasterizationConservativeStateCreateFlagsEXT</name>;</type>
|
<type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineRasterizationConservativeStateCreateFlagsEXT</name>;</type>
|
||||||
<type requires="VkDescriptorBindingFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkDescriptorBindingFlagsEXT</name>;</type>
|
<type requires="VkDescriptorBindingFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkDescriptorBindingFlagsEXT</name>;</type>
|
||||||
<type requires="VkConditionalRenderingFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkConditionalRenderingFlagsEXT</name>;</type>
|
<type requires="VkConditionalRenderingFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkConditionalRenderingFlagsEXT</name>;</type>
|
||||||
|
<type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineRasterizationStateStreamCreateFlagsEXT</name>;</type>
|
||||||
|
|
||||||
|
|
||||||
<comment>Types which can be void pointers or class pointers, selected at compile time</comment>
|
<comment>Types which can be void pointers or class pointers, selected at compile time</comment>
|
||||||
<type category="handle"><type>VK_DEFINE_HANDLE</type>(<name>VkInstance</name>)</type>
|
<type category="handle"><type>VK_DEFINE_HANDLE</type>(<name>VkInstance</name>)</type>
|
||||||
|
@ -465,6 +468,7 @@ server.
|
||||||
<type name="VkValidationCacheHeaderVersionEXT" category="enum"/>
|
<type name="VkValidationCacheHeaderVersionEXT" category="enum"/>
|
||||||
<type name="VkShaderInfoTypeAMD" category="enum"/>
|
<type name="VkShaderInfoTypeAMD" category="enum"/>
|
||||||
<type name="VkQueueGlobalPriorityEXT" category="enum"/>
|
<type name="VkQueueGlobalPriorityEXT" category="enum"/>
|
||||||
|
<type name="VkTimeDomainEXT" category="enum"/>
|
||||||
<type name="VkConservativeRasterizationModeEXT" category="enum"/>
|
<type name="VkConservativeRasterizationModeEXT" category="enum"/>
|
||||||
<type name="VkGeometryFlagBitsNVX" category="enum"/>
|
<type name="VkGeometryFlagBitsNVX" category="enum"/>
|
||||||
<type name="VkGeometryInstanceFlagBitsNVX" category="enum"/>
|
<type name="VkGeometryInstanceFlagBitsNVX" category="enum"/>
|
||||||
|
@ -1992,7 +1996,7 @@ server.
|
||||||
<type category="struct" name="VkPhysicalDeviceDriverPropertiesKHR" structextends="VkPhysicalDeviceProperties2" returnedonly="true">
|
<type category="struct" name="VkPhysicalDeviceDriverPropertiesKHR" structextends="VkPhysicalDeviceProperties2" returnedonly="true">
|
||||||
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
|
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
|
||||||
<member><type>void</type>* <name>pNext</name></member>
|
<member><type>void</type>* <name>pNext</name></member>
|
||||||
<member><type>uint32_t</type> <name>driverID</name></member>
|
<member><type>VkDriverIdKHR</type> <name>driverID</name></member>
|
||||||
<member><type>char</type> <name>driverName</name>[<enum>VK_MAX_DRIVER_NAME_SIZE_KHR</enum>]</member>
|
<member><type>char</type> <name>driverName</name>[<enum>VK_MAX_DRIVER_NAME_SIZE_KHR</enum>]</member>
|
||||||
<member><type>char</type> <name>driverInfo</name>[<enum>VK_MAX_DRIVER_INFO_SIZE_KHR</enum>]</member>
|
<member><type>char</type> <name>driverInfo</name>[<enum>VK_MAX_DRIVER_INFO_SIZE_KHR</enum>]</member>
|
||||||
<member><type>VkConformanceVersionKHR</type> <name>conformanceVersion</name></member>
|
<member><type>VkConformanceVersionKHR</type> <name>conformanceVersion</name></member>
|
||||||
|
@ -2890,7 +2894,7 @@ server.
|
||||||
<member><type>uint32_t</type> <name>coverageModulationTableCount</name></member>
|
<member><type>uint32_t</type> <name>coverageModulationTableCount</name></member>
|
||||||
<member noautovalidity="true" optional="true" len="coverageModulationTableCount">const <type>float</type>* <name>pCoverageModulationTable</name></member>
|
<member noautovalidity="true" optional="true" len="coverageModulationTableCount">const <type>float</type>* <name>pCoverageModulationTable</name></member>
|
||||||
</type>
|
</type>
|
||||||
<type category="struct" name="VkImageFormatListCreateInfoKHR" structextends="VkImageCreateInfo">
|
<type category="struct" name="VkImageFormatListCreateInfoKHR" structextends="VkImageCreateInfo,VkPhysicalDeviceImageFormatInfo2">
|
||||||
<member values="VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
|
<member values="VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
|
||||||
<member>const <type>void</type>* <name>pNext</name></member>
|
<member>const <type>void</type>* <name>pNext</name></member>
|
||||||
<member optional="true"><type>uint32_t</type> <name>viewFormatCount</name></member>
|
<member optional="true"><type>uint32_t</type> <name>viewFormatCount</name></member>
|
||||||
|
@ -3029,6 +3033,11 @@ server.
|
||||||
<member><type>VkBool32</type> <name>fullyCoveredFragmentShaderInputVariable</name><comment>true if the implementation supports the FullyCoveredEXT SPIR-V builtin fragment shader input variable</comment></member>
|
<member><type>VkBool32</type> <name>fullyCoveredFragmentShaderInputVariable</name><comment>true if the implementation supports the FullyCoveredEXT SPIR-V builtin fragment shader input variable</comment></member>
|
||||||
<member><type>VkBool32</type> <name>conservativeRasterizationPostDepthCoverage</name><comment>true if the implementation supports both conservative rasterization and post depth coverage sample coverage mask</comment></member>
|
<member><type>VkBool32</type> <name>conservativeRasterizationPostDepthCoverage</name><comment>true if the implementation supports both conservative rasterization and post depth coverage sample coverage mask</comment></member>
|
||||||
</type>
|
</type>
|
||||||
|
<type category="struct" name="VkCalibratedTimestampInfoEXT">
|
||||||
|
<member values="VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
|
||||||
|
<member>const <type>void</type>* <name>pNext</name></member>
|
||||||
|
<member><type>VkTimeDomainEXT</type> <name>timeDomain</name></member>
|
||||||
|
</type>
|
||||||
<type category="struct" name="VkPhysicalDeviceShaderCorePropertiesAMD" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
|
<type category="struct" name="VkPhysicalDeviceShaderCorePropertiesAMD" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
|
||||||
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD"><type>VkStructureType</type> <name>sType</name></member>
|
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD"><type>VkStructureType</type> <name>sType</name></member>
|
||||||
<member><type>void</type>* <name>pNext</name><comment>Pointer to next structure</comment></member>
|
<member><type>void</type>* <name>pNext</name><comment>Pointer to next structure</comment></member>
|
||||||
|
@ -3206,6 +3215,14 @@ server.
|
||||||
<member><type>void</type>* <name>pNext</name></member>
|
<member><type>void</type>* <name>pNext</name></member>
|
||||||
<member><type>uint32_t</type> <name>maxVertexAttribDivisor</name><comment>max value of vertex attribute divisor</comment></member>
|
<member><type>uint32_t</type> <name>maxVertexAttribDivisor</name><comment>max value of vertex attribute divisor</comment></member>
|
||||||
</type>
|
</type>
|
||||||
|
<type category="struct" name="VkPhysicalDevicePCIBusInfoPropertiesEXT" structextends="VkPhysicalDeviceProperties2" returnedonly="true">
|
||||||
|
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
|
||||||
|
<member><type>void</type>* <name>pNext</name></member>
|
||||||
|
<member><type>uint16_t</type> <name>pciDomain</name></member>
|
||||||
|
<member><type>uint8_t</type> <name>pciBus</name></member>
|
||||||
|
<member><type>uint8_t</type> <name>pciDevice</name></member>
|
||||||
|
<member><type>uint8_t</type> <name>pciFunction</name></member>
|
||||||
|
</type>
|
||||||
<type category="struct" name="VkImportAndroidHardwareBufferInfoANDROID" structextends="VkMemoryAllocateInfo">
|
<type category="struct" name="VkImportAndroidHardwareBufferInfoANDROID" structextends="VkMemoryAllocateInfo">
|
||||||
<member values="VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"><type>VkStructureType</type> <name>sType</name></member>
|
<member values="VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"><type>VkStructureType</type> <name>sType</name></member>
|
||||||
<member>const <type>void</type>* <name>pNext</name></member>
|
<member>const <type>void</type>* <name>pNext</name></member>
|
||||||
|
@ -3301,6 +3318,32 @@ server.
|
||||||
<member noautovalidity="true"><type>void</type>* <name>pNext</name></member>
|
<member noautovalidity="true"><type>void</type>* <name>pNext</name></member>
|
||||||
<member><type>VkBool32</type> <name>decodeModeSharedExponent</name></member>
|
<member><type>VkBool32</type> <name>decodeModeSharedExponent</name></member>
|
||||||
</type>
|
</type>
|
||||||
|
<type category="struct" name="VkPhysicalDeviceTransformFeedbackFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
|
||||||
|
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
|
||||||
|
<member><type>void</type>* <name>pNext</name></member>
|
||||||
|
<member><type>VkBool32</type> <name>transformFeedback</name></member>
|
||||||
|
<member><type>VkBool32</type> <name>geometryStreams</name></member>
|
||||||
|
</type>
|
||||||
|
<type category="struct" name="VkPhysicalDeviceTransformFeedbackPropertiesEXT" structextends="VkPhysicalDeviceProperties2" returnedonly="true">
|
||||||
|
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
|
||||||
|
<member><type>void</type>* <name>pNext</name></member>
|
||||||
|
<member><type>uint32_t</type> <name>maxTransformFeedbackStreams</name></member>
|
||||||
|
<member><type>uint32_t</type> <name>maxTransformFeedbackBuffers</name></member>
|
||||||
|
<member><type>VkDeviceSize</type> <name>maxTransformFeedbackBufferSize</name></member>
|
||||||
|
<member><type>uint32_t</type> <name>maxTransformFeedbackStreamDataSize</name></member>
|
||||||
|
<member><type>uint32_t</type> <name>maxTransformFeedbackBufferDataSize</name></member>
|
||||||
|
<member><type>uint32_t</type> <name>maxTransformFeedbackBufferDataStride</name></member>
|
||||||
|
<member><type>VkBool32</type> <name>transformFeedbackQueries</name></member>
|
||||||
|
<member><type>VkBool32</type> <name>transformFeedbackStreamsLinesTriangles</name></member>
|
||||||
|
<member><type>VkBool32</type> <name>transformFeedbackRasterizationStreamSelect</name></member>
|
||||||
|
<member><type>VkBool32</type> <name>transformFeedbackDraw</name></member>
|
||||||
|
</type>
|
||||||
|
<type category="struct" name="VkPipelineRasterizationStateStreamCreateInfoEXT" structextends="VkPipelineRasterizationStateCreateInfo">
|
||||||
|
<member values="VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
|
||||||
|
<member>const <type>void</type>* <name>pNext</name></member>
|
||||||
|
<member optional="true"><type>VkPipelineRasterizationStateStreamCreateFlagsEXT</type> <name>flags</name></member>
|
||||||
|
<member><type>uint32_t</type> <name>rasterizationStream</name></member>
|
||||||
|
</type>
|
||||||
<type category="struct" name="VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
|
<type category="struct" name="VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
|
||||||
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV"><type>VkStructureType</type><name>sType</name></member>
|
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV"><type>VkStructureType</type><name>sType</name></member>
|
||||||
<member noautovalidity="true"><type>void</type>* <name>pNext</name></member>
|
<member noautovalidity="true"><type>void</type>* <name>pNext</name></member>
|
||||||
|
@ -3510,6 +3553,9 @@ server.
|
||||||
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
|
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
|
||||||
<member>const <type>void</type>* <name>pNext</name></member>
|
<member>const <type>void</type>* <name>pNext</name></member>
|
||||||
<member><type>uint64_t</type> <name>drmFormatModifier</name></member>
|
<member><type>uint64_t</type> <name>drmFormatModifier</name></member>
|
||||||
|
<member><type>VkSharingMode</type> <name>sharingMode</name></member>
|
||||||
|
<member optional="true"><type>uint32_t</type> <name>queueFamilyIndexCount</name></member>
|
||||||
|
<member noautovalidity="true" len="queueFamilyIndexCount">const <type>uint32_t</type>* <name>pQueueFamilyIndices</name></member>
|
||||||
</type>
|
</type>
|
||||||
<type category="struct" name="VkImageDrmFormatModifierListCreateInfoEXT" structextends="VkImageCreateInfo">
|
<type category="struct" name="VkImageDrmFormatModifierListCreateInfoEXT" structextends="VkImageCreateInfo">
|
||||||
<member values="VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
|
<member values="VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
|
||||||
|
@ -4341,6 +4387,12 @@ server.
|
||||||
<enum bitpos="7" name="VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR"/>
|
<enum bitpos="7" name="VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR"/>
|
||||||
<enum bitpos="8" name="VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR"/>
|
<enum bitpos="8" name="VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR"/>
|
||||||
</enums>
|
</enums>
|
||||||
|
<enums name="VkTimeDomainEXT" type="enum">
|
||||||
|
<enum value="0" name="VK_TIME_DOMAIN_DEVICE_EXT"/>
|
||||||
|
<enum value="1" name="VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT"/>
|
||||||
|
<enum value="2" name="VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT"/>
|
||||||
|
<enum value="3" name="VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT"/>
|
||||||
|
</enums>
|
||||||
<enums name="VkDebugReportFlagBitsEXT" type="bitmask">
|
<enums name="VkDebugReportFlagBitsEXT" type="bitmask">
|
||||||
<enum bitpos="0" name="VK_DEBUG_REPORT_INFORMATION_BIT_EXT"/>
|
<enum bitpos="0" name="VK_DEBUG_REPORT_INFORMATION_BIT_EXT"/>
|
||||||
<enum bitpos="1" name="VK_DEBUG_REPORT_WARNING_BIT_EXT"/>
|
<enum bitpos="1" name="VK_DEBUG_REPORT_WARNING_BIT_EXT"/>
|
||||||
|
@ -6517,6 +6569,20 @@ server.
|
||||||
<param optional="false,true"><type>size_t</type>* <name>pInfoSize</name></param>
|
<param optional="false,true"><type>size_t</type>* <name>pInfoSize</name></param>
|
||||||
<param optional="true" len="pInfoSize"><type>void</type>* <name>pInfo</name></param>
|
<param optional="true" len="pInfoSize"><type>void</type>* <name>pInfo</name></param>
|
||||||
</command>
|
</command>
|
||||||
|
<command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
|
||||||
|
<proto><type>VkResult</type> <name>vkGetPhysicalDeviceCalibrateableTimeDomainsEXT</name></proto>
|
||||||
|
<param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
|
||||||
|
<param optional="false,true"><type>uint32_t</type>* <name>pTimeDomainCount</name></param>
|
||||||
|
<param optional="true" len="pTimeDomainCount"><type>VkTimeDomainEXT</type>* <name>pTimeDomains</name></param>
|
||||||
|
</command>
|
||||||
|
<command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
|
||||||
|
<proto><type>VkResult</type> <name>vkGetCalibratedTimestampsEXT</name></proto>
|
||||||
|
<param><type>VkDevice</type> <name>device</name></param>
|
||||||
|
<param><type>uint32_t</type> <name>timestampCount</name></param>
|
||||||
|
<param len="timestampCount">const <type>VkCalibratedTimestampInfoEXT</type>* <name>pTimestampInfos</name></param>
|
||||||
|
<param len="timestampCount"><type>uint64_t</type>* <name>pTimestamps</name></param>
|
||||||
|
<param><type>uint64_t</type>* <name>pMaxDeviation</name></param>
|
||||||
|
</command>
|
||||||
<command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
|
<command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
|
||||||
<proto><type>VkResult</type> <name>vkSetDebugUtilsObjectNameEXT</name></proto>
|
<proto><type>VkResult</type> <name>vkSetDebugUtilsObjectNameEXT</name></proto>
|
||||||
<param><type>VkDevice</type> <name>device</name></param>
|
<param><type>VkDevice</type> <name>device</name></param>
|
||||||
|
@ -6657,6 +6723,56 @@ server.
|
||||||
<param optional="false,true"><type>uint32_t</type>* <name>pCheckpointDataCount</name></param>
|
<param optional="false,true"><type>uint32_t</type>* <name>pCheckpointDataCount</name></param>
|
||||||
<param optional="true" len="pCheckpointDataCount"><type>VkCheckpointDataNV</type>* <name>pCheckpointData</name></param>
|
<param optional="true" len="pCheckpointDataCount"><type>VkCheckpointDataNV</type>* <name>pCheckpointData</name></param>
|
||||||
</command>
|
</command>
|
||||||
|
<command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
|
||||||
|
<proto><type>void</type> <name>vkCmdBindTransformFeedbackBuffersEXT</name></proto>
|
||||||
|
<param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
|
||||||
|
<param><type>uint32_t</type> <name>firstBinding</name></param>
|
||||||
|
<param><type>uint32_t</type> <name>bindingCount</name></param>
|
||||||
|
<param len="bindingCount">const <type>VkBuffer</type>* <name>pBuffers</name></param>
|
||||||
|
<param len="bindingCount">const <type>VkDeviceSize</type>* <name>pOffsets</name></param>
|
||||||
|
<param optional="true" len="bindingCount">const <type>VkDeviceSize</type>* <name>pSizes</name></param>
|
||||||
|
</command>
|
||||||
|
<command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary">
|
||||||
|
<proto><type>void</type> <name>vkCmdBeginTransformFeedbackEXT</name></proto>
|
||||||
|
<param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
|
||||||
|
<param><type>uint32_t</type> <name>firstCounterBuffer</name></param>
|
||||||
|
<param optional="false"><type>uint32_t</type> <name>counterBufferCount</name></param>
|
||||||
|
<param optional="true" len="counterBufferCount">const <type>VkBuffer</type>* <name>pCounterBuffers</name></param>
|
||||||
|
<param optional="true" len="counterBufferCount">const <type>VkDeviceSize</type>* <name>pCounterBufferOffsets</name></param>
|
||||||
|
</command>
|
||||||
|
<command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary">
|
||||||
|
<proto><type>void</type> <name>vkCmdEndTransformFeedbackEXT</name></proto>
|
||||||
|
<param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
|
||||||
|
<param><type>uint32_t</type> <name>firstCounterBuffer</name></param>
|
||||||
|
<param optional="false"><type>uint32_t</type> <name>counterBufferCount</name></param>
|
||||||
|
<param optional="true" len="counterBufferCount">const <type>VkBuffer</type>* <name>pCounterBuffers</name></param>
|
||||||
|
<param optional="true" len="counterBufferCount">const <type>VkDeviceSize</type>* <name>pCounterBufferOffsets</name></param>
|
||||||
|
</command>
|
||||||
|
<command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary">
|
||||||
|
<proto><type>void</type> <name>vkCmdBeginQueryIndexedEXT</name></proto>
|
||||||
|
<param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
|
||||||
|
<param><type>VkQueryPool</type> <name>queryPool</name></param>
|
||||||
|
<param><type>uint32_t</type> <name>query</name></param>
|
||||||
|
<param optional="true"><type>VkQueryControlFlags</type> <name>flags</name></param>
|
||||||
|
<param><type>uint32_t</type> <name>index</name></param>
|
||||||
|
</command>
|
||||||
|
<command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary">
|
||||||
|
<proto><type>void</type> <name>vkCmdEndQueryIndexedEXT</name></proto>
|
||||||
|
<param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
|
||||||
|
<param><type>VkQueryPool</type> <name>queryPool</name></param>
|
||||||
|
<param><type>uint32_t</type> <name>query</name></param>
|
||||||
|
<param><type>uint32_t</type> <name>index</name></param>
|
||||||
|
</command>
|
||||||
|
<command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary" pipeline="graphics">
|
||||||
|
<proto><type>void</type> <name>vkCmdDrawIndirectByteCountEXT</name></proto>
|
||||||
|
<param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
|
||||||
|
<param><type>uint32_t</type> <name>instanceCount</name></param>
|
||||||
|
<param><type>uint32_t</type> <name>firstInstance</name></param>
|
||||||
|
<param><type>VkBuffer</type> <name>counterBuffer</name></param>
|
||||||
|
<param><type>VkDeviceSize</type> <name>counterBufferOffset</name></param>
|
||||||
|
<param><type>uint32_t</type> <name>counterOffset</name></param>
|
||||||
|
<param><type>uint32_t</type> <name>vertexStride</name></param>
|
||||||
|
</command>
|
||||||
<command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
|
<command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
|
||||||
<proto><type>void</type> <name>vkCmdSetExclusiveScissorNV</name></proto>
|
<proto><type>void</type> <name>vkCmdSetExclusiveScissorNV</name></proto>
|
||||||
<param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
|
<param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
|
||||||
|
@ -7689,10 +7805,37 @@ server.
|
||||||
<enum value=""VK_NV_extension_28"" name="VK_EXT_EXTENSION_28_EXTENSION_NAME"/>
|
<enum value=""VK_NV_extension_28"" name="VK_EXT_EXTENSION_28_EXTENSION_NAME"/>
|
||||||
</require>
|
</require>
|
||||||
</extension>
|
</extension>
|
||||||
<extension name="VK_NVX_extension_29" number="29" author="NVX" contact="Jeff Juliano @jjulianoatnv" supported="disabled">
|
<extension name="VK_EXT_transform_feedback" number="29" type="device" author="NV" contact="Piers Daniell @pdaniell-nv" supported="vulkan" requires="VK_KHR_get_physical_device_properties2">
|
||||||
<require>
|
<require>
|
||||||
<enum value="0" name="VK_NVX_EXTENSION_29_SPEC_VERSION"/>
|
<enum value="1" name="VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION"/>
|
||||||
<enum value=""VK_NVX_extension_29"" name="VK_NVX_EXTENSION_29_EXTENSION_NAME"/>
|
<enum value=""VK_EXT_transform_feedback"" name="VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME"/>
|
||||||
|
<command name="vkCmdBindTransformFeedbackBuffersEXT"/>
|
||||||
|
<command name="vkCmdBeginTransformFeedbackEXT"/>
|
||||||
|
<command name="vkCmdEndTransformFeedbackEXT"/>
|
||||||
|
<command name="vkCmdBeginQueryIndexedEXT"/>
|
||||||
|
<command name="vkCmdEndQueryIndexedEXT"/>
|
||||||
|
<command name="vkCmdDrawIndirectByteCountEXT"/>
|
||||||
|
|
||||||
|
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT"/>
|
||||||
|
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT"/>
|
||||||
|
<enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT"/>
|
||||||
|
|
||||||
|
<enum offset="4" extends="VkQueryType" name="VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT"/>
|
||||||
|
|
||||||
|
<enum bitpos="11" extends="VkBufferUsageFlagBits" name="VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT"/>
|
||||||
|
<enum bitpos="12" extends="VkBufferUsageFlagBits" name="VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT"/>
|
||||||
|
|
||||||
|
<enum bitpos="25" extends="VkAccessFlagBits" name="VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT"/>
|
||||||
|
<enum bitpos="26" extends="VkAccessFlagBits" name="VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT"/>
|
||||||
|
<enum bitpos="27" extends="VkAccessFlagBits" name="VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT"/>
|
||||||
|
|
||||||
|
<enum bitpos="24" extends="VkPipelineStageFlagBits" name="VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT"/>
|
||||||
|
|
||||||
|
<type name="VkPhysicalDeviceTransformFeedbackFeaturesEXT"/>
|
||||||
|
<type name="VkPhysicalDeviceTransformFeedbackPropertiesEXT"/>
|
||||||
|
<type name="VkPipelineRasterizationStateStreamCreateInfoEXT"/>
|
||||||
|
|
||||||
|
<type name="VkPipelineRasterizationStateStreamCreateFlagsEXT"/>
|
||||||
</require>
|
</require>
|
||||||
</extension>
|
</extension>
|
||||||
<extension name="VK_NVX_extension_30" number="30" author="NVX" contact="Jeff Juliano @jjulianoatnv" supported="disabled">
|
<extension name="VK_NVX_extension_30" number="30" author="NVX" contact="Jeff Juliano @jjulianoatnv" supported="disabled">
|
||||||
|
@ -9210,7 +9353,7 @@ server.
|
||||||
<type name="VkBindImageMemoryInfoKHR"/>
|
<type name="VkBindImageMemoryInfoKHR"/>
|
||||||
</require>
|
</require>
|
||||||
</extension>
|
</extension>
|
||||||
<extension name="VK_EXT_image_drm_format_modifier" number="159" type="device" requires="VK_KHR_bind_memory2,VK_KHR_get_physical_device_properties2,VK_KHR_sampler_ycbcr_conversion" author="EXT" contact="Chad Versace @chadversary" supported="disabled">
|
<extension name="VK_EXT_image_drm_format_modifier" number="159" type="device" requires="VK_KHR_bind_memory2,VK_KHR_get_physical_device_properties2,VK_KHR_image_format_list,VK_KHR_sampler_ycbcr_conversion" author="EXT" contact="Chad Versace @chadversary" supported="vulkan">
|
||||||
<require>
|
<require>
|
||||||
<enum value="0" name="VK_EXT_EXTENSION_159_SPEC_VERSION"/>
|
<enum value="0" name="VK_EXT_EXTENSION_159_SPEC_VERSION"/>
|
||||||
<enum value=""VK_EXT_extension_159"" name="VK_EXT_EXTENSION_159_EXTENSION_NAME"/>
|
<enum value=""VK_EXT_extension_159"" name="VK_EXT_EXTENSION_159_EXTENSION_NAME"/>
|
||||||
|
@ -9532,10 +9675,15 @@ server.
|
||||||
<enum value=""VK_AMD_extension_184"" name="VK_KHR_EXTENSION_184_EXTENSION_NAME"/>
|
<enum value=""VK_AMD_extension_184"" name="VK_KHR_EXTENSION_184_EXTENSION_NAME"/>
|
||||||
</require>
|
</require>
|
||||||
</extension>
|
</extension>
|
||||||
<extension name="VK_AMD_extension_185" number="185" author="AMD" contact="Daniel Rakos @drakos-amd" supported="disabled">
|
<extension name="VK_EXT_calibrated_timestamps" number="185" type="device" author="EXT" contact="Daniel Rakos @drakos-amd" supported="vulkan">
|
||||||
<require>
|
<require>
|
||||||
<enum value="0" name="VK_KHR_EXTENSION_185_SPEC_VERSION"/>
|
<enum value="1" name="VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION"/>
|
||||||
<enum value=""VK_AMD_extension_185"" name="VK_KHR_EXTENSION_185_EXTENSION_NAME"/>
|
<enum value=""VK_EXT_calibrated_timestamps"" name="VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME"/>
|
||||||
|
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT"/>
|
||||||
|
<type name="VkTimeDomainEXT"/>
|
||||||
|
<type name="VkCalibratedTimestampInfoEXT"/>
|
||||||
|
<command name="vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"/>
|
||||||
|
<command name="vkGetCalibratedTimestampsEXT"/>
|
||||||
</require>
|
</require>
|
||||||
</extension>
|
</extension>
|
||||||
<extension name="VK_AMD_shader_core_properties" number="186" type="device" author="AMD" requires="VK_KHR_get_physical_device_properties2" contact="Martin Dinkov @mdinkov" supported="vulkan">
|
<extension name="VK_AMD_shader_core_properties" number="186" type="device" author="AMD" requires="VK_KHR_get_physical_device_properties2" contact="Martin Dinkov @mdinkov" supported="vulkan">
|
||||||
|
@ -9748,10 +9896,12 @@ server.
|
||||||
<type name="VkPhysicalDeviceVulkanMemoryModelFeaturesKHR"/>
|
<type name="VkPhysicalDeviceVulkanMemoryModelFeaturesKHR"/>
|
||||||
</require>
|
</require>
|
||||||
</extension>
|
</extension>
|
||||||
<extension name="VK_AMD_extension_213" number="213" author="AMD" contact="Neil Henning @sheredom" supported="disabled">
|
<extension name="VK_EXT_pci_bus_info" number="213" type="device" author="EXT" requires="VK_KHR_get_physical_device_properties2" contact="Matthaeus G. Chajdas @anteru" supported="vulkan">
|
||||||
<require>
|
<require>
|
||||||
<enum value="0" name="VK_KHR_EXTENSION_213_SPEC_VERSION"/>
|
<enum value="1" name="VK_EXT_PCI_BUS_INFO_SPEC_VERSION"/>
|
||||||
<enum value=""VK_KHR_extension_213"" name="VK_KHR_EXTENSION_213_EXTENSION_NAME"/>
|
<enum value=""VK_EXT_pci_bus_info"" name="VK_EXT_PCI_BUS_INFO_EXTENSION_NAME"/>
|
||||||
|
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT"/>
|
||||||
|
<type name="VkPhysicalDevicePCIBusInfoPropertiesEXT"/>
|
||||||
</require>
|
</require>
|
||||||
</extension>
|
</extension>
|
||||||
<extension name="VK_AMD_extension_214" number="214" author="AMD" contact="Neil Henning @sheredom" supported="disabled">
|
<extension name="VK_AMD_extension_214" number="214" author="AMD" contact="Neil Henning @sheredom" supported="disabled">
|
||||||
|
@ -9824,16 +9974,16 @@ server.
|
||||||
<enum value=""VK_EXT_extension_223"" name="VK_EXT_EXTENSION_223_EXTENSION_NAME"/>
|
<enum value=""VK_EXT_extension_223"" name="VK_EXT_EXTENSION_223_EXTENSION_NAME"/>
|
||||||
</require>
|
</require>
|
||||||
</extension>
|
</extension>
|
||||||
<extension name="VK_AMD_extension_224" number="224" author="AMD" contact="Martin Dinkov @mdinkov" supported="disabled">
|
<extension name="VK_GOOGLE_hlsl_functionality1" number="224" type="device" author="GOOGLE" contact="Hai Nguyen @chaoticbob" supported="vulkan">
|
||||||
<require>
|
<require>
|
||||||
<enum value="0" name="VK_AMD_EXTENSION_224_SPEC_VERSION"/>
|
<enum value="0" name="VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION"/>
|
||||||
<enum value=""VK_AMD_extension_224"" name="VK_AMD_EXTENSION_224_EXTENSION_NAME"/>
|
<enum value=""VK_GOOGLE_hlsl_functionality1"" name="VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME"/>
|
||||||
</require>
|
</require>
|
||||||
</extension>
|
</extension>
|
||||||
<extension name="VK_AMD_extension_225" number="225" author="AMD" contact="Martin Dinkov @mdinkov" supported="disabled">
|
<extension name="VK_GOOGLE_decorate_string" number="225" type="device" author="GOOGLE" contact="Hai Nguyen @chaoticbob" supported="vulkan">
|
||||||
<require>
|
<require>
|
||||||
<enum value="0" name="VK_AMD_EXTENSION_225_SPEC_VERSION"/>
|
<enum value="0" name="VK_GOOGLE_DECORATE_STRING_SPEC_VERSION"/>
|
||||||
<enum value=""VK_AMD_extension_225"" name="VK_AMD_EXTENSION_225_EXTENSION_NAME"/>
|
<enum value=""VK_GOOGLE_decorate_string"" name="VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME"/>
|
||||||
</require>
|
</require>
|
||||||
</extension>
|
</extension>
|
||||||
<extension name="VK_AMD_extension_226" number="226" author="AMD" contact="Martin Dinkov @mdinkov" supported="disabled">
|
<extension name="VK_AMD_extension_226" number="226" author="AMD" contact="Martin Dinkov @mdinkov" supported="disabled">
|
||||||
|
@ -9908,5 +10058,23 @@ server.
|
||||||
<enum value=""VK_KHR_extension_237"" name="VK_KHR_EXTENSION_237_EXTENSION_NAME"/>
|
<enum value=""VK_KHR_extension_237"" name="VK_KHR_EXTENSION_237_EXTENSION_NAME"/>
|
||||||
</require>
|
</require>
|
||||||
</extension>
|
</extension>
|
||||||
|
<extension name="VK_KHR_extension_238" number="238" author="KHR" contact="Jeff Bolz @jeffbolznv" supported="disabled">
|
||||||
|
<require>
|
||||||
|
<enum value="0" name="VK_KHR_EXTENSION_238_SPEC_VERSION"/>
|
||||||
|
<enum value=""VK_KHR_extension_238"" name="VK_KHR_EXTENSION_238_EXTENSION_NAME"/>
|
||||||
|
</require>
|
||||||
|
</extension>
|
||||||
|
<extension name="VK_KHR_extension_239" number="239" author="KHR" contact="Jeff Bolz @jeffbolznv" supported="disabled">
|
||||||
|
<require>
|
||||||
|
<enum value="0" name="VK_KHR_EXTENSION_239_SPEC_VERSION"/>
|
||||||
|
<enum value=""VK_KHR_extension_239"" name="VK_KHR_EXTENSION_239_EXTENSION_NAME"/>
|
||||||
|
</require>
|
||||||
|
</extension>
|
||||||
|
<extension name="VK_KHR_extension_240" number="240" author="KHR" contact="Sandeep Shinde @nvidia" supported="disabled">
|
||||||
|
<require>
|
||||||
|
<enum value="0" name="VK_KHR_EXTENSION_240_SPEC_VERSION"/>
|
||||||
|
<enum value=""VK_KHR_extension_240"" name="VK_KHR_EXTENSION_240_EXTENSION_NAME"/>
|
||||||
|
</require>
|
||||||
|
</extension>
|
||||||
</extensions>
|
</extensions>
|
||||||
</registry>
|
</registry>
|
||||||
|
|
Loading…
Reference in New Issue