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:
* Bump API patch number and header version number to 57 for this update.

View File

@ -87,7 +87,7 @@ VERBOSE =
# $(EXTENSIONS))
# ADOCOPTS options for asciidoc->HTML5 output
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
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
# This leaves out config/extDependency.sh intentionally as it only
# needs to be updated when the extension dependencies in vk.xml change,
# and requires networkx, a non-standard Python package.
# needs to be updated when the extension dependencies in vk.xml change.
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)
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
will be disabled by the validation layers.

View File

@ -14,9 +14,9 @@
*Status*::
Draft.
*Last Modified Date*::
2017-02-27
2017-08-07
*Revision*::
1
3
*IP Status*::
No known IP claims.
*Dependencies*::
@ -38,7 +38,10 @@ allocation, memory aliasing and sparse binding, which could interfere with
some optimizations.
Applications should query the implementation for when a dedicated allocation
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
depend on dedicated allocations on implementations that associate image or
buffer metadata with OS-level memory objects.
@ -104,7 +107,7 @@ None.
VkMemoryRequirements2KHR memoryRequirements =
{
VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR,
&dedicatedAllocationRequirements, // pNext
&dedicatedRequirements, // pNext
};
const VkImageMemoryRequirementsInfo2KHR imageRequirementsInfo =
@ -167,3 +170,8 @@ None.
* Revision 2, 2017-03-27 (Jason Ekstrand)
- 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*::
87
*Last Modified Date*::
2016-10-31
2017-07-25
*Revision*::
1
3
*Dependencies*::
- This extension is written against version 1.0 of the Vulkan API.
*Contributors*::
@ -21,6 +21,7 @@
- Eric Werness, NVIDIA
- Detlef Roettger, NVIDIA
- Daniel Koch, NVIDIA
- Chris Hebert, NVIDIA
*Contacts*::
- Pierre Boudier, NVIDIA (pboudier@nvidia.com)
- Christoph Kubisch, NVIDIA (ckubisch@nvidia.com)
@ -434,6 +435,11 @@ https://github.com/NVIDIAGameWorks/GraphicsSamples/tree/master/samples/vk10-kepl
=== 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)
- header compatibility break: add missing _TYPE to
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
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
None.

View File

@ -288,6 +288,10 @@ ifdef::VK_EXT_shader_subgroup_vote[]
include::VK_EXT_shader_subgroup_vote.txt[]
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[]
include::VK_EXT_swapchain_colorspace.txt[]
endif::VK_EXT_swapchain_colorspace[]

View File

@ -114,6 +114,10 @@ ifdef::VK_NV_geometry_shader_passthrough[]
[[spirvenv-capabilities-table-geometryshaderpassthrough]]
| code:GeometryShaderPassthroughNV | <<VK_NV_geometry_shader_passthrough,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[]
[[spirvenv-capabilities-table-viewportarray2]]
| 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.
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[]
The application can: pass a SPIR-V module to flink:vkCreateShaderModule that
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']
--
If the pname:pNext list of slink:VkPipelineColorBlendStateCreateInfo
If the pname:pNext chain of slink:VkPipelineColorBlendStateCreateInfo
includes a sname:VkPipelineColorBlendAdvancedStateCreateInfoEXT structure,
then that structure includes parameters that affect advanced blend
operations.

View File

@ -16,8 +16,8 @@ include::../../api/protos/vkGetPhysicalDeviceSurfaceCapabilities2EXT.txt[]
fname:vkGetPhysicalDeviceSurfaceCapabilities2EXT behaves similarly to
flink:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, with the ability to return
extended information by adding extension structures to its pname:pNext
chain.
extended information by adding extension structures to the pname:pNext chain
of its pname:pSurfaceCapabilities parameter.
include::../../validity/protos/vkGetPhysicalDeviceSurfaceCapabilities2EXT.txt[]
--

View File

@ -3,8 +3,8 @@
To query features additionally supported by the +VK_KHR_16bit_storage+
extension, call flink:vkGetPhysicalDeviceFeatures2KHR with a
sname:VkPhysicalDevice16BitStorageFeaturesKHR structure in the pname:pNext
chain.
sname:VkPhysicalDevice16BitStorageFeaturesKHR structure included in the
pname:pNext chain of its pname:pFeatures parameter.
The sname:VkPhysicalDevice16BitStorageFeaturesKHR structure can: also be in
the pname:pNext chain of a slink:VkDeviceCreateInfo structure, in which case
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']
--
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
includes a set of device group present modes that the swapchain can: be used
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']
--
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
array of device masks and a device group present mode.

View File

@ -167,7 +167,7 @@ void cmdProcessSequence(cmd, objectTable, indirectCommandsLayout, pIndirectComma
break;
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 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']
--
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
device indices and masks specifying which physical devices execute semaphore
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']
--
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
includes an initial device mask for the command buffer.

View File

@ -771,10 +771,10 @@ structure describe the following features:
+VariablePointers+ capability.
If the sname:VkPhysicalDeviceVariablePointerFeaturesKHR structure is
included in the pname:pNext chain of flink:vkGetPhysicalDeviceFeatures2KHR,
it is filled with values indicating whether each feature is supported.
included in the pname:pNext chain of slink:VkPhysicalDeviceFeatures2KHR, it
is filled with values indicating whether each feature is supported.
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
****
@ -818,10 +818,10 @@ describe the following features:
shaders.
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.
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
****
@ -869,10 +869,10 @@ structure describe the following features:
the same sample.
If the sname:VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT structure is
included in the pname:pNext chain of flink:vkGetPhysicalDeviceFeatures2KHR,
it is filled with values indicating whether each feature is supported.
included in the pname:pNext chain of slink:VkPhysicalDeviceFeatures2KHR, it
is filled with values indicating whether each feature is supported.
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[]
--
@ -1666,7 +1666,7 @@ describe the following implementation-dependent limits:
include::../validity/structs/VkPhysicalDeviceMultiviewPropertiesKHX.txt[]
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.
--
@ -1692,7 +1692,7 @@ structure describe the following implementation-dependent limits:
include::../validity/structs/VkPhysicalDeviceDiscardRectanglePropertiesEXT.txt[]
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.
--
@ -1722,7 +1722,7 @@ include::../validity/structs/VkPhysicalDeviceMultiviewPerViewAttributesPropertie
If the sname:VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
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.
--
@ -1776,7 +1776,7 @@ include::../validity/structs/VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
If the sname:VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT 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.
--
@ -1803,7 +1803,7 @@ structure describe the following implementation-dependent limits:
the image when doing min/max filtering.
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.
If pname:filterMinmaxSingleComponentFormats is ename:VK_TRUE, the following
@ -4693,14 +4693,16 @@ include::../api/enums/VkExternalSemaphoreHandleTypeFlagBitsKHR.txt[]
referring to a Direct3D 12 fence.
It owns a reference to the underlying synchronization primitive
associated with the Direct3D fence.
* ename:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FENCE_FD_BIT_KHR specifies a
POSIX file descriptor handle to a Linux or Android Fence object.
It can be used with any native API accepting a valid fence object file
descriptor as input.
* ename:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR specifies a
POSIX file descriptor handle to a Linux Sync File or Android Fence
object.
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
associated with the file descriptor.
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

View File

@ -380,8 +380,12 @@ endif::VK_KHR_16bit_storage[]
Composites of these types are also permitted.
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
fixed-point as described in <<fundamentals-fpfixedfpconv>>; otherwise no
type conversion is applied.
fixed-point as described in <<fundamentals-fpfixedfpconv>>; If the color
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
format of the corresponding color attachment, the result is undefined for
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
<<interfaces-inputattachment,Fragment Input Attachment Interface>>.
Each shader variable declaration must: refer to the same type of resource as
is indicated by the pname:descriptorType.
Each shader variable in the descriptor set interface must: be of a type that
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
Type Correspondence>> for the relationship between shader declarations and
Type Correspondence>> for the relationship between shader types and
descriptor types.
[[interfaces-resources-correspondence]]
@ -602,15 +609,17 @@ descriptor types.
[width="90%",cols="<1,<2",options="header"]
|====
| Resource type | Descriptor Type
| sampler | ename:VK_DESCRIPTOR_TYPE_SAMPLER
| sampled image | ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
| sampler | ename:VK_DESCRIPTOR_TYPE_SAMPLER or
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
| combined image sampler | ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
| uniform texel buffer | ename:VK_DESCRIPTOR_TYPE_UNIFORM_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
| storage buffer | ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER +
| storage buffer | ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
| input attachment | ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
|====
@ -655,21 +664,20 @@ endif::VK_KHR_storage_buffer_storage_class[]
[[interfaces-resources-setandbinding]]
=== 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
associated with the slink:VkDescriptorSetLayoutBinding that has a
pname:binding equal to [eq]#b# in pname:pSetLayouts[_s_] that was specified
in slink:VkPipelineLayoutCreateInfo.
The range of descriptor sets is between zero and
pname:maxBoundDescriptorSets minus one.
If a descriptor set value is statically used by an entry point there must:
be an associated pname:pSetLayout in the corresponding pipeline layout as
described in <<descriptorsets-pipelinelayout-consistency,Pipeline Layouts
consistency>>.
code:DescriptorSet decoration values must: be between zero and
pname:maxBoundDescriptorSets minus one, inclusive.
code:Binding decoration values can: be any 32-bit unsigned integer value, as
described in <<descriptorsets-setlayout>>.
Each descriptor set has its own binding name space.
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
pname:descriptorCount of that sname:VkDescriptorSetLayoutBinding.
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
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
accessed by a pipeline stage as shown in
<<interfaces-resources-limits,Shader Resource Limits>>.
@ -691,18 +695,21 @@ The "`Resource Types`" column lists which resource types are counted against
the limit.
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
be used in a particular shader stage or pipeline, but if a
code:DescriptorSet and code:Binding decoration is specified for a variable
that is statically used in that shader there must: be a pipeline layout
entry identified with that descriptor set and pname:binding and the
corresponding pname:stageFlags must: specify the appropriate
elink:VkShaderStageFlagBits for that stage.
be used in a particular shader stage or pipeline.
If a variable assigned to a given code:DescriptorSet and code:Binding pair
is statically used in the entry point being compiled, the pipeline layout
must: contain a descriptor set layout binding in that descriptor set layout
and for that binding number, and that binding's pname:stageFlags must:
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]]
.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.
+
In a
ifdef::VK_NV_viewport_array2[]
ifdef::VK_NV_viewport_array2,VK_EXT_shader_viewport_index_layer[]
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
the framebuffer layer index to which the primitive produced by that shader
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
code:Layer that is used.
Outputs in previous shader stages are not used, even if the last stage fails
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
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.
+
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,
endif::VK_NV_viewport_array2[]
endif::VK_NV_viewport_array2,VK_EXT_shader_viewport_index_layer[]
geometry, and fragment shaders.
+
In a
ifdef::VK_NV_viewport_array2[]
ifdef::VK_NV_viewport_array2,VK_EXT_shader_viewport_index_layer[]
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
using the code:Output storage class.
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.
+
In a
ifdef::VK_NV_viewport_array2[]
ifdef::VK_NV_viewport_array2,VK_EXT_shader_viewport_index_layer[]
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
written to with the viewport index to which the primitive produced by that
shader will be directed.
+
The selected viewport index is used to select the viewport transform and
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
code:ViewportIndex that is used.
Outputs in previous shader stages are not used, even if the last stage fails
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
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.
+
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,
endif::VK_NV_viewport_array2[]
endif::VK_NV_viewport_array2,VK_EXT_shader_viewport_index_layer[]
geometry, and fragment shaders.
+
In a
ifdef::VK_NV_viewport_array2[]
ifdef::VK_NV_viewport_array2,VK_EXT_shader_viewport_index_layer[]
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
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']
--
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
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']
--
If the pname:pNext list includes a
If the pname:pNext chain includes a
sname:VkDedicatedAllocationMemoryAllocateInfoNV structure, then that
structure includes a handle of the sole buffer or image resource that the
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']
--
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
flags and a device mask controlling how many instances of the memory will be
allocated.

