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:
|
||||
|
||||
* Update release number to 87.
|
||||
|
|
2
Makefile
2
Makefile
|
@ -112,7 +112,7 @@ VERBOSE =
|
|||
# EXTRAATTRIBS sets additional attributes, if passed to make
|
||||
# ADOCOPTS options for asciidoc->HTML5 output
|
||||
NOTEOPTS = -a editing-notes -a implementation-guide
|
||||
PATCHVERSION = 87
|
||||
PATCHVERSION = 88
|
||||
ifneq (,$(findstring VK_VERSION_1_1,$(VERSIONS)))
|
||||
SPECREVISION = 1.1.$(PATCHVERSION)
|
||||
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
|
||||
|
||||
**Example 1**
|
||||
*Example 1*
|
||||
|
||||
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
|
||||
|
@ -78,7 +78,7 @@ objects in error messages.
|
|||
// command buffer with no memory bound to it.
|
||||
----------------------------------------
|
||||
|
||||
**Example 2**
|
||||
*Example 2*
|
||||
|
||||
Annotating regions of a workload with naming information so that offline
|
||||
analysis tools can display a more usable visualisation of the commands
|
||||
|
|
|
@ -107,7 +107,7 @@ VkCommandBuffer the message occurred.
|
|||
|
||||
=== Examples
|
||||
|
||||
**Example 1**
|
||||
*Example 1*
|
||||
|
||||
`VK_EXT_debug_utils` allows an application to register multiple callbacks
|
||||
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);
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
**Example 2**
|
||||
*Example 2*
|
||||
|
||||
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
|
||||
|
@ -219,7 +219,7 @@ objects in error messages.
|
|||
// command buffer with no memory bound to it.
|
||||
----------------------------------------
|
||||
|
||||
**Example 3**
|
||||
*Example 3*
|
||||
|
||||
Annotating regions of a workload with naming information so that offline
|
||||
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.
|
||||
*Contributors*::
|
||||
- Antoine Labour, Google
|
||||
- Bas Nieuwenhuizen, Google
|
||||
- Chad Versace, Google
|
||||
- James Jones, NVIDIA
|
||||
- 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
|
||||
|
||||
**Example 1**
|
||||
*Example 1*
|
||||
|
||||
Passing in GLSL code
|
||||
|
||||
|
|
|
@ -23,6 +23,17 @@ Acquire Operation (Resource)::
|
|||
An operation that acquires ownership of an image subresource or buffer
|
||||
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::
|
||||
A vertex in an adjacency primitive topology that is not part of a given
|
||||
primitive, but is accessible in geometry shaders.
|
||||
|
@ -582,6 +593,9 @@ Host::
|
|||
The processor(s) and execution environment that the application runs 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[]
|
||||
Host Mapped Foreign Memory::
|
||||
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
|
||||
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[]
|
||||
Validation Cache::
|
||||
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:SampledCubeArray | <<features-features-imageCubeArray,imageCubeArray>>
|
||||
| code:ImageMSArray | <<features-features-shaderStorageImageMultisample,shaderStorageImageMultisample>>
|
||||
| code:StorageImageExtendedFormats | <<features-features-shaderStorageImageExtendedFormats,shaderStorageImageExtendedFormats>>
|
||||
| code:StorageImageExtendedFormats |
|
||||
| code:InterpolationFunction | <<features-features-sampleRateShading,sampleRateShading>>
|
||||
| code:StorageImageReadWithoutFormat | <<features-features-shaderStorageImageReadWithoutFormat,shaderStorageImageReadWithoutFormat>>
|
||||
| code:StorageImageWriteWithoutFormat | <<features-features-shaderStorageImageWriteWithoutFormat,shaderStorageImageWriteWithoutFormat>>
|
||||
|
@ -240,6 +240,10 @@ ifdef::VK_NVX_raytracing[]
|
|||
[[spirvenv-capabilities-table-raytracing]]
|
||||
| code:RaytracingNVX | `<<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[]
|
||||
|
@ -401,6 +405,16 @@ The application can: pass a SPIR-V module to flink:vkCreateShaderModule that
|
|||
uses the `SPV_NVX_raytracing` SPIR-V extension.
|
||||
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
|
||||
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
|
||||
code:NonUniformEXT.
|
||||
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]]
|
||||
== Precision and Operation of SPIR-V Instructions
|
||||
|
|
|
@ -156,9 +156,9 @@ layer-specified manner.
|
|||
The application should: always return ename:VK_FALSE.
|
||||
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
|
||||
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
|
||||
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
|
||||
triggered.
|
||||
* 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.
|
||||
* pname:location is an application defined value.
|
||||
* pname:messageCode is an application defined value.
|
||||
|
@ -272,10 +272,10 @@ registered.
|
|||
.Valid Usage
|
||||
****
|
||||
* [[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]]
|
||||
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
|
||||
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
|
||||
associated with.
|
||||
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.
|
||||
This will be between 0 and the value returned by
|
||||
fname:vkGetPhysicalDeviceDisplayPlanePropertiesKHR in
|
||||
|
|
|
@ -873,8 +873,8 @@ include::../../api/structs/VkAcquireNextImageInfoKHR.txt[]
|
|||
acquired.
|
||||
* pname:timeout specifies how long the function waits, in nanoseconds, if
|
||||
no image is available.
|
||||
* pname:semaphore is code:VK_NULL_HANDLE or a semaphore to signal.
|
||||
* pname:fence is code:VK_NULL_HANDLE or a fence to signal.
|
||||
* pname:semaphore is dlink:VK_NULL_HANDLE or a semaphore 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
|
||||
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
|
||||
mechanisms will have undefined: results.
|
||||
|
||||
The pname:currentExtent of a VI surface is always undefined:.
|
||||
Applications are expected to choose an appropriate size for the swapchain's
|
||||
pname:imageExtent (e.g., by matching the result of a call to
|
||||
If the native window is created with a specified size, pname:currentExtent
|
||||
will reflect that size.
|
||||
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).
|
||||
|
||||
include::../../validity/protos/vkCreateViSurfaceNN.txt[]
|
||||
|
|
|
@ -1476,6 +1476,11 @@ ifdef::VK_VERSION_1_1[]
|
|||
If pname:commandBuffer is an unprotected command buffer, then each
|
||||
element of pname:pCommandBuffers must: be an unprotected command buffer.
|
||||
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[]
|
||||
|
|
|
@ -464,6 +464,30 @@ include::../validity/structs/VkConformanceVersionKHR.txt[]
|
|||
|
||||
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[]
|
||||
|
||||
[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
|
||||
in a sname:VkDeviceQueueCreateInfo instance.
|
||||
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
|
||||
****
|
||||
|
|
|
@ -2210,6 +2210,216 @@ include::../validity/protos/vkCmdDrawIndexedIndirectCountAMD.txt[]
|
|||
--
|
||||
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[]
|
||||
|
||||
[[drawing-conditional-rendering]]
|
||||
|
|
|
@ -564,13 +564,15 @@ supported properties of individual formats as normal.
|
|||
This also specifies whether shader modules can: declare the
|
||||
code:ImageGatherExtended capability.
|
||||
* [[features-features-shaderStorageImageExtendedFormats]]
|
||||
pname:shaderStorageImageExtendedFormats specifies whether the extended
|
||||
storage image formats are available in shader code.
|
||||
If this feature is not enabled, the formats requiring the
|
||||
code:StorageImageExtendedFormats capability are not supported for
|
||||
storage images.
|
||||
This also specifies whether shader modules can: declare the
|
||||
code:StorageImageExtendedFormats capability.
|
||||
pname:shaderStorageImageExtendedFormats specifies whether all the
|
||||
extended storage image formats are available in shader code.
|
||||
If this feature is enabled then the
|
||||
ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT feature must: be supported in
|
||||
pname:optimalTilingFeatures for all of the extended formats.
|
||||
To query for additional properties, or if the feature is not enabled,
|
||||
flink:vkGetPhysicalDeviceFormatProperties and
|
||||
flink:vkGetPhysicalDeviceImageFormatProperties can: be used to check for
|
||||
supported properties of individual formats as normal.
|
||||
* [[features-features-shaderStorageImageMultisample]]
|
||||
pname:shaderStorageImageMultisample specifies whether multisampled
|
||||
storage images are supported.
|
||||
|
@ -1437,6 +1439,36 @@ include::../validity/structs/VkPhysicalDeviceASTCDecodeFeaturesEXT.txt[]
|
|||
|
||||
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[]
|
||||
[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[]
|
||||
|
||||
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]]
|
||||
=== Limit Requirements
|
||||
|
||||
|
@ -3847,6 +3963,18 @@ ifdef::VK_NV_mesh_shader[]
|
|||
| code:uint32_t | pname:meshOutputPerVertexGranularity | `<<VK_NV_mesh_shader>>`
|
||||
| code:uint32_t | pname:meshOutputPerPrimitiveGranularity | `<<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]]
|
||||
|
@ -4058,6 +4186,18 @@ ifdef::VK_NV_mesh_shader[]
|
|||
| pname:meshOutputPerVertexGranularity | - | - | implementation dependent
|
||||
| pname:meshOutputPerPrimitiveGranularity | - | - | implementation dependent
|
||||
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::
|
||||
|
@ -7254,10 +7394,15 @@ pname:sType and pname:pNext added for extensibility.
|
|||
ifdef::VK_EXT_image_drm_format_modifier[]
|
||||
.Valid Usage
|
||||
****
|
||||
* [[VUID-VkPhysicalDeviceImageFormatInfo2KHR-tiling-02249]]
|
||||
* [[VUID-VkPhysicalDeviceImageFormatInfo2-tiling-02249]]
|
||||
pname:tiling must: be ename:VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT if
|
||||
and only if the pname:pNext chain contains
|
||||
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[]
|
||||
|
||||
|
@ -7667,6 +7812,13 @@ include::../api/structs/VkPhysicalDeviceImageDrmFormatModifierInfoEXT.txt[]
|
|||
corresponding to
|
||||
slink:VkImageDrmFormatModifierExplicitCreateInfoEXT::pname:modifier or
|
||||
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
|
||||
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,
|
||||
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[]
|
||||
--
|
||||
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[]
|
||||
|
||||
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
|
||||
decoration, except that <<shaders-interpolation-decorations,interpolation
|
||||
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
|
||||
code:Component decoration are considered to have a code:Component decoration
|
||||
of zero.
|
||||
|
|
|
@ -987,7 +987,7 @@ ifdef::VK_NV_dedicated_allocation[or]
|
|||
endif::VK_KHR_dedicated_allocation[]
|
||||
ifdef::VK_NV_dedicated_allocation[slink:VkDedicatedAllocationMemoryAllocateInfoNV]
|
||||
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_external_memory[]
|
||||
ifdef::VK_KHR_external_memory[]
|
||||
|
@ -1180,7 +1180,7 @@ endif::VK_KHR_dedicated_allocation[]
|
|||
slink:VkBufferCreateInfo::pname:flags
|
||||
ifdef::VK_KHR_external_memory_win32[]
|
||||
* [[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
|
||||
type ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_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[]
|
||||
ifdef::VK_KHR_external_memory_fd[]
|
||||
* [[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
|
||||
type ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT, the memory
|
||||
being imported must: also be a dedicated image allocation and
|
||||
pname:image must be identical to the image associated with the imported
|
||||
memory.
|
||||
* [[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
|
||||
type ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT, the memory
|
||||
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
|
||||
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
|
||||
is already mapped.
|
||||
is already host mapped.
|
||||
|
||||
[NOTE]
|
||||
.Note
|
||||
|
@ -2360,7 +2362,7 @@ slink:VkPhysicalDeviceLimits::pname:nonCoherentAtomSize, and round the end
|
|||
of the range up to the nearest multiple of
|
||||
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
|
||||
range.
|
||||
|
||||
|
@ -2376,7 +2378,7 @@ to maintaining memory access ordering.
|
|||
.Valid Usage
|
||||
****
|
||||
* [[VUID-vkMapMemory-memory-00678]]
|
||||
pname:memory must: not be currently mapped
|
||||
pname:memory must: not be currently host mapped
|
||||
* [[VUID-vkMapMemory-offset-00679]]
|
||||
pname:offset must: be less than the size of pname:memory
|
||||
* [[VUID-vkMapMemory-size-00680]]
|
||||
|
@ -2422,6 +2424,28 @@ See the description of <<synchronization-host-access-types, host access
|
|||
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']
|
||||
--
|
||||
|
||||
|
@ -2444,16 +2468,16 @@ domain operations>> using the ename:VK_ACCESS_HOST_WRITE_BIT
|
|||
|
||||
Within each range described by pname:pMemoryRanges, each set of
|
||||
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
|
||||
it was flushed.
|
||||
set has been written by the host since it was first host mapped, or the last
|
||||
time it was flushed.
|
||||
If pname:pMemoryRanges includes sets of pname:nonCoherentAtomSize bytes
|
||||
where no bytes have been written by the host, those bytes must: not be
|
||||
flushed.
|
||||
|
||||
[[memory-device-unmap-does-not-flush]]
|
||||
Unmapping non-coherent memory does not implicitly flush the mapped memory,
|
||||
and host writes that have not been flushed may: not ever be visible to the
|
||||
device.
|
||||
Unmapping non-coherent memory does not implicitly flush the host mapped
|
||||
memory, and host writes that have not been flushed may: not ever be visible
|
||||
to the device.
|
||||
However, implementations must: ensure that writes that have not been flushed
|
||||
do not become visible to any other memory.
|
||||
|
||||
|
@ -2492,8 +2516,8 @@ invalidated without first being flushed, its contents are undefined:.
|
|||
|
||||
Within each range described by pname:pMemoryRanges, each set of
|
||||
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
|
||||
last time it was invalidated.
|
||||
that set has been written by the device since it was first host mapped, or
|
||||
the last time it was invalidated.
|
||||
|
||||
[NOTE]
|
||||
.Note
|
||||
|
@ -2525,7 +2549,7 @@ include::../api/structs/VkMappedMemoryRange.txt[]
|
|||
.Valid Usage
|
||||
****
|
||||
* [[VUID-VkMappedMemoryRange-memory-00684]]
|
||||
pname:memory must: be currently mapped
|
||||
pname:memory must: be currently host mapped
|
||||
* [[VUID-VkMappedMemoryRange-size-00685]]
|
||||
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
|
||||
|
@ -2566,7 +2590,7 @@ include::../api/protos/vkUnmapMemory.txt[]
|
|||
.Valid Usage
|
||||
****
|
||||
* [[VUID-vkUnmapMemory-memory-00689]]
|
||||
pname:memory must: be currently mapped
|
||||
pname:memory must: be currently host mapped
|
||||
****
|
||||
|
||||
include::../validity/protos/vkUnmapMemory.txt[]
|
||||
|
|
|
@ -929,6 +929,40 @@ endif::VK_NV_clip_space_w_scaling[]
|
|||
If pname:pStages includes a vertex shader stage,
|
||||
pname:pInputAssemblyState must: be a valid pointer to a valid
|
||||
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[]
|
||||
|
@ -1836,6 +1870,10 @@ ifdef::VK_EXT_sample_locations[]
|
|||
slink:VkPipelineSampleLocationsStateCreateInfoEXT when the pipeline was
|
||||
created
|
||||
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[]
|
||||
|
|
|
@ -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
|
||||
rules for a <<renderpass-noattachments, zero-attachment subpass>>.
|
||||
|
||||
|
||||
[[primsrast-discard]]
|
||||
== Discarding Primitives Before Rasterization
|
||||
|
||||
|
@ -215,6 +214,104 @@ slink:VkPipelineRasterizationStateCreateInfo is enabled.
|
|||
When enabled, primitives are discarded after they are processed by the last
|
||||
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]]
|
||||
== Rasterization Order
|
||||
|
@ -658,7 +755,7 @@ include::../api/protos/vkCmdBindShadingRateImageNV.txt[]
|
|||
recorded.
|
||||
* pname:imageView is an image view handle that specifies the shading rate
|
||||
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.
|
||||
* pname:imageLayout is the layout that the image subresources accessible
|
||||
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
|
||||
must: be enabled.
|
||||
* [[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
|
||||
ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY.
|
||||
* [[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.
|
||||
* [[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
|
||||
* [[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
|
||||
pname:imageView at the time the subresource is accessed.
|
||||
* [[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
|
||||
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,
|
||||
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),
|
||||
the single unsigned integer component for that texel will be used as the
|
||||
shading rate index.
|
||||
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
|
||||
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
|
||||
identified by sname:VkImageSubresourceRange::pname:baseMipLevel will be
|
||||
used.
|
||||
|
|
|
@ -140,6 +140,10 @@ include::../api/enums/VkQueryType.txt[]
|
|||
pipeline statistics query>>.
|
||||
* ename:VK_QUERY_TYPE_TIMESTAMP specifies a <<queries-timestamps,
|
||||
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
|
||||
pname:queryPool
|
||||
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[]
|
||||
--
|
||||
|
||||
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']
|
||||
--
|
||||
|
||||
|
@ -411,6 +520,60 @@ endif::VK_VERSION_1_1,VK_KHR_multiview[]
|
|||
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]]
|
||||
An application can: retrieve results either by requesting they be written
|
||||
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
|
||||
significant bit.
|
||||
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
|
||||
large as the size of the array of integers corresponding to a single
|
||||
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[]
|
||||
--
|
||||
|
||||
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]]
|
||||
pname:aspectMask must: not include ename:VK_IMAGE_ASPECT_METADATA_BIT
|
||||
ifdef::VK_EXT_image_drm_format_modifier[]
|
||||
* [[VUID-VkInputAttachmentAspectReferenceKHR-aspectMask-02250]]
|
||||
* [[VUID-VkInputAttachmentAspectReference-aspectMask-02250]]
|
||||
pname:aspectMask must: not include
|
||||
etext:VK_IMAGE_ASPECT_MEMORY_PLANE___i___BIT_EXT for any index __i__.
|
||||
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[]
|
||||
|
||||
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[]
|
||||
[NOTE]
|
||||
.editing-note
|
||||
|
@ -1558,6 +1564,12 @@ respectively.
|
|||
corresponding element of pname:pSubpasses includes more than one bit,
|
||||
its pname:dependencyFlags member must: include
|
||||
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[]
|
||||
|
@ -2774,6 +2786,11 @@ commands for that subpass.
|
|||
* [[VUID-vkCmdNextSubpass-None-00909]]
|
||||
The current subpass index must: be less than the number of subpasses in
|
||||
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[]
|
||||
|
@ -2808,6 +2825,10 @@ a flat parameter.
|
|||
* [[VUID-vkCmdNextSubpass2KHR-None-03102]]
|
||||
The current subpass index must: be less than the number of subpasses in
|
||||
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[]
|
||||
|
@ -2834,6 +2855,11 @@ the final subpass.
|
|||
* [[VUID-vkCmdEndRenderPass-None-00910]]
|
||||
The current subpass index must: be equal to the number of subpasses in
|
||||
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[]
|
||||
|
@ -2863,6 +2889,10 @@ flink:vkCmdEndRenderPass, except that it is extensible.
|
|||
* [[VUID-vkCmdEndRenderPass2KHR-None-03103]]
|
||||
The current subpass index must: be equal to the number of subpasses in
|
||||
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[]
|
||||
|
|
|
@ -225,6 +225,15 @@ ifdef::VK_EXT_conditional_rendering[]
|
|||
buffer is suitable for passing as the pname:buffer parameter to
|
||||
flink:vkCmdBeginConditionalRenderingEXT.
|
||||
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
|
||||
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[]
|
||||
* Let `uint64_t imageCreateDrmFormatModifiers[]` be the set of
|
||||
<<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
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
the list of structures obtained by calling
|
||||
flink:vkGetPhysicalDeviceImageFormatProperties2 for each bit in
|
||||
pname:imageCreateExternalMemoryHandles, with
|
||||
slink:VkPhysicalDeviceExternalImageFormatInfo::pname:handleType set to
|
||||
that bit
|
||||
ifndef::VK_EXT_image_drm_format_modifier[.]
|
||||
ifdef::VK_EXT_image_drm_format_modifier[,]
|
||||
flink:vkGetPhysicalDeviceImageFormatProperties2, possibly multiple
|
||||
times, as follows:
|
||||
*** The parameters
|
||||
slink:VkPhysicalDeviceImageFormatInfo2::pname:format,
|
||||
pname:imageType, pname:tiling, pname:usage, and pname:flags must:
|
||||
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[]
|
||||
and for each modifier in pname:imageCreateDrmFormatModifiers, with
|
||||
slink:VkPhysicalDeviceImageDrmFormatModifierInfoEXT::pname:drmFormatModifier
|
||||
set to that modifier.
|
||||
*** If pname:tiling is ename:VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT,
|
||||
then slink:VkPhysicalDeviceImageFormatInfo2::pname:pNext must:
|
||||
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[]
|
||||
(If pname:imageCreateExternalMemoryHandles is empty, then
|
||||
pname:imageCreateImageFormatPropertiesList is the list of structures
|
||||
obtained by calling flink:vkGetPhysicalDeviceImageFormatProperties2
|
||||
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.
|
||||
*** If any call to flink:vkGetPhysicalDeviceImageFormatProperties2
|
||||
returns an error, then pname:imageCreateImageFormatPropertiesList is
|
||||
defined to be the empty list.
|
||||
ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
** If sname:VkImageCreateInfo::pname:pNext contains an instance of
|
||||
slink:VkExternalFormatANDROID with non-zero pname:externalFormat, then
|
||||
|
@ -1151,6 +1171,11 @@ ifdef::VK_EXT_image_drm_format_modifier[]
|
|||
slink:VkImageDrmFormatModifierListCreateInfoEXT or
|
||||
slink:VkImageDrmFormatModifierExplicitCreateInfoEXT, then pname:tiling
|
||||
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[]
|
||||
ifdef::VK_EXT_sample_locations[]
|
||||
* [[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
|
||||
pname:drmFormatModifier, as found by querying
|
||||
slink:VkDrmFormatModifierPropertiesListEXT.
|
||||
* [[VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-pPlaneLayouts-02266]]
|
||||
For each element of pname:pPlaneLayouts:
|
||||
** [[VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-size-02267]]
|
||||
pname:size must: be 0
|
||||
** [[VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-arrayPitch-02268]]
|
||||
pname:arrayPitch must: be 0 if
|
||||
slink:VkImageCreateInfo::pname:arrayLayers is 1.
|
||||
** [[VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-depthPitch-02269]]
|
||||
pname:depthPitch must: be 0 if
|
||||
slink:VkImageCreateInfo::pname:extent::pname:depth is 1.
|
||||
* [[VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-size-02267]]
|
||||
For each element of pname:pPlaneLayouts, pname:size must: be 0
|
||||
* [[VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-arrayPitch-02268]]
|
||||
For each element of pname:pPlaneLayouts, pname:arrayPitch must: be 0 if
|
||||
slink:VkImageCreateInfo::pname:arrayLayers is 1.
|
||||
* [[VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-depthPitch-02269]]
|
||||
For each element of pname:pPlaneLayouts, pname:depthPitch must: be 0 if
|
||||
slink:VkImageCreateInfo::pname:extent::pname:depth is 1.
|
||||
****
|
||||
|
||||
include::../validity/structs/VkImageDrmFormatModifierExplicitCreateInfoEXT.txt[]
|
||||
|
@ -1992,7 +2015,8 @@ include::../validity/structs/VkSubresourceLayout.txt[]
|
|||
--
|
||||
|
||||
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,
|
||||
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[]
|
||||
--
|
||||
|
||||
[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:
|
||||
|
||||
|
@ -2041,6 +2065,7 @@ slink:VkImageDrmFormatModifierExplicitCreateInfoEXT::pname:drmFormatModifier.
|
|||
|
||||
include::../validity/structs/VkImageDrmFormatModifierPropertiesEXT.txt[]
|
||||
--
|
||||
|
||||
endif::VK_EXT_image_drm_format_modifier[]
|
||||
|
||||
[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]]
|
||||
If the pname:pNext chain contains an instance of
|
||||
slink:VkSamplerYcbcrConversionInfo with a pname:conversion value other
|
||||
than code:VK_NULL_HANDLE, all members of pname:components must: have the
|
||||
value ename:VK_COMPONENT_SWIZZLE_IDENTITY.
|
||||
than dlink:VK_NULL_HANDLE, all members of pname:components must: have
|
||||
the value ename:VK_COMPONENT_SWIZZLE_IDENTITY.
|
||||
endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||
* [[VUID-VkImageViewCreateInfo-image-01020]]
|
||||
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:VkImageMemoryRequirementsInfo2 structure
|
||||
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
|
||||
with ename:VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, then there must: be
|
||||
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
|
||||
endif::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
|
||||
pname:tiling other than ename:VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT,
|
||||
then there must: not be a slink:VkImagePlaneMemoryRequirementsInfo in
|
||||
|
@ -3888,7 +3913,7 @@ endif::VK_KHR_sampler_ycbcr_conversion[]
|
|||
|
||||
.Valid Usage
|
||||
****
|
||||
* [[VUID-VkImagePlaneMemoryRequirementsInfoKHR-planeAspect-02281]]
|
||||
* [[VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-02281]]
|
||||
If the image's tiling is ename:VK_IMAGE_TILING_LINEAR or
|
||||
ename:VK_IMAGE_TILING_OPTIMAL, then pname:planeAspect must: be a single
|
||||
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_2_BIT).
|
||||
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,
|
||||
then pname:planeAspect must: be a single valid _memory plane_ for the
|
||||
image.
|
||||
|
@ -4113,7 +4138,7 @@ ifdef::VK_VERSION_1_1,VK_KHR_dedicated_allocation[]
|
|||
allocated included an instance of slink:VkMemoryDedicatedAllocateInfo in
|
||||
its pname:pNext chain, and
|
||||
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 must: be zero.
|
||||
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
|
||||
its pname:pNext chain, and
|
||||
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
|
||||
must: be zero.
|
||||
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
|
||||
its pname:pNext chain, and
|
||||
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
|
||||
must: be zero.
|
||||
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
|
||||
its pname:pNext chain, and
|
||||
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
|
||||
must: be zero.
|
||||
endif::VK_VERSION_1_1,VK_KHR_dedicated_allocation[]
|
||||
|
@ -4826,7 +4851,7 @@ endif::VK_KHR_sampler_ycbcr_conversion[]
|
|||
|
||||
.Valid Usage
|
||||
****
|
||||
* [[VUID-VkBindImagePlaneMemoryInfoKHR-planeAspect-02283]]
|
||||
* [[VUID-VkBindImagePlaneMemoryInfo-planeAspect-02283]]
|
||||
If the image's tiling is ename:VK_IMAGE_TILING_LINEAR or
|
||||
ename:VK_IMAGE_TILING_OPTIMAL, then pname:planeAspect must: be a single
|
||||
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
|
||||
for "`etext:_3PLANE`" formats.)
|
||||
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,
|
||||
then pname:planeAspect must: be a single valid _memory plane_ for the
|
||||
image.
|
||||
|
|
|
@ -385,6 +385,9 @@ endif::VK_NV_mesh_shader[]
|
|||
ifdef::VK_EXT_conditional_rendering[]
|
||||
** ename:VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT
|
||||
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[]
|
||||
** ename:VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV
|
||||
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
|
||||
consumed.
|
||||
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[]
|
||||
* ename:VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX specifies the stage of
|
||||
the pipeline where device-side generation of commands via
|
||||
|
@ -506,6 +515,9 @@ and <<devsandqueues-queues,Queues>>.
|
|||
ifdef::VK_EXT_conditional_rendering[]
|
||||
|ename:VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT | ename:VK_QUEUE_GRAPHICS_BIT or ename:VK_QUEUE_COMPUTE_BIT
|
||||
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[]
|
||||
|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[]
|
||||
|
@ -576,6 +588,9 @@ endif::VK_NV_mesh_shader[]
|
|||
* ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT
|
||||
* ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_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[]
|
||||
* ename:VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV
|
||||
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[]
|
||||
|
||||
* ename:VK_ACCESS_INDIRECT_COMMAND_READ_BIT specifies read access to an
|
||||
indirect command structure read as part of an indirect drawing or
|
||||
dispatch command.
|
||||
* ename:VK_ACCESS_INDIRECT_COMMAND_READ_BIT specifies read access to
|
||||
indirect command data read as part of an indirect drawing or dispatch
|
||||
command.
|
||||
* ename:VK_ACCESS_INDEX_READ_BIT specifies read access to an index buffer
|
||||
as part of an indexed drawing command, bound by
|
||||
flink:vkCmdBindIndexBuffer.
|
||||
|
@ -747,6 +762,16 @@ ifdef::VK_EXT_conditional_rendering[]
|
|||
* ename:VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT specifies read access
|
||||
to a predicate as part of 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[]
|
||||
* ename:VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX specifies reads from
|
||||
sname:VkBuffer inputs to flink:vkCmdProcessCommandsNVX.
|
||||
|
@ -817,6 +842,11 @@ endif::VK_EXT_conditional_rendering[]
|
|||
ifdef::VK_NV_shading_rate_image[]
|
||||
|ename:VK_ACCESS_SHADING_RATE_IMAGE_BIT_NV | ename:VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV
|
||||
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]]
|
||||
|
@ -4404,3 +4434,98 @@ An event can: only be waited on by the same physical device that signaled it
|
|||
(or the host).
|
||||
|
||||
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
|
||||
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[]
|
||||
* Viewport swizzle (see <<vertexpostproc-viewport-swizzle,Viewport
|
||||
Swizzle>>)
|
||||
|
@ -39,6 +43,316 @@ endif::editing-notes[]
|
|||
Next, rasterization is performed on primitives as described in chapter
|
||||
<<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[]
|
||||
[[vertexpostproc-viewport-swizzle]]
|
||||
== Viewport Swizzle
|
||||
|
|
|
@ -43,7 +43,7 @@ extern "C" {
|
|||
#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
|
||||
#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
|
||||
// Version of this file
|
||||
#define VK_HEADER_VERSION 87
|
||||
#define VK_HEADER_VERSION 88
|
||||
|
||||
|
||||
#define VK_NULL_HANDLE 0
|
||||
|
@ -147,6 +147,7 @@ typedef enum VkResult {
|
|||
VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001,
|
||||
VK_ERROR_VALIDATION_FAILED_EXT = -1000011001,
|
||||
VK_ERROR_INVALID_SHADER_NV = -1000012000,
|
||||
VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000,
|
||||
VK_ERROR_FRAGMENTATION_EXT = -1000161000,
|
||||
VK_ERROR_NOT_PERMITTED_EXT = -1000174001,
|
||||
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_BUFFER_CREATE_INFO_NV = 1000026001,
|
||||
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_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000,
|
||||
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_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000,
|
||||
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_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001,
|
||||
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_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002,
|
||||
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_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000,
|
||||
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_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001,
|
||||
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_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,
|
||||
|
@ -812,6 +824,7 @@ typedef enum VkImageType {
|
|||
typedef enum VkImageTiling {
|
||||
VK_IMAGE_TILING_OPTIMAL = 0,
|
||||
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_END_RANGE = VK_IMAGE_TILING_LINEAR,
|
||||
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_PIPELINE_STATISTICS = 1,
|
||||
VK_QUERY_TYPE_TIMESTAMP = 2,
|
||||
VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004,
|
||||
VK_QUERY_TYPE_COMPACTED_SIZE_NVX = 1000165000,
|
||||
VK_QUERY_TYPE_BEGIN_RANGE = VK_QUERY_TYPE_OCCLUSION,
|
||||
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_ALL_GRAPHICS_BIT = 0x00008000,
|
||||
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_COMMAND_PROCESS_BIT_NVX = 0x00020000,
|
||||
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_1_BIT = 0x00000020,
|
||||
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_1_BIT_KHR = VK_IMAGE_ASPECT_PLANE_1_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_VERTEX_BUFFER_BIT = 0x00000080,
|
||||
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_RAYTRACING_BIT_NVX = 0x00000400,
|
||||
VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
|
||||
|
@ -1644,6 +1665,9 @@ typedef enum VkAccessFlagBits {
|
|||
VK_ACCESS_HOST_WRITE_BIT = 0x00004000,
|
||||
VK_ACCESS_MEMORY_READ_BIT = 0x00008000,
|
||||
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_COMMAND_PROCESS_READ_BIT_NVX = 0x00020000,
|
||||
VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX = 0x00040000,
|
||||
|
@ -6093,7 +6117,7 @@ typedef struct VkConformanceVersionKHR {
|
|||
typedef struct VkPhysicalDeviceDriverPropertiesKHR {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
uint32_t driverID;
|
||||
VkDriverIdKHR driverID;
|
||||
char driverName[VK_MAX_DRIVER_NAME_SIZE_KHR];
|
||||
char driverInfo[VK_MAX_DRIVER_INFO_SIZE_KHR];
|
||||
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_SPEC_VERSION 1
|
||||
#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)(
|
||||
VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
|
||||
VkDebugUtilsMessageTypeFlagsEXT messageType,
|
||||
VkDebugUtilsMessageTypeFlagsEXT messageTypes,
|
||||
const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData,
|
||||
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_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
|
||||
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkValidationCacheEXT)
|
||||
|
||||
|
@ -8297,6 +8469,46 @@ VKAPI_ATTR void VKAPI_CALL vkCmdWriteBufferMarkerAMD(
|
|||
uint32_t marker);
|
||||
#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_SPEC_VERSION 1
|
||||
#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);
|
||||
#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
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
# 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
|
||||
#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
|
||||
#define <name>VK_HEADER_VERSION</name> 87</type>
|
||||
#define <name>VK_HEADER_VERSION</name> 88</type>
|
||||
|
||||
<type category="define">
|
||||
#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="float"/>
|
||||
<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="uint64_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 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 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>
|
||||
<type category="handle"><type>VK_DEFINE_HANDLE</type>(<name>VkInstance</name>)</type>
|
||||
|
@ -465,6 +468,7 @@ server.
|
|||
<type name="VkValidationCacheHeaderVersionEXT" category="enum"/>
|
||||
<type name="VkShaderInfoTypeAMD" category="enum"/>
|
||||
<type name="VkQueueGlobalPriorityEXT" category="enum"/>
|
||||
<type name="VkTimeDomainEXT" category="enum"/>
|
||||
<type name="VkConservativeRasterizationModeEXT" category="enum"/>
|
||||
<type name="VkGeometryFlagBitsNVX" category="enum"/>
|
||||
<type name="VkGeometryInstanceFlagBitsNVX" category="enum"/>
|
||||
|
@ -1992,7 +1996,7 @@ server.
|
|||
<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><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>driverInfo</name>[<enum>VK_MAX_DRIVER_INFO_SIZE_KHR</enum>]</member>
|
||||
<member><type>VkConformanceVersionKHR</type> <name>conformanceVersion</name></member>
|
||||
|
@ -2890,7 +2894,7 @@ server.
|
|||
<member><type>uint32_t</type> <name>coverageModulationTableCount</name></member>
|
||||
<member noautovalidity="true" optional="true" len="coverageModulationTableCount">const <type>float</type>* <name>pCoverageModulationTable</name></member>
|
||||
</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>const <type>void</type>* <name>pNext</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>conservativeRasterizationPostDepthCoverage</name><comment>true if the implementation supports both conservative rasterization and post depth coverage sample coverage mask</comment></member>
|
||||
</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">
|
||||
<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>
|
||||
|
@ -3206,6 +3215,14 @@ server.
|
|||
<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>
|
||||
</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">
|
||||
<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>
|
||||
|
@ -3301,6 +3318,32 @@ server.
|
|||
<member noautovalidity="true"><type>void</type>* <name>pNext</name></member>
|
||||
<member><type>VkBool32</type> <name>decodeModeSharedExponent</name></member>
|
||||
</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">
|
||||
<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>
|
||||
|
@ -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>const <type>void</type>* <name>pNext</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 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>
|
||||
|
@ -4341,6 +4387,12 @@ server.
|
|||
<enum bitpos="7" name="VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR"/>
|
||||
<enum bitpos="8" name="VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR"/>
|
||||
</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">
|
||||
<enum bitpos="0" name="VK_DEBUG_REPORT_INFORMATION_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="true" len="pInfoSize"><type>void</type>* <name>pInfo</name></param>
|
||||
</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">
|
||||
<proto><type>VkResult</type> <name>vkSetDebugUtilsObjectNameEXT</name></proto>
|
||||
<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="true" len="pCheckpointDataCount"><type>VkCheckpointDataNV</type>* <name>pCheckpointData</name></param>
|
||||
</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">
|
||||
<proto><type>void</type> <name>vkCmdSetExclusiveScissorNV</name></proto>
|
||||
<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"/>
|
||||
</require>
|
||||
</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>
|
||||
<enum value="0" name="VK_NVX_EXTENSION_29_SPEC_VERSION"/>
|
||||
<enum value=""VK_NVX_extension_29"" name="VK_NVX_EXTENSION_29_EXTENSION_NAME"/>
|
||||
<enum value="1" name="VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION"/>
|
||||
<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>
|
||||
</extension>
|
||||
<extension name="VK_NVX_extension_30" number="30" author="NVX" contact="Jeff Juliano @jjulianoatnv" supported="disabled">
|
||||
|
@ -9210,7 +9353,7 @@ server.
|
|||
<type name="VkBindImageMemoryInfoKHR"/>
|
||||
</require>
|
||||
</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>
|
||||
<enum value="0" name="VK_EXT_EXTENSION_159_SPEC_VERSION"/>
|
||||
<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"/>
|
||||
</require>
|
||||
</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>
|
||||
<enum value="0" name="VK_KHR_EXTENSION_185_SPEC_VERSION"/>
|
||||
<enum value=""VK_AMD_extension_185"" name="VK_KHR_EXTENSION_185_EXTENSION_NAME"/>
|
||||
<enum value="1" name="VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION"/>
|
||||
<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>
|
||||
</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">
|
||||
|
@ -9748,10 +9896,12 @@ server.
|
|||
<type name="VkPhysicalDeviceVulkanMemoryModelFeaturesKHR"/>
|
||||
</require>
|
||||
</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>
|
||||
<enum value="0" name="VK_KHR_EXTENSION_213_SPEC_VERSION"/>
|
||||
<enum value=""VK_KHR_extension_213"" name="VK_KHR_EXTENSION_213_EXTENSION_NAME"/>
|
||||
<enum value="1" name="VK_EXT_PCI_BUS_INFO_SPEC_VERSION"/>
|
||||
<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>
|
||||
</extension>
|
||||
<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"/>
|
||||
</require>
|
||||
</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>
|
||||
<enum value="0" name="VK_AMD_EXTENSION_224_SPEC_VERSION"/>
|
||||
<enum value=""VK_AMD_extension_224"" name="VK_AMD_EXTENSION_224_EXTENSION_NAME"/>
|
||||
<enum value="0" name="VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION"/>
|
||||
<enum value=""VK_GOOGLE_hlsl_functionality1"" name="VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME"/>
|
||||
</require>
|
||||
</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>
|
||||
<enum value="0" name="VK_AMD_EXTENSION_225_SPEC_VERSION"/>
|
||||
<enum value=""VK_AMD_extension_225"" name="VK_AMD_EXTENSION_225_EXTENSION_NAME"/>
|
||||
<enum value="0" name="VK_GOOGLE_DECORATE_STRING_SPEC_VERSION"/>
|
||||
<enum value=""VK_GOOGLE_decorate_string"" name="VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME"/>
|
||||
</require>
|
||||
</extension>
|
||||
<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"/>
|
||||
</require>
|
||||
</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>
|
||||
</registry>
|
||||
|
|
Loading…
Reference in New Issue