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:
Jon Leech 2017-08-14 01:58:07 -07:00
parent a9231ec465
commit cd4de492bf
32 changed files with 548 additions and 165 deletions

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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.

View File

@ -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.

View File

@ -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

View File

@ -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.

View File

@ -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[]

View File

@ -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.

View File

@ -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.

View File

@ -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[]
-- --

View File

@ -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.

View File

@ -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.

View File

@ -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];

View File

@ -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.

View File

@ -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

View File

@ -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.
+ +

View File

@ -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.

View File

@ -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

View File

@ -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.

View File

@ -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.

View File

@ -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.

View File

@ -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.

View File

@ -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]]

View File

@ -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.

View File

@ -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' ]

View File

@ -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"

View File

@ -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()

View File

@ -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"

View File

@ -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:

View File

@ -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="&quot;VK_NVX_device_generated_commands&quot;" name="VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME"/> <enum value="&quot;VK_NVX_device_generated_commands&quot;" 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="&quot;VK_KHR_dedicated_allocation&quot;" name="VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME"/> <enum value="&quot;VK_KHR_dedicated_allocation&quot;" 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="&quot;VK_EXT_extension_162&quot;" name="VK_EXT_EXTENSION_162_EXTENSION_NAME"/> <enum value="&quot;VK_EXT_extension_162&quot;" 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="&quot;VK_EXT_shader_viewport_index_layer&quot;" 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="&quot;VK_NV_extension_164&quot;" 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="&quot;VK_NV_extension_165&quot;" 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="&quot;VK_NV_extension_166&quot;" 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="&quot;VK_NV_extension_167&quot;" 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="&quot;VK_NV_extension_168&quot;" name="VK_EXT_EXTENSION_168_EXTENSION_NAME"/>
</require>
</extension>
</extensions> </extensions>
</registry> </registry>

View File

@ -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