View File

@ -85,12 +85,17 @@ endif::VK_AMD_rasterization_order[]
* [[VUID-VkPipelineRasterizationStateCreateInfo-depthClampEnable-00782]]
If the <<features-features-depthClamp,depth clamping>> feature is not
enabled, pname:depthClampEnable must: be ename:VK_FALSE
ifndef::VK_NV_fill_rectangle[]
* [[VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01413]]
If the <<features-features-fillModeNonSolid,non-solid fill modes>>
feature is not enabled, pname:polygonMode must: be
ename:VK_POLYGON_MODE_FILL
endif::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]]
If the +VK_NV_fill_rectangle+ extension is not enabled,
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']
--
If the sname:VkRenderPassCreateInfo::pname:pNext list includes a
If the sname:VkRenderPassCreateInfo::pname:pNext chain includes a
sname:VkRenderPassMultiviewCreateInfoKHX structure, then that structure
includes an array of view masks, view offsets, and correlation masks for the
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']
--
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
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']
--
If the pname:pNext list includes a
If the pname:pNext chain includes a
sname:VkDedicatedAllocationBufferCreateInfoNV structure, then that structure
includes an enable controlling whether the buffer will have a dedicated
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']
--
If the pname:pNext list includes a
If the pname:pNext chain includes a
sname:VkDedicatedAllocationImageCreateInfoNV structure, then that structure
includes an enable controlling whether the image will have a dedicated
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']
--
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
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']
--
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
a swapchain handle indicating that the image will be bound to memory from
that swapchain.
@ -2385,7 +2385,9 @@ ifdef::VK_KHR_dedicated_allocation[]
To determine the dedicated allocation requirements of a buffer or image
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.
The sname:VkMemoryDedicatedRequirementsKHR structure is defined as:
@ -2402,7 +2404,9 @@ include::../api/structs/VkMemoryDedicatedRequirementsKHR.txt[]
is required for this resource.
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
following conditions:
@ -2410,10 +2414,10 @@ ifndef::VK_KHR_external_memory[]
* none
endif::VK_KHR_external_memory[]
ifdef::VK_KHR_external_memory[]
* The pname:pNext chain for the call to fname:vkCreateBuffer used to
create the buffer being queried contained an instance of
sname:VkExternalMemoryBufferCreateInfoKHR and any of the handle types
specified in
* The pname:pNext chain of sname:VkBufferCreateInfo for the call to
fname:vkCreateBuffer used to create the buffer being queried contained
an instance of sname:VkExternalMemoryBufferCreateInfoKHR, and any of the
handle types specified in
sname:VkExternalMemoryBufferCreateInfoKHR::pname:handleTypes requires
dedicated allocation, as reported by
flink:vkGetPhysicalDeviceExternalBufferPropertiesKHR in
@ -2425,17 +2429,22 @@ endif::VK_KHR_external_memory[]
In all other cases, pname:requiresDedicatedAllocation must: be set to
ename:VK_FALSE by the implementation whenever a
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
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
sname:VkBufferCreateInfo::pname:flags when pname:buffer was created then the
implementation must: set both pname:prefersDedicatedAllocation and
pname:requiresDedicatedAllocation to ename:VK_FALSE.
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
following conditions:
@ -2443,11 +2452,12 @@ ifndef::VK_KHR_external_memory[]
* none
endif::VK_KHR_external_memory[]
ifdef::VK_KHR_external_memory[]
* The pname:pNext chain for the call to fname:vkCreateImage used to create
the image being queried contained an instance of
sname:VkExternalMemoryImageCreateInfoKHR and any of the handle types
specified in sname:VkExternalMemoryImageCreateInfoKHR::pname:handleTypes
require a dedicated allocation, as reported by
* The pname:pNext chain of sname:VkImageCreateInfo for the call to
fname:vkCreateImage used to create the image being queried contained an
instance of sname:VkExternalMemoryImageCreateInfoKHR, and any of the
handle types specified in
sname:VkExternalMemoryImageCreateInfoKHR::pname:handleTypes requires
dedicated allocation, as reported by
flink:vkGetPhysicalDeviceImageFormatProperties2KHR in
sname:VkExternalImageFormatPropertiesKHR::pname:externalMemoryProperties::pname:externalMemoryFeatures,
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
ename:VK_FALSE by the implementation whenever a
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
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
sname:VkImageCreateInfo::pname:flags when pname:image was created then the
implementation must: set both pname:prefersDedicatedAllocation and
@ -2543,7 +2556,15 @@ ifdef::VK_KHR_dedicated_allocation[]
slink:VkMemoryDedicatedRequirementsKHR::requiresDedicatedAllocation for
pname:image), pname:memory must: have been created with
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[]
ifdef::VK_NV_dedicated_allocation[]
* [[VUID-vkBindBufferMemory-buffer-01038]]
@ -2701,7 +2722,14 @@ ifdef::VK_KHR_dedicated_allocation[]
slink:VkMemoryDedicatedRequirementsKHR::requiresDedicatedAllocation for
pname:image), pname:memory must: have been created with
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[]
ifdef::VK_NV_dedicated_allocation[]
* [[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']
--
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
includes a swapchain handle and image index indicating that the image will
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']
--
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
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
to flink:vkGetPhysicalDeviceSparseImageFormatProperties, with the ability to
return extended information by adding extension structures to its
pname:pNext chain.
return extended information by adding extension structures to the
pname:pNext chain of its pname:pProperties parameter.
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']
--
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
device indices specifying which instance of the resources and memory are
bound.

View File

@ -368,41 +368,29 @@ between queues.
[[synchronization-pipeline-stages-masks]]
If a synchronization command includes a source stage mask, its first
<<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 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
execution of the pipeline stages specified in that mask, and its first
<<synchronization-dependencies-access-scopes, access scope>> only includes
memory access performed by pipeline stages specified in that mask.
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
memory access performed by pipeline stages specified in that mask.
[NOTE]
.Note
====
Implementations may: not support synchronization at every pipeline stage for
every synchronization operation.
If a pipeline stage that an implementation does not support synchronization
for appears in a source stage mask, then it may: substitute that stage for
any logically later stage.
If a pipeline stage that an implementation does not support synchronization
for appears in a destination stage mask, then it may: substitute that stage
for any logically earlier stage.
Including a particular pipeline stage in the first
<<synchronization-dependencies-scopes, synchronization scope>> of a command
implicitly includes <<synchronization-pipeline-stages-order, logically
earlier>> pipeline stages in the synchronization scope.
Similarly, the second <<synchronization-dependencies-scopes, synchronization
scope>> includes <<synchronization-pipeline-stages-order, logically later>>
pipeline stages.
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.
However, note that <<synchronization-dependencies-access-scopes, access
scopes>> are not affected in this way - only the precise stages specified
are considered part of each access scope.
====
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
included in *B~S~* for that command.
.Note
[NOTE]
.Note
====
Logically earlier/later stages are not included when defining the
<<synchronization-dependencies-access-scopes, access scopes>> of a
<<synchronization-memory-barriers,memory barrier>>.
Implementations may: not support synchronization at every pipeline stage for
every synchronization operation.
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]]

View File

@ -474,7 +474,7 @@ include::../api/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
code:ViewportIndex, the viewport transformation uses the viewport
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
output decorated with code:ViewportIndex, the viewport numbered zero is used
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[]
A _vertex processing stage_ may direct each primitive to zero or more
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
vertices of such primitives are undefined.
If the last vertex processing stage does not have an output decorated with
code:ViewportIndex or code:ViewportMask, the viewport numbered zero is used
by the viewport transformation.
code:ViewportIndex or code:ViewportMaskNV, the viewport numbered zero is
used by the viewport transformation.
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
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' ]
# 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' ]
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"
# 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"
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)
# The value to start tagging VU statements at, unless overridden by -nextvu
startVUID = 1507
startVUID = 1510
if __name__ == '__main__':
parser = argparse.ArgumentParser()

View File

@ -305,6 +305,13 @@ class COutputGenerator(OutputGenerator):
(numVal,strVal) = self.enumToValue(elem, True)
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
if (self.isEnumRequired(elem)):
body += " " + name + " = " + strVal + ",\n"

View File

@ -24,7 +24,6 @@
import argparse
import xml.etree.ElementTree as etree
import networkx as nx
def enQuote(key):
return "'" + str(key) + "'"
@ -44,6 +43,78 @@ def pyList(names):
' ]')
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
# of names, or a regular expression.
if __name__ == '__main__':
@ -76,7 +147,7 @@ if __name__ == '__main__':
allExts = set()
khrExts = set()
khxExts = set()
g = nx.DiGraph()
g = DiGraph()
for elem in tree.findall('extensions/extension'):
name = elem.get('name')
@ -95,7 +166,7 @@ if __name__ == '__main__':
deps = elem.get('requires').split(',')
for dep in deps:
g.add_path([name, dep])
g.add_edge(name, dep)
else:
g.add_node(name)
else:
@ -115,7 +186,7 @@ if __name__ == '__main__':
# remains as stable as possible as extensions are added to vk.xml.
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
if len(children) > 0:
@ -142,7 +213,7 @@ if __name__ == '__main__':
# remains as stable as possible as extensions are added to vk.xml.
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
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
#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
#define <name>VK_HEADER_VERSION</name> 57</type>
#define <name>VK_HEADER_VERSION</name> 58</type>
<type category="define">
#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 name="VK_NVX_device_generated_commands" number="87" type="device" author="NVX" contact="Christoph Kubisch @pixeljetstream" supported="vulkan">
<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 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"/>
@ -6629,7 +6629,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
</extension>
<extension name="VK_KHR_dedicated_allocation" number="128" type="device" author="KHR" contact="James Jones @cubanismo" supported="vulkan">
<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 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"/>
@ -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"/>
</require>
</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>
</registry>

View File

@ -43,7 +43,7 @@ extern "C" {
#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
// Version of this file
#define VK_HEADER_VERSION 57
#define VK_HEADER_VERSION 58
#define VK_NULL_HANDLE 0
@ -4827,7 +4827,7 @@ typedef struct VkPhysicalDeviceVariablePointerFeaturesKHR {
#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"
typedef struct VkMemoryDedicatedRequirementsKHR {
@ -5648,7 +5648,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceGroupsKHX(
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkObjectTableNVX)
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"
@ -6440,6 +6440,11 @@ typedef struct VkPipelineCoverageModulationStateCreateInfoNV {
#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
}
#endif