mirror of
https://github.com/status-im/Vulkan-Docs.git
synced 2025-02-25 04:25:12 +00:00
Change log for July 20, 2019 Vulkan 1.1.116 spec update:
* Happy 50th Lunar Landing Day! * Update release number to 116. Internal Issues: * Clarify that flink:vkCmdBeginQuery is the same as flink:vkCmdBeginQueryIndexEXT with index = 0, and that flink:vkCmdEndQuery is the same as flink:vkCmdEndQueryIndexEXT with index = 0 (internal issue 1735). * Clarify that when copying the depth aspect between buffers and images via slink:VkBufferImage Copy, the depth values in buffer memory must be in range if the `<<VK_EXT_depth_range_unrestricted>>` extension is not enabled (internal issue 1737). * Minor language tweaks in the <<spirvenv-module-validation, Validation Rules within a Module>> section (internal issue 1744). * Change the slink:VkPhysicalDeviceFloatControlsPropertiesKHR structure in the `<<VK_KHR_shader_controls>>` extension. This is a rare case of breaking the interface of an existing extension to acknowledge the reality of divergent vendor implementations that could not be described properly otherwise, and the breaking change is considered acceptable given the expected low use of the extension (internal issue 1734). Specific changes: ** Added the slink:VkShaderFloatControlsIndependenceKHR enumeration to describe the three possible behaviors. ** Renamed pname:separateDenormSettings to pname:denormBehaviorIndependence. ** Renamed pname:separateRoundingModeSettings to pname:roundingModeIndependence * Add a missing valid usage statement for slink:VkQueryPoolCreateInfo::pname:queryCount (internal issue 1742). * Update the `<<VK_NV_shading_rate_image>>` appendix to list all interfaces defined by the extension. * Add a valid usage statement to slink:VkWriteDescriptorSetAccelerationStructureNV to clarify that acceleration structure descriptors must be top level structures. New Extensions: * `<<VK_EXT_subgroup_size_control>>`
This commit is contained in:
parent
57b7cd572d
commit
7b81afeb9f
@ -8,6 +8,50 @@ public pull requests that have been accepted.
|
||||
|
||||
-----------------------------------------------------
|
||||
|
||||
Change log for July 20, 2019 Vulkan 1.1.116 spec update:
|
||||
|
||||
* Happy 50th Lunar Landing Day!
|
||||
* Update release number to 116.
|
||||
|
||||
Internal Issues:
|
||||
|
||||
* Clarify that flink:vkCmdBeginQuery is the same as
|
||||
flink:vkCmdBeginQueryIndexEXT with index = 0, and that
|
||||
flink:vkCmdEndQuery is the same as flink:vkCmdEndQueryIndexEXT with
|
||||
index = 0 (internal issue 1735).
|
||||
* Clarify that when copying the depth aspect between buffers and images
|
||||
via slink:VkBufferImage Copy, the depth values in buffer memory must be
|
||||
in range if the `<<VK_EXT_depth_range_unrestricted>>` extension is not
|
||||
enabled (internal issue 1737).
|
||||
* Minor language tweaks in the <<spirvenv-module-validation, Validation
|
||||
Rules within a Module>> section (internal issue 1744).
|
||||
* Change the slink:VkPhysicalDeviceFloatControlsPropertiesKHR structure in
|
||||
the `<<VK_KHR_shader_controls>>` extension. This is a rare case of
|
||||
breaking the interface of an existing extension to acknowledge the
|
||||
reality of divergent vendor implementations that could not be described
|
||||
properly otherwise, and the breaking change is considered acceptable
|
||||
given the expected low use of the extension (internal issue 1734).
|
||||
Specific changes:
|
||||
** Added the slink:VkShaderFloatControlsIndependenceKHR enumeration to
|
||||
describe the three possible behaviors.
|
||||
** Renamed pname:separateDenormSettings to
|
||||
pname:denormBehaviorIndependence.
|
||||
** Renamed pname:separateRoundingModeSettings to
|
||||
pname:roundingModeIndependence
|
||||
* Add a missing valid usage statement for
|
||||
slink:VkQueryPoolCreateInfo::pname:queryCount (internal issue 1742).
|
||||
* Update the `<<VK_NV_shading_rate_image>>` appendix to list all
|
||||
interfaces defined by the extension.
|
||||
* Add a valid usage statement to
|
||||
slink:VkWriteDescriptorSetAccelerationStructureNV to clarify that
|
||||
acceleration structure descriptors must be top level structures.
|
||||
|
||||
New Extensions:
|
||||
|
||||
* `<<VK_EXT_subgroup_size_control>>`
|
||||
|
||||
-----------------------------------------------------
|
||||
|
||||
Change log for July 14, 2019 Vulkan 1.1.115 spec update:
|
||||
|
||||
* Update release number to 115.
|
||||
|
2
Makefile
2
Makefile
@ -121,7 +121,7 @@ VERBOSE =
|
||||
# ADOCOPTS options for asciidoc->HTML5 output
|
||||
|
||||
NOTEOPTS = -a editing-notes -a implementation-guide
|
||||
PATCHVERSION = 115
|
||||
PATCHVERSION = 116
|
||||
ifneq (,$(findstring VK_VERSION_1_1,$(VERSIONS)))
|
||||
SPECREVISION = 1.1.$(PATCHVERSION)
|
||||
else
|
||||
|
92
appendices/VK_EXT_subgroup_size_control.txt
Normal file
92
appendices/VK_EXT_subgroup_size_control.txt
Normal file
@ -0,0 +1,92 @@
|
||||
// Copyright (c) 2017-2019 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
include::meta/VK_EXT_subgroup_size_control.txt[]
|
||||
|
||||
*Last Modified Date*::
|
||||
2019-03-05
|
||||
*Contributors*::
|
||||
- Jeff Bolz, NVIDIA
|
||||
- Jason Ekstrand, Intel
|
||||
- Sławek Grajewski, Intel
|
||||
- Jesse Hall, Google
|
||||
- Neil Henning, AMD
|
||||
- Daniel Koch, NVIDIA
|
||||
- Jeff Leger, Qualcomm
|
||||
- Graeme Leese, Broadcom
|
||||
- Allan MacKinnon, Google
|
||||
- Mariusz Merecki, Intel
|
||||
- Graham Wihlidal, Electronic Arts
|
||||
|
||||
=== Short Description
|
||||
|
||||
Enables an implementation to control the subgroup size by allowing a varying
|
||||
subgroup size and also specifying a required subgroup size.
|
||||
|
||||
=== Description
|
||||
|
||||
This extension extends the subgroup support in Vulkan 1.1 to allow an
|
||||
implementation to expose a varying subgroup size.
|
||||
Previously Vulkan exposed a single subgroup size per physical device, with
|
||||
the expectation that implementations will behave as if all subgroups have
|
||||
the same size.
|
||||
Some implementations may: dispatch shaders with a varying subgroup size for
|
||||
different subgroups.
|
||||
As a result they could implicitly split a large subgroup into smaller
|
||||
subgroups or represent a small subgroup as a larger subgroup, some of whose
|
||||
invocations were inactive on launch.
|
||||
|
||||
To aid developers in understanding the performance characteristics of their
|
||||
programs, this extension exposes a minimum and maximum subgroup size that a
|
||||
physical device supports and a pipeline create flag to enable that pipeline
|
||||
to vary its subgroup size.
|
||||
If enabled, any code:SubgroupSize decorated variables in the SPIR-V shader
|
||||
modules provided to pipeline creation may: vary between the
|
||||
<<limits-min-subgroup-size,minimum>> and
|
||||
<<limits-max-subgroup-size,maximum>> subgroup sizes.
|
||||
|
||||
An implementation is also optionally allowed to support specifying a
|
||||
required subgroup size for a given pipeline stage.
|
||||
Implementations advertise which <<limits-required-subgroup-size-stages,
|
||||
stages support a required subgroup size>>, and any pipeline of a supported
|
||||
stage can be passed a
|
||||
slink:VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT structure to
|
||||
set the subgroup size for that shader stage of the pipeline.
|
||||
For compute shaders, this requires the developer to query the
|
||||
<<limits-max-subgroups-per-workgroup, pname:maxComputeWorkgroupSubgroups>>
|
||||
and ensure that:
|
||||
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
s = {WorkGroupSize.x * WorkGroupSize.y * WorkgroupSize.z <= SubgroupSize * maxComputeWorkgroupSubgroups }
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
Developers can also specify a new pipeline shader stage create flag that
|
||||
requires the implementation to have fully populated subgroups within local
|
||||
workgroups.
|
||||
This requires the workgroup size in the X dimension to be a multiple of the
|
||||
subgroup size.
|
||||
|
||||
=== New Enum Constants
|
||||
|
||||
* Extending elink:VkStructureType:
|
||||
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT
|
||||
** ename:VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT
|
||||
* Extending elink:VkPipelineShaderStageCreateFlagBits:
|
||||
** ename:VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT
|
||||
** ename:VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT
|
||||
|
||||
=== New Structures
|
||||
|
||||
* slink:VkPhysicalDeviceSubgroupSizeControlPropertiesEXT
|
||||
* slink:VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT
|
||||
|
||||
=== Issues
|
||||
|
||||
None.
|
||||
|
||||
=== Version History
|
||||
|
||||
* Revision 1, 2019-03-05 (Neil Henning)
|
||||
- Initial draft
|
@ -66,6 +66,7 @@ None.
|
||||
|
||||
* Extending elink:VkDynamicState:
|
||||
** ename:VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
|
||||
** ename:VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV
|
||||
|
||||
* Extending elink:VkAccessFlagBits:
|
||||
** ename:VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV
|
||||
@ -92,6 +93,13 @@ None.
|
||||
** ename:VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV
|
||||
** ename:VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV
|
||||
** ename:VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV
|
||||
|
||||
* elink:VkCoarseSampleOrderTypeNV, containing the following constants:
|
||||
|
||||
** ename:VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV
|
||||
** ename:VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV
|
||||
** ename:VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV
|
||||
** ename:VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV
|
||||
|
||||
=== New Structures
|
||||
|
||||
@ -99,11 +107,16 @@ None.
|
||||
* slink:VkPipelineViewportShadingRateImageStateCreateInfoNV
|
||||
* slink:VkPhysicalDeviceShadingRateImageFeaturesNV
|
||||
* slink:VkPhysicalDeviceShadingRateImagePropertiesNV
|
||||
* slink:VkCoarseSampleLocationNV
|
||||
* slink:VkCoarseSampleOrderCustomNV
|
||||
* slink:VkPipelineViewportCoarseSampleOrderStateCreateInfoNV
|
||||
|
||||
|
||||
=== New Functions
|
||||
|
||||
* flink:vkCmdBindShadingRateImageNV
|
||||
* flink:vkCmdSetViewportShadingRatePaletteNV
|
||||
* flink:vkCmdSetCoarseSampleOrderNV
|
||||
|
||||
=== Issues
|
||||
|
||||
|
@ -1592,6 +1592,11 @@ B::
|
||||
A::
|
||||
Alpha color component
|
||||
|
||||
RTZ::
|
||||
Round towards zero
|
||||
|
||||
RTE::
|
||||
Round to nearest even
|
||||
|
||||
[glossary]
|
||||
= Prefixes
|
||||
|
@ -688,8 +688,8 @@ ifdef::VK_NV_viewport_array2[]
|
||||
the vertex processing stages of a graphics pipeline.
|
||||
endif::VK_NV_viewport_array2[]
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_16bit_storage[]
|
||||
** Only the round-to-nearest-even and the round-to-zero rounding modes
|
||||
can: be used for the code:FPRoundingMode decoration.
|
||||
** Only the round-to-nearest-even and the round-towards-zero rounding
|
||||
modes can: be used for the code:FPRoundingMode decoration.
|
||||
** The code:FPRoundingMode decoration can: only be used for the
|
||||
floating-point conversion instructions as described in the
|
||||
https://www.khronos.org/registry/spir-v/extensions/KHR/SPV_KHR_16bit_storage.html[`SPV_KHR_16bit_storage`]
|
||||
@ -741,9 +741,10 @@ ifdef::VK_NV_compute_shader_derivatives[]
|
||||
endif::VK_NV_compute_shader_derivatives[]
|
||||
ifdef::VK_VERSION_1_1[]
|
||||
* "`Result Type`" for *Non Uniform Group Operations* must: be limited to
|
||||
32-bit float, 32-bit integer, boolean, or vectors of these types.
|
||||
If the code:Float64 capability is enabled, double and vectors of double
|
||||
types are also permitted.
|
||||
32-bit floating-point, 32-bit integer, boolean, or vectors of these
|
||||
types.
|
||||
** If the code:Float64 capability is enabled, 64-bit floating-point and
|
||||
vector of 64-bit floating-point types are also permitted.
|
||||
* The "`Id`" operand of code:OpGroupNonUniformBroadcast must: be the <id>
|
||||
of a constant instruction.
|
||||
* If code:OpGroupNonUniformBallotBitCount is used, the group operation
|
||||
@ -786,13 +787,24 @@ ifdef::VK_EXT_descriptor_indexing[]
|
||||
code:NonUniformEXT.
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
ifdef::VK_KHR_shader_float_controls[]
|
||||
* If <<features-separateDenormSettings,pname:separateDenormSettings>> is
|
||||
ename:VK_FALSE, then the entry point must: use the same denormals
|
||||
execution mode for both 16-bit and 64-bit floating-point types.
|
||||
* If
|
||||
<<features-separateRoundingModeSettings,pname:separateRoundingModeSettings>>
|
||||
is ename:VK_FALSE, then the entry point must: use the same rounding
|
||||
execution mode for both 16-bit and 64-bit floating-point types.
|
||||
<<features-denormBehaviorIndependence,pname:denormBehaviorIndependence>>
|
||||
is ename:VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR, then the
|
||||
entry point must: use the same denormals execution mode for both 16-bit
|
||||
and 64-bit floating-point types.
|
||||
* If
|
||||
<<features-denormBehaviorIndependence,pname:denormBehaviorIndependence>>
|
||||
is ename:VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR, then the entry
|
||||
point must: use the same denormals execution mode for all floating-point
|
||||
types.
|
||||
* If <<features-roundingModeIndependence,pname:roundingModeIndependence>>
|
||||
is ename:VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR, then the
|
||||
entry point must: use the same rounding execution mode for both 16-bit
|
||||
and 64-bit floating-point types.
|
||||
* If <<features-roundingModeIndependence,pname:roundingModeIndependence>>
|
||||
is ename:VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR, then the entry
|
||||
point must: use the same rounding execution mode for all floating-point
|
||||
types.
|
||||
* If
|
||||
<<features-shaderSignedZeroInfNanPreserveFloat16,pname:shaderSignedZeroInfNanPreserveFloat16>>
|
||||
is ename:VK_FALSE, then code:SignedZeroInfNanPreserve for 16-bit
|
||||
|
@ -1,6 +1,6 @@
|
||||
// This section is included inside the Resource Descriptors chapter (descriptorsets.txt)
|
||||
|
||||
[open,refpage='VkWriteDescriptorSetAccelerationStructureNV',desc='Structure specifying acceleration to query for memory requirements',type='structs']
|
||||
[open,refpage='VkWriteDescriptorSetAccelerationStructureNV',desc='Structure specifying acceleration structure descriptor info',type='structs']
|
||||
--
|
||||
The sname:VkWriteDescriptorSetAccelerationStructureNV structure is defined
|
||||
as:
|
||||
@ -18,6 +18,9 @@ include::{generated}/api/structs/VkWriteDescriptorSetAccelerationStructureNV.txt
|
||||
* [[VUID-VkWriteDescriptorSetAccelerationStructureNV-accelerationStructureCount-02236]]
|
||||
pname:accelerationStructureCount must: be equal to pname:descriptorCount
|
||||
in the extended structure
|
||||
* [[VUID-VkWriteDescriptorSetAccelerationStructureNV-pAccelerationStructures-02764]]
|
||||
Each acceleration structure in pname:pAccelerationStructures must have
|
||||
been created with ename:VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV
|
||||
****
|
||||
|
||||
include::{generated}/validity/structs/VkWriteDescriptorSetAccelerationStructureNV.txt[]
|
||||
|
@ -1156,10 +1156,12 @@ Because depth or stencil aspect buffer to image copies may: require format
|
||||
conversions on some implementations, they are not supported on queues that
|
||||
do not support graphics.
|
||||
|
||||
ifndef::VK_EXT_depth_range_unrestricted[]
|
||||
When copying to a depth aspect, the data in buffer memory must: be in the
|
||||
range [eq]#[0,1]#, or the resulting values are undefined:.
|
||||
When copying to a depth aspect,
|
||||
ifdef::VK_EXT_depth_range_unrestricted[]
|
||||
and the VK_EXT_depth_range_unrestricted extension is not enabled,
|
||||
endif::VK_EXT_depth_range_unrestricted[]
|
||||
the data in buffer memory must: be in the range [eq]#[0,1]#, or the
|
||||
resulting values are undefined:.
|
||||
|
||||
Copies are done layer by layer starting with image layer
|
||||
pname:baseArrayLayer member of pname:imageSubresource.
|
||||
|
@ -2781,8 +2781,37 @@ as a scalar 32-bit integer.
|
||||
code:SubgroupSize::
|
||||
+
|
||||
Decorating a variable with the code:SubgroupSize builtin decoration will
|
||||
make that variable contain the implementation-dependent maximum number of
|
||||
invocations in a subgroup.
|
||||
make that variable contain the implementation-dependent
|
||||
<<limits-subgroup-size,number of invocations in a subgroup>>.
|
||||
|
||||
ifdef::VK_EXT_subgroup_size_control[]
|
||||
If the pipeline was created with the
|
||||
ename:VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT
|
||||
flag set, the code:SubgroupSize decorated variable will contain the subgroup
|
||||
size for each subgroup that gets dispatched.
|
||||
This value must: be a power-of-two integer between
|
||||
<<limits-min-subgroup-size,minSubgroupSize>> and
|
||||
<<limits-max-subgroup-size,maxSubgroupSize>> and must: be uniform with
|
||||
subgroup scope.
|
||||
The value may: vary across a single draw or dispatch call, and for fragment
|
||||
shaders may: vary across a single primitive.
|
||||
|
||||
If the pipeline was created with a chained
|
||||
slink:VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT structure, the
|
||||
code:SubgroupSize decorated variable will match
|
||||
<<pipelines-required-subgroup-size, pname:requiredSubgroupSize>>.
|
||||
|
||||
If the pipeline was not created with the
|
||||
ename:VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT
|
||||
flag set and no slink:VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT
|
||||
structure was chained, the
|
||||
endif::VK_EXT_subgroup_size_control[]
|
||||
ifndef::VK_EXT_subgroup_size_control[]
|
||||
The
|
||||
endif::VK_EXT_subgroup_size_control[]
|
||||
variable decorated with code:SubgroupSize will match <<limits-subgroup-size,
|
||||
pname:subgroupSize>>.
|
||||
|
||||
The maximum number of invocations that an implementation can support per
|
||||
subgroup is 128.
|
||||
+
|
||||
|
@ -885,13 +885,14 @@ structure describe the following implementation-dependent limits:
|
||||
|
||||
include::{generated}/api/structs/VkPhysicalDeviceFloatControlsPropertiesKHR.txt[]
|
||||
|
||||
* [[features-separateDenormSettings]] pname:separateDenormSettings is a
|
||||
boolean value indicating whether the implementation supports separate
|
||||
settings for 16-bit and 64-bit denormals.
|
||||
* [[features-separateRoundingModeSettings]]
|
||||
pname:separateRoundingModeSettings is a boolean value indicating whether
|
||||
the implementation supports separate rounding modes for 16-bit and
|
||||
64-bit floating point instructions.
|
||||
* [[features-denormBehaviorIndependence]] pname:denormBehaviorIndependence
|
||||
is an elink:VkShaderFloatControlsIndependenceKHR value indicating
|
||||
whether, and how, denorm behavior can be set independently for different
|
||||
bit widths.
|
||||
* [[features-roundingModeIndependence]] pname:roundingModeIndependence is
|
||||
an elink:VkShaderFloatControlsIndependenceKHR value indicating whether,
|
||||
and how, rounding modes can be set independently for different bit
|
||||
widths.
|
||||
* [[features-shaderSignedZeroInfNanPreserveFloat16]]
|
||||
pname:shaderSignedZeroInfNanPreserveFloat16 is a boolean value
|
||||
indicating whether sign of a zero, [eq]##Nan##s and
|
||||
@ -1000,6 +1001,23 @@ is filled with the implementation-dependent limits.
|
||||
|
||||
include::{generated}/validity/structs/VkPhysicalDeviceFloatControlsPropertiesKHR.txt[]
|
||||
--
|
||||
|
||||
[open,refpage='VkShaderFloatControlsIndependenceKHR',desc='Enum specifying whether, and how, shader float controls can be set separately',type='enums']
|
||||
--
|
||||
|
||||
Values which may: be set in the shader float controls properties returned by
|
||||
slink:VkPhysicalDeviceFloatControlsPropertiesKHR are:
|
||||
|
||||
include::{generated}/api/enums/VkShaderFloatControlsIndependenceKHR.txt[]
|
||||
|
||||
* ename:VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR specifies
|
||||
that shader float controls for 32-bit floating point can: be set
|
||||
independently; other bit widths must: be set identically to each other.
|
||||
* ename:VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR specifies that
|
||||
shader float controls for all bit widths can: be set independently.
|
||||
* ename:VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR specifies that
|
||||
shader float controls for all bit widths must: be set identically.
|
||||
--
|
||||
endif::VK_KHR_shader_float_controls[]
|
||||
|
||||
ifdef::VK_EXT_discard_rectangles[]
|
||||
@ -1174,10 +1192,8 @@ describe the following implementation-dependent limits:
|
||||
|
||||
* pname:sType is the type of this structure.
|
||||
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||
* pname:subgroupSize is the number of invocations in each subgroup.
|
||||
This will match any <<interfaces-builtin-variables-sgs,
|
||||
code:SubgroupSize>> decorated variable used in any shader module created
|
||||
on this device.
|
||||
* [[limits-subgroup-size]] pname:subgroupSize is the default number of
|
||||
invocations in each subgroup.
|
||||
pname:subgroupSize is at least 1 if any of the physical device's queues
|
||||
support ename:VK_QUEUE_GRAPHICS_BIT or ename:VK_QUEUE_COMPUTE_BIT.
|
||||
* pname:supportedStages is a bitfield of elink:VkShaderStageFlagBits
|
||||
@ -1253,6 +1269,52 @@ tname:VkSubgroupFeatureFlags is a bitmask type for setting a mask of zero or
|
||||
more elink:VkSubgroupFeatureFlagBits.
|
||||
--
|
||||
|
||||
ifdef::VK_EXT_subgroup_size_control[]
|
||||
|
||||
[open,refpage='VkPhysicalDeviceSubgroupSizeControlPropertiesEXT',desc='Structure describing the control subgroup size properties of an implementation',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkPhysicalDeviceSubgroupSizeControlPropertiesEXT structure is
|
||||
defined as:
|
||||
|
||||
include::{generated}/api/structs/VkPhysicalDeviceSubgroupSizeControlPropertiesEXT.txt[]
|
||||
|
||||
The members of the sname:VkPhysicalDeviceSubgroupSizeControlPropertiesEXT
|
||||
structure describe the following properties:
|
||||
|
||||
* pname:sType is the type of this structure.
|
||||
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||
* [[limits-min-subgroup-size]] pname:minSubgroupSize is the minimum
|
||||
subgroup size supported by this device.
|
||||
pname:minSubgroupSize is at least one if any of the physical device's
|
||||
queues support ename:VK_QUEUE_GRAPHICS_BIT or
|
||||
ename:VK_QUEUE_COMPUTE_BIT.
|
||||
pname:minSubgroupSize is less than or equal to pname:maxSubgroupSize.
|
||||
pname:minSubgroupSize is less than or equal to
|
||||
<<limits-subgroup-size,subgroupSize>>.
|
||||
* [[limits-max-subgroup-size]] pname:maxSubgroupSize is the maximum
|
||||
subgroup size supported by this device.
|
||||
pname:maxSubgroupSize is at least one if any of the physical device's
|
||||
queues support ename:VK_QUEUE_GRAPHICS_BIT or
|
||||
ename:VK_QUEUE_COMPUTE_BIT.
|
||||
pname:maxSubgroupSize is greater than or equal to pname:minSubgroupSize.
|
||||
pname:maxSubgroupSize is greater than or equal to
|
||||
<<limits-subgroup-size,subgroupSize>>.
|
||||
* [[limits-max-subgroups-per-workgroup]]
|
||||
pname:maxComputeWorkgroupSubgroups is the maximum number of subgroups
|
||||
supported by the implementation within a workgroup.
|
||||
* [[limits-required-subgroup-size-stages]]
|
||||
pname:requiredSubgroupSizeStages is a bitfield of what shader stages
|
||||
support having a required subgroup size specified.
|
||||
|
||||
If the sname:VkPhysicalDeviceSubgroupSizeControlPropertiesEXT structure is
|
||||
included in the pname:pNext chain of slink:VkPhysicalDeviceProperties2, it
|
||||
is filled with the implementation-dependent limits.
|
||||
|
||||
include::{generated}/validity/structs/VkPhysicalDeviceSubgroupSizeControlPropertiesEXT.txt[]
|
||||
--
|
||||
endif::VK_EXT_subgroup_size_control[]
|
||||
|
||||
endif::VK_VERSION_1_1[]
|
||||
|
||||
ifdef::VK_EXT_blend_operation_advanced[]
|
||||
|
@ -267,7 +267,8 @@ include::{generated}/api/structs/VkPipelineShaderStageCreateInfo.txt[]
|
||||
|
||||
* pname:sType is the type of this structure.
|
||||
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||
* pname:flags is reserved for future use.
|
||||
* pname:flags is a bitmask of elink:VkPipelineShaderStageCreateFlagBits
|
||||
specifying how the pipeline shader stage will be generated.
|
||||
* pname:stage is a elink:VkShaderStageFlagBits value specifying a single
|
||||
pipeline stage.
|
||||
* pname:module is a slink:VkShaderModule object that contains the shader
|
||||
@ -382,17 +383,98 @@ ifdef::VK_NV_mesh_shader[]
|
||||
that is greater than `0` and less than or equal to
|
||||
sname:VkPhysicalDeviceMeshShaderPropertiesNV::pname:maxMeshOutputPrimitives.
|
||||
endif::VK_NV_mesh_shader[]
|
||||
ifdef::VK_EXT_subgroup_size_control[]
|
||||
* [[VUID-VkPipelineShaderStageCreateInfo-pNext-02754]]
|
||||
If a slink:VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT
|
||||
structure is chained to pname:pNext, pname:flags must: not have the
|
||||
ename:VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT
|
||||
flag set.
|
||||
* [[VUID-VkPipelineShaderStageCreateInfo-pNext-02755]]
|
||||
If a slink:VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT
|
||||
structure is chained to pname:pNext, pname:stage must: be a valid bit
|
||||
specified in <<limits-required-subgroup-size-stages,
|
||||
pname:requiredSubgroupSizeStages>>.
|
||||
* [[VUID-VkPipelineShaderStageCreateInfo-pNext-02756]]
|
||||
If a slink:VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT
|
||||
structure is chained to pname:pNext and pname:stage is
|
||||
VK_SHADER_STAGE_COMPUTE_BIT then local workgroup size of the shader
|
||||
must: be less than or equal to the product of
|
||||
slink:VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT::pname:requiredSubgroupSize
|
||||
and
|
||||
<<limits-max-subgroups-per-workgroup,pname:maxComputeWorkgroupSubgroups>>.
|
||||
* [[VUID-VkPipelineShaderStageCreateInfo-pNext-02757]]
|
||||
If a slink:VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT
|
||||
structure is chained to pname:pNext, and pname:flags has the
|
||||
ename:VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT
|
||||
flag set, the local workgroup size in the X dimension of the pipeline
|
||||
must: be a multiple of
|
||||
slink:VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT::pname:requiredSubgroupSize.
|
||||
* [[VUID-VkPipelineShaderStageCreateInfo-flags-02758]]
|
||||
If pname:flags has both the
|
||||
ename:VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT and
|
||||
ename:VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT
|
||||
flags set, the local workgroup size in the X dimension of the pipeline
|
||||
must: be a multiple of
|
||||
<<limits-max-subgroup-size,pname:maxSubgroupSize>>.
|
||||
* [[VUID-VkPipelineShaderStageCreateInfo-flags-02759]]
|
||||
If pname:flags has the
|
||||
ename:VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT
|
||||
flag set and pname:flags does not have the
|
||||
ename:VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT
|
||||
flag set and no
|
||||
slink:VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT structure
|
||||
is chained to pname:pNext, the local workgroup size in the X dimension
|
||||
of the pipeline must: be a multiple of
|
||||
<<limits-subgroup-size,pname:subgroupSize>>.
|
||||
endif::VK_EXT_subgroup_size_control[]
|
||||
****
|
||||
|
||||
include::{generated}/validity/structs/VkPipelineShaderStageCreateInfo.txt[]
|
||||
--
|
||||
|
||||
[open,refpage='VkPipelineShaderStageCreateFlags',desc='Reserved for future use',type='flags']
|
||||
[open,refpage='VkPipelineShaderStageCreateFlags',desc='Bitmask of VkPipelineShaderStageCreateFlagBits',type='flags']
|
||||
--
|
||||
include::{generated}/api/flags/VkPipelineShaderStageCreateFlags.txt[]
|
||||
|
||||
tname:VkPipelineShaderStageCreateFlags is a bitmask type for setting a mask,
|
||||
but is currently reserved for future use.
|
||||
tname:VkPipelineShaderStageCreateFlags is a bitmask type for setting a mask
|
||||
of zero or more elink:VkPipelineShaderStageCreateFlagBits.
|
||||
--
|
||||
|
||||
[open,refpage='VkPipelineShaderStageCreateFlagBits',desc='Bitmask controlling how a pipeline shader stage is created',type='enums']
|
||||
--
|
||||
|
||||
Possible values of the pname:flags member of
|
||||
slink:VkPipelineShaderStageCreateInfo specifying how a pipeline shader stage
|
||||
is created, are:
|
||||
|
||||
include::{generated}/api/enums/VkPipelineShaderStageCreateFlagBits.txt[]
|
||||
|
||||
ifdef::VK_EXT_subgroup_size_control[]
|
||||
* ename:VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT
|
||||
specifies that the
|
||||
<<interfaces-builtin-variables-sgs,code:SubgroupSize>> may: vary in the
|
||||
shader stage.
|
||||
* ename:VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT
|
||||
specifies that the subgroup sizes must: be launched with all invocations
|
||||
active in the compute stage.
|
||||
|
||||
[NOTE]
|
||||
.Note
|
||||
====
|
||||
If ename:VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT
|
||||
and ename:VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT are
|
||||
specified and <<limits-max-subgroup-size,pname:minSubgroupSize>> does not
|
||||
equal <<limits-max-subgroup-size,pname:maxSubgroupSize>> and no
|
||||
<<pipelines-required-subgroup-size, required subgroup size>> is specified,
|
||||
then the only way to guarantee that the 'X' dimension of the local workgroup
|
||||
size is a multiple of <<interfaces-builtin-variables-sgs,code:SubgroupSize>>
|
||||
is to make it a multiple of pname:maxSubgroupSize.
|
||||
Under these conditions, you are guaranteed full subgroups but not any
|
||||
particular subgroup size.
|
||||
====
|
||||
|
||||
endif::VK_EXT_subgroup_size_control[]
|
||||
|
||||
--
|
||||
|
||||
[open,refpage='VkShaderStageFlagBits',desc='Bitmask specifying a pipeline stage',type='enums']
|
||||
@ -452,6 +534,42 @@ more elink:VkShaderStageFlagBits.
|
||||
--
|
||||
|
||||
|
||||
ifdef::VK_EXT_subgroup_size_control[]
|
||||
[open,refpage='VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT',desc='Structure specifying the required subgroup size of a newly created pipeline shader stage',type='structs']
|
||||
--
|
||||
The sname:VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT structure
|
||||
is defined as:
|
||||
|
||||
include::{generated}/api/structs/VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT.txt[]
|
||||
* pname:sType is the type of this structure.
|
||||
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||
* [[pipelines-required-subgroup-size]] pname:requiredSubgroupSize is an
|
||||
unsigned integer value that specifies the required subgroup size for the
|
||||
newly created pipeline shader stage.
|
||||
|
||||
.Valid Usage
|
||||
****
|
||||
* [[VUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT-requiredSubgroupSize-02760]]
|
||||
pname:requiredSubgroupSize must: be a power-of-two integer.
|
||||
* [[VUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT-requiredSubgroupSize-02761]]
|
||||
pname:requiredSubgroupSize must: be greater or equal to
|
||||
<<limits-min-subgroup-size,minSubgroupSize>>.
|
||||
* [[VUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT-requiredSubgroupSize-02762]]
|
||||
pname:requiredSubgroupSize must: be less than or equal to
|
||||
<<limits-max-subgroup-size,maxSubgroupSize>>.
|
||||
****
|
||||
|
||||
|
||||
If the sname:VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT
|
||||
structure is included in the pname:pNext chain of
|
||||
slink:VkPipelineShaderStageCreateInfo, it specifies that the pipeline shader
|
||||
stage being compiled has a required subgroup size.
|
||||
|
||||
include::{generated}/validity/structs/VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT.txt[]
|
||||
--
|
||||
endif::VK_EXT_subgroup_size_control[]
|
||||
|
||||
|
||||
[[pipelines-graphics]]
|
||||
== Graphics Pipelines
|
||||
|
||||
|
@ -88,6 +88,8 @@ ename:VK_QUERY_TYPE_PIPELINE_STATISTICS.
|
||||
If pname:queryType is ename:VK_QUERY_TYPE_PIPELINE_STATISTICS,
|
||||
pname:pipelineStatistics must: be a valid combination of
|
||||
elink:VkQueryPipelineStatisticFlagBits values
|
||||
* [[VUID-VkQueryPoolCreateInfo-queryCount-02763]]
|
||||
pname:queryCount must: be greater than 0
|
||||
****
|
||||
|
||||
include::{generated}/validity/structs/VkQueryPoolCreateInfo.txt[]
|
||||
@ -353,6 +355,11 @@ pname:flags contains ename:VK_QUERY_CONTROL_PRECISE_BIT, an implementation
|
||||
must: return a result that matches the actual number of samples passed.
|
||||
This is described in more detail in <<queries-occlusion,Occlusion Queries>>.
|
||||
|
||||
ifdef::VK_EXT_transform_feedback[]
|
||||
Calling fname:vkCmdBeginQuery is equivalent to calling
|
||||
flink:vkCmdBeginQueryIndexedEXT with the pname:index parameter set to zero.
|
||||
endif::VK_EXT_transform_feedback[]
|
||||
|
||||
[[queries-operation-active]]
|
||||
After beginning a query, that query is considered _active_ within the
|
||||
command buffer it was called in until that same query is ended.
|
||||
@ -470,6 +477,11 @@ include::{generated}/api/protos/vkCmdEndQuery.txt[]
|
||||
* pname:query is the query index within the query pool where the result is
|
||||
stored.
|
||||
|
||||
ifdef::VK_EXT_transform_feedback[]
|
||||
Calling fname:vkCmdEndQuery is equivalent to calling
|
||||
flink:vkCmdEndQueryIndexedEXT with the pname:index parameter set to zero.
|
||||
endif::VK_EXT_transform_feedback[]
|
||||
|
||||
[[queries-operation-finished]]
|
||||
As queries operate asynchronously, ending a query does not immediately set
|
||||
the query's status to available.
|
||||
|
@ -1,2 +1,2 @@
|
||||
# The value to start tagging VU statements at, unless overridden by -nextvu
|
||||
startVUID = 2754
|
||||
startVUID = 2765
|
||||
|
50
xml/vk.xml
50
xml/vk.xml
@ -154,7 +154,7 @@ server.
|
||||
<type category="define">// Vulkan 1.1 version number
|
||||
#define <name>VK_API_VERSION_1_1</name> <type>VK_MAKE_VERSION</type>(1, 1, 0)// Patch version should always be set to 0</type>
|
||||
<type category="define">// Version of this file
|
||||
#define <name>VK_HEADER_VERSION</name> 115</type>
|
||||
#define <name>VK_HEADER_VERSION</name> 116</type>
|
||||
|
||||
<type category="define">
|
||||
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
|
||||
@ -214,7 +214,7 @@ typedef void <name>CAMetalLayer</name>;
|
||||
<type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineTessellationStateCreateFlags</name>;</type>
|
||||
<type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineInputAssemblyStateCreateFlags</name>;</type>
|
||||
<type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineVertexInputStateCreateFlags</name>;</type>
|
||||
<type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineShaderStageCreateFlags</name>;</type>
|
||||
<type requires="VkPipelineShaderStageCreateFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineShaderStageCreateFlags</name>;</type>
|
||||
<type requires="VkDescriptorSetLayoutCreateFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkDescriptorSetLayoutCreateFlags</name>;</type>
|
||||
<type category="bitmask">typedef <type>VkFlags</type> <name>VkBufferViewCreateFlags</name>;</type>
|
||||
<type category="bitmask">typedef <type>VkFlags</type> <name>VkInstanceCreateFlags</name>;</type>
|
||||
@ -561,6 +561,7 @@ typedef void <name>CAMetalLayer</name>;
|
||||
<type name="VkDebugUtilsMessageSeverityFlagBitsEXT" category="enum"/>
|
||||
<type name="VkDebugUtilsMessageTypeFlagBitsEXT" category="enum"/>
|
||||
<type name="VkFullScreenExclusiveEXT" category="enum"/>
|
||||
<type name="VkShaderFloatControlsIndependenceKHR" category="enum"/>
|
||||
|
||||
<comment>Enumerated types in the header, but not used by the API</comment>
|
||||
<type name="VkVendorId" category="enum"/>
|
||||
@ -2999,8 +3000,8 @@ typedef void <name>CAMetalLayer</name>;
|
||||
<type category="struct" name="VkPhysicalDeviceFloatControlsPropertiesKHR" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
|
||||
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member><type>void</type>* <name>pNext</name></member>
|
||||
<member><type>VkBool32</type> <name>separateDenormSettings</name></member>
|
||||
<member><type>VkBool32</type> <name>separateRoundingModeSettings</name></member>
|
||||
<member><type>VkShaderFloatControlsIndependenceKHR</type> <name>denormBehaviorIndependence</name></member>
|
||||
<member><type>VkShaderFloatControlsIndependenceKHR</type> <name>roundingModeIndependence</name></member>
|
||||
<member><type>VkBool32</type> <name>shaderSignedZeroInfNanPreserveFloat16</name></member> <!-- An implementation can preserve signed zero, nan, inf -->
|
||||
<member><type>VkBool32</type> <name>shaderSignedZeroInfNanPreserveFloat32</name></member> <!-- An implementation can preserve signed zero, nan, inf -->
|
||||
<member><type>VkBool32</type> <name>shaderSignedZeroInfNanPreserveFloat64</name></member> <!-- An implementation can preserve signed zero, nan, inf -->
|
||||
@ -4011,6 +4012,19 @@ typedef void <name>CAMetalLayer</name>;
|
||||
<member><type>VkDeviceSize</type> <name>uniformTexelBufferOffsetAlignmentBytes</name></member>
|
||||
<member><type>VkBool32</type> <name>uniformTexelBufferOffsetSingleTexelAlignment</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkPhysicalDeviceSubgroupSizeControlPropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
|
||||
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member><type>void</type>* <name>pNext</name></member>
|
||||
<member noautovalidity="true"><type>uint32_t</type> <name>minSubgroupSize</name><comment>The minimum subgroup size supported by this device</comment></member>
|
||||
<member noautovalidity="true"><type>uint32_t</type> <name>maxSubgroupSize</name><comment>The maximum subgroup size supported by this device</comment></member>
|
||||
<member noautovalidity="true"><type>uint32_t</type> <name>maxComputeWorkgroupSubgroups</name><comment>The maximum number of subgroups supported in a workgroup</comment></member>
|
||||
<member><type>VkShaderStageFlags</type> <name>requiredSubgroupSizeStages</name><comment>The shader stages that support specifying a subgroup size</comment></member>
|
||||
</type>
|
||||
<type category="struct" name="VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT" returnedonly="true" structextends="VkPipelineShaderStageCreateInfo">
|
||||
<member values="VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member><type>void</type>* <name>pNext</name></member>
|
||||
<member><type>uint32_t</type> <name>requiredSubgroupSize</name></member>
|
||||
</type>
|
||||
</types>
|
||||
|
||||
<comment>Vulkan enumerant (token) definitions</comment>
|
||||
@ -4676,6 +4690,8 @@ typedef void <name>CAMetalLayer</name>;
|
||||
<enum bitpos="1" name="VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT"/>
|
||||
<enum bitpos="2" name="VK_PIPELINE_CREATE_DERIVATIVE_BIT"/>
|
||||
</enums>
|
||||
<enums name="VkPipelineShaderStageCreateFlagBits" type="bitmask">
|
||||
</enums>
|
||||
<enums name="VkColorComponentFlagBits" type="bitmask">
|
||||
<enum bitpos="0" name="VK_COLOR_COMPONENT_R_BIT"/>
|
||||
<enum bitpos="1" name="VK_COLOR_COMPONENT_G_BIT"/>
|
||||
@ -5273,6 +5289,11 @@ typedef void <name>CAMetalLayer</name>;
|
||||
<enum value="3" name="VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL"/>
|
||||
<enum value="4" name="VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL"/>
|
||||
</enums>
|
||||
<enums name="VkShaderFloatControlsIndependenceKHR" type="enum">
|
||||
<enum value="0" name="VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR"/>
|
||||
<enum value="1" name="VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR"/>
|
||||
<enum value="2" name="VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR"/>
|
||||
</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">
|
||||
@ -10479,10 +10500,11 @@ typedef void <name>CAMetalLayer</name>;
|
||||
</extension>
|
||||
<extension name="VK_KHR_shader_float_controls" number="198" type="device" requires="VK_KHR_get_physical_device_properties2" author="KHR" contact="Alexander Galazin @alegal-arm" supported="vulkan">
|
||||
<require>
|
||||
<enum value="1" name="VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION"/>
|
||||
<enum value="2" name="VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION"/>
|
||||
<enum value=""VK_KHR_shader_float_controls"" name="VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME"/>
|
||||
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR"/>
|
||||
<type name="VkPhysicalDeviceFloatControlsPropertiesKHR"/>
|
||||
<type name="VkShaderFloatControlsIndependenceKHR"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_NV_shader_subgroup_partitioned" number="199" type="device" requiresCore="1.1" author="NV" contact="Jeff Bolz @jeffbolznv" supported="vulkan">
|
||||
@ -10753,10 +10775,16 @@ typedef void <name>CAMetalLayer</name>;
|
||||
<enum value=""VK_GOOGLE_decorate_string"" name="VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_AMD_extension_226" number="226" author="AMD" contact="Martin Dinkov @mdinkov" supported="disabled">
|
||||
<extension name="VK_EXT_subgroup_size_control" number="226" type="device" requiresCore="1.1" author="EXT" contact="Neil Henning @sheredom" supported="vulkan">
|
||||
<require>
|
||||
<enum value="0" name="VK_AMD_EXTENSION_226_SPEC_VERSION"/>
|
||||
<enum value=""VK_AMD_extension_226"" name="VK_AMD_EXTENSION_226_EXTENSION_NAME"/>
|
||||
<enum value="1" name="VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION"/>
|
||||
<enum value=""VK_EXT_subgroup_size_control"" name="VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME"/>
|
||||
<type name="VkPhysicalDeviceSubgroupSizeControlPropertiesEXT"/>
|
||||
<type name="VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT"/>
|
||||
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT"/>
|
||||
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT"/>
|
||||
<enum bitpos="0" extends="VkPipelineShaderStageCreateFlagBits" name="VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT"/>
|
||||
<enum bitpos="1" extends="VkPipelineShaderStageCreateFlagBits" name="VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_AMD_extension_227" number="227" author="AMD" contact="Martin Dinkov @mdinkov" supported="disabled">
|
||||
@ -11189,5 +11217,11 @@ typedef void <name>CAMetalLayer</name>;
|
||||
<enum value=""VK_EXT_extension_284"" name="VK_EXT_extension_284"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_EXT_extension_285" number="285" type="device" author="EXT" contact="Yiwei Zhang @zzyiwei" supported="disabled">
|
||||
<require>
|
||||
<enum value="0" name="VK_EXT_EXTENSION_285_SPEC_VERSION"/>
|
||||
<enum value=""VK_EXT_extension_285"" name="VK_EXT_extension_285"/>
|
||||
</require>
|
||||
</extension>
|
||||
</extensions>
|
||||
</registry>
|
||||
|
Loading…
x
Reference in New Issue
Block a user