Change log for March 5, 2018 Vulkan 1.1.72 spec update:
* Update release number to 72. Github Issues: * Restructure the repository to put the specification `Makefile` and associated spec source material at the top level, `vk.xml` and associated scripts material in `xml/`, and generated include and source files in `include/vulkan/` and `src/ext_loader/`, respectively (public issue 436). * Add missing bullet point markup to flink:vkCmdCopyImage valid usage statement, so it gets a VUID assigned (public issue 627). * Fix broken links in a couple of extension appendices (public pull request 665). * Add the \<platform> tag to the index in section 4.1 of the registry schema documentation, and add the protect= attribute of \<extension> tags to the comments in `registry.rnc` (public issues 673, 678). * Add missing valid usage statements for sparse image interactions to flink:VkImageCreateInfo (public pull request 675). * Fix improper usage and grammar of "`can: not`" (public pull request 681). * Remove duplicate spec language and NOTE on present layout between the flink:vkAcquireNextImageKHR and flink:vkAcquireNextImage2KHR commands (public pull request 685). * Fix some typos and markup issues (public pull request 689; public issues 642, 667, 687). * Fix typo etext:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FENCE_FD_BIT -> ename:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT in the <<external-semaphore-handle-types-compatibility, External semaphore handle types compatibility>> table (public pull request 691). Internal Issues: * Remove the need for the "`noautovalidity`" attribute on extension structures in `vk.xml`. It is now implied by the "`structextends`" attribute instead (internal issue 942). * Replace uses of "`currently bound`" with "`bound`", since "`currently`" is redundant and distracting, and add a corresponding rule to the style guide (internal issue 993). * Fixed subtle issues with the last updates to flink:vkAcquireNextImageKHR language that had resulted in ambiguities (internal issue 1178). * Make it clear that only one query of a given type is allowed at a time by reordering valid usage statements for flink:vkCmdBeginQuery and flink:vkCmdEndQuery, and removing redundant ones (internal issue 1213). * Swapped OL1 and OL3 in `tessparamUL.svg` to match previous version, and fixed where "`(no edge)`" appears (internal issue 1215). Other Issues: * Fixed a minor problem with the valid usage statement extraction script, and corresponding markup in the spec source. New Extensions: * `VK_AMD_shader_core_properties` * `VK_EXT_descriptor_indexing` * `VK_NV_shader_subgroup_partitioned`
This commit is contained in:
parent
9a8314cd41
commit
26f0bdbf1e
|
@ -8,6 +8,67 @@ public pull requests that have been accepted.
|
|||
|
||||
-----------------------------------------------------
|
||||
|
||||
Change log for March 5, 2018 Vulkan 1.1.72 spec update:
|
||||
|
||||
* Update release number to 72.
|
||||
|
||||
Github Issues:
|
||||
|
||||
* Restructure the repository to put the specification `Makefile` and
|
||||
associated spec source material at the top level, `vk.xml` and
|
||||
associated scripts material in `xml/`, and generated include and source
|
||||
files in `include/vulkan/` and `src/ext_loader/`, respectively (public
|
||||
issue 436).
|
||||
* Add missing bullet point markup to flink:vkCmdCopyImage valid usage
|
||||
statement, so it gets a VUID assigned (public issue 627).
|
||||
* Fix broken links in a couple of extension appendices (public pull
|
||||
request 665).
|
||||
* Add the \<platform> tag to the index in section 4.1 of the registry
|
||||
schema documentation, and add the protect= attribute of \<extension>
|
||||
tags to the comments in `registry.rnc` (public issues 673, 678).
|
||||
* Add missing valid usage statements for sparse image interactions to
|
||||
flink:VkImageCreateInfo (public pull request 675).
|
||||
* Fix improper usage and grammar of "`can: not`" (public pull request
|
||||
681).
|
||||
* Remove duplicate spec language and NOTE on present layout between the
|
||||
flink:vkAcquireNextImageKHR and flink:vkAcquireNextImage2KHR commands
|
||||
(public pull request 685).
|
||||
* Fix some typos and markup issues (public pull request 689; public issues
|
||||
642, 667, 687).
|
||||
* Fix typo etext:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FENCE_FD_BIT ->
|
||||
ename:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT in the
|
||||
<<external-semaphore-handle-types-compatibility, External semaphore
|
||||
handle types compatibility>> table (public pull request 691).
|
||||
|
||||
Internal Issues:
|
||||
|
||||
* Remove the need for the "`noautovalidity`" attribute on extension
|
||||
structures in `vk.xml`. It is now implied by the "`structextends`"
|
||||
attribute instead (internal issue 942).
|
||||
* Replace uses of "`currently bound`" with "`bound`", since "`currently`"
|
||||
is redundant and distracting, and add a corresponding rule to the style
|
||||
guide (internal issue 993).
|
||||
* Fixed subtle issues with the last updates to flink:vkAcquireNextImageKHR
|
||||
language that had resulted in ambiguities (internal issue 1178).
|
||||
* Make it clear that only one query of a given type is allowed at a time
|
||||
by reordering valid usage statements for flink:vkCmdBeginQuery and
|
||||
flink:vkCmdEndQuery, and removing redundant ones (internal issue 1213).
|
||||
* Swapped OL1 and OL3 in `tessparamUL.svg` to match previous version, and
|
||||
fixed where "`(no edge)`" appears (internal issue 1215).
|
||||
|
||||
Other Issues:
|
||||
|
||||
* Fixed a minor problem with the valid usage statement extraction script,
|
||||
and corresponding markup in the spec source.
|
||||
|
||||
New Extensions:
|
||||
|
||||
* `VK_AMD_shader_core_properties`
|
||||
* `VK_EXT_descriptor_indexing`
|
||||
* `VK_NV_shader_subgroup_partitioned`
|
||||
|
||||
-----------------------------------------------------
|
||||
|
||||
Change log for March 16, 2018 Vulkan 1.1.71 spec update:
|
||||
|
||||
* First public update for Vulkan 1.1.
|
||||
|
|
|
@ -0,0 +1,108 @@
|
|||
include::meta/VK_AMD_shader_core_properties.txt[]
|
||||
|
||||
*Last Modified Date*::
|
||||
2018-02-15
|
||||
*IP Status*::
|
||||
No known IP claims.
|
||||
*Contributors*::
|
||||
- Martin Dinkov, AMD
|
||||
- Matthaeus Chajdas, AMD
|
||||
|
||||
This extension exposes shader core properties for a target physical device
|
||||
through the VK_KHR_get_physical_device_properties2 extension.
|
||||
Please refer to the example below for proper usage.
|
||||
|
||||
=== New Object Types
|
||||
|
||||
None.
|
||||
|
||||
=== New Enum Constants
|
||||
|
||||
* Extending ename:VkStructureType:
|
||||
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD
|
||||
|
||||
=== New Enums
|
||||
|
||||
None.
|
||||
|
||||
=== New Structures
|
||||
|
||||
* slink:VkPhysicalDeviceShaderCorePropertiesAMD
|
||||
|
||||
=== New Functions
|
||||
|
||||
None.
|
||||
|
||||
=== Examples
|
||||
|
||||
This example retrieves the shader core properties for a physical device.
|
||||
|
||||
[source,c++]
|
||||
----------------------------------------
|
||||
extern VkInstance instance;
|
||||
|
||||
PFN_vkGetPhysicalDeviceProperties2 pfnVkGetPhysicalDeviceProperties2 =
|
||||
reinterpret_cast<PFN_vkGetPhysicalDeviceProperties2>
|
||||
(vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceProperties2") );
|
||||
|
||||
VkPhysicalDeviceProperties2 general_props;
|
||||
VkPhysicalDeviceShaderCorePropertiesAMD shader_core_properties;
|
||||
|
||||
shader_core_properties.pNext = nullptr;
|
||||
shader_core_properties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD;
|
||||
|
||||
general_props.pNext = &shader_core_properties;
|
||||
general_props.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2;
|
||||
|
||||
// After this call, shader_core_properties has been populated
|
||||
pfnVkGetPhysicalDeviceProperties2(device, &general_props);
|
||||
|
||||
printf("Number of shader engines: %d\n",
|
||||
m_shader_core_properties.shader_engine_count =
|
||||
shader_core_properties.shaderEngineCount;
|
||||
printf("Number of shader arrays: %d\n",
|
||||
m_shader_core_properties.shader_arrays_per_engine_count =
|
||||
shader_core_properties.shaderArraysPerEngineCount;
|
||||
printf("Number of CUs per shader array: %d\n",
|
||||
m_shader_core_properties.compute_units_per_shader_array =
|
||||
shader_core_properties.computeUnitsPerShaderArray;
|
||||
printf("Number of SIMDs per compute unit: %d\n",
|
||||
m_shader_core_properties.simd_per_compute_unit =
|
||||
shader_core_properties.simdPerComputeUnit;
|
||||
printf("Number of wavefront slots in each SIMD: %d\n",
|
||||
m_shader_core_properties.wavefronts_per_simd =
|
||||
shader_core_properties.wavefrontsPerSimd;
|
||||
printf("Number of threads per wavefront: %d\n",
|
||||
m_shader_core_properties.wavefront_size =
|
||||
shader_core_properties.wavefrontSize;
|
||||
printf("Number of physical SGPRs per SIMD: %d\n",
|
||||
m_shader_core_properties.sgprs_per_simd =
|
||||
shader_core_properties.sgprsPerSimd;
|
||||
printf("Minimum number of SGPRs that can be allocated by a wave: %d\n",
|
||||
m_shader_core_properties.min_sgpr_allocation =
|
||||
shader_core_properties.minSgprAllocation;
|
||||
printf("Number of available SGPRs: %d\n",
|
||||
m_shader_core_properties.max_sgpr_allocation =
|
||||
shader_core_properties.maxSgprAllocation;
|
||||
printf("SGPRs are allocated in groups of this size: %d\n",
|
||||
m_shader_core_properties.sgpr_allocation_granularity =
|
||||
shader_core_properties.sgprAllocationGranularity;
|
||||
printf("Number of physical VGPRs per SIMD: %d\n",
|
||||
m_shader_core_properties.vgprs_per_simd =
|
||||
shader_core_properties.vgprsPerSimd;
|
||||
printf("Minimum number of VGPRs that can be allocated by a wave: %d\n",
|
||||
m_shader_core_properties.min_vgpr_allocation =
|
||||
shader_core_properties.minVgprAllocation;
|
||||
printf("Number of available VGPRs: %d\n",
|
||||
m_shader_core_properties.max_vgpr_allocation =
|
||||
shader_core_properties.maxVgprAllocation;
|
||||
printf("VGPRs are allocated in groups of this size: %d\n",
|
||||
m_shader_core_properties.vgpr_allocation_granularity =
|
||||
shader_core_properties.vgprAllocationGranularity;
|
||||
----------------------------------------
|
||||
|
||||
|
||||
=== Version History
|
||||
|
||||
* Revision 1, 2018-02-15 (Martin Dinkov)
|
||||
- Initial draft.
|
|
@ -0,0 +1,100 @@
|
|||
include::meta/VK_EXT_descriptor_indexing.txt[]
|
||||
|
||||
*Status*::
|
||||
Complete
|
||||
*Last Modified Data*::
|
||||
2017-10-02
|
||||
*Contributors*::
|
||||
- Jeff Bolz, NVIDIA
|
||||
- Daniel Rakos, AMD
|
||||
- Slawomir Grajewski, Intel
|
||||
- Tobias Hector, Imagination Technologies
|
||||
|
||||
This extension adds several small features which together enable
|
||||
applications to create large descriptor sets containing substantially all of
|
||||
their resources, and selecting amongst those resources with dynamic
|
||||
(non-uniform) indexes in the shader.
|
||||
There are feature enables and SPIR-V capabilities for non-uniform descriptor
|
||||
indexing in the shader, and non-uniform indexing in the shader requires use
|
||||
of a new code:NonUniformEXT decoration defined in the
|
||||
+SPV_EXT_descriptor_indexing+ SPIR-V extension.
|
||||
There are descriptor set layout binding creation flags enabling several
|
||||
features:
|
||||
|
||||
* Descriptors can be updated after they are bound to a command buffer,
|
||||
such that the execution of the command buffer reflects the most recent
|
||||
update to the descriptors.
|
||||
* Descriptors that are not used by any pending command buffers can be
|
||||
updated, which enables writing new descriptors for frame N+1 while frame
|
||||
N is executing.
|
||||
* Relax the requirement that all descriptors in a binding that is
|
||||
"statically used" must be valid, such that descriptors that are not
|
||||
accessed by a submission need not be valid and can be updated while that
|
||||
submission is executing.
|
||||
* The final binding in a descriptor set layout can have a variable size
|
||||
(and unsized arrays of resources are allowed in the
|
||||
+GL_EXT_nonuniform_qualifier+ and +SPV_EXT_descriptor_indexing+
|
||||
extensions).
|
||||
|
||||
Note that it is valid for multiple descriptor arrays in a shader to use the
|
||||
same set and binding number, as long as they are all compatible with the
|
||||
descriptor type in the pipeline layout.
|
||||
This means a single array binding in the descriptor set can serve multiple
|
||||
texture dimensionalities, or an array of buffer descriptors can be used with
|
||||
multiple different block layouts.
|
||||
|
||||
There are new descriptor set layout and descriptor pool creation flags that
|
||||
are required to opt in to the update-after-bind functionality, and there are
|
||||
separate pname:maxPerStage* and pname:maxDescriptorSet* limits that apply to
|
||||
these descriptor set layouts which may: be much higher than the pre-existing
|
||||
limits.
|
||||
The old limits only count descriptors in non-updateAfterBind descriptor set
|
||||
layouts, and the new limits count descriptors in all descriptor set layouts
|
||||
in the pipeline layout.
|
||||
|
||||
=== New Object Types
|
||||
|
||||
None.
|
||||
|
||||
=== New Enum Constants
|
||||
|
||||
* Extending elink:VkStructureType:
|
||||
** ename:VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT
|
||||
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT
|
||||
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT
|
||||
** ename:VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT
|
||||
** ename:VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT
|
||||
|
||||
* Extending elink:VkDescriptorPoolCreateFlagBits:
|
||||
** ename:VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT
|
||||
|
||||
* Extending elink:VkDescriptorSetLayoutCreateFlagBits:
|
||||
** ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT
|
||||
|
||||
* Extending elink:VkResult:
|
||||
** ename:VK_ERROR_FRAGMENTATION_EXT
|
||||
|
||||
=== New Enums
|
||||
|
||||
* elink:VkDescriptorBindingFlagBitsEXT
|
||||
|
||||
=== New Structures
|
||||
|
||||
* slink:VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
|
||||
* slink:VkPhysicalDeviceDescriptorIndexingFeaturesEXT
|
||||
* slink:VkPhysicalDeviceDescriptorIndexingPropertiesEXT
|
||||
* slink:VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
|
||||
* slink:VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
|
||||
|
||||
=== New Functions
|
||||
|
||||
None.
|
||||
|
||||
=== Issues
|
||||
|
||||
None.
|
||||
|
||||
=== Version History
|
||||
|
||||
* Revision 1, 2017-07-26 (Jeff Bolz)
|
||||
- Internal revisions
|
|
@ -0,0 +1,48 @@
|
|||
include::meta/VK_NV_shader_subgroup_partitioned.txt[]
|
||||
|
||||
*Last Modified Date*::
|
||||
2018-03-17
|
||||
*Contributors*::
|
||||
- Jeff Bolz, NVIDIA
|
||||
|
||||
This extension enables support for a new class of subgroup operations via
|
||||
the
|
||||
https://github.com/KhronosGroup/GLSL/blob/master/extensions/nv/GL_NV_shader_subgroup_partitioned.txt[+GL_NV_shader_subgroup_partitioned+]
|
||||
GLSL extension and
|
||||
https://www.khronos.org/registry/spir-v/extensions/NV/SPV_NV_shader_subgroup_partitioned.html[+SPV_NV_shader_subgroup_partitioned+]
|
||||
SPIR-V extension.
|
||||
Support for these new operations is advertised via the
|
||||
elink:VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV bit.
|
||||
|
||||
This extension requires Vulkan 1.1, for general subgroup support.
|
||||
|
||||
=== New Object Types
|
||||
|
||||
None.
|
||||
|
||||
=== New Enum Constants
|
||||
|
||||
* Extending elink:VkSubgroupFeatureFlagBits:
|
||||
|
||||
** ename:VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV
|
||||
|
||||
=== New Enums
|
||||
|
||||
None.
|
||||
|
||||
=== New Structures
|
||||
|
||||
None.
|
||||
|
||||
=== New Functions
|
||||
|
||||
None.
|
||||
|
||||
=== Issues
|
||||
|
||||
None.
|
||||
|
||||
=== Version History
|
||||
|
||||
* Revision 1, 2018-03-17 (Jeff Bolz)
|
||||
- Internal revisions
|
|
@ -37,8 +37,8 @@ created some additional bindings.
|
|||
Applications normally will include the header `vulkan.h`.
|
||||
In turn, `vulkan.h` always includes the following headers:
|
||||
|
||||
* <<boilerplate-platform-macros,`vk_platform.h`>>, defining platform-specific
|
||||
macros and headers.
|
||||
* <<boilerplate-platform-macros,`vk_platform.h`>>, defining
|
||||
platform-specific macros and headers.
|
||||
* <<boilerplate-vulkan-core,`vulkan_core.h`>>, defining APIs for the
|
||||
Vulkan core and all registered extensions _other_ than window
|
||||
system-specific extensions.
|
||||
|
|
|
@ -280,6 +280,10 @@ ifdef::VK_EXT_depth_range_unrestricted[]
|
|||
include::VK_EXT_depth_range_unrestricted.txt[]
|
||||
endif::VK_EXT_depth_range_unrestricted[]
|
||||
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
include::VK_EXT_descriptor_indexing.txt[]
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
|
||||
ifdef::VK_EXT_direct_mode_display[]
|
||||
include::VK_EXT_direct_mode_display.txt[]
|
||||
endif::VK_EXT_direct_mode_display[]
|
||||
|
@ -403,6 +407,10 @@ ifdef::VK_AMD_shader_ballot[]
|
|||
include::VK_AMD_shader_ballot.txt[]
|
||||
endif::VK_AMD_shader_ballot[]
|
||||
|
||||
ifdef::VK_AMD_shader_core_properties[]
|
||||
include::VK_AMD_shader_core_properties.txt[]
|
||||
endif::VK_AMD_shader_core_properties[]
|
||||
|
||||
ifdef::VK_AMD_shader_explicit_vertex_parameter[]
|
||||
include::VK_AMD_shader_explicit_vertex_parameter.txt[]
|
||||
endif::VK_AMD_shader_explicit_vertex_parameter[]
|
||||
|
|
|
@ -51,8 +51,7 @@ ifdef::VK_VERSION_1_1,VK_KHR_device_group[]
|
|||
* code:DeviceGroup
|
||||
endif::VK_VERSION_1_1,VK_KHR_device_group[]
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_multiview[]
|
||||
* [[spirvenv-capabilities-multiview]]
|
||||
code:MultiView
|
||||
* [[spirvenv-capabilities-multiview]] code:MultiView
|
||||
endif::VK_VERSION_1_1,VK_KHR_multiview[]
|
||||
|
||||
If the implementation supports any of the optional: features described in
|
||||
|
@ -173,11 +172,29 @@ ifdef::VK_VERSION_1_1[]
|
|||
| code:GroupNonUniformShuffleRelative | <<features-features-subgroup-shuffle-relative,VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT>>
|
||||
| code:GroupNonUniformClustered | <<features-features-subgroup-clustered,VK_SUBGROUP_FEATURE_CLUSTERED_BIT>>
|
||||
| code:GroupNonUniformQuad | <<features-features-subgroup-quad,VK_SUBGROUP_FEATURE_QUAD_BIT>>
|
||||
ifdef::VK_NV_shader_subgroup_partitioned[]
|
||||
| code:GroupNonUniformPartitionedNV | <<features-features-subgroup-partitioned,VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV>>
|
||||
endif::VK_NV_shader_subgroup_partitioned[]
|
||||
endif::VK_VERSION_1_1[]
|
||||
ifdef::VK_EXT_post_depth_coverage[]
|
||||
[[spirvenv-capabilities-table-postdepthcoverage]]
|
||||
| code:SampleMaskPostDepthCoverage | `<<VK_EXT_post_depth_coverage>>`
|
||||
endif::VK_EXT_post_depth_coverage[]
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
[[spirvenv-capabilities-table-descriptorindexing]]
|
||||
| code:ShaderNonUniformEXT | `<<VK_EXT_descriptor_indexing>>`
|
||||
| code:RuntimeDescriptorArrayEXT | <<features-features-runtimeDescriptorArray,runtimeDescriptorArray>>
|
||||
| code:InputAttachmentArrayDynamicIndexingEXT | <<features-features-shaderInputAttachmentArrayDynamicIndexing,shaderInputAttachmentArrayDynamicIndexing>>
|
||||
| code:UniformTexelBufferArrayDynamicIndexingEXT | <<features-features-shaderUniformTexelBufferArrayDynamicIndexing,shaderUniformTexelBufferArrayDynamicIndexing>>
|
||||
| code:StorageTexelBufferArrayDynamicIndexingEXT | <<features-features-shaderStorageTexelBufferArrayDynamicIndexing,shaderStorageTexelBufferArrayDynamicIndexing>>
|
||||
| code:UniformBufferArrayNonUniformIndexingEXT | <<features-features-shaderUniformBufferArrayNonUniformIndexing,shaderUniformBufferArrayNonUniformIndexing>>
|
||||
| code:SampledImageArrayNonUniformIndexingEXT | <<features-features-shaderSampledImageArrayNonUniformIndexing,shaderSampledImageArrayNonUniformIndexing>>
|
||||
| code:StorageBufferArrayNonUniformIndexingEXT | <<features-features-shaderStorageBufferArrayNonUniformIndexing,shaderStorageBufferArrayNonUniformIndexing>>
|
||||
| code:StorageImageArrayNonUniformIndexingEXT | <<features-features-shaderStorageImageArrayNonUniformIndexing,shaderStorageImageArrayNonUniformIndexing>>
|
||||
| code:InputAttachmentArrayNonUniformIndexingEXT | <<features-features-shaderInputAttachmentArrayNonUniformIndexing,shaderInputAttachmentArrayNonUniformIndexing>>
|
||||
| code:UniformTexelBufferArrayNonUniformIndexingEXT | <<features-features-shaderUniformTexelBufferArrayNonUniformIndexing,shaderUniformTexelBufferArrayNonUniformIndexing>>
|
||||
| code:StorageTexelBufferArrayNonUniformIndexingEXT | <<features-features-shaderStorageTexelBufferArrayNonUniformIndexing,shaderStorageTexelBufferArrayNonUniformIndexing>>
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
|====
|
||||
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_variable_pointers[]
|
||||
|
@ -294,6 +311,11 @@ The application can: pass a SPIR-V module to flink:vkCreateShaderModule that
|
|||
uses the `SPV_NVX_multiview_per_view_attributes` SPIR-V extension.
|
||||
endif::VK_NVX_multiview_per_view_attributes[]
|
||||
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
The application can: pass a SPIR-V module to flink:vkCreateShaderModule that
|
||||
uses the +SPV_EXT_descriptor_indexing+ SPIR-V extension.
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
|
||||
The application must: not pass a SPIR-V module containing any of the
|
||||
following to flink:vkCreateShaderModule:
|
||||
|
||||
|
@ -407,13 +429,23 @@ ifdef::VK_VERSION_1_1,VK_KHR_16bit_storage[]
|
|||
https://www.khronos.org/registry/spir-v/extensions/KHR/SPV_KHR_16bit_storage.html[`SPV_KHR_16bit_storage`]
|
||||
SPIR-V extension.
|
||||
endif::VK_VERSION_1_1,VK_KHR_16bit_storage[]
|
||||
* code:OpTypeRuntimeArray must: only be used for the last member of an
|
||||
code:OpTypeStruct
|
||||
* code:OpTypeRuntimeArray must: only be used for:
|
||||
** the last member of an code:OpTypeStruct
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_storage_buffer_storage_class[]
|
||||
that is in the code:StorageBuffer storage class decorated as code:Block,
|
||||
or
|
||||
that is in the code:StorageBuffer storage class decorated as
|
||||
code:Block, or
|
||||
endif::VK_VERSION_1_1,VK_KHR_storage_buffer_storage_class[]
|
||||
that is in the code:Uniform storage class decorated as code:BufferBlock.
|
||||
that is in the code:Uniform storage class decorated as
|
||||
code:BufferBlock.
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
** If the code:RuntimeDescriptorArrayEXT capability is supported, an array
|
||||
of variables with storage class code:Uniform,
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_storage_buffer_storage_class[]
|
||||
code:StorageBuffer,
|
||||
endif::VK_VERSION_1_1,VK_KHR_storage_buffer_storage_class[]
|
||||
or code:UniformConstant, or for the outermost dimension of an array of
|
||||
arrays of such variables.
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
* Linkage: See <<interfaces,Shader Interfaces>> for additional linking and
|
||||
validation rules.
|
||||
ifdef::VK_VERSION_1_1[]
|
||||
|
@ -445,6 +477,13 @@ ifdef::VK_VERSION_1_1[]
|
|||
endif::VK_VERSION_1_1[]
|
||||
* Atomic instructions must: declare a scalar 32-bit integer type for the
|
||||
_Result Type_ and the type of the value pointed to by _Pointer_.
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
* If an instruction loads from or stores to a resource (including atomics
|
||||
and image instructions) and the resource descriptor being accessed is
|
||||
not dynamically uniform, then the operand corresponding to that resource
|
||||
(e.g. the pointer or sampled image operand) must: be decorated with
|
||||
code:NonUniformEXT.
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
|
||||
|
||||
[[spirvenv-precision-operation]]
|
||||
|
|
|
@ -698,10 +698,11 @@ match the platform surface properties.
|
|||
|
||||
If the swapchain images no longer match native surface properties, either
|
||||
ename:VK_SUBOPTIMAL_KHR or ename:VK_ERROR_OUT_OF_DATE_KHR must: be returned.
|
||||
If ename:VK_ERROR_OUT_OF_DATE_KHR is returned it specifies that attempts to
|
||||
present the acquired image will fail with ename:VK_ERROR_OUT_OF_DATE_KHR,
|
||||
and applications need to create a new swapchain for the surface to continue
|
||||
presenting.
|
||||
If ename:VK_ERROR_OUT_OF_DATE_KHR is returned, no image is acquired and
|
||||
attempts to present previously acquired images to the swapchain will also
|
||||
fail with ename:VK_ERROR_OUT_OF_DATE_KHR.
|
||||
Applications need to create a new swapchain for the surface to continue
|
||||
presenting if ename:VK_ERROR_OUT_OF_DATE_KHR is returned.
|
||||
|
||||
If device loss occurs (see <<devsandqueues-lost-device,Lost Device>>) before
|
||||
the timeout has expired, fname:vkAcquireNextImageKHR must: return in finite
|
||||
|
@ -727,8 +728,10 @@ It will become signaled when the application can: use the image.
|
|||
.Note
|
||||
====
|
||||
Applications should: not rely on fname:vkAcquireNextImageKHR blocking in
|
||||
order to meter their rendering speed, as the various conditions described
|
||||
above may: lead to the call returning early.
|
||||
order to meter their rendering speed.
|
||||
The implementation may: return from this function immediately regardless of
|
||||
how many presentation requests are queued, and regardless of when queued
|
||||
presentation requests will complete relative to the call.
|
||||
Instead, applications can: use pname:fence to meter their frame generation
|
||||
work to match the presentation rate.
|
||||
====
|
||||
|
|
|
@ -67,7 +67,7 @@ pname:viewportCount)#.
|
|||
.Valid Usage
|
||||
****
|
||||
* [[VUID-vkCmdSetViewportWScalingNV-None-01322]]
|
||||
The currently bound graphics pipeline must: have been created with the
|
||||
The bound graphics pipeline must: have been created with the
|
||||
ename:VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV dynamic state enabled
|
||||
* [[VUID-vkCmdSetViewportWScalingNV-firstViewport-01323]]
|
||||
pname:firstViewport must: be less than
|
||||
|
|
|
@ -220,7 +220,7 @@ the purposes of memory barriers.
|
|||
[[clears-inside]]
|
||||
== Clearing Images Inside A Render Pass Instance
|
||||
|
||||
[open,refpage='vkCmdClearAttachments',desc='Clear regions within currently bound framebuffer attachments',type='protos']
|
||||
[open,refpage='vkCmdClearAttachments',desc='Clear regions within bound framebuffer attachments',type='protos']
|
||||
--
|
||||
|
||||
To clear one or more regions of color and depth/stencil attachments inside a
|
||||
|
|
|
@ -368,6 +368,7 @@ ifndef::VK_KHR_shared_presentable_image[]
|
|||
or ename:VK_IMAGE_LAYOUT_GENERAL
|
||||
endif::VK_KHR_shared_presentable_image[]
|
||||
ifdef::VK_KHR_shared_presentable_image[]
|
||||
* [[VUID-vkCmdCopyImage-srcImageLayout-01917]]
|
||||
pname:srcImageLayout must: be
|
||||
ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
|
||||
ename:VK_IMAGE_LAYOUT_GENERAL, or
|
||||
|
|
|
@ -48,24 +48,24 @@ Storage image loads are supported in all shader stages for image formats
|
|||
which report support for the
|
||||
<<features-formats-properties,ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT>>
|
||||
feature bit via flink:vkGetPhysicalDeviceFormatProperties in
|
||||
slink:VkFormatProperties::pname:linearTilingFeatures (for images with linear tiling)
|
||||
or slink:VkFormatProperties::pname:optimalTilingFeatures (for images with optimal
|
||||
tiling).
|
||||
slink:VkFormatProperties::pname:linearTilingFeatures (for images with linear
|
||||
tiling) or slink:VkFormatProperties::pname:optimalTilingFeatures (for images
|
||||
with optimal tiling).
|
||||
|
||||
Stores to storage images are supported in compute shaders for image formats
|
||||
which report support for the ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
|
||||
feature via flink:vkGetPhysicalDeviceFormatProperties in
|
||||
slink:VkFormatProperties::pname:linearTilingFeatures (for images with linear tiling)
|
||||
or slink:VkFormatProperties::pname:optimalTilingFeatures (for images with optimal
|
||||
tiling).
|
||||
slink:VkFormatProperties::pname:linearTilingFeatures (for images with linear
|
||||
tiling) or slink:VkFormatProperties::pname:optimalTilingFeatures (for images
|
||||
with optimal tiling).
|
||||
|
||||
Atomic operations on storage images are supported in compute shaders for
|
||||
image formats which report support for the
|
||||
<<features-formats-properties,ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT>>
|
||||
feature via flink:vkGetPhysicalDeviceFormatProperties in
|
||||
slink:VkFormatProperties::pname:linearTilingFeatures (for images with linear tiling)
|
||||
or slink:VkFormatProperties::pname:optimalTilingFeatures (for images with optimal
|
||||
tiling).
|
||||
slink:VkFormatProperties::pname:linearTilingFeatures (for images with linear
|
||||
tiling) or slink:VkFormatProperties::pname:optimalTilingFeatures (for images
|
||||
with optimal tiling).
|
||||
|
||||
When the <<features-features-fragmentStoresAndAtomics,
|
||||
pname:fragmentStoresAndAtomics>> feature is enabled, stores and atomic
|
||||
|
@ -108,9 +108,9 @@ Sampled images are supported in all shader stages for image formats which
|
|||
report support for the
|
||||
<<features-formats-properties,ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT>>
|
||||
feature bit via flink:vkGetPhysicalDeviceFormatProperties in
|
||||
slink:VkFormatProperties::pname:linearTilingFeatures (for images with linear tiling)
|
||||
or slink:VkFormatProperties::pname:optimalTilingFeatures (for images with optimal
|
||||
tiling).
|
||||
slink:VkFormatProperties::pname:linearTilingFeatures (for images with linear
|
||||
tiling) or slink:VkFormatProperties::pname:optimalTilingFeatures (for images
|
||||
with optimal tiling).
|
||||
|
||||
The image subresources for a sampled image must: be in the
|
||||
ifdef::VK_KHR_shared_presentable_image[]
|
||||
|
@ -399,6 +399,19 @@ ifdef::VK_KHR_push_descriptor[]
|
|||
total number of elements of all bindings must: be less than or equal to
|
||||
slink:VkPhysicalDevicePushDescriptorPropertiesKHR::pname:maxPushDescriptors
|
||||
endif::VK_KHR_push_descriptor[]
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
* [[VUID-VkDescriptorSetLayoutCreateInfo-flags-03000]]
|
||||
If any binding has the
|
||||
ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT bit set,
|
||||
pname:flags must: include
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT
|
||||
* [[VUID-VkDescriptorSetLayoutCreateInfo-descriptorType-03001]]
|
||||
If any binding has the
|
||||
ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT bit set, then all
|
||||
bindings must: not have pname:descriptorType of
|
||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC or
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
****
|
||||
|
||||
include::../validity/structs/VkDescriptorSetLayoutCreateInfo.txt[]
|
||||
|
@ -417,6 +430,18 @@ ifdef::VK_KHR_push_descriptor[]
|
|||
that descriptor sets must: not be allocated using this layout, and
|
||||
descriptors are instead pushed by flink:vkCmdPushDescriptorSetKHR.
|
||||
endif::VK_KHR_push_descriptor[]
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
* ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT
|
||||
specifies that descriptor sets using this layout must: be allocated from
|
||||
a descriptor pool created with the
|
||||
ename:VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT bit set.
|
||||
Descriptor set layouts created with this bit set have alternate limits
|
||||
for the maximum number of descriptors per-stage and per-pipeline layout.
|
||||
The non-UpdateAfterBind limits only count descriptors in sets created
|
||||
without this flag.
|
||||
The UpdateAfterBind limits count all descriptors, but the limits may: be
|
||||
higher than the non-UpdateAfterBind limits.
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
|
||||
ifndef::VK_KHR_push_descriptor[]
|
||||
[NOTE]
|
||||
|
@ -523,6 +548,190 @@ avoid wasted memory.
|
|||
include::../validity/structs/VkDescriptorSetLayoutBinding.txt[]
|
||||
--
|
||||
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
[open,refpage='VkDescriptorSetLayoutBindingFlagsCreateInfoEXT',desc='Structure specifying creation flags for descriptor set layout bindings',type='structs']
|
||||
--
|
||||
|
||||
If the pname:pNext chain of a slink:VkDescriptorSetLayoutCreateInfo
|
||||
structure includes a sname:VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
|
||||
structure, then that structure includes an array of flags, one for each
|
||||
descriptor set layout binding.
|
||||
|
||||
The slink:VkDescriptorSetLayoutBindingFlagsCreateInfoEXT structure is
|
||||
defined as:
|
||||
|
||||
include::../api/structs/VkDescriptorSetLayoutBindingFlagsCreateInfoEXT.txt[]
|
||||
|
||||
* pname:sType is the type of this structure.
|
||||
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||
* pname:bindingCount is zero or the number of elements in
|
||||
pname:pBindingFlags.
|
||||
* pname:pBindingFlags is a pointer to an array of
|
||||
elink:VkDescriptorBindingFlagsEXT bitfields, one for each descriptor set
|
||||
layout binding.
|
||||
|
||||
If pname:bindingCount is zero or if this structure is not in the pname:pNext
|
||||
chain, the elink:VkDescriptorBindingFlagsEXT for each descriptor set layout
|
||||
binding is considered to be zero.
|
||||
Otherwise, the descriptor set layout binding at
|
||||
slink:VkDescriptorSetLayoutCreateInfo::pname:pBindings[i] uses the flags in
|
||||
pname:pBindingFlags[i].
|
||||
|
||||
.Valid Usage
|
||||
****
|
||||
* [[VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-bindingCount-03002]]
|
||||
If pname:bindingCount is not zero, pname:bindingCount must: equal
|
||||
slink:VkDescriptorSetLayoutCreateInfo::pname:bindingCount
|
||||
ifdef::VK_KHR_push_descriptor[]
|
||||
* [[VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-flags-03003]]
|
||||
If slink:VkDescriptorSetLayoutCreateInfo::pname:flags includes
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR, then all
|
||||
elements of pname:pBindingFlags must: not include
|
||||
ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT,
|
||||
ename:VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT, or
|
||||
ename:VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT
|
||||
endif::VK_KHR_push_descriptor[]
|
||||
* [[VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-pBindingFlags-03004]]
|
||||
If an element of pname:pBindingFlags includes
|
||||
ename:VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT, then all
|
||||
other elements of slink:VkDescriptorSetLayoutCreateInfo::pname:pBindings
|
||||
must: have a smaller value of pname:binding
|
||||
* [[VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingUniformBufferUpdateAfterBind-03005]]
|
||||
If
|
||||
slink:VkPhysicalDeviceDescriptorIndexingFeaturesEXT::pname:descriptorBindingUniformBufferUpdateAfterBind
|
||||
is not enabled, all bindings with descriptor type
|
||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER must: not use
|
||||
ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT
|
||||
* [[VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingSampledImageUpdateAfterBind-03006]]
|
||||
If
|
||||
slink:VkPhysicalDeviceDescriptorIndexingFeaturesEXT::pname:descriptorBindingSampledImageUpdateAfterBind
|
||||
is not enabled, all bindings with descriptor type
|
||||
ename:VK_DESCRIPTOR_TYPE_SAMPLER,
|
||||
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, or
|
||||
ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE must: not use
|
||||
ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT
|
||||
* [[VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingStorageImageUpdateAfterBind-03007]]
|
||||
If
|
||||
slink:VkPhysicalDeviceDescriptorIndexingFeaturesEXT::pname:descriptorBindingStorageImageUpdateAfterBind
|
||||
is not enabled, all bindings with descriptor type
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE must: not use
|
||||
ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT
|
||||
* [[VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingStorageBufferUpdateAfterBind-03008]]
|
||||
If
|
||||
slink:VkPhysicalDeviceDescriptorIndexingFeaturesEXT::pname:descriptorBindingStorageBufferUpdateAfterBind
|
||||
is not enabled, all bindings with descriptor type
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER must: not use
|
||||
ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT
|
||||
* [[VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingUniformTexelBufferUpdateAfterBind-03009]]
|
||||
If
|
||||
slink:VkPhysicalDeviceDescriptorIndexingFeaturesEXT::pname:descriptorBindingUniformTexelBufferUpdateAfterBind
|
||||
is not enabled, all bindings with descriptor type
|
||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER must: not use
|
||||
ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT
|
||||
* [[VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingStorageTexelBufferUpdateAfterBind-03010]]
|
||||
If
|
||||
slink:VkPhysicalDeviceDescriptorIndexingFeaturesEXT::pname:descriptorBindingStorageTexelBufferUpdateAfterBind
|
||||
is not enabled, all bindings with descriptor type
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER must: not use
|
||||
ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT
|
||||
* [[VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-None-03011]]
|
||||
All bindings with descriptor type
|
||||
ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT,
|
||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, or
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC must: not use
|
||||
ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT
|
||||
* [[VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingUpdateUnusedWhilePending-03012]]
|
||||
If
|
||||
slink:VkPhysicalDeviceDescriptorIndexingFeaturesEXT::pname:descriptorBindingUpdateUnusedWhilePending
|
||||
is not enabled, all elements of pname:pBindingFlags must: not include
|
||||
ename:VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT
|
||||
* [[VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingPartiallyBound-03013]]
|
||||
If
|
||||
slink:VkPhysicalDeviceDescriptorIndexingFeaturesEXT::pname:descriptorBindingPartiallyBound
|
||||
is not enabled, all elements of pname:pBindingFlags must: not include
|
||||
ename:VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT
|
||||
* [[VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingVariableDescriptorCount-03014]]
|
||||
If
|
||||
slink:VkPhysicalDeviceDescriptorIndexingFeaturesEXT::pname:descriptorBindingVariableDescriptorCount
|
||||
is not enabled, all elements of pname:pBindingFlags must: not include
|
||||
ename:VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT
|
||||
* [[VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-pBindingFlags-03015]]
|
||||
If an element of pname:pBindingFlags includes
|
||||
ename:VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT, that
|
||||
element's pname:descriptorType must: not be
|
||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC or
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
|
||||
****
|
||||
|
||||
include::../validity/structs/VkDescriptorSetLayoutBindingFlagsCreateInfoEXT.txt[]
|
||||
--
|
||||
|
||||
[open,refpage='VkDescriptorBindingFlagBitsEXT',desc='Bitmask specifying descriptor set layout binding properties',type='enums']
|
||||
--
|
||||
|
||||
Bits which can: be set in each element of
|
||||
slink:VkDescriptorSetLayoutBindingFlagsCreateInfoEXT::pname:pBindingFlags to
|
||||
specify options for the corresponding descriptor set layout binding are:
|
||||
|
||||
include::../api/enums/VkDescriptorBindingFlagBitsEXT.txt[]
|
||||
|
||||
* ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT indicates that if
|
||||
descriptors in this binding are updated between when the descriptor set
|
||||
is bound in a command buffer and when that command buffer is submitted
|
||||
to a queue, then the submission will use the most recently set
|
||||
descriptors for this binding and the updates do not invalidate the
|
||||
command buffer.
|
||||
Descriptor bindings created with this flag are also partially exempt
|
||||
from the external synchronization requirement in
|
||||
ifdef::VK_KHR_descriptor_update_template[]
|
||||
flink:vkUpdateDescriptorSetWithTemplateKHR and
|
||||
endif::VK_KHR_descriptor_update_template[]
|
||||
flink:vkUpdateDescriptorSets.
|
||||
They can: be updated concurrently with the set being bound to a command
|
||||
buffer in another thread, but not concurrently with the set being reset
|
||||
or freed.
|
||||
* ename:VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT indicates that
|
||||
descriptors in this binding that are not _dynamically used_ need not
|
||||
contain valid descriptors at the time the descriptors are consumed.
|
||||
A descriptor is dynamically used if any shader invocation executes an
|
||||
instruction that performs any memory access using the descriptor.
|
||||
* ename:VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT
|
||||
indicates that descriptors in this binding can: be updated after a
|
||||
command buffer has bound this descriptor set, or while a command buffer
|
||||
that uses this descriptor set is pending execution, as long as the
|
||||
descriptors that are updated are not used by those command buffers.
|
||||
If ename:VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT is also set, then
|
||||
descriptors can: be updated as long as they are not dynamically used by
|
||||
any shader invocations.
|
||||
If ename:VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT is not set, then
|
||||
descriptors can: be updated as long as they are not statically used by
|
||||
any shader invocations.
|
||||
* ename:VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT indicates
|
||||
that this descriptor binding has a variable size that will be specified
|
||||
when a descriptor set is allocated using this layout.
|
||||
The value of pname:descriptorCount is treated as an upper bound on the
|
||||
size of the binding.
|
||||
This must: only be used for the last binding in the descriptor set
|
||||
layout (i.e. the binding with the largest value of pname:binding).
|
||||
For the purposes of counting against limits such as
|
||||
pname:maxDescriptorSet* and pname:maxPerStageDescriptor*, the full value
|
||||
of pname:descriptorCount is counted.
|
||||
|
||||
[NOTE]
|
||||
.Note
|
||||
====
|
||||
Note that while ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT and
|
||||
ename:VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT both involve
|
||||
updates to descriptor sets after they are bound,
|
||||
ename:VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT is a weaker
|
||||
requirement since it is only about descriptors that are not used, whereas
|
||||
ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT requires the
|
||||
implementation to observe updates to descriptors that are used.
|
||||
====
|
||||
|
||||
--
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_maintenance3[]
|
||||
|
||||
[open,refpage='vkGetDescriptorSetLayoutSupport',desc='Query whether a descriptor set layout can be created',type='protos']
|
||||
|
@ -609,6 +818,45 @@ include::../validity/structs/VkDescriptorSetLayoutSupport.txt[]
|
|||
|
||||
endif::VK_VERSION_1_1,VK_KHR_maintenance3[]
|
||||
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
|
||||
[open,refpage='VkDescriptorSetVariableDescriptorCountLayoutSupportEXT',desc='Structure returning information about whether a descriptor set layout can be supported',type='structs']
|
||||
--
|
||||
|
||||
If the pname:pNext chain of a slink:VkDescriptorSetLayoutSupport structure
|
||||
includes a sname:VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
|
||||
structure, then that structure returns additional information about whether
|
||||
the descriptor set layout is supported.
|
||||
|
||||
include::../api/structs/VkDescriptorSetVariableDescriptorCountLayoutSupportEXT.txt[]
|
||||
|
||||
* pname:sType is the type of this structure.
|
||||
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||
* pname:maxVariableDescriptorCount indicates the maximum number of
|
||||
descriptors supported in the highest numbered binding of the layout, if
|
||||
that binding is variable-sized.
|
||||
|
||||
If the create info includes a variable-sized descriptor, then
|
||||
pname:supported is determined assuming the requested size of the
|
||||
variable-sized descriptor, and pname:maxVariableDescriptorCount is set to
|
||||
the maximum size of that descriptor that can: be successfully created (which
|
||||
is greater than or equal to the requested size passed in).
|
||||
If the create info does not include a variable-sized descriptor or if the
|
||||
slink:VkPhysicalDeviceDescriptorIndexingFeaturesEXT::pname:descriptorBindingVariableDescriptorCount
|
||||
feature is not enabled, then pname:maxVariableDescriptorCount is set to
|
||||
zero.
|
||||
For the purposes of this command, a variable-sized descriptor binding with a
|
||||
pname:descriptorCount of zero is treated as if the pname:descriptorCount is
|
||||
one, and thus the binding is not ignored and the maximum descriptor count
|
||||
will be returned.
|
||||
If the layout is not supported, then the value written to
|
||||
pname:maxVariableDescriptorCount is undefined.
|
||||
|
||||
include::../validity/structs/VkDescriptorSetVariableDescriptorCountLayoutSupportEXT.txt[]
|
||||
--
|
||||
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
|
||||
The following examples show a shader snippet using two descriptor sets, and
|
||||
application code that creates corresponding descriptor set layouts.
|
||||
|
||||
|
@ -855,6 +1103,7 @@ pipelines that is expected to outperform memory-backed resource updates.
|
|||
* [[VUID-VkPipelineLayoutCreateInfo-setLayoutCount-00286]]
|
||||
pname:setLayoutCount must: be less than or equal to
|
||||
sname:VkPhysicalDeviceLimits::pname:maxBoundDescriptorSets
|
||||
ifndef::VK_EXT_descriptor_indexing[]
|
||||
* [[VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00287]]
|
||||
The total number of descriptors of the type
|
||||
ename:VK_DESCRIPTOR_TYPE_SAMPLER and
|
||||
|
@ -949,6 +1198,237 @@ pipelines that is expected to outperform memory-backed resource updates.
|
|||
stages and across all elements of pname:pSetLayouts must: be less than
|
||||
or equal to
|
||||
sname:VkPhysicalDeviceLimits::pname:maxDescriptorSetInputAttachments
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
* [[VUID-VkPipelineLayoutCreateInfo-descriptorType-03016]]
|
||||
The total number of descriptors in descriptor set layouts created
|
||||
without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set with a pname:descriptorType of ename:VK_DESCRIPTOR_TYPE_SAMPLER and
|
||||
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER accessible to any given
|
||||
shader stage across all elements of pname:pSetLayouts must: be less than
|
||||
or equal to
|
||||
sname:VkPhysicalDeviceLimits::pname:maxPerStageDescriptorSamplers
|
||||
* [[VUID-VkPipelineLayoutCreateInfo-descriptorType-03017]]
|
||||
The total number of descriptors in descriptor set layouts created
|
||||
without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set with a pname:descriptorType of
|
||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER and
|
||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC accessible to any given
|
||||
shader stage across all elements of pname:pSetLayouts must: be less than
|
||||
or equal to
|
||||
sname:VkPhysicalDeviceLimits::pname:maxPerStageDescriptorUniformBuffers
|
||||
* [[VUID-VkPipelineLayoutCreateInfo-descriptorType-03018]]
|
||||
The total number of descriptors in descriptor set layouts created
|
||||
without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set with a pname:descriptorType of
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER and
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC accessible to any given
|
||||
shader stage across all elements of pname:pSetLayouts must: be less than
|
||||
or equal to
|
||||
sname:VkPhysicalDeviceLimits::pname:maxPerStageDescriptorStorageBuffers
|
||||
* [[VUID-VkPipelineLayoutCreateInfo-descriptorType-03019]]
|
||||
The total number of descriptors in descriptor set layouts created
|
||||
without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set with a pname:descriptorType of
|
||||
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
|
||||
ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, and
|
||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER accessible to any given
|
||||
shader stage across all elements of pname:pSetLayouts must: be less than
|
||||
or equal to
|
||||
sname:VkPhysicalDeviceLimits::pname:maxPerStageDescriptorSampledImages
|
||||
* [[VUID-VkPipelineLayoutCreateInfo-descriptorType-03020]]
|
||||
The total number of descriptors in descriptor set layouts created
|
||||
without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set with a pname:descriptorType of
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, and
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER accessible to any given
|
||||
shader stage across all elements of pname:pSetLayouts must: be less than
|
||||
or equal to
|
||||
sname:VkPhysicalDeviceLimits::pname:maxPerStageDescriptorStorageImages
|
||||
* [[VUID-VkPipelineLayoutCreateInfo-descriptorType-03021]]
|
||||
The total number of descriptors in descriptor set layouts created
|
||||
without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set with a pname:descriptorType of
|
||||
ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT accessible to any given shader
|
||||
stage across all elements of pname:pSetLayouts must: be less than or
|
||||
equal to
|
||||
sname:VkPhysicalDeviceLimits::pname:maxPerStageDescriptorInputAttachments
|
||||
* [[VUID-VkPipelineLayoutCreateInfo-descriptorType-03022]]
|
||||
The total number of descriptors with a pname:descriptorType of
|
||||
ename:VK_DESCRIPTOR_TYPE_SAMPLER and
|
||||
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER accessible to any given
|
||||
shader stage across all elements of pname:pSetLayouts must: be less than
|
||||
or equal to
|
||||
sname:VkPhysicalDeviceDescriptorIndexingPropertiesEXT::pname:maxPerStageDescriptorUpdateAfterBindSamplers
|
||||
* [[VUID-VkPipelineLayoutCreateInfo-descriptorType-03023]]
|
||||
The total number of descriptors with a pname:descriptorType of
|
||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER and
|
||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC accessible to any given
|
||||
shader stage across all elements of pname:pSetLayouts must: be less than
|
||||
or equal to
|
||||
sname:VkPhysicalDeviceDescriptorIndexingPropertiesEXT::pname:maxPerStageDescriptorUpdateAfterBindUniformBuffers
|
||||
* [[VUID-VkPipelineLayoutCreateInfo-descriptorType-03024]]
|
||||
The total number of descriptors with a pname:descriptorType of
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER and
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC accessible to any given
|
||||
shader stage across all elements of pname:pSetLayouts must: be less than
|
||||
or equal to
|
||||
sname:VkPhysicalDeviceDescriptorIndexingPropertiesEXT::pname:maxPerStageDescriptorUpdateAfterBindStorageBuffers
|
||||
* [[VUID-VkPipelineLayoutCreateInfo-descriptorType-03025]]
|
||||
The total number of descriptors with a pname:descriptorType of
|
||||
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
|
||||
ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, and
|
||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER accessible to any given
|
||||
shader stage across all elements of pname:pSetLayouts must: be less than
|
||||
or equal to
|
||||
sname:VkPhysicalDeviceDescriptorIndexingPropertiesEXT::pname:maxPerStageDescriptorUpdateAfterBindSampledImages
|
||||
* [[VUID-VkPipelineLayoutCreateInfo-descriptorType-03026]]
|
||||
The total number of descriptors with a pname:descriptorType of
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, and
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER accessible to any given
|
||||
shader stage across all elements of pname:pSetLayouts must: be less than
|
||||
or equal to
|
||||
sname:VkPhysicalDeviceDescriptorIndexingPropertiesEXT::pname:maxPerStageDescriptorUpdateAfterBindStorageImages
|
||||
* [[VUID-VkPipelineLayoutCreateInfo-descriptorType-03027]]
|
||||
The total number of descriptors with a pname:descriptorType of
|
||||
ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT accessible to any given shader
|
||||
stage across all elements of pname:pSetLayouts must: be less than or
|
||||
equal to
|
||||
sname:VkPhysicalDeviceDescriptorIndexingPropertiesEXT::pname:maxPerStageDescriptorUpdateAfterBindInputAttachments
|
||||
* [[VUID-VkPipelineLayoutCreateInfo-descriptorType-03028]]
|
||||
The total number of descriptors in descriptor set layouts created
|
||||
without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set with a pname:descriptorType of ename:VK_DESCRIPTOR_TYPE_SAMPLER and
|
||||
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER accessible across all
|
||||
shader stages and across all elements of pname:pSetLayouts must: be less
|
||||
than or equal to
|
||||
sname:VkPhysicalDeviceLimits::pname:maxDescriptorSetSamplers
|
||||
* [[VUID-VkPipelineLayoutCreateInfo-descriptorType-03029]]
|
||||
The total number of descriptors in descriptor set layouts created
|
||||
without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set with a pname:descriptorType of
|
||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER accessible across all shader
|
||||
stagess and and across all elements of pname:pSetLayouts must: be less
|
||||
than or equal to
|
||||
sname:VkPhysicalDeviceLimits::pname:maxDescriptorSetUniformBuffers
|
||||
* [[VUID-VkPipelineLayoutCreateInfo-descriptorType-03030]]
|
||||
The total number of descriptors in descriptor set layouts created
|
||||
without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set with a pname:descriptorType of
|
||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC accessible across all
|
||||
shader stages and across all elements of pname:pSetLayouts must: be less
|
||||
than or equal to
|
||||
sname:VkPhysicalDeviceLimits::pname:maxDescriptorSetUniformBuffersDynamic
|
||||
* [[VUID-VkPipelineLayoutCreateInfo-descriptorType-03031]]
|
||||
The total number of descriptors in descriptor set layouts created
|
||||
without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set with a pname:descriptorType of
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER accessible across all shader
|
||||
stages and across all elements of pname:pSetLayouts must: be less than
|
||||
or equal to
|
||||
sname:VkPhysicalDeviceLimits::pname:maxDescriptorSetStorageBuffers
|
||||
* [[VUID-VkPipelineLayoutCreateInfo-descriptorType-03032]]
|
||||
The total number of descriptors in descriptor set layouts created
|
||||
without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set with a pname:descriptorType of
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC accessible across all
|
||||
shader stages and across all elements of pname:pSetLayouts must: be less
|
||||
than or equal to
|
||||
sname:VkPhysicalDeviceLimits::pname:maxDescriptorSetStorageBuffersDynamic
|
||||
* [[VUID-VkPipelineLayoutCreateInfo-descriptorType-03033]]
|
||||
The total number of descriptors in descriptor set layouts created
|
||||
without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set with a pname:descriptorType of
|
||||
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
|
||||
ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, and
|
||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER accessible across all
|
||||
shader stages and across all elements of pname:pSetLayouts must: be less
|
||||
than or equal to
|
||||
sname:VkPhysicalDeviceLimits::pname:maxDescriptorSetSampledImages
|
||||
* [[VUID-VkPipelineLayoutCreateInfo-descriptorType-03034]]
|
||||
The total number of descriptors in descriptor set layouts created
|
||||
without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set with a pname:descriptorType of
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, and
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER accessible across all
|
||||
shader stages and across all elements of pname:pSetLayouts must: be less
|
||||
than or equal to
|
||||
sname:VkPhysicalDeviceLimits::pname:maxDescriptorSetStorageImages
|
||||
* [[VUID-VkPipelineLayoutCreateInfo-descriptorType-03035]]
|
||||
The total number of descriptors in descriptor set layouts created
|
||||
without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set with a pname:descriptorType of
|
||||
ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT accessible across all shader
|
||||
stages and across all elements of pname:pSetLayouts must: be less than
|
||||
or equal to
|
||||
sname:VkPhysicalDeviceLimits::pname:maxDescriptorSetInputAttachments
|
||||
* [[VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03036]]
|
||||
The total number of descriptors of the type
|
||||
ename:VK_DESCRIPTOR_TYPE_SAMPLER and
|
||||
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER accessible across all
|
||||
shader stages and across all elements of pname:pSetLayouts must: be less
|
||||
than or equal to
|
||||
sname:VkPhysicalDeviceDescriptorIndexingPropertiesEXT::pname:maxDescriptorSetUpdateAfterBindSamplers
|
||||
* [[VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03037]]
|
||||
The total number of descriptors of the type
|
||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER accessible across all shader
|
||||
stagess and and across all elements of pname:pSetLayouts must: be less
|
||||
than or equal to
|
||||
sname:VkPhysicalDeviceDescriptorIndexingPropertiesEXT::pname:maxDescriptorSetUpdateAfterBindUniformBuffers
|
||||
* [[VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03038]]
|
||||
The total number of descriptors of the type
|
||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC accessible across all
|
||||
shader stages and across all elements of pname:pSetLayouts must: be less
|
||||
than or equal to
|
||||
sname:VkPhysicalDeviceDescriptorIndexingPropertiesEXT::pname:maxDescriptorSetUpdateAfterBindUniformBuffersDynamic
|
||||
* [[VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03039]]
|
||||
The total number of descriptors of the type
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER accessible across all shader
|
||||
stages and across all elements of pname:pSetLayouts must: be less than
|
||||
or equal to
|
||||
sname:VkPhysicalDeviceDescriptorIndexingPropertiesEXT::pname:maxDescriptorSetUpdateAfterBindStorageBuffers
|
||||
* [[VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03040]]
|
||||
The total number of descriptors of the type
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC accessible across all
|
||||
shader stages and across all elements of pname:pSetLayouts must: be less
|
||||
than or equal to
|
||||
sname:VkPhysicalDeviceDescriptorIndexingPropertiesEXT::pname:maxDescriptorSetUpdateAfterBindStorageBuffersDynamic
|
||||
* [[VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03041]]
|
||||
The total number of descriptors of the type
|
||||
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
|
||||
ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, and
|
||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER accessible across all
|
||||
shader stages and across all elements of pname:pSetLayouts must: be less
|
||||
than or equal to
|
||||
sname:VkPhysicalDeviceDescriptorIndexingPropertiesEXT::pname:maxDescriptorSetUpdateAfterBindSampledImages
|
||||
* [[VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03042]]
|
||||
The total number of descriptors of the type
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, and
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER accessible across all
|
||||
shader stages and across all elements of pname:pSetLayouts must: be less
|
||||
than or equal to
|
||||
sname:VkPhysicalDeviceDescriptorIndexingPropertiesEXT::pname:maxDescriptorSetUpdateAfterBindStorageImages
|
||||
* [[VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03043]]
|
||||
The total number of descriptors of the type
|
||||
ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT accessible across all shader
|
||||
stages and across all elements of pname:pSetLayouts must: be less than
|
||||
or equal to
|
||||
sname:VkPhysicalDeviceDescriptorIndexingPropertiesEXT::pname:maxDescriptorSetUpdateAfterBindInputAttachments
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
* [[VUID-VkPipelineLayoutCreateInfo-pPushConstantRanges-00292]]
|
||||
Any two elements of pname:pPushConstantRanges must: not include the same
|
||||
stage in pname:stageFlags
|
||||
|
@ -1060,20 +1540,44 @@ that can: be used in any pipeline stage as described in
|
|||
|====
|
||||
| Total Resources Available | Resource Types
|
||||
.2+<.^| pname:maxDescriptorSetSamplers
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
or pname:maxDescriptorSetUpdateAfterBindSamplers
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
| sampler | combined image sampler
|
||||
.3+<.^| pname:maxDescriptorSetSampledImages
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
or pname:maxDescriptorSetUpdateAfterBindSampledImages
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
| sampled image | combined image sampler | uniform texel buffer
|
||||
.2+<.^| pname:maxDescriptorSetStorageImages
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
or pname:maxDescriptorSetUpdateAfterBindStorageImages
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
| storage image | storage texel buffer
|
||||
.2+<.^| pname:maxDescriptorSetUniformBuffers
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
or pname:maxDescriptorSetUpdateAfterBindUniformBuffers
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
| uniform buffer | uniform buffer dynamic
|
||||
| pname:maxDescriptorSetUniformBuffersDynamic
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
or pname:maxDescriptorSetUpdateAfterBindUniformBuffersDynamic
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
| uniform buffer dynamic
|
||||
.2+<.^| pname:maxDescriptorSetStorageBuffers
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
or pname:maxDescriptorSetUpdateAfterBindStorageBuffers
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
| storage buffer | storage buffer dynamic
|
||||
| pname:maxDescriptorSetStorageBuffersDynamic
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
or pname:maxDescriptorSetUpdateAfterBindStorageBuffersDynamic
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
| storage buffer dynamic
|
||||
| pname:maxDescriptorSetInputAttachments
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
or pname:maxDescriptorSetUpdateAfterBindInputAttachments
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
| input attachment
|
||||
|====
|
||||
|
||||
|
@ -1288,6 +1792,16 @@ If an allocation failure occurs due to fragmentation, an application can:
|
|||
create an additional descriptor pool to perform further descriptor set
|
||||
allocations.
|
||||
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
If pname:flags has the
|
||||
ename:VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT bit set,
|
||||
descriptor pool creation may: fail with the error
|
||||
ename:VK_ERROR_FRAGMENTATION_EXT if the total number of descriptors across
|
||||
all pools (including this one) created with this bit set exceeds
|
||||
pname:maxUpdateAfterBindDescriptorsInAllPools, or if fragmentation of the
|
||||
underlying hardware resources occurs.
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
|
||||
.Valid Usage
|
||||
****
|
||||
* [[VUID-VkDescriptorPoolCreateInfo-maxSets-00301]]
|
||||
|
@ -1313,6 +1827,15 @@ include::../api/enums/VkDescriptorPoolCreateFlagBits.txt[]
|
|||
individually freed back to the pool, i.e. only
|
||||
flink:vkAllocateDescriptorSets and flink:vkResetDescriptorPool are
|
||||
allowed.
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
* ename:VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT specifies that
|
||||
descriptor sets allocated from this pool can: include bindings with the
|
||||
ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT bit set.
|
||||
It is valid to allocate descriptor sets that have bindings that don't
|
||||
set the ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT bit from a
|
||||
pool that has ename:VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT
|
||||
set.
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
|
||||
--
|
||||
|
||||
|
@ -1407,13 +1930,24 @@ When a descriptor set is allocated, the initial state is largely
|
|||
uninitialized and all descriptors are undefined.
|
||||
However, the descriptor set can: be bound in a command buffer without
|
||||
causing errors or exceptions.
|
||||
All entries that are statically used by a pipeline in a drawing or
|
||||
dispatching command must: have been populated before the descriptor set is
|
||||
bound for use by that command.
|
||||
Entries that are not statically used by a pipeline can: have uninitialized
|
||||
descriptors or descriptors of resources that have been destroyed, and
|
||||
executing a draw or dispatch with such a descriptor set bound does not cause
|
||||
undefined behavior.
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
For descriptor set bindings created with the
|
||||
ename:VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT bit set, all descriptors
|
||||
in that binding that are dynamically used must: have been populated before
|
||||
the descriptor set is <<descriptorsets-binding,consumed>>.
|
||||
For descriptor set bindings created without the
|
||||
ename:VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT bit set, all descriptors
|
||||
in that binding that are statically used must: have been populated before
|
||||
the descriptor set is <<descriptorsets-binding,consumed>>.
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
ifndef::VK_EXT_descriptor_indexing[]
|
||||
All descriptors that are statically used must: have been populated before
|
||||
the descriptor set is consumed.
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
Entries that are not used by a pipeline can: have uninitialized descriptors
|
||||
or descriptors of resources that have been destroyed, and executing a draw
|
||||
or dispatch with such a descriptor set bound does not cause undefined
|
||||
behavior.
|
||||
This means applications need not populate unused entries with dummy
|
||||
descriptors.
|
||||
|
||||
|
@ -1509,11 +2043,66 @@ ifdef::VK_KHR_push_descriptor[]
|
|||
Each element of pname:pSetLayouts must: not have been created with
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR set
|
||||
endif::VK_KHR_push_descriptor[]
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
* [[VUID-VkDescriptorSetAllocateInfo-pSetLayouts-03044]]
|
||||
If any element of pname:pSetLayouts was created with the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set, pname:descriptorPool must: have been created with the
|
||||
ename:VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT flag set
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
****
|
||||
|
||||
include::../validity/structs/VkDescriptorSetAllocateInfo.txt[]
|
||||
--
|
||||
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
[open,refpage='VkDescriptorSetVariableDescriptorCountAllocateInfoEXT',desc='Structure specifying additional allocation parameters for descriptor sets',type='structs']
|
||||
--
|
||||
|
||||
If the pname:pNext chain of a slink:VkDescriptorSetAllocateInfo structure
|
||||
includes a sname:VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
|
||||
structure, then that structure includes an array of descriptor counts for
|
||||
variable descriptor count bindings, one for each descriptor set being
|
||||
allocated.
|
||||
|
||||
The sname:VkDescriptorSetVariableDescriptorCountAllocateInfoEXT structure is
|
||||
defined as:
|
||||
|
||||
include::../api/structs/VkDescriptorSetVariableDescriptorCountAllocateInfoEXT.txt[]
|
||||
|
||||
* pname:sType is the type of this structure.
|
||||
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||
* pname:descriptorSetCount is zero or the number of elements in
|
||||
pname:pDescriptorCounts.
|
||||
* pname:pDescriptorCounts is an array of descriptor counts, with each
|
||||
member specifying the number of descriptors in a variable descriptor
|
||||
count binding in the corresponding descriptor set being allocated.
|
||||
|
||||
If pname:descriptorSetCount is zero or this structure is not included in the
|
||||
pname:pNext chain, then the variable lengths are considered to be zero.
|
||||
Otherwise, pname:pDescriptorCounts[i] is the number of descriptors in the
|
||||
variable count descriptor binding in the corresponding descriptor set
|
||||
layout.
|
||||
If slink:VkDescriptorSetAllocateInfo::pname:pSetLayouts[i] does not include
|
||||
a variable count descriptor binding, then pname:pDescriptorCounts[i] is
|
||||
ignored.
|
||||
|
||||
.Valid Usage
|
||||
****
|
||||
* [[VUID-VkDescriptorSetVariableDescriptorCountAllocateInfoEXT-descriptorSetCount-03045]]
|
||||
If pname:descriptorSetCount is not zero, pname:descriptorSetCount must:
|
||||
equal slink:VkDescriptorSetAllocateInfo::pname:descriptorSetCount
|
||||
* [[VUID-VkDescriptorSetVariableDescriptorCountAllocateInfoEXT-pSetLayouts-03046]]
|
||||
If slink:VkDescriptorSetAllocateInfo::pname:pSetLayouts[i] has a
|
||||
variable descriptor count binding, then pname:pDescriptorCounts[i] must:
|
||||
be less than or equal to the descriptor count specified for that binding
|
||||
when the descriptor set layout was created.
|
||||
****
|
||||
|
||||
include::../validity/structs/VkDescriptorSetVariableDescriptorCountAllocateInfoEXT.txt[]
|
||||
--
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
|
||||
[open,refpage='vkFreeDescriptorSets',desc='Free one or more descriptor sets',type='protos']
|
||||
--
|
||||
|
||||
|
@ -1627,16 +2216,31 @@ descriptors between sets.
|
|||
If the pname:dstSet member of any element of pname:pDescriptorWrites or
|
||||
pname:pDescriptorCopies is bound, accessed, or modified by any command that
|
||||
was recorded to a command buffer which is currently in the
|
||||
<<commandbuffers-lifecycle, recording or executable state>>, that command
|
||||
buffer becomes <<commandbuffers-lifecycle, invalid>>.
|
||||
<<commandbuffers-lifecycle, recording or executable state>>,
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
and any of the descriptor bindings that are updated were not created with
|
||||
the ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT or
|
||||
ename:VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT bits set,
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
that command buffer becomes <<commandbuffers-lifecycle, invalid>>.
|
||||
|
||||
.Valid Usage
|
||||
****
|
||||
ifndef::VK_EXT_descriptor_indexing[]
|
||||
* [[VUID-vkUpdateDescriptorSets-dstSet-00314]]
|
||||
The pname:dstSet member of each element of pname:pDescriptorWrites or
|
||||
pname:pDescriptorCopies must: not be used by any command that was
|
||||
recorded to a command buffer which is in the <<commandbuffers-lifecycle,
|
||||
pending state>>.
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
* [[VUID-vkUpdateDescriptorSets-None-03047]]
|
||||
Descriptor bindings updated by this command which were created without
|
||||
the ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT or
|
||||
ename:VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT bits set
|
||||
must: not be used by any command that was recorded to a command buffer
|
||||
which is in the <<commandbuffers-lifecycle,pending state>>.
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
****
|
||||
|
||||
include::../validity/protos/vkUpdateDescriptorSets.txt[]
|
||||
|
@ -1827,6 +2431,12 @@ bindings as needed to update all pname:descriptorCount descriptors.
|
|||
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, the
|
||||
pname:imageView member of each element of pname:pImageInfo must: have
|
||||
been created with ename:VK_IMAGE_USAGE_STORAGE_BIT set
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
* [[VUID-VkWriteDescriptorSet-descriptorCount-03048]]
|
||||
All consecutive bindings updated via a single sname:VkWriteDescriptorSet
|
||||
structure, except those with a pname:descriptorCount of zero, must: have
|
||||
identical elink:VkDescriptorBindingFlagBitsEXT.
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
****
|
||||
|
||||
include::../validity/structs/VkWriteDescriptorSet.txt[]
|
||||
|
@ -2056,6 +2666,33 @@ include::../api/structs/VkCopyDescriptorSet.txt[]
|
|||
destination ranges of descriptors must: not overlap, where the ranges
|
||||
may: include array elements from consecutive bindings as described by
|
||||
<<descriptorsets-updates-consecutive>>
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
* [[VUID-VkCopyDescriptorSet-srcSet-01918]]
|
||||
If pname:srcSet's layout was created with the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT
|
||||
flag set, then pname:dstSet's layout must: also have been created with
|
||||
the ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT
|
||||
flag set
|
||||
* [[VUID-VkCopyDescriptorSet-srcSet-01919]]
|
||||
If pname:srcSet's layout was created without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT
|
||||
flag set, then pname:dstSet's layout must: also have been created
|
||||
without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT
|
||||
flag set
|
||||
* [[VUID-VkCopyDescriptorSet-srcSet-01920]]
|
||||
If the descriptor pool from which pname:srcSet was allocated was created
|
||||
with the ename:VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT flag
|
||||
set, then the descriptor pool from which pname:dstSet was allocated
|
||||
must: also have been created with the
|
||||
ename:VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT flag set
|
||||
* [[VUID-VkCopyDescriptorSet-srcSet-01921]]
|
||||
If the descriptor pool from which pname:srcSet was allocated was created
|
||||
without the ename:VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT
|
||||
flag set, then the descriptor pool from which pname:dstSet was allocated
|
||||
must: also have been created without the
|
||||
ename:VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT flag set
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
****
|
||||
|
||||
include::../validity/structs/VkCopyDescriptorSet.txt[]
|
||||
|
@ -2577,11 +3214,24 @@ pipeline used in subsequent graphics or compute commands, as defined in the
|
|||
<<descriptorsets-compatibility, Pipeline Layout Compatibility>> section.
|
||||
|
||||
The descriptor set contents bound by a call to fname:vkCmdBindDescriptorSets
|
||||
may: be consumed during host execution of the command, or during shader
|
||||
execution of the resulting draws, or any time in between.
|
||||
Thus, the contents must: not be altered (overwritten by an update command,
|
||||
or freed) between when the command is recorded and when the command
|
||||
completes executing on the queue.
|
||||
may: be consumed at the following times:
|
||||
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
* For descriptor bindings created with the
|
||||
ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT bit set, the
|
||||
contents may: be consumed when the command buffer is submitted to a
|
||||
queue, or during shader execution of the resulting draws and dispatches,
|
||||
or any time in between.
|
||||
Otherwise,
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
* during host execution of the command, or during shader execution of the
|
||||
resulting draws and dispatches, or any time in between.
|
||||
|
||||
Thus, the contents of a descriptor set binding must: not be altered
|
||||
(overwritten by an update command, or freed) between the first point in time
|
||||
that it may: be consumed, and and when the command completes executing on
|
||||
the queue.
|
||||
|
||||
The contents of pname:pDynamicOffsets are consumed immediately during
|
||||
execution of fname:vkCmdBindDescriptorSets.
|
||||
Once all pending uses have completed, it is legal to update and reuse a
|
||||
|
|
|
@ -8,8 +8,8 @@
|
|||
_Dispatching commands_ (commands with ftext:Dispatch in the name) provoke
|
||||
work in a compute pipeline.
|
||||
Dispatching commands are recorded into a command buffer and when executed by
|
||||
a queue, will produce work which executes according to the currently bound
|
||||
compute pipeline.
|
||||
a queue, will produce work which executes according to the bound compute
|
||||
pipeline.
|
||||
A compute pipeline must: be bound to a command buffer before any dispatch
|
||||
commands are recorded in that command buffer.
|
||||
|
||||
|
@ -45,61 +45,60 @@ is assembled.
|
|||
pname:groupCountZ must: be less than or equal to
|
||||
sname:VkPhysicalDeviceLimits::pname:maxComputeWorkGroupCount[2]
|
||||
* [[VUID-vkCmdDispatch-None-00389]]
|
||||
For each set _n_ that is statically used by the sname:VkPipeline
|
||||
currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE, a descriptor
|
||||
set must: have been bound to _n_ at
|
||||
ename:VK_PIPELINE_BIND_POINT_COMPUTE, with a sname:VkPipelineLayout that
|
||||
is compatible for set _n_, with the sname:VkPipelineLayout used to
|
||||
create the current sname:VkPipeline, as described in
|
||||
<<descriptorsets-compatibility>>
|
||||
For each set _n_ that is statically used by the sname:VkPipeline bound
|
||||
to ename:VK_PIPELINE_BIND_POINT_COMPUTE, a descriptor set must: have
|
||||
been bound to _n_ at ename:VK_PIPELINE_BIND_POINT_COMPUTE, with a
|
||||
sname:VkPipelineLayout that is compatible for set _n_, with the
|
||||
sname:VkPipelineLayout used to create the current sname:VkPipeline, as
|
||||
described in <<descriptorsets-compatibility>>
|
||||
* [[VUID-vkCmdDispatch-None-00390]]
|
||||
Descriptors in each bound descriptor set, specified via
|
||||
fname:vkCmdBindDescriptorSets, must: be valid if they are statically
|
||||
used by the currently bound sname:VkPipeline object, specified via
|
||||
used by the bound sname:VkPipeline object, specified via
|
||||
fname:vkCmdBindPipeline
|
||||
* [[VUID-vkCmdDispatch-None-00391]]
|
||||
A valid compute pipeline must: be bound to the current command buffer
|
||||
with ename:VK_PIPELINE_BIND_POINT_COMPUTE
|
||||
* [[VUID-vkCmdDispatch-None-00392]]
|
||||
For each push constant that is statically used by the sname:VkPipeline
|
||||
currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE, a push constant
|
||||
value must: have been set for ename:VK_PIPELINE_BIND_POINT_COMPUTE, with
|
||||
a sname:VkPipelineLayout that is compatible for push constants with the
|
||||
bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE, a push constant value
|
||||
must: have been set for ename:VK_PIPELINE_BIND_POINT_COMPUTE, with a
|
||||
sname:VkPipelineLayout that is compatible for push constants with the
|
||||
one used to create the current sname:VkPipeline, as described in
|
||||
<<descriptorsets-compatibility>>
|
||||
* [[VUID-vkCmdDispatch-None-00393]]
|
||||
If any sname:VkSampler object that is accessed from a shader by the
|
||||
sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE
|
||||
uses unnormalized coordinates, it must: not be used to sample from any
|
||||
sname:VkPipeline bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE uses
|
||||
unnormalized coordinates, it must: not be used to sample from any
|
||||
sname:VkImage with a sname:VkImageView of the type
|
||||
ename:VK_IMAGE_VIEW_TYPE_3D, ename:VK_IMAGE_VIEW_TYPE_CUBE,
|
||||
ename:VK_IMAGE_VIEW_TYPE_1D_ARRAY, ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY or
|
||||
ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
|
||||
* [[VUID-vkCmdDispatch-None-00394]]
|
||||
If any sname:VkSampler object that is accessed from a shader by the
|
||||
sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE
|
||||
uses unnormalized coordinates, it must: not be used with any of the
|
||||
SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions with
|
||||
sname:VkPipeline bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE uses
|
||||
unnormalized coordinates, it must: not be used with any of the SPIR-V
|
||||
`OpImageSample*` or `OpImageSparseSample*` instructions with
|
||||
code:ImplicitLod, code:Dref or code:Proj in their name, in any shader
|
||||
stage
|
||||
* [[VUID-vkCmdDispatch-None-00395]]
|
||||
If any sname:VkSampler object that is accessed from a shader by the
|
||||
sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE
|
||||
uses unnormalized coordinates, it must: not be used with any of the
|
||||
SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that
|
||||
includes a LOD bias or any offset values, in any shader stage
|
||||
sname:VkPipeline bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE uses
|
||||
unnormalized coordinates, it must: not be used with any of the SPIR-V
|
||||
`OpImageSample*` or `OpImageSparseSample*` instructions that includes a
|
||||
LOD bias or any offset values, in any shader stage
|
||||
* [[VUID-vkCmdDispatch-None-00396]]
|
||||
If the <<features-features-robustBufferAccess,robust buffer access>>
|
||||
feature is not enabled, and any shader stage in the sname:VkPipeline
|
||||
object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses
|
||||
a uniform buffer, it must: not access values outside of the range of
|
||||
that buffer specified in the currently bound descriptor set
|
||||
object bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a uniform
|
||||
buffer, it must: not access values outside of the range of that buffer
|
||||
specified in the bound descriptor set
|
||||
* [[VUID-vkCmdDispatch-None-00397]]
|
||||
If the <<features-features-robustBufferAccess,robust buffer access>>
|
||||
feature is not enabled, and any shader stage in the sname:VkPipeline
|
||||
object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses
|
||||
a storage buffer, it must: not access values outside of the range of
|
||||
that buffer specified in the currently bound descriptor set
|
||||
object bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a storage
|
||||
buffer, it must: not access values outside of the range of that buffer
|
||||
specified in the bound descriptor set
|
||||
* [[VUID-vkCmdDispatch-linearTilingFeatures-00398]]
|
||||
Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a
|
||||
result of this command must: be of a format which supports linear
|
||||
|
@ -128,21 +127,21 @@ endif::VK_IMG_filter_cubic[]
|
|||
ifdef::VK_VERSION_1_1[]
|
||||
* [[VUID-vkCmdDispatch-commandBuffer-01844]]
|
||||
If pname:commandBuffer is an unprotected command buffer, and any
|
||||
pipeline stage in the sname:VkPipeline object currently bound to
|
||||
pipeline stage in the sname:VkPipeline object bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_COMPUTE reads from or writes to any image
|
||||
or buffer, that image or buffer must: not be a protected image or
|
||||
protected buffer.
|
||||
* [[VUID-vkCmdDispatch-commandBuffer-01845]]
|
||||
If pname:commandBuffer is a protected command buffer, and any pipeline
|
||||
stage in the sname:VkPipeline object currently bound to
|
||||
stage in the sname:VkPipeline object bound to
|
||||
ename:VK_PIPELINE_POINT_COMPUTE writes to any image or buffer, that
|
||||
image or buffer must: not be an unprotected image or unprotected buffer.
|
||||
* [[VUID-vkCmdDispatch-commandBuffer-01846]]
|
||||
If pname:commandBuffer is a protected command buffer, and any pipeline
|
||||
stage other than the compute pipeline stage in the sname:VkPipeline
|
||||
object currently bound to ename:VK_PIPELINE_POINT_COMPUTE reads from any
|
||||
image or buffer, the image or buffer must: not be a protected image or
|
||||
protected buffer.
|
||||
object bound to ename:VK_PIPELINE_POINT_COMPUTE reads from any image or
|
||||
buffer, the image or buffer must: not be a protected image or protected
|
||||
buffer.
|
||||
endif::VK_VERSION_1_1[]
|
||||
****
|
||||
|
||||
|
@ -174,17 +173,16 @@ at pname:offset.
|
|||
If pname:buffer is non-sparse then it must: be bound completely and
|
||||
contiguously to a single sname:VkDeviceMemory object
|
||||
* [[VUID-vkCmdDispatchIndirect-None-00402]]
|
||||
For each set _n_ that is statically used by the sname:VkPipeline
|
||||
currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE, a descriptor
|
||||
set must: have been bound to _n_ at
|
||||
ename:VK_PIPELINE_BIND_POINT_COMPUTE, with a sname:VkPipelineLayout that
|
||||
is compatible for set _n_, with the sname:VkPipelineLayout used to
|
||||
create the current sname:VkPipeline, as described in
|
||||
<<descriptorsets-compatibility>>
|
||||
For each set _n_ that is statically used by the sname:VkPipeline bound
|
||||
to ename:VK_PIPELINE_BIND_POINT_COMPUTE, a descriptor set must: have
|
||||
been bound to _n_ at ename:VK_PIPELINE_BIND_POINT_COMPUTE, with a
|
||||
sname:VkPipelineLayout that is compatible for set _n_, with the
|
||||
sname:VkPipelineLayout used to create the current sname:VkPipeline, as
|
||||
described in <<descriptorsets-compatibility>>
|
||||
* [[VUID-vkCmdDispatchIndirect-None-00403]]
|
||||
Descriptors in each bound descriptor set, specified via
|
||||
fname:vkCmdBindDescriptorSets, must: be valid if they are statically
|
||||
used by the currently bound sname:VkPipeline object, specified via
|
||||
used by the bound sname:VkPipeline object, specified via
|
||||
fname:vkCmdBindPipeline
|
||||
* [[VUID-vkCmdDispatchIndirect-None-00404]]
|
||||
A valid compute pipeline must: be bound to the current command buffer
|
||||
|
@ -199,44 +197,44 @@ at pname:offset.
|
|||
must: be less than or equal to the size of pname:buffer
|
||||
* [[VUID-vkCmdDispatchIndirect-None-00408]]
|
||||
For each push constant that is statically used by the sname:VkPipeline
|
||||
currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE, a push constant
|
||||
value must: have been set for ename:VK_PIPELINE_BIND_POINT_COMPUTE, with
|
||||
a sname:VkPipelineLayout that is compatible for push constants with the
|
||||
bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE, a push constant value
|
||||
must: have been set for ename:VK_PIPELINE_BIND_POINT_COMPUTE, with a
|
||||
sname:VkPipelineLayout that is compatible for push constants with the
|
||||
one used to create the current sname:VkPipeline, as described in
|
||||
<<descriptorsets-compatibility>>
|
||||
* [[VUID-vkCmdDispatchIndirect-None-00409]]
|
||||
If any sname:VkSampler object that is accessed from a shader by the
|
||||
sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE
|
||||
uses unnormalized coordinates, it must: not be used to sample from any
|
||||
sname:VkPipeline bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE uses
|
||||
unnormalized coordinates, it must: not be used to sample from any
|
||||
sname:VkImage with a sname:VkImageView of the type
|
||||
ename:VK_IMAGE_VIEW_TYPE_3D, ename:VK_IMAGE_VIEW_TYPE_CUBE,
|
||||
ename:VK_IMAGE_VIEW_TYPE_1D_ARRAY, ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY or
|
||||
ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
|
||||
* [[VUID-vkCmdDispatchIndirect-None-00410]]
|
||||
If any sname:VkSampler object that is accessed from a shader by the
|
||||
sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE
|
||||
uses unnormalized coordinates, it must: not be used with any of the
|
||||
SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions with
|
||||
sname:VkPipeline bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE uses
|
||||
unnormalized coordinates, it must: not be used with any of the SPIR-V
|
||||
`OpImageSample*` or `OpImageSparseSample*` instructions with
|
||||
code:ImplicitLod, code:Dref or code:Proj in their name, in any shader
|
||||
stage
|
||||
* [[VUID-vkCmdDispatchIndirect-None-00411]]
|
||||
If any sname:VkSampler object that is accessed from a shader by the
|
||||
sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE
|
||||
uses unnormalized coordinates, it must: not be used with any of the
|
||||
SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that
|
||||
includes a LOD bias or any offset values, in any shader stage
|
||||
sname:VkPipeline bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE uses
|
||||
unnormalized coordinates, it must: not be used with any of the SPIR-V
|
||||
`OpImageSample*` or `OpImageSparseSample*` instructions that includes a
|
||||
LOD bias or any offset values, in any shader stage
|
||||
* [[VUID-vkCmdDispatchIndirect-None-00412]]
|
||||
If the <<features-features-robustBufferAccess,robust buffer access>>
|
||||
feature is not enabled, and any shader stage in the sname:VkPipeline
|
||||
object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses
|
||||
a uniform buffer, it must: not access values outside of the range of
|
||||
that buffer specified in the currently bound descriptor set
|
||||
object bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a uniform
|
||||
buffer, it must: not access values outside of the range of that buffer
|
||||
specified in the bound descriptor set
|
||||
* [[VUID-vkCmdDispatchIndirect-None-00413]]
|
||||
If the <<features-features-robustBufferAccess,robust buffer access>>
|
||||
feature is not enabled, and any shader stage in the sname:VkPipeline
|
||||
object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses
|
||||
a storage buffer, it must: not access values outside of the range of
|
||||
that buffer specified in the currently bound descriptor set
|
||||
object bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a storage
|
||||
buffer, it must: not access values outside of the range of that buffer
|
||||
specified in the bound descriptor set
|
||||
* [[VUID-vkCmdDispatchIndirect-linearTilingFeatures-00414]]
|
||||
Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a
|
||||
result of this command must: be of a format which supports linear
|
||||
|
@ -265,21 +263,21 @@ endif::VK_IMG_filter_cubic[]
|
|||
ifdef::VK_VERSION_1_1[]
|
||||
* [[VUID-vkCmdDispatchIndirect-commandBuffer-01847]]
|
||||
If pname:commandBuffer is an unprotected command buffer, and any
|
||||
pipeline stage in the sname:VkPipeline object currently bound to
|
||||
pipeline stage in the sname:VkPipeline object bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_COMPUTE reads from or writes to any image
|
||||
or buffer, that image or buffer must: not be a protected image or
|
||||
protected buffer.
|
||||
* [[VUID-vkCmdDispatchIndirect-commandBuffer-01848]]
|
||||
If pname:commandBuffer is a protected command buffer, and any pipeline
|
||||
stage in the sname:VkPipeline object currently bound to
|
||||
stage in the sname:VkPipeline object bound to
|
||||
ename:VK_PIPELINE_POINT_COMPUTE writes to any image or buffer, that
|
||||
image or buffer must: not be an unprotected image or unprotected buffer.
|
||||
* [[VUID-vkCmdDispatchIndirect-commandBuffer-01849]]
|
||||
If pname:commandBuffer is a protected command buffer, and any pipeline
|
||||
stage other than the compute pipeline stage in the sname:VkPipeline
|
||||
object currently bound to ename:VK_PIPELINE_POINT_COMPUTE reads from any
|
||||
image or buffer, the image or buffer must: not be a protected image or
|
||||
protected buffer.
|
||||
object bound to ename:VK_PIPELINE_POINT_COMPUTE reads from any image or
|
||||
buffer, the image or buffer must: not be a protected image or protected
|
||||
buffer.
|
||||
endif::VK_VERSION_1_1[]
|
||||
****
|
||||
|
||||
|
@ -387,8 +385,8 @@ vkCmdDispatchBase(0,0,0,groupCountX,groupCountY,groupCountZ).
|
|||
pname:baseGroupZ
|
||||
* [[VUID-vkCmdDispatchBase-baseGroupX-00427]]
|
||||
If any of pname:baseGroupX, pname:baseGroupY, or pname:baseGroupZ are
|
||||
not zero, then the currently bound compute pipeline must: have been
|
||||
created with the ename:VK_PIPELINE_CREATE_DISPATCH_BASE flag.
|
||||
not zero, then the bound compute pipeline must: have been created with
|
||||
the ename:VK_PIPELINE_CREATE_DISPATCH_BASE flag.
|
||||
****
|
||||
|
||||
include::../validity/protos/vkCmdDispatchBase.txt[]
|
||||
|
|
|
@ -8,8 +8,8 @@
|
|||
_Drawing commands_ (commands with ftext:Draw in the name) provoke work in a
|
||||
graphics pipeline.
|
||||
Drawing commands are recorded into a command buffer and when executed by a
|
||||
queue, will produce work which executes according to the currently bound
|
||||
graphics pipeline.
|
||||
queue, will produce work which executes according to the bound graphics
|
||||
pipeline.
|
||||
A graphics pipeline must: be bound to a command buffer before any drawing
|
||||
commands are recorded in that command buffer.
|
||||
|
||||
|
@ -507,7 +507,7 @@ first code:vertexIndex value equal to pname:firstVertex.
|
|||
The primitives are drawn pname:instanceCount times with code:instanceIndex
|
||||
starting with pname:firstInstance and increasing sequentially for each
|
||||
instance.
|
||||
The assembled primitives execute the currently bound graphics pipeline.
|
||||
The assembled primitives execute the bound graphics pipeline.
|
||||
|
||||
.Valid Usage
|
||||
****
|
||||
|
@ -515,33 +515,30 @@ The assembled primitives execute the currently bound graphics pipeline.
|
|||
The current render pass must: be <<renderpass-compatibility,compatible>>
|
||||
with the pname:renderPass member of the
|
||||
sname:VkGraphicsPipelineCreateInfo structure specified when creating the
|
||||
sname:VkPipeline currently bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
|
||||
sname:VkPipeline bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
|
||||
* [[VUID-vkCmdDraw-subpass-00436]]
|
||||
The subpass index of the current render pass must: be equal to the
|
||||
pname:subpass member of the sname:VkGraphicsPipelineCreateInfo structure
|
||||
specified when creating the sname:VkPipeline currently bound to
|
||||
specified when creating the sname:VkPipeline bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
|
||||
* [[VUID-vkCmdDraw-None-00437]]
|
||||
For each set _n_ that is statically used by the sname:VkPipeline
|
||||
currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor
|
||||
set must: have been bound to _n_ at
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS, with a sname:VkPipelineLayout
|
||||
that is compatible for set _n_, with the sname:VkPipelineLayout used to
|
||||
create the current sname:VkPipeline, as described in
|
||||
<<descriptorsets-compatibility>>
|
||||
For each set _n_ that is statically used by the sname:VkPipeline bound
|
||||
to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor set must: have
|
||||
been bound to _n_ at ename:VK_PIPELINE_BIND_POINT_GRAPHICS, with a
|
||||
sname:VkPipelineLayout that is compatible for set _n_, with the
|
||||
sname:VkPipelineLayout used to create the current sname:VkPipeline, as
|
||||
described in <<descriptorsets-compatibility>>
|
||||
* [[VUID-vkCmdDraw-None-00438]]
|
||||
For each push constant that is statically used by the sname:VkPipeline
|
||||
currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a push
|
||||
constant value must: have been set for
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS, with a sname:VkPipelineLayout
|
||||
that is compatible for push constants, with the sname:VkPipelineLayout
|
||||
used to create the current sname:VkPipeline, as described in
|
||||
<<descriptorsets-compatibility>>
|
||||
bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a push constant value
|
||||
must: have been set for ename:VK_PIPELINE_BIND_POINT_GRAPHICS, with a
|
||||
sname:VkPipelineLayout that is compatible for push constants, with the
|
||||
sname:VkPipelineLayout used to create the current sname:VkPipeline, as
|
||||
described in <<descriptorsets-compatibility>>
|
||||
* [[VUID-vkCmdDraw-None-00439]]
|
||||
Descriptors in each bound descriptor set, specified via
|
||||
fname:vkCmdBindDescriptorSets, must: be valid if they are statically
|
||||
used by the currently bound sname:VkPipeline object, specified via
|
||||
used by the bound sname:VkPipeline object, specified via
|
||||
fname:vkCmdBindPipeline
|
||||
* [[VUID-vkCmdDraw-None-00440]]
|
||||
All vertex input bindings accessed via vertex input variables declared
|
||||
|
@ -555,7 +552,7 @@ The assembled primitives execute the currently bound graphics pipeline.
|
|||
A valid graphics pipeline must: be bound to the current command buffer
|
||||
with ename:VK_PIPELINE_BIND_POINT_GRAPHICS
|
||||
* [[VUID-vkCmdDraw-None-00443]]
|
||||
If the sname:VkPipeline object currently bound to
|
||||
If the sname:VkPipeline object bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS requires any dynamic state, that
|
||||
state must: have been set on the current command buffer
|
||||
* [[VUID-vkCmdDraw-None-00444]]
|
||||
|
@ -563,39 +560,37 @@ The assembled primitives execute the currently bound graphics pipeline.
|
|||
pipeline via a descriptor set
|
||||
* [[VUID-vkCmdDraw-None-00445]]
|
||||
If any sname:VkSampler object that is accessed from a shader by the
|
||||
sname:VkPipeline currently bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it
|
||||
must: not be used to sample from any sname:VkImage with a
|
||||
sname:VkImageView of the type ename:VK_IMAGE_VIEW_TYPE_3D,
|
||||
ename:VK_IMAGE_VIEW_TYPE_CUBE, ename:VK_IMAGE_VIEW_TYPE_1D_ARRAY,
|
||||
ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY or
|
||||
sname:VkPipeline bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses
|
||||
unnormalized coordinates, it must: not be used to sample from any
|
||||
sname:VkImage with a sname:VkImageView of the type
|
||||
ename:VK_IMAGE_VIEW_TYPE_3D, ename:VK_IMAGE_VIEW_TYPE_CUBE,
|
||||
ename:VK_IMAGE_VIEW_TYPE_1D_ARRAY, ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY or
|
||||
ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
|
||||
* [[VUID-vkCmdDraw-None-00446]]
|
||||
If any sname:VkSampler object that is accessed from a shader by the
|
||||
sname:VkPipeline currently bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it
|
||||
must: not be used with any of the SPIR-V `OpImageSample*` or
|
||||
`OpImageSparseSample*` instructions with code:ImplicitLod, code:Dref or
|
||||
code:Proj in their name, in any shader stage
|
||||
sname:VkPipeline bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses
|
||||
unnormalized coordinates, it must: not be used with any of the SPIR-V
|
||||
`OpImageSample*` or `OpImageSparseSample*` instructions with
|
||||
code:ImplicitLod, code:Dref or code:Proj in their name, in any shader
|
||||
stage
|
||||
* [[VUID-vkCmdDraw-None-00447]]
|
||||
If any sname:VkSampler object that is accessed from a shader by the
|
||||
sname:VkPipeline currently bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it
|
||||
must: not be used with any of the SPIR-V `OpImageSample*` or
|
||||
`OpImageSparseSample*` instructions that includes a LOD bias or any
|
||||
offset values, in any shader stage
|
||||
sname:VkPipeline bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses
|
||||
unnormalized coordinates, it must: not be used with any of the SPIR-V
|
||||
`OpImageSample*` or `OpImageSparseSample*` instructions that includes a
|
||||
LOD bias or any offset values, in any shader stage
|
||||
* [[VUID-vkCmdDraw-None-00448]]
|
||||
If the <<features-features-robustBufferAccess,robust buffer access>>
|
||||
feature is not enabled, and any shader stage in the sname:VkPipeline
|
||||
object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses
|
||||
a uniform buffer, it must: not access values outside of the range of
|
||||
that buffer specified in the currently bound descriptor set
|
||||
object bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform
|
||||
buffer, it must: not access values outside of the range of that buffer
|
||||
specified in the bound descriptor set
|
||||
* [[VUID-vkCmdDraw-None-00449]]
|
||||
If the <<features-features-robustBufferAccess,robust buffer access>>
|
||||
feature is not enabled, and any shader stage in the sname:VkPipeline
|
||||
object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses
|
||||
a storage buffer, it must: not access values outside of the range of
|
||||
that buffer specified in the currently bound descriptor set
|
||||
object bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage
|
||||
buffer, it must: not access values outside of the range of that buffer
|
||||
specified in the bound descriptor set
|
||||
* [[VUID-vkCmdDraw-linearTilingFeatures-00450]]
|
||||
Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a
|
||||
result of this command must: be of a format which supports linear
|
||||
|
@ -633,27 +628,26 @@ endif::VK_VERSION_1_1,VK_KHR_multiview[]
|
|||
ifdef::VK_VERSION_1_1[]
|
||||
* [[VUID-vkCmdDraw-commandBuffer-01850]]
|
||||
If pname:commandBuffer is an unprotected command buffer, and any
|
||||
pipeline stage in the sname:VkPipeline object currently bound to
|
||||
pipeline stage in the sname:VkPipeline object bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS reads from or writes to any image
|
||||
or buffer, that image or buffer must: not be a protected image or
|
||||
protected buffer.
|
||||
* [[VUID-vkCmdDraw-commandBuffer-01851]]
|
||||
If pname:commandBuffer is a protected command buffer, and any pipeline
|
||||
stage in the sname:VkPipeline object currently bound to
|
||||
stage in the sname:VkPipeline object bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS writes to any image or buffer,
|
||||
that image or buffer must: not be an unprotected image or unprotected
|
||||
buffer.
|
||||
* [[VUID-vkCmdDraw-commandBuffer-01852]]
|
||||
If pname:commandBuffer is a protected command buffer, and any pipeline
|
||||
stage other than the framebuffer-space pipeline stages in the
|
||||
sname:VkPipeline object currently bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS reads from or writes to any image
|
||||
or buffer, the image or buffer must: not be a protected image or
|
||||
protected buffer.
|
||||
sname:VkPipeline object bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS
|
||||
reads from or writes to any image or buffer, the image or buffer must:
|
||||
not be a protected image or protected buffer.
|
||||
endif::VK_VERSION_1_1[]
|
||||
ifdef::VK_EXT_sample_locations[]
|
||||
* [[VUID-vkCmdDraw-sampleLocationsEnable-01512]]
|
||||
If the currently bound graphics pipeline was created with
|
||||
If the bound graphics pipeline was created with
|
||||
slink:VkPipelineSampleLocationsStateCreateInfoEXT::pname:sampleLocationsEnable
|
||||
set to ename:VK_TRUE and the current subpass has a depth/stencil
|
||||
attachment, then that attachment must: have been created with the
|
||||
|
@ -688,9 +682,9 @@ of size defined by the flink:vkCmdBindIndexBuffer::pname:indexType parameter
|
|||
with which the buffer was bound.
|
||||
|
||||
The first vertex index is at an offset of pname:firstIndex * code:indexSize
|
||||
+ pname:offset within the currently bound index buffer, where pname:offset
|
||||
is the offset specified by fname:vkCmdBindIndexBuffer and code:indexSize is
|
||||
the byte size of the type specified by pname:indexType.
|
||||
+ pname:offset within the bound index buffer, where pname:offset is the
|
||||
offset specified by fname:vkCmdBindIndexBuffer and code:indexSize is the
|
||||
byte size of the type specified by pname:indexType.
|
||||
Subsequent index values are retrieved from consecutive locations in the
|
||||
index buffer.
|
||||
Indices are first compared to the primitive restart value, then zero
|
||||
|
@ -701,7 +695,7 @@ code:vertexIndex value.
|
|||
The primitives are drawn pname:instanceCount times with code:instanceIndex
|
||||
starting with pname:firstInstance and increasing sequentially for each
|
||||
instance.
|
||||
The assembled primitives execute the currently bound graphics pipeline.
|
||||
The assembled primitives execute the bound graphics pipeline.
|
||||
|
||||
.Valid Usage
|
||||
****
|
||||
|
@ -709,33 +703,30 @@ The assembled primitives execute the currently bound graphics pipeline.
|
|||
The current render pass must: be <<renderpass-compatibility,compatible>>
|
||||
with the pname:renderPass member of the
|
||||
sname:VkGraphicsPipelineCreateInfo structure specified when creating the
|
||||
sname:VkPipeline currently bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
|
||||
sname:VkPipeline bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
|
||||
* [[VUID-vkCmdDrawIndexed-subpass-00455]]
|
||||
The subpass index of the current render pass must: be equal to the
|
||||
pname:subpass member of the sname:VkGraphicsPipelineCreateInfo structure
|
||||
specified when creating the sname:VkPipeline currently bound to
|
||||
specified when creating the sname:VkPipeline bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
|
||||
* [[VUID-vkCmdDrawIndexed-None-00456]]
|
||||
For each set _n_ that is statically used by the sname:VkPipeline
|
||||
currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor
|
||||
set must: have been bound to _n_ at
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS, with a sname:VkPipelineLayout
|
||||
that is compatible for set _n_, with the sname:VkPipelineLayout used to
|
||||
create the current sname:VkPipeline, as described in
|
||||
<<descriptorsets-compatibility>>
|
||||
For each set _n_ that is statically used by the sname:VkPipeline bound
|
||||
to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor set must: have
|
||||
been bound to _n_ at ename:VK_PIPELINE_BIND_POINT_GRAPHICS, with a
|
||||
sname:VkPipelineLayout that is compatible for set _n_, with the
|
||||
sname:VkPipelineLayout used to create the current sname:VkPipeline, as
|
||||
described in <<descriptorsets-compatibility>>
|
||||
* [[VUID-vkCmdDrawIndexed-None-00457]]
|
||||
For each push constant that is statically used by the sname:VkPipeline
|
||||
currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a push
|
||||
constant value must: have been set for
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS, with a sname:VkPipelineLayout
|
||||
that is compatible for push constants, with the sname:VkPipelineLayout
|
||||
used to create the current sname:VkPipeline, as described in
|
||||
<<descriptorsets-compatibility>>
|
||||
bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a push constant value
|
||||
must: have been set for ename:VK_PIPELINE_BIND_POINT_GRAPHICS, with a
|
||||
sname:VkPipelineLayout that is compatible for push constants, with the
|
||||
sname:VkPipelineLayout used to create the current sname:VkPipeline, as
|
||||
described in <<descriptorsets-compatibility>>
|
||||
* [[VUID-vkCmdDrawIndexed-None-00458]]
|
||||
Descriptors in each bound descriptor set, specified via
|
||||
fname:vkCmdBindDescriptorSets, must: be valid if they are statically
|
||||
used by the currently bound sname:VkPipeline object, specified via
|
||||
used by the bound sname:VkPipeline object, specified via
|
||||
fname:vkCmdBindPipeline
|
||||
* [[VUID-vkCmdDrawIndexed-None-00459]]
|
||||
All vertex input bindings accessed via vertex input variables declared
|
||||
|
@ -749,53 +740,51 @@ The assembled primitives execute the currently bound graphics pipeline.
|
|||
A valid graphics pipeline must: be bound to the current command buffer
|
||||
with ename:VK_PIPELINE_BIND_POINT_GRAPHICS
|
||||
* [[VUID-vkCmdDrawIndexed-None-00462]]
|
||||
If the sname:VkPipeline object currently bound to
|
||||
If the sname:VkPipeline object bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS requires any dynamic state, that
|
||||
state must: have been set on the current command buffer
|
||||
* [[VUID-vkCmdDrawIndexed-indexSize-00463]]
|
||||
[eq]#(pname:indexSize * (pname:firstIndex {plus} pname:indexCount)
|
||||
{plus} pname:offset)# must: be less than or equal to the size of the
|
||||
currently bound index buffer, with indexSize being based on the type
|
||||
specified by pname:indexType, where the index buffer, pname:indexType,
|
||||
and pname:offset are specified via fname:vkCmdBindIndexBuffer
|
||||
bound index buffer, with indexSize being based on the type specified by
|
||||
pname:indexType, where the index buffer, pname:indexType, and
|
||||
pname:offset are specified via fname:vkCmdBindIndexBuffer
|
||||
* [[VUID-vkCmdDrawIndexed-None-00464]]
|
||||
Every input attachment used by the current subpass must: be bound to the
|
||||
pipeline via a descriptor set
|
||||
* [[VUID-vkCmdDrawIndexed-None-00465]]
|
||||
If any sname:VkSampler object that is accessed from a shader by the
|
||||
sname:VkPipeline currently bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it
|
||||
must: not be used to sample from any sname:VkImage with a
|
||||
sname:VkImageView of the type ename:VK_IMAGE_VIEW_TYPE_3D,
|
||||
ename:VK_IMAGE_VIEW_TYPE_CUBE, ename:VK_IMAGE_VIEW_TYPE_1D_ARRAY,
|
||||
ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY or
|
||||
sname:VkPipeline bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses
|
||||
unnormalized coordinates, it must: not be used to sample from any
|
||||
sname:VkImage with a sname:VkImageView of the type
|
||||
ename:VK_IMAGE_VIEW_TYPE_3D, ename:VK_IMAGE_VIEW_TYPE_CUBE,
|
||||
ename:VK_IMAGE_VIEW_TYPE_1D_ARRAY, ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY or
|
||||
ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
|
||||
* [[VUID-vkCmdDrawIndexed-None-00466]]
|
||||
If any sname:VkSampler object that is accessed from a shader by the
|
||||
sname:VkPipeline currently bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it
|
||||
must: not be used with any of the SPIR-V `OpImageSample*` or
|
||||
`OpImageSparseSample*` instructions with code:ImplicitLod, code:Dref or
|
||||
code:Proj in their name, in any shader stage
|
||||
sname:VkPipeline bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses
|
||||
unnormalized coordinates, it must: not be used with any of the SPIR-V
|
||||
`OpImageSample*` or `OpImageSparseSample*` instructions with
|
||||
code:ImplicitLod, code:Dref or code:Proj in their name, in any shader
|
||||
stage
|
||||
* [[VUID-vkCmdDrawIndexed-None-00467]]
|
||||
If any sname:VkSampler object that is accessed from a shader by the
|
||||
sname:VkPipeline currently bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it
|
||||
must: not be used with any of the SPIR-V `OpImageSample*` or
|
||||
`OpImageSparseSample*` instructions that includes a LOD bias or any
|
||||
offset values, in any shader stage
|
||||
sname:VkPipeline bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses
|
||||
unnormalized coordinates, it must: not be used with any of the SPIR-V
|
||||
`OpImageSample*` or `OpImageSparseSample*` instructions that includes a
|
||||
LOD bias or any offset values, in any shader stage
|
||||
* [[VUID-vkCmdDrawIndexed-None-00468]]
|
||||
If the <<features-features-robustBufferAccess,robust buffer access>>
|
||||
feature is not enabled, and any shader stage in the sname:VkPipeline
|
||||
object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses
|
||||
a uniform buffer, it must: not access values outside of the range of
|
||||
that buffer specified in the currently bound descriptor set
|
||||
object bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform
|
||||
buffer, it must: not access values outside of the range of that buffer
|
||||
specified in the bound descriptor set
|
||||
* [[VUID-vkCmdDrawIndexed-None-00469]]
|
||||
If the <<features-features-robustBufferAccess,robust buffer access>>
|
||||
feature is not enabled, and any shader stage in the sname:VkPipeline
|
||||
object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses
|
||||
a storage buffer, it must: not access values outside of the range of
|
||||
that buffer specified in the currently bound descriptor set
|
||||
object bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage
|
||||
buffer, it must: not access values outside of the range of that buffer
|
||||
specified in the bound descriptor set
|
||||
* [[VUID-vkCmdDrawIndexed-linearTilingFeatures-00470]]
|
||||
Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a
|
||||
result of this command must: be of a format which supports linear
|
||||
|
@ -833,27 +822,26 @@ endif::VK_VERSION_1_1,VK_KHR_multiview[]
|
|||
ifdef::VK_VERSION_1_1[]
|
||||
* [[VUID-vkCmdDrawIndexed-commandBuffer-01853]]
|
||||
If pname:commandBuffer is an unprotected command buffer, and any
|
||||
pipeline stage in the sname:VkPipeline object currently bound to
|
||||
pipeline stage in the sname:VkPipeline object bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS reads from or writes to any image
|
||||
or buffer, that image or buffer must: not be a protected image or
|
||||
protected buffer.
|
||||
* [[VUID-vkCmdDrawIndexed-commandBuffer-01854]]
|
||||
If pname:commandBuffer is a protected command buffer, and any pipeline
|
||||
stage in the sname:VkPipeline object currently bound to
|
||||
stage in the sname:VkPipeline object bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS writes to any image or buffer,
|
||||
that image or buffer must: not be an unprotected image or unprotected
|
||||
buffer.
|
||||
* [[VUID-vkCmdDrawIndexed-commandBuffer-01855]]
|
||||
If pname:commandBuffer is a protected command buffer, and any pipeline
|
||||
stage other than the framebuffer-space pipeline stages in the
|
||||
sname:VkPipeline object currently bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS reads from or writes to any image
|
||||
or buffer, the image or buffer must: not be a protected image or
|
||||
protected buffer.
|
||||
sname:VkPipeline object bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS
|
||||
reads from or writes to any image or buffer, the image or buffer must:
|
||||
not be a protected image or protected buffer.
|
||||
endif::VK_VERSION_1_1[]
|
||||
ifdef::VK_EXT_sample_locations[]
|
||||
* [[VUID-vkCmdDrawIndexed-sampleLocationsEnable-01513]]
|
||||
If the currently bound graphics pipeline was created with
|
||||
If the bound graphics pipeline was created with
|
||||
slink:VkPipelineSampleLocationsStateCreateInfoEXT::pname:sampleLocationsEnable
|
||||
set to ename:VK_TRUE and the current subpass has a depth/stencil
|
||||
attachment, then that attachment must: have been created with the
|
||||
|
@ -916,33 +904,30 @@ If pname:drawCount is less than or equal to one, pname:stride is ignored.
|
|||
The current render pass must: be <<renderpass-compatibility,compatible>>
|
||||
with the pname:renderPass member of the
|
||||
sname:VkGraphicsPipelineCreateInfo structure specified when creating the
|
||||
sname:VkPipeline currently bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
|
||||
sname:VkPipeline bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
|
||||
* [[VUID-vkCmdDrawIndirect-subpass-00480]]
|
||||
The subpass index of the current render pass must: be equal to the
|
||||
pname:subpass member of the sname:VkGraphicsPipelineCreateInfo structure
|
||||
specified when creating the sname:VkPipeline currently bound to
|
||||
specified when creating the sname:VkPipeline bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
|
||||
* [[VUID-vkCmdDrawIndirect-None-00481]]
|
||||
For each set _n_ that is statically used by the sname:VkPipeline
|
||||
currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor
|
||||
set must: have been bound to _n_ at
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS, with a sname:VkPipelineLayout
|
||||
that is compatible for set _n_, with the sname:VkPipelineLayout used to
|
||||
create the current sname:VkPipeline, as described in
|
||||
<<descriptorsets-compatibility>>
|
||||
For each set _n_ that is statically used by the sname:VkPipeline bound
|
||||
to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor set must: have
|
||||
been bound to _n_ at ename:VK_PIPELINE_BIND_POINT_GRAPHICS, with a
|
||||
sname:VkPipelineLayout that is compatible for set _n_, with the
|
||||
sname:VkPipelineLayout used to create the current sname:VkPipeline, as
|
||||
described in <<descriptorsets-compatibility>>
|
||||
* [[VUID-vkCmdDrawIndirect-None-00482]]
|
||||
For each push constant that is statically used by the sname:VkPipeline
|
||||
currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a push
|
||||
constant value must: have been set for
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS, with a sname:VkPipelineLayout
|
||||
that is compatible for push constants, with the sname:VkPipelineLayout
|
||||
used to create the current sname:VkPipeline, as described in
|
||||
<<descriptorsets-compatibility>>
|
||||
bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a push constant value
|
||||
must: have been set for ename:VK_PIPELINE_BIND_POINT_GRAPHICS, with a
|
||||
sname:VkPipelineLayout that is compatible for push constants, with the
|
||||
sname:VkPipelineLayout used to create the current sname:VkPipeline, as
|
||||
described in <<descriptorsets-compatibility>>
|
||||
* [[VUID-vkCmdDrawIndirect-None-00483]]
|
||||
Descriptors in each bound descriptor set, specified via
|
||||
fname:vkCmdBindDescriptorSets, must: be valid if they are statically
|
||||
used by the currently bound sname:VkPipeline object, specified via
|
||||
used by the bound sname:VkPipeline object, specified via
|
||||
fname:vkCmdBindPipeline
|
||||
* [[VUID-vkCmdDrawIndirect-None-00484]]
|
||||
All vertex input bindings accessed via vertex input variables declared
|
||||
|
@ -952,7 +937,7 @@ If pname:drawCount is less than or equal to one, pname:stride is ignored.
|
|||
A valid graphics pipeline must: be bound to the current command buffer
|
||||
with ename:VK_PIPELINE_BIND_POINT_GRAPHICS
|
||||
* [[VUID-vkCmdDrawIndirect-None-00486]]
|
||||
If the sname:VkPipeline object currently bound to
|
||||
If the sname:VkPipeline object bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS requires any dynamic state, that
|
||||
state must: have been set on the current command buffer
|
||||
* [[VUID-vkCmdDrawIndirect-drawCount-00487]]
|
||||
|
@ -972,39 +957,37 @@ If pname:drawCount is less than or equal to one, pname:stride is ignored.
|
|||
pipeline via a descriptor set
|
||||
* [[VUID-vkCmdDrawIndirect-None-00491]]
|
||||
If any sname:VkSampler object that is accessed from a shader by the
|
||||
sname:VkPipeline currently bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it
|
||||
must: not be used to sample from any sname:VkImage with a
|
||||
sname:VkImageView of the type ename:VK_IMAGE_VIEW_TYPE_3D,
|
||||
ename:VK_IMAGE_VIEW_TYPE_CUBE, ename:VK_IMAGE_VIEW_TYPE_1D_ARRAY,
|
||||
ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY or
|
||||
sname:VkPipeline bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses
|
||||
unnormalized coordinates, it must: not be used to sample from any
|
||||
sname:VkImage with a sname:VkImageView of the type
|
||||
ename:VK_IMAGE_VIEW_TYPE_3D, ename:VK_IMAGE_VIEW_TYPE_CUBE,
|
||||
ename:VK_IMAGE_VIEW_TYPE_1D_ARRAY, ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY or
|
||||
ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
|
||||
* [[VUID-vkCmdDrawIndirect-None-00492]]
|
||||
If any sname:VkSampler object that is accessed from a shader by the
|
||||
sname:VkPipeline currently bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it
|
||||
must: not be used with any of the SPIR-V `OpImageSample*` or
|
||||
`OpImageSparseSample*` instructions with code:ImplicitLod, code:Dref or
|
||||
code:Proj in their name, in any shader stage
|
||||
sname:VkPipeline bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses
|
||||
unnormalized coordinates, it must: not be used with any of the SPIR-V
|
||||
`OpImageSample*` or `OpImageSparseSample*` instructions with
|
||||
code:ImplicitLod, code:Dref or code:Proj in their name, in any shader
|
||||
stage
|
||||
* [[VUID-vkCmdDrawIndirect-None-00493]]
|
||||
If any sname:VkSampler object that is accessed from a shader by the
|
||||
sname:VkPipeline currently bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it
|
||||
must: not be used with any of the SPIR-V `OpImageSample*` or
|
||||
`OpImageSparseSample*` instructions that includes a LOD bias or any
|
||||
offset values, in any shader stage
|
||||
sname:VkPipeline bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses
|
||||
unnormalized coordinates, it must: not be used with any of the SPIR-V
|
||||
`OpImageSample*` or `OpImageSparseSample*` instructions that includes a
|
||||
LOD bias or any offset values, in any shader stage
|
||||
* [[VUID-vkCmdDrawIndirect-None-00494]]
|
||||
If the <<features-features-robustBufferAccess,robust buffer access>>
|
||||
feature is not enabled, and any shader stage in the sname:VkPipeline
|
||||
object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses
|
||||
a uniform buffer, it must: not access values outside of the range of
|
||||
that buffer specified in the currently bound descriptor set
|
||||
object bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform
|
||||
buffer, it must: not access values outside of the range of that buffer
|
||||
specified in the bound descriptor set
|
||||
* [[VUID-vkCmdDrawIndirect-None-00495]]
|
||||
If the <<features-features-robustBufferAccess,robust buffer access>>
|
||||
feature is not enabled, and any shader stage in the sname:VkPipeline
|
||||
object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses
|
||||
a storage buffer, it must: not access values outside of the range of
|
||||
that buffer specified in the currently bound descriptor set
|
||||
object bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage
|
||||
buffer, it must: not access values outside of the range of that buffer
|
||||
specified in the bound descriptor set
|
||||
* [[VUID-vkCmdDrawIndirect-linearTilingFeatures-00496]]
|
||||
Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a
|
||||
result of this command must: be of a format which supports linear
|
||||
|
@ -1042,27 +1025,26 @@ endif::VK_VERSION_1_1,VK_KHR_multiview[]
|
|||
ifdef::VK_VERSION_1_1[]
|
||||
* [[VUID-vkCmdDrawIndirect-commandBuffer-01856]]
|
||||
If pname:commandBuffer is an unprotected command buffer, and any
|
||||
pipeline stage in the sname:VkPipeline object currently bound to
|
||||
pipeline stage in the sname:VkPipeline object bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS reads from or writes to any image
|
||||
or buffer, that image or buffer must: not be a protected image or
|
||||
protected buffer.
|
||||
* [[VUID-vkCmdDrawIndirect-commandBuffer-01857]]
|
||||
If pname:commandBuffer is a protected command buffer, and any pipeline
|
||||
stage in the sname:VkPipeline object currently bound to
|
||||
stage in the sname:VkPipeline object bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS writes to any image or buffer,
|
||||
that image or buffer must: not be an unprotected image or unprotected
|
||||
buffer.
|
||||
* [[VUID-vkCmdDrawIndirect-commandBuffer-01858]]
|
||||
If pname:commandBuffer is a protected command buffer, and any pipeline
|
||||
stage other than the framebuffer-space pipeline stages in the
|
||||
sname:VkPipeline object currently bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS reads from or writes to any image
|
||||
or buffer, the image or buffer must: not be a protected image or
|
||||
protected buffer.
|
||||
sname:VkPipeline object bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS
|
||||
reads from or writes to any image or buffer, the image or buffer must:
|
||||
not be a protected image or protected buffer.
|
||||
endif::VK_VERSION_1_1[]
|
||||
ifdef::VK_EXT_sample_locations[]
|
||||
* [[VUID-vkCmdDrawIndirect-sampleLocationsEnable-01514]]
|
||||
If the currently bound graphics pipeline was created with
|
||||
If the bound graphics pipeline was created with
|
||||
slink:VkPipelineSampleLocationsStateCreateInfoEXT::pname:sampleLocationsEnable
|
||||
set to ename:VK_TRUE and the current subpass has a depth/stencil
|
||||
attachment, then that attachment must: have been created with the
|
||||
|
@ -1170,33 +1152,30 @@ located at pname:countBufferOffset and use this as the draw count.
|
|||
The current render pass must: be <<renderpass-compatibility,compatible>>
|
||||
with the pname:renderPass member of the
|
||||
sname:VkGraphicsPipelineCreateInfo structure specified when creating the
|
||||
sname:VkPipeline currently bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
|
||||
sname:VkPipeline bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
|
||||
* [[VUID-vkCmdDrawIndirectCountAMD-subpass-00508]]
|
||||
The subpass index of the current render pass must: be equal to the
|
||||
pname:subpass member of the sname:VkGraphicsPipelineCreateInfo structure
|
||||
specified when creating the sname:VkPipeline currently bound to
|
||||
specified when creating the sname:VkPipeline bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
|
||||
* [[VUID-vkCmdDrawIndirectCountAMD-None-00509]]
|
||||
For each set _n_ that is statically used by the sname:VkPipeline
|
||||
currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor
|
||||
set must: have been bound to _n_ at
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS, with a sname:VkPipelineLayout
|
||||
that is compatible for set _n_, with the sname:VkPipelineLayout used to
|
||||
create the current sname:VkPipeline, as described in
|
||||
<<descriptorsets-compatibility>>
|
||||
For each set _n_ that is statically used by the sname:VkPipeline bound
|
||||
to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor set must: have
|
||||
been bound to _n_ at ename:VK_PIPELINE_BIND_POINT_GRAPHICS, with a
|
||||
sname:VkPipelineLayout that is compatible for set _n_, with the
|
||||
sname:VkPipelineLayout used to create the current sname:VkPipeline, as
|
||||
described in <<descriptorsets-compatibility>>
|
||||
* [[VUID-vkCmdDrawIndirectCountAMD-None-00510]]
|
||||
For each push constant that is statically used by the sname:VkPipeline
|
||||
currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a push
|
||||
constant value must: have been set for
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS, with a sname:VkPipelineLayout
|
||||
that is compatible for push constants, with the sname:VkPipelineLayout
|
||||
used to create the current sname:VkPipeline, as described in
|
||||
<<descriptorsets-compatibility>>
|
||||
bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a push constant value
|
||||
must: have been set for ename:VK_PIPELINE_BIND_POINT_GRAPHICS, with a
|
||||
sname:VkPipelineLayout that is compatible for push constants, with the
|
||||
sname:VkPipelineLayout used to create the current sname:VkPipeline, as
|
||||
described in <<descriptorsets-compatibility>>
|
||||
* [[VUID-vkCmdDrawIndirectCountAMD-None-00511]]
|
||||
Descriptors in each bound descriptor set, specified via
|
||||
fname:vkCmdBindDescriptorSets, must: be valid if they are statically
|
||||
used by the currently bound sname:VkPipeline object, specified via
|
||||
used by the bound sname:VkPipeline object, specified via
|
||||
fname:vkCmdBindPipeline
|
||||
* [[VUID-vkCmdDrawIndirectCountAMD-None-00512]]
|
||||
All vertex input bindings accessed via vertex input variables declared
|
||||
|
@ -1206,7 +1185,7 @@ located at pname:countBufferOffset and use this as the draw count.
|
|||
A valid graphics pipeline must: be bound to the current command buffer
|
||||
with ename:VK_PIPELINE_BIND_POINT_GRAPHICS
|
||||
* [[VUID-vkCmdDrawIndirectCountAMD-None-00514]]
|
||||
If the sname:VkPipeline object currently bound to
|
||||
If the sname:VkPipeline object bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS requires any dynamic state, that
|
||||
state must: have been set on the current command buffer
|
||||
* [[VUID-vkCmdDrawIndirectCountAMD-countBuffer-00515]]
|
||||
|
@ -1226,39 +1205,37 @@ located at pname:countBufferOffset and use this as the draw count.
|
|||
pipeline via a descriptor set
|
||||
* [[VUID-vkCmdDrawIndirectCountAMD-None-00519]]
|
||||
If any sname:VkSampler object that is accessed from a shader by the
|
||||
sname:VkPipeline currently bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it
|
||||
must: not be used to sample from any sname:VkImage with a
|
||||
sname:VkImageView of the type ename:VK_IMAGE_VIEW_TYPE_3D,
|
||||
ename:VK_IMAGE_VIEW_TYPE_CUBE, ename:VK_IMAGE_VIEW_TYPE_1D_ARRAY,
|
||||
ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY or
|
||||
sname:VkPipeline bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses
|
||||
unnormalized coordinates, it must: not be used to sample from any
|
||||
sname:VkImage with a sname:VkImageView of the type
|
||||
ename:VK_IMAGE_VIEW_TYPE_3D, ename:VK_IMAGE_VIEW_TYPE_CUBE,
|
||||
ename:VK_IMAGE_VIEW_TYPE_1D_ARRAY, ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY or
|
||||
ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
|
||||
* [[VUID-vkCmdDrawIndirectCountAMD-None-00520]]
|
||||
If any sname:VkSampler object that is accessed from a shader by the
|
||||
sname:VkPipeline currently bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it
|
||||
must: not be used with any of the SPIR-V `OpImageSample*` or
|
||||
`OpImageSparseSample*` instructions with code:ImplicitLod, code:Dref or
|
||||
code:Proj in their name, in any shader stage
|
||||
sname:VkPipeline bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses
|
||||
unnormalized coordinates, it must: not be used with any of the SPIR-V
|
||||
`OpImageSample*` or `OpImageSparseSample*` instructions with
|
||||
code:ImplicitLod, code:Dref or code:Proj in their name, in any shader
|
||||
stage
|
||||
* [[VUID-vkCmdDrawIndirectCountAMD-None-00521]]
|
||||
If any sname:VkSampler object that is accessed from a shader by the
|
||||
sname:VkPipeline currently bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it
|
||||
must: not be used with any of the SPIR-V `OpImageSample*` or
|
||||
`OpImageSparseSample*` instructions that includes a LOD bias or any
|
||||
offset values, in any shader stage
|
||||
sname:VkPipeline bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses
|
||||
unnormalized coordinates, it must: not be used with any of the SPIR-V
|
||||
`OpImageSample*` or `OpImageSparseSample*` instructions that includes a
|
||||
LOD bias or any offset values, in any shader stage
|
||||
* [[VUID-vkCmdDrawIndirectCountAMD-None-00522]]
|
||||
If the <<features-features-robustBufferAccess,robust buffer access>>
|
||||
feature is not enabled, and any shader stage in the sname:VkPipeline
|
||||
object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses
|
||||
a uniform buffer, it must: not access values outside of the range of
|
||||
that buffer specified in the currently bound descriptor set
|
||||
object bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform
|
||||
buffer, it must: not access values outside of the range of that buffer
|
||||
specified in the bound descriptor set
|
||||
* [[VUID-vkCmdDrawIndirectCountAMD-None-00523]]
|
||||
If the <<features-features-robustBufferAccess,robust buffer access>>
|
||||
feature is not enabled, and any shader stage in the sname:VkPipeline
|
||||
object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses
|
||||
a storage buffer, it must: not access values outside of the range of
|
||||
that buffer specified in the currently bound descriptor set
|
||||
object bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage
|
||||
buffer, it must: not access values outside of the range of that buffer
|
||||
specified in the bound descriptor set
|
||||
* [[VUID-vkCmdDrawIndirectCountAMD-linearTilingFeatures-00524]]
|
||||
Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a
|
||||
result of this command must: be of a format which supports linear
|
||||
|
@ -1280,27 +1257,26 @@ endif::VK_VERSION_1_1,VK_KHR_multiview[]
|
|||
ifdef::VK_VERSION_1_1[]
|
||||
* [[VUID-vkCmdDrawIndirectCountAMD-commandBuffer-01859]]
|
||||
If pname:commandBuffer is an unprotected command buffer, and any
|
||||
pipeline stage in the sname:VkPipeline object currently bound to
|
||||
pipeline stage in the sname:VkPipeline object bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS reads from or writes to any image
|
||||
or buffer, that image or buffer must: not be a protected image or
|
||||
protected buffer.
|
||||
* [[VUID-vkCmdDrawIndirectCountAMD-commandBuffer-01860]]
|
||||
If pname:commandBuffer is a protected command buffer, and any pipeline
|
||||
stage in the sname:VkPipeline object currently bound to
|
||||
stage in the sname:VkPipeline object bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS writes to any image or buffer,
|
||||
that image or buffer must: not be an unprotected image or unprotected
|
||||
buffer.
|
||||
* [[VUID-vkCmdDrawIndirectCountAMD-commandBuffer-01861]]
|
||||
If pname:commandBuffer is a protected command buffer, and any pipeline
|
||||
stage other than the framebuffer-space pipeline stages in the
|
||||
sname:VkPipeline object currently bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS reads from or writes to any image
|
||||
or buffer, the image or buffer must: not be a protected image or
|
||||
protected buffer.
|
||||
sname:VkPipeline object bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS
|
||||
reads from or writes to any image or buffer, the image or buffer must:
|
||||
not be a protected image or protected buffer.
|
||||
endif::VK_VERSION_1_1[]
|
||||
ifdef::VK_EXT_sample_locations[]
|
||||
* [[VUID-vkCmdDrawIndirectCountAMD-sampleLocationsEnable-01515]]
|
||||
If the currently bound graphics pipeline was created with
|
||||
If the bound graphics pipeline was created with
|
||||
slink:VkPipelineSampleLocationsStateCreateInfoEXT::pname:sampleLocationsEnable
|
||||
set to ename:VK_TRUE and the current subpass has a depth/stencil
|
||||
attachment, then that attachment must: have been created with the
|
||||
|
@ -1366,33 +1342,30 @@ If pname:drawCount is less than or equal to one, pname:stride is ignored.
|
|||
The current render pass must: be <<renderpass-compatibility,compatible>>
|
||||
with the pname:renderPass member of the
|
||||
sname:VkGraphicsPipelineCreateInfo structure specified when creating the
|
||||
sname:VkPipeline currently bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
|
||||
sname:VkPipeline bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
|
||||
* [[VUID-vkCmdDrawIndexedIndirect-subpass-00532]]
|
||||
The subpass index of the current render pass must: be equal to the
|
||||
pname:subpass member of the sname:VkGraphicsPipelineCreateInfo structure
|
||||
specified when creating the sname:VkPipeline currently bound to
|
||||
specified when creating the sname:VkPipeline bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
|
||||
* [[VUID-vkCmdDrawIndexedIndirect-None-00533]]
|
||||
For each set _n_ that is statically used by the sname:VkPipeline
|
||||
currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor
|
||||
set must: have been bound to _n_ at
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS, with a sname:VkPipelineLayout
|
||||
that is compatible for set _n_, with the sname:VkPipelineLayout used to
|
||||
create the current sname:VkPipeline, as described in
|
||||
<<descriptorsets-compatibility>>
|
||||
For each set _n_ that is statically used by the sname:VkPipeline bound
|
||||
to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor set must: have
|
||||
been bound to _n_ at ename:VK_PIPELINE_BIND_POINT_GRAPHICS, with a
|
||||
sname:VkPipelineLayout that is compatible for set _n_, with the
|
||||
sname:VkPipelineLayout used to create the current sname:VkPipeline, as
|
||||
described in <<descriptorsets-compatibility>>
|
||||
* [[VUID-vkCmdDrawIndexedIndirect-None-00534]]
|
||||
For each push constant that is statically used by the sname:VkPipeline
|
||||
currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a push
|
||||
constant value must: have been set for
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS, with a sname:VkPipelineLayout
|
||||
that is compatible for push constants, with the sname:VkPipelineLayout
|
||||
used to create the current sname:VkPipeline, as described in
|
||||
<<descriptorsets-compatibility>>
|
||||
bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a push constant value
|
||||
must: have been set for ename:VK_PIPELINE_BIND_POINT_GRAPHICS, with a
|
||||
sname:VkPipelineLayout that is compatible for push constants, with the
|
||||
sname:VkPipelineLayout used to create the current sname:VkPipeline, as
|
||||
described in <<descriptorsets-compatibility>>
|
||||
* [[VUID-vkCmdDrawIndexedIndirect-None-00535]]
|
||||
Descriptors in each bound descriptor set, specified via
|
||||
fname:vkCmdBindDescriptorSets, must: be valid if they are statically
|
||||
used by the currently bound sname:VkPipeline object, specified via
|
||||
used by the bound sname:VkPipeline object, specified via
|
||||
fname:vkCmdBindPipeline
|
||||
* [[VUID-vkCmdDrawIndexedIndirect-None-00536]]
|
||||
All vertex input bindings accessed via vertex input variables declared
|
||||
|
@ -1402,7 +1375,7 @@ If pname:drawCount is less than or equal to one, pname:stride is ignored.
|
|||
A valid graphics pipeline must: be bound to the current command buffer
|
||||
with ename:VK_PIPELINE_BIND_POINT_GRAPHICS
|
||||
* [[VUID-vkCmdDrawIndexedIndirect-None-00538]]
|
||||
If the sname:VkPipeline object currently bound to
|
||||
If the sname:VkPipeline object bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS requires any dynamic state, that
|
||||
state must: have been set on the current command buffer
|
||||
* [[VUID-vkCmdDrawIndexedIndirect-drawCount-00539]]
|
||||
|
@ -1422,39 +1395,37 @@ If pname:drawCount is less than or equal to one, pname:stride is ignored.
|
|||
pipeline via a descriptor set
|
||||
* [[VUID-vkCmdDrawIndexedIndirect-None-00543]]
|
||||
If any sname:VkSampler object that is accessed from a shader by the
|
||||
sname:VkPipeline currently bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it
|
||||
must: not be used to sample from any sname:VkImage with a
|
||||
sname:VkImageView of the type ename:VK_IMAGE_VIEW_TYPE_3D,
|
||||
ename:VK_IMAGE_VIEW_TYPE_CUBE, ename:VK_IMAGE_VIEW_TYPE_1D_ARRAY,
|
||||
ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY or
|
||||
sname:VkPipeline bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses
|
||||
unnormalized coordinates, it must: not be used to sample from any
|
||||
sname:VkImage with a sname:VkImageView of the type
|
||||
ename:VK_IMAGE_VIEW_TYPE_3D, ename:VK_IMAGE_VIEW_TYPE_CUBE,
|
||||
ename:VK_IMAGE_VIEW_TYPE_1D_ARRAY, ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY or
|
||||
ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
|
||||
* [[VUID-vkCmdDrawIndexedIndirect-None-00544]]
|
||||
If any sname:VkSampler object that is accessed from a shader by the
|
||||
sname:VkPipeline currently bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it
|
||||
must: not be used with any of the SPIR-V `OpImageSample*` or
|
||||
`OpImageSparseSample*` instructions with code:ImplicitLod, code:Dref or
|
||||
code:Proj in their name, in any shader stage
|
||||
sname:VkPipeline bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses
|
||||
unnormalized coordinates, it must: not be used with any of the SPIR-V
|
||||
`OpImageSample*` or `OpImageSparseSample*` instructions with
|
||||
code:ImplicitLod, code:Dref or code:Proj in their name, in any shader
|
||||
stage
|
||||
* [[VUID-vkCmdDrawIndexedIndirect-None-00545]]
|
||||
If any sname:VkSampler object that is accessed from a shader by the
|
||||
sname:VkPipeline currently bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it
|
||||
must: not be used with any of the SPIR-V `OpImageSample*` or
|
||||
`OpImageSparseSample*` instructions that includes a LOD bias or any
|
||||
offset values, in any shader stage
|
||||
sname:VkPipeline bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses
|
||||
unnormalized coordinates, it must: not be used with any of the SPIR-V
|
||||
`OpImageSample*` or `OpImageSparseSample*` instructions that includes a
|
||||
LOD bias or any offset values, in any shader stage
|
||||
* [[VUID-vkCmdDrawIndexedIndirect-None-00546]]
|
||||
If the <<features-features-robustBufferAccess,robust buffer access>>
|
||||
feature is not enabled, and any shader stage in the sname:VkPipeline
|
||||
object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses
|
||||
a uniform buffer, it must: not access values outside of the range of
|
||||
that buffer specified in the currently bound descriptor set
|
||||
object bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform
|
||||
buffer, it must: not access values outside of the range of that buffer
|
||||
specified in the bound descriptor set
|
||||
* [[VUID-vkCmdDrawIndexedIndirect-None-00547]]
|
||||
If the <<features-features-robustBufferAccess,robust buffer access>>
|
||||
feature is not enabled, and any shader stage in the sname:VkPipeline
|
||||
object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses
|
||||
a storage buffer, it must: not access values outside of the range of
|
||||
that buffer specified in the currently bound descriptor set
|
||||
object bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage
|
||||
buffer, it must: not access values outside of the range of that buffer
|
||||
specified in the bound descriptor set
|
||||
* [[VUID-vkCmdDrawIndexedIndirect-linearTilingFeatures-00548]]
|
||||
Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a
|
||||
result of this command must: be of a format which supports linear
|
||||
|
@ -1492,27 +1463,26 @@ endif::VK_VERSION_1_1,VK_KHR_multiview[]
|
|||
ifdef::VK_VERSION_1_1[]
|
||||
* [[VUID-vkCmdDrawIndexedIndirect-commandBuffer-01862]]
|
||||
If pname:commandBuffer is an unprotected command buffer, and any
|
||||
pipeline stage in the sname:VkPipeline object currently bound to
|
||||
pipeline stage in the sname:VkPipeline object bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS reads from or writes to any image
|
||||
or buffer, that image or buffer must: not be a protected image or
|
||||
protected buffer.
|
||||
* [[VUID-vkCmdDrawIndexedIndirect-commandBuffer-01863]]
|
||||
If pname:commandBuffer is a protected command buffer, and any pipeline
|
||||
stage in the sname:VkPipeline object currently bound to
|
||||
stage in the sname:VkPipeline object bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS writes to any image or buffer,
|
||||
that image or buffer must: not be an unprotected image or unprotected
|
||||
buffer.
|
||||
* [[VUID-vkCmdDrawIndexedIndirect-commandBuffer-01864]]
|
||||
If pname:commandBuffer is a protected command buffer, and any pipeline
|
||||
stage other than the framebuffer-space pipeline stages in the
|
||||
sname:VkPipeline object currently bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS reads from or writes to any image
|
||||
or buffer, the image or buffer must: not be a protected image or
|
||||
protected buffer.
|
||||
sname:VkPipeline object bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS
|
||||
reads from or writes to any image or buffer, the image or buffer must:
|
||||
not be a protected image or protected buffer.
|
||||
endif::VK_VERSION_1_1[]
|
||||
ifdef::VK_EXT_sample_locations[]
|
||||
* [[VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-01516]]
|
||||
If the currently bound graphics pipeline was created with
|
||||
If the bound graphics pipeline was created with
|
||||
slink:VkPipelineSampleLocationsStateCreateInfoEXT::pname:sampleLocationsEnable
|
||||
set to ename:VK_TRUE and the current subpass has a depth/stencil
|
||||
attachment, then that attachment must: have been created with the
|
||||
|
@ -1549,10 +1519,9 @@ the similarly named parameters of flink:vkCmdDrawIndexed.
|
|||
* [[VUID-VkDrawIndexedIndirectCommand-indexSize-00553]]
|
||||
[eq]#(pname:indexSize * (pname:firstIndex {plus} pname:indexCount)
|
||||
{plus} pname:offset)# must: be less than or equal to the size of the
|
||||
currently bound index buffer, with pname:indexSize being based on the
|
||||
type specified by pname:indexType, where the index buffer,
|
||||
pname:indexType, and pname:offset are specified via
|
||||
fname:vkCmdBindIndexBuffer
|
||||
bound index buffer, with pname:indexSize being based on the type
|
||||
specified by pname:indexType, where the index buffer, pname:indexType,
|
||||
and pname:offset are specified via fname:vkCmdBindIndexBuffer
|
||||
* [[VUID-VkDrawIndexedIndirectCommand-firstInstance-00554]]
|
||||
If the
|
||||
<<features-features-drawIndirectFirstInstance,drawIndirectFirstInstance>>
|
||||
|
@ -1629,33 +1598,30 @@ located at pname:countBufferOffset and use this as the draw count.
|
|||
The current render pass must: be <<renderpass-compatibility,compatible>>
|
||||
with the pname:renderPass member of the
|
||||
sname:VkGraphicsPipelineCreateInfo structure specified when creating the
|
||||
sname:VkPipeline currently bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
|
||||
sname:VkPipeline bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
|
||||
* [[VUID-vkCmdDrawIndexedIndirectCountAMD-subpass-00561]]
|
||||
The subpass index of the current render pass must: be equal to the
|
||||
pname:subpass member of the sname:VkGraphicsPipelineCreateInfo structure
|
||||
specified when creating the sname:VkPipeline currently bound to
|
||||
specified when creating the sname:VkPipeline bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
|
||||
* [[VUID-vkCmdDrawIndexedIndirectCountAMD-None-00562]]
|
||||
For each set _n_ that is statically used by the sname:VkPipeline
|
||||
currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor
|
||||
set must: have been bound to _n_ at
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS, with a sname:VkPipelineLayout
|
||||
that is compatible for set _n_, with the sname:VkPipelineLayout used to
|
||||
create the current sname:VkPipeline, as described in
|
||||
<<descriptorsets-compatibility>>
|
||||
For each set _n_ that is statically used by the sname:VkPipeline bound
|
||||
to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor set must: have
|
||||
been bound to _n_ at ename:VK_PIPELINE_BIND_POINT_GRAPHICS, with a
|
||||
sname:VkPipelineLayout that is compatible for set _n_, with the
|
||||
sname:VkPipelineLayout used to create the current sname:VkPipeline, as
|
||||
described in <<descriptorsets-compatibility>>
|
||||
* [[VUID-vkCmdDrawIndexedIndirectCountAMD-None-00563]]
|
||||
For each push constant that is statically used by the sname:VkPipeline
|
||||
currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a push
|
||||
constant value must: have been set for
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS, with a sname:VkPipelineLayout
|
||||
that is compatible for push constants, with the sname:VkPipelineLayout
|
||||
used to create the current sname:VkPipeline, as described in
|
||||
<<descriptorsets-compatibility>>
|
||||
bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a push constant value
|
||||
must: have been set for ename:VK_PIPELINE_BIND_POINT_GRAPHICS, with a
|
||||
sname:VkPipelineLayout that is compatible for push constants, with the
|
||||
sname:VkPipelineLayout used to create the current sname:VkPipeline, as
|
||||
described in <<descriptorsets-compatibility>>
|
||||
* [[VUID-vkCmdDrawIndexedIndirectCountAMD-None-00564]]
|
||||
Descriptors in each bound descriptor set, specified via
|
||||
fname:vkCmdBindDescriptorSets, must: be valid if they are statically
|
||||
used by the currently bound sname:VkPipeline object, specified via
|
||||
used by the bound sname:VkPipeline object, specified via
|
||||
fname:vkCmdBindPipeline
|
||||
* [[VUID-vkCmdDrawIndexedIndirectCountAMD-None-00565]]
|
||||
All vertex input bindings accessed via vertex input variables declared
|
||||
|
@ -1665,7 +1631,7 @@ located at pname:countBufferOffset and use this as the draw count.
|
|||
A valid graphics pipeline must: be bound to the current command buffer
|
||||
with ename:VK_PIPELINE_BIND_POINT_GRAPHICS
|
||||
* [[VUID-vkCmdDrawIndexedIndirectCountAMD-None-00567]]
|
||||
If the sname:VkPipeline object currently bound to
|
||||
If the sname:VkPipeline object bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS requires any dynamic state, that
|
||||
state must: have been set on the current command buffer
|
||||
* [[VUID-vkCmdDrawIndexedIndirectCountAMD-countBuffer-00568]]
|
||||
|
@ -1685,39 +1651,37 @@ located at pname:countBufferOffset and use this as the draw count.
|
|||
pipeline via a descriptor set
|
||||
* [[VUID-vkCmdDrawIndexedIndirectCountAMD-None-00572]]
|
||||
If any sname:VkSampler object that is accessed from a shader by the
|
||||
sname:VkPipeline currently bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it
|
||||
must: not be used to sample from any sname:VkImage with a
|
||||
sname:VkImageView of the type ename:VK_IMAGE_VIEW_TYPE_3D,
|
||||
ename:VK_IMAGE_VIEW_TYPE_CUBE, ename:VK_IMAGE_VIEW_TYPE_1D_ARRAY,
|
||||
ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY or
|
||||
sname:VkPipeline bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses
|
||||
unnormalized coordinates, it must: not be used to sample from any
|
||||
sname:VkImage with a sname:VkImageView of the type
|
||||
ename:VK_IMAGE_VIEW_TYPE_3D, ename:VK_IMAGE_VIEW_TYPE_CUBE,
|
||||
ename:VK_IMAGE_VIEW_TYPE_1D_ARRAY, ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY or
|
||||
ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
|
||||
* [[VUID-vkCmdDrawIndexedIndirectCountAMD-None-00573]]
|
||||
If any sname:VkSampler object that is accessed from a shader by the
|
||||
sname:VkPipeline currently bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it
|
||||
must: not be used with any of the SPIR-V `OpImageSample*` or
|
||||
`OpImageSparseSample*` instructions with code:ImplicitLod, code:Dref or
|
||||
code:Proj in their name, in any shader stage
|
||||
sname:VkPipeline bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses
|
||||
unnormalized coordinates, it must: not be used with any of the SPIR-V
|
||||
`OpImageSample*` or `OpImageSparseSample*` instructions with
|
||||
code:ImplicitLod, code:Dref or code:Proj in their name, in any shader
|
||||
stage
|
||||
* [[VUID-vkCmdDrawIndexedIndirectCountAMD-None-00574]]
|
||||
If any sname:VkSampler object that is accessed from a shader by the
|
||||
sname:VkPipeline currently bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it
|
||||
must: not be used with any of the SPIR-V `OpImageSample*` or
|
||||
`OpImageSparseSample*` instructions that includes a LOD bias or any
|
||||
offset values, in any shader stage
|
||||
sname:VkPipeline bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses
|
||||
unnormalized coordinates, it must: not be used with any of the SPIR-V
|
||||
`OpImageSample*` or `OpImageSparseSample*` instructions that includes a
|
||||
LOD bias or any offset values, in any shader stage
|
||||
* [[VUID-vkCmdDrawIndexedIndirectCountAMD-None-00575]]
|
||||
If the <<features-features-robustBufferAccess,robust buffer access>>
|
||||
feature is not enabled, and any shader stage in the sname:VkPipeline
|
||||
object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses
|
||||
a uniform buffer, it must: not access values outside of the range of
|
||||
that buffer specified in the currently bound descriptor set
|
||||
object bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform
|
||||
buffer, it must: not access values outside of the range of that buffer
|
||||
specified in the bound descriptor set
|
||||
* [[VUID-vkCmdDrawIndexedIndirectCountAMD-None-00576]]
|
||||
If the <<features-features-robustBufferAccess,robust buffer access>>
|
||||
feature is not enabled, and any shader stage in the sname:VkPipeline
|
||||
object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses
|
||||
a storage buffer, it must: not access values outside of the range of
|
||||
that buffer specified in the currently bound descriptor set
|
||||
object bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage
|
||||
buffer, it must: not access values outside of the range of that buffer
|
||||
specified in the bound descriptor set
|
||||
* [[VUID-vkCmdDrawIndexedIndirectCountAMD-linearTilingFeatures-00577]]
|
||||
Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a
|
||||
result of this command must: be of a format which supports linear
|
||||
|
@ -1739,27 +1703,26 @@ endif::VK_VERSION_1_1,VK_KHR_multiview[]
|
|||
ifdef::VK_VERSION_1_1[]
|
||||
* [[VUID-vkCmdDrawIndexedIndirectCountAMD-commandBuffer-01865]]
|
||||
If pname:commandBuffer is an unprotected command buffer, and any
|
||||
pipeline stage in the sname:VkPipeline object currently bound to
|
||||
pipeline stage in the sname:VkPipeline object bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS reads from or writes to any image
|
||||
or buffer, that image or buffer must: not be a protected image or
|
||||
protected buffer.
|
||||
* [[VUID-vkCmdDrawIndexedIndirectCountAMD-commandBuffer-01866]]
|
||||
If pname:commandBuffer is a protected command buffer, and any pipeline
|
||||
stage in the sname:VkPipeline object currently bound to
|
||||
stage in the sname:VkPipeline object bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS writes to any image or buffer,
|
||||
that image or buffer must: not be an unprotected image or unprotected
|
||||
buffer.
|
||||
* [[VUID-vkCmdDrawIndexedIndirectCountAMD-commandBuffer-01867]]
|
||||
If pname:commandBuffer is a protected command buffer, and any pipeline
|
||||
stage other than the framebuffer-space pipeline stages in the
|
||||
sname:VkPipeline object currently bound to
|
||||
ename:VK_PIPELINE_BIND_POINT_GRAPHICS reads from or writes to any image
|
||||
or buffer, the image or buffer must: not be a protected image or
|
||||
protected buffer.
|
||||
sname:VkPipeline object bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS
|
||||
reads from or writes to any image or buffer, the image or buffer must:
|
||||
not be a protected image or protected buffer.
|
||||
endif::VK_VERSION_1_1[]
|
||||
ifdef::VK_EXT_sample_locations[]
|
||||
* [[VUID-vkCmdDrawIndexedIndirectCountAMD-sampleLocationsEnable-01517]]
|
||||
If the currently bound graphics pipeline was created with
|
||||
If the bound graphics pipeline was created with
|
||||
slink:VkPipelineSampleLocationsStateCreateInfoEXT::pname:sampleLocationsEnable
|
||||
set to ename:VK_TRUE and the current subpass has a depth/stencil
|
||||
attachment, then that attachment must: have been created with the
|
||||
|
|
|
@ -1042,6 +1042,202 @@ include::../validity/structs/VkPhysicalDeviceShaderDrawParameterFeatures.txt[]
|
|||
--
|
||||
endif::VK_VERSION_1_1[]
|
||||
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
|
||||
[open,refpage='VkPhysicalDeviceDescriptorIndexingFeaturesEXT',desc='Structure describing descriptor indexing features that can be supported by an implementation',type='structs']
|
||||
--
|
||||
The sname:VkPhysicalDeviceDescriptorIndexingFeaturesEXT structure is defined
|
||||
as:
|
||||
|
||||
include::../api/structs/VkPhysicalDeviceDescriptorIndexingFeaturesEXT.txt[]
|
||||
|
||||
The members of the sname:VkPhysicalDeviceDescriptorIndexingFeaturesEXT
|
||||
structure describe the following features:
|
||||
|
||||
* [[features-features-shaderInputAttachmentArrayDynamicIndexing]]
|
||||
pname:shaderInputAttachmentArrayDynamicIndexing indicates whether arrays
|
||||
of input attachments can: be indexed by dynamically uniform integer
|
||||
expressions in shader code.
|
||||
If this feature is not enabled, resources with a descriptor type of
|
||||
ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT must: be indexed only by
|
||||
constant integral expressions when aggregated into arrays in shader
|
||||
code.
|
||||
This also indicates whether shader modules can: declare the
|
||||
code:InputAttachmentArrayDynamicIndexingEXT capability.
|
||||
* [[features-features-shaderUniformTexelBufferArrayDynamicIndexing]]
|
||||
pname:shaderUniformTexelBufferArrayDynamicIndexing indicates whether
|
||||
arrays of uniform texel buffers can: be indexed by dynamically uniform
|
||||
integer expressions in shader code.
|
||||
If this feature is not enabled, resources with a descriptor type of
|
||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER must: be indexed only by
|
||||
constant integral expressions when aggregated into arrays in shader
|
||||
code.
|
||||
This also indicates whether shader modules can: declare the
|
||||
code:UniformTexelBufferArrayDynamicIndexingEXT capability.
|
||||
* [[features-features-shaderStorageTexelBufferArrayDynamicIndexing]]
|
||||
pname:shaderStorageTexelBufferArrayDynamicIndexing indicates whether
|
||||
arrays of storage texel buffers can: be indexed by dynamically uniform
|
||||
integer expressions in shader code.
|
||||
If this feature is not enabled, resources with a descriptor type of
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER must: be indexed only by
|
||||
constant integral expressions when aggregated into arrays in shader
|
||||
code.
|
||||
This also indicates whether shader modules can: declare the
|
||||
code:StorageTexelBufferArrayDynamicIndexingEXT capability.
|
||||
* [[features-features-shaderUniformBufferArrayNonUniformIndexing]]
|
||||
pname:shaderUniformBufferArrayNonUniformIndexing indicates whether
|
||||
arrays of uniform buffers can: be indexed by non-uniform integer
|
||||
expressions in shader code.
|
||||
If this feature is not enabled, resources with a descriptor type of
|
||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or
|
||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC must: not be indexed by
|
||||
non-uniform integer expressions when aggregated into arrays in shader
|
||||
code.
|
||||
This also indicates whether shader modules can: declare the
|
||||
code:UniformBufferArrayNonUniformIndexingEXT capability.
|
||||
* [[features-features-shaderSampledImageArrayNonUniformIndexing]]
|
||||
pname:shaderSampledImageArrayNonUniformIndexing indicates whether arrays
|
||||
of samplers or sampled images can: be indexed by non-uniform integer
|
||||
expressions in shader code.
|
||||
If this feature is not enabled, resources with a descriptor type of
|
||||
ename:VK_DESCRIPTOR_TYPE_SAMPLER,
|
||||
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, or
|
||||
ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE must: not be indexed by
|
||||
non-uniform integer expressions when aggregated into arrays in shader
|
||||
code.
|
||||
This also indicates whether shader modules can: declare the
|
||||
code:SampledImageArrayNonUniformIndexingEXT capability.
|
||||
* [[features-features-shaderStorageBufferArrayNonUniformIndexing]]
|
||||
pname:shaderStorageBufferArrayNonUniformIndexing indicates whether
|
||||
arrays of storage buffers can: be indexed by non-uniform integer
|
||||
expressions in shader code.
|
||||
If this feature is not enabled, resources with a descriptor type of
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC must: not be indexed by
|
||||
non-uniform integer expressions when aggregated into arrays in shader
|
||||
code.
|
||||
This also indicates whether shader modules can: declare the
|
||||
code:StorageBufferArrayNonUniformIndexingEXT capability.
|
||||
* [[features-features-shaderStorageImageArrayNonUniformIndexing]]
|
||||
pname:shaderStorageImageArrayNonUniformIndexing indicates whether arrays
|
||||
of storage images can: be indexed by non-uniform integer expressions in
|
||||
shader code.
|
||||
If this feature is not enabled, resources with a descriptor type of
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE must: not be indexed by
|
||||
non-uniform integer expressions when aggregated into arrays in shader
|
||||
code.
|
||||
This also indicates whether shader modules can: declare the
|
||||
code:StorageImageArrayNonUniformIndexingEXT capability.
|
||||
* [[features-features-shaderInputAttachmentArrayNonUniformIndexing]]
|
||||
pname:shaderInputAttachmentArrayNonUniformIndexing indicates whether
|
||||
arrays of input attachments can: be indexed by non-uniform integer
|
||||
expressions in shader code.
|
||||
If this feature is not enabled, resources with a descriptor type of
|
||||
ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT must: not be indexed by
|
||||
non-uniform integer expressions when aggregated into arrays in shader
|
||||
code.
|
||||
This also indicates whether shader modules can: declare the
|
||||
code:InputAttachmentArrayNonUniformIndexingEXT capability.
|
||||
* [[features-features-shaderUniformTexelBufferArrayNonUniformIndexing]]
|
||||
pname:shaderUniformTexelBufferArrayNonUniformIndexing indicates whether
|
||||
arrays of uniform texel buffers can: be indexed by non-uniform integer
|
||||
expressions in shader code.
|
||||
If this feature is not enabled, resources with a descriptor type of
|
||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER must: not be indexed by
|
||||
non-uniform integer expressions when aggregated into arrays in shader
|
||||
code.
|
||||
This also indicates whether shader modules can: declare the
|
||||
code:UniformTexelBufferArrayNonUniformIndexingEXT capability.
|
||||
* [[features-features-shaderStorageTexelBufferArrayNonUniformIndexing]]
|
||||
pname:shaderStorageTexelBufferArrayNonUniformIndexing indicates whether
|
||||
arrays of storage texel buffers can: be indexed by non-uniform integer
|
||||
expressions in shader code.
|
||||
If this feature is not enabled, resources with a descriptor type of
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER must: not be indexed by
|
||||
non-uniform integer expressions when aggregated into arrays in shader
|
||||
code.
|
||||
This also indicates whether shader modules can: declare the
|
||||
code:StorageTexelBufferArrayNonUniformIndexingEXT capability.
|
||||
* [[features-features-descriptorBindingUniformBufferUpdateAfterBind]]
|
||||
pname:descriptorBindingUniformBufferUpdateAfterBind indicates whether
|
||||
the implementation supports updating uniform buffer descriptors after a
|
||||
set is bound.
|
||||
If this feature is not enabled,
|
||||
ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT must: not be used
|
||||
with ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER.
|
||||
* [[features-features-descriptorBindingSampledImageUpdateAfterBind]]
|
||||
pname:descriptorBindingSampledImageUpdateAfterBind indicates whether the
|
||||
implementation supports updating sampled image descriptors after a set
|
||||
is bound.
|
||||
If this feature is not enabled,
|
||||
ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT must: not be used
|
||||
with ename:VK_DESCRIPTOR_TYPE_SAMPLER,
|
||||
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, or
|
||||
ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE.
|
||||
* [[features-features-descriptorBindingStorageImageUpdateAfterBind]]
|
||||
pname:descriptorBindingStorageImageUpdateAfterBind indicates whether the
|
||||
implementation supports updating storage image descriptors after a set
|
||||
is bound.
|
||||
If this feature is not enabled,
|
||||
ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT must: not be used
|
||||
with ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE.
|
||||
* [[features-features-descriptorBindingStorageBufferUpdateAfterBind]]
|
||||
pname:descriptorBindingStorageBufferUpdateAfterBind indicates whether
|
||||
the implementation supports updating storage buffer descriptors after a
|
||||
set is bound.
|
||||
If this feature is not enabled,
|
||||
ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT must: not be used
|
||||
with ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER.
|
||||
* [[features-features-descriptorBindingUniformTexelBufferUpdateAfterBind]]
|
||||
pname:descriptorBindingUniformTexelBufferUpdateAfterBind indicates
|
||||
whether the implementation supports updating uniform texel buffer
|
||||
descriptors after a set is bound.
|
||||
If this feature is not enabled,
|
||||
ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT must: not be used
|
||||
with ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER.
|
||||
* [[features-features-descriptorBindingStorageTexelBufferUpdateAfterBind]]
|
||||
pname:descriptorBindingStorageTexelBufferUpdateAfterBind indicates
|
||||
whether the implementation supports updating storage texel buffer
|
||||
descriptors after a set is bound.
|
||||
If this feature is not enabled,
|
||||
ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT must: not be used
|
||||
with ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER.
|
||||
* [[features-features-descriptorBindingUpdateUnusedWhilePending]]
|
||||
pname:descriptorBindingUpdateUnusedWhilePending indicates whether the
|
||||
implementation supports updating descriptors while the set is in use.
|
||||
If this feature is not enabled,
|
||||
ename:VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT must:
|
||||
not be used.
|
||||
* [[features-features-descriptorBindingPartiallyBound]]
|
||||
pname:descriptorBindingPartiallyBound indicates whether the
|
||||
implementation supports statically using a descriptor set binding in
|
||||
which some descriptors are not valid.
|
||||
If this feature is not enabled,
|
||||
ename:VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT must: not be used.
|
||||
* [[features-features-descriptorBindingVariableDescriptorCount]]
|
||||
pname:descriptorBindingVariableDescriptorCount indicates whether the
|
||||
implementation supports descriptor sets with a variable-sized last
|
||||
binding.
|
||||
If this feature is not enabled,
|
||||
ename:VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT must: not
|
||||
be used.
|
||||
* [[features-features-runtimeDescriptorArray]]
|
||||
pname:runtimeDescriptorArray indicates whether the implementation
|
||||
supports the SPIR-V +RuntimeDescriptorArrayEXT+ capability.
|
||||
If this feature is not enabled, descriptors must: not be declared in
|
||||
runtime arrays.
|
||||
|
||||
If the sname:VkPhysicalDeviceDescriptorIndexingFeaturesEXT structure is
|
||||
included in the pname:pNext chain of slink:VkPhysicalDeviceFeatures2KHR, it
|
||||
is filled with values indicating whether each feature is supported.
|
||||
sname:VkPhysicalDeviceDescriptorIndexingFeaturesEXT can: also be used in the
|
||||
pname:pNext chain of slink:VkDeviceCreateInfo to enable features.
|
||||
|
||||
include::../validity/structs/VkPhysicalDeviceDescriptorIndexingFeaturesEXT.txt[]
|
||||
--
|
||||
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
|
||||
|
||||
[[features-features-requirements]]
|
||||
=== Feature Requirements
|
||||
|
@ -1057,6 +1253,45 @@ ifdef::VK_VERSION_1_1,VK_KHR_variable_pointers[]
|
|||
pname:variablePointersStorageBuffer>>, if the
|
||||
`<<VK_KHR_variable_pointers>>` extension is supported.
|
||||
endif::VK_VERSION_1_1,VK_KHR_variable_pointers[]
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
* If the `<<VK_EXT_descriptor_indexing>>` extension is supported:
|
||||
** <<features-features-shaderSampledImageArrayDynamicIndexing,
|
||||
pname:shaderSampledImageArrayDynamicIndexing>>
|
||||
** <<features-features-shaderStorageBufferArrayDynamicIndexing,
|
||||
pname:shaderStorageBufferArrayDynamicIndexing>>
|
||||
** <<features-features-shaderUniformTexelBufferArrayDynamicIndexing,
|
||||
pname:shaderUniformTexelBufferArrayDynamicIndexing>>
|
||||
** <<features-features-shaderStorageTexelBufferArrayDynamicIndexing,
|
||||
pname:shaderStorageTexelBufferArrayDynamicIndexing>>
|
||||
** <<features-features-shaderSampledImageArrayNonUniformIndexing,
|
||||
pname:shaderSampledImageArrayNonUniformIndexing>>
|
||||
** <<features-features-shaderStorageBufferArrayNonUniformIndexing,
|
||||
pname:shaderStorageBufferArrayNonUniformIndexing>>
|
||||
** <<features-features-shaderUniformTexelBufferArrayNonUniformIndexing,
|
||||
pname:shaderUniformTexelBufferArrayNonUniformIndexing>>
|
||||
** <<features-features-descriptorBindingSampledImageUpdateAfterBind,
|
||||
pname:descriptorBindingSampledImageUpdateAfterBind>>
|
||||
** <<features-features-descriptorBindingStorageImageUpdateAfterBind,
|
||||
pname:descriptorBindingStorageImageUpdateAfterBind>>
|
||||
** <<features-features-descriptorBindingStorageBufferUpdateAfterBind,
|
||||
pname:descriptorBindingStorageBufferUpdateAfterBind>> (see also
|
||||
<<features-limits-robustBufferAccessUpdateAfterBind,
|
||||
pname:robustBufferAccessUpdateAfterBind>>)
|
||||
** <<features-features-descriptorBindingUniformTexelBufferUpdateAfterBind,
|
||||
pname:descriptorBindingUniformTexelBufferUpdateAfterBind>> (see also
|
||||
<<features-limits-robustBufferAccessUpdateAfterBind,
|
||||
pname:robustBufferAccessUpdateAfterBind>>)
|
||||
** <<features-features-descriptorBindingStorageTexelBufferUpdateAfterBind,
|
||||
pname:descriptorBindingStorageTexelBufferUpdateAfterBind>> (see also
|
||||
<<features-limits-robustBufferAccessUpdateAfterBind,
|
||||
pname:robustBufferAccessUpdateAfterBind>>)
|
||||
** <<features-features-descriptorBindingUpdateUnusedWhilePending,
|
||||
pname:descriptorBindingUpdateUnusedWhilePending>>
|
||||
** <<features-features-descriptorBindingPartiallyBound,
|
||||
pname:descriptorBindingPartiallyBound>>
|
||||
** <<features-features-runtimeDescriptorArray,
|
||||
pname:runtimeDescriptorArray>>
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
|
||||
All other features defined in the Specification are optional:.
|
||||
|
||||
|
@ -1150,6 +1385,11 @@ include::../api/structs/VkPhysicalDeviceLimits.txt[]
|
|||
Descriptors with a type of ename:VK_DESCRIPTOR_TYPE_SAMPLER or
|
||||
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER count against this
|
||||
limit.
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
Only descriptors in descriptor set layouts created without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set count against this limit.
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
A descriptor is accessible to a shader stage when the pname:stageFlags
|
||||
member of the sname:VkDescriptorSetLayoutBinding structure has the bit
|
||||
for that shader stage set.
|
||||
|
@ -1162,6 +1402,11 @@ include::../api/structs/VkPhysicalDeviceLimits.txt[]
|
|||
Descriptors with a type of ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or
|
||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC count against this
|
||||
limit.
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
Only descriptors in descriptor set layouts created without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set count against this limit.
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
A descriptor is accessible to a shader stage when the pname:stageFlags
|
||||
member of the sname:VkDescriptorSetLayoutBinding structure has the bit
|
||||
for that shader stage set.
|
||||
|
@ -1174,6 +1419,11 @@ include::../api/structs/VkPhysicalDeviceLimits.txt[]
|
|||
Descriptors with a type of ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC count against this
|
||||
limit.
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
Only descriptors in descriptor set layouts created without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set count against this limit.
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
A descriptor is accessible to a pipeline shader stage when the
|
||||
pname:stageFlags member of the sname:VkDescriptorSetLayoutBinding
|
||||
structure has the bit for that shader stage set.
|
||||
|
@ -1187,6 +1437,11 @@ include::../api/structs/VkPhysicalDeviceLimits.txt[]
|
|||
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
|
||||
ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, or
|
||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER count against this limit.
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
Only descriptors in descriptor set layouts created without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set count against this limit.
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
A descriptor is accessible to a pipeline shader stage when the
|
||||
pname:stageFlags member of the sname:VkDescriptorSetLayoutBinding
|
||||
structure has the bit for that shader stage set.
|
||||
|
@ -1199,6 +1454,11 @@ include::../api/structs/VkPhysicalDeviceLimits.txt[]
|
|||
pipeline layout.
|
||||
Descriptors with a type of ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER count against this limit.
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
Only descriptors in descriptor set layouts created without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set count against this limit.
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
A descriptor is accessible to a pipeline shader stage when the
|
||||
pname:stageFlags member of the sname:VkDescriptorSetLayoutBinding
|
||||
structure has the bit for that shader stage set.
|
||||
|
@ -1210,6 +1470,11 @@ include::../api/structs/VkPhysicalDeviceLimits.txt[]
|
|||
pipeline layout.
|
||||
Descriptors with a type of ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
|
||||
count against this limit.
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
Only descriptors in descriptor set layouts created without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set count against this limit.
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
A descriptor is accessible to a pipeline shader stage when the
|
||||
pname:stageFlags member of the sname:VkDescriptorSetLayoutBinding
|
||||
structure has the bit for that shader stage set.
|
||||
|
@ -1229,6 +1494,11 @@ include::../api/structs/VkPhysicalDeviceLimits.txt[]
|
|||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, or
|
||||
ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT count against this limit.
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
Only descriptors in descriptor set layouts created without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set count against this limit.
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
For the fragment shader stage the framebuffer color attachments also
|
||||
count against this limit.
|
||||
* [[features-limits-maxDescriptorSetSamplers]]
|
||||
|
@ -1238,6 +1508,11 @@ include::../api/structs/VkPhysicalDeviceLimits.txt[]
|
|||
Descriptors with a type of ename:VK_DESCRIPTOR_TYPE_SAMPLER or
|
||||
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER count against this
|
||||
limit.
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
Only descriptors in descriptor set layouts created without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set count against this limit.
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
See <<descriptorsets-sampler>> and
|
||||
<<descriptorsets-combinedimagesampler>>.
|
||||
* [[features-limits-maxDescriptorSetUniformBuffers]]
|
||||
|
@ -1247,6 +1522,11 @@ include::../api/structs/VkPhysicalDeviceLimits.txt[]
|
|||
Descriptors with a type of ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or
|
||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC count against this
|
||||
limit.
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
Only descriptors in descriptor set layouts created without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set count against this limit.
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
See <<descriptorsets-uniformbuffer>> and
|
||||
<<descriptorsets-uniformbufferdynamic>>.
|
||||
* [[features-limits-maxDescriptorSetUniformBuffersDynamic]]
|
||||
|
@ -1257,6 +1537,11 @@ include::../api/structs/VkPhysicalDeviceLimits.txt[]
|
|||
Descriptors with a type of
|
||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC count against this
|
||||
limit.
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
Only descriptors in descriptor set layouts created without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set count against this limit.
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
See <<descriptorsets-uniformbufferdynamic>>.
|
||||
* [[features-limits-maxDescriptorSetStorageBuffers]]
|
||||
pname:maxDescriptorSetStorageBuffers is the maximum number of storage
|
||||
|
@ -1265,6 +1550,11 @@ include::../api/structs/VkPhysicalDeviceLimits.txt[]
|
|||
Descriptors with a type of ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC count against this
|
||||
limit.
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
Only descriptors in descriptor set layouts created without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set count against this limit.
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
See <<descriptorsets-storagebuffer>> and
|
||||
<<descriptorsets-storagebufferdynamic>>.
|
||||
* [[features-limits-maxDescriptorSetStorageBuffersDynamic]]
|
||||
|
@ -1275,6 +1565,11 @@ include::../api/structs/VkPhysicalDeviceLimits.txt[]
|
|||
Descriptors with a type of
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC count against this
|
||||
limit.
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
Only descriptors in descriptor set layouts created without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set count against this limit.
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
See <<descriptorsets-storagebufferdynamic>>.
|
||||
* [[features-limits-maxDescriptorSetSampledImages]]
|
||||
pname:maxDescriptorSetSampledImages is the maximum number of sampled
|
||||
|
@ -1284,6 +1579,11 @@ include::../api/structs/VkPhysicalDeviceLimits.txt[]
|
|||
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
|
||||
ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, or
|
||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER count against this limit.
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
Only descriptors in descriptor set layouts created without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set count against this limit.
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
See <<descriptorsets-combinedimagesampler>>,
|
||||
<<descriptorsets-sampledimage>>, and
|
||||
<<descriptorsets-uniformtexelbuffer>>.
|
||||
|
@ -1293,6 +1593,11 @@ include::../api/structs/VkPhysicalDeviceLimits.txt[]
|
|||
across all pipeline shader stages and descriptor set numbers.
|
||||
Descriptors with a type of ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER count against this limit.
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
Only descriptors in descriptor set layouts created without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set count against this limit.
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
See <<descriptorsets-storageimage>>, and
|
||||
<<descriptorsets-storagetexelbuffer>>.
|
||||
* [[features-limits-maxDescriptorSetInputAttachments]]
|
||||
|
@ -1301,6 +1606,11 @@ include::../api/structs/VkPhysicalDeviceLimits.txt[]
|
|||
layout across all pipeline shader stages and descriptor set numbers.
|
||||
Descriptors with a type of ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
|
||||
count against this limit.
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
Only descriptors in descriptor set layouts created without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set count against this limit.
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
See <<descriptorsets-inputattachment>>.
|
||||
* [[features-limits-maxVertexInputAttributes]]
|
||||
pname:maxVertexInputAttributes is the maximum number of vertex input
|
||||
|
@ -2117,6 +2427,12 @@ include::../api/enums/VkSubgroupFeatureFlagBits.txt[]
|
|||
* [[features-features-subgroup-quad]] ename:VK_SUBGROUP_FEATURE_QUAD_BIT
|
||||
specifies the device will accept SPIR-V shader modules that contain the
|
||||
code:GroupNonUniformQuad capability.
|
||||
ifdef::VK_NV_shader_subgroup_partitioned[]
|
||||
* [[features-features-subgroup-partitioned]]
|
||||
ename:VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV specifies the device will
|
||||
accept SPIR-V shader modules that contain the
|
||||
code:GroupNonUniformPartitionedNV capability.
|
||||
endif::VK_NV_shader_subgroup_partitioned[]
|
||||
|
||||
--
|
||||
|
||||
|
@ -2332,6 +2648,178 @@ include::../validity/structs/VkPhysicalDeviceMaintenance3Properties.txt[]
|
|||
|
||||
endif::VK_VERSION_1_1,VK_KHR_maintenance3[]
|
||||
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
|
||||
[open,refpage='VkPhysicalDeviceDescriptorIndexingPropertiesEXT',desc='Structure describing descriptor indexing properties that can be supported by an implementation',type='structs']
|
||||
--
|
||||
The sname:VkPhysicalDeviceDescriptorIndexingPropertiesEXT structure is
|
||||
defined as:
|
||||
|
||||
include::../api/structs/VkPhysicalDeviceDescriptorIndexingPropertiesEXT.txt[]
|
||||
|
||||
The members of the sname:VkPhysicalDeviceDescriptorIndexingPropertiesEXT
|
||||
structure describe the following implementation-dependent limits:
|
||||
|
||||
* [[features-limits-maxUpdateAfterBindDescriptorsInAllPools]]
|
||||
pname:maxUpdateAfterBindDescriptorsInAllPools is the maximum number of
|
||||
descriptors (summed over all descriptor types) that can: be created
|
||||
across all pools that are created with the
|
||||
ename:VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT bit set.
|
||||
Pool creation may: fail when this limit is exceeded, or when the space
|
||||
this limit represents can't satisfy a pool creation due to
|
||||
fragmentation.
|
||||
* [[features-limits-shaderUniformBufferArrayNonUniformIndexingNative]]
|
||||
pname:shaderUniformBufferArrayNonUniformIndexingNative is a boolean
|
||||
value indicating whether uniform buffer descriptors natively support
|
||||
nonuniform indexing.
|
||||
If this is ename:VK_FALSE, then a single dynamic instance of an
|
||||
instruction that nonuniformly indexes an array of uniform buffers may:
|
||||
execute multiple times in order to access all the descriptors.
|
||||
* [[features-limits-shaderSampledImageArrayNonUniformIndexingNative]]
|
||||
pname:shaderSampledImageArrayNonUniformIndexingNative is a boolean value
|
||||
indicating whether sampler and image descriptors natively support
|
||||
nonuniform indexing.
|
||||
If this is ename:VK_FALSE, then a single dynamic instance of an
|
||||
instruction that nonuniformly indexes an array of samplers or images
|
||||
may: execute multiple times in order to access all the descriptors.
|
||||
* [[features-limits-shaderStorageBufferArrayNonUniformIndexingNative]]
|
||||
pname:shaderStorageBufferArrayNonUniformIndexingNative is a boolean
|
||||
value indicating whether storage buffer descriptors natively support
|
||||
nonuniform indexing.
|
||||
If this is ename:VK_FALSE, then a single dynamic instance of an
|
||||
instruction that nonuniformly indexes an array of storage buffers may:
|
||||
execute multiple times in order to access all the descriptors.
|
||||
* [[features-limits-shaderStorageImageArrayNonUniformIndexingNative]]
|
||||
pname:shaderStorageImageArrayNonUniformIndexingNative is a boolean value
|
||||
indicating whether storage image descriptors natively support nonuniform
|
||||
indexing.
|
||||
If this is ename:VK_FALSE, then a single dynamic instance of an
|
||||
instruction that nonuniformly indexes an array of storage images may:
|
||||
execute multiple times in order to access all the descriptors.
|
||||
* [[features-limits-shaderInputAttachmentArrayNonUniformIndexingNative]]
|
||||
pname:shaderInputAttachmentArrayNonUniformIndexingNative is a boolean
|
||||
value indicating whether input attachment descriptors natively support
|
||||
nonuniform indexing.
|
||||
If this is ename:VK_FALSE, then a single dynamic instance of an
|
||||
instruction that nonuniformly indexes an array of input attachments may:
|
||||
execute multiple times in order to access all the descriptors.
|
||||
* [[features-limits-robustBufferAccessUpdateAfterBind]]
|
||||
pname:robustBufferAccessUpdateAfterBind is a boolean value indicating
|
||||
whether <<features-features-robustBufferAccess,
|
||||
pname:robustBufferAccess>> can: be enabled in a device simultaneously
|
||||
with pname:descriptorBindingUniformBufferUpdateAfterBind,
|
||||
pname:descriptorBindingStorageBufferUpdateAfterBind,
|
||||
pname:descriptorBindingUniformTexelBufferUpdateAfterBind, and/or
|
||||
pname:descriptorBindingStorageTexelBufferUpdateAfterBind.
|
||||
If this is ename:VK_FALSE, then either pname:robustBufferAccess must: be
|
||||
disabled or all of these update-after-bind features must: be disabled.
|
||||
* [[features-limits-quadDivergentImplicitLod]]
|
||||
pname:quadDivergentImplicitLod is a boolean value indicating whether
|
||||
implicit level of detail calculations for image operations have
|
||||
well-defined results when the image and/or sampler objects used for the
|
||||
instruction are not uniform within a quad.
|
||||
See <<textures-derivative-image-operations,Derivative Image
|
||||
Operations>>.
|
||||
* [[features-limits-maxPerStageDescriptorUpdateAfterBindSamplers]]
|
||||
pname:maxPerStageDescriptorUpdateAfterBindSamplers is similar to
|
||||
pname:maxPerStageDescriptorSamplers but counts descriptors from
|
||||
descriptor sets created with or without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set.
|
||||
* [[features-limits-maxPerStageDescriptorUpdateAfterBindUniformBuffers]]
|
||||
pname:maxPerStageDescriptorUpdateAfterBindUniformBuffers is similar to
|
||||
pname:maxPerStageDescriptorUniformBuffers but counts descriptors from
|
||||
descriptor sets created with or without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set.
|
||||
* [[features-limits-maxPerStageDescriptorUpdateAfterBindStorageBuffers]]
|
||||
pname:maxPerStageDescriptorUpdateAfterBindStorageBuffers is similar to
|
||||
pname:maxPerStageDescriptorStorageBuffers but counts descriptors from
|
||||
descriptor sets created with or without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set.
|
||||
* [[features-limits-maxPerStageDescriptorUpdateAfterBindSampledImages]]
|
||||
pname:maxPerStageDescriptorUpdateAfterBindSampledImages is similar to
|
||||
pname:maxPerStageDescriptorSampledImages but counts descriptors from
|
||||
descriptor sets created with or without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set.
|
||||
* [[features-limits-maxPerStageDescriptorUpdateAfterBindStorageImages]]
|
||||
pname:maxPerStageDescriptorUpdateAfterBindStorageImages is similar to
|
||||
pname:maxPerStageDescriptorStorageImages but counts descriptors from
|
||||
descriptor sets created with or without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set.
|
||||
* [[features-limits-maxPerStageDescriptorUpdateAfterBindInputAttachments]]
|
||||
pname:maxPerStageDescriptorUpdateAfterBindInputAttachments is similar to
|
||||
pname:maxPerStageDescriptorInputAttachments but counts descriptors from
|
||||
descriptor sets created with or without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set.
|
||||
* [[features-limits-maxPerStageUpdateAfterBindResources]]
|
||||
pname:maxPerStageUpdateAfterBindResources is similar to
|
||||
pname:maxPerStageResources but counts descriptors from descriptor sets
|
||||
created with or without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set.
|
||||
* [[features-limits-maxDescriptorSetUpdateAfterBindSamplers]]
|
||||
pname:maxDescriptorSetUpdateAfterBindSamplers is similar to
|
||||
pname:maxDescriptorSetSamplers but counts descriptors from descriptor
|
||||
sets created with or without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set.
|
||||
* [[features-limits-maxDescriptorSetUpdateAfterBindUniformBuffers]]
|
||||
pname:maxDescriptorSetUpdateAfterBindUniformBuffers is similar to
|
||||
pname:maxDescriptorSetUniformBuffers but counts descriptors from
|
||||
descriptor sets created with or without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set.
|
||||
* [[features-limits-maxDescriptorSetUpdateAfterBindUniformBuffersDynamic]]
|
||||
pname:maxDescriptorSetUpdateAfterBindUniformBuffersDynamic is similar to
|
||||
pname:maxDescriptorSetUniformBuffersDynamic but counts descriptors from
|
||||
descriptor sets created with or without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set.
|
||||
* [[features-limits-maxDescriptorSetUpdateAfterBindStorageBuffers]]
|
||||
pname:maxDescriptorSetUpdateAfterBindStorageBuffers is similar to
|
||||
pname:maxDescriptorSetStorageBuffers but counts descriptors from
|
||||
descriptor sets created with or without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set.
|
||||
* [[features-limits-maxDescriptorSetUpdateAfterBindStorageBuffersDynamic]]
|
||||
pname:maxDescriptorSetUpdateAfterBindStorageBuffersDynamic is similar to
|
||||
pname:maxDescriptorSetStorageBuffersDynamic but counts descriptors from
|
||||
descriptor sets created with or without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set.
|
||||
* [[features-limits-maxDescriptorSetUpdateAfterBindSampledImages]]
|
||||
pname:maxDescriptorSetUpdateAfterBindSampledImages is similar to
|
||||
pname:maxDescriptorSetSampledImages but counts descriptors from
|
||||
descriptor sets created with or without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set.
|
||||
* [[features-limits-maxDescriptorSetUpdateAfterBindStorageImages]]
|
||||
pname:maxDescriptorSetUpdateAfterBindStorageImages is similar to
|
||||
pname:maxDescriptorSetStorageImages but counts descriptors from
|
||||
descriptor sets created with or without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set.
|
||||
* [[features-limits-maxDescriptorSetUpdateAfterBindInputAttachments]]
|
||||
pname:maxDescriptorSetUpdateAfterBindInputAttachments is similar to
|
||||
pname:maxDescriptorSetInputAttachments but counts descriptors from
|
||||
descriptor sets created with or without the
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set.
|
||||
|
||||
If the sname:VkPhysicalDeviceDescriptorIndexingPropertiesEXT structure is
|
||||
included in the pname:pNext chain of slink:VkPhysicalDeviceProperties2KHR,
|
||||
it is filled with the implementation-dependent limits.
|
||||
|
||||
include::../validity/structs/VkPhysicalDeviceDescriptorIndexingPropertiesEXT.txt[]
|
||||
--
|
||||
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
|
||||
|
||||
ifdef::VK_EXT_conservative_rasterization[]
|
||||
|
||||
|
@ -2445,6 +2933,77 @@ implementation-dependent limits and properties.
|
|||
|
||||
endif::VK_EXT_conservative_rasterization[]
|
||||
|
||||
|
||||
ifdef::VK_AMD_shader_core_properties[]
|
||||
|
||||
[open,refpage='VkPhysicalDeviceShaderCorePropertiesAMD',desc='Structure describing shader core properties that can be supported by an implementation',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkPhysicalDeviceShaderCorePropertiesAMD structure is defined as:
|
||||
|
||||
include::../api/structs/VkPhysicalDeviceShaderCorePropertiesAMD.txt[]
|
||||
|
||||
The members of the sname:VkPhysicalDeviceShaderCorePropertiesAMD structure
|
||||
describe the following implementation-dependent limits:
|
||||
|
||||
* [[features-limits-shaderEngineCount]] pname:shaderEngineCount is an
|
||||
unsigned integer value indicating the number of shader engines found
|
||||
inside the shader core of the physical device.
|
||||
* [[features-limits-shaderArraysPerEngineCount]]
|
||||
pname:shaderArraysPerEngineCount is an unsigned integer value indicating
|
||||
the number of shader arrays inside a shader engine.
|
||||
Each shader array has its own scan converter, set of compute units, and
|
||||
a render back end (color and depth buffers).
|
||||
Shader arrays within a shader engine share shader processor input (wave
|
||||
launcher) and shader export (export buffer) units.
|
||||
Currently, a shader engine can have one or two shader arrays.
|
||||
* [[features-limits-computeUnitsPerShaderArray]]
|
||||
pname:computeUnitsPerShaderArray is an unsigned integer value indicating
|
||||
the number of compute units within a shader array.
|
||||
A compute unit houses a set of SIMDs along with a sequencer module and a
|
||||
local data store.
|
||||
* [[features-limits-simdPerComputeUnit]] pname:simdPerComputeUnit is an
|
||||
unsigned integer value indicating the number of SIMDs inside a compute
|
||||
unit.
|
||||
Each SIMD processes a single instruction at a time.
|
||||
* [[features-limits-wavefrontSize]] pname:wavefrontSize is an unsigned
|
||||
integer value indicating the number of channels (or threads) in a
|
||||
wavefront.
|
||||
* [[features-limits-sgprsPerSimd]] pname:sgprsPerSimd is an unsigned
|
||||
integer value indicating the number of physical Scalar General Purpose
|
||||
Registers (SGPRs) per SIMD.
|
||||
* [[features-limits-minSgprAllocation]] pname:minSgprAllocation is an
|
||||
unsigned integer value indicating the minimum number of SGPRs allocated
|
||||
for a wave.
|
||||
* [[features-limits-maxSgprAllocation]] pname:maxSgprAllocation is an
|
||||
unsigned integer value indicating the maximum number of SGPRs allocated
|
||||
for a wave.
|
||||
* [[features-limits-sgprAllocationGranularity]]
|
||||
pname:sgprAllocationGranularity is an unsigned integer value indicating
|
||||
the granularity of SGPR allocation for a wave.
|
||||
* [[features-limits-vgprsPerSimd]] pname:vgprsPerSimd is an unsigned
|
||||
integer value indicating the number of physical Vector General Purpose
|
||||
Registers (VGPRs) per SIMD.
|
||||
* [[features-limits-minVgprAllocation]] pname:minVgprAllocation is an
|
||||
unsigned integer value indicating the minimum number of VGPRs allocated
|
||||
for a wave.
|
||||
* [[features-limits-maxVgprAllocation]] pname:maxVgprAllocation is an
|
||||
unsigned integer value indicating the maximum number of VGPRs allocated
|
||||
for a wave.
|
||||
* [[features-limits-vgprAllocationGranularity]]
|
||||
pname:vgprAllocationGranularity is an unsigned integer value indicating
|
||||
the granularity of VGPR allocation for a wave.
|
||||
|
||||
include::../validity/structs/VkPhysicalDeviceShaderCorePropertiesAMD.txt[]
|
||||
|
||||
If the sname:VkPhysicalDeviceShaderCorePropertiesAMD structure is included
|
||||
in the pname:pNext chain of slink:VkPhysicalDeviceProperties2, it is filled
|
||||
with the implementation-dependent limits.
|
||||
|
||||
--
|
||||
|
||||
endif::VK_AMD_shader_core_properties[]
|
||||
|
||||
[[features-limits-minmax]]
|
||||
=== Limit Requirements
|
||||
|
||||
|
@ -2749,6 +3308,29 @@ ifdef::VK_EXT_conservative_rasterization[]
|
|||
| pname:fullyCoveredFragmentShaderInputVariable | - |false | implementation dependent
|
||||
| pname:conservativeRasterizationPostDepthCoverage | - |false | implementation dependent
|
||||
endif::VK_EXT_conservative_rasterization[]
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
| pname:maxUpdateAfterBindDescriptorsInAllPools | - |500000| min
|
||||
| pname:shaderUniformBufferArrayNonUniformIndexingNative | - |false| implementation dependent
|
||||
| pname:shaderSampledImageArrayNonUniformIndexingNative | - |false| implementation dependent
|
||||
| pname:shaderStorageBufferArrayNonUniformIndexingNative | - |false| implementation dependent
|
||||
| pname:shaderStorageImageArrayNonUniformIndexingNative | - |false| implementation dependent
|
||||
| pname:shaderInputAttachmentArrayNonUniformIndexingNative | - |false| implementation dependent
|
||||
| pname:maxPerStageDescriptorUpdateAfterBindSamplers | - |500000 ^9^ | min
|
||||
| pname:maxPerStageDescriptorUpdateAfterBindUniformBuffers | - |12 ^9^ | min
|
||||
| pname:maxPerStageDescriptorUpdateAfterBindStorageBuffers | - |500000 ^9^ | min
|
||||
| pname:maxPerStageDescriptorUpdateAfterBindSampledImages | - |500000 ^9^ | min
|
||||
| pname:maxPerStageDescriptorUpdateAfterBindStorageImages | - |500000 ^9^ | min
|
||||
| pname:maxPerStageDescriptorUpdateAfterBindInputAttachments| - |500000 ^9^ | min
|
||||
| pname:maxPerStageUpdateAfterBindResources | - |500000 ^9^ | min
|
||||
| pname:maxDescriptorSetUpdateAfterBindSamplers | - |500000 ^9^ | min
|
||||
| pname:maxDescriptorSetUpdateAfterBindUniformBuffers | - |96 ^8^ ^9^ | min, _n_ {times} PerStage
|
||||
| pname:maxDescriptorSetUpdateAfterBindUniformBuffersDynamic| - |8 ^9^ | min
|
||||
| pname:maxDescriptorSetUpdateAfterBindStorageBuffers | - |500000 ^9^ | min
|
||||
| pname:maxDescriptorSetUpdateAfterBindStorageBuffersDynamic| - |4 ^9^ | min
|
||||
| pname:maxDescriptorSetUpdateAfterBindSampledImages | - |500000 ^9^ | min
|
||||
| pname:maxDescriptorSetUpdateAfterBindStorageImages | - |500000 ^9^ | min
|
||||
| pname:maxDescriptorSetUpdateAfterBindInputAttachments | - |500000 ^9^ | min
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
ifdef::VK_EXT_vertex_attribute_divisor[]
|
||||
| pname:maxVertexAttribDivisor | - | 2^16^-1 | min
|
||||
endif::VK_EXT_vertex_attribute_divisor[]
|
||||
|
@ -2809,6 +3391,10 @@ It may: not be possible to reach this limit in every stage.
|
|||
If all shader stages are supported, _n_ = 6 (vertex, tessellation
|
||||
control, tessellation evaluation, geometry, fragment, compute).
|
||||
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
9:: The ptext:UpdateAfterBind descriptor limits must: each be greater than
|
||||
or equal to the corresponding ptext:non-UpdateAfterBind limit.
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
|
||||
ifdef::VK_EXT_sample_locations[]
|
||||
|
||||
|
@ -5720,7 +6306,7 @@ extended information in a pname:pNext chain of output structures.
|
|||
ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
.Valid Usage
|
||||
****
|
||||
* [[VUID-vkGetPhysicalDeviceImageFormatProperties2KHR-pNext-01868]]
|
||||
* [[VUID-vkGetPhysicalDeviceImageFormatProperties2-pNext-01868]]
|
||||
If the pname:pNext chain of pname:pImageFormatProperties contains an
|
||||
instance of slink:VkAndroidHardwareBufferUsageANDROID, the pname:pNext
|
||||
chain of pname:pImageFormatInfo must: contain an instance of
|
||||
|
|
|
@ -131,7 +131,7 @@ pname:discardRectangleCount)#.
|
|||
.Valid Usage
|
||||
****
|
||||
* [[VUID-vkCmdSetDiscardRectangleEXT-None-00583]]
|
||||
The currently bound graphics pipeline must: have been created with the
|
||||
The bound graphics pipeline must: have been created with the
|
||||
ename:VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled
|
||||
* [[VUID-vkCmdSetDiscardRectangleEXT-firstDiscardRectangle-00585]]
|
||||
The sum of pname:firstDiscardRectangle and pname:discardRectangleCount
|
||||
|
@ -235,7 +235,7 @@ values determining the size in pixels.
|
|||
.Valid Usage
|
||||
****
|
||||
* [[VUID-vkCmdSetScissor-None-00590]]
|
||||
The currently bound graphics pipeline must: have been created with the
|
||||
The bound graphics pipeline must: have been created with the
|
||||
ename:VK_DYNAMIC_STATE_SCISSOR dynamic state enabled
|
||||
* [[VUID-vkCmdSetScissor-firstScissor-00591]]
|
||||
pname:firstScissor must: be less than
|
||||
|
@ -358,17 +358,6 @@ Finally, if the fragment was not discarded, it is used to update the
|
|||
framebuffer at the fragment's framebuffer coordinates for any samples that
|
||||
remain covered.
|
||||
|
||||
ifdef::editing-notes[]
|
||||
[NOTE]
|
||||
.editing-note
|
||||
====
|
||||
There used to be a sentence of form "These operations are diagrammed in
|
||||
figure ((fig-fragops,Fragment Operations)), in the order in which they are
|
||||
performed" following "described in this chapter." above, but the referred
|
||||
figure does not yet exist.
|
||||
====
|
||||
endif::editing-notes[]
|
||||
|
||||
The depth bounds test, stencil test, and depth test are performed for each
|
||||
pixel sample, rather than just once for each fragment.
|
||||
Stencil and depth operations are performed for a pixel sample only if that
|
||||
|
@ -564,7 +553,7 @@ include::../api/protos/vkCmdSetDepthBounds.txt[]
|
|||
.Valid Usage
|
||||
****
|
||||
* [[VUID-vkCmdSetDepthBounds-None-00599]]
|
||||
The currently bound graphics pipeline must: have been created with the
|
||||
The bound graphics pipeline must: have been created with the
|
||||
ename:VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled
|
||||
ifdef::VK_EXT_depth_range_unrestricted[]
|
||||
* [[VUID-vkCmdSetDepthBounds-minDepthBounds-00600]]
|
||||
|
@ -681,7 +670,7 @@ include::../api/protos/vkCmdSetStencilCompareMask.txt[]
|
|||
.Valid Usage
|
||||
****
|
||||
* [[VUID-vkCmdSetStencilCompareMask-None-00602]]
|
||||
The currently bound graphics pipeline must: have been created with the
|
||||
The bound graphics pipeline must: have been created with the
|
||||
ename:VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled
|
||||
****
|
||||
|
||||
|
@ -735,7 +724,7 @@ include::../api/protos/vkCmdSetStencilWriteMask.txt[]
|
|||
.Valid Usage
|
||||
****
|
||||
* [[VUID-vkCmdSetStencilWriteMask-None-00603]]
|
||||
The currently bound graphics pipeline must: have been created with the
|
||||
The bound graphics pipeline must: have been created with the
|
||||
ename:VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled
|
||||
****
|
||||
|
||||
|
@ -761,7 +750,7 @@ include::../api/protos/vkCmdSetStencilReference.txt[]
|
|||
.Valid Usage
|
||||
****
|
||||
* [[VUID-vkCmdSetStencilReference-None-00604]]
|
||||
The currently bound graphics pipeline must: have been created with the
|
||||
The bound graphics pipeline must: have been created with the
|
||||
ename:VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled
|
||||
****
|
||||
|
||||
|
|
|
@ -287,7 +287,7 @@ include::../api/protos/vkCmdSetBlendConstants.txt[]
|
|||
.Valid Usage
|
||||
****
|
||||
* [[VUID-vkCmdSetBlendConstants-None-00612]]
|
||||
The currently bound graphics pipeline must: have been created with the
|
||||
The bound graphics pipeline must: have been created with the
|
||||
ename:VK_DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled
|
||||
****
|
||||
|
||||
|
|
|
@ -1103,6 +1103,10 @@ ifdef::VK_VERSION_1_1,VK_KHR_external_memory,VK_KHR_external_semaphore,VK_KHR_ex
|
|||
* ename:VK_ERROR_INVALID_EXTERNAL_HANDLE An external handle is not a valid
|
||||
handle of the specified type.
|
||||
endif::VK_VERSION_1_1,VK_KHR_external_memory,VK_KHR_external_semaphore,VK_KHR_external_fence[]
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
* ename:VK_ERROR_FRAGMENTATION_EXT A descriptor pool creation has failed
|
||||
due to fragmentation.
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
|
||||
If a command returns a run time error, unless otherwise specified any output
|
||||
parameters will have undefined contents, except that if the output parameter
|
||||
|
|
|
@ -453,11 +453,13 @@ commands.
|
|||
include::../validity/protos/vkCmdBindVertexBuffers.txt[]
|
||||
--
|
||||
|
||||
|
||||
ifdef::VK_EXT_vertex_attribute_divisor[]
|
||||
|
||||
== Vertex Attribute Divisor in Instanced Rendering
|
||||
|
||||
[open,refpage='VkPipelineVertexInputDivisorStateCreateInfoEXT',desc='Structure specifying vertex attributes assignment during instanced rendering',type='structs']
|
||||
--
|
||||
|
||||
If the pname:pNext chain of slink:VkPipelineVertexInputStateCreateInfo
|
||||
includes a sname:VkPipelineVertexInputDivisorStateCreateInfoEXT structure,
|
||||
then that structure controls how vertex attributes are assigned to an
|
||||
|
@ -479,6 +481,8 @@ include::../api/structs/VkPipelineVertexInputDivisorStateCreateInfoEXT.txt[]
|
|||
include::../validity/structs/VkPipelineVertexInputDivisorStateCreateInfoEXT.txt[]
|
||||
--
|
||||
|
||||
[open,refpage='VkVertexInputBindingDivisorDescriptionEXT',desc='Structure specifying a divisor used in instanced rendering',type='structs']
|
||||
--
|
||||
The individual divisor values per binding are specified using the
|
||||
sname:VkVertexInputBindingDivisorDescriptionEXT structure which is defined
|
||||
as:
|
||||
|
@ -497,6 +501,9 @@ include::../api/structs/VkVertexInputBindingDivisorDescriptionEXT.txt[]
|
|||
queried using
|
||||
sname:VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT::pname:maxVertexAttribDivisor.
|
||||
|
||||
If this structure is not used to define a divisor value for an attribute
|
||||
then the divisor has a logical default value of 1.
|
||||
|
||||
.Valid Usage
|
||||
****
|
||||
* [[VUID-VkVertexInputBindingDivisorDescriptionEXT-binding-01869]]
|
||||
|
@ -514,9 +521,6 @@ include::../api/structs/VkVertexInputBindingDivisorDescriptionEXT.txt[]
|
|||
include::../validity/structs/VkVertexInputBindingDivisorDescriptionEXT.txt[]
|
||||
--
|
||||
|
||||
If this structure is not used to define a divisor value for an attribute
|
||||
then the divisor has a logical default value of 1.
|
||||
|
||||
endif::VK_EXT_vertex_attribute_divisor[]
|
||||
|
||||
The address of each attribute for each code:vertexIndex and
|
||||
|
|
|
@ -500,27 +500,6 @@ code:OpTypeSampledImage, or arrays of only these types.
|
|||
Variables of type code:OpTypeImage must: have a code:Sampled operand of 1
|
||||
(sampled image) or 2 (storage image).
|
||||
|
||||
Any array of these types must: only be indexed with constant integral
|
||||
expressions, except under the following conditions:
|
||||
|
||||
* For arrays of code:OpTypeImage variables with code:Sampled operand of 2,
|
||||
if the pname:shaderStorageImageArrayDynamicIndexing feature is enabled
|
||||
and the shader module declares the code:StorageImageArrayDynamicIndexing
|
||||
capability, the array must: only be indexed by dynamically uniform
|
||||
expressions.
|
||||
* For arrays of code:OpTypeSampler, code:OpTypeSampledImage variables, or
|
||||
code:OpTypeImage variables with code:Sampled operand of 1, if the
|
||||
pname:shaderSampledImageArrayDynamicIndexing feature is enabled and the
|
||||
shader module declares the code:SampledImageArrayDynamicIndexing
|
||||
capability, the array must: only be indexed by dynamically uniform
|
||||
expressions.
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||
* If sampler Y'C~B~C~R~ conversion is enabled, the combined image sampler
|
||||
must: be indexed only by constant integral expressions when aggregated
|
||||
into arrays in shader code, irrespective of the
|
||||
pname:shaderSampledImageArrayDynamicIndexing feature.
|
||||
endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||
|
||||
The code:Sampled code:Type of an code:OpTypeImage declaration must: match
|
||||
the same basic data type as the corresponding resource, or the values
|
||||
obtained by reading or sampling from this image are undefined.
|
||||
|
@ -563,25 +542,6 @@ Such variables must: be:
|
|||
<<interfaces-resources-layout,Offset and Stride Assignment>>.
|
||||
endif::VK_VERSION_1_1,VK_KHR_storage_buffer_storage_class[]
|
||||
|
||||
Any array of these types must: only be indexed with constant integral
|
||||
expressions, except under the following conditions.
|
||||
|
||||
* For arrays of code:Block variables in the code:Uniform storage class, if
|
||||
the pname:shaderUniformBufferArrayDynamicIndexing feature is enabled and
|
||||
the shader module declares the code:UniformBufferArrayDynamicIndexing
|
||||
capability, the array must: only be indexed by dynamically uniform
|
||||
expressions.
|
||||
* For arrays of code:BufferBlock variables in the code:Uniform storage
|
||||
class
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_storage_buffer_storage_class[]
|
||||
or arrays of code:Block variables in the code:StorageBuffer storage
|
||||
class
|
||||
endif::VK_VERSION_1_1,VK_KHR_storage_buffer_storage_class[]
|
||||
, if the pname:shaderStorageBufferArrayDynamicIndexing feature is
|
||||
enabled and the shader module declares the
|
||||
code:StorageBufferArrayDynamicIndexing capability, the array must: only
|
||||
be indexed by dynamically uniform expressions.
|
||||
|
||||
ifndef::VK_VERSION_1_1,VK_KHR_storage_buffer_storage_class[]
|
||||
The code:Offset decoration for any variable in a code:Block must: not cause
|
||||
the space required for that variable to extend outside the range [eq]#[0,
|
||||
|
@ -620,6 +580,63 @@ SPIR-V variables decorated with a descriptor set and binding that identify a
|
|||
can: have a type of code:OpTypeImage, code:OpTypeSampler (code:Sampled=1),
|
||||
or code:OpTypeSampledImage.
|
||||
|
||||
Arrays of any of these types can: be indexed with constant integral
|
||||
expressions.
|
||||
The following features must: be enabled and capabilities must: be declared
|
||||
in order to index such arrays with dynamically uniform or non-uniform
|
||||
indices:
|
||||
|
||||
* Storage images (except storage texel buffers and input attachments):
|
||||
** Dynamically uniform: pname:shaderStorageImageArrayDynamicIndexing and
|
||||
code:StorageImageArrayDynamicIndexing
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
** Non-uniform: pname:shaderStorageImageArrayNonUniformIndexing and
|
||||
code:StorageImageArrayNonUniformIndexingEXT
|
||||
* Storage texel buffers:
|
||||
** Dynamically uniform: pname:shaderStorageTexelBufferArrayDynamicIndexing
|
||||
and code:StorageTexelBufferArrayDynamicIndexingEXT
|
||||
** Non-uniform: pname:shaderStorageTexelBufferArrayNonUniformIndexing and
|
||||
code:StorageTexelBufferArrayNonUniformIndexingEXT
|
||||
* Input attachments:
|
||||
** Dynamically uniform: pname:shaderInputAttachmentArrayDynamicIndexing
|
||||
and code:InputAttachmentArrayDynamicIndexingEXT
|
||||
** Non-uniform: pname:shaderInputAttachmentArrayNonUniformIndexing and
|
||||
code:InputAttachmentArrayNonUniformIndexingEXT
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
* Sampled images (except uniform texel buffers):
|
||||
** Dynamically uniform: pname:shaderSampledImageArrayDynamicIndexing and
|
||||
code:SampledImageArrayDynamicIndexing
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
** Non-uniform: pname:shaderSampledImageArrayNonUniformIndexing and
|
||||
code:SampledImageArrayNonUniformIndexingEXT
|
||||
* Uniform texel buffers:
|
||||
** Dynamically uniform: pname:shaderUniformTexelBufferArrayDynamicIndexing
|
||||
and code:UniformTexelBufferArrayDynamicIndexingEXT
|
||||
** Non-uniform: pname:shaderUniformTexelBufferArrayNonUniformIndexing and
|
||||
code:UniformTexelBufferArrayNonUniformIndexingEXT
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
* Uniform buffers:
|
||||
** Dynamically uniform: pname:shaderUniformBufferArrayDynamicIndexing and
|
||||
code:UniformBufferArrayDynamicIndexing
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
** Non-uniform: pname:shaderUniformBufferArrayNonUniformIndexing and
|
||||
code:UniformBufferArrayNonUniformIndexingEXT
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
* Storage buffers:
|
||||
** Dynamically uniform: pname:shaderStorageBufferArrayDynamicIndexing and
|
||||
code:StorageBufferArrayDynamicIndexing
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
** Non-uniform: pname:shaderStorageBufferArrayNonUniformIndexing and
|
||||
code:StorageBufferArrayNonUniformIndexingEXT
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||
* If sampler Y'C~B~C~R~ conversion is enabled, the combined image sampler
|
||||
must: be indexed only by constant integral expressions when aggregated
|
||||
into arrays in shader code, irrespective of the
|
||||
pname:shaderSampledImageArrayDynamicIndexing feature.
|
||||
endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||
|
||||
[[interfaces-resources-correspondence]]
|
||||
.Shader Resource and Descriptor Type Correspondence
|
||||
[width="90%",cols="<1,<2",options="header"]
|
||||
|
@ -698,6 +715,16 @@ If the code:Binding decoration is used with an array, the entire array is
|
|||
assigned that binding value.
|
||||
The size of the array declaration must: be no larger than the
|
||||
pname:descriptorCount of that sname:VkDescriptorSetLayoutBinding.
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
If the array is runtime-sized, then array elements greater than or equal to
|
||||
the size of that binding in the bound descriptor set must: not be used.
|
||||
If the array is runtime-sized, the pname:runtimeDescriptorArray feature
|
||||
must: be enabled and the code:RuntimeDescriptorArrayEXT capability must: be
|
||||
declared.
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
ifndef::VK_EXT_descriptor_indexing[]
|
||||
The array must: not be runtime-sized.
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
The index of each element of the array is referred to as the _arrayElement_.
|
||||
For the purposes of interface matching and descriptor set
|
||||
<<descriptorsets-updates,operations>>, if a resource variable is not an
|
||||
|
@ -738,16 +765,34 @@ descriptor set layout binding.
|
|||
|====
|
||||
| Resources per Stage | Resource Types
|
||||
.2+<.^| pname:maxPerStageDescriptorSamplers
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
or pname:maxPerStageDescriptorUpdateAfterBindSamplers
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
| sampler | combined image sampler
|
||||
.3+<.^| pname:maxPerStageDescriptorSampledImages
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
or pname:maxPerStageDescriptorUpdateAfterBindSampledImages
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
| sampled image | combined image sampler | uniform texel buffer
|
||||
.2+<.^| pname:maxPerStageDescriptorStorageImages
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
or pname:maxPerStageDescriptorUpdateAfterBindStorageImages
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
| storage image | storage texel buffer
|
||||
.2+<.^| pname:maxPerStageDescriptorUniformBuffers
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
or pname:maxPerStageDescriptorUpdateAfterBindUniformBuffers
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
| uniform buffer | uniform buffer dynamic
|
||||
.2+<.^| pname:maxPerStageDescriptorStorageBuffers
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
or pname:maxPerStageDescriptorUpdateAfterBindStorageBuffers
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
| storage buffer | storage buffer dynamic
|
||||
| pname:maxPerStageDescriptorInputAttachments
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
or pname:maxPerStageDescriptorUpdateAfterBindInputAttachments
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
| input attachment^1^
|
||||
|====
|
||||
|
||||
|
|
|
@ -1178,7 +1178,7 @@ endif::VK_KHR_dedicated_allocation[]
|
|||
been created without ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT set in
|
||||
slink:VkBufferCreateInfo::pname:flags
|
||||
ifdef::VK_KHR_external_memory_win32[]
|
||||
* [[VUID-VkMemoryDedicatedAllocateInfoKHR-image-01876]]
|
||||
* [[VUID-VkMemoryDedicatedAllocateInfo-image-01876]]
|
||||
If pname:image is not sname:VK_NULL_HANDLE and
|
||||
slink:VkMemoryAllocateInfo defines a memory import operation with handle
|
||||
type ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT,
|
||||
|
@ -1190,7 +1190,7 @@ ifdef::VK_KHR_external_memory_win32[]
|
|||
external handle was created by the Vulkan API, then the memory being
|
||||
imported must: also be a dedicated image allocation and pname:image must
|
||||
be identical to the image associated with the imported memory.
|
||||
* [[VUID-VkMemoryDedicatedAllocateInfoKHR-buffer-01877]]
|
||||
* [[VUID-VkMemoryDedicatedAllocateInfo-buffer-01877]]
|
||||
If pname:buffer is not dlink:VK_NULL_HANDLE and
|
||||
slink:VkMemoryAllocateInfo defines a memory import operation with handle
|
||||
type ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT,
|
||||
|
@ -1204,14 +1204,14 @@ ifdef::VK_KHR_external_memory_win32[]
|
|||
must be identical to the buffer associated with the imported memory.
|
||||
endif::VK_KHR_external_memory_win32[]
|
||||
ifdef::VK_KHR_external_memory_fd[]
|
||||
* [[VUID-VkMemoryDedicatedAllocateInfoKHR-image-01878]]
|
||||
* [[VUID-VkMemoryDedicatedAllocateInfo-image-01878]]
|
||||
If pname:image is not sname:VK_NULL_HANDLE and
|
||||
slink:VkMemoryAllocateInfo defines a memory import operation with handle
|
||||
type ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT, the memory
|
||||
being imported must: also be a dedicated image allocation and
|
||||
pname:image must be identical to the image associated with the imported
|
||||
memory.
|
||||
* [[VUID-VkMemoryDedicatedAllocateInfoKHR-buffer-01879]]
|
||||
* [[VUID-VkMemoryDedicatedAllocateInfo-buffer-01879]]
|
||||
If pname:buffer is not sname:VK_NULL_HANDLE and
|
||||
slink:VkMemoryAllocateInfo defines a memory import operation with handle
|
||||
type ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT, the memory
|
||||
|
|
|
@ -1742,7 +1742,7 @@ parameter:
|
|||
pipeline objects, then that command buffer state becomes undefined.
|
||||
|
||||
Dynamic state setting commands must: not be issued for state that is not
|
||||
specified as dynamic in the currently bound pipeline object.
|
||||
specified as dynamic in the bound pipeline object.
|
||||
|
||||
Dynamic state that does not affect the result of operations can: be left
|
||||
undefined.
|
||||
|
|
|
@ -536,8 +536,8 @@ The custom sample locations used for rasterization when
|
|||
sname:VkPipelineSampleLocationsStateCreateInfoEXT::pname:sampleLocationsEnable
|
||||
is ename:VK_TRUE are specified by the
|
||||
sname:VkPipelineSampleLocationsStateCreateInfoEXT::pname:sampleLocationsInfo
|
||||
property of the currently bound graphics pipeline, if the pipeline was not
|
||||
created with ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT enabled.
|
||||
property of the bound graphics pipeline, if the pipeline was not created
|
||||
with ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT enabled.
|
||||
|
||||
Otherwise, the sample locations used for rasterization are set by calling
|
||||
fname:vkCmdSetSampleLocationsEXT:
|
||||
|
@ -551,13 +551,13 @@ include::../api/protos/vkCmdSetSampleLocationsEXT.txt[]
|
|||
.Valid Usage
|
||||
****
|
||||
* [[VUID-vkCmdSetSampleLocationsEXT-None-01528]]
|
||||
The currently bound graphics pipeline must: have been created with the
|
||||
The bound graphics pipeline must: have been created with the
|
||||
ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT dynamic state enabled
|
||||
* [[VUID-vkCmdSetSampleLocationsEXT-sampleLocationsPerPixel-01529]]
|
||||
The pname:sampleLocationsPerPixel member of pname:pSampleLocationsInfo
|
||||
must: equal the pname:rasterizationSamples member of the
|
||||
slink:VkPipelineMultisampleStateCreateInfo structure the currently bound
|
||||
graphics pipeline has been created with
|
||||
slink:VkPipelineMultisampleStateCreateInfo structure the bound graphics
|
||||
pipeline has been created with
|
||||
* [[VUID-vkCmdSetSampleLocationsEXT-variableSampleLocations-01530]]
|
||||
If
|
||||
slink:VkPhysicalDeviceSampleLocationsPropertiesEXT::pname:variableSampleLocations
|
||||
|
@ -710,7 +710,7 @@ include::../api/protos/vkCmdSetLineWidth.txt[]
|
|||
.Valid Usage
|
||||
****
|
||||
* [[VUID-vkCmdSetLineWidth-None-00787]]
|
||||
The currently bound graphics pipeline must: have been created with the
|
||||
The bound graphics pipeline must: have been created with the
|
||||
ename:VK_DYNAMIC_STATE_LINE_WIDTH dynamic state enabled
|
||||
* [[VUID-vkCmdSetLineWidth-lineWidth-00788]]
|
||||
If the <<features-features-wideLines,wide lines>> feature is not
|
||||
|
@ -1213,7 +1213,7 @@ endif::VK_EXT_depth_range_unrestricted[]
|
|||
.Valid Usage
|
||||
****
|
||||
* [[VUID-vkCmdSetDepthBias-None-00789]]
|
||||
The currently bound graphics pipeline must: have been created with the
|
||||
The bound graphics pipeline must: have been created with the
|
||||
ename:VK_DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled
|
||||
* [[VUID-vkCmdSetDepthBias-depthBiasClamp-00790]]
|
||||
If the <<features-features-depthBiasClamp,depth bias clamping>> feature
|
||||
|
|
|
@ -295,22 +295,17 @@ are executed are considered active for those secondary command buffers.
|
|||
|
||||
.Valid Usage
|
||||
****
|
||||
* [[VUID-vkCmdBeginQuery-queryPool-00798]]
|
||||
The query identified by pname:queryPool and pname:query must: currently
|
||||
not be <<queries-operation-active,active>>
|
||||
* [[VUID-vkCmdBeginQuery-queryPool-00799]]
|
||||
The query identified by pname:queryPool and pname:query must: be
|
||||
unavailable
|
||||
* [[VUID-vkCmdBeginQuery-queryPool-01922]]
|
||||
pname:queryPool must: have been created with a pname:queryType that
|
||||
differs from that of any queries that are
|
||||
<<queries-operation-active,active>> within pname:commandBuffer
|
||||
* [[VUID-vkCmdBeginQuery-None-00807]]
|
||||
All queries used by the command must: be unavailable
|
||||
* [[VUID-vkCmdBeginQuery-queryType-00800]]
|
||||
If the <<features-features-occlusionQueryPrecise,precise occlusion
|
||||
queries>> feature is not enabled, or the pname:queryType used to create
|
||||
pname:queryPool was not ename:VK_QUERY_TYPE_OCCLUSION, pname:flags must:
|
||||
not contain ename:VK_QUERY_CONTROL_PRECISE_BIT
|
||||
* [[VUID-vkCmdBeginQuery-queryPool-00801]]
|
||||
pname:queryPool must: have been created with a pname:queryType that
|
||||
differs from that of any other queries that have been made
|
||||
<<queries-operation-active,active>>, and are currently still active
|
||||
within pname:commandBuffer
|
||||
* [[VUID-vkCmdBeginQuery-query-00802]]
|
||||
pname:query must: be less than the number of queries in pname:queryPool
|
||||
* [[VUID-vkCmdBeginQuery-queryType-00803]]
|
||||
|
@ -334,10 +329,6 @@ ifdef::VK_VERSION_1_1[]
|
|||
pname:commandBuffer must: not be a protected command buffer
|
||||
endif::VK_VERSION_1_1[]
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_multiview[]
|
||||
* [[VUID-vkCmdBeginQuery-None-00806]]
|
||||
All queries used by the command must: not be active
|
||||
* [[VUID-vkCmdBeginQuery-None-00807]]
|
||||
All queries used by the command must: be unavailable
|
||||
* [[VUID-vkCmdBeginQuery-query-00808]]
|
||||
If fname:vkCmdBeginQuery is called within a render pass instance, the
|
||||
sum of pname:query and the number of bits set in the current subpass's
|
||||
|
@ -399,9 +390,9 @@ of the query.
|
|||
|
||||
.Valid Usage
|
||||
****
|
||||
* [[VUID-vkCmdEndQuery-queryPool-00809]]
|
||||
The query identified by pname:queryPool and pname:query must: currently
|
||||
be <<queries-operation-active,active>>
|
||||
* [[VUID-vkCmdEndQuery-None-01923]]
|
||||
All queries used by the command must: be
|
||||
<<queries-operation-active,active>>
|
||||
* [[VUID-vkCmdEndQuery-query-00810]]
|
||||
pname:query must: be less than the number of queries in pname:queryPool
|
||||
ifdef::VK_VERSION_1_1[]
|
||||
|
@ -409,8 +400,6 @@ ifdef::VK_VERSION_1_1[]
|
|||
pname:commandBuffer must: not be a protected command buffer
|
||||
endif::VK_VERSION_1_1[]
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_multiview[]
|
||||
* [[VUID-vkCmdEndQuery-None-00811]]
|
||||
All queries used by the command must: be active
|
||||
* [[VUID-vkCmdEndQuery-query-00812]]
|
||||
If fname:vkCmdEndQuery is called within a render pass instance, the sum
|
||||
of pname:query and the number of bits set in the current subpass's view
|
||||
|
|
|
@ -819,7 +819,8 @@ endif::VK_VERSION_1_1,VK_KHR_maintenance1[]
|
|||
If the <<features-features-sparseBinding,sparse bindings>> feature is
|
||||
not enabled, pname:flags must: not contain
|
||||
ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT
|
||||
* If the <<features-features-sparseResidencyAliased,sparse aliased
|
||||
* [[VUID-VkImageCreateInfo-flags-01924]]
|
||||
If the <<features-features-sparseResidencyAliased,sparse aliased
|
||||
residency>> feature is not enabled, pname:flags must: not contain
|
||||
ename:VK_IMAGE_CREATE_SPARSE_ALIASED_BIT
|
||||
* [[VUID-VkImageCreateInfo-imageType-00970]]
|
||||
|
@ -931,7 +932,8 @@ endif::VK_VERSION_1_1,VK_KHR_maintenance1[]
|
|||
If pname:flags contains ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT or
|
||||
ename:VK_IMAGE_CREATE_SPARSE_ALIASED_BIT, it must: also contain
|
||||
ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT
|
||||
* If any of the bits ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT,
|
||||
* [[VUID-VkImageCreateInfo-None-01925]]
|
||||
If any of the bits ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT,
|
||||
ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT, or
|
||||
ename:VK_IMAGE_CREATE_SPARSE_ALIASED_BIT are set,
|
||||
ename:VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT must: not also be set
|
||||
|
@ -3153,7 +3155,7 @@ ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
|||
be a slink:VkImagePlaneMemoryRequirementsInfo in the pname:pNext chain
|
||||
of the slink:VkImageMemoryRequirementsInfo2 structure
|
||||
ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-VkImageMemoryRequirementsInfo2KHR-image-01897]]
|
||||
* [[VUID-VkImageMemoryRequirementsInfo2-image-01897]]
|
||||
If pname:image was created with the
|
||||
VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID
|
||||
external memory handle type, then pname:image must: be bound to memory.
|
||||
|
@ -3550,7 +3552,7 @@ ifdef::VK_VERSION_1_1,VK_KHR_dedicated_allocation[]
|
|||
pname:buffer), pname:memory must: have been created with
|
||||
slink:VkMemoryDedicatedAllocateInfo::pname:buffer equal to pname:buffer
|
||||
and pname:memoryOffset must: be zero
|
||||
* [[VUID-VkBindBufferMemoryInfoKHR-memory-01900]]
|
||||
* [[VUID-VkBindBufferMemoryInfo-memory-01900]]
|
||||
If the sname:VkMemoryAllocateInfo provided when pname:memory was
|
||||
allocated included an instance of slink:VkMemoryDedicatedAllocateInfo in
|
||||
its pname:pNext chain, and
|
||||
|
@ -3892,7 +3894,7 @@ ifdef::VK_VERSION_1_1,VK_KHR_dedicated_allocation[]
|
|||
pname:image), pname:memory must: have been created with
|
||||
slink:VkMemoryDedicatedAllocateInfo::pname:image equal to pname:image
|
||||
and pname:memoryOffset must: be zero
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-memory-01903]]
|
||||
* [[VUID-VkBindImageMemoryInfo-memory-01903]]
|
||||
If the sname:VkMemoryAllocateInfo provided when pname:memory was
|
||||
allocated included an instance of slink:VkMemoryDedicatedAllocateInfo in
|
||||
its pname:pNext chain, and
|
||||
|
|
|
@ -587,7 +587,7 @@ ifndef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
|||
pname:format must: not be ename:VK_FORMAT_UNDEFINED
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-format-01904]]
|
||||
* [[VUID-VkSamplerYcbcrConversionCreateInfo-format-01904]]
|
||||
If an external format conversion is being created, pname:format must: be
|
||||
ename:VK_FORMAT_UNDEFINED, otherwise it must: not be
|
||||
ename:VK_FORMAT_UNDEFINED.
|
||||
|
|
|
@ -784,6 +784,9 @@ through the invocations within a subgroup.
|
|||
The clustered subgroup operations allow invocations to perform an operation
|
||||
among partitions of a subgroup, such that the operation is only performed
|
||||
within the subgroup invocations within a partition.
|
||||
The partitions for clustered subgroup operations are consecutive
|
||||
power-of-two size groups of invocations and the cluster size must: be known
|
||||
at pipeline creation time.
|
||||
The operations supported are add, mul, min, max, and, or, xor.
|
||||
|
||||
[[shaders-subgroup-quad]]
|
||||
|
@ -792,6 +795,20 @@ The operations supported are add, mul, min, max, and, or, xor.
|
|||
The quad subgroup operations allow clusters of 4 invocations (a quad), to
|
||||
share data efficiently with each other.
|
||||
|
||||
ifdef::VK_NV_shader_subgroup_partitioned[]
|
||||
|
||||
[[shaders-subgroup-partitioned]]
|
||||
=== Partitioned Subgroup Operations
|
||||
|
||||
The partitioned subgroup operations allow invocations to perform an
|
||||
operation among partitions of a subgroup, such that the operation is only
|
||||
performed within the subgroup invocations within a partition.
|
||||
The partitions for partitioned subgroup operations can: group the
|
||||
invocations into arbitrary subsets and can: be computed at runtime.
|
||||
The operations supported are add, mul, min, max, and, or, xor.
|
||||
|
||||
endif::VK_NV_shader_subgroup_partitioned[]
|
||||
|
||||
endif::VK_VERSION_1_1[]
|
||||
|
||||
ifdef::VK_EXT_validation_cache[]
|
||||
|
|
|
@ -1367,6 +1367,7 @@ D_{\textit{ref}} & = \frac{D_{\textit{ref}}}{q}, & \text{if provided}
|
|||
+++++++++++++++++++
|
||||
|
||||
|
||||
[[textures-derivative-image-operations]]
|
||||
=== Derivative Image Operations
|
||||
|
||||
Derivatives are used for LOD selection.
|
||||
|
@ -1404,6 +1405,33 @@ Instead, the floating point scalar coordinate is directly assigned to
|
|||
[eq]#{lambda}~base~# as described in <<textures-level-of-detail-operation,
|
||||
Level-of-Detail Operation>>.
|
||||
|
||||
For implicit derivative image instructions, the partial derivative values
|
||||
may: be computed by linear approximation using a 2{times}2 neighborhood of
|
||||
shader invocations (known as a _quad_), as described above.
|
||||
If the instruction is in control flow that is not uniform across the quad,
|
||||
then the derivative values and hence the implicit LOD values are undefined.
|
||||
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
If the image or sampler object used by an implicit derivative image
|
||||
instruction is not uniform across the quad and
|
||||
<<features-limits-quadDivergentImplicitLod,pname:quadDivergentImplicitLod>>
|
||||
is not supported, then the derivative and LOD values are undefined.
|
||||
Implicit derivatives are well-defined when the image and sampler and control
|
||||
flow are uniform across the quad, even if they diverge between different
|
||||
quads.
|
||||
|
||||
If
|
||||
<<features-limits-quadDivergentImplicitLod,pname:quadDivergentImplicitLod>>
|
||||
is supported, then derivatives and implicit LOD values are well-defined even
|
||||
if the image or sampler object are not uniform within a quad.
|
||||
The derivatives are computed as specified above, and the implicit LOD
|
||||
calculation proceeds for each shader invocation using its respective image
|
||||
and sampler object.
|
||||
|
||||
For the purposes of implicit derivatives, code:Flat fragment input variables
|
||||
are uniform within a quad.
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
|
||||
|
||||
=== Cube Map Face Selection and Transformations
|
||||
|
||||
|
|
|
@ -622,7 +622,7 @@ replace the current state for the viewport index [eq]#pname:firstViewport
|
|||
.Valid Usage
|
||||
****
|
||||
* [[VUID-vkCmdSetViewport-None-01221]]
|
||||
The currently bound graphics pipeline must: have been created with the
|
||||
The bound graphics pipeline must: have been created with the
|
||||
ename:VK_DYNAMIC_STATE_VIEWPORT dynamic state enabled
|
||||
* [[VUID-vkCmdSetViewport-firstViewport-01222]]
|
||||
pname:firstViewport must: be less than
|
||||
|
|
|
@ -68,10 +68,13 @@ class ValidUsageToJsonPreprocessor < Extensions::Preprocessor
|
|||
extension_stack.each do | extension |
|
||||
returned_lines << ('* ' + extension)
|
||||
end
|
||||
returned_lines
|
||||
returned_lines
|
||||
elsif in_validusage == :inside and line.start_with?( 'ifdef::VK_', 'ifndef::VK_', 'endif::VK_') and line.end_with?('[]')
|
||||
# Turn extension ifdefs into list items for when we're processing VU later.
|
||||
['* ' + line]
|
||||
elsif in_validusage == :outside and line.start_with?( 'ifdef::VK_', 'ifndef::VK_', 'endif::VK_') and line.end_with?('[]')
|
||||
# Remove the extension defines from the new lines, as we've dealt with them
|
||||
[]
|
||||
elsif line.match(/\[\[(VUID-([^-]+)-[^\]]+)\]\]/)
|
||||
# Add all the VUIDs into an array to guarantee they're all caught later.
|
||||
detected_vuid_list << line.match(/(VUID-([^-]+)-[^\]]+)/)[0]
|
||||
|
@ -83,7 +86,7 @@ class ValidUsageToJsonPreprocessor < Extensions::Preprocessor
|
|||
|
||||
# Stash the detected vuids into a document attribute
|
||||
document.set_attribute('detected_vuid_list', detected_vuid_list.join("\n"))
|
||||
|
||||
|
||||
# Return a new reader after preprocessing
|
||||
Reader.new(new_lines)
|
||||
end
|
||||
|
|
|
@ -122,32 +122,32 @@
|
|||
y="4.4979596" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.39687496px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 129.43237,127.5292 h 47.625"
|
||||
d="m 129.64583,80.041678 h 47.625"
|
||||
id="path5163"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.39687496px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 129.43237,119.59171 h 47.625"
|
||||
d="m 129.64583,119.72918 h 47.625"
|
||||
id="path5165"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.39687496px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 129.43237,111.6542 h 47.625"
|
||||
d="m 129.64583,111.79168 h 47.625"
|
||||
id="path5167"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.39687496px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 129.43237,103.7167 h 47.625"
|
||||
d="m 129.64583,103.85418 h 47.625"
|
||||
id="path5169"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.39687496px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 129.43237,95.779205 h 47.625"
|
||||
d="m 129.64583,95.916678 h 47.625"
|
||||
id="path5171"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.39687496px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 129.43237,87.841705 h 47.625"
|
||||
d="m 129.64583,87.979178 h 47.625"
|
||||
id="path5173"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
|
@ -164,13 +164,13 @@
|
|||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333359px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.39687496"
|
||||
x="153.24486"
|
||||
y="81.888588"
|
||||
x="153.45833"
|
||||
y="127.66668"
|
||||
id="text2799"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2797"
|
||||
x="153.24486"
|
||||
y="81.888588"
|
||||
x="153.45833"
|
||||
y="127.66668"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333359px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.39687496">(no edge)</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
|
@ -341,7 +341,7 @@
|
|||
id="tspan2797-6-4-0"
|
||||
x="105.61983"
|
||||
y="56.091705"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333359px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.39687496">OL1</tspan></text>
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333359px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.39687496">OL3</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333359px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.39687496"
|
||||
|
@ -352,7 +352,7 @@
|
|||
id="tspan2797-6-4-0-5"
|
||||
x="105.61983"
|
||||
y="2.5135825"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333359px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.39687496">OL3</tspan></text>
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333359px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.39687496">OL1</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333359px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.39687496"
|
||||
|
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
|
@ -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 71
|
||||
#define VK_HEADER_VERSION 72
|
||||
|
||||
|
||||
#define VK_NULL_HANDLE 0
|
||||
|
@ -147,6 +147,7 @@ typedef enum VkResult {
|
|||
VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001,
|
||||
VK_ERROR_VALIDATION_FAILED_EXT = -1000011001,
|
||||
VK_ERROR_INVALID_SHADER_NV = -1000012000,
|
||||
VK_ERROR_FRAGMENTATION_EXT = -1000161000,
|
||||
VK_ERROR_NOT_PERMITTED_EXT = -1000174001,
|
||||
VK_ERROR_OUT_OF_POOL_MEMORY_KHR = VK_ERROR_OUT_OF_POOL_MEMORY,
|
||||
VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = VK_ERROR_INVALID_EXTERNAL_HANDLE,
|
||||
|
@ -377,10 +378,16 @@ typedef enum VkStructureType {
|
|||
VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000,
|
||||
VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000,
|
||||
VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001,
|
||||
VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = 1000161000,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = 1000161001,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = 1000161002,
|
||||
VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = 1000161003,
|
||||
VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = 1000161004,
|
||||
VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = 1000174000,
|
||||
VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000,
|
||||
VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000,
|
||||
VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = 1000190001,
|
||||
VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO,
|
||||
|
@ -1498,12 +1505,14 @@ typedef VkFlags VkSamplerCreateFlags;
|
|||
|
||||
typedef enum VkDescriptorSetLayoutCreateFlagBits {
|
||||
VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 0x00000001,
|
||||
VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = 0x00000002,
|
||||
VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
|
||||
} VkDescriptorSetLayoutCreateFlagBits;
|
||||
typedef VkFlags VkDescriptorSetLayoutCreateFlags;
|
||||
|
||||
typedef enum VkDescriptorPoolCreateFlagBits {
|
||||
VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001,
|
||||
VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 0x00000002,
|
||||
VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
|
||||
} VkDescriptorPoolCreateFlagBits;
|
||||
typedef VkFlags VkDescriptorPoolCreateFlags;
|
||||
|
@ -3738,6 +3747,7 @@ typedef enum VkSubgroupFeatureFlagBits {
|
|||
VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 0x00000020,
|
||||
VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 0x00000040,
|
||||
VK_SUBGROUP_FEATURE_QUAD_BIT = 0x00000080,
|
||||
VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 0x00000100,
|
||||
VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
|
||||
} VkSubgroupFeatureFlagBits;
|
||||
typedef VkFlags VkSubgroupFeatureFlags;
|
||||
|
@ -7232,6 +7242,95 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetValidationCacheDataEXT(
|
|||
void* pData);
|
||||
#endif
|
||||
|
||||
#define VK_EXT_descriptor_indexing 1
|
||||
#define VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION 2
|
||||
#define VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME "VK_EXT_descriptor_indexing"
|
||||
|
||||
|
||||
typedef enum VkDescriptorBindingFlagBitsEXT {
|
||||
VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = 0x00000001,
|
||||
VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = 0x00000002,
|
||||
VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = 0x00000004,
|
||||
VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = 0x00000008,
|
||||
VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
|
||||
} VkDescriptorBindingFlagBitsEXT;
|
||||
typedef VkFlags VkDescriptorBindingFlagsEXT;
|
||||
|
||||
typedef struct VkDescriptorSetLayoutBindingFlagsCreateInfoEXT {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
uint32_t bindingCount;
|
||||
const VkDescriptorBindingFlagsEXT* pBindingFlags;
|
||||
} VkDescriptorSetLayoutBindingFlagsCreateInfoEXT;
|
||||
|
||||
typedef struct VkPhysicalDeviceDescriptorIndexingFeaturesEXT {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
VkBool32 shaderInputAttachmentArrayDynamicIndexing;
|
||||
VkBool32 shaderUniformTexelBufferArrayDynamicIndexing;
|
||||
VkBool32 shaderStorageTexelBufferArrayDynamicIndexing;
|
||||
VkBool32 shaderUniformBufferArrayNonUniformIndexing;
|
||||
VkBool32 shaderSampledImageArrayNonUniformIndexing;
|
||||
VkBool32 shaderStorageBufferArrayNonUniformIndexing;
|
||||
VkBool32 shaderStorageImageArrayNonUniformIndexing;
|
||||
VkBool32 shaderInputAttachmentArrayNonUniformIndexing;
|
||||
VkBool32 shaderUniformTexelBufferArrayNonUniformIndexing;
|
||||
VkBool32 shaderStorageTexelBufferArrayNonUniformIndexing;
|
||||
VkBool32 descriptorBindingUniformBufferUpdateAfterBind;
|
||||
VkBool32 descriptorBindingSampledImageUpdateAfterBind;
|
||||
VkBool32 descriptorBindingStorageImageUpdateAfterBind;
|
||||
VkBool32 descriptorBindingStorageBufferUpdateAfterBind;
|
||||
VkBool32 descriptorBindingUniformTexelBufferUpdateAfterBind;
|
||||
VkBool32 descriptorBindingStorageTexelBufferUpdateAfterBind;
|
||||
VkBool32 descriptorBindingUpdateUnusedWhilePending;
|
||||
VkBool32 descriptorBindingPartiallyBound;
|
||||
VkBool32 descriptorBindingVariableDescriptorCount;
|
||||
VkBool32 runtimeDescriptorArray;
|
||||
} VkPhysicalDeviceDescriptorIndexingFeaturesEXT;
|
||||
|
||||
typedef struct VkPhysicalDeviceDescriptorIndexingPropertiesEXT {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
uint32_t maxUpdateAfterBindDescriptorsInAllPools;
|
||||
VkBool32 shaderUniformBufferArrayNonUniformIndexingNative;
|
||||
VkBool32 shaderSampledImageArrayNonUniformIndexingNative;
|
||||
VkBool32 shaderStorageBufferArrayNonUniformIndexingNative;
|
||||
VkBool32 shaderStorageImageArrayNonUniformIndexingNative;
|
||||
VkBool32 shaderInputAttachmentArrayNonUniformIndexingNative;
|
||||
VkBool32 robustBufferAccessUpdateAfterBind;
|
||||
VkBool32 quadDivergentImplicitLod;
|
||||
uint32_t maxPerStageDescriptorUpdateAfterBindSamplers;
|
||||
uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers;
|
||||
uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers;
|
||||
uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages;
|
||||
uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages;
|
||||
uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments;
|
||||
uint32_t maxPerStageUpdateAfterBindResources;
|
||||
uint32_t maxDescriptorSetUpdateAfterBindSamplers;
|
||||
uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers;
|
||||
uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic;
|
||||
uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers;
|
||||
uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic;
|
||||
uint32_t maxDescriptorSetUpdateAfterBindSampledImages;
|
||||
uint32_t maxDescriptorSetUpdateAfterBindStorageImages;
|
||||
uint32_t maxDescriptorSetUpdateAfterBindInputAttachments;
|
||||
} VkPhysicalDeviceDescriptorIndexingPropertiesEXT;
|
||||
|
||||
typedef struct VkDescriptorSetVariableDescriptorCountAllocateInfoEXT {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
uint32_t descriptorSetCount;
|
||||
const uint32_t* pDescriptorCounts;
|
||||
} VkDescriptorSetVariableDescriptorCountAllocateInfoEXT;
|
||||
|
||||
typedef struct VkDescriptorSetVariableDescriptorCountLayoutSupportEXT {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
uint32_t maxVariableDescriptorCount;
|
||||
} VkDescriptorSetVariableDescriptorCountLayoutSupportEXT;
|
||||
|
||||
|
||||
|
||||
#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"
|
||||
|
@ -7310,6 +7409,31 @@ VKAPI_ATTR void VKAPI_CALL vkCmdWriteBufferMarkerAMD(
|
|||
uint32_t marker);
|
||||
#endif
|
||||
|
||||
#define VK_AMD_shader_core_properties 1
|
||||
#define VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION 1
|
||||
#define VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME "VK_AMD_shader_core_properties"
|
||||
|
||||
typedef struct VkPhysicalDeviceShaderCorePropertiesAMD {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
uint32_t shaderEngineCount;
|
||||
uint32_t shaderArraysPerEngineCount;
|
||||
uint32_t computeUnitsPerShaderArray;
|
||||
uint32_t simdPerComputeUnit;
|
||||
uint32_t wavefrontsPerSimd;
|
||||
uint32_t wavefrontSize;
|
||||
uint32_t sgprsPerSimd;
|
||||
uint32_t minSgprAllocation;
|
||||
uint32_t maxSgprAllocation;
|
||||
uint32_t sgprAllocationGranularity;
|
||||
uint32_t vgprsPerSimd;
|
||||
uint32_t minVgprAllocation;
|
||||
uint32_t maxVgprAllocation;
|
||||
uint32_t vgprAllocationGranularity;
|
||||
} VkPhysicalDeviceShaderCorePropertiesAMD;
|
||||
|
||||
|
||||
|
||||
#define VK_EXT_vertex_attribute_divisor 1
|
||||
#define VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION 1
|
||||
#define VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME "VK_EXT_vertex_attribute_divisor"
|
||||
|
@ -7334,6 +7458,11 @@ typedef struct VkPipelineVertexInputDivisorStateCreateInfoEXT {
|
|||
|
||||
|
||||
|
||||
#define VK_NV_shader_subgroup_partitioned 1
|
||||
#define VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION 1
|
||||
#define VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME "VK_NV_shader_subgroup_partitioned"
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -5,68 +5,36 @@
|
|||
<body>
|
||||
<h1>Vulkan Spec Sandbox</h1>
|
||||
|
||||
<p> This is the vulkan spec sandbox, used to view generated Vulkan API and
|
||||
related documents. It is updated by hand periodically by Jon Leech. </p>
|
||||
<p> This is the vulkan spec sandbox, used to view generated Vulkan API
|
||||
Specifications and related documents. Some or all of the links below may
|
||||
not be present, depending on how the specification was built.</p>
|
||||
|
||||
<ul>
|
||||
<li> The <a href="1.0/styleguide.html">Vulkan API and Documentation
|
||||
<li> The <a href="styleguide.html">Vulkan API and Documentation
|
||||
Style Guide</a> defines mandatory and recommended practices
|
||||
for writing and modifying Specifications, extensions,
|
||||
and reference page language. </li>
|
||||
<li> The <a href="1.0/registry.html">Vulkan API Registry</a> document
|
||||
<li> The <a href="registry.html">Vulkan API Registry</a> document
|
||||
describes the XML schema used in <tt>vk.xml</tt> in considerable
|
||||
detail, for use when adding to or modifying the API. </li>
|
||||
<li> <b> Core API Specifications </b>
|
||||
<li> <b> Vulkan 1.1 Core API Specifications </b>
|
||||
<ul>
|
||||
<li> <a href="1.0/html/vkspec.html">Single document</a> (HTML5) </li>
|
||||
<li> <a href="1.0/pdf/vkspec.pdf"> Vulkan API spec (PDF)</a> </li>
|
||||
</ul>
|
||||
</li>
|
||||
<li> <b> Core + Khronos Extensions API Specifications </b>
|
||||
<ul>
|
||||
<li> <a href="1.0-wsi_extensions/html/vkspec.html">Single document</a> (HTML5) </li>
|
||||
<li> <a href="1.0-wsi_extensions/pdf/vkspec.pdf"> Vulkan API spec (PDF)</a> </li>
|
||||
</ul>
|
||||
</li>
|
||||
<li> <b> Core + All Extensions API Specifications </b>
|
||||
<ul>
|
||||
<li> <a href="1.0-extensions/html/vkspec.html">Single document</a> (HTML5) </li>
|
||||
<li> <a href="1.0-extensions/pdf/vkspec.pdf"> Vulkan API spec (PDF)</a> </li>
|
||||
</ul>
|
||||
</li>
|
||||
<li> <b> Khronos Data Format 1.1 Specification </b>
|
||||
<ul>
|
||||
<li> <a href="df/df_inline.html">(HTML)</a> </li>
|
||||
<li> <a href="df/df.pdf">(PDF)</a> </li>
|
||||
<li> <a href="html/vkspec.html">Single document</a> (HTML5) </li>
|
||||
<li> <a href="pdf/vkspec.pdf"> Vulkan API spec (PDF)</a> </li>
|
||||
</ul>
|
||||
</li>
|
||||
<li> <b> Validator script output (Core API only)</b>
|
||||
<ul>
|
||||
<li> <a href="1.0/checks/notInSpec.txt">List of commands, structs, etc. not included in API spec</a></li>
|
||||
<li> <a href="1.0/checks/specErrs.txt">Validator script output for API specification</a>
|
||||
<li> <a href="1.0/checks/manErrs.txt">Validator script output for man pages</a>
|
||||
<li> <a href="checks/notInSpec.txt">List of commands, structs, etc. not included in API spec</a></li>
|
||||
<li> <a href="checks/specErrs.txt">Validator script output for API specification</a>
|
||||
<li> <a href="checks/manErrs.txt">Validator script output for man pages</a>
|
||||
</ul>
|
||||
</li>
|
||||
<li> <b> Reference pages (Core API only)</b>
|
||||
<ul>
|
||||
<li> <a href="1.0/apispec.html">Vulkan ref pages</a> (HTML, single document) </li>
|
||||
<li> <a href="1.0/apispec.pdf">Vulkan ref pages</a> (PDF, single document) </li>
|
||||
<li> <a href="1.0/man/html/">Vulkan ref pages</a> (HTML, separate files) </li>
|
||||
</ul>
|
||||
</li>
|
||||
<li> <b> The following targets are for internal use only and are probably
|
||||
not included in, or if included, not up to date in the sandbox
|
||||
</b> </li>
|
||||
<ul>
|
||||
<li> Core API <a href="1.0/html/vkspec.html">Single document</a>
|
||||
(HTML5 from 'asciidoc') </li>
|
||||
<li> Core + KHR API <a
|
||||
href="1.0-wsi_extensions/html/vkspec.html">Single document</a>
|
||||
(HTML5 from 'asciidoc') </li>
|
||||
<li> Core + All Extensions API <a
|
||||
href="1.0-extensions/html/vkspec.html">Single document</a> (HTML5
|
||||
from 'asciidoc') </li>
|
||||
<li> <a href="1.0/man/3/">Vulkan ref pages</a> (nroff / Unix man page markup, separate files - <b>deprecated</b>) </li>
|
||||
<li> <a href="apispec.html">Vulkan ref pages</a> (HTML, single document) </li>
|
||||
<li> <a href="apispec.pdf">Vulkan ref pages</a> (PDF, single document) </li>
|
||||
<li> <a href="man/html/">Vulkan ref pages</a> (HTML, separate files) </li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
|
@ -660,7 +660,7 @@ if __name__ == '__main__':
|
|||
# If no files are specified, reflow the entire specification chapters folder
|
||||
if len(args.files) == 0:
|
||||
folder_to_reflow = os.getcwd()
|
||||
folder_to_reflow += '/doc/specs/vulkan'
|
||||
# folder_to_reflow += '/doc/specs/vulkan'
|
||||
reflowAllAdocFiles(folder_to_reflow, args)
|
||||
else:
|
||||
for file in args.files:
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
# The value to start tagging VU statements at, unless overridden by -nextvu
|
||||
startVUID = 1917
|
||||
startVUID = 1926
|
||||
|
|
18
registry.txt
18
registry.txt
|
@ -58,7 +58,7 @@ structure and enumerant types, as well as additional types
|
|||
of registered information specific to Vulkan.
|
||||
|
||||
The Vulkan C header files generated from the registry are checked in under
|
||||
`src/vulkan/`.
|
||||
`include/vulkan/`.
|
||||
|
||||
|
||||
== Schema Choices
|
||||
|
@ -96,7 +96,7 @@ this is unlikely to happen.
|
|||
= Getting Started
|
||||
|
||||
See
|
||||
https://gitlab.khronos.org/vulkan/vulkan/blob/master/src/spec/README.adoc[`src/spec/README.adoc`]
|
||||
https://gitlab.khronos.org/vulkan/vulkan/blob/master/xml/README.adoc[`xml/README.adoc`]
|
||||
in the `Vulkan-Docs` repository for information on required toolchain
|
||||
components such as Python 3, pass:[g++], and GNU make.
|
||||
|
||||
|
@ -104,26 +104,26 @@ Once you have the right tools installed, perform the following steps:
|
|||
|
||||
* Check out the `Vulkan-Docs` repository linked above from Khronos
|
||||
Github (there are instructions at the link)
|
||||
* `cd` to the root directory in your checked-out repo
|
||||
* Switch to the `master` branch.
|
||||
* Go to `vulkan/src/spec` in your checked-out repo
|
||||
* Invoke `make clean ; make install ; make test`
|
||||
|
||||
This should regenerate `vulkan_core.h` and a variety of platform-specific
|
||||
headers, install them in `../vulkan/`, and verify that the headers build
|
||||
headers, install them in `../include/vulkan/`, and verify that the headers build
|
||||
properly. The result should be identical to the version you just pulled from
|
||||
Github. They can be compared by, for example:
|
||||
|
||||
`git diff ../vulkan/`
|
||||
`git diff ../include/vulkan/`
|
||||
|
||||
The `install` target also generates source code for a simple extension
|
||||
loader library in `../ext_loader/`.
|
||||
loader library in `../src/ext_loader/`.
|
||||
|
||||
Other Makefile targets in `src/spec` include:
|
||||
Other Makefile targets in `xml/` include:
|
||||
|
||||
* `validate` - validate `vk.xml` against the XML schema. Recommended
|
||||
if you are making nontrivial changes.
|
||||
* The asciidoc includes used by the Specification and Reference Pages
|
||||
are built using the 'make generated' target in `doc/specs/vulkan/`,
|
||||
are built using the 'make generated' target in the parent directory Makefile,
|
||||
although they use the scripts and XML in this directory. These files
|
||||
are generated dynamically when building the specs, since their
|
||||
contents depend on the exact set of extensions the Specification is
|
||||
|
@ -235,6 +235,8 @@ Zero or more of each of the following tags, normally in this order
|
|||
* <<tag-vendorids,tag:vendorids>> - defines Khronos vendor IDs,
|
||||
described in detail in the "`Layers and Extensions`" appendix of the
|
||||
Vulkan Specification.
|
||||
* <<tag-platforms,tag:platforms>> - defines platform names corresponding
|
||||
to platform-specific <<tag-extension,API extensions>>.
|
||||
* <<tag-tags,tag:tags>> - defines author IDs used for
|
||||
extensions and layers.
|
||||
Author IDs are described in detail in the "`Layers & Extensions`"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#!/usr/bin/env bash
|
||||
specdir=../../../out/
|
||||
specdir=out
|
||||
RHOST=kaylee
|
||||
RPATH=/home/khronos/memberftp/vulkan/
|
||||
|
||||
|
|
|
@ -745,7 +745,8 @@ Contents of an implementor's note go here.
|
|||
|
||||
There are a variety of common terms that have several equivalent word
|
||||
choices.
|
||||
Always use the words in the first column instead of the alternate terms.
|
||||
Always use the words or phrases in the first column instead of the alternate
|
||||
terms.
|
||||
This list may not be comprehensive; when in doubt, be guided by the existing
|
||||
<<vulkan-spec,Vulkan API Specification>>.
|
||||
|
||||
|
@ -760,6 +761,11 @@ This list may not be comprehensive; when in doubt, be guided by the existing
|
|||
| bitmask | bit field
|
||||
| Technically correct. Vulkan bitmasks are just integers and
|
||||
are not logically addressable at the bit level.
|
||||
| bound | currently bound
|
||||
| Appears primarily in valid usage statements, which are
|
||||
always referring to the current state of the objects
|
||||
they are validating.
|
||||
Rare exceptions may be justified in other cases.
|
||||
| command | function
|
||||
| Except when talking about function pointers returned by
|
||||
ftext:vkGet*ProcAddr commands.
|
||||
|
|
|
@ -162,7 +162,7 @@ include::style/vuid.txt[]
|
|||
* 2017-10-15 - Describe how to write <<writing-latexmath-in-table-cells,
|
||||
LaTeX Math in Table Cells>> (internal issue 908).
|
||||
* 2017-10-15 - Add more details of <<extensions-naming-author-IDs, `KHX`
|
||||
extensions>> (public issues 536, 580)..
|
||||
extensions>> (public issues 536, 580).
|
||||
* 2017-09-10 - Add descriptions of <<writing-arrays, how to use `each` and
|
||||
`any`>> to refer to properties of elments of arrays (internal issue 884).
|
||||
* 2017-09-10 - Add <<extensions-interactions-parent, Valid Usage and
|
||||
|
|
22
xml/Makefile
22
xml/Makefile
|
@ -23,22 +23,22 @@
|
|||
PYTHON ?= python3
|
||||
PYFILES = genheaders.py reg.py
|
||||
GENOPTS =
|
||||
OUTDIR = ../../out/1.0
|
||||
|
||||
# Generate Vulkan header from XML. Many other files can be generated
|
||||
# from vk.xml using the scripts, but they are all generated in
|
||||
# ../../doc/specs/vulkan/ as part of the process of building the
|
||||
# Specification.
|
||||
# from vk.xml using the scripts, but they are all generated in ../ as
|
||||
# part of the process of building the Specification.
|
||||
#
|
||||
# Targets:
|
||||
#
|
||||
# default / install - regenerate ../vulkan/vulkan_core.h .
|
||||
# default / install - regenerate headers in ../include/vulkan/.
|
||||
# validate - run XML validator on vk.xml against the schema.
|
||||
# test - check if vulkan_core.h compiles.
|
||||
# clean_dirt - remove intermediate files.
|
||||
# clean - remove installed and intermediate files.
|
||||
|
||||
VULKAN = ../vulkan
|
||||
INCLUDE = ../include
|
||||
VULKAN = $(INCLUDE)/vulkan
|
||||
SRC = ../src
|
||||
|
||||
# Vulkan platform-specific headers
|
||||
PLATFORM_HEADERS = \
|
||||
|
@ -53,7 +53,7 @@ PLATFORM_HEADERS = \
|
|||
$(VULKAN)/vulkan_xlib.h \
|
||||
$(VULKAN)/vulkan_xlib_xrandr.h
|
||||
HEADERS = $(VULKAN)/vulkan_core.h $(PLATFORM_HEADERS)
|
||||
EXTLOADER = ../ext_loader
|
||||
EXTLOADER = $(SRC)/ext_loader
|
||||
EXTSRCS = $(EXTLOADER)/vulkan_ext.c
|
||||
|
||||
default install: $(HEADERS) $(EXTSRCS)
|
||||
|
@ -80,10 +80,10 @@ validate:
|
|||
TESTDEFS = -DVK_USE_PLATFORM_XCB_KHR -DVK_USE_PLATFORM_XLIB_KHR
|
||||
|
||||
test: $(HEADERS) $(VULKAN)/vulkan.h $(VULKAN)/vk_platform.h
|
||||
gcc -Wall -pedantic -std=c99 -c -I.. test.c
|
||||
g++ -Wall -c -std=c++98 -I.. test.c
|
||||
g++ -Wall -c -std=c++11 -I.. test.c
|
||||
gcc $(TESTDEFS) -Wall -pedantic -std=c99 -c -I.. test.c
|
||||
gcc -Wall -pedantic -std=c99 -c -I$(INCLUDE) test.c
|
||||
g++ -Wall -c -std=c++98 -I$(INCLUDE) test.c
|
||||
g++ -Wall -c -std=c++11 -I$(INCLUDE) test.c
|
||||
gcc $(TESTDEFS) -Wall -pedantic -std=c99 -c -I$(INCLUDE) test.c
|
||||
rm test.o
|
||||
|
||||
################################################
|
||||
|
|
|
@ -24,10 +24,11 @@ version of the API.
|
|||
* Create a git branch to work in locally
|
||||
* Edit `vk.xml`
|
||||
* `make ; make test`
|
||||
** This generates headers and source including `../vulkan/vulkan_core.h`;
|
||||
a set of platform-dependent headers `../vulkan/vulkan_<platform>.h`;
|
||||
and extension loader code in `../ext_loader/vulkan_ext.[ch]`
|
||||
* `(cd ../../doc/specs/vulkan && make generated)`
|
||||
** This generates headers and source in `../include/vulkan` including
|
||||
`vulkan_core.h`; a set of platform-dependent headers
|
||||
`vulkan_<platform>.h`; and extension loader code in
|
||||
`../src/ext_loader/vulkan_ext.[ch]`
|
||||
* `(cd .. && make generated)`
|
||||
** This generates asciidoc includes for the spec. There are many ways to
|
||||
invoke the Makefile in the spec directory; this simple recipe only
|
||||
generates includes for the core Vulkan API without any extensions.
|
||||
|
@ -38,9 +39,9 @@ version of the API.
|
|||
otherwise), and create a pull or merge request against the specification
|
||||
branch (`master`) or other appropriate target.
|
||||
|
||||
For a detailed description of the schema, go to `../../doc/specs/vulkan` and
|
||||
`make registry_doc`, which generates $(OUTDIR)/registry.html. This includes
|
||||
some examples of how to make simple changes in the API via the XML.
|
||||
For a detailed description of the schema, go to `..` and `make registry`,
|
||||
which generates $(OUTDIR)/registry.html. This includes some examples of how
|
||||
to make simple changes in the API via the XML.
|
||||
|
||||
The generator scripts are written in Python 3, using the `etree` package for
|
||||
processing XML.
|
||||
|
@ -63,9 +64,11 @@ processing XML.
|
|||
** hostsyncgenerator.py - Asciidoc host sync table generator.
|
||||
** pygenerator.py - Generates python encoding of the API description.
|
||||
** validitygenerator.py - Asciidoc validity language generator.
|
||||
* ../vulkan/vulkan_core.h - Generated Vulkan non-platform API header.
|
||||
* ../vulkan/vulkan_<platform>.h - Generated Vulkan platform API headers.
|
||||
* ../ext_loader/vulkan_ext.[ch] - Extension loader code
|
||||
* ../include/vulkan/vulkan_core.h - Generated Vulkan non-platform API
|
||||
header.
|
||||
* ../include/vulkan/vulkan_<platform>.h - Generated Vulkan platform API
|
||||
headers.
|
||||
* ../src/ext_loader/vulkan_ext.[ch] - Extension loader code
|
||||
* indexExt.py - generate HTML index of all extensions for inclusion into
|
||||
the Vulkan registry index page.
|
||||
* extDependency.py - generate extension dependencies in Bash and Python
|
||||
|
@ -74,11 +77,11 @@ processing XML.
|
|||
[[targets]]
|
||||
== Makefile Targets
|
||||
|
||||
* `install` or `../vulkan/vulkan_core.h` (default target) - regenerate
|
||||
`../vulkan/vulkan_core.h` .
|
||||
* `test` - make sure `../vulkan/vulkan_core.h` compiles. *Important!* Can
|
||||
also be used to test if platform headers compile by specifying `make
|
||||
TESTDEFS=-DVK_USE_PLATFORM_<PLATFORM>_<AUTHORID> test`.
|
||||
* `install` (default target) - regenerate header files in
|
||||
`../include/vulkan`.
|
||||
* `test` - make sure `../include/vulkan/vulkan_core.h` compiles.
|
||||
*Important!* Can also be used to test if platform headers compile by
|
||||
specifying `make TESTDEFS=-DVK_USE_PLATFORM_<PLATFORM>_<AUTHORID> test`.
|
||||
* `validate` - validate `vk.xml` against the schema. Requires installing
|
||||
`jing` (see <<linux,Software Dependencies>> below). Also important!
|
||||
* `clean_dirt` - remove intermediate files.
|
||||
|
@ -91,11 +94,11 @@ steps will build `vulkan_core.h` and test that it compiles:
|
|||
[source,sh]
|
||||
----
|
||||
# Regenerate header from XML
|
||||
python3 genvk.py -o ../vulkan vulkan_core.h
|
||||
python3 genvk.py -o ../include/vulkan vulkan_core.h
|
||||
# Verify that the resulting header compiles
|
||||
gcc -Wall -c -I.. testcore.c
|
||||
g++ -Wall -c -std=c++98 -I.. testcore.c
|
||||
g++ -Wall -c -std=c++11 -I.. testcore.c
|
||||
gcc -Wall -c -I../include testcore.c
|
||||
g++ -Wall -c -std=c++98 -I../include testcore.c
|
||||
g++ -Wall -c -std=c++11 -I../include testcore.c
|
||||
----
|
||||
|
||||
|
||||
|
@ -132,7 +135,9 @@ Windows is:
|
|||
[[history]]
|
||||
== Revision History
|
||||
|
||||
* 2017/03/06 -
|
||||
* 2018/03/13 -
|
||||
Update for new directory structure.
|
||||
* 2018/03/06 -
|
||||
Update for Vulkan 1.1 release and `master` branch.
|
||||
* 2015/09/18 -
|
||||
Split platform-specific headers into their own vulkan_<platform>.h files,
|
||||
|
|
|
@ -12,9 +12,9 @@ file = File.open("vk.xml")
|
|||
Nokogiri::XML(file).xpath('//extension[@name="' + extension_name + '"]').each do | extension |
|
||||
extension_enum_offset = 1000000000 + ((extension.attribute('number').content.to_i - 1) * 1000)
|
||||
extension.xpath('require').each do |require|
|
||||
|
||||
|
||||
do_rename = false
|
||||
|
||||
|
||||
if require.attribute('extension')
|
||||
allowed_dependency_renames.each do |dependency|
|
||||
if require.attribute('extension').content == dependency
|
||||
|
@ -24,20 +24,20 @@ Nokogiri::XML(file).xpath('//extension[@name="' + extension_name + '"]').each do
|
|||
else
|
||||
do_rename = true
|
||||
end
|
||||
|
||||
|
||||
if do_rename == false
|
||||
puts "Extension interaction with " + require.attribute('extension').content + " needs addressing!"
|
||||
else
|
||||
core_block = "\t"*2 + require.to_s.lines[0].strip + "\n"
|
||||
alias_block = "\t"*3 + require.to_s.lines[0].strip + "\n"
|
||||
|
||||
|
||||
require.children.each do |element|
|
||||
if element.node_name != 'text' && element.node_name != 'comment'
|
||||
|
||||
if element.node_name != 'text' && element.node_name != 'comment'
|
||||
|
||||
# Core Block
|
||||
if /.+_EXTENSION_NAME/.match(element.attribute('name').content) == nil &&
|
||||
/.+_SPEC_VERSION/.match(element.attribute('name').content) == nil
|
||||
|
||||
|
||||
case element.node_name
|
||||
when 'enum'
|
||||
attributes = element.attributes
|
||||
|
@ -45,7 +45,7 @@ Nokogiri::XML(file).xpath('//extension[@name="' + extension_name + '"]').each do
|
|||
attributes['value'] = element.attribute('offset').content.to_i + extension_enum_offset
|
||||
attributes.delete('offset')
|
||||
end
|
||||
|
||||
|
||||
core_block << "\t"*3 + '<enum'
|
||||
attributes.each_pair do |key, value|
|
||||
core_block << ' ' + key + '="' + value.to_s + '"'
|
||||
|
@ -57,13 +57,13 @@ Nokogiri::XML(file).xpath('//extension[@name="' + extension_name + '"]').each do
|
|||
core_block << "Warning: Unknown type found!\n" << element.node_name
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
# Alias Block + Renames
|
||||
|
||||
|
||||
if /.+_EXTENSION_NAME/.match(element.attribute('name').content) ||
|
||||
/.+_SPEC_VERSION/.match(element.attribute('name').content)
|
||||
alias_block << "\t"*4 + element.to_s.strip + "\n"
|
||||
else
|
||||
else
|
||||
old_name = element.attribute('name').content
|
||||
new_name = old_name.sub('_' + extension_suffix,'').sub(extension_suffix,'')
|
||||
alias_block << "\t"*4 + '<alias name="' + old_name + '" value="' + new_name + '"/>' + "\n"
|
||||
|
@ -74,7 +74,7 @@ Nokogiri::XML(file).xpath('//extension[@name="' + extension_name + '"]').each do
|
|||
end
|
||||
alias_block << "\t"*3 + require.to_s.lines[-1].strip
|
||||
core_block << "\t"*2 + require.to_s.lines[-1].strip
|
||||
|
||||
|
||||
puts alias_block
|
||||
puts
|
||||
puts core_block
|
||||
|
@ -99,14 +99,14 @@ end
|
|||
def rename_text_files(dir, renames, extension_name)
|
||||
Dir[dir + '/*.txt'].each do |name|
|
||||
# Skip renaming in the extension appendix, since this should preserve the old names.
|
||||
if (name != ('../../doc/specs/vulkan/appendices/' + extension_name + '.txt'))
|
||||
if (name != ('../appendices/' + extension_name + '.txt'))
|
||||
old_file = File.read(name)
|
||||
|
||||
|
||||
new_file = old_file.clone
|
||||
renames.each_pair do |old, new|
|
||||
new_file.gsub!(old,new)
|
||||
end
|
||||
|
||||
|
||||
if (old_file != new_file)
|
||||
File.write(name, new_file)
|
||||
end
|
||||
|
@ -114,8 +114,8 @@ def rename_text_files(dir, renames, extension_name)
|
|||
end
|
||||
Dir[dir + '/*/'].each do |subdir|
|
||||
rename_text_files(subdir, renames, extension_name)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
rename_text_files('../../doc/specs/vulkan/chapters', renames, extension_name)
|
||||
rename_text_files('../../doc/specs/vulkan/appendices', renames, extension_name)
|
||||
rename_text_files('../chapters', renames, extension_name)
|
||||
rename_text_files('../appendices', renames, extension_name)
|
||||
|
|
|
@ -114,6 +114,9 @@ Types = element types {
|
|||
# structextends - only applicable if category is 'struct'. Lists parent
|
||||
# structures which this structure may extend via the pNext chain
|
||||
# of the parent.
|
||||
# When present it suppresses generation of automatic validity for the
|
||||
# pNext member of that structure, and instead the structure is added
|
||||
# to pNext chain validity for the parent structures it extends.
|
||||
# For types without a category, contents include
|
||||
# <apientry /> - substitutes for an APIENTRY-style macro on output
|
||||
# <name> - contains name of the type being defined
|
||||
|
@ -407,6 +410,8 @@ Extensions = element extensions {
|
|||
# name - extension name string
|
||||
# number - extension number (positive integer, should be unique)
|
||||
# protect - C preprocessor symbol to conditionally define the interface
|
||||
# platform - should be one of the platform names defined in the
|
||||
# <platform> tag. Currently unused.
|
||||
# author - name of the author (usually a company or project name)
|
||||
# contact - contact responsible for the tag (name and contact information)
|
||||
# type - 'device' or 'instance', if present
|
||||
|
|
|
@ -710,9 +710,7 @@ class ValidityOutputGenerator(OutputGenerator):
|
|||
for struct in validextensionstructs:
|
||||
# Unpleasantly breaks encapsulation. Should be a method in the registry class
|
||||
type = self.registry.lookupElementInfo(struct, self.registry.typedict)
|
||||
if (type == None):
|
||||
self.logMsg('warn', 'makeStructureExtensionPointer: struct', struct, 'is in a validextensionstructs= attribute but is not in the registry')
|
||||
elif (type.required):
|
||||
if (type.required):
|
||||
extensionstructs.append('slink:' + struct)
|
||||
else:
|
||||
self.logMsg('diag', 'makeStructureExtensionPointer: struct', struct, 'IS NOT required')
|
||||
|
@ -764,7 +762,7 @@ class ValidityOutputGenerator(OutputGenerator):
|
|||
# Generate language to independently validate a parameter
|
||||
if paramtype.text == 'VkStructureType' and paramname.text == 'sType':
|
||||
asciidoc += self.makeStructureType(blockname, param)
|
||||
elif paramtype.text == 'void' and paramname.text == 'pNext':
|
||||
elif paramname.text == 'pNext' and paramtype.text == 'void' and cmd.attrib.get('structextends') is None:
|
||||
asciidoc += self.makeStructureExtensionPointer(blockname, param)
|
||||
|
||||
# In case there's nothing to report, return None
|
||||
|
@ -800,7 +798,8 @@ class ValidityOutputGenerator(OutputGenerator):
|
|||
if paramtype.text == 'VkStructureType' and paramname.text == 'sType':
|
||||
asciidoc += self.makeStructureType(blockname, param)
|
||||
elif paramtype.text == 'void' and paramname.text == 'pNext':
|
||||
asciidoc += self.makeStructureExtensionPointer(blockname, param)
|
||||
if cmd.attrib.get('structextends') is None:
|
||||
asciidoc += self.makeStructureExtensionPointer(blockname, param)
|
||||
else:
|
||||
asciidoc += self.createValidationLineForParameter(blockname, param, params, typecategory)
|
||||
|
||||
|
|
198
xml/vk.xml
198
xml/vk.xml
|
@ -24,7 +24,8 @@ language incorporated into the Specification and reference pages, and other
|
|||
material which is registered by Khronos, such as tags used by extension and
|
||||
layer authors. The authoritative public version of vk.xml is maintained in
|
||||
the master branch of the Khronos Vulkan GitHub project. The authoritative
|
||||
private version is maintained in the 1.0 branch of the member gitlab server.
|
||||
private version is maintained in the master branch of the member gitlab
|
||||
server.
|
||||
</comment>
|
||||
|
||||
<vendorids comment="Vulkan vendor IDs for physical devices without PCI vendor IDs">
|
||||
|
@ -136,7 +137,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
|||
<type category="define">// Vulkan 1.1 version number
|
||||
#define <name>VK_API_VERSION_1_1</name> <type>VK_MAKE_VERSION</type>(1, 1, 0)// Patch version should always be set to 0</type>
|
||||
<type category="define">// Version of this file
|
||||
#define <name>VK_HEADER_VERSION</name> 71</type>
|
||||
#define <name>VK_HEADER_VERSION</name> 72</type>
|
||||
|
||||
<type category="define">
|
||||
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
|
||||
|
@ -294,6 +295,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
|||
<type category="bitmask">typedef <type>VkFlags</type> <name>VkDebugUtilsMessengerCreateFlagsEXT</name>;</type>
|
||||
<type category="bitmask">typedef <type>VkFlags</type> <name>VkDebugUtilsMessengerCallbackDataFlagsEXT</name>;</type>
|
||||
<type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineRasterizationConservativeStateCreateFlagsEXT</name>;</type>
|
||||
<type requires="VkDescriptorBindingFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkDescriptorBindingFlagsEXT</name>;</type>
|
||||
|
||||
<comment>Types which can be void pointers or class pointers, selected at compile time</comment>
|
||||
<type category="handle"><type>VK_DEFINE_HANDLE</type>(<name>VkInstance</name>)</type>
|
||||
|
@ -425,6 +427,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
|||
<type name="VkDescriptorPoolCreateFlagBits" category="enum"/>
|
||||
<type name="VkDependencyFlagBits" category="enum"/>
|
||||
<type name="VkObjectType" category="enum"/>
|
||||
<type name="VkDescriptorBindingFlagBitsEXT" category="enum"/>
|
||||
|
||||
<comment>Extensions</comment>
|
||||
<type name="VkIndirectCommandsLayoutUsageFlagBitsNVX" category="enum"/>
|
||||
|
@ -1574,7 +1577,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
|||
</type>
|
||||
<type category="struct" name="VkDisplayPresentInfoKHR" structextends="VkPresentInfoKHR">
|
||||
<member values="VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member noautovalidity="true">const <type>void</type>* <name>pNext</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member>
|
||||
<member><type>VkRect2D</type> <name>srcRect</name><comment>Rectangle within the presentable image to read pixel data from when presenting to the display.</comment></member>
|
||||
<member><type>VkRect2D</type> <name>dstRect</name><comment>Rectangle within the current display mode's visible region to display srcRectangle in.</comment></member>
|
||||
<member><type>VkBool32</type> <name>persistent</name><comment>For smart displays, use buffered mode. If the display properties member "persistentMode" is VK_FALSE, this member must always be VK_FALSE.</comment></member>
|
||||
|
@ -1687,7 +1690,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
|||
</type>
|
||||
<type category="struct" name="VkPipelineRasterizationStateRasterizationOrderAMD" structextends="VkPipelineRasterizationStateCreateInfo">
|
||||
<member values="VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member noautovalidity="true">const <type>void</type>* <name>pNext</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member>
|
||||
<member><type>VkRasterizationOrderAMD</type> <name>rasterizationOrder</name><comment>Rasterization order to use for the pipeline</comment></member>
|
||||
</type>
|
||||
<type category="struct" name="VkDebugMarkerObjectNameInfoEXT">
|
||||
|
@ -1714,17 +1717,17 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
|||
</type>
|
||||
<type category="struct" name="VkDedicatedAllocationImageCreateInfoNV" structextends="VkImageCreateInfo">
|
||||
<member values="VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member noautovalidity="true">const <type>void</type>* <name>pNext</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member>
|
||||
<member><type>VkBool32</type> <name>dedicatedAllocation</name><comment>Whether this image uses a dedicated allocation</comment></member>
|
||||
</type>
|
||||
<type category="struct" name="VkDedicatedAllocationBufferCreateInfoNV" structextends="VkBufferCreateInfo">
|
||||
<member values="VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member noautovalidity="true">const <type>void</type>* <name>pNext</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member>
|
||||
<member><type>VkBool32</type> <name>dedicatedAllocation</name><comment>Whether this buffer uses a dedicated allocation</comment></member>
|
||||
</type>
|
||||
<type category="struct" name="VkDedicatedAllocationMemoryAllocateInfoNV" structextends="VkMemoryAllocateInfo">
|
||||
<member values="VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member noautovalidity="true">const <type>void</type>* <name>pNext</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member>
|
||||
<member optional="true"><type>VkImage</type> <name>image</name><comment>Image that this allocation will be bound to</comment></member>
|
||||
<member optional="true"><type>VkBuffer</type> <name>buffer</name><comment>Buffer that this allocation will be bound to</comment></member>
|
||||
</type>
|
||||
|
@ -1758,7 +1761,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
|||
</type>
|
||||
<type category="struct" name="VkWin32KeyedMutexAcquireReleaseInfoNV" structextends="VkSubmitInfo">
|
||||
<member values="VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member noautovalidity="true">const <type>void</type>* <name>pNext</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member>
|
||||
<member optional="true"><type>uint32_t</type> <name>acquireCount</name></member>
|
||||
<member len="acquireCount">const <type>VkDeviceMemory</type>* <name>pAcquireSyncs</name></member>
|
||||
<member len="acquireCount">const <type>uint64_t</type>* <name>pAcquireKeys</name></member>
|
||||
|
@ -1936,7 +1939,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
|||
</type>
|
||||
<type category="struct" name="VkPresentRegionsKHR" structextends="VkPresentInfoKHR">
|
||||
<member values="VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member noautovalidity="true">const <type>void</type>* <name>pNext</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member>
|
||||
<member><type>uint32_t</type> <name>swapchainCount</name><comment>Copy of VkPresentInfoKHR::swapchainCount</comment></member>
|
||||
<member len="swapchainCount" optional="true">const <type>VkPresentRegionKHR</type>* <name>pRegions</name><comment>The regions that have changed</comment></member>
|
||||
</type>
|
||||
|
@ -1964,7 +1967,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
|||
<type category="struct" name="VkExternalMemoryPropertiesKHR" alias="VkExternalMemoryProperties"/>
|
||||
<type category="struct" name="VkPhysicalDeviceExternalImageFormatInfo" structextends="VkPhysicalDeviceImageFormatInfo2">
|
||||
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member noautovalidity="true">const <type>void</type>* <name>pNext</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member>
|
||||
<member optional="true"><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkPhysicalDeviceExternalImageFormatInfoKHR" alias="VkPhysicalDeviceExternalImageFormatInfo"/>
|
||||
|
@ -2060,7 +2063,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
|||
</type>
|
||||
<type category="struct" name="VkWin32KeyedMutexAcquireReleaseInfoKHR" structextends="VkSubmitInfo">
|
||||
<member values="VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member noautovalidity="true">const <type>void</type>* <name>pNext</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member>
|
||||
<member optional="true"><type>uint32_t</type> <name>acquireCount</name></member>
|
||||
<member len="acquireCount">const <type>VkDeviceMemory</type>* <name>pAcquireSyncs</name></member>
|
||||
<member len="acquireCount">const <type>uint64_t</type>* <name>pAcquireKeys</name></member>
|
||||
|
@ -2107,7 +2110,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
|||
</type>
|
||||
<type category="struct" name="VkD3D12FenceSubmitInfoKHR" structextends="VkSubmitInfo">
|
||||
<member values="VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member noautovalidity="true">const <type>void</type>* <name>pNext</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member>
|
||||
<member optional="true"><type>uint32_t</type> <name>waitSemaphoreValuesCount</name></member>
|
||||
<member optional="true" len="waitSemaphoreValuesCount">const <type>uint64_t</type>* <name>pWaitSemaphoreValues</name></member>
|
||||
<member optional="true"><type>uint32_t</type> <name>signalSemaphoreValuesCount</name></member>
|
||||
|
@ -2260,7 +2263,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
|||
<type category="struct" name="VkPhysicalDeviceGroupPropertiesKHR" alias="VkPhysicalDeviceGroupProperties"/>
|
||||
<type category="struct" name="VkMemoryAllocateFlagsInfo" structextends="VkMemoryAllocateInfo">
|
||||
<member values="VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member noautovalidity="true">const <type>void</type>* <name>pNext</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member>
|
||||
<member optional="true"><type>VkMemoryAllocateFlags</type> <name>flags</name></member>
|
||||
<member><type>uint32_t</type> <name>deviceMask</name></member>
|
||||
</type>
|
||||
|
@ -2299,7 +2302,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
|||
<type category="struct" name="VkBindImageMemoryDeviceGroupInfoKHR" alias="VkBindImageMemoryDeviceGroupInfo"/>
|
||||
<type category="struct" name="VkDeviceGroupRenderPassBeginInfo" structextends="VkRenderPassBeginInfo">
|
||||
<member values="VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member noautovalidity="true">const <type>void</type>* <name>pNext</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member>
|
||||
<member><type>uint32_t</type> <name>deviceMask</name></member>
|
||||
<member optional="true"><type>uint32_t</type> <name>deviceRenderAreaCount</name></member>
|
||||
<member len="deviceRenderAreaCount">const <type>VkRect2D</type>* <name>pDeviceRenderAreas</name></member>
|
||||
|
@ -2307,13 +2310,13 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
|||
<type category="struct" name="VkDeviceGroupRenderPassBeginInfoKHR" alias="VkDeviceGroupRenderPassBeginInfo"/>
|
||||
<type category="struct" name="VkDeviceGroupCommandBufferBeginInfo" structextends="VkCommandBufferBeginInfo">
|
||||
<member values="VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member noautovalidity="true">const <type>void</type>* <name>pNext</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member>
|
||||
<member><type>uint32_t</type> <name>deviceMask</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkDeviceGroupCommandBufferBeginInfoKHR" alias="VkDeviceGroupCommandBufferBeginInfo"/>
|
||||
<type category="struct" name="VkDeviceGroupSubmitInfo" structextends="VkSubmitInfo">
|
||||
<member values="VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member noautovalidity="true">const <type>void</type>* <name>pNext</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member>
|
||||
<member optional="true"><type>uint32_t</type> <name>waitSemaphoreCount</name></member>
|
||||
<member len="waitSemaphoreCount">const <type>uint32_t</type>* <name>pWaitSemaphoreDeviceIndices</name></member>
|
||||
<member optional="true"><type>uint32_t</type> <name>commandBufferCount</name></member>
|
||||
|
@ -2324,7 +2327,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
|||
<type category="struct" name="VkDeviceGroupSubmitInfoKHR" alias="VkDeviceGroupSubmitInfo"/>
|
||||
<type category="struct" name="VkDeviceGroupBindSparseInfo" structextends="VkBindSparseInfo">
|
||||
<member values="VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member noautovalidity="true">const <type>void</type>* <name>pNext</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member>
|
||||
<member><type>uint32_t</type> <name>resourceDeviceIndex</name></member>
|
||||
<member><type>uint32_t</type> <name>memoryDeviceIndex</name></member>
|
||||
</type>
|
||||
|
@ -2337,12 +2340,12 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
|||
</type>
|
||||
<type category="struct" name="VkImageSwapchainCreateInfoKHR" structextends="VkImageCreateInfo">
|
||||
<member values="VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member noautovalidity="true">const <type>void</type>* <name>pNext</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member>
|
||||
<member optional="true"><type>VkSwapchainKHR</type> <name>swapchain</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkBindImageMemorySwapchainInfoKHR" structextends="VkBindImageMemoryInfo">
|
||||
<member values="VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member noautovalidity="true">const <type>void</type>* <name>pNext</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member>
|
||||
<member externsync="true"><type>VkSwapchainKHR</type> <name>swapchain</name></member>
|
||||
<member><type>uint32_t</type> <name>imageIndex</name></member>
|
||||
</type>
|
||||
|
@ -2357,21 +2360,21 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
|||
</type>
|
||||
<type category="struct" name="VkDeviceGroupPresentInfoKHR" structextends="VkPresentInfoKHR">
|
||||
<member values="VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member noautovalidity="true">const <type>void</type>* <name>pNext</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member>
|
||||
<member optional="true"><type>uint32_t</type> <name>swapchainCount</name></member>
|
||||
<member len="swapchainCount">const <type>uint32_t</type>* <name>pDeviceMasks</name></member>
|
||||
<member><type>VkDeviceGroupPresentModeFlagBitsKHR</type> <name>mode</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkDeviceGroupDeviceCreateInfo" structextends="VkDeviceCreateInfo">
|
||||
<member values="VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member noautovalidity="true">const <type>void</type>* <name>pNext</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member>
|
||||
<member optional="true"><type>uint32_t</type> <name>physicalDeviceCount</name></member>
|
||||
<member len="physicalDeviceCount">const <type>VkPhysicalDevice</type>* <name>pPhysicalDevices</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkDeviceGroupDeviceCreateInfoKHR" alias="VkDeviceGroupDeviceCreateInfo"/>
|
||||
<type category="struct" name="VkDeviceGroupSwapchainCreateInfoKHR" structextends="VkSwapchainCreateInfoKHR">
|
||||
<member values="VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member noautovalidity="true">const <type>void</type>* <name>pNext</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member>
|
||||
<member><type>VkDeviceGroupPresentModeFlagsKHR</type> <name>modes</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkDescriptorUpdateTemplateEntry">
|
||||
|
@ -2427,7 +2430,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
|||
</type>
|
||||
<type category="struct" name="VkPresentTimesInfoGOOGLE" structextends="VkPresentInfoKHR">
|
||||
<member values="VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member noautovalidity="true">const <type>void</type>* <name>pNext</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member>
|
||||
<member><type>uint32_t</type> <name>swapchainCount</name><comment>Copy of VkPresentInfoKHR::swapchainCount</comment></member>
|
||||
<member len="swapchainCount" optional="true">const <type>VkPresentTimeGOOGLE</type>* <name>pTimes</name><comment>The earliest times to present images</comment></member>
|
||||
</type>
|
||||
|
@ -2453,7 +2456,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
|||
</type>
|
||||
<type category="struct" name="VkPipelineViewportWScalingStateCreateInfoNV" structextends="VkPipelineViewportStateCreateInfo">
|
||||
<member values="VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member noautovalidity="true">const <type>void</type>* <name>pNext</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member>
|
||||
<member><type>VkBool32</type> <name>viewportWScalingEnable</name></member>
|
||||
<member><type>uint32_t</type> <name>viewportCount</name></member>
|
||||
<member noautovalidity="true" len="viewportCount">const <type>VkViewportWScalingNV</type>* <name>pViewportWScalings</name></member>
|
||||
|
@ -2603,7 +2606,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
|||
<type category="struct" name="VkPipelineTessellationDomainOriginStateCreateInfoKHR" alias="VkPipelineTessellationDomainOriginStateCreateInfo"/>
|
||||
<type category="struct" name="VkSamplerYcbcrConversionInfo" structextends="VkSamplerCreateInfo,VkImageViewCreateInfo">
|
||||
<member values="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member noautovalidity="true">const <type>void</type>* <name>pNext</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member>
|
||||
<member><type>VkSamplerYcbcrConversion</type> <name>conversion</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkSamplerYcbcrConversionInfoKHR" alias="VkSamplerYcbcrConversionInfo"/>
|
||||
|
@ -2622,13 +2625,13 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
|||
<type category="struct" name="VkSamplerYcbcrConversionCreateInfoKHR" alias="VkSamplerYcbcrConversionCreateInfo"/>
|
||||
<type category="struct" name="VkBindImagePlaneMemoryInfo" structextends="VkBindImageMemoryInfo">
|
||||
<member values="VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member noautovalidity="true">const <type>void</type>* <name>pNext</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member>
|
||||
<member><type>VkImageAspectFlagBits</type> <name>planeAspect</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkBindImagePlaneMemoryInfoKHR" alias="VkBindImagePlaneMemoryInfo"/>
|
||||
<type category="struct" name="VkImagePlaneMemoryRequirementsInfo" structextends="VkImageMemoryRequirementsInfo2">
|
||||
<member values="VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member noautovalidity="true">const <type>void</type>* <name>pNext</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member>
|
||||
<member><type>VkImageAspectFlagBits</type> <name>planeAspect</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkImagePlaneMemoryRequirementsInfoKHR" alias="VkImagePlaneMemoryRequirementsInfo"/>
|
||||
|
@ -2904,10 +2907,27 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
|||
<member><type>VkBool32</type> <name>conservativePointAndLineRasterization</name><comment>true if conservative rasterization also applies to points and lines</comment></member>
|
||||
<member><type>VkBool32</type> <name>degenerateTrianglesRasterized</name><comment>true if degenerate triangles (those with zero area after snap) are rasterized</comment></member>
|
||||
<member><type>VkBool32</type> <name>degenerateLinesRasterized</name><comment>true if degenerate lines (those with zero length after snap) are rasterized</comment></member>
|
||||
<member><type>VkBool32</type> <name>fullyCoveredFragmentShaderInputVariable</name><comment>true if the implementation supports the FullyCoveredEXT SPIR-V builtin fragment shader input
|
||||
variable</comment></member>
|
||||
<member><type>VkBool32</type> <name>fullyCoveredFragmentShaderInputVariable</name><comment>true if the implementation supports the FullyCoveredEXT SPIR-V builtin fragment shader input variable</comment></member>
|
||||
<member><type>VkBool32</type> <name>conservativeRasterizationPostDepthCoverage</name><comment>true if the implementation supports both conservative rasterization and post depth coverage sample coverage mask</comment></member>
|
||||
</type>
|
||||
<type category="struct" name="VkPhysicalDeviceShaderCorePropertiesAMD" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
|
||||
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member><type>void</type>* <name>pNext</name><comment>Pointer to next structure</comment></member>
|
||||
<member><type>uint32_t</type> <name>shaderEngineCount</name><comment>number of shader engines</comment></member>
|
||||
<member><type>uint32_t</type> <name>shaderArraysPerEngineCount</name><comment>number of shader arrays</comment></member>
|
||||
<member><type>uint32_t</type> <name>computeUnitsPerShaderArray</name><comment>number of CUs per shader array</comment></member>
|
||||
<member><type>uint32_t</type> <name>simdPerComputeUnit</name><comment>number of SIMDs per compute unit</comment></member>
|
||||
<member><type>uint32_t</type> <name>wavefrontsPerSimd</name><comment>number of wavefront slots in each SIMD</comment></member>
|
||||
<member><type>uint32_t</type> <name>wavefrontSize</name><comment>number of threads per wavefront</comment></member>
|
||||
<member><type>uint32_t</type> <name>sgprsPerSimd</name><comment>number of physical SGPRs per SIMD</comment></member>
|
||||
<member><type>uint32_t</type> <name>minSgprAllocation</name><comment>minimum number of SGPRs that can be allocated by a wave</comment></member>
|
||||
<member><type>uint32_t</type> <name>maxSgprAllocation</name><comment>number of available SGPRs</comment></member>
|
||||
<member><type>uint32_t</type> <name>sgprAllocationGranularity</name><comment>SGPRs are allocated in groups of this size</comment></member>
|
||||
<member><type>uint32_t</type> <name>vgprsPerSimd</name><comment>number of physical VGPRs per SIMD</comment></member>
|
||||
<member><type>uint32_t</type> <name>minVgprAllocation</name><comment>minimum number of VGPRs that can be allocated by a wave</comment></member>
|
||||
<member><type>uint32_t</type> <name>maxVgprAllocation</name><comment>number of available VGPRs</comment></member>
|
||||
<member><type>uint32_t</type> <name>vgprAllocationGranularity</name><comment>VGPRs are allocated in groups of this size</comment></member>
|
||||
</type>
|
||||
<type category="struct" name="VkPipelineRasterizationConservativeStateCreateInfoEXT" structextends="VkPipelineRasterizationStateCreateInfo">
|
||||
<member values="VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure -->
|
||||
|
@ -2915,13 +2935,81 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
|||
<member><type>VkConservativeRasterizationModeEXT</type> <name>conservativeRasterizationMode</name></member> <!-- Conservative rasterization mode -->
|
||||
<member><type>float</type> <name>extraPrimitiveOverestimationSize</name></member> <!-- Extra overestimation to add to the primitive -->
|
||||
</type>
|
||||
<type category="struct" name="VkPhysicalDeviceDescriptorIndexingFeaturesEXT" structextends="VkPhysicalDeviceFeatures2KHR,VkDeviceCreateInfo">
|
||||
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member noautovalidity="true"><type>void</type>* <name>pNext</name></member>
|
||||
<member><type>VkBool32</type> <name>shaderInputAttachmentArrayDynamicIndexing</name></member>
|
||||
<member><type>VkBool32</type> <name>shaderUniformTexelBufferArrayDynamicIndexing</name></member>
|
||||
<member><type>VkBool32</type> <name>shaderStorageTexelBufferArrayDynamicIndexing</name></member>
|
||||
<member><type>VkBool32</type> <name>shaderUniformBufferArrayNonUniformIndexing</name></member>
|
||||
<member><type>VkBool32</type> <name>shaderSampledImageArrayNonUniformIndexing</name></member>
|
||||
<member><type>VkBool32</type> <name>shaderStorageBufferArrayNonUniformIndexing</name></member>
|
||||
<member><type>VkBool32</type> <name>shaderStorageImageArrayNonUniformIndexing</name></member>
|
||||
<member><type>VkBool32</type> <name>shaderInputAttachmentArrayNonUniformIndexing</name></member>
|
||||
<member><type>VkBool32</type> <name>shaderUniformTexelBufferArrayNonUniformIndexing</name></member>
|
||||
<member><type>VkBool32</type> <name>shaderStorageTexelBufferArrayNonUniformIndexing</name></member>
|
||||
<member><type>VkBool32</type> <name>descriptorBindingUniformBufferUpdateAfterBind</name></member>
|
||||
<member><type>VkBool32</type> <name>descriptorBindingSampledImageUpdateAfterBind</name></member>
|
||||
<member><type>VkBool32</type> <name>descriptorBindingStorageImageUpdateAfterBind</name></member>
|
||||
<member><type>VkBool32</type> <name>descriptorBindingStorageBufferUpdateAfterBind</name></member>
|
||||
<member><type>VkBool32</type> <name>descriptorBindingUniformTexelBufferUpdateAfterBind</name></member>
|
||||
<member><type>VkBool32</type> <name>descriptorBindingStorageTexelBufferUpdateAfterBind</name></member>
|
||||
<member><type>VkBool32</type> <name>descriptorBindingUpdateUnusedWhilePending</name></member>
|
||||
<member><type>VkBool32</type> <name>descriptorBindingPartiallyBound</name></member>
|
||||
<member><type>VkBool32</type> <name>descriptorBindingVariableDescriptorCount</name></member>
|
||||
<member><type>VkBool32</type> <name>runtimeDescriptorArray</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkPhysicalDeviceDescriptorIndexingPropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2KHR">
|
||||
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member noautovalidity="true"><type>void</type>* <name>pNext</name></member>
|
||||
<member><type>uint32_t</type> <name>maxUpdateAfterBindDescriptorsInAllPools</name></member>
|
||||
<member><type>VkBool32</type> <name>shaderUniformBufferArrayNonUniformIndexingNative</name></member>
|
||||
<member><type>VkBool32</type> <name>shaderSampledImageArrayNonUniformIndexingNative</name></member>
|
||||
<member><type>VkBool32</type> <name>shaderStorageBufferArrayNonUniformIndexingNative</name></member>
|
||||
<member><type>VkBool32</type> <name>shaderStorageImageArrayNonUniformIndexingNative</name></member>
|
||||
<member><type>VkBool32</type> <name>shaderInputAttachmentArrayNonUniformIndexingNative</name></member>
|
||||
<member><type>VkBool32</type> <name>robustBufferAccessUpdateAfterBind</name></member>
|
||||
<member><type>VkBool32</type> <name>quadDivergentImplicitLod</name></member>
|
||||
<member><type>uint32_t</type> <name>maxPerStageDescriptorUpdateAfterBindSamplers</name></member>
|
||||
<member><type>uint32_t</type> <name>maxPerStageDescriptorUpdateAfterBindUniformBuffers</name></member>
|
||||
<member><type>uint32_t</type> <name>maxPerStageDescriptorUpdateAfterBindStorageBuffers</name></member>
|
||||
<member><type>uint32_t</type> <name>maxPerStageDescriptorUpdateAfterBindSampledImages</name></member>
|
||||
<member><type>uint32_t</type> <name>maxPerStageDescriptorUpdateAfterBindStorageImages</name></member>
|
||||
<member><type>uint32_t</type> <name>maxPerStageDescriptorUpdateAfterBindInputAttachments</name></member>
|
||||
<member><type>uint32_t</type> <name>maxPerStageUpdateAfterBindResources</name></member>
|
||||
<member><type>uint32_t</type> <name>maxDescriptorSetUpdateAfterBindSamplers</name></member>
|
||||
<member><type>uint32_t</type> <name>maxDescriptorSetUpdateAfterBindUniformBuffers</name></member>
|
||||
<member><type>uint32_t</type> <name>maxDescriptorSetUpdateAfterBindUniformBuffersDynamic</name></member>
|
||||
<member><type>uint32_t</type> <name>maxDescriptorSetUpdateAfterBindStorageBuffers</name></member>
|
||||
<member><type>uint32_t</type> <name>maxDescriptorSetUpdateAfterBindStorageBuffersDynamic</name></member>
|
||||
<member><type>uint32_t</type> <name>maxDescriptorSetUpdateAfterBindSampledImages</name></member>
|
||||
<member><type>uint32_t</type> <name>maxDescriptorSetUpdateAfterBindStorageImages</name></member>
|
||||
<member><type>uint32_t</type> <name>maxDescriptorSetUpdateAfterBindInputAttachments</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkDescriptorSetLayoutBindingFlagsCreateInfoEXT" structextends="VkDescriptorSetLayoutCreateInfo">
|
||||
<member values="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member>
|
||||
<member optional="true"><type>uint32_t</type> <name>bindingCount</name></member>
|
||||
<member len="bindingCount">const <type>VkDescriptorBindingFlagsEXT</type>* <name>pBindingFlags</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkDescriptorSetVariableDescriptorCountAllocateInfoEXT" structextends="VkDescriptorSetAllocateInfo">
|
||||
<member values="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member>
|
||||
<member optional="true"><type>uint32_t</type> <name>descriptorSetCount</name></member>
|
||||
<member len="descriptorSetCount">const <type>uint32_t</type>* <name>pDescriptorCounts</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkDescriptorSetVariableDescriptorCountLayoutSupportEXT" structextends="VkDescriptorSetLayoutSupport" returnedonly="true">
|
||||
<member values="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member><type>void</type>* <name>pNext</name></member>
|
||||
<member><type>uint32_t</type> <name>maxVariableDescriptorCount</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkVertexInputBindingDivisorDescriptionEXT">
|
||||
<member><type>uint32_t</type> <name>binding</name></member>
|
||||
<member><type>uint32_t</type> <name>divisor</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkPipelineVertexInputDivisorStateCreateInfoEXT" structextends="VkPipelineVertexInputStateCreateInfo">
|
||||
<member values="VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member noautovalidity="true">const <type>void</type>* <name>pNext</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member>
|
||||
<member><type>uint32_t</type> <name>vertexBindingDivisorCount</name></member>
|
||||
<member len="vertexBindingDivisorCount">const <type>VkVertexInputBindingDivisorDescriptionEXT</type>* <name>pVertexBindingDivisors</name></member>
|
||||
</type>
|
||||
|
@ -4035,6 +4123,12 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
|||
<enum value="1" name="VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT"/>
|
||||
<enum value="2" name="VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT"/>
|
||||
</enums>
|
||||
<enums name="VkDescriptorBindingFlagBitsEXT" type="bitmask">
|
||||
<enum bitpos="0" name="VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT"/>
|
||||
<enum bitpos="1" name="VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT"/>
|
||||
<enum bitpos="2" name="VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT"/>
|
||||
<enum bitpos="3" name="VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT"/>
|
||||
</enums>
|
||||
|
||||
<commands comment="Vulkan command definitions">
|
||||
<command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_LAYER_NOT_PRESENT,VK_ERROR_EXTENSION_NOT_PRESENT,VK_ERROR_INCOMPATIBLE_DRIVER">
|
||||
|
@ -4521,7 +4615,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
|||
<param optional="true" externsync="true"><type>VkDescriptorSetLayout</type> <name>descriptorSetLayout</name></param>
|
||||
<param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
|
||||
</command>
|
||||
<command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
|
||||
<command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_FRAGMENTATION_EXT">
|
||||
<proto><type>VkResult</type> <name>vkCreateDescriptorPool</name></proto>
|
||||
<param><type>VkDevice</type> <name>device</name></param>
|
||||
<param>const <type>VkDescriptorPoolCreateInfo</type>* <name>pCreateInfo</name></param>
|
||||
|
@ -7877,7 +7971,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
|||
<command name="vkSubmitDebugUtilsMessageEXT"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_ANDROID_external_memory_android_hardware_buffer" number="130" type="device" author="ANDROID" requires="VK_KHR_sampler_ycbcr_conversion,VK_KHR_external_memory" platform="android" contact="Jesse Hall @jessehall" supported="vulkan">
|
||||
<extension name="VK_ANDROID_external_memory_android_hardware_buffer" number="130" type="device" author="ANDROID" requires="VK_KHR_sampler_ycbcr_conversion,VK_KHR_external_memory,VK_EXT_queue_family_foreign" platform="android" contact="Jesse Hall @jessehall" supported="vulkan">
|
||||
<require>
|
||||
<enum value="3" name="VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION"/>
|
||||
<enum value=""VK_ANDROID_external_memory_android_hardware_buffer"" name="VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME"/>
|
||||
|
@ -8277,10 +8371,23 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
|||
<command name="vkGetValidationCacheDataEXT"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_EXT_extension_162" number="162" author="NV" contact="Jeff Bolz @jbolz" supported="disabled">
|
||||
<extension name="VK_EXT_descriptor_indexing" number="162" type="device" requires="VK_KHR_get_physical_device_properties2,VK_KHR_maintenance3" author="NV" contact="Jeff Bolz @jbolz" supported="vulkan">
|
||||
<require>
|
||||
<enum value="0" name="VK_EXT_EXTENSION_162_SPEC_VERSION"/>
|
||||
<enum value=""VK_EXT_extension_162"" name="VK_EXT_EXTENSION_162_EXTENSION_NAME"/>
|
||||
<enum value="2" name="VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION"/>
|
||||
<enum value=""VK_EXT_descriptor_indexing"" name="VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME"/>
|
||||
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT"/>
|
||||
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT"/>
|
||||
<enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT"/>
|
||||
<enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT"/>
|
||||
<enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT"/>
|
||||
<enum bitpos="1" extends="VkDescriptorPoolCreateFlagBits" name="VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT"/>
|
||||
<enum bitpos="1" extends="VkDescriptorSetLayoutCreateFlagBits" name="VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT"/>
|
||||
<enum offset="0" dir="-" extends="VkResult" name="VK_ERROR_FRAGMENTATION_EXT"/>
|
||||
<type name="VkDescriptorSetLayoutBindingFlagsCreateInfoEXT"/>
|
||||
<type name="VkPhysicalDeviceDescriptorIndexingFeaturesEXT"/>
|
||||
<type name="VkPhysicalDeviceDescriptorIndexingPropertiesEXT"/>
|
||||
<type name="VkDescriptorSetVariableDescriptorCountAllocateInfoEXT"/>
|
||||
<type name="VkDescriptorSetVariableDescriptorCountLayoutSupportEXT"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_EXT_shader_viewport_index_layer" number="163" type="device" author="NV" contact="Daniel Koch @dgkoch" supported="vulkan">
|
||||
|
@ -8442,10 +8549,12 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
|||
<enum value=""VK_AMD_extension_185"" name="VK_KHR_EXTENSION_185_EXTENSION_NAME"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_AMD_extension_186" number="186" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled">
|
||||
<extension name="VK_AMD_shader_core_properties" number="186" type="device" author="AMD" requires="VK_KHR_get_physical_device_properties2" contact="Martin Dinkov @mdinkov" supported="vulkan">
|
||||
<require>
|
||||
<enum value="0" name="VK_KHR_EXTENSION_186_SPEC_VERSION"/>
|
||||
<enum value=""VK_AMD_extension_186"" name="VK_KHR_EXTENSION_186_EXTENSION_NAME"/>
|
||||
<enum value="1" name="VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION"/>
|
||||
<enum value=""VK_AMD_shader_core_properties"" name="VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME"/>
|
||||
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD"/>
|
||||
<type name="VkPhysicalDeviceShaderCorePropertiesAMD"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_AMD_extension_187" number="187" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled">
|
||||
|
@ -8525,5 +8634,18 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
|||
<enum value=""VK_EXT_extension_198"" name="VK_ARM_EXTENSION_198_EXTENSION_NAME"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_NV_shader_subgroup_partitioned" number="199" type="device" author="NV" contact="Jeff Bolz @jbolz" supported="vulkan">
|
||||
<require>
|
||||
<enum value="1" name="VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION"/>
|
||||
<enum value=""VK_NV_shader_subgroup_partitioned"" name="VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME"/>
|
||||
<enum bitpos="8" extends="VkSubgroupFeatureFlagBits" name="VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_KHR_extension_200" number="200" author="KHR" contact="Jan-Harald Fredriksen @janharald" supported="disabled">
|
||||
<require>
|
||||
<enum value="0" name="VK_KHR_EXTENSION_200_SPEC_VERSION"/>
|
||||
<enum value=""VK_KHR_extension_200"" name="VK_KHR_EXTENSION_200_EXTENSION_NAME"/>
|
||||
</require>
|
||||
</extension>
|
||||
</extensions>
|
||||
</registry>
|
||||
|
|
Loading…
Reference in New Issue