Change log for August 14, 2017 Vulkan 1.0.58 spec update:
* Bump API patch number and header version number to 58 for this update. Github Issues: * Update the <<interfaces-resources-descset,Descriptor Set Interface>> section to allow multiple variables with the same descriptor set/binding decorations, and require that all variables that are statically used must be consistent with the pipeline layout. Allow ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER to be used with texture and sampler variables (public issues 522, 524). Internal Issues: * Replace networkx package used for extension dependency generation with a homegrown network dependency traverser (internal issue 713). * Specify in the <<interfaces-fragmentoutput, Fragment Output Interface>> section that if a fragment shader writes integers that cannot be represented in the format of the colour attachment, then the result is undefined (internal issue 893). * Separate malformed valid usage statement for slink:VkPipelineRasterizationStateCreateInfo into two (internal issue 918). * Fix cases where the term 'pNext chain' is incorrectly used in reference to functions, rather than their parameters. Replace 'pNext list' with 'pNext chain'. Fixed typo in the example code of +VK_KHR_dedicated_allocation+ (internal issue 944). * Fix typo in elink:VkExternalSemaphoreHandleTypeFlagBitsKHR enum descriptions, replacing etext:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FENCE_FD_BIT_KHR with ename:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR, and make the description more consistent with VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR (internal issue 950). Other Issues: * Clarify how pipeline stage masks affect <<synchronization-pipeline-stages-masks, access and synchronization scopes>>. * Clarify that dedicated allocations do not allow aliasing in the flink:vkBindBufferMemory and flink:vkBindImageMemory valid usage statements. * Correct specification of pname:dynamicCount for push_constant token in slink:VkIndirectCommandsLayoutNVX. New Extensions: * `VK_EXT_shader_viewport_index_layer`
This commit is contained in:
parent
a9231ec465
commit
cd4de492bf
|
@ -8,6 +8,58 @@ public issues.
|
||||||
|
|
||||||
-----------------------------------------------------
|
-----------------------------------------------------
|
||||||
|
|
||||||
|
Change log for August 14, 2017 Vulkan 1.0.58 spec update:
|
||||||
|
|
||||||
|
* Bump API patch number and header version number to 58 for this update.
|
||||||
|
|
||||||
|
Github Issues:
|
||||||
|
|
||||||
|
* Update the <<interfaces-resources-descset,Descriptor Set Interface>>
|
||||||
|
section to allow multiple variables with the same descriptor set/binding
|
||||||
|
decorations, and require that all variables that are statically used
|
||||||
|
must be consistent with the pipeline layout. Allow
|
||||||
|
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER to be used with texture
|
||||||
|
and sampler variables (public issues 522, 524).
|
||||||
|
|
||||||
|
Internal Issues:
|
||||||
|
|
||||||
|
* Replace networkx package used for extension dependency generation with a
|
||||||
|
homegrown network dependency traverser (internal issue 713).
|
||||||
|
* Specify in the <<interfaces-fragmentoutput, Fragment Output Interface>>
|
||||||
|
section that if a fragment shader writes integers that cannot be
|
||||||
|
represented in the format of the colour attachment, then the result is
|
||||||
|
undefined (internal issue 893).
|
||||||
|
* Separate malformed valid usage statement for
|
||||||
|
slink:VkPipelineRasterizationStateCreateInfo into two (internal issue
|
||||||
|
918).
|
||||||
|
* Fix cases where the term 'pNext chain' is incorrectly used in reference
|
||||||
|
to functions, rather than their parameters. Replace 'pNext list' with
|
||||||
|
'pNext chain'. Fixed typo in the example code of
|
||||||
|
+VK_KHR_dedicated_allocation+ (internal issue 944).
|
||||||
|
* Fix typo in elink:VkExternalSemaphoreHandleTypeFlagBitsKHR enum
|
||||||
|
descriptions, replacing
|
||||||
|
etext:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FENCE_FD_BIT_KHR with
|
||||||
|
ename:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR, and make the
|
||||||
|
description more consistent with
|
||||||
|
VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR (internal issue 950).
|
||||||
|
|
||||||
|
Other Issues:
|
||||||
|
|
||||||
|
* Clarify how pipeline stage masks affect
|
||||||
|
<<synchronization-pipeline-stages-masks, access and synchronization
|
||||||
|
scopes>>.
|
||||||
|
* Clarify that dedicated allocations do not allow aliasing in the
|
||||||
|
flink:vkBindBufferMemory and flink:vkBindImageMemory valid usage
|
||||||
|
statements.
|
||||||
|
* Correct specification of pname:dynamicCount for push_constant token in
|
||||||
|
slink:VkIndirectCommandsLayoutNVX.
|
||||||
|
|
||||||
|
New Extensions:
|
||||||
|
|
||||||
|
* `VK_EXT_shader_viewport_index_layer`
|
||||||
|
|
||||||
|
-----------------------------------------------------
|
||||||
|
|
||||||
Change log for August 1, 2017 Vulkan 1.0.57 spec update:
|
Change log for August 1, 2017 Vulkan 1.0.57 spec update:
|
||||||
|
|
||||||
* Bump API patch number and header version number to 57 for this update.
|
* Bump API patch number and header version number to 57 for this update.
|
||||||
|
|
|
@ -87,7 +87,7 @@ VERBOSE =
|
||||||
# $(EXTENSIONS))
|
# $(EXTENSIONS))
|
||||||
# ADOCOPTS options for asciidoc->HTML5 output
|
# ADOCOPTS options for asciidoc->HTML5 output
|
||||||
NOTEOPTS = -a editing-notes -a implementation-guide
|
NOTEOPTS = -a editing-notes -a implementation-guide
|
||||||
SPECREVISION = 1.0.57
|
SPECREVISION = 1.0.58
|
||||||
# Spell out RFC2822 format as not all date commands support -R
|
# Spell out RFC2822 format as not all date commands support -R
|
||||||
SPECDATE = $(shell echo `date -u "+%a, %d %b %Y %T %z"`)
|
SPECDATE = $(shell echo `date -u "+%a, %d %b %Y %T %z"`)
|
||||||
|
|
||||||
|
@ -395,8 +395,7 @@ validity/timeMarker: $(VKXML) $(GENVK)
|
||||||
|
|
||||||
# Debugging aid - generate all files from registry XML
|
# Debugging aid - generate all files from registry XML
|
||||||
# This leaves out config/extDependency.sh intentionally as it only
|
# This leaves out config/extDependency.sh intentionally as it only
|
||||||
# needs to be updated when the extension dependencies in vk.xml change,
|
# needs to be updated when the extension dependencies in vk.xml change.
|
||||||
# and requires networkx, a non-standard Python package.
|
|
||||||
|
|
||||||
generated: vkapi.py api/timeMarker hostsynctable/timeMarker validity/timeMarker
|
generated: vkapi.py api/timeMarker hostsynctable/timeMarker validity/timeMarker
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,107 @@
|
||||||
|
[[VK_EXT_shader_viewport_index_layer]]
|
||||||
|
== VK_EXT_shader_viewport_index_layer
|
||||||
|
|
||||||
|
*Name String*::
|
||||||
|
+VK_EXT_shader_viewport_index_layer+
|
||||||
|
*Extension Type*::
|
||||||
|
Device extension
|
||||||
|
*Registered Extension Number*::
|
||||||
|
163
|
||||||
|
*Status*::
|
||||||
|
Complete
|
||||||
|
*Last Modified Data*::
|
||||||
|
2017-08-08
|
||||||
|
*Revision*::
|
||||||
|
1
|
||||||
|
*Dependencies*::
|
||||||
|
- This extension is written against version 1.0 of the Vulkan API.
|
||||||
|
- This extension requires Vulkan 1.0.
|
||||||
|
- This extension requires the
|
||||||
|
https://www.khronos.org/registry/spir-v/extensions/EXT/SPV_EXT_shader_viewport_index_layer.html[+SPV_EXT_shader_viewport_index_layer+]
|
||||||
|
SPIR-V extension.
|
||||||
|
- This extension requires the
|
||||||
|
https://www.opengl.org/registry/specs/ARB/shader_viewport_layer_array.txt[+GL_ARB_shader_viewport_layer_array+],
|
||||||
|
https://www.opengl.org/registry/specs/AMD/vertex_shader_layer.txt[+GL_AMD_vertex_shader_layer+],
|
||||||
|
https://www.opengl.org/registry/specs/AMD/vertex_shader_viewport_index.txt[+GL_AMD_vertex_shader_viewport_index+],
|
||||||
|
or
|
||||||
|
https://www.opengl.org/registry/specs/NV/viewport_array2.txt[+GL_NV_viewport_array2+]
|
||||||
|
extensions for GLSL source languages.
|
||||||
|
- This extension requires the pname:geometryShader and pname:multiViewport
|
||||||
|
features.
|
||||||
|
- This extension interacts with the pname:tessellationShader feature.
|
||||||
|
*Contributors*::
|
||||||
|
- Piers Daniell, NVIDIA
|
||||||
|
- Jeff Bolz, NVIDIA
|
||||||
|
- Jan-Harald Fredriksen, ARM
|
||||||
|
- Daniel Rakos, AMD
|
||||||
|
- Slawomir Grajeswki, Intel
|
||||||
|
*Contact*::
|
||||||
|
- Daniel Koch (dkoch 'at' nvidia.com)
|
||||||
|
|
||||||
|
This extension adds support for the code:ShaderViewportIndexLayerEXT
|
||||||
|
capability from the SPV_EXT_shader_viewport_index_layer extension in Vulkan.
|
||||||
|
|
||||||
|
This extension allows variables decorated with the code:Layer and
|
||||||
|
code:ViewportIndex built-ins to be exported from vertex or tessellation
|
||||||
|
shaders, using the code:ShaderViewportIndexLayerEXT capability.
|
||||||
|
|
||||||
|
When using GLSL source-based shading languages, the code:gl_ViewportIndex
|
||||||
|
and code:gl_Layer built-in variables map to the SPIR-V code:ViewportIndex
|
||||||
|
and code:Layer built-in decorations, respectively.
|
||||||
|
Behaviour of these variables is extended as described in the
|
||||||
|
GL_ARB_shader_viewport_layer_array (or the precursor
|
||||||
|
GL_AMD_vertex_shader_layer, AMD_vertex_shader_viewport_index, and
|
||||||
|
GL_NV_viewport_array2 extensions).
|
||||||
|
|
||||||
|
ifdef::VK_NV_viewport_array2[]
|
||||||
|
[NOTE]
|
||||||
|
.Note
|
||||||
|
====
|
||||||
|
The code:ShaderViewportIndexLayerEXT capability is equivalent to the
|
||||||
|
code:ShaderViewportIndexLayerNV capability added by
|
||||||
|
<<VK_NV_viewport_array2,VK_NV_viewport_array2>>.
|
||||||
|
====
|
||||||
|
endif::VK_NV_viewport_array2[]
|
||||||
|
|
||||||
|
=== New Object Types
|
||||||
|
|
||||||
|
None.
|
||||||
|
|
||||||
|
=== New Enum Constants
|
||||||
|
|
||||||
|
None.
|
||||||
|
|
||||||
|
=== New Enums
|
||||||
|
|
||||||
|
None.
|
||||||
|
|
||||||
|
=== New Structures
|
||||||
|
|
||||||
|
None.
|
||||||
|
|
||||||
|
=== New Functions
|
||||||
|
|
||||||
|
None.
|
||||||
|
|
||||||
|
=== New or Modified Built-In Variables
|
||||||
|
|
||||||
|
* (modified) <<interfaces-builtin-variables-layer,code:Layer>>
|
||||||
|
* (modified)
|
||||||
|
<<interfaces-builtin-variables-viewportindex,code:ViewportIndex>>
|
||||||
|
|
||||||
|
=== New Variable Decoration
|
||||||
|
|
||||||
|
None.
|
||||||
|
|
||||||
|
=== New SPIR-V Capabilities
|
||||||
|
|
||||||
|
* <<spirvenv-capabilities-table-shader-viewport-index-layer,code:ShaderViewportIndexLayerEXT>>
|
||||||
|
|
||||||
|
=== Issues
|
||||||
|
|
||||||
|
None yet!
|
||||||
|
|
||||||
|
=== Version History
|
||||||
|
|
||||||
|
* Revision 1, 2017-08-08 (Daniel Koch)
|
||||||
|
- Internal drafts
|
|
@ -22,7 +22,9 @@
|
||||||
- Tobin Ehlis, Google (tobine@google.com)
|
- Tobin Ehlis, Google (tobine@google.com)
|
||||||
|
|
||||||
This extension provides the slink:VkValidationFlagsEXT struct that can be
|
This extension provides the slink:VkValidationFlagsEXT struct that can be
|
||||||
included in the pname:pNext chain at flink:vkCreateInstance time.
|
included in the pname:pNext chain of the slink:VkInstanceCreateInfo
|
||||||
|
structure passed as the pname:pCreateInfo parameter of
|
||||||
|
flink:vkCreateInstance.
|
||||||
The new struct contains an array of elink:VkValidationCheckEXT values that
|
The new struct contains an array of elink:VkValidationCheckEXT values that
|
||||||
will be disabled by the validation layers.
|
will be disabled by the validation layers.
|
||||||
|
|
||||||
|
|
|
@ -14,9 +14,9 @@
|
||||||
*Status*::
|
*Status*::
|
||||||
Draft.
|
Draft.
|
||||||
*Last Modified Date*::
|
*Last Modified Date*::
|
||||||
2017-02-27
|
2017-08-07
|
||||||
*Revision*::
|
*Revision*::
|
||||||
1
|
3
|
||||||
*IP Status*::
|
*IP Status*::
|
||||||
No known IP claims.
|
No known IP claims.
|
||||||
*Dependencies*::
|
*Dependencies*::
|
||||||
|
@ -38,7 +38,10 @@ allocation, memory aliasing and sparse binding, which could interfere with
|
||||||
some optimizations.
|
some optimizations.
|
||||||
Applications should query the implementation for when a dedicated allocation
|
Applications should query the implementation for when a dedicated allocation
|
||||||
may: be beneficial by adding sname:VkMemoryDedicatedRequirementsKHR to the
|
may: be beneficial by adding sname:VkMemoryDedicatedRequirementsKHR to the
|
||||||
pname:pNext chain of its call to fname:vkGetImageMemoryRequirements2KHR.
|
pname:pNext chain of the sname:VkMemoryRequirements2KHR structure passed as
|
||||||
|
the pname:pMemoryRequirements parameter to a call to
|
||||||
|
fname:vkGetBufferMemoryRequirements2KHR or
|
||||||
|
fname:vkGetImageMemoryRequirements2KHR.
|
||||||
Certain external handle types and external images or buffers may: also
|
Certain external handle types and external images or buffers may: also
|
||||||
depend on dedicated allocations on implementations that associate image or
|
depend on dedicated allocations on implementations that associate image or
|
||||||
buffer metadata with OS-level memory objects.
|
buffer metadata with OS-level memory objects.
|
||||||
|
@ -104,7 +107,7 @@ None.
|
||||||
VkMemoryRequirements2KHR memoryRequirements =
|
VkMemoryRequirements2KHR memoryRequirements =
|
||||||
{
|
{
|
||||||
VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR,
|
VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR,
|
||||||
&dedicatedAllocationRequirements, // pNext
|
&dedicatedRequirements, // pNext
|
||||||
};
|
};
|
||||||
|
|
||||||
const VkImageMemoryRequirementsInfo2KHR imageRequirementsInfo =
|
const VkImageMemoryRequirementsInfo2KHR imageRequirementsInfo =
|
||||||
|
@ -167,3 +170,8 @@ None.
|
||||||
|
|
||||||
* Revision 2, 2017-03-27 (Jason Ekstrand)
|
* Revision 2, 2017-03-27 (Jason Ekstrand)
|
||||||
- Rework the extension to be query-based
|
- Rework the extension to be query-based
|
||||||
|
|
||||||
|
* Revision 3, 2017-07-31 (Jason Ekstrand)
|
||||||
|
- Clarify that memory objects created with
|
||||||
|
VkMemoryDedicatedAllocateInfoKHR can only have the specified resource
|
||||||
|
bound and no others.
|
||||||
|
|
|
@ -8,9 +8,9 @@
|
||||||
*Registered Extension Number*::
|
*Registered Extension Number*::
|
||||||
87
|
87
|
||||||
*Last Modified Date*::
|
*Last Modified Date*::
|
||||||
2016-10-31
|
2017-07-25
|
||||||
*Revision*::
|
*Revision*::
|
||||||
1
|
3
|
||||||
*Dependencies*::
|
*Dependencies*::
|
||||||
- This extension is written against version 1.0 of the Vulkan API.
|
- This extension is written against version 1.0 of the Vulkan API.
|
||||||
*Contributors*::
|
*Contributors*::
|
||||||
|
@ -21,6 +21,7 @@
|
||||||
- Eric Werness, NVIDIA
|
- Eric Werness, NVIDIA
|
||||||
- Detlef Roettger, NVIDIA
|
- Detlef Roettger, NVIDIA
|
||||||
- Daniel Koch, NVIDIA
|
- Daniel Koch, NVIDIA
|
||||||
|
- Chris Hebert, NVIDIA
|
||||||
*Contacts*::
|
*Contacts*::
|
||||||
- Pierre Boudier, NVIDIA (pboudier@nvidia.com)
|
- Pierre Boudier, NVIDIA (pboudier@nvidia.com)
|
||||||
- Christoph Kubisch, NVIDIA (ckubisch@nvidia.com)
|
- Christoph Kubisch, NVIDIA (ckubisch@nvidia.com)
|
||||||
|
@ -434,6 +435,11 @@ https://github.com/NVIDIAGameWorks/GraphicsSamples/tree/master/samples/vk10-kepl
|
||||||
|
|
||||||
=== Version History
|
=== Version History
|
||||||
|
|
||||||
|
* Revision 3, 2017-07-25 (Chris Hebert)
|
||||||
|
- Correction to specification of dynamicCount for push_constant token in
|
||||||
|
VkIndirectCommandsLayoutNVX.
|
||||||
|
Stride was incorrectly computed as dynamicCount was not treated as byte
|
||||||
|
size.
|
||||||
* Revision 2, 2017-06-01 (Christoph Kubisch)
|
* Revision 2, 2017-06-01 (Christoph Kubisch)
|
||||||
- header compatibility break: add missing _TYPE to
|
- header compatibility break: add missing _TYPE to
|
||||||
VkIndirectCommandsTokenTypeNVX and VkObjectEntryTypeNVX enums to follow
|
VkIndirectCommandsTokenTypeNVX and VkObjectEntryTypeNVX enums to follow
|
||||||
|
|
|
@ -62,6 +62,17 @@ code:ViewportRelativeNV decorations, respectively.
|
||||||
Behaviour is described in the GL_NV_viewport_array2 extension
|
Behaviour is described in the GL_NV_viewport_array2 extension
|
||||||
specificiation.
|
specificiation.
|
||||||
|
|
||||||
|
ifdef::VK_EXT_shader_viewport_index_layer[]
|
||||||
|
[NOTE]
|
||||||
|
.Note
|
||||||
|
====
|
||||||
|
The code:ShaderViewportIndexLayerNV capability is equivalent to the
|
||||||
|
code:ShaderViewportIndexLayerEXT capability added by
|
||||||
|
<<VK_EXT_shader_viewport_index_layer,VK_EXT_shader_viewport_index_layer>>.
|
||||||
|
====
|
||||||
|
endif::VK_EXT_shader_viewport_index_layer[]
|
||||||
|
|
||||||
|
|
||||||
=== New Object Types
|
=== New Object Types
|
||||||
|
|
||||||
None.
|
None.
|
||||||
|
|
|
@ -288,6 +288,10 @@ ifdef::VK_EXT_shader_subgroup_vote[]
|
||||||
include::VK_EXT_shader_subgroup_vote.txt[]
|
include::VK_EXT_shader_subgroup_vote.txt[]
|
||||||
endif::VK_EXT_shader_subgroup_vote[]
|
endif::VK_EXT_shader_subgroup_vote[]
|
||||||
|
|
||||||
|
ifdef::VK_EXT_shader_viewport_index_layer[]
|
||||||
|
include::VK_EXT_shader_viewport_index_layer.txt[]
|
||||||
|
endif::VK_EXT_shader_viewport_index_layer[]
|
||||||
|
|
||||||
ifdef::VK_EXT_swapchain_colorspace[]
|
ifdef::VK_EXT_swapchain_colorspace[]
|
||||||
include::VK_EXT_swapchain_colorspace.txt[]
|
include::VK_EXT_swapchain_colorspace.txt[]
|
||||||
endif::VK_EXT_swapchain_colorspace[]
|
endif::VK_EXT_swapchain_colorspace[]
|
||||||
|
|
|
@ -114,6 +114,10 @@ ifdef::VK_NV_geometry_shader_passthrough[]
|
||||||
[[spirvenv-capabilities-table-geometryshaderpassthrough]]
|
[[spirvenv-capabilities-table-geometryshaderpassthrough]]
|
||||||
| code:GeometryShaderPassthroughNV | <<VK_NV_geometry_shader_passthrough,VK_NV_geometry_shader_passthrough>>
|
| code:GeometryShaderPassthroughNV | <<VK_NV_geometry_shader_passthrough,VK_NV_geometry_shader_passthrough>>
|
||||||
endif::VK_NV_geometry_shader_passthrough[]
|
endif::VK_NV_geometry_shader_passthrough[]
|
||||||
|
ifdef::VK_EXT_shader_viewport_index_layer[]
|
||||||
|
[[spirvenv-capabilities-table-shader-viewport-index-layer]]
|
||||||
|
| code:ShaderViewportIndexLayerEXT | <<VK_EXT_shader_viewport_index_layer,VK_EXT_shader_viewport_index_layer>>
|
||||||
|
endif::VK_EXT_shader_viewport_index_layer[]
|
||||||
ifdef::VK_NV_viewport_array2[]
|
ifdef::VK_NV_viewport_array2[]
|
||||||
[[spirvenv-capabilities-table-viewportarray2]]
|
[[spirvenv-capabilities-table-viewportarray2]]
|
||||||
| code:ShaderViewportIndexLayerNV | <<VK_NV_viewport_array2,VK_NV_viewport_array2>>
|
| code:ShaderViewportIndexLayerNV | <<VK_NV_viewport_array2,VK_NV_viewport_array2>>
|
||||||
|
@ -225,6 +229,11 @@ The application can: pass a SPIR-V module to flink:vkCreateShaderModule that
|
||||||
uses the +SPV_NV_viewport_array2+ SPIR-V extension.
|
uses the +SPV_NV_viewport_array2+ SPIR-V extension.
|
||||||
endif::VK_NV_viewport_array2[]
|
endif::VK_NV_viewport_array2[]
|
||||||
|
|
||||||
|
ifdef::VK_EXT_shader_viewport_index_layer[]
|
||||||
|
The application can: pass a SPIR-V module to flink:vkCreateShaderModule that
|
||||||
|
uses the +SPV_EXT_shader_viewport_index_layer+ SPIR-V extension.
|
||||||
|
endif::VK_EXT_shader_viewport_index_layer[]
|
||||||
|
|
||||||
ifdef::VK_NVX_multiview_per_view_attributes[]
|
ifdef::VK_NVX_multiview_per_view_attributes[]
|
||||||
The application can: pass a SPIR-V module to flink:vkCreateShaderModule that
|
The application can: pass a SPIR-V module to flink:vkCreateShaderModule that
|
||||||
uses the +SPV_NVX_multiview_per_view_attributes+ SPIR-V extension.
|
uses the +SPV_NVX_multiview_per_view_attributes+ SPIR-V extension.
|
||||||
|
|
|
@ -12,7 +12,7 @@ Operations>>.
|
||||||
[open,refpage='VkPipelineColorBlendAdvancedStateCreateInfoEXT',desc='Structure specifying parameters that affect advanced blend operations',type='structs']
|
[open,refpage='VkPipelineColorBlendAdvancedStateCreateInfoEXT',desc='Structure specifying parameters that affect advanced blend operations',type='structs']
|
||||||
--
|
--
|
||||||
|
|
||||||
If the pname:pNext list of slink:VkPipelineColorBlendStateCreateInfo
|
If the pname:pNext chain of slink:VkPipelineColorBlendStateCreateInfo
|
||||||
includes a sname:VkPipelineColorBlendAdvancedStateCreateInfoEXT structure,
|
includes a sname:VkPipelineColorBlendAdvancedStateCreateInfoEXT structure,
|
||||||
then that structure includes parameters that affect advanced blend
|
then that structure includes parameters that affect advanced blend
|
||||||
operations.
|
operations.
|
||||||
|
|
|
@ -16,8 +16,8 @@ include::../../api/protos/vkGetPhysicalDeviceSurfaceCapabilities2EXT.txt[]
|
||||||
|
|
||||||
fname:vkGetPhysicalDeviceSurfaceCapabilities2EXT behaves similarly to
|
fname:vkGetPhysicalDeviceSurfaceCapabilities2EXT behaves similarly to
|
||||||
flink:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, with the ability to return
|
flink:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, with the ability to return
|
||||||
extended information by adding extension structures to its pname:pNext
|
extended information by adding extension structures to the pname:pNext chain
|
||||||
chain.
|
of its pname:pSurfaceCapabilities parameter.
|
||||||
|
|
||||||
include::../../validity/protos/vkGetPhysicalDeviceSurfaceCapabilities2EXT.txt[]
|
include::../../validity/protos/vkGetPhysicalDeviceSurfaceCapabilities2EXT.txt[]
|
||||||
--
|
--
|
||||||
|
|
|
@ -3,8 +3,8 @@
|
||||||
|
|
||||||
To query features additionally supported by the +VK_KHR_16bit_storage+
|
To query features additionally supported by the +VK_KHR_16bit_storage+
|
||||||
extension, call flink:vkGetPhysicalDeviceFeatures2KHR with a
|
extension, call flink:vkGetPhysicalDeviceFeatures2KHR with a
|
||||||
sname:VkPhysicalDevice16BitStorageFeaturesKHR structure in the pname:pNext
|
sname:VkPhysicalDevice16BitStorageFeaturesKHR structure included in the
|
||||||
chain.
|
pname:pNext chain of its pname:pFeatures parameter.
|
||||||
The sname:VkPhysicalDevice16BitStorageFeaturesKHR structure can: also be in
|
The sname:VkPhysicalDevice16BitStorageFeaturesKHR structure can: also be in
|
||||||
the pname:pNext chain of a slink:VkDeviceCreateInfo structure, in which case
|
the pname:pNext chain of a slink:VkDeviceCreateInfo structure, in which case
|
||||||
it controls which additional features are enabled in the device.
|
it controls which additional features are enabled in the device.
|
||||||
|
|
|
@ -335,7 +335,7 @@ ifdef::VK_KHX_device_group[]
|
||||||
[open,refpage='VkDeviceGroupSwapchainCreateInfoKHX',desc='Structure specifying parameters of a newly created swapchain object',type='structs']
|
[open,refpage='VkDeviceGroupSwapchainCreateInfoKHX',desc='Structure specifying parameters of a newly created swapchain object',type='structs']
|
||||||
--
|
--
|
||||||
|
|
||||||
If the pname:pNext list of slink:VkSwapchainCreateInfoKHR includes a
|
If the pname:pNext chain of slink:VkSwapchainCreateInfoKHR includes a
|
||||||
sname:VkDeviceGroupSwapchainCreateInfoKHX structure, then that structure
|
sname:VkDeviceGroupSwapchainCreateInfoKHX structure, then that structure
|
||||||
includes a set of device group present modes that the swapchain can: be used
|
includes a set of device group present modes that the swapchain can: be used
|
||||||
with.
|
with.
|
||||||
|
@ -999,7 +999,7 @@ ifdef::VK_KHX_device_group[]
|
||||||
[open,refpage='VkDeviceGroupPresentInfoKHX',desc='Mode and mask controlling which physical devices\' images are presented',type='structs']
|
[open,refpage='VkDeviceGroupPresentInfoKHX',desc='Mode and mask controlling which physical devices\' images are presented',type='structs']
|
||||||
--
|
--
|
||||||
|
|
||||||
If the pname:pNext list of slink:VkPresentInfoKHR includes a
|
If the pname:pNext chain of slink:VkPresentInfoKHR includes a
|
||||||
sname:VkDeviceGroupPresentInfoKHX structure, then that structure includes an
|
sname:VkDeviceGroupPresentInfoKHX structure, then that structure includes an
|
||||||
array of device masks and a device group present mode.
|
array of device masks and a device group present mode.
|
||||||
|
|
||||||
|
|
|
@ -167,7 +167,7 @@ void cmdProcessSequence(cmd, objectTable, indirectCommandsLayout, pIndirectComma
|
||||||
break;
|
break;
|
||||||
|
|
||||||
VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX:
|
VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX:
|
||||||
size_t stride = sizeof(uint32_t) + sizeof(uint32_t) * indirectCommandsLayout.pTokens[c].dynamicCount;
|
size_t stride = sizeof(uint32_t) + indirectCommandsLayout.pTokens[c].dynamicCount;
|
||||||
uint32_t* data = input.buffer.pointer( input.offset + stride * i );
|
uint32_t* data = input.buffer.pointer( input.offset + stride * i );
|
||||||
uint32_t object = data[0];
|
uint32_t object = data[0];
|
||||||
|
|
||||||
|
|
|
@ -1084,7 +1084,7 @@ ifdef::VK_KHX_device_group[]
|
||||||
[open,refpage='VkDeviceGroupSubmitInfoKHX',desc='Structure indicating which physical devices execute semaphore operations and command buffers',type='structs']
|
[open,refpage='VkDeviceGroupSubmitInfoKHX',desc='Structure indicating which physical devices execute semaphore operations and command buffers',type='structs']
|
||||||
--
|
--
|
||||||
|
|
||||||
If the pname:pNext list of slink:VkSubmitInfo includes a
|
If the pname:pNext chain of slink:VkSubmitInfo includes a
|
||||||
sname:VkDeviceGroupSubmitInfoKHX structure, then that structure includes
|
sname:VkDeviceGroupSubmitInfoKHX structure, then that structure includes
|
||||||
device indices and masks specifying which physical devices execute semaphore
|
device indices and masks specifying which physical devices execute semaphore
|
||||||
operations and command buffers.
|
operations and command buffers.
|
||||||
|
@ -1314,7 +1314,7 @@ both device masks.
|
||||||
[open,refpage='VkDeviceGroupCommandBufferBeginInfoKHX',desc='Set the initial device mask for a command buffer',type='structs']
|
[open,refpage='VkDeviceGroupCommandBufferBeginInfoKHX',desc='Set the initial device mask for a command buffer',type='structs']
|
||||||
--
|
--
|
||||||
|
|
||||||
If the pname:pNext list of slink:VkCommandBufferBeginInfo includes a
|
If the pname:pNext chain of slink:VkCommandBufferBeginInfo includes a
|
||||||
sname:VkDeviceGroupCommandBufferBeginInfoKHX structure, then that structure
|
sname:VkDeviceGroupCommandBufferBeginInfoKHX structure, then that structure
|
||||||
includes an initial device mask for the command buffer.
|
includes an initial device mask for the command buffer.
|
||||||
|
|
||||||
|
|
|
@ -771,10 +771,10 @@ structure describe the following features:
|
||||||
+VariablePointers+ capability.
|
+VariablePointers+ capability.
|
||||||
|
|
||||||
If the sname:VkPhysicalDeviceVariablePointerFeaturesKHR structure is
|
If the sname:VkPhysicalDeviceVariablePointerFeaturesKHR structure is
|
||||||
included in the pname:pNext chain of flink:vkGetPhysicalDeviceFeatures2KHR,
|
included in the pname:pNext chain of slink:VkPhysicalDeviceFeatures2KHR, it
|
||||||
it is filled with values indicating whether each feature is supported.
|
is filled with values indicating whether each feature is supported.
|
||||||
sname:VkPhysicalDeviceVariablePointerFeaturesKHR can: also be used in the
|
sname:VkPhysicalDeviceVariablePointerFeaturesKHR can: also be used in the
|
||||||
pname:pNext chain of flink:vkCreateDevice to enable the features.
|
pname:pNext chain of slink:VkDeviceCreateInfo to enable the features.
|
||||||
|
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
|
@ -818,10 +818,10 @@ describe the following features:
|
||||||
shaders.
|
shaders.
|
||||||
|
|
||||||
If the sname:VkPhysicalDeviceMultiviewFeaturesKHX structure is included in
|
If the sname:VkPhysicalDeviceMultiviewFeaturesKHX structure is included in
|
||||||
the pname:pNext chain of flink:vkGetPhysicalDeviceFeatures2KHR, it is filled
|
the pname:pNext chain of slink:VkPhysicalDeviceFeatures2KHR, it is filled
|
||||||
with values indicating whether each feature is supported.
|
with values indicating whether each feature is supported.
|
||||||
sname:VkPhysicalDeviceMultiviewFeaturesKHX can: also be used in the
|
sname:VkPhysicalDeviceMultiviewFeaturesKHX can: also be used in the
|
||||||
pname:pNext chain of flink:vkCreateDevice to enable features.
|
pname:pNext chain of slink:VkDeviceCreateInfo to enable the features.
|
||||||
|
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
|
@ -869,10 +869,10 @@ structure describe the following features:
|
||||||
the same sample.
|
the same sample.
|
||||||
|
|
||||||
If the sname:VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT structure is
|
If the sname:VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT structure is
|
||||||
included in the pname:pNext chain of flink:vkGetPhysicalDeviceFeatures2KHR,
|
included in the pname:pNext chain of slink:VkPhysicalDeviceFeatures2KHR, it
|
||||||
it is filled with values indicating whether each feature is supported.
|
is filled with values indicating whether each feature is supported.
|
||||||
sname:VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT can: also be used in
|
sname:VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT can: also be used in
|
||||||
the pname:pNext chain of flink:vkCreateDevice to enable features.
|
pname:pNext chain of slink:VkDeviceCreateInfo to enable the features.
|
||||||
|
|
||||||
include::../validity/structs/VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT.txt[]
|
include::../validity/structs/VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT.txt[]
|
||||||
--
|
--
|
||||||
|
@ -1666,7 +1666,7 @@ describe the following implementation-dependent limits:
|
||||||
include::../validity/structs/VkPhysicalDeviceMultiviewPropertiesKHX.txt[]
|
include::../validity/structs/VkPhysicalDeviceMultiviewPropertiesKHX.txt[]
|
||||||
|
|
||||||
If the sname:VkPhysicalDeviceMultiviewPropertiesKHX structure is included in
|
If the sname:VkPhysicalDeviceMultiviewPropertiesKHX structure is included in
|
||||||
the pname:pNext chain of flink:VkPhysicalDeviceProperties2KHR, it is filled
|
the pname:pNext chain of slink:VkPhysicalDeviceProperties2KHR, it is filled
|
||||||
with the implementation-dependent limits.
|
with the implementation-dependent limits.
|
||||||
|
|
||||||
--
|
--
|
||||||
|
@ -1692,7 +1692,7 @@ structure describe the following implementation-dependent limits:
|
||||||
include::../validity/structs/VkPhysicalDeviceDiscardRectanglePropertiesEXT.txt[]
|
include::../validity/structs/VkPhysicalDeviceDiscardRectanglePropertiesEXT.txt[]
|
||||||
|
|
||||||
If the sname:VkPhysicalDeviceDiscardRectanglePropertiesEXT structure is
|
If the sname:VkPhysicalDeviceDiscardRectanglePropertiesEXT structure is
|
||||||
included in the pname:pNext chain of flink:VkPhysicalDeviceProperties2KHR,
|
included in the pname:pNext chain of slink:VkPhysicalDeviceProperties2KHR,
|
||||||
it is filled with the implementation-dependent limits.
|
it is filled with the implementation-dependent limits.
|
||||||
|
|
||||||
--
|
--
|
||||||
|
@ -1722,7 +1722,7 @@ include::../validity/structs/VkPhysicalDeviceMultiviewPerViewAttributesPropertie
|
||||||
|
|
||||||
If the sname:VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
|
If the sname:VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
|
||||||
structure is included in the pname:pNext chain of
|
structure is included in the pname:pNext chain of
|
||||||
flink:VkPhysicalDeviceProperties2KHR, it is filled with the
|
slink:VkPhysicalDeviceProperties2KHR, it is filled with the
|
||||||
implementation-dependent limits.
|
implementation-dependent limits.
|
||||||
|
|
||||||
--
|
--
|
||||||
|
@ -1776,7 +1776,7 @@ include::../validity/structs/VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
|
||||||
|
|
||||||
If the sname:VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT structure
|
If the sname:VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT structure
|
||||||
is included in the pname:pNext chain of
|
is included in the pname:pNext chain of
|
||||||
flink:VkPhysicalDeviceProperties2KHR, it is filled with the
|
slink:VkPhysicalDeviceProperties2KHR, it is filled with the
|
||||||
implementation-dependent limits.
|
implementation-dependent limits.
|
||||||
--
|
--
|
||||||
|
|
||||||
|
@ -1803,7 +1803,7 @@ structure describe the following implementation-dependent limits:
|
||||||
the image when doing min/max filtering.
|
the image when doing min/max filtering.
|
||||||
|
|
||||||
If the sname:VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT structure is
|
If the sname:VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT structure is
|
||||||
included in the pname:pNext chain of flink:VkPhysicalDeviceProperties2KHR,
|
included in the pname:pNext chain of slink:VkPhysicalDeviceProperties2KHR,
|
||||||
it is filled with the implementation-dependent limits.
|
it is filled with the implementation-dependent limits.
|
||||||
|
|
||||||
If pname:filterMinmaxSingleComponentFormats is ename:VK_TRUE, the following
|
If pname:filterMinmaxSingleComponentFormats is ename:VK_TRUE, the following
|
||||||
|
@ -4693,14 +4693,16 @@ include::../api/enums/VkExternalSemaphoreHandleTypeFlagBitsKHR.txt[]
|
||||||
referring to a Direct3D 12 fence.
|
referring to a Direct3D 12 fence.
|
||||||
It owns a reference to the underlying synchronization primitive
|
It owns a reference to the underlying synchronization primitive
|
||||||
associated with the Direct3D fence.
|
associated with the Direct3D fence.
|
||||||
* ename:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FENCE_FD_BIT_KHR specifies a
|
* ename:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR specifies a
|
||||||
POSIX file descriptor handle to a Linux or Android Fence object.
|
POSIX file descriptor handle to a Linux Sync File or Android Fence
|
||||||
It can be used with any native API accepting a valid fence object file
|
object.
|
||||||
descriptor as input.
|
It can be used with any native API accepting a valid sync file or fence
|
||||||
|
as input.
|
||||||
It owns a reference to the underlying synchronization primitive
|
It owns a reference to the underlying synchronization primitive
|
||||||
associated with the file descriptor.
|
associated with the file descriptor.
|
||||||
Implementations which support importing this handle type must: accept
|
Implementations which support importing this handle type must: accept
|
||||||
any type of fence FD supported by the native system they are running on.
|
any type of sync or fence FD supported by the native system they are
|
||||||
|
running on.
|
||||||
|
|
||||||
[NOTE]
|
[NOTE]
|
||||||
.Note
|
.Note
|
||||||
|
|
|
@ -380,8 +380,12 @@ endif::VK_KHR_16bit_storage[]
|
||||||
Composites of these types are also permitted.
|
Composites of these types are also permitted.
|
||||||
If the color attachment has a signed or unsigned normalized fixed-point
|
If the color attachment has a signed or unsigned normalized fixed-point
|
||||||
format, color values are assumed to be floating-point and are converted to
|
format, color values are assumed to be floating-point and are converted to
|
||||||
fixed-point as described in <<fundamentals-fpfixedfpconv>>; otherwise no
|
fixed-point as described in <<fundamentals-fpfixedfpconv>>; If the color
|
||||||
type conversion is applied.
|
attachment has an integer format, color values are assumed to be integers
|
||||||
|
and converted to the bit-depth of the target.
|
||||||
|
Any value that cannot be represented in the attachment's format is
|
||||||
|
undefined.
|
||||||
|
For any other attachment format no conversion is performed.
|
||||||
If the type of the values written by the fragment shader do not match the
|
If the type of the values written by the fragment shader do not match the
|
||||||
format of the corresponding color attachment, the result is undefined for
|
format of the corresponding color attachment, the result is undefined for
|
||||||
those components.
|
those components.
|
||||||
|
@ -591,10 +595,13 @@ Variables identified with a storage class of code:UniformConstant and a
|
||||||
decoration of code:InputAttachmentIndex must: be declared as described in
|
decoration of code:InputAttachmentIndex must: be declared as described in
|
||||||
<<interfaces-inputattachment,Fragment Input Attachment Interface>>.
|
<<interfaces-inputattachment,Fragment Input Attachment Interface>>.
|
||||||
|
|
||||||
Each shader variable declaration must: refer to the same type of resource as
|
Each shader variable in the descriptor set interface must: be of a type that
|
||||||
is indicated by the pname:descriptorType.
|
corresponds to the pname:descriptorType in the descriptor set layout binding
|
||||||
|
that the variable is assigned to, as described in
|
||||||
|
<<interfaces-resources-setandbinding, DescriptorSet and Binding
|
||||||
|
Assignment>>.
|
||||||
See <<interfaces-resources-correspondence,Shader Resource and Descriptor
|
See <<interfaces-resources-correspondence,Shader Resource and Descriptor
|
||||||
Type Correspondence>> for the relationship between shader declarations and
|
Type Correspondence>> for the relationship between shader types and
|
||||||
descriptor types.
|
descriptor types.
|
||||||
|
|
||||||
[[interfaces-resources-correspondence]]
|
[[interfaces-resources-correspondence]]
|
||||||
|
@ -602,15 +609,17 @@ descriptor types.
|
||||||
[width="90%",cols="<1,<2",options="header"]
|
[width="90%",cols="<1,<2",options="header"]
|
||||||
|====
|
|====
|
||||||
| Resource type | Descriptor Type
|
| Resource type | Descriptor Type
|
||||||
| sampler | ename:VK_DESCRIPTOR_TYPE_SAMPLER
|
| sampler | ename:VK_DESCRIPTOR_TYPE_SAMPLER or
|
||||||
| sampled image | ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
|
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
|
||||||
|
| sampled image | ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE or
|
||||||
|
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
|
||||||
| storage image | ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
|
| storage image | ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
|
||||||
| combined image sampler | ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
|
| combined image sampler | ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
|
||||||
| uniform texel buffer | ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
|
| uniform texel buffer | ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
|
||||||
| storage texel buffer | ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
|
| storage texel buffer | ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
|
||||||
| uniform buffer | ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER +
|
| uniform buffer | ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or
|
||||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
|
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
|
||||||
| storage buffer | ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER +
|
| storage buffer | ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or
|
||||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
|
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
|
||||||
| input attachment | ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
|
| input attachment | ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
|
||||||
|====
|
|====
|
||||||
|
@ -655,21 +664,20 @@ endif::VK_KHR_storage_buffer_storage_class[]
|
||||||
[[interfaces-resources-setandbinding]]
|
[[interfaces-resources-setandbinding]]
|
||||||
=== DescriptorSet and Binding Assignment
|
=== DescriptorSet and Binding Assignment
|
||||||
|
|
||||||
A variable identified with a code:DescriptorSet decoration of [eq]#s# and a
|
A variable decorated with a code:DescriptorSet decoration of [eq]#s# and a
|
||||||
code:Binding decoration of [eq]#b# indicates that this variable is
|
code:Binding decoration of [eq]#b# indicates that this variable is
|
||||||
associated with the slink:VkDescriptorSetLayoutBinding that has a
|
associated with the slink:VkDescriptorSetLayoutBinding that has a
|
||||||
pname:binding equal to [eq]#b# in pname:pSetLayouts[_s_] that was specified
|
pname:binding equal to [eq]#b# in pname:pSetLayouts[_s_] that was specified
|
||||||
in slink:VkPipelineLayoutCreateInfo.
|
in slink:VkPipelineLayoutCreateInfo.
|
||||||
|
|
||||||
The range of descriptor sets is between zero and
|
code:DescriptorSet decoration values must: be between zero and
|
||||||
pname:maxBoundDescriptorSets minus one.
|
pname:maxBoundDescriptorSets minus one, inclusive.
|
||||||
If a descriptor set value is statically used by an entry point there must:
|
code:Binding decoration values can: be any 32-bit unsigned integer value, as
|
||||||
be an associated pname:pSetLayout in the corresponding pipeline layout as
|
described in <<descriptorsets-setlayout>>.
|
||||||
described in <<descriptorsets-pipelinelayout-consistency,Pipeline Layouts
|
Each descriptor set has its own binding name space.
|
||||||
consistency>>.
|
|
||||||
|
|
||||||
If the code:Binding decoration is used with an array, the entire array is
|
If the code:Binding decoration is used with an array, the entire array is
|
||||||
identified with that binding value.
|
assigned that binding value.
|
||||||
The size of the array declaration must: be no larger than the
|
The size of the array declaration must: be no larger than the
|
||||||
pname:descriptorCount of that sname:VkDescriptorSetLayoutBinding.
|
pname:descriptorCount of that sname:VkDescriptorSetLayoutBinding.
|
||||||
The index of each element of the array is referred to as the _arrayElement_.
|
The index of each element of the array is referred to as the _arrayElement_.
|
||||||
|
@ -677,10 +685,6 @@ For the purposes of interface matching and descriptor set
|
||||||
<<descriptorsets-updates,operations>>, if a resource variable is not an
|
<<descriptorsets-updates,operations>>, if a resource variable is not an
|
||||||
array, it is treated as if it has an arrayElement of zero.
|
array, it is treated as if it has an arrayElement of zero.
|
||||||
|
|
||||||
The binding can: be any 32-bit unsigned integer value, as described in
|
|
||||||
<<descriptorsets-setlayout>>.
|
|
||||||
Each descriptor set has its own binding name space.
|
|
||||||
|
|
||||||
There is a limit on the number of resources of each type that can: be
|
There is a limit on the number of resources of each type that can: be
|
||||||
accessed by a pipeline stage as shown in
|
accessed by a pipeline stage as shown in
|
||||||
<<interfaces-resources-limits,Shader Resource Limits>>.
|
<<interfaces-resources-limits,Shader Resource Limits>>.
|
||||||
|
@ -691,18 +695,21 @@ The "`Resource Types`" column lists which resource types are counted against
|
||||||
the limit.
|
the limit.
|
||||||
Some resource types count against multiple limits.
|
Some resource types count against multiple limits.
|
||||||
|
|
||||||
If multiple entry points in the same pipeline refer to the same set and
|
|
||||||
binding, all variable definitions with that code:DescriptorSet and
|
|
||||||
code:Binding must: have the same basic type.
|
|
||||||
|
|
||||||
Not all descriptor sets and bindings specified in a pipeline layout need to
|
Not all descriptor sets and bindings specified in a pipeline layout need to
|
||||||
be used in a particular shader stage or pipeline, but if a
|
be used in a particular shader stage or pipeline.
|
||||||
code:DescriptorSet and code:Binding decoration is specified for a variable
|
If a variable assigned to a given code:DescriptorSet and code:Binding pair
|
||||||
that is statically used in that shader there must: be a pipeline layout
|
is statically used in the entry point being compiled, the pipeline layout
|
||||||
entry identified with that descriptor set and pname:binding and the
|
must: contain a descriptor set layout binding in that descriptor set layout
|
||||||
corresponding pname:stageFlags must: specify the appropriate
|
and for that binding number, and that binding's pname:stageFlags must:
|
||||||
elink:VkShaderStageFlagBits for that stage.
|
include the appropriate elink:VkShaderStageFlagBits for that stage.
|
||||||
|
The descriptor set layout binding must: be of a corresponding descriptor
|
||||||
|
type, as defined in <<interfaces-resources-correspondence,Shader Resource
|
||||||
|
and Descriptor Type Correspondence>>.
|
||||||
|
|
||||||
|
It is valid for multiple shader variables to be assigned the same descriptor
|
||||||
|
set and binding values, as long as all those that are statically used by the
|
||||||
|
entry point being compiled are compatible with the descriptor type in the
|
||||||
|
descriptor set layout binding.
|
||||||
|
|
||||||
[[interfaces-resources-limits]]
|
[[interfaces-resources-limits]]
|
||||||
.Shader Resource Limits
|
.Shader Resource Limits
|
||||||
|
@ -1240,19 +1247,19 @@ Decorating a variable with the code:Layer built-in decoration will make that
|
||||||
variable contain the select layer of a multi-layer framebuffer attachment.
|
variable contain the select layer of a multi-layer framebuffer attachment.
|
||||||
+
|
+
|
||||||
In a
|
In a
|
||||||
ifdef::VK_NV_viewport_array2[]
|
ifdef::VK_NV_viewport_array2,VK_EXT_shader_viewport_index_layer[]
|
||||||
vertex, tessellation evaluation, or
|
vertex, tessellation evaluation, or
|
||||||
endif::VK_NV_viewport_array2[]
|
endif::VK_NV_viewport_array2,VK_EXT_shader_viewport_index_layer[]
|
||||||
geometry shader, any variable decorated with code:Layer can be written with
|
geometry shader, any variable decorated with code:Layer can be written with
|
||||||
the framebuffer layer index to which the primitive produced by that shader
|
the framebuffer layer index to which the primitive produced by that shader
|
||||||
will be directed.
|
will be directed.
|
||||||
ifdef::VK_NV_viewport_array2[]
|
ifdef::VK_NV_viewport_array2,VK_EXT_shader_viewport_index_layer[]
|
||||||
+
|
+
|
||||||
The last active _vertex processing stage_ (in pipeline order) controls the
|
The last active _vertex processing stage_ (in pipeline order) controls the
|
||||||
code:Layer that is used.
|
code:Layer that is used.
|
||||||
Outputs in previous shader stages are not used, even if the last stage fails
|
Outputs in previous shader stages are not used, even if the last stage fails
|
||||||
to write the code:Layer.
|
to write the code:Layer.
|
||||||
endif::VK_NV_viewport_array2[]
|
endif::VK_NV_viewport_array2,VK_EXT_shader_viewport_index_layer[]
|
||||||
+
|
+
|
||||||
If the last active vertex processing stage shader entry point's interface
|
If the last active vertex processing stage shader entry point's interface
|
||||||
does not include a variable decorated with code:Layer, then the first layer
|
does not include a variable decorated with code:Layer, then the first layer
|
||||||
|
@ -1262,15 +1269,15 @@ variable decorated with code:Layer, it must: write the same value to
|
||||||
code:Layer for all output vertices of a given primitive.
|
code:Layer for all output vertices of a given primitive.
|
||||||
+
|
+
|
||||||
The code:Layer decoration must: be used only within
|
The code:Layer decoration must: be used only within
|
||||||
ifdef::VK_NV_viewport_array2[]
|
ifdef::VK_NV_viewport_array2,VK_EXT_shader_viewport_index_layer[]
|
||||||
vertex, tessellation evaluation,
|
vertex, tessellation evaluation,
|
||||||
endif::VK_NV_viewport_array2[]
|
endif::VK_NV_viewport_array2,VK_EXT_shader_viewport_index_layer[]
|
||||||
geometry, and fragment shaders.
|
geometry, and fragment shaders.
|
||||||
+
|
+
|
||||||
In a
|
In a
|
||||||
ifdef::VK_NV_viewport_array2[]
|
ifdef::VK_NV_viewport_array2,VK_EXT_shader_viewport_index_layer[]
|
||||||
vertex, tessellation evaluation, or
|
vertex, tessellation evaluation, or
|
||||||
endif::VK_NV_viewport_array2[]
|
endif::VK_NV_viewport_array2,VK_EXT_shader_viewport_index_layer[]
|
||||||
geometry shader, any variable decorated with code:Layer must: be declared
|
geometry shader, any variable decorated with code:Layer must: be declared
|
||||||
using the code:Output storage class.
|
using the code:Output storage class.
|
||||||
ifdef::VK_NV_viewport_array2[]
|
ifdef::VK_NV_viewport_array2[]
|
||||||
|
@ -1888,22 +1895,22 @@ Decorating a variable with the code:ViewportIndex built-in decoration will
|
||||||
make that variable contain the index of the viewport.
|
make that variable contain the index of the viewport.
|
||||||
+
|
+
|
||||||
In a
|
In a
|
||||||
ifdef::VK_NV_viewport_array2[]
|
ifdef::VK_NV_viewport_array2,VK_EXT_shader_viewport_index_layer[]
|
||||||
vertex, tessellation evaluation, or
|
vertex, tessellation evaluation, or
|
||||||
endif::VK_NV_viewport_array2[]
|
endif::VK_NV_viewport_array2,VK_EXT_shader_viewport_index_layer[]
|
||||||
geometry shader, the variable decorated with code:ViewportIndex can be
|
geometry shader, the variable decorated with code:ViewportIndex can be
|
||||||
written to with the viewport index to which the primitive produced by that
|
written to with the viewport index to which the primitive produced by that
|
||||||
shader will be directed.
|
shader will be directed.
|
||||||
+
|
+
|
||||||
The selected viewport index is used to select the viewport transform and
|
The selected viewport index is used to select the viewport transform and
|
||||||
scissor rectangle.
|
scissor rectangle.
|
||||||
ifdef::VK_NV_viewport_array2[]
|
ifdef::VK_NV_viewport_array2,VK_EXT_shader_viewport_index_layer[]
|
||||||
+
|
+
|
||||||
The last active _vertex processing stage_ (in pipeline order) controls the
|
The last active _vertex processing stage_ (in pipeline order) controls the
|
||||||
code:ViewportIndex that is used.
|
code:ViewportIndex that is used.
|
||||||
Outputs in previous shader stages are not used, even if the last stage fails
|
Outputs in previous shader stages are not used, even if the last stage fails
|
||||||
to write the code:ViewportIndex.
|
to write the code:ViewportIndex.
|
||||||
endif::VK_NV_viewport_array2[]
|
endif::VK_NV_viewport_array2,VK_EXT_shader_viewport_index_layer[]
|
||||||
+
|
+
|
||||||
If the last active vertex processing stage shader entry point's interface
|
If the last active vertex processing stage shader entry point's interface
|
||||||
does not include a variable decorated with code:ViewportIndex, then the
|
does not include a variable decorated with code:ViewportIndex, then the
|
||||||
|
@ -1913,15 +1920,15 @@ variable decorated with code:ViewportIndex, it must: write the same value to
|
||||||
code:ViewportIndex for all output vertices of a given primitive.
|
code:ViewportIndex for all output vertices of a given primitive.
|
||||||
+
|
+
|
||||||
The code:ViewportIndex decoration must: be used only within
|
The code:ViewportIndex decoration must: be used only within
|
||||||
ifdef::VK_NV_viewport_array2[]
|
ifdef::VK_NV_viewport_array2,VK_EXT_shader_viewport_index_layer[]
|
||||||
vertex, tessellation evaluation,
|
vertex, tessellation evaluation,
|
||||||
endif::VK_NV_viewport_array2[]
|
endif::VK_NV_viewport_array2,VK_EXT_shader_viewport_index_layer[]
|
||||||
geometry, and fragment shaders.
|
geometry, and fragment shaders.
|
||||||
+
|
+
|
||||||
In a
|
In a
|
||||||
ifdef::VK_NV_viewport_array2[]
|
ifdef::VK_NV_viewport_array2,VK_EXT_shader_viewport_index_layer[]
|
||||||
vertex, tessellation evaluation, or
|
vertex, tessellation evaluation, or
|
||||||
endif::VK_NV_viewport_array2[]
|
endif::VK_NV_viewport_array2,VK_EXT_shader_viewport_index_layer[]
|
||||||
geometry shader, any variable decorated with code:ViewportIndex must: be
|
geometry shader, any variable decorated with code:ViewportIndex must: be
|
||||||
declared using the code:Output storage class.
|
declared using the code:Output storage class.
|
||||||
+
|
+
|
||||||
|
|
|
@ -943,7 +943,7 @@ ifdef::VK_KHR_dedicated_allocation[]
|
||||||
[open,refpage='VkMemoryDedicatedAllocateInfoKHR',desc='Specify a dedicated memory allocation resource',type='structs']
|
[open,refpage='VkMemoryDedicatedAllocateInfoKHR',desc='Specify a dedicated memory allocation resource',type='structs']
|
||||||
--
|
--
|
||||||
|
|
||||||
If the pname:pNext list includes a sname:VkMemoryDedicatedAllocateInfoKHR
|
If the pname:pNext chain includes a sname:VkMemoryDedicatedAllocateInfoKHR
|
||||||
structure, then that structure includes a handle of the sole buffer or image
|
structure, then that structure includes a handle of the sole buffer or image
|
||||||
resource that the memory can: be bound to.
|
resource that the memory can: be bound to.
|
||||||
|
|
||||||
|
@ -1005,7 +1005,7 @@ ifdef::VK_NV_dedicated_allocation[]
|
||||||
[open,refpage='VkDedicatedAllocationMemoryAllocateInfoNV',desc='Specify a dedicated memory allocation resource',type='structs']
|
[open,refpage='VkDedicatedAllocationMemoryAllocateInfoNV',desc='Specify a dedicated memory allocation resource',type='structs']
|
||||||
--
|
--
|
||||||
|
|
||||||
If the pname:pNext list includes a
|
If the pname:pNext chain includes a
|
||||||
sname:VkDedicatedAllocationMemoryAllocateInfoNV structure, then that
|
sname:VkDedicatedAllocationMemoryAllocateInfoNV structure, then that
|
||||||
structure includes a handle of the sole buffer or image resource that the
|
structure includes a handle of the sole buffer or image resource that the
|
||||||
memory can: be bound to.
|
memory can: be bound to.
|
||||||
|
@ -1502,7 +1502,7 @@ ifdef::VK_KHX_device_group[]
|
||||||
[open,refpage='VkMemoryAllocateFlagsInfoKHX',desc='Structure controlling how many instances of memory will be allocated',type='structs']
|
[open,refpage='VkMemoryAllocateFlagsInfoKHX',desc='Structure controlling how many instances of memory will be allocated',type='structs']
|
||||||
--
|
--
|
||||||
|
|
||||||
If the pname:pNext list of slink:VkMemoryAllocateInfo includes a
|
If the pname:pNext chain of slink:VkMemoryAllocateInfo includes a
|
||||||
sname:VkMemoryAllocateFlagsInfoKHX structure, then that structure includes
|
sname:VkMemoryAllocateFlagsInfoKHX structure, then that structure includes
|
||||||
flags and a device mask controlling how many instances of the memory will be
|
flags and a device mask controlling how many instances of the memory will be
|
||||||
allocated.
|
allocated.
|
||||||
|
|
|
@ -85,12 +85,17 @@ endif::VK_AMD_rasterization_order[]
|
||||||
* [[VUID-VkPipelineRasterizationStateCreateInfo-depthClampEnable-00782]]
|
* [[VUID-VkPipelineRasterizationStateCreateInfo-depthClampEnable-00782]]
|
||||||
If the <<features-features-depthClamp,depth clamping>> feature is not
|
If the <<features-features-depthClamp,depth clamping>> feature is not
|
||||||
enabled, pname:depthClampEnable must: be ename:VK_FALSE
|
enabled, pname:depthClampEnable must: be ename:VK_FALSE
|
||||||
|
ifndef::VK_NV_fill_rectangle[]
|
||||||
* [[VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01413]]
|
* [[VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01413]]
|
||||||
If the <<features-features-fillModeNonSolid,non-solid fill modes>>
|
If the <<features-features-fillModeNonSolid,non-solid fill modes>>
|
||||||
feature is not enabled, pname:polygonMode must: be
|
feature is not enabled, pname:polygonMode must: be
|
||||||
ename:VK_POLYGON_MODE_FILL
|
ename:VK_POLYGON_MODE_FILL
|
||||||
|
endif::VK_NV_fill_rectangle[]
|
||||||
ifdef::VK_NV_fill_rectangle[]
|
ifdef::VK_NV_fill_rectangle[]
|
||||||
or ename:VK_POLYGON_MODE_FILL_RECTANGLE_NV
|
* [[VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01507]]
|
||||||
|
If the <<features-features-fillModeNonSolid,non-solid fill modes>>
|
||||||
|
feature is not enabled, pname:polygonMode must: be
|
||||||
|
ename:VK_POLYGON_MODE_FILL or ename:VK_POLYGON_MODE_FILL_RECTANGLE_NV
|
||||||
* [[VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01414]]
|
* [[VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01414]]
|
||||||
If the +VK_NV_fill_rectangle+ extension is not enabled,
|
If the +VK_NV_fill_rectangle+ extension is not enabled,
|
||||||
pname:polygonMode must: not be ename:VK_POLYGON_MODE_FILL_RECTANGLE_NV
|
pname:polygonMode must: not be ename:VK_POLYGON_MODE_FILL_RECTANGLE_NV
|
||||||
|
|
|
@ -214,7 +214,7 @@ ifdef::VK_KHX_multiview[]
|
||||||
[open,refpage='VkRenderPassMultiviewCreateInfoKHX',desc='Structure containing multiview info for all subpasses',type='structs']
|
[open,refpage='VkRenderPassMultiviewCreateInfoKHX',desc='Structure containing multiview info for all subpasses',type='structs']
|
||||||
--
|
--
|
||||||
|
|
||||||
If the sname:VkRenderPassCreateInfo::pname:pNext list includes a
|
If the sname:VkRenderPassCreateInfo::pname:pNext chain includes a
|
||||||
sname:VkRenderPassMultiviewCreateInfoKHX structure, then that structure
|
sname:VkRenderPassMultiviewCreateInfoKHX structure, then that structure
|
||||||
includes an array of view masks, view offsets, and correlation masks for the
|
includes an array of view masks, view offsets, and correlation masks for the
|
||||||
render pass.
|
render pass.
|
||||||
|
@ -1599,7 +1599,7 @@ ifdef::VK_KHX_device_group[]
|
||||||
[open,refpage='VkDeviceGroupRenderPassBeginInfoKHX',desc='Set the initial device mask and render areas for a render pass instance',type='structs']
|
[open,refpage='VkDeviceGroupRenderPassBeginInfoKHX',desc='Set the initial device mask and render areas for a render pass instance',type='structs']
|
||||||
--
|
--
|
||||||
|
|
||||||
If the pname:pNext list of slink:VkRenderPassBeginInfo includes a
|
If the pname:pNext chain of slink:VkRenderPassBeginInfo includes a
|
||||||
sname:VkDeviceGroupRenderPassBeginInfoKHX structure, then that structure
|
sname:VkDeviceGroupRenderPassBeginInfoKHX structure, then that structure
|
||||||
includes a device mask and set of render areas for the render pass instance.
|
includes a device mask and set of render areas for the render pass instance.
|
||||||
|
|
||||||
|
|
|
@ -231,7 +231,7 @@ ifdef::VK_NV_dedicated_allocation[]
|
||||||
[open,refpage='VkDedicatedAllocationBufferCreateInfoNV',desc='Specify that a buffer is bound to a dedicated memory resource',type='structs']
|
[open,refpage='VkDedicatedAllocationBufferCreateInfoNV',desc='Specify that a buffer is bound to a dedicated memory resource',type='structs']
|
||||||
--
|
--
|
||||||
|
|
||||||
If the pname:pNext list includes a
|
If the pname:pNext chain includes a
|
||||||
sname:VkDedicatedAllocationBufferCreateInfoNV structure, then that structure
|
sname:VkDedicatedAllocationBufferCreateInfoNV structure, then that structure
|
||||||
includes an enable controlling whether the buffer will have a dedicated
|
includes an enable controlling whether the buffer will have a dedicated
|
||||||
memory allocation bound to it.
|
memory allocation bound to it.
|
||||||
|
@ -916,7 +916,7 @@ ifdef::VK_NV_dedicated_allocation[]
|
||||||
[open,refpage='VkDedicatedAllocationImageCreateInfoNV',desc='Specify that an image is bound to a dedicated memory resource',type='structs']
|
[open,refpage='VkDedicatedAllocationImageCreateInfoNV',desc='Specify that an image is bound to a dedicated memory resource',type='structs']
|
||||||
--
|
--
|
||||||
|
|
||||||
If the pname:pNext list includes a
|
If the pname:pNext chain includes a
|
||||||
sname:VkDedicatedAllocationImageCreateInfoNV structure, then that structure
|
sname:VkDedicatedAllocationImageCreateInfoNV structure, then that structure
|
||||||
includes an enable controlling whether the image will have a dedicated
|
includes an enable controlling whether the image will have a dedicated
|
||||||
memory allocation bound to it.
|
memory allocation bound to it.
|
||||||
|
@ -980,7 +980,7 @@ ifdef::VK_NV_external_memory[]
|
||||||
[open,refpage='VkExternalMemoryImageCreateInfoNV',desc='Specify that an image may be backed by external memory',type='structs']
|
[open,refpage='VkExternalMemoryImageCreateInfoNV',desc='Specify that an image may be backed by external memory',type='structs']
|
||||||
--
|
--
|
||||||
|
|
||||||
If the pname:pNext list includes a sname:VkExternalMemoryImageCreateInfoNV
|
If the pname:pNext chain includes a sname:VkExternalMemoryImageCreateInfoNV
|
||||||
structure, then that structure defines a set of external memory handle types
|
structure, then that structure defines a set of external memory handle types
|
||||||
that may: be used as backing store for the image.
|
that may: be used as backing store for the image.
|
||||||
|
|
||||||
|
@ -1004,7 +1004,7 @@ ifdef::VK_KHX_device_group[]
|
||||||
[open,refpage='VkImageSwapchainCreateInfoKHX',desc='Specify that an image will be bound to swapchain memory',type='structs']
|
[open,refpage='VkImageSwapchainCreateInfoKHX',desc='Specify that an image will be bound to swapchain memory',type='structs']
|
||||||
--
|
--
|
||||||
|
|
||||||
If the pname:pNext list of slink:VkImageCreateInfo includes a
|
If the pname:pNext chain of slink:VkImageCreateInfo includes a
|
||||||
sname:VkImageSwapchainCreateInfoKHX structure, then that structure includes
|
sname:VkImageSwapchainCreateInfoKHX structure, then that structure includes
|
||||||
a swapchain handle indicating that the image will be bound to memory from
|
a swapchain handle indicating that the image will be bound to memory from
|
||||||
that swapchain.
|
that swapchain.
|
||||||
|
@ -2385,7 +2385,9 @@ ifdef::VK_KHR_dedicated_allocation[]
|
||||||
|
|
||||||
To determine the dedicated allocation requirements of a buffer or image
|
To determine the dedicated allocation requirements of a buffer or image
|
||||||
resource, add a slink:VkMemoryDedicatedRequirementsKHR structure to the
|
resource, add a slink:VkMemoryDedicatedRequirementsKHR structure to the
|
||||||
pname:pNext chain of fname:vkGetBufferMemoryRequirements2KHR or
|
pname:pNext chain of the slink:VkMemoryRequirements2KHR structure passed as
|
||||||
|
the pname:pMemoryRequirements parameter of
|
||||||
|
fname:vkGetBufferMemoryRequirements2KHR or
|
||||||
fname:vkGetImageMemoryRequirements2KHR.
|
fname:vkGetImageMemoryRequirements2KHR.
|
||||||
|
|
||||||
The sname:VkMemoryDedicatedRequirementsKHR structure is defined as:
|
The sname:VkMemoryDedicatedRequirementsKHR structure is defined as:
|
||||||
|
@ -2402,7 +2404,9 @@ include::../api/structs/VkMemoryDedicatedRequirementsKHR.txt[]
|
||||||
is required for this resource.
|
is required for this resource.
|
||||||
|
|
||||||
If the sname:VkMemoryDedicatedRequirementsKHR structure is included in the
|
If the sname:VkMemoryDedicatedRequirementsKHR structure is included in the
|
||||||
pname:pNext chain of a fname:vkGetBufferMemoryRequirements2KHR call,
|
pname:pNext chain of the slink:VkMemoryRequirements2KHR structure passed as
|
||||||
|
the pname:pMemoryRequirements parameter of a
|
||||||
|
fname:vkGetBufferMemoryRequirements2KHR call,
|
||||||
pname:requiresDedicatedAllocation may: be ename:VK_TRUE under one of the
|
pname:requiresDedicatedAllocation may: be ename:VK_TRUE under one of the
|
||||||
following conditions:
|
following conditions:
|
||||||
|
|
||||||
|
@ -2410,10 +2414,10 @@ ifndef::VK_KHR_external_memory[]
|
||||||
* none
|
* none
|
||||||
endif::VK_KHR_external_memory[]
|
endif::VK_KHR_external_memory[]
|
||||||
ifdef::VK_KHR_external_memory[]
|
ifdef::VK_KHR_external_memory[]
|
||||||
* The pname:pNext chain for the call to fname:vkCreateBuffer used to
|
* The pname:pNext chain of sname:VkBufferCreateInfo for the call to
|
||||||
create the buffer being queried contained an instance of
|
fname:vkCreateBuffer used to create the buffer being queried contained
|
||||||
sname:VkExternalMemoryBufferCreateInfoKHR and any of the handle types
|
an instance of sname:VkExternalMemoryBufferCreateInfoKHR, and any of the
|
||||||
specified in
|
handle types specified in
|
||||||
sname:VkExternalMemoryBufferCreateInfoKHR::pname:handleTypes requires
|
sname:VkExternalMemoryBufferCreateInfoKHR::pname:handleTypes requires
|
||||||
dedicated allocation, as reported by
|
dedicated allocation, as reported by
|
||||||
flink:vkGetPhysicalDeviceExternalBufferPropertiesKHR in
|
flink:vkGetPhysicalDeviceExternalBufferPropertiesKHR in
|
||||||
|
@ -2425,17 +2429,22 @@ endif::VK_KHR_external_memory[]
|
||||||
In all other cases, pname:requiresDedicatedAllocation must: be set to
|
In all other cases, pname:requiresDedicatedAllocation must: be set to
|
||||||
ename:VK_FALSE by the implementation whenever a
|
ename:VK_FALSE by the implementation whenever a
|
||||||
sname:VkMemoryDedicatedRequirementsKHR structure is included in the
|
sname:VkMemoryDedicatedRequirementsKHR structure is included in the
|
||||||
pname:pNext chain of a call to fname:vkGetBufferMemoryRequirements2KHR.
|
pname:pNext chain of the sname:VkMemoryRequirements2KHR structure passed to
|
||||||
|
a call to fname:vkGetBufferMemoryRequirements2KHR.
|
||||||
|
|
||||||
If the sname:VkMemoryDedicatedRequirementsKHR structure is included in the
|
If the sname:VkMemoryDedicatedRequirementsKHR structure is included in the
|
||||||
pname:pNext chain of a fname:vkGetBufferMemoryRequirements2KHR call and
|
pname:pNext chain of the sname:VkMemoryRequirements2KHR structure passed as
|
||||||
|
the pname:pMemoryRequirements parameter of a
|
||||||
|
fname:vkGetBufferMemoryRequirements2KHR call and
|
||||||
ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT was set in
|
ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT was set in
|
||||||
sname:VkBufferCreateInfo::pname:flags when pname:buffer was created then the
|
sname:VkBufferCreateInfo::pname:flags when pname:buffer was created then the
|
||||||
implementation must: set both pname:prefersDedicatedAllocation and
|
implementation must: set both pname:prefersDedicatedAllocation and
|
||||||
pname:requiresDedicatedAllocation to ename:VK_FALSE.
|
pname:requiresDedicatedAllocation to ename:VK_FALSE.
|
||||||
|
|
||||||
If the sname:VkMemoryDedicatedRequirementsKHR structure is included in the
|
If the sname:VkMemoryDedicatedRequirementsKHR structure is included in the
|
||||||
pname:pNext chain of a fname:vkGetImageMemoryRequirements2KHR call,
|
pname:pNext chain of the sname:VkMemoryRequirements2KHR structure passed as
|
||||||
|
the pname:pMemoryRequirements parameter of a
|
||||||
|
fname:vkGetImageMemoryRequirements2KHR call,
|
||||||
pname:requiresDedicatedAllocation may: be ename:VK_TRUE under one of the
|
pname:requiresDedicatedAllocation may: be ename:VK_TRUE under one of the
|
||||||
following conditions:
|
following conditions:
|
||||||
|
|
||||||
|
@ -2443,11 +2452,12 @@ ifndef::VK_KHR_external_memory[]
|
||||||
* none
|
* none
|
||||||
endif::VK_KHR_external_memory[]
|
endif::VK_KHR_external_memory[]
|
||||||
ifdef::VK_KHR_external_memory[]
|
ifdef::VK_KHR_external_memory[]
|
||||||
* The pname:pNext chain for the call to fname:vkCreateImage used to create
|
* The pname:pNext chain of sname:VkImageCreateInfo for the call to
|
||||||
the image being queried contained an instance of
|
fname:vkCreateImage used to create the image being queried contained an
|
||||||
sname:VkExternalMemoryImageCreateInfoKHR and any of the handle types
|
instance of sname:VkExternalMemoryImageCreateInfoKHR, and any of the
|
||||||
specified in sname:VkExternalMemoryImageCreateInfoKHR::pname:handleTypes
|
handle types specified in
|
||||||
require a dedicated allocation, as reported by
|
sname:VkExternalMemoryImageCreateInfoKHR::pname:handleTypes requires
|
||||||
|
dedicated allocation, as reported by
|
||||||
flink:vkGetPhysicalDeviceImageFormatProperties2KHR in
|
flink:vkGetPhysicalDeviceImageFormatProperties2KHR in
|
||||||
sname:VkExternalImageFormatPropertiesKHR::pname:externalMemoryProperties::pname:externalMemoryFeatures,
|
sname:VkExternalImageFormatPropertiesKHR::pname:externalMemoryProperties::pname:externalMemoryFeatures,
|
||||||
the pname:requiresDedicatedAllocation field will be set to
|
the pname:requiresDedicatedAllocation field will be set to
|
||||||
|
@ -2457,10 +2467,13 @@ endif::VK_KHR_external_memory[]
|
||||||
In all other cases, pname:requiresDedicatedAllocation must: be set to
|
In all other cases, pname:requiresDedicatedAllocation must: be set to
|
||||||
ename:VK_FALSE by the implementation whenever a
|
ename:VK_FALSE by the implementation whenever a
|
||||||
sname:VkMemoryDedicatedRequirementsKHR structure is included in the
|
sname:VkMemoryDedicatedRequirementsKHR structure is included in the
|
||||||
pname:pNext chain of a call to fname:vkGetImageMemoryRequirements2KHR.
|
pname:pNext chain of the sname:VkMemoryRequirements2KHR structure passed to
|
||||||
|
a call to fname:vkGetImageMemoryRequirements2KHR.
|
||||||
|
|
||||||
If the sname:VkMemoryDedicatedRequirementsKHR structure is included in the
|
If the sname:VkMemoryDedicatedRequirementsKHR structure is included in the
|
||||||
pname:pNext chain of a fname:vkGetImageMemoryRequirements2KHR call and
|
pname:pNext chain of the sname:VkMemoryRequirements2KHR structure passed as
|
||||||
|
the pname:pMemoryRequirements parameter of a
|
||||||
|
fname:vkGetImageMemoryRequirements2KHR call and
|
||||||
ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT was set in
|
ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT was set in
|
||||||
sname:VkImageCreateInfo::pname:flags when pname:image was created then the
|
sname:VkImageCreateInfo::pname:flags when pname:image was created then the
|
||||||
implementation must: set both pname:prefersDedicatedAllocation and
|
implementation must: set both pname:prefersDedicatedAllocation and
|
||||||
|
@ -2543,7 +2556,15 @@ ifdef::VK_KHR_dedicated_allocation[]
|
||||||
slink:VkMemoryDedicatedRequirementsKHR::requiresDedicatedAllocation for
|
slink:VkMemoryDedicatedRequirementsKHR::requiresDedicatedAllocation for
|
||||||
pname:image), pname:memory must: have been created with
|
pname:image), pname:memory must: have been created with
|
||||||
slink:VkMemoryDedicatedAllocateInfoKHR::pname:buffer equal to
|
slink:VkMemoryDedicatedAllocateInfoKHR::pname:buffer equal to
|
||||||
pname:buffer and pname:memoryOffset must: be zero
|
pname:buffer
|
||||||
|
* [[VUID-vkBindBufferMemory-memory-01508]]
|
||||||
|
If the sname:VkmemoryAllocateInfo provided when pname:memory was
|
||||||
|
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
|
||||||
|
slink:VkMemoryDedicatedAllocateInfo::pname:buffer and pname:memoryOffset
|
||||||
|
must: be zero.
|
||||||
endif::VK_KHR_dedicated_allocation[]
|
endif::VK_KHR_dedicated_allocation[]
|
||||||
ifdef::VK_NV_dedicated_allocation[]
|
ifdef::VK_NV_dedicated_allocation[]
|
||||||
* [[VUID-vkBindBufferMemory-buffer-01038]]
|
* [[VUID-vkBindBufferMemory-buffer-01038]]
|
||||||
|
@ -2701,7 +2722,14 @@ ifdef::VK_KHR_dedicated_allocation[]
|
||||||
slink:VkMemoryDedicatedRequirementsKHR::requiresDedicatedAllocation for
|
slink:VkMemoryDedicatedRequirementsKHR::requiresDedicatedAllocation for
|
||||||
pname:image), pname:memory must: have been created with
|
pname:image), pname:memory must: have been created with
|
||||||
slink:VkMemoryDedicatedAllocateInfoKHR::pname:image equal to pname:image
|
slink:VkMemoryDedicatedAllocateInfoKHR::pname:image equal to pname:image
|
||||||
and pname:memoryOffset must: be zero
|
* [[VUID-vkBindImageMemory-memory-01509]]
|
||||||
|
If the sname:VkmemoryAllocateInfo provided when pname:memory was
|
||||||
|
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
|
||||||
|
slink:VkMemoryDedicatedAllocateInfo::pname:image and pname:memoryOffset
|
||||||
|
must: be zero.
|
||||||
endif::VK_KHR_dedicated_allocation[]
|
endif::VK_KHR_dedicated_allocation[]
|
||||||
ifdef::VK_NV_dedicated_allocation[]
|
ifdef::VK_NV_dedicated_allocation[]
|
||||||
* [[VUID-vkBindImageMemory-image-01050]]
|
* [[VUID-vkBindImageMemory-image-01050]]
|
||||||
|
@ -2863,7 +2891,7 @@ include::../validity/structs/VkBindImageMemoryInfoKHX.txt[]
|
||||||
[open,refpage='VkBindImageMemorySwapchainInfoKHX',desc='Structure specifying swapchain image memory to bind to',type='structs']
|
[open,refpage='VkBindImageMemorySwapchainInfoKHX',desc='Structure specifying swapchain image memory to bind to',type='structs']
|
||||||
--
|
--
|
||||||
|
|
||||||
If the pname:pNext list of slink:VkBindImageMemoryInfoKHX includes a
|
If the pname:pNext chain of slink:VkBindImageMemoryInfoKHX includes a
|
||||||
sname:VkBindImageMemorySwapchainInfoKHX structure, then that structure
|
sname:VkBindImageMemorySwapchainInfoKHX structure, then that structure
|
||||||
includes a swapchain handle and image index indicating that the image will
|
includes a swapchain handle and image index indicating that the image will
|
||||||
be bound to memory from that swapchain.
|
be bound to memory from that swapchain.
|
||||||
|
|
|
@ -223,7 +223,7 @@ ifdef::VK_EXT_sampler_filter_minmax[]
|
||||||
|
|
||||||
[open,refpage='VkSamplerReductionModeCreateInfoEXT',desc='Structure specifying sampler reduction mode',type='structs']
|
[open,refpage='VkSamplerReductionModeCreateInfoEXT',desc='Structure specifying sampler reduction mode',type='structs']
|
||||||
--
|
--
|
||||||
If the pname:pNext list of slink:VkSamplerCreateInfo includes a
|
If the pname:pNext chain of slink:VkSamplerCreateInfo includes a
|
||||||
sname:VkSamplerReductionModeCreateInfoEXT structure, then that structure
|
sname:VkSamplerReductionModeCreateInfoEXT structure, then that structure
|
||||||
includes a mode that controls how texture filtering combines texel values.
|
includes a mode that controls how texture filtering combines texel values.
|
||||||
|
|
||||||
|
|
|
@ -902,8 +902,8 @@ include::../api/protos/vkGetPhysicalDeviceSparseImageFormatProperties2KHR.txt[]
|
||||||
|
|
||||||
fname:vkGetPhysicalDeviceSparseImageFormatProperties2KHR behaves identically
|
fname:vkGetPhysicalDeviceSparseImageFormatProperties2KHR behaves identically
|
||||||
to flink:vkGetPhysicalDeviceSparseImageFormatProperties, with the ability to
|
to flink:vkGetPhysicalDeviceSparseImageFormatProperties, with the ability to
|
||||||
return extended information by adding extension structures to its
|
return extended information by adding extension structures to the
|
||||||
pname:pNext chain.
|
pname:pNext chain of its pname:pProperties parameter.
|
||||||
|
|
||||||
include::../validity/protos/vkGetPhysicalDeviceSparseImageFormatProperties2KHR.txt[]
|
include::../validity/protos/vkGetPhysicalDeviceSparseImageFormatProperties2KHR.txt[]
|
||||||
--
|
--
|
||||||
|
@ -1572,7 +1572,7 @@ ifdef::VK_KHX_device_group[]
|
||||||
[open,refpage='VkDeviceGroupBindSparseInfoKHX',desc='Structure indicating which instances are bound',type='structs']
|
[open,refpage='VkDeviceGroupBindSparseInfoKHX',desc='Structure indicating which instances are bound',type='structs']
|
||||||
--
|
--
|
||||||
|
|
||||||
If the pname:pNext list of slink:VkBindSparseInfo includes a
|
If the pname:pNext chain of slink:VkBindSparseInfo includes a
|
||||||
sname:VkDeviceGroupBindSparseInfoKHX structure, then that structure includes
|
sname:VkDeviceGroupBindSparseInfoKHX structure, then that structure includes
|
||||||
device indices specifying which instance of the resources and memory are
|
device indices specifying which instance of the resources and memory are
|
||||||
bound.
|
bound.
|
||||||
|
|
|
@ -368,41 +368,29 @@ between queues.
|
||||||
[[synchronization-pipeline-stages-masks]]
|
[[synchronization-pipeline-stages-masks]]
|
||||||
If a synchronization command includes a source stage mask, its first
|
If a synchronization command includes a source stage mask, its first
|
||||||
<<synchronization-dependencies-scopes, synchronization scope>> only includes
|
<<synchronization-dependencies-scopes, synchronization scope>> only includes
|
||||||
execution of the pipeline stages specified in that mask, as well as any
|
execution of the pipeline stages specified in that mask, and its first
|
||||||
<<synchronization-pipeline-stages-order, logically earlier>> stages.
|
|
||||||
If a synchronization command includes a destination stage mask, its second
|
|
||||||
<<synchronization-dependencies-scopes, synchronization scope>> only includes
|
|
||||||
execution of the pipeline stages specified in that mask, as well as any
|
|
||||||
<<synchronization-pipeline-stages-order, logically later>> stages.
|
|
||||||
|
|
||||||
<<synchronization-dependencies-access-scopes, Access scopes>> are affected
|
|
||||||
in a similar way.
|
|
||||||
If a synchronization command includes a source stage mask, its first
|
|
||||||
<<synchronization-dependencies-access-scopes, access scope>> only includes
|
<<synchronization-dependencies-access-scopes, access scope>> only includes
|
||||||
memory access performed by pipeline stages specified in that mask.
|
memory access performed by pipeline stages specified in that mask.
|
||||||
If a synchronization command includes a destination stage mask, its second
|
If a synchronization command includes a destination stage mask, its second
|
||||||
|
<<synchronization-dependencies-scopes, synchronization scope>> only includes
|
||||||
|
execution of the pipeline stages specified in that mask, and its second
|
||||||
<<synchronization-dependencies-access-scopes, access scope>> only includes
|
<<synchronization-dependencies-access-scopes, access scope>> only includes
|
||||||
memory access performed by pipeline stages specified in that mask.
|
memory access performed by pipeline stages specified in that mask.
|
||||||
|
|
||||||
[NOTE]
|
[NOTE]
|
||||||
.Note
|
.Note
|
||||||
====
|
====
|
||||||
Implementations may: not support synchronization at every pipeline stage for
|
Including a particular pipeline stage in the first
|
||||||
every synchronization operation.
|
<<synchronization-dependencies-scopes, synchronization scope>> of a command
|
||||||
If a pipeline stage that an implementation does not support synchronization
|
implicitly includes <<synchronization-pipeline-stages-order, logically
|
||||||
for appears in a source stage mask, then it may: substitute that stage for
|
earlier>> pipeline stages in the synchronization scope.
|
||||||
any logically later stage.
|
Similarly, the second <<synchronization-dependencies-scopes, synchronization
|
||||||
If a pipeline stage that an implementation does not support synchronization
|
scope>> includes <<synchronization-pipeline-stages-order, logically later>>
|
||||||
for appears in a destination stage mask, then it may: substitute that stage
|
pipeline stages.
|
||||||
for any logically earlier stage.
|
|
||||||
|
|
||||||
For example, if an implementation is unable to signal an event immediately
|
However, note that <<synchronization-dependencies-access-scopes, access
|
||||||
after vertex shader execution is complete, it may: instead signal the event
|
scopes>> are not affected in this way - only the precise stages specified
|
||||||
after color attachment output has completed.
|
are considered part of each access scope.
|
||||||
|
|
||||||
If an implementation makes such a substitution, it must: not affect the
|
|
||||||
semantics of execution or memory dependencies or image and buffer memory
|
|
||||||
barriers.
|
|
||||||
====
|
====
|
||||||
|
|
||||||
Certain pipeline stages are only available on queues that support a
|
Certain pipeline stages are only available on queues that support a
|
||||||
|
@ -458,12 +446,25 @@ Including any given stage in the destination stage mask for a particular
|
||||||
synchronization command also implies that any logically later stages are
|
synchronization command also implies that any logically later stages are
|
||||||
included in *B~S~* for that command.
|
included in *B~S~* for that command.
|
||||||
|
|
||||||
.Note
|
|
||||||
[NOTE]
|
[NOTE]
|
||||||
|
.Note
|
||||||
====
|
====
|
||||||
Logically earlier/later stages are not included when defining the
|
Implementations may: not support synchronization at every pipeline stage for
|
||||||
<<synchronization-dependencies-access-scopes, access scopes>> of a
|
every synchronization operation.
|
||||||
<<synchronization-memory-barriers,memory barrier>>.
|
If a pipeline stage that an implementation does not support synchronization
|
||||||
|
for appears in a source stage mask, it may: substitute any logically later
|
||||||
|
stage in its place for the first synchronization scope.
|
||||||
|
If a pipeline stage that an implementation does not support synchronization
|
||||||
|
for appears in a destination stage mask, it may: substitute any logically
|
||||||
|
earlier stage in its place for the second synchronization scope.
|
||||||
|
|
||||||
|
For example, if an implementation is unable to signal an event immediately
|
||||||
|
after vertex shader execution is complete, it may: instead signal the event
|
||||||
|
after color attachment output has completed.
|
||||||
|
|
||||||
|
If an implementation makes such a substitution, it must: not affect the
|
||||||
|
semantics of execution or memory dependencies or image and buffer memory
|
||||||
|
barriers.
|
||||||
====
|
====
|
||||||
|
|
||||||
[[synchronization-pipeline-stages-types]]
|
[[synchronization-pipeline-stages-types]]
|
||||||
|
|
|
@ -474,7 +474,7 @@ include::../api/structs/VkPipelineViewportStateCreateInfo.txt[]
|
||||||
include::../validity/structs/VkPipelineViewportStateCreateInfo.txt[]
|
include::../validity/structs/VkPipelineViewportStateCreateInfo.txt[]
|
||||||
--
|
--
|
||||||
|
|
||||||
ifndef::VK_NV_viewport_array2[]
|
ifndef::VK_NV_viewport_array2+VK_EXT_shader_viewport_index_layer[]
|
||||||
If a geometry shader is active and has an output variable decorated with
|
If a geometry shader is active and has an output variable decorated with
|
||||||
code:ViewportIndex, the viewport transformation uses the viewport
|
code:ViewportIndex, the viewport transformation uses the viewport
|
||||||
corresponding to the value assigned to code:ViewportIndex taken from an
|
corresponding to the value assigned to code:ViewportIndex taken from an
|
||||||
|
@ -487,7 +487,9 @@ are undefined.
|
||||||
If no geometry shader is active, or if the geometry shader does not have an
|
If no geometry shader is active, or if the geometry shader does not have an
|
||||||
output decorated with code:ViewportIndex, the viewport numbered zero is used
|
output decorated with code:ViewportIndex, the viewport numbered zero is used
|
||||||
by the viewport transformation.
|
by the viewport transformation.
|
||||||
endif::VK_NV_viewport_array2[]
|
endif::VK_NV_viewport_array2+VK_EXT_shader_viewport_index_layer[]
|
||||||
|
|
||||||
|
ifdef::VK_NV_viewport_array2,VK_EXT_shader_viewport_index_layer[]
|
||||||
ifdef::VK_NV_viewport_array2[]
|
ifdef::VK_NV_viewport_array2[]
|
||||||
A _vertex processing stage_ may direct each primitive to zero or more
|
A _vertex processing stage_ may direct each primitive to zero or more
|
||||||
viewports.
|
viewports.
|
||||||
|
@ -506,9 +508,30 @@ code:ViewportIndex or code:ViewportMaskNV for all vertices of a primitive
|
||||||
due to flow control, the results of the viewport transformation of the
|
due to flow control, the results of the viewport transformation of the
|
||||||
vertices of such primitives are undefined.
|
vertices of such primitives are undefined.
|
||||||
If the last vertex processing stage does not have an output decorated with
|
If the last vertex processing stage does not have an output decorated with
|
||||||
code:ViewportIndex or code:ViewportMask, the viewport numbered zero is used
|
code:ViewportIndex or code:ViewportMaskNV, the viewport numbered zero is
|
||||||
by the viewport transformation.
|
used by the viewport transformation.
|
||||||
endif::VK_NV_viewport_array2[]
|
endif::VK_NV_viewport_array2[]
|
||||||
|
ifndef::VK_NV_viewport_array2[]
|
||||||
|
ifdef::VK_EXT_shader_viewport_index_layer[]
|
||||||
|
A _vertex processing stage_ can: direct each primitive to one of several
|
||||||
|
viewports.
|
||||||
|
The destination viewport for a primitive is selected by the last active
|
||||||
|
vertex processing stage that has an output variable decorated with
|
||||||
|
code:ViewportIndex.
|
||||||
|
The viewport transform uses the viewport corresponding to the value assigned
|
||||||
|
to code:ViewportIndex taken from an implementation-dependent vertex of each
|
||||||
|
primitive.
|
||||||
|
If code:ViewportIndex is outside the range zero to pname:viewportCount minus
|
||||||
|
one for a primitive, or if the last active vertex processing stage did not
|
||||||
|
assign a value to code:ViewportIndex for all vertices of a primitive due to
|
||||||
|
flow control, the results of the viewport transformation of the vertices of
|
||||||
|
such primitives are undefined.
|
||||||
|
If the last vertex processing stage does not have an output decorated with
|
||||||
|
code:ViewportIndex, the viewport numbered zero is used by the viewport
|
||||||
|
transformation.
|
||||||
|
endif::VK_EXT_shader_viewport_index_layer[]
|
||||||
|
endif::VK_NV_viewport_array2[]
|
||||||
|
endif::VK_NV_viewport_array2,VK_EXT_shader_viewport_index_layer[]
|
||||||
|
|
||||||
A single vertex can: be used in more than one individual primitive, in
|
A single vertex can: be used in more than one individual primitive, in
|
||||||
primitives such as ename:VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP.
|
primitives such as ename:VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP.
|
||||||
|
|
|
@ -51,6 +51,6 @@ extensions['VK_NV_external_memory_win32'] = [ 'VK_NV_external_memory', 'VK_NV_ex
|
||||||
extensions['VK_NV_win32_keyed_mutex'] = [ 'VK_NV_external_memory', 'VK_NV_external_memory_capabilities', 'VK_NV_external_memory_win32' ]
|
extensions['VK_NV_win32_keyed_mutex'] = [ 'VK_NV_external_memory', 'VK_NV_external_memory_capabilities', 'VK_NV_external_memory_win32' ]
|
||||||
|
|
||||||
# Define lists of all / KHR / KHX extensions
|
# Define lists of all / KHR / KHX extensions
|
||||||
allExts = [ 'VK_AMD_draw_indirect_count', 'VK_AMD_gcn_shader', 'VK_AMD_gpu_shader_half_float', 'VK_AMD_gpu_shader_int16', 'VK_AMD_mixed_attachment_samples', 'VK_AMD_negative_viewport_height', 'VK_AMD_rasterization_order', 'VK_AMD_shader_ballot', 'VK_AMD_shader_explicit_vertex_parameter', 'VK_AMD_shader_trinary_minmax', 'VK_AMD_texture_gather_bias_lod', 'VK_EXT_acquire_xlib_display', 'VK_EXT_blend_operation_advanced', 'VK_EXT_debug_marker', 'VK_EXT_debug_report', 'VK_EXT_depth_range_unrestricted', 'VK_EXT_direct_mode_display', 'VK_EXT_discard_rectangles', 'VK_EXT_display_control', 'VK_EXT_display_surface_counter', 'VK_EXT_hdr_metadata', 'VK_EXT_post_depth_coverage', 'VK_EXT_sampler_filter_minmax', 'VK_EXT_shader_subgroup_ballot', 'VK_EXT_shader_subgroup_vote', 'VK_EXT_swapchain_colorspace', 'VK_EXT_validation_flags', 'VK_GOOGLE_display_timing', 'VK_IMG_filter_cubic', 'VK_IMG_format_pvrtc', 'VK_KHR_16bit_storage', 'VK_KHR_android_surface', 'VK_KHR_dedicated_allocation', 'VK_KHR_descriptor_update_template', 'VK_KHR_display', 'VK_KHR_display_swapchain', 'VK_KHR_external_fence', 'VK_KHR_external_fence_capabilities', 'VK_KHR_external_fence_fd', 'VK_KHR_external_fence_win32', 'VK_KHR_external_memory', 'VK_KHR_external_memory_capabilities', 'VK_KHR_external_memory_fd', 'VK_KHR_external_memory_win32', 'VK_KHR_external_semaphore', 'VK_KHR_external_semaphore_capabilities', 'VK_KHR_external_semaphore_fd', 'VK_KHR_external_semaphore_win32', 'VK_KHR_get_memory_requirements2', 'VK_KHR_get_physical_device_properties2', 'VK_KHR_get_surface_capabilities2', 'VK_KHR_incremental_present', 'VK_KHR_maintenance1', 'VK_KHR_mir_surface', 'VK_KHR_push_descriptor', 'VK_KHR_relaxed_block_layout', 'VK_KHR_sampler_mirror_clamp_to_edge', 'VK_KHR_shader_draw_parameters', 'VK_KHR_shared_presentable_image', 'VK_KHR_storage_buffer_storage_class', 'VK_KHR_surface', 'VK_KHR_swapchain', 'VK_KHR_variable_pointers', 'VK_KHR_wayland_surface', 'VK_KHR_win32_keyed_mutex', 'VK_KHR_win32_surface', 'VK_KHR_xcb_surface', 'VK_KHR_xlib_surface', 'VK_KHX_device_group', 'VK_KHX_device_group_creation', 'VK_KHX_multiview', 'VK_MVK_ios_surface', 'VK_MVK_macos_surface', 'VK_NN_vi_surface', 'VK_NVX_device_generated_commands', 'VK_NVX_multiview_per_view_attributes', 'VK_NV_clip_space_w_scaling', 'VK_NV_dedicated_allocation', 'VK_NV_external_memory', 'VK_NV_external_memory_capabilities', 'VK_NV_external_memory_win32', 'VK_NV_fill_rectangle', 'VK_NV_fragment_coverage_to_color', 'VK_NV_framebuffer_mixed_samples', 'VK_NV_geometry_shader_passthrough', 'VK_NV_glsl_shader', 'VK_NV_sample_mask_override_coverage', 'VK_NV_viewport_array2', 'VK_NV_viewport_swizzle', 'VK_NV_win32_keyed_mutex' ]
|
allExts = [ 'VK_AMD_draw_indirect_count', 'VK_AMD_gcn_shader', 'VK_AMD_gpu_shader_half_float', 'VK_AMD_gpu_shader_int16', 'VK_AMD_mixed_attachment_samples', 'VK_AMD_negative_viewport_height', 'VK_AMD_rasterization_order', 'VK_AMD_shader_ballot', 'VK_AMD_shader_explicit_vertex_parameter', 'VK_AMD_shader_trinary_minmax', 'VK_AMD_texture_gather_bias_lod', 'VK_EXT_acquire_xlib_display', 'VK_EXT_blend_operation_advanced', 'VK_EXT_debug_marker', 'VK_EXT_debug_report', 'VK_EXT_depth_range_unrestricted', 'VK_EXT_direct_mode_display', 'VK_EXT_discard_rectangles', 'VK_EXT_display_control', 'VK_EXT_display_surface_counter', 'VK_EXT_hdr_metadata', 'VK_EXT_post_depth_coverage', 'VK_EXT_sampler_filter_minmax', 'VK_EXT_shader_subgroup_ballot', 'VK_EXT_shader_subgroup_vote', 'VK_EXT_shader_viewport_index_layer', 'VK_EXT_swapchain_colorspace', 'VK_EXT_validation_flags', 'VK_GOOGLE_display_timing', 'VK_IMG_filter_cubic', 'VK_IMG_format_pvrtc', 'VK_KHR_16bit_storage', 'VK_KHR_android_surface', 'VK_KHR_dedicated_allocation', 'VK_KHR_descriptor_update_template', 'VK_KHR_display', 'VK_KHR_display_swapchain', 'VK_KHR_external_fence', 'VK_KHR_external_fence_capabilities', 'VK_KHR_external_fence_fd', 'VK_KHR_external_fence_win32', 'VK_KHR_external_memory', 'VK_KHR_external_memory_capabilities', 'VK_KHR_external_memory_fd', 'VK_KHR_external_memory_win32', 'VK_KHR_external_semaphore', 'VK_KHR_external_semaphore_capabilities', 'VK_KHR_external_semaphore_fd', 'VK_KHR_external_semaphore_win32', 'VK_KHR_get_memory_requirements2', 'VK_KHR_get_physical_device_properties2', 'VK_KHR_get_surface_capabilities2', 'VK_KHR_incremental_present', 'VK_KHR_maintenance1', 'VK_KHR_mir_surface', 'VK_KHR_push_descriptor', 'VK_KHR_relaxed_block_layout', 'VK_KHR_sampler_mirror_clamp_to_edge', 'VK_KHR_shader_draw_parameters', 'VK_KHR_shared_presentable_image', 'VK_KHR_storage_buffer_storage_class', 'VK_KHR_surface', 'VK_KHR_swapchain', 'VK_KHR_variable_pointers', 'VK_KHR_wayland_surface', 'VK_KHR_win32_keyed_mutex', 'VK_KHR_win32_surface', 'VK_KHR_xcb_surface', 'VK_KHR_xlib_surface', 'VK_KHX_device_group', 'VK_KHX_device_group_creation', 'VK_KHX_multiview', 'VK_MVK_ios_surface', 'VK_MVK_macos_surface', 'VK_NN_vi_surface', 'VK_NVX_device_generated_commands', 'VK_NVX_multiview_per_view_attributes', 'VK_NV_clip_space_w_scaling', 'VK_NV_dedicated_allocation', 'VK_NV_external_memory', 'VK_NV_external_memory_capabilities', 'VK_NV_external_memory_win32', 'VK_NV_fill_rectangle', 'VK_NV_fragment_coverage_to_color', 'VK_NV_framebuffer_mixed_samples', 'VK_NV_geometry_shader_passthrough', 'VK_NV_glsl_shader', 'VK_NV_sample_mask_override_coverage', 'VK_NV_viewport_array2', 'VK_NV_viewport_swizzle', 'VK_NV_win32_keyed_mutex' ]
|
||||||
khrExts = [ 'VK_KHR_16bit_storage', 'VK_KHR_android_surface', 'VK_KHR_dedicated_allocation', 'VK_KHR_descriptor_update_template', 'VK_KHR_display', 'VK_KHR_display_swapchain', 'VK_KHR_external_fence', 'VK_KHR_external_fence_capabilities', 'VK_KHR_external_fence_fd', 'VK_KHR_external_fence_win32', 'VK_KHR_external_memory', 'VK_KHR_external_memory_capabilities', 'VK_KHR_external_memory_fd', 'VK_KHR_external_memory_win32', 'VK_KHR_external_semaphore', 'VK_KHR_external_semaphore_capabilities', 'VK_KHR_external_semaphore_fd', 'VK_KHR_external_semaphore_win32', 'VK_KHR_get_memory_requirements2', 'VK_KHR_get_physical_device_properties2', 'VK_KHR_get_surface_capabilities2', 'VK_KHR_incremental_present', 'VK_KHR_maintenance1', 'VK_KHR_mir_surface', 'VK_KHR_push_descriptor', 'VK_KHR_relaxed_block_layout', 'VK_KHR_sampler_mirror_clamp_to_edge', 'VK_KHR_shader_draw_parameters', 'VK_KHR_shared_presentable_image', 'VK_KHR_storage_buffer_storage_class', 'VK_KHR_surface', 'VK_KHR_swapchain', 'VK_KHR_variable_pointers', 'VK_KHR_wayland_surface', 'VK_KHR_win32_keyed_mutex', 'VK_KHR_win32_surface', 'VK_KHR_xcb_surface', 'VK_KHR_xlib_surface' ]
|
khrExts = [ 'VK_KHR_16bit_storage', 'VK_KHR_android_surface', 'VK_KHR_dedicated_allocation', 'VK_KHR_descriptor_update_template', 'VK_KHR_display', 'VK_KHR_display_swapchain', 'VK_KHR_external_fence', 'VK_KHR_external_fence_capabilities', 'VK_KHR_external_fence_fd', 'VK_KHR_external_fence_win32', 'VK_KHR_external_memory', 'VK_KHR_external_memory_capabilities', 'VK_KHR_external_memory_fd', 'VK_KHR_external_memory_win32', 'VK_KHR_external_semaphore', 'VK_KHR_external_semaphore_capabilities', 'VK_KHR_external_semaphore_fd', 'VK_KHR_external_semaphore_win32', 'VK_KHR_get_memory_requirements2', 'VK_KHR_get_physical_device_properties2', 'VK_KHR_get_surface_capabilities2', 'VK_KHR_incremental_present', 'VK_KHR_maintenance1', 'VK_KHR_mir_surface', 'VK_KHR_push_descriptor', 'VK_KHR_relaxed_block_layout', 'VK_KHR_sampler_mirror_clamp_to_edge', 'VK_KHR_shader_draw_parameters', 'VK_KHR_shared_presentable_image', 'VK_KHR_storage_buffer_storage_class', 'VK_KHR_surface', 'VK_KHR_swapchain', 'VK_KHR_variable_pointers', 'VK_KHR_wayland_surface', 'VK_KHR_win32_keyed_mutex', 'VK_KHR_win32_surface', 'VK_KHR_xcb_surface', 'VK_KHR_xlib_surface' ]
|
||||||
khxExts = [ 'VK_KHX_device_group', 'VK_KHX_device_group_creation', 'VK_KHX_multiview' ]
|
khxExts = [ 'VK_KHX_device_group', 'VK_KHX_device_group_creation', 'VK_KHX_multiview' ]
|
||||||
|
|
|
@ -51,6 +51,6 @@ extensions[VK_NV_external_memory_win32]="VK_NV_external_memory VK_NV_external_me
|
||||||
extensions[VK_NV_win32_keyed_mutex]="VK_NV_external_memory VK_NV_external_memory_capabilities VK_NV_external_memory_win32"
|
extensions[VK_NV_win32_keyed_mutex]="VK_NV_external_memory VK_NV_external_memory_capabilities VK_NV_external_memory_win32"
|
||||||
|
|
||||||
# Define lists of all / KHR / KHX extensions
|
# Define lists of all / KHR / KHX extensions
|
||||||
allExts="VK_AMD_draw_indirect_count VK_AMD_gcn_shader VK_AMD_gpu_shader_half_float VK_AMD_gpu_shader_int16 VK_AMD_mixed_attachment_samples VK_AMD_negative_viewport_height VK_AMD_rasterization_order VK_AMD_shader_ballot VK_AMD_shader_explicit_vertex_parameter VK_AMD_shader_trinary_minmax VK_AMD_texture_gather_bias_lod VK_EXT_acquire_xlib_display VK_EXT_blend_operation_advanced VK_EXT_debug_marker VK_EXT_debug_report VK_EXT_depth_range_unrestricted VK_EXT_direct_mode_display VK_EXT_discard_rectangles VK_EXT_display_control VK_EXT_display_surface_counter VK_EXT_hdr_metadata VK_EXT_post_depth_coverage VK_EXT_sampler_filter_minmax VK_EXT_shader_subgroup_ballot VK_EXT_shader_subgroup_vote VK_EXT_swapchain_colorspace VK_EXT_validation_flags VK_GOOGLE_display_timing VK_IMG_filter_cubic VK_IMG_format_pvrtc VK_KHR_16bit_storage VK_KHR_android_surface VK_KHR_dedicated_allocation VK_KHR_descriptor_update_template VK_KHR_display VK_KHR_display_swapchain VK_KHR_external_fence VK_KHR_external_fence_capabilities VK_KHR_external_fence_fd VK_KHR_external_fence_win32 VK_KHR_external_memory VK_KHR_external_memory_capabilities VK_KHR_external_memory_fd VK_KHR_external_memory_win32 VK_KHR_external_semaphore VK_KHR_external_semaphore_capabilities VK_KHR_external_semaphore_fd VK_KHR_external_semaphore_win32 VK_KHR_get_memory_requirements2 VK_KHR_get_physical_device_properties2 VK_KHR_get_surface_capabilities2 VK_KHR_incremental_present VK_KHR_maintenance1 VK_KHR_mir_surface VK_KHR_push_descriptor VK_KHR_relaxed_block_layout VK_KHR_sampler_mirror_clamp_to_edge VK_KHR_shader_draw_parameters VK_KHR_shared_presentable_image VK_KHR_storage_buffer_storage_class VK_KHR_surface VK_KHR_swapchain VK_KHR_variable_pointers VK_KHR_wayland_surface VK_KHR_win32_keyed_mutex VK_KHR_win32_surface VK_KHR_xcb_surface VK_KHR_xlib_surface VK_KHX_device_group VK_KHX_device_group_creation VK_KHX_multiview VK_MVK_ios_surface VK_MVK_macos_surface VK_NN_vi_surface VK_NVX_device_generated_commands VK_NVX_multiview_per_view_attributes VK_NV_clip_space_w_scaling VK_NV_dedicated_allocation VK_NV_external_memory VK_NV_external_memory_capabilities VK_NV_external_memory_win32 VK_NV_fill_rectangle VK_NV_fragment_coverage_to_color VK_NV_framebuffer_mixed_samples VK_NV_geometry_shader_passthrough VK_NV_glsl_shader VK_NV_sample_mask_override_coverage VK_NV_viewport_array2 VK_NV_viewport_swizzle VK_NV_win32_keyed_mutex"
|
allExts="VK_AMD_draw_indirect_count VK_AMD_gcn_shader VK_AMD_gpu_shader_half_float VK_AMD_gpu_shader_int16 VK_AMD_mixed_attachment_samples VK_AMD_negative_viewport_height VK_AMD_rasterization_order VK_AMD_shader_ballot VK_AMD_shader_explicit_vertex_parameter VK_AMD_shader_trinary_minmax VK_AMD_texture_gather_bias_lod VK_EXT_acquire_xlib_display VK_EXT_blend_operation_advanced VK_EXT_debug_marker VK_EXT_debug_report VK_EXT_depth_range_unrestricted VK_EXT_direct_mode_display VK_EXT_discard_rectangles VK_EXT_display_control VK_EXT_display_surface_counter VK_EXT_hdr_metadata VK_EXT_post_depth_coverage VK_EXT_sampler_filter_minmax VK_EXT_shader_subgroup_ballot VK_EXT_shader_subgroup_vote VK_EXT_shader_viewport_index_layer VK_EXT_swapchain_colorspace VK_EXT_validation_flags VK_GOOGLE_display_timing VK_IMG_filter_cubic VK_IMG_format_pvrtc VK_KHR_16bit_storage VK_KHR_android_surface VK_KHR_dedicated_allocation VK_KHR_descriptor_update_template VK_KHR_display VK_KHR_display_swapchain VK_KHR_external_fence VK_KHR_external_fence_capabilities VK_KHR_external_fence_fd VK_KHR_external_fence_win32 VK_KHR_external_memory VK_KHR_external_memory_capabilities VK_KHR_external_memory_fd VK_KHR_external_memory_win32 VK_KHR_external_semaphore VK_KHR_external_semaphore_capabilities VK_KHR_external_semaphore_fd VK_KHR_external_semaphore_win32 VK_KHR_get_memory_requirements2 VK_KHR_get_physical_device_properties2 VK_KHR_get_surface_capabilities2 VK_KHR_incremental_present VK_KHR_maintenance1 VK_KHR_mir_surface VK_KHR_push_descriptor VK_KHR_relaxed_block_layout VK_KHR_sampler_mirror_clamp_to_edge VK_KHR_shader_draw_parameters VK_KHR_shared_presentable_image VK_KHR_storage_buffer_storage_class VK_KHR_surface VK_KHR_swapchain VK_KHR_variable_pointers VK_KHR_wayland_surface VK_KHR_win32_keyed_mutex VK_KHR_win32_surface VK_KHR_xcb_surface VK_KHR_xlib_surface VK_KHX_device_group VK_KHX_device_group_creation VK_KHX_multiview VK_MVK_ios_surface VK_MVK_macos_surface VK_NN_vi_surface VK_NVX_device_generated_commands VK_NVX_multiview_per_view_attributes VK_NV_clip_space_w_scaling VK_NV_dedicated_allocation VK_NV_external_memory VK_NV_external_memory_capabilities VK_NV_external_memory_win32 VK_NV_fill_rectangle VK_NV_fragment_coverage_to_color VK_NV_framebuffer_mixed_samples VK_NV_geometry_shader_passthrough VK_NV_glsl_shader VK_NV_sample_mask_override_coverage VK_NV_viewport_array2 VK_NV_viewport_swizzle VK_NV_win32_keyed_mutex"
|
||||||
khrExts="VK_KHR_16bit_storage VK_KHR_android_surface VK_KHR_dedicated_allocation VK_KHR_descriptor_update_template VK_KHR_display VK_KHR_display_swapchain VK_KHR_external_fence VK_KHR_external_fence_capabilities VK_KHR_external_fence_fd VK_KHR_external_fence_win32 VK_KHR_external_memory VK_KHR_external_memory_capabilities VK_KHR_external_memory_fd VK_KHR_external_memory_win32 VK_KHR_external_semaphore VK_KHR_external_semaphore_capabilities VK_KHR_external_semaphore_fd VK_KHR_external_semaphore_win32 VK_KHR_get_memory_requirements2 VK_KHR_get_physical_device_properties2 VK_KHR_get_surface_capabilities2 VK_KHR_incremental_present VK_KHR_maintenance1 VK_KHR_mir_surface VK_KHR_push_descriptor VK_KHR_relaxed_block_layout VK_KHR_sampler_mirror_clamp_to_edge VK_KHR_shader_draw_parameters VK_KHR_shared_presentable_image VK_KHR_storage_buffer_storage_class VK_KHR_surface VK_KHR_swapchain VK_KHR_variable_pointers VK_KHR_wayland_surface VK_KHR_win32_keyed_mutex VK_KHR_win32_surface VK_KHR_xcb_surface VK_KHR_xlib_surface"
|
khrExts="VK_KHR_16bit_storage VK_KHR_android_surface VK_KHR_dedicated_allocation VK_KHR_descriptor_update_template VK_KHR_display VK_KHR_display_swapchain VK_KHR_external_fence VK_KHR_external_fence_capabilities VK_KHR_external_fence_fd VK_KHR_external_fence_win32 VK_KHR_external_memory VK_KHR_external_memory_capabilities VK_KHR_external_memory_fd VK_KHR_external_memory_win32 VK_KHR_external_semaphore VK_KHR_external_semaphore_capabilities VK_KHR_external_semaphore_fd VK_KHR_external_semaphore_win32 VK_KHR_get_memory_requirements2 VK_KHR_get_physical_device_properties2 VK_KHR_get_surface_capabilities2 VK_KHR_incremental_present VK_KHR_maintenance1 VK_KHR_mir_surface VK_KHR_push_descriptor VK_KHR_relaxed_block_layout VK_KHR_sampler_mirror_clamp_to_edge VK_KHR_shader_draw_parameters VK_KHR_shared_presentable_image VK_KHR_storage_buffer_storage_class VK_KHR_surface VK_KHR_swapchain VK_KHR_variable_pointers VK_KHR_wayland_surface VK_KHR_win32_keyed_mutex VK_KHR_win32_surface VK_KHR_xcb_surface VK_KHR_xlib_surface"
|
||||||
khxExts="VK_KHX_device_group VK_KHX_device_group_creation VK_KHX_multiview"
|
khxExts="VK_KHX_device_group VK_KHX_device_group_creation VK_KHX_multiview"
|
||||||
|
|
|
@ -580,7 +580,7 @@ global vuPat
|
||||||
vuPat = re.compile('^(?P<head> [*]+)( *)(?P<tail>.*)', re.DOTALL)
|
vuPat = re.compile('^(?P<head> [*]+)( *)(?P<tail>.*)', re.DOTALL)
|
||||||
|
|
||||||
# The value to start tagging VU statements at, unless overridden by -nextvu
|
# The value to start tagging VU statements at, unless overridden by -nextvu
|
||||||
startVUID = 1507
|
startVUID = 1510
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
|
|
|
@ -305,6 +305,13 @@ class COutputGenerator(OutputGenerator):
|
||||||
(numVal,strVal) = self.enumToValue(elem, True)
|
(numVal,strVal) = self.enumToValue(elem, True)
|
||||||
name = elem.get('name')
|
name = elem.get('name')
|
||||||
|
|
||||||
|
# Check for duplicate enum values and raise an error if found.
|
||||||
|
for elem2 in groupElem.findall('enum'):
|
||||||
|
if (elem != elem2):
|
||||||
|
(numVal2,strVal2) = self.enumToValue(elem2, True)
|
||||||
|
if (numVal2 == numVal):
|
||||||
|
raise UserWarning('Duplicate enum ' + name + ' = ' + elem2.get('name') + ' = ' + strVal)
|
||||||
|
|
||||||
# Extension enumerants are only included if they are required
|
# Extension enumerants are only included if they are required
|
||||||
if (self.isEnumRequired(elem)):
|
if (self.isEnumRequired(elem)):
|
||||||
body += " " + name + " = " + strVal + ",\n"
|
body += " " + name + " = " + strVal + ",\n"
|
||||||
|
|
|
@ -24,7 +24,6 @@
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import xml.etree.ElementTree as etree
|
import xml.etree.ElementTree as etree
|
||||||
import networkx as nx
|
|
||||||
|
|
||||||
def enQuote(key):
|
def enQuote(key):
|
||||||
return "'" + str(key) + "'"
|
return "'" + str(key) + "'"
|
||||||
|
@ -44,6 +43,78 @@ def pyList(names):
|
||||||
' ]')
|
' ]')
|
||||||
return s
|
return s
|
||||||
|
|
||||||
|
class DiGraph:
|
||||||
|
"""A directed graph.
|
||||||
|
|
||||||
|
The implementation and API mimic that of networkx.DiGraph in networkx-1.11.
|
||||||
|
networkx implements graphs as nested dicts; it's dicts all the way down, no
|
||||||
|
lists.
|
||||||
|
|
||||||
|
Some major differences between this implementation and that of
|
||||||
|
networkx-1.11 are:
|
||||||
|
|
||||||
|
* This omits edge and node attribute data, because we never use them
|
||||||
|
yet they add additional code complexity.
|
||||||
|
|
||||||
|
* This returns iterator objects when possible instead of collection
|
||||||
|
objects, because it simplifies the implementation and should provide
|
||||||
|
better performance.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.__nodes = {}
|
||||||
|
|
||||||
|
def add_node(self, node):
|
||||||
|
if node not in self.__nodes:
|
||||||
|
self.__nodes[node] = DiGraphNode()
|
||||||
|
|
||||||
|
def add_edge(self, src, dest):
|
||||||
|
self.add_node(src)
|
||||||
|
self.add_node(dest)
|
||||||
|
self.__nodes[src].adj.add(dest)
|
||||||
|
|
||||||
|
def nodes(self):
|
||||||
|
"""Iterate over the nodes in the graph."""
|
||||||
|
return self.__nodes.keys()
|
||||||
|
|
||||||
|
def descendants(self, node):
|
||||||
|
"""
|
||||||
|
Iterate over the nodes reachable from the given start node, excluding
|
||||||
|
the start node itself. Each node in the graph is yielded at most once.
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Implementation detail: Do a breadth-first traversal because it's
|
||||||
|
# easier than depth-first.
|
||||||
|
|
||||||
|
# All nodes seen during traversal.
|
||||||
|
seen = set()
|
||||||
|
|
||||||
|
# The stack of nodes that need visiting.
|
||||||
|
visit_me = []
|
||||||
|
|
||||||
|
# Boostrap the traversal.
|
||||||
|
seen.add(node)
|
||||||
|
for x in self.__nodes[node].adj:
|
||||||
|
if x not in seen:
|
||||||
|
seen.add(x)
|
||||||
|
visit_me.append(x)
|
||||||
|
|
||||||
|
while visit_me:
|
||||||
|
x = visit_me.pop()
|
||||||
|
assert x in seen
|
||||||
|
yield x
|
||||||
|
|
||||||
|
for y in self.__nodes[x].adj:
|
||||||
|
if y not in seen:
|
||||||
|
seen.add(y)
|
||||||
|
visit_me.append(y)
|
||||||
|
|
||||||
|
class DiGraphNode:
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
# Set of adjacent of nodes.
|
||||||
|
self.adj = set()
|
||||||
|
|
||||||
# -extension name - may be a single extension name, a space-separated list
|
# -extension name - may be a single extension name, a space-separated list
|
||||||
# of names, or a regular expression.
|
# of names, or a regular expression.
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
@ -76,7 +147,7 @@ if __name__ == '__main__':
|
||||||
allExts = set()
|
allExts = set()
|
||||||
khrExts = set()
|
khrExts = set()
|
||||||
khxExts = set()
|
khxExts = set()
|
||||||
g = nx.DiGraph()
|
g = DiGraph()
|
||||||
|
|
||||||
for elem in tree.findall('extensions/extension'):
|
for elem in tree.findall('extensions/extension'):
|
||||||
name = elem.get('name')
|
name = elem.get('name')
|
||||||
|
@ -95,7 +166,7 @@ if __name__ == '__main__':
|
||||||
deps = elem.get('requires').split(',')
|
deps = elem.get('requires').split(',')
|
||||||
|
|
||||||
for dep in deps:
|
for dep in deps:
|
||||||
g.add_path([name, dep])
|
g.add_edge(name, dep)
|
||||||
else:
|
else:
|
||||||
g.add_node(name)
|
g.add_node(name)
|
||||||
else:
|
else:
|
||||||
|
@ -115,7 +186,7 @@ if __name__ == '__main__':
|
||||||
# remains as stable as possible as extensions are added to vk.xml.
|
# remains as stable as possible as extensions are added to vk.xml.
|
||||||
|
|
||||||
for ext in sorted(g.nodes()):
|
for ext in sorted(g.nodes()):
|
||||||
children = nx.descendants(g, ext)
|
children = list(g.descendants(ext))
|
||||||
|
|
||||||
# Only emit an ifdef block if an extension has dependencies
|
# Only emit an ifdef block if an extension has dependencies
|
||||||
if len(children) > 0:
|
if len(children) > 0:
|
||||||
|
@ -142,7 +213,7 @@ if __name__ == '__main__':
|
||||||
# remains as stable as possible as extensions are added to vk.xml.
|
# remains as stable as possible as extensions are added to vk.xml.
|
||||||
|
|
||||||
for ext in sorted(g.nodes()):
|
for ext in sorted(g.nodes()):
|
||||||
children = nx.descendants(g, ext)
|
children = list(g.descendants(ext))
|
||||||
|
|
||||||
# Only emit an ifdef block if an extension has dependencies
|
# Only emit an ifdef block if an extension has dependencies
|
||||||
if len(children) > 0:
|
if len(children) > 0:
|
||||||
|
|
|
@ -106,7 +106,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
||||||
<type category="define">// Vulkan 1.0 version number
|
<type category="define">// Vulkan 1.0 version number
|
||||||
#define <name>VK_API_VERSION_1_0</name> <type>VK_MAKE_VERSION</type>(1, 0, 0)// Patch version should always be set to 0</type>
|
#define <name>VK_API_VERSION_1_0</name> <type>VK_MAKE_VERSION</type>(1, 0, 0)// Patch version should always be set to 0</type>
|
||||||
<type category="define">// Version of this file
|
<type category="define">// Version of this file
|
||||||
#define <name>VK_HEADER_VERSION</name> 57</type>
|
#define <name>VK_HEADER_VERSION</name> 58</type>
|
||||||
|
|
||||||
<type category="define">
|
<type category="define">
|
||||||
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
|
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
|
||||||
|
@ -6218,7 +6218,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
||||||
</extension>
|
</extension>
|
||||||
<extension name="VK_NVX_device_generated_commands" number="87" type="device" author="NVX" contact="Christoph Kubisch @pixeljetstream" supported="vulkan">
|
<extension name="VK_NVX_device_generated_commands" number="87" type="device" author="NVX" contact="Christoph Kubisch @pixeljetstream" supported="vulkan">
|
||||||
<require>
|
<require>
|
||||||
<enum value="1" name="VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION"/>
|
<enum value="3" name="VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION"/>
|
||||||
<enum value=""VK_NVX_device_generated_commands"" name="VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME"/>
|
<enum value=""VK_NVX_device_generated_commands"" name="VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME"/>
|
||||||
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX"/>
|
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX"/>
|
||||||
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX"/>
|
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX"/>
|
||||||
|
@ -6629,7 +6629,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
||||||
</extension>
|
</extension>
|
||||||
<extension name="VK_KHR_dedicated_allocation" number="128" type="device" author="KHR" contact="James Jones @cubanismo" supported="vulkan">
|
<extension name="VK_KHR_dedicated_allocation" number="128" type="device" author="KHR" contact="James Jones @cubanismo" supported="vulkan">
|
||||||
<require>
|
<require>
|
||||||
<enum value="1" name="VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION"/>
|
<enum value="3" name="VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION"/>
|
||||||
<enum value=""VK_KHR_dedicated_allocation"" name="VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME"/>
|
<enum value=""VK_KHR_dedicated_allocation"" name="VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME"/>
|
||||||
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR"/>
|
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR"/>
|
||||||
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR"/>
|
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR"/>
|
||||||
|
@ -6922,5 +6922,41 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
||||||
<enum value=""VK_EXT_extension_162"" name="VK_EXT_EXTENSION_162_EXTENSION_NAME"/>
|
<enum value=""VK_EXT_extension_162"" name="VK_EXT_EXTENSION_162_EXTENSION_NAME"/>
|
||||||
</require>
|
</require>
|
||||||
</extension>
|
</extension>
|
||||||
|
<extension name="VK_EXT_shader_viewport_index_layer" number="163" type="device" author="NV" contact="Daniel Koch @dgkoch" supported="vulkan">
|
||||||
|
<require>
|
||||||
|
<enum value="1" name="VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION"/>
|
||||||
|
<enum value=""VK_EXT_shader_viewport_index_layer"" name="VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME"/>
|
||||||
|
</require>
|
||||||
|
</extension>
|
||||||
|
<extension name="VK_NV_extension_164" number="164" author="NV" contact="Daniel Koch @dgkoch" supported="disabled">
|
||||||
|
<require>
|
||||||
|
<enum value="0" name="VK_EXT_EXTENSION_164_SPEC_VERSION"/>
|
||||||
|
<enum value=""VK_NV_extension_164"" name="VK_EXT_EXTENSION_164_EXTENSION_NAME"/>
|
||||||
|
</require>
|
||||||
|
</extension>
|
||||||
|
<extension name="VK_NV_extension_165" number="165" author="NV" contact="Daniel Koch @dgkoch" supported="disabled">
|
||||||
|
<require>
|
||||||
|
<enum value="0" name="VK_EXT_EXTENSION_165_SPEC_VERSION"/>
|
||||||
|
<enum value=""VK_NV_extension_165"" name="VK_EXT_EXTENSION_165_EXTENSION_NAME"/>
|
||||||
|
</require>
|
||||||
|
</extension>
|
||||||
|
<extension name="VK_NV_extension_166" number="166" author="NV" contact="Daniel Koch @dgkoch" supported="disabled">
|
||||||
|
<require>
|
||||||
|
<enum value="0" name="VK_EXT_EXTENSION_166_SPEC_VERSION"/>
|
||||||
|
<enum value=""VK_NV_extension_166"" name="VK_EXT_EXTENSION_166_EXTENSION_NAME"/>
|
||||||
|
</require>
|
||||||
|
</extension>
|
||||||
|
<extension name="VK_NV_extension_167" number="167" author="NV" contact="Daniel Koch @dgkoch" supported="disabled">
|
||||||
|
<require>
|
||||||
|
<enum value="0" name="VK_EXT_EXTENSION_167_SPEC_VERSION"/>
|
||||||
|
<enum value=""VK_NV_extension_167"" name="VK_EXT_EXTENSION_167_EXTENSION_NAME"/>
|
||||||
|
</require>
|
||||||
|
</extension>
|
||||||
|
<extension name="VK_NV_extension_168" number="168" author="NV" contact="Daniel Koch @dgkoch" supported="disabled">
|
||||||
|
<require>
|
||||||
|
<enum value="0" name="VK_EXT_EXTENSION_168_SPEC_VERSION"/>
|
||||||
|
<enum value=""VK_NV_extension_168"" name="VK_EXT_EXTENSION_168_EXTENSION_NAME"/>
|
||||||
|
</require>
|
||||||
|
</extension>
|
||||||
</extensions>
|
</extensions>
|
||||||
</registry>
|
</registry>
|
||||||
|
|
|
@ -43,7 +43,7 @@ extern "C" {
|
||||||
#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
|
#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
|
||||||
#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
|
#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
|
||||||
// Version of this file
|
// Version of this file
|
||||||
#define VK_HEADER_VERSION 57
|
#define VK_HEADER_VERSION 58
|
||||||
|
|
||||||
|
|
||||||
#define VK_NULL_HANDLE 0
|
#define VK_NULL_HANDLE 0
|
||||||
|
@ -4827,7 +4827,7 @@ typedef struct VkPhysicalDeviceVariablePointerFeaturesKHR {
|
||||||
|
|
||||||
|
|
||||||
#define VK_KHR_dedicated_allocation 1
|
#define VK_KHR_dedicated_allocation 1
|
||||||
#define VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION 1
|
#define VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION 3
|
||||||
#define VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_KHR_dedicated_allocation"
|
#define VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_KHR_dedicated_allocation"
|
||||||
|
|
||||||
typedef struct VkMemoryDedicatedRequirementsKHR {
|
typedef struct VkMemoryDedicatedRequirementsKHR {
|
||||||
|
@ -5648,7 +5648,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceGroupsKHX(
|
||||||
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkObjectTableNVX)
|
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkObjectTableNVX)
|
||||||
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkIndirectCommandsLayoutNVX)
|
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkIndirectCommandsLayoutNVX)
|
||||||
|
|
||||||
#define VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION 1
|
#define VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION 3
|
||||||
#define VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME "VK_NVX_device_generated_commands"
|
#define VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME "VK_NVX_device_generated_commands"
|
||||||
|
|
||||||
|
|
||||||
|
@ -6440,6 +6440,11 @@ typedef struct VkPipelineCoverageModulationStateCreateInfoNV {
|
||||||
#define VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME "VK_EXT_post_depth_coverage"
|
#define VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME "VK_EXT_post_depth_coverage"
|
||||||
|
|
||||||
|
|
||||||
|
#define VK_EXT_shader_viewport_index_layer 1
|
||||||
|
#define VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION 1
|
||||||
|
#define VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME "VK_EXT_shader_viewport_index_layer"
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue