Change log for December 3, 2018 Vulkan 1.1.95 spec update:
* Update release number to 95. Public Issues: * Fix valid usage and XML issues found in public issues 789 and 790 for the `VK_EXT_debug_utils` extension (public pull request 794). * Replace references to `VK_NV_dedicated_allocation` with links to the corresponding slink:slink:VkMemoryDedicatedRequirements and slink:slink:VkMemoryDedicatedAllocateInfo structures in the description of elink:VkExternalMemoryFeatureFlagBits (public issue 801). * Fix miscellaneous minor markup and spelling issues in `VK_NV_ray_tracing` extension (public pull request 860). * Remove "returnedonly" from XML for slink:VkPhysicalDeviceInlineUniformBlockFeaturesEXT and slink:VkPhysicalDeviceVulkanMemoryModelFeaturesKHR (public issue 862). Internal Issues: * Add to the description of the <<features-limits-maxComputeSharedMemorySize, pname:maxCompureSharedMemorySize>> feature to state the shared variables should be packed at least as tightly as std430 (internal issue 1386). * Fix and clarify various references to image and image view usage in flink:vkCmdBindShadingRateImageNV, flink:vkCmdBeginRenderPass, and slink:VkImageStencilUsageCreateInfoEXT (internal issue 1432). * Require that the slink:VkImage mipmap chain match the Android hardware buffer mipmap chain for slink:VkMemoryAllocateInfo (internal issue 1479). * Fix the definition of slink:VkSwapchainCreateInfoKHR valid usage statement 01778 (Vulkan-ValidationLayers!15) * Fix descriptions of <<interfaces-builtin-variables-launchid, code:LaunchIDNV>> and <<interfaces-builtin-variables-launchsize, code:LaunchSizeNV>> to code:uvec3. New Extensions: * `VK_KHR_shader_float16_int8` * `VK_KHR_shader_float_controls`
This commit is contained in:
parent
f5ae29c4f5
commit
ef29cea94b
2
Makefile
2
Makefile
|
@ -115,7 +115,7 @@ VERBOSE =
|
||||||
# ADOCOPTS options for asciidoc->HTML5 output
|
# ADOCOPTS options for asciidoc->HTML5 output
|
||||||
|
|
||||||
NOTEOPTS = -a editing-notes -a implementation-guide
|
NOTEOPTS = -a editing-notes -a implementation-guide
|
||||||
PATCHVERSION = 94
|
PATCHVERSION = 95
|
||||||
ifneq (,$(findstring VK_VERSION_1_1,$(VERSIONS)))
|
ifneq (,$(findstring VK_VERSION_1_1,$(VERSIONS)))
|
||||||
SPECREVISION = 1.1.$(PATCHVERSION)
|
SPECREVISION = 1.1.$(PATCHVERSION)
|
||||||
else
|
else
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
// Copyright (c) 2014-2018 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_KHR_shader_float16_int8.txt[]
|
||||||
|
|
||||||
|
*Last Modified Date*::
|
||||||
|
2018-03-07
|
||||||
|
*IP Status*::
|
||||||
|
No known IP claims.
|
||||||
|
*Interactions and External Dependencies*::
|
||||||
|
- This extension interacts with `<<VK_KHR_8bit_storage>>`
|
||||||
|
- This extension interacts with `<<VK_KHR_16bit_storage>>`
|
||||||
|
- This extension interacts with `<<VK_KHR_shader_float_controls>>`
|
||||||
|
*Contributors*::
|
||||||
|
- Alexander Galazin, Arm
|
||||||
|
- Jan-Harald Fredriksen, Arm
|
||||||
|
- Jeff Bolz, NVIDIA
|
||||||
|
- Graeme Leese, Broadcom
|
||||||
|
- Daniel Rakos, AMD
|
||||||
|
|
||||||
|
=== Description
|
||||||
|
|
||||||
|
The `VK_KHR_shader_float16_int8` extension allows use of 16-bit
|
||||||
|
floating-point types and 8-bit integer types in shaders for arithmetic
|
||||||
|
operations.
|
||||||
|
|
||||||
|
It introduces two new optional features pname:shaderFloat16 and
|
||||||
|
pname:shaderInt8 which directly map to the code:Float16 and the code:Int8
|
||||||
|
SPIR-V capabilities.
|
||||||
|
The `VK_KHR_shader_float16_int8` extension also specifies precision
|
||||||
|
requirements for half-precision floating-point SPIR-V operations.
|
||||||
|
This extension doesn't enable use of 8-bit integer types or 16-bit
|
||||||
|
floating-point types in any <<interfaces-iointerfaces, shader input and
|
||||||
|
output interfaces>> and therefore doesn't supersede the
|
||||||
|
`<<VK_KHR_8bit_storage>>` or `<<VK_KHR_16bit_storage>>` extensions.
|
||||||
|
|
||||||
|
=== New Enum Constants
|
||||||
|
|
||||||
|
* Extending elink:VkStructureType:
|
||||||
|
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR
|
||||||
|
|
||||||
|
=== New Structures
|
||||||
|
|
||||||
|
* slink:VkPhysicalDeviceFloat16Int8FeaturesKHR
|
||||||
|
|
||||||
|
=== New Functions
|
||||||
|
|
||||||
|
* None
|
||||||
|
|
||||||
|
=== Version History
|
||||||
|
* Revision 1, 2018-03-07 (Alexander Galazin)
|
||||||
|
- Initial draft
|
|
@ -0,0 +1,102 @@
|
||||||
|
// Copyright (c) 2014-2018 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_KHR_shader_float_controls.txt[]
|
||||||
|
|
||||||
|
*Last Modified Date*::
|
||||||
|
2018-09-11
|
||||||
|
*IP Status*::
|
||||||
|
No known IP claims.
|
||||||
|
*Interactions and External Dependencies*::
|
||||||
|
- This extension requires
|
||||||
|
https://www.khronos.org/registry/spir-v/extensions/KHR/SPV_KHR_float_controls.html[`SPV_KHR_float_controls`]
|
||||||
|
*Contributors*::
|
||||||
|
- Alexander Galazin, Arm
|
||||||
|
- Jan-Harald Fredriksen, Arm
|
||||||
|
- Jeff Bolz, NVIDIA
|
||||||
|
- Graeme Leese, Broadcom
|
||||||
|
- Daniel Rakos, AMD
|
||||||
|
|
||||||
|
=== Description
|
||||||
|
|
||||||
|
The `VK_KHR_shader_float_controls` extension enables efficient use of
|
||||||
|
floating-point computations through the ability to query and override the
|
||||||
|
implementation's default behavior for rounding modes, denormals, signed
|
||||||
|
zero, and infinity.
|
||||||
|
|
||||||
|
=== New Enum Constants
|
||||||
|
|
||||||
|
* Extending elink:VkStructureType:
|
||||||
|
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR
|
||||||
|
|
||||||
|
=== New Enums
|
||||||
|
|
||||||
|
* None
|
||||||
|
|
||||||
|
=== New Structures
|
||||||
|
|
||||||
|
* slink:VkPhysicalDeviceFloatControlsPropertiesKHR
|
||||||
|
|
||||||
|
=== New Functions
|
||||||
|
|
||||||
|
* None
|
||||||
|
|
||||||
|
=== New SPIR-V Capabilities
|
||||||
|
|
||||||
|
* <<spirvenv-capabilities-table-shaderfloatcontrols,code:DenormPreserve>>
|
||||||
|
* <<spirvenv-capabilities-table-shaderfloatcontrols,code:DenormFlushToZero>>
|
||||||
|
* <<spirvenv-capabilities-table-shaderfloatcontrols,code:SignedZeroInfNanPreserve>>
|
||||||
|
* <<spirvenv-capabilities-table-shaderfloatcontrols,code:RoundingModeRTE>>
|
||||||
|
* <<spirvenv-capabilities-table-shaderfloatcontrols,code:RoundingModeRTZ>>
|
||||||
|
|
||||||
|
=== Issues
|
||||||
|
|
||||||
|
1) Which instructions must flush denorms?
|
||||||
|
|
||||||
|
*RESOLVED*: Only floating-point conversion, floating-point arithmetic,
|
||||||
|
floating-point relational (except code:OpIsNaN, code:OpIsInf), and
|
||||||
|
floating-point GLSL.std.450 extended instructions must flush denormals.
|
||||||
|
|
||||||
|
2) What is the denorm behavior for intermediate results?
|
||||||
|
|
||||||
|
*RESOLVED*: When a SPIR-V instruction is implemented as a sequence of other
|
||||||
|
instructions:
|
||||||
|
- in the code:DenormFlushToZero execution mode the intermediate
|
||||||
|
instructions may flush denormals, the final result of the sequence must:
|
||||||
|
not be denormal.
|
||||||
|
- in the code:DenormPreserve execution mode denormals must be preserved
|
||||||
|
throughout the whole sequence.
|
||||||
|
|
||||||
|
3) Do denorm and rounding mode controls apply to code:OpSpecConstantOp?
|
||||||
|
|
||||||
|
*RESOLVED*: Yes, except when the opcode is code:OpQuantizeToF16.
|
||||||
|
|
||||||
|
4) The SPIR-V specification says that code:OpConvertFToU and
|
||||||
|
code:OpConvertFToS unconditionally round towards zero.
|
||||||
|
Do the rounding mode controls specified through the execution modes apply to
|
||||||
|
them?
|
||||||
|
|
||||||
|
*RESOLVED*: No, these instructions unconditionally round towards zero.
|
||||||
|
|
||||||
|
5) Do any of the "Pack" GLSL.std.450 instructions count as conversion
|
||||||
|
instructions and have the rounding mode apply?
|
||||||
|
|
||||||
|
*RESOLVED*: No, only instructions listed in the section "3.32.11.
|
||||||
|
Conversion Instructions" of the SPIR-V specification count as conversion
|
||||||
|
instructions.
|
||||||
|
|
||||||
|
6) When using inf/nan-ignore mode, what is expected of code:OpIsNan and
|
||||||
|
code:OpIsInf?
|
||||||
|
|
||||||
|
*RESOLVED*: These instructions must always accurately detect inf/nan if it
|
||||||
|
is passed to them.
|
||||||
|
|
||||||
|
=== Version History
|
||||||
|
|
||||||
|
* Revision 3, 2018-09-11 (Alexander Galazin)
|
||||||
|
- Minor restructuring
|
||||||
|
* Revision 2, 2018-04-17 (Alexander Galazin)
|
||||||
|
- Added issues and resolutions
|
||||||
|
* Revision 1, 2018-04-11 (Alexander Galazin)
|
||||||
|
- Initial draft
|
|
@ -201,9 +201,19 @@ ifdef::VK_EXT_descriptor_indexing[]
|
||||||
| code:UniformTexelBufferArrayNonUniformIndexingEXT | <<features-features-shaderUniformTexelBufferArrayNonUniformIndexing,shaderUniformTexelBufferArrayNonUniformIndexing>>
|
| code:UniformTexelBufferArrayNonUniformIndexingEXT | <<features-features-shaderUniformTexelBufferArrayNonUniformIndexing,shaderUniformTexelBufferArrayNonUniformIndexing>>
|
||||||
| code:StorageTexelBufferArrayNonUniformIndexingEXT | <<features-features-shaderStorageTexelBufferArrayNonUniformIndexing,shaderStorageTexelBufferArrayNonUniformIndexing>>
|
| code:StorageTexelBufferArrayNonUniformIndexingEXT | <<features-features-shaderStorageTexelBufferArrayNonUniformIndexing,shaderStorageTexelBufferArrayNonUniformIndexing>>
|
||||||
endif::VK_EXT_descriptor_indexing[]
|
endif::VK_EXT_descriptor_indexing[]
|
||||||
|
ifdef::VK_KHR_shader_float16_int8,VK_AMD_gpu_shader_half_float[]
|
||||||
|
| code:Float16 |
|
||||||
|
ifdef::VK_KHR_shader_float16_int8[]
|
||||||
|
<<features-features-shaderFloat16,shaderFloat16>>
|
||||||
|
endif::VK_KHR_shader_float16_int8[]
|
||||||
|
ifdef::VK_KHR_shader_float16_int8+VK_AMD_gpu_shader_half_float[or]
|
||||||
ifdef::VK_AMD_gpu_shader_half_float[]
|
ifdef::VK_AMD_gpu_shader_half_float[]
|
||||||
| code:Float16 | `<<VK_AMD_gpu_shader_half_float>>`
|
`<<VK_AMD_gpu_shader_half_float>>`
|
||||||
endif::VK_AMD_gpu_shader_half_float[]
|
endif::VK_AMD_gpu_shader_half_float[]
|
||||||
|
endif::VK_KHR_shader_float16_int8,VK_AMD_gpu_shader_half_float[]
|
||||||
|
ifdef::VK_KHR_shader_float16_int8[]
|
||||||
|
| code:Int8 | <<features-features-shaderInt8,shaderInt8>>
|
||||||
|
endif::VK_KHR_shader_float16_int8[]
|
||||||
ifdef::VK_KHR_8bit_storage[]
|
ifdef::VK_KHR_8bit_storage[]
|
||||||
[[spirvenv-capabilities-table-8bitstorage]]
|
[[spirvenv-capabilities-table-8bitstorage]]
|
||||||
| code:StorageBuffer8BitAccess | <<features-features-storageBuffer8BitAccess,StorageBuffer8BitAccess>>
|
| code:StorageBuffer8BitAccess | <<features-features-storageBuffer8BitAccess,StorageBuffer8BitAccess>>
|
||||||
|
@ -215,6 +225,14 @@ ifdef::VK_KHR_vulkan_memory_model[]
|
||||||
| code:VulkanMemoryModelKHR | <<features-features-vulkanMemoryModel,vulkanMemoryModel>>
|
| code:VulkanMemoryModelKHR | <<features-features-vulkanMemoryModel,vulkanMemoryModel>>
|
||||||
| code:VulkanMemoryModelDeviceScopeKHR | <<features-features-vulkanMemoryModel,vulkanMemoryModelDeviceScope>>
|
| code:VulkanMemoryModelDeviceScopeKHR | <<features-features-vulkanMemoryModel,vulkanMemoryModelDeviceScope>>
|
||||||
endif::VK_KHR_vulkan_memory_model[]
|
endif::VK_KHR_vulkan_memory_model[]
|
||||||
|
ifdef::VK_KHR_shader_float_controls[]
|
||||||
|
[[spirvenv-capabilities-table-shaderfloatcontrols]]
|
||||||
|
| code:DenormPreserve | <<features-features-shaderDenormPreserveFloat16,shaderDenormPreserveFloat16>>, <<features-features-shaderDenormPreserveFloat32,shaderDenormPreserveFloat32>>, <<features-features-shaderDenormPreserveFloat64,shaderDenormPreserveFloat64>>
|
||||||
|
| code:DenormFlushToZero | <<features-features-shaderDenormFlushToZeroFloat16,shaderDenormFlushToZeroFloat16>>, <<features-features-shaderDenormFlushToZeroFloat32,shaderDenormFlushToZeroFloat32>>, <<features-features-shaderDenormFlushToZeroFloat64,shaderDenormFlushToZeroFloat64>>
|
||||||
|
| code:SignedZeroInfNanPreserve | <<features-features-shaderSignedZeroInfNanPreserveFloat16,shaderSignedZeroInfNanPreserveFloat16>>, <<features-features-shaderSignedZeroInfNanPreserveFloat32,shaderSignedZeroInfNanPreserveFloat32>>, <<features-features-shaderSignedZeroInfNanPreserveFloat64,shaderSignedZeroInfNanPreserveFloat64>>
|
||||||
|
| code:RoundingModeRTE | <<features-features-shaderRoundingModeRTEFloat16,shaderRoundingModeRTEFloat16>>, <<features-features-shaderRoundingModeRTEFloat32,shaderRoundingModeRTEFloat32>>, <<features-features-shaderRoundingModeRTEFloat64,shaderRoundingModeRTEFloat64>>
|
||||||
|
| code:RoundingModeRTZ | <<features-features-shaderRoundingModeRTZFloat16,shaderRoundingModeRTZFloat16>>, <<features-features-shaderRoundingModeRTZFloat32,shaderRoundingModeRTZFloat32>>, <<features-features-shaderRoundingModeRTZFloat64,shaderRoundingModeRTZFloat64>>
|
||||||
|
endif::VK_KHR_shader_float_controls[]
|
||||||
ifdef::VK_NV_compute_shader_derivatives[]
|
ifdef::VK_NV_compute_shader_derivatives[]
|
||||||
[[spirvenv-capabilities-table-computederivatives-quads]]
|
[[spirvenv-capabilities-table-computederivatives-quads]]
|
||||||
| code:ComputeDerivativeGroupQuadsNV | <<features-features-computeShaderDerivativesQuads,computeDerivativeGroupQuads>>
|
| code:ComputeDerivativeGroupQuadsNV | <<features-features-computeShaderDerivativesQuads,computeDerivativeGroupQuads>>
|
||||||
|
@ -305,6 +323,11 @@ The application can: pass a SPIR-V module to flink:vkCreateShaderModule that
|
||||||
uses the `SPV_KHR_shader_draw_parameters` SPIR-V extension.
|
uses the `SPV_KHR_shader_draw_parameters` SPIR-V extension.
|
||||||
endif::VK_VERSION_1_1,VK_KHR_shader_draw_parameters[]
|
endif::VK_VERSION_1_1,VK_KHR_shader_draw_parameters[]
|
||||||
|
|
||||||
|
ifdef::VK_KHR_shader_float16_int8[]
|
||||||
|
The application can: pass a SPIR-V module to flink:vkCreateShaderModule that
|
||||||
|
uses the code:Float16 or the code:Int8 SPIR-V capabilities.
|
||||||
|
endif::VK_KHR_shader_float16_int8[]
|
||||||
|
|
||||||
ifdef::VK_KHR_8bit_storage[]
|
ifdef::VK_KHR_8bit_storage[]
|
||||||
The application can: pass a SPIR-V module to flink:vkCreateShaderModule that
|
The application can: pass a SPIR-V module to flink:vkCreateShaderModule that
|
||||||
uses the `SPV_KHR_8bit_storage` SPIR-V extension.
|
uses the `SPV_KHR_8bit_storage` SPIR-V extension.
|
||||||
|
@ -317,6 +340,13 @@ https://www.khronos.org/registry/spir-v/extensions/KHR/SPV_KHR_16bit_storage.htm
|
||||||
SPIR-V extension.
|
SPIR-V extension.
|
||||||
endif::VK_VERSION_1_1,VK_KHR_16bit_storage[]
|
endif::VK_VERSION_1_1,VK_KHR_16bit_storage[]
|
||||||
|
|
||||||
|
ifdef::VK_KHR_shader_float_controls[]
|
||||||
|
The application can: pass a SPIR-V module to flink:vkCreateShaderModule that
|
||||||
|
uses the
|
||||||
|
https://www.khronos.org/registry/spir-v/extensions/KHR/SPV_KHR_float_controls.html[`SPV_KHR_float_controls`]
|
||||||
|
SPIR-V extension.
|
||||||
|
endif::VK_KHR_shader_float_controls[]
|
||||||
|
|
||||||
ifdef::VK_VERSION_1_1,VK_KHR_storage_buffer_storage_class[]
|
ifdef::VK_VERSION_1_1,VK_KHR_storage_buffer_storage_class[]
|
||||||
The application can: pass a SPIR-V module to flink:vkCreateShaderModule that
|
The application can: pass a SPIR-V module to flink:vkCreateShaderModule that
|
||||||
uses the
|
uses the
|
||||||
|
@ -511,6 +541,27 @@ endif::VK_NV_ray_tracing[]
|
||||||
include at least one storage class.
|
include at least one storage class.
|
||||||
** *SubgroupMemory*, *CrossWorkgroupMemory*, and *AtomicCounterMemory* are
|
** *SubgroupMemory*, *CrossWorkgroupMemory*, and *AtomicCounterMemory* are
|
||||||
ignored.
|
ignored.
|
||||||
|
ifdef::VK_KHR_shader_float16_int8+!VK_KHR_8bit_storage[]
|
||||||
|
* Any code:OpVariable with the result type pointing to an 8-bit integer
|
||||||
|
object or an object containing an 8-bit integer element must: not have
|
||||||
|
one of the following as its code:Storage code:Class operand:
|
||||||
|
** *Uniform*
|
||||||
|
** *PushConstant*
|
||||||
|
ifdef::VK_VERSION_1_1,VK_KHR_storage_buffer_storage_class[]
|
||||||
|
** *StorageBuffer*
|
||||||
|
endif::VK_VERSION_1_1,VK_KHR_storage_buffer_storage_class[]
|
||||||
|
endif::VK_KHR_shader_float16_int8+!VK_KHR_8bit_storage[]
|
||||||
|
ifdef::VK_KHR_shader_float16_int8+!VK_KHR_16bit_storage[]
|
||||||
|
* Any code:OpVariable with the result type pointing to a 16-bit
|
||||||
|
floating-point object or an object containing a 16-bit floating-point
|
||||||
|
element must: not have one of the following as its code:Storage
|
||||||
|
code:Class operand:
|
||||||
|
** *Uniform*
|
||||||
|
** *PushConstant*
|
||||||
|
ifdef::VK_VERSION_1_1,VK_KHR_storage_buffer_storage_class[]
|
||||||
|
** *StorageBuffer*
|
||||||
|
endif::VK_VERSION_1_1,VK_KHR_storage_buffer_storage_class[]
|
||||||
|
endif::VK_KHR_shader_float16_int8+!VK_KHR_16bit_storage[]
|
||||||
* Any code:OpVariable with an code:Initializer operand must: have one of
|
* Any code:OpVariable with an code:Initializer operand must: have one of
|
||||||
the following as its *Storage Class* operand:
|
the following as its *Storage Class* operand:
|
||||||
** *Output*
|
** *Output*
|
||||||
|
@ -672,6 +723,76 @@ ifdef::VK_EXT_descriptor_indexing[]
|
||||||
(e.g. the pointer or sampled image operand) must: be decorated with
|
(e.g. the pointer or sampled image operand) must: be decorated with
|
||||||
code:NonUniformEXT.
|
code:NonUniformEXT.
|
||||||
endif::VK_EXT_descriptor_indexing[]
|
endif::VK_EXT_descriptor_indexing[]
|
||||||
|
ifdef::VK_KHR_shader_float_controls[]
|
||||||
|
* If
|
||||||
|
<<features-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-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.
|
||||||
|
* If
|
||||||
|
<<features-features-shaderSignedZeroInfNanPreserveFloat16,pname:shaderSignedZeroInfNanPreserveFloat16>>
|
||||||
|
is ename:VK_FALSE, then code:SignedZeroInfNanPreserve for 16-bit
|
||||||
|
floating-point type must: not be used.
|
||||||
|
* If
|
||||||
|
<<features-features-shaderSignedZeroInfNanPreserveFloat32,pname:shaderSignedZeroInfNanPreserveFloat32>>
|
||||||
|
is ename:VK_FALSE, then code:SignedZeroInfNanPreserve for 32-bit
|
||||||
|
floating-point type must: not be used.
|
||||||
|
* If
|
||||||
|
<<features-features-shaderSignedZeroInfNanPreserveFloat64,pname:shaderSignedZeroInfNanPreserveFloat64>>
|
||||||
|
is ename:VK_FALSE, then code:SignedZeroInfNanPreserve for 64-bit
|
||||||
|
floating-point type must: not be used.
|
||||||
|
* If
|
||||||
|
<<features-features-shaderDenormPreserveFloat16,pname:shaderDenormPreserveFloat16>>
|
||||||
|
is ename:VK_FALSE, then code:DenormPreserve for 16-bit floating-point
|
||||||
|
type must: not be used.
|
||||||
|
* If
|
||||||
|
<<features-features-shaderDenormPreserveFloat32,pname:shaderDenormPreserveFloat32>>
|
||||||
|
is ename:VK_FALSE, then code:DenormPreserve for 32-bit floating-point
|
||||||
|
type must: not be used.
|
||||||
|
* If
|
||||||
|
<<features-features-shaderDenormPreserveFloat64,pname:shaderDenormPreserveFloat64>>
|
||||||
|
is ename:VK_FALSE, then code:DenormPreserve for 64-bit floating-point
|
||||||
|
type must: not be used.
|
||||||
|
* If
|
||||||
|
<<features-features-shaderDenormFlushToZeroFloat16,pname:shaderDenormFlushToZeroFloat16>>
|
||||||
|
is ename:VK_FALSE, then code:DenormFlushToZero for 16-bit floating-point
|
||||||
|
type must: not be used.
|
||||||
|
* If
|
||||||
|
<<features-features-shaderDenormFlushToZeroFloat32,pname:shaderDenormFlushToZeroFloat32>>
|
||||||
|
is ename:VK_FALSE, then code:DenormFlushToZero for 32-bit floating-point
|
||||||
|
type must: not be used.
|
||||||
|
* If
|
||||||
|
<<features-features-shaderDenormFlushToZeroFloat64,pname:shaderDenormFlushToZeroFloat64>>
|
||||||
|
is ename:VK_FALSE, then code:DenormFlushToZero for 64-bit floating-point
|
||||||
|
type must: not be used.
|
||||||
|
* If
|
||||||
|
<<features-features-shaderRoundingModeRTEFloat16,pname:shaderRoundingModeRTEFloat16>>
|
||||||
|
is ename:VK_FALSE, then code:RoundingModeRTE for 16-bit floating-point
|
||||||
|
type must: not be used.
|
||||||
|
* If
|
||||||
|
<<features-features-shaderRoundingModeRTEFloat32,pname:shaderRoundingModeRTEFloat32>>
|
||||||
|
is ename:VK_FALSE, then code:RoundingModeRTE for 32-bit floating-point
|
||||||
|
type must: not be used.
|
||||||
|
* If
|
||||||
|
<<features-features-shaderRoundingModeRTEFloat64,pname:shaderRoundingModeRTEFloat64>>
|
||||||
|
is ename:VK_FALSE, then code:RoundingModeRTE for 64-bit floating-point
|
||||||
|
type must: not be used.
|
||||||
|
* If
|
||||||
|
<<features-features-shaderRoundingModeRTZFloat16,pname:shaderRoundingModeRTZFloat16>>
|
||||||
|
is ename:VK_FALSE, then code:RoundingModeRTZ for 16-bit floating-point
|
||||||
|
type must: not be used.
|
||||||
|
* If
|
||||||
|
<<features-features-shaderRoundingModeRTZFloat32,pname:shaderRoundingModeRTZFloat32>>
|
||||||
|
is ename:VK_FALSE, then code:RoundingModeRTZ for 32-bit floating-point
|
||||||
|
type must: not be used.
|
||||||
|
* If
|
||||||
|
<<features-features-shaderRoundingModeRTZFloat64,pname:shaderRoundingModeRTZFloat64>>
|
||||||
|
is ename:VK_FALSE, then code:RoundingModeRTZ for 64-bit floating-point
|
||||||
|
type must: not be used.
|
||||||
|
endif::VK_KHR_shader_float_controls[]
|
||||||
ifdef::VK_EXT_transform_feedback[]
|
ifdef::VK_EXT_transform_feedback[]
|
||||||
* The code:Offset plus size of the type of each variable, in the output
|
* The code:Offset plus size of the type of each variable, in the output
|
||||||
interface of the entry point being compiled, decorated with
|
interface of the entry point being compiled, decorated with
|
||||||
|
@ -743,9 +864,11 @@ ifdef::VK_NV_ray_tracing[]
|
||||||
shaders.
|
shaders.
|
||||||
endif::VK_NV_ray_tracing[]
|
endif::VK_NV_ray_tracing[]
|
||||||
|
|
||||||
|
|
||||||
[[spirvenv-precision-operation]]
|
[[spirvenv-precision-operation]]
|
||||||
== Precision and Operation of SPIR-V Instructions
|
== Precision and Operation of SPIR-V Instructions
|
||||||
|
|
||||||
|
ifndef::VK_KHR_shader_float_controls[]
|
||||||
The following rules apply to both single and double-precision floating point
|
The following rules apply to both single and double-precision floating point
|
||||||
instructions:
|
instructions:
|
||||||
|
|
||||||
|
@ -762,6 +885,101 @@ instructions:
|
||||||
Instructions that operate on a [eq]#NaN# may: not result in a [eq]#NaN#.
|
Instructions that operate on a [eq]#NaN# may: not result in a [eq]#NaN#.
|
||||||
* Support for signaling [eq]##NaN##s is optional: and exceptions are never
|
* Support for signaling [eq]##NaN##s is optional: and exceptions are never
|
||||||
raised.
|
raised.
|
||||||
|
endif::VK_KHR_shader_float_controls[]
|
||||||
|
|
||||||
|
ifdef::VK_KHR_shader_float_controls[]
|
||||||
|
The following rules apply to half, single, and double-precision floating
|
||||||
|
point instructions:
|
||||||
|
|
||||||
|
* Positive and negative infinities and positive and negative zeros are
|
||||||
|
generated as dictated by <<ieee-754,IEEE 754>>, but subject to the
|
||||||
|
precisions allowed in the following table.
|
||||||
|
* Dividing a non-zero by a zero results in the appropriately signed
|
||||||
|
<<ieee-754,IEEE 754>> infinity.
|
||||||
|
* Signaling [eq]##NaN##s are not required to be generated and exceptions
|
||||||
|
are never raised.
|
||||||
|
Signaling [eq]##NaN## may: be converted to quiet [eq]##NaN##s values by
|
||||||
|
any floating point instruction.
|
||||||
|
* By default, the implementation may: perform optimizations on half,
|
||||||
|
single, or double-precision floating-point instructions respectively
|
||||||
|
that ignore sign of a zero, or assume that arguments and results are not
|
||||||
|
[eq]##Nan##s or latexmath:[\pm\infty], this doesn't apply to
|
||||||
|
code:OpIsNan and code:OpIsInf, which must: always correctly detect
|
||||||
|
[eq]##Nan##s and latexmath:[\pm\infty].
|
||||||
|
If the entry point is declared with the code:SignedZeroInfNanPreserve
|
||||||
|
execution mode, then sign of a zero, [eq]##Nan##s, and
|
||||||
|
latexmath:[\pm\infty] must: not be ignored.
|
||||||
|
** The following core SPIR-V instructions must: respect the
|
||||||
|
code:SignedZeroInfNanPreserve execution mode: code:OpPhi,
|
||||||
|
code:OpSelect, code:OpReturnValue, code:OpVectorExtractDynamic,
|
||||||
|
code:OpVectorInsertDynamic, code:OpVectorShuffle,
|
||||||
|
code:OpCompositeConstruct, code:OpCompositeExtract,
|
||||||
|
code:OpCompositeInsert, code:OpCopyObject, code:OpTranspose,
|
||||||
|
code:OpFConvert, code:OpFNegate, code:OpFAdd, code:OpFSub, code:OpFMul,
|
||||||
|
code:OpStore.
|
||||||
|
This execution mode must: also be respected by code:OpLoad except for
|
||||||
|
loads from the code:Input storage class in the fragment shader stage
|
||||||
|
with the floating-point result type.
|
||||||
|
Other SPIR-V instruction may: also respect the
|
||||||
|
code:SignedZeroInfNanPreserve execution mode.
|
||||||
|
* Denormalized values are supported.
|
||||||
|
** By default, any half, single, or double-precision denormalized value
|
||||||
|
input into a shader or potentially generated by any instruction or any
|
||||||
|
extended instructions for GLSL in a shader may: be flushed to zero.
|
||||||
|
** If the entry point is declared with the code:DenormFlushToZero
|
||||||
|
execution mode then for the affected instuctions the denormalized
|
||||||
|
result must: be flushed to zero and the denormalized operands may: be
|
||||||
|
flushed to zero.
|
||||||
|
Denormalized values obtained via unpacking an integer into a vector of
|
||||||
|
values with smaller bit width and interpreting those values as
|
||||||
|
floating-point numbers must: be flushed to zero.
|
||||||
|
** The following core SPIR-V instructions must: respect the
|
||||||
|
code:DenormFlushToZero execution mode: code:OpSpecConstantOp (except
|
||||||
|
when the opcode is code:OpQuantizeToF16), code:OpFConvert,
|
||||||
|
code:OpFNegate, code:OpFAdd, code:OpFSub, code:OpFMul, code:OpFDiv,
|
||||||
|
code:OpFRem, code:OpFMod, code:OpVectorTimesScalar,
|
||||||
|
code:OpMatrixTimesScalar, code:OpVectorTimesMatrix,
|
||||||
|
code:OpMatrixTimesVector, code:OpMatrixTimesMatrix,
|
||||||
|
code:OpOuterProduct, code:OpDot; and the following extended
|
||||||
|
instructions for GLSL: code:Round, code:RoundEven, code:Trunc,
|
||||||
|
code:FAbs, code:Floor, code:Ceil, code:Fract, code:Radians,
|
||||||
|
code:Degrees, code:Sin, code:Cos, code:Tan, code:Asin, code:Acos,
|
||||||
|
code:Atan, code:Sinh, code:Cosh, code:Tanh, code:Asinh, code:Acosh,
|
||||||
|
code:Atanh, code:Atan2, code:Pow, code:Exp, code:Log, code:Exp2,
|
||||||
|
code:Log2, code:Sqrt, code:InverseSqrt, code:Determinant,
|
||||||
|
code:MatrixInverse, code:Modf, code:ModfStruct, code:FMin, code:FMax,
|
||||||
|
code:FClamp, code:FMix, code:Step, code:SmoothStep, code:Fma,
|
||||||
|
code:UnpackHalf2x16, code:UnpackDouble2x32, code:Length, code:Distance,
|
||||||
|
code:Cross, code:Normalize, code:FaceForward, code:Reflect,
|
||||||
|
code:Refract, code:NMin, code:NMax, code:NClamp.
|
||||||
|
Other SPIR-V instruction may: also respect the code:DenormFlushToZero
|
||||||
|
execution mode.
|
||||||
|
** The following core SPIR-V instructions must: respect the
|
||||||
|
code:DenormPreserve execution mode: code:OpPhi, code:OpSelect,
|
||||||
|
code:OpReturnValue, code:OpVectorExtractDynamic,
|
||||||
|
code:OpVectorInsertDynamic, code:OpVectorShuffle,
|
||||||
|
code:OpCompositeConstruct, code:OpCompositeExtract,
|
||||||
|
code:OpCompositeInsert, code:OpCopyObject, code:OpTranspose,
|
||||||
|
code:OpStore, code:OpSpecConstantOp, code:OpFConvert, code:OpFNegate,
|
||||||
|
code:OpFAdd, code:OpFSub, code:OpFMul, code:OpVectorTimesScalar,
|
||||||
|
code:OpMatrixTimesScalar, code:OpVectorTimesMatrix,
|
||||||
|
code:OpMatrixTimesVector, code:OpMatrixTimesMatrix,
|
||||||
|
code:OpOuterProduct, code:OpDot, code:OpFOrdEqual, code:OpFUnordEqual,
|
||||||
|
code:OpFOrdNotEqual, code:OpFUnordNotEqual, code:OpFOrdLessThan,
|
||||||
|
code:OpFUnordLessThan, code:OpFOrdGreaterThan,
|
||||||
|
code:OpFUnordGreaterThan, code:OpFOrdLessThanEqual,
|
||||||
|
code:OpFUnordLessThanEqual, code:OpFOrdGreaterThanEqual,
|
||||||
|
code:OpFUnordGreaterThanEqual; and the following extended instructions
|
||||||
|
for GLSL: code:FAbs, code:FSign, code:Radians, code:Degrees, code:FMin,
|
||||||
|
code:FMax, code:FClamp, code:FMix, code:Fma, code:PackHalf2x16,
|
||||||
|
code:PackDouble2x32, code:UnpackHalf2x16, code:UnpackDouble2x32,
|
||||||
|
code:NMin, code:NMax, code:NClamp.
|
||||||
|
This execution mode must: also be respected by code:OpLoad except for
|
||||||
|
loads from the code:Input storage class in the fragment shader stage
|
||||||
|
with the floating-point result type.
|
||||||
|
Other SPIR-V instruction may: also respect the code:DenormPreserve
|
||||||
|
execution mode.
|
||||||
|
endif::VK_KHR_shader_float_controls[]
|
||||||
|
|
||||||
The precision of double-precision instructions is at least that of single
|
The precision of double-precision instructions is at least that of single
|
||||||
precision.
|
precision.
|
||||||
|
@ -773,8 +991,18 @@ error bound in ULP, or as inherited from a formula as follows.
|
||||||
Operations described as "`correctly rounded`" will return the infinitely
|
Operations described as "`correctly rounded`" will return the infinitely
|
||||||
precise result, [eq]#x#, rounded so as to be representable in
|
precise result, [eq]#x#, rounded so as to be representable in
|
||||||
floating-point.
|
floating-point.
|
||||||
The rounding mode used is not defined but if [eq]#x# is exactly
|
ifdef::VK_KHR_shader_float_controls[]
|
||||||
representable then [eq]#x# will be returned.
|
The rounding mode is not specified, unless the entry point is declared with
|
||||||
|
the code:RoundingModeRTE or the code:RoundingModeRTZ execution mode.
|
||||||
|
These execution modes affect only correctly rounded SPIR-V instructions.
|
||||||
|
These execution modes do not affect code:OpQuantizeToF16.
|
||||||
|
If the rounding mode is not specified then this rounding is implementation
|
||||||
|
specific, subject to the following rules.
|
||||||
|
endif::VK_KHR_shader_float_controls[]
|
||||||
|
ifndef::VK_KHR_shader_float_controls[]
|
||||||
|
The rounding mode used is not defined but must: obey the following rules.
|
||||||
|
endif::VK_KHR_shader_float_controls[]
|
||||||
|
If [eq]#x# is exactly representable then [eq]#x# will be returned.
|
||||||
Otherwise, either the floating-point value closest to and no less than
|
Otherwise, either the floating-point value closest to and no less than
|
||||||
[eq]#x# or the value closest to and no greater than [eq]#x# will be
|
[eq]#x# or the value closest to and no greater than [eq]#x# will be
|
||||||
returned.
|
returned.
|
||||||
|
@ -813,7 +1041,170 @@ be [eq]#F~max~# and the smallest be [eq]#F~min~#.
|
||||||
The operation must return a value in the range [eq]#[x - E, x + E]# where
|
The operation must return a value in the range [eq]#[x - E, x + E]# where
|
||||||
latexmath:[E = \mathrm{max} \left( | x - F_{\mathrm{min}} |, | x -
|
latexmath:[E = \mathrm{max} \left( | x - F_{\mathrm{min}} |, | x -
|
||||||
F_{\mathrm{max}} | \right) ].
|
F_{\mathrm{max}} | \right) ].
|
||||||
|
ifdef::VK_KHR_shader_float_controls[]
|
||||||
|
If the entry point is declared with the code:DenormFlushToZero execution
|
||||||
|
mode, then any intermediate denormal value(s) while evaluating the formula
|
||||||
|
may: be flushed to zero.
|
||||||
|
Denormal final results must: be flushed to zero.
|
||||||
|
If the entry point is declared with the code:DenormPreserve execution mode,
|
||||||
|
then denormals must: be preserved throughout the formula.
|
||||||
|
endif::VK_KHR_shader_float_controls[]
|
||||||
|
|
||||||
|
ifdef::VK_KHR_shader_float16_int8[]
|
||||||
|
For half- (16 bit) and single- (32 bit) precision instructions, precisions
|
||||||
|
are required: to be at least as follows:
|
||||||
|
|
||||||
|
.Precision of core SPIR-V Instructions
|
||||||
|
[options="header", cols=",,"]
|
||||||
|
|====
|
||||||
|
| Instruction
|
||||||
|
| Single precision, unless decorated with RelaxedPrecision | Half precision
|
||||||
|
| code:OpFAdd
|
||||||
|
2+| Correctly rounded.
|
||||||
|
| code:OpFSub
|
||||||
|
2+| Correctly rounded.
|
||||||
|
| code:OpFMul
|
||||||
|
2+| Correctly rounded.
|
||||||
|
| code:OpDot(x, y)
|
||||||
|
2+| Inherited from latexmath:[\sum_{i = 0}^{n - 1} x_{i} \times y_{i}].
|
||||||
|
| code:OpFOrdEqual, code:OpFUnordEqual
|
||||||
|
2+| Correct result.
|
||||||
|
| code:OpFOrdLessThan, code:OpFUnordLessThan
|
||||||
|
2+| Correct result.
|
||||||
|
| code:OpFOrdGreaterThan, code:OpFUnordGreaterThan
|
||||||
|
2+| Correct result.
|
||||||
|
| code:OpFOrdLessThanEqual, code:OpFUnordLessThanEqual
|
||||||
|
2+| Correct result.
|
||||||
|
| code:OpFOrdGreaterThanEqual, code:OpFUnordGreaterThanEqual
|
||||||
|
2+| Correct result.
|
||||||
|
| code:OpFDiv(x,y)
|
||||||
|
| 2.5 ULP for y in the range [2^-126^, 2^126^]. | 2.5 ULP for y in the range [2^-14^, 2^14^].
|
||||||
|
| code:OpFRem(x,y)
|
||||||
|
| Inherited from [eq]#x - y {times} trunc(x/y)#, for y in the range [2^-126^, 2^126^].
|
||||||
|
| Inherited from [eq]#x - y {times} trunc(x/y)#, for y in the range [2^-14^, 2^14^].
|
||||||
|
| code:OpFMod(x,y)
|
||||||
|
| Inherited from [eq]#x - y {times} floor(x/y)#, for y in the range [2^-126^, 2^126^].
|
||||||
|
| Inherited from [eq]#x - y {times} floor(x/y)#, for y in the range [2^-14^, 2^14^].
|
||||||
|
| conversions between types
|
||||||
|
2+| Correctly rounded.
|
||||||
|
|====
|
||||||
|
|
||||||
|
[NOTE]
|
||||||
|
.Note
|
||||||
|
====
|
||||||
|
The code:OpFRem and code:OpFMod instructions use cheap approximations of
|
||||||
|
remainder, and the error can be large due to the discontinuity in trunc()
|
||||||
|
and floor().
|
||||||
|
This can produce mathematically unexpected results in some cases, such as
|
||||||
|
FMod(x,x) computing x rather than 0, and can also cause the result to have a
|
||||||
|
different sign than the infinitely precise result.
|
||||||
|
====
|
||||||
|
|
||||||
|
.Precision of GLSL.std.450 Instructions
|
||||||
|
[options="header", cols=",,"]
|
||||||
|
|====
|
||||||
|
|Instruction
|
||||||
|
| Single precision, unless decorated with RelaxedPrecision | Half precision
|
||||||
|
| code:fma()
|
||||||
|
2+| Inherited from code:OpFMul followed by code:OpFAdd.
|
||||||
|
| code:exp(x), code:exp2(x)
|
||||||
|
| [eq]#3 + 2 {times} {vert}x{vert}# ULP. | [eq]#1 + 2 {times} {vert}x{vert}# ULP.
|
||||||
|
| code:log(), code:log2()
|
||||||
|
| 3 ULP outside the range [eq]#[0.5, 2.0]#. Absolute error < [eq]#2^-21^# inside the range [eq]#[0.5, 2.0]#.
|
||||||
|
| 3 ULP outside the range [eq]#[0.5, 2.0]#. Absolute error < [eq]#2^-7^# inside the range [eq]#[0.5, 2.0]#.
|
||||||
|
| code:pow(x, y)
|
||||||
|
2+| Inherited from code:exp2(y {times} code:log2(x)).
|
||||||
|
| code:sqrt()
|
||||||
|
2+| Inherited from 1.0 / code:inversesqrt().
|
||||||
|
| code:inversesqrt()
|
||||||
|
2+| 2 ULP.
|
||||||
|
| code:radians(x)
|
||||||
|
2+| Inherited from latexmath:[\frac{x \times \pi}{180}].
|
||||||
|
| code:degrees(x)
|
||||||
|
2+| Inherited from latexmath:[\frac{x \times 180}{\pi}].
|
||||||
|
| code:sin()
|
||||||
|
| Absolute error latexmath:[\leq 2^{-11}] inside the range latexmath:[[-\pi, \pi\]]. | Absolute error latexmath:[\leq 2^{-7}] inside the range latexmath:[[-\pi, \pi\]].
|
||||||
|
| code:cos()
|
||||||
|
| Absolute error latexmath:[\leq 2^{-11}] inside the range latexmath:[[-\pi, \pi\]]. | Absolute error latexmath:[\leq 2^{-7}] inside the range latexmath:[[-\pi, \pi\]].
|
||||||
|
| code:tan()
|
||||||
|
2+| Inherited from latexmath:[\frac{sin()}{cos()}].
|
||||||
|
| code:asin(x)
|
||||||
|
2+| Inherited from latexmath:[atan2(x, sqrt(1.0 - x^2))].
|
||||||
|
| code:acos(x)
|
||||||
|
2+| Inherited from latexmath:[atan2(sqrt(1.0 - x^2), x)].
|
||||||
|
| code:atan(), code:atan2()
|
||||||
|
| 4096 ULP | 5 ULP.
|
||||||
|
| code:sinh(x)
|
||||||
|
2+| Inherited from latexmath:[(exp(x) - exp(-x)) \times 0.5].
|
||||||
|
| code:cosh(x)
|
||||||
|
2+| Inherited from latexmath:[(exp(x) + exp(-x)) \times 0.5].
|
||||||
|
| code:tanh()
|
||||||
|
2+| Inherited from latexmath:[\frac{sinh()}{cosh()}].
|
||||||
|
| code:asinh(x)
|
||||||
|
2+| Inherited from latexmath:[log(x + sqrt(x^2 + 1.0))].
|
||||||
|
| code:acosh(x)
|
||||||
|
2+| Inherited from latexmath:[log(x + sqrt(x^2 - 1.0))].
|
||||||
|
| code:atanh(x)
|
||||||
|
2+| Inherited from latexmath:[log(\frac{1.0 + x}{1.0 - x}) \times 0.5].
|
||||||
|
| code:frexp()
|
||||||
|
2+| Correctly rounded.
|
||||||
|
| code:ldexp()
|
||||||
|
2+| Correctly rounded.
|
||||||
|
| code:length(x)
|
||||||
|
2+| Inherited from latexmath:[sqrt(dot(x, x))].
|
||||||
|
| code:distance(x, y)
|
||||||
|
2+| Inherited from latexmath:[length(x - y)].
|
||||||
|
| code:cross()
|
||||||
|
2+| Inherited from [eq]#code:OpFSub(code:OpFMul, code:OpFMul)#.
|
||||||
|
| code:normalize(x)
|
||||||
|
2+| Inherited from latexmath:[\frac{x}{length(x)}].
|
||||||
|
| code:faceforward
|
||||||
|
2+| Correctly rounded.
|
||||||
|
| code:reflect(x, y)
|
||||||
|
2+| Inherited from [eq]#x - 2.0 {times} code:dot(y, x) {times} y#.
|
||||||
|
| code:refract(I, N, eta)
|
||||||
|
2+| Inherited from [eq]#eta {times} I - (eta {times} code:dot(N, I) + code:sqrt(k)) {times} N#.
|
||||||
|
| code:round
|
||||||
|
2+| Correctly rounded.
|
||||||
|
| code:roundEven
|
||||||
|
2+| Correctly rounded.
|
||||||
|
| code:trunc
|
||||||
|
2+| Correctly rounded.
|
||||||
|
| code:fabs
|
||||||
|
2+| Correctly rounded.
|
||||||
|
| code:fsign
|
||||||
|
2+| Correctly rounded.
|
||||||
|
| code:floor
|
||||||
|
2+| Correctly rounded.
|
||||||
|
| code:ceil
|
||||||
|
2+| Correctly rounded.
|
||||||
|
| code:fract
|
||||||
|
2+| Correctly rounded.
|
||||||
|
| code:modf
|
||||||
|
2+| Correctly rounded.
|
||||||
|
| code:fmin
|
||||||
|
2+| Correctly rounded.
|
||||||
|
| code:fmax
|
||||||
|
2+| Correctly rounded.
|
||||||
|
| code:fclamp
|
||||||
|
2+| Correctly rounded.
|
||||||
|
| code:fmix(x, y, a)
|
||||||
|
2+| Inherited from [eq]#x {times} (1.0 - a) + y {times} a#.
|
||||||
|
| code:step
|
||||||
|
2+| Correctly rounded.
|
||||||
|
| code:smoothStep(edge0, edge1, x)
|
||||||
|
2+| Inherited from [eq]#t {times} t {times} (3.0 - 2.0 {times} t)#,
|
||||||
|
where latexmath:[t = clamp(\frac{x - edge0}{edge1 - edge0}, 0.0, 1.0)].
|
||||||
|
| code:nmin
|
||||||
|
2+| Correctly rounded.
|
||||||
|
| code:nmax
|
||||||
|
2+| Correctly rounded.
|
||||||
|
| code:nclamp
|
||||||
|
2+| Correctly rounded.
|
||||||
|
|====
|
||||||
|
endif::VK_KHR_shader_float16_int8[]
|
||||||
|
|
||||||
|
ifndef::VK_KHR_shader_float16_int8[]
|
||||||
For single precision (32 bit) instructions, precisions are required: to be
|
For single precision (32 bit) instructions, precisions are required: to be
|
||||||
at least as follows, unless decorated with RelaxedPrecision:
|
at least as follows, unless decorated with RelaxedPrecision:
|
||||||
|
|
||||||
|
@ -844,6 +1235,7 @@ at least as follows, unless decorated with RelaxedPrecision:
|
||||||
| code:sqrt() | Inherited from 1.0 / code:inversesqrt().
|
| code:sqrt() | Inherited from 1.0 / code:inversesqrt().
|
||||||
| code:inversesqrt() | 2 ULP.
|
| code:inversesqrt() | 2 ULP.
|
||||||
|====
|
|====
|
||||||
|
endif::VK_KHR_shader_float16_int8[]
|
||||||
|
|
||||||
GLSL.std.450 extended instructions specifically defined in terms of the
|
GLSL.std.450 extended instructions specifically defined in terms of the
|
||||||
above instructions inherit the above errors.
|
above instructions inherit the above errors.
|
||||||
|
|
|
@ -44,8 +44,11 @@ include::../api/protos/vkSetDebugUtilsObjectNameEXT.txt[]
|
||||||
|
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
* pname:pNameInfo\->pname:objectType must: not be ename:VK_OBJECT_TYPE_UNKNOWN
|
* [[VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-02587]]
|
||||||
* pname:pNameInfo\->pname:objectHandle must: not be dlink:VK_NULL_HANDLE
|
pname:pNameInfo\->pname:objectType must: not be
|
||||||
|
ename:VK_OBJECT_TYPE_UNKNOWN
|
||||||
|
* [[VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-02588]]
|
||||||
|
pname:pNameInfo\->pname:objectHandle must: not be dlink:VK_NULL_HANDLE
|
||||||
****
|
****
|
||||||
|
|
||||||
include::../validity/protos/vkSetDebugUtilsObjectNameEXT.txt[]
|
include::../validity/protos/vkSetDebugUtilsObjectNameEXT.txt[]
|
||||||
|
@ -74,12 +77,13 @@ removed.
|
||||||
|
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
* If pname:objectType is ename:VK_OBJECT_TYPE_UNKNOWN,
|
* [[VUID-VkDebugUtilsObjectNameInfoEXT-objectType-02589]]
|
||||||
pname:objectHandle must: not be dlink:VK_NULL_HANDLE
|
If pname:objectType is ename:VK_OBJECT_TYPE_UNKNOWN, pname:objectHandle
|
||||||
* If pname:objectType is not ename:VK_OBJECT_TYPE_UNKNOWN,
|
must: not be dlink:VK_NULL_HANDLE
|
||||||
pname:objectHandle must: be dlink:VK_NULL_HANDLE or
|
* [[VUID-VkDebugUtilsObjectNameInfoEXT-objectType-02590]]
|
||||||
a valid Vulkan handle of the type associated with pname:objectType
|
If pname:objectType is not ename:VK_OBJECT_TYPE_UNKNOWN,
|
||||||
as defined in the
|
pname:objectHandle must: be dlink:VK_NULL_HANDLE or a valid Vulkan
|
||||||
|
handle of the type associated with pname:objectType as defined in the
|
||||||
<<debugging-object-types, VkObjectType and Vulkan Handle Relationship>>
|
<<debugging-object-types, VkObjectType and Vulkan Handle Relationship>>
|
||||||
table
|
table
|
||||||
****
|
****
|
||||||
|
@ -143,9 +147,8 @@ be used by that implementation.
|
||||||
pname:objectType must: not be ename:VK_OBJECT_TYPE_UNKNOWN
|
pname:objectType must: not be ename:VK_OBJECT_TYPE_UNKNOWN
|
||||||
* [[VUID-VkDebugUtilsObjectTagInfoEXT-objectHandle-01910]]
|
* [[VUID-VkDebugUtilsObjectTagInfoEXT-objectHandle-01910]]
|
||||||
pname:objectHandle must: be a valid Vulkan handle of the type associated
|
pname:objectHandle must: be a valid Vulkan handle of the type associated
|
||||||
with pname:objectType as defined in the
|
with pname:objectType as defined in the <<debugging-object-types,
|
||||||
<<debugging-object-types, VkObjectType and Vulkan Handle Relationship>>
|
VkObjectType and Vulkan Handle Relationship>> table
|
||||||
table
|
|
||||||
****
|
****
|
||||||
|
|
||||||
include::../validity/structs/VkDebugUtilsObjectTagInfoEXT.txt[]
|
include::../validity/structs/VkDebugUtilsObjectTagInfoEXT.txt[]
|
||||||
|
@ -385,8 +388,8 @@ include::../api/protos/vkCreateDebugUtilsMessengerEXT.txt[]
|
||||||
|
|
||||||
include::../validity/protos/vkCreateDebugUtilsMessengerEXT.txt[]
|
include::../validity/protos/vkCreateDebugUtilsMessengerEXT.txt[]
|
||||||
|
|
||||||
The application must: ensure that flink:vkCreateDebugUtilsMessengerEXT is not
|
The application must: ensure that flink:vkCreateDebugUtilsMessengerEXT is
|
||||||
executed in parallel with any Vulkan command that is also called with
|
not executed in parallel with any Vulkan command that is also called with
|
||||||
pname:instance or child of pname:instance as the dispatchable argument.
|
pname:instance or child of pname:instance as the dispatchable argument.
|
||||||
|
|
||||||
--
|
--
|
||||||
|
@ -677,7 +680,8 @@ registered.
|
||||||
|
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
* pname:objectType member of each element of
|
* [[VUID-vkSubmitDebugUtilsMessageEXT-objectType-02591]]
|
||||||
|
pname:objectType member of each element of
|
||||||
pname:pCallbackData\->pname:pObjects must: not be
|
pname:pCallbackData\->pname:pObjects must: not be
|
||||||
ename:VK_OBJECT_TYPE_UNKNOWN
|
ename:VK_OBJECT_TYPE_UNKNOWN
|
||||||
****
|
****
|
||||||
|
@ -715,8 +719,8 @@ include::../api/protos/vkDestroyDebugUtilsMessengerEXT.txt[]
|
||||||
|
|
||||||
include::../validity/protos/vkDestroyDebugUtilsMessengerEXT.txt[]
|
include::../validity/protos/vkDestroyDebugUtilsMessengerEXT.txt[]
|
||||||
|
|
||||||
The application must: ensure that flink:vkDestroyDebugUtilsMessengerEXT is not
|
The application must: ensure that flink:vkDestroyDebugUtilsMessengerEXT is
|
||||||
executed in parallel with any Vulkan command that is also called with
|
not executed in parallel with any Vulkan command that is also called with
|
||||||
pname:instance or child of pname:instance as the dispatchable argument.
|
pname:instance or child of pname:instance as the dispatchable argument.
|
||||||
|
|
||||||
--
|
--
|
||||||
|
|
|
@ -343,10 +343,9 @@ endif::VK_VERSION_1_1,VK_KHR_device_group[]
|
||||||
must: be a non-retired swapchain associated with native window referred
|
must: be a non-retired swapchain associated with native window referred
|
||||||
to by pname:surface
|
to by pname:surface
|
||||||
* [[VUID-VkSwapchainCreateInfoKHR-imageFormat-01778]]
|
* [[VUID-VkSwapchainCreateInfoKHR-imageFormat-01778]]
|
||||||
pname:imageFormat, pname:imageUsage, pname:imageExtent, and
|
The <<swapchain-wsi-image-create-info, implied image creation
|
||||||
pname:imageArrayLayers must: be supported for ename:VK_IMAGE_TYPE_2D
|
parameters>> of the swapchain must: be supported as reported by
|
||||||
ename:VK_IMAGE_TILING_OPTIMAL images as reported by
|
flink:vkGetPhysicalDeviceImageFormatProperties
|
||||||
flink:vkGetPhysicalDeviceImageFormatProperties.
|
|
||||||
ifdef::VK_KHR_swapchain_mutable_format[]
|
ifdef::VK_KHR_swapchain_mutable_format[]
|
||||||
* [[VUID-VkSwapchainCreateInfoKHR-flags-03168]]
|
* [[VUID-VkSwapchainCreateInfoKHR-flags-03168]]
|
||||||
If pname:flags contains ename:VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR
|
If pname:flags contains ename:VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR
|
||||||
|
|
|
@ -82,8 +82,8 @@ Derivatives>>.
|
||||||
****
|
****
|
||||||
* [[VUID-VkRayTracingPipelineCreateInfoNV-flags-02404]]
|
* [[VUID-VkRayTracingPipelineCreateInfoNV-flags-02404]]
|
||||||
If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT
|
If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT
|
||||||
flag, and pname:basePipelineIndex is `-1`, pname:basePipelineHandle must:
|
flag, and pname:basePipelineIndex is `-1`, pname:basePipelineHandle
|
||||||
be a valid handle to a ray tracing sname:VkPipeline
|
must: be a valid handle to a ray tracing sname:VkPipeline
|
||||||
* [[VUID-VkRayTracingPipelineCreateInfoNV-flags-02405]]
|
* [[VUID-VkRayTracingPipelineCreateInfoNV-flags-02405]]
|
||||||
If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT
|
If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT
|
||||||
flag, and pname:basePipelineHandle is dlink:VK_NULL_HANDLE,
|
flag, and pname:basePipelineHandle is dlink:VK_NULL_HANDLE,
|
||||||
|
|
|
@ -75,9 +75,8 @@ include::../../api/structs/VkAccelerationStructureCreateInfoNV.txt[]
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
* [[VUID-VkAccelerationStructureCreateInfoNV-compactedSize-02421]]
|
* [[VUID-VkAccelerationStructureCreateInfoNV-compactedSize-02421]]
|
||||||
If pname:compactedSize is not `0` then both
|
If pname:compactedSize is not `0` then both pname:info.geometryCount and
|
||||||
pname:info.geometryCount and pname:info.instanceCount
|
pname:info.instanceCount must: be `0`
|
||||||
must: be `0`
|
|
||||||
****
|
****
|
||||||
|
|
||||||
include::../../validity/structs/VkAccelerationStructureCreateInfoNV.txt[]
|
include::../../validity/structs/VkAccelerationStructureCreateInfoNV.txt[]
|
||||||
|
@ -127,7 +126,8 @@ flink:vkCmdBuildAccelerationStructureNV.
|
||||||
* [[VUID-VkAccelerationStructureInfoNV-type-02426]]
|
* [[VUID-VkAccelerationStructureInfoNV-type-02426]]
|
||||||
If pname:type is ename:VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV
|
If pname:type is ename:VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV
|
||||||
then pname:instanceCount must: be `0`
|
then pname:instanceCount must: be `0`
|
||||||
* If pname:flags has the
|
* [[VUID-VkAccelerationStructureInfoNV-flags-02592]]
|
||||||
|
If pname:flags has the
|
||||||
ename:VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV bit set,
|
ename:VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV bit set,
|
||||||
then it must: not have the
|
then it must: not have the
|
||||||
ename:VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV bit set
|
ename:VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV bit set
|
||||||
|
@ -511,18 +511,21 @@ include::../../api/structs/VkBindAccelerationStructureMemoryInfoNV.txt[]
|
||||||
object
|
object
|
||||||
* [[VUID-VkBindAccelerationStructureMemoryInfoNV-memoryOffset-02451]]
|
* [[VUID-VkBindAccelerationStructureMemoryInfoNV-memoryOffset-02451]]
|
||||||
pname:memoryOffset must: be less than the size of pname:memory
|
pname:memoryOffset must: be less than the size of pname:memory
|
||||||
* pname:memory must: have been allocated using one of the memory types
|
* [[VUID-VkBindAccelerationStructureMemoryInfoNV-memory-02593]]
|
||||||
|
pname:memory must: have been allocated using one of the memory types
|
||||||
allowed in the pname:memoryTypeBits member of the
|
allowed in the pname:memoryTypeBits member of the
|
||||||
slink:VkMemoryRequirements structure returned from a call to
|
slink:VkMemoryRequirements structure returned from a call to
|
||||||
flink:vkGetAccelerationStructureMemoryRequirementsNV with
|
flink:vkGetAccelerationStructureMemoryRequirementsNV with
|
||||||
pname:accelerationStructure and pname:type of
|
pname:accelerationStructure and pname:type of
|
||||||
ename:VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV
|
ename:VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV
|
||||||
* pname:memoryOffset must: be an integer multiple of the pname:alignment
|
* [[VUID-VkBindAccelerationStructureMemoryInfoNV-memoryOffset-02594]]
|
||||||
|
pname:memoryOffset must: be an integer multiple of the pname:alignment
|
||||||
member of the slink:VkMemoryRequirements structure returned from a call
|
member of the slink:VkMemoryRequirements structure returned from a call
|
||||||
to flink:vkGetAccelerationStructureMemoryRequirementsNV with
|
to flink:vkGetAccelerationStructureMemoryRequirementsNV with
|
||||||
pname:accelerationStructure and pname:type of
|
pname:accelerationStructure and pname:type of
|
||||||
ename:VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV
|
ename:VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV
|
||||||
* The pname:size member of the sname:VkMemoryRequirements structure
|
* [[VUID-VkBindAccelerationStructureMemoryInfoNV-size-02595]]
|
||||||
|
The pname:size member of the sname:VkMemoryRequirements structure
|
||||||
returned from a call to
|
returned from a call to
|
||||||
flink:vkGetAccelerationStructureMemoryRequirementsNV with
|
flink:vkGetAccelerationStructureMemoryRequirementsNV with
|
||||||
pname:accelerationStructure and pname:type of
|
pname:accelerationStructure and pname:type of
|
||||||
|
|
|
@ -23,8 +23,8 @@ Interaction between the different shader stages in the ray tracing pipeline
|
||||||
== Ray Tracing Commands
|
== Ray Tracing Commands
|
||||||
_Ray tracing commands_ provoke work in the ray tracing pipeline.
|
_Ray tracing commands_ provoke work in the ray tracing pipeline.
|
||||||
Ray tracing commands are recorded into a command buffer and when executed by
|
Ray tracing commands are recorded into a command buffer and when executed by
|
||||||
a queue will produce work that executes according to the currently bound
|
a queue will produce work that executes according to the currently bound ray
|
||||||
ray tracing pipeline.
|
tracing pipeline.
|
||||||
A ray tracing pipeline must: be bound to a command buffer before any ray
|
A ray tracing pipeline must: be bound to a command buffer before any ray
|
||||||
tracing commands are recorded in that command buffer.
|
tracing commands are recorded in that command buffer.
|
||||||
|
|
||||||
|
@ -404,7 +404,8 @@ bytes of data.
|
||||||
slink:VkGeometryInstanceFlagBitsNV values that apply to this instance.
|
slink:VkGeometryInstanceFlagBitsNV values that apply to this instance.
|
||||||
* pname:accelerationStructure.
|
* pname:accelerationStructure.
|
||||||
The 8 byte value returned by flink:vkGetAccelerationStructureHandleNV
|
The 8 byte value returned by flink:vkGetAccelerationStructureHandleNV
|
||||||
for the bottom level acceleration structure referred to by this instance.
|
for the bottom level acceleration structure referred to by this
|
||||||
|
instance.
|
||||||
|
|
||||||
[NOTE]
|
[NOTE]
|
||||||
.Note
|
.Note
|
||||||
|
@ -437,9 +438,9 @@ include::../../api/enums/VkGeometryInstanceFlagBitsNV.txt[]
|
||||||
* ename:VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV disables face
|
* ename:VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV disables face
|
||||||
culling for this instance.
|
culling for this instance.
|
||||||
* ename:VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV
|
* ename:VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV
|
||||||
indicates that the front face of the triangle for culling purposes
|
indicates that the front face of the triangle for culling purposes is
|
||||||
is the face that is counter clockwise in object space relative to the
|
the face that is counter clockwise in object space relative to the ray
|
||||||
ray origin.
|
origin.
|
||||||
Because the facing is determined in object space, an instance transform
|
Because the facing is determined in object space, an instance transform
|
||||||
matrix does not change the winding, but a geometry transform does.
|
matrix does not change the winding, but a geometry transform does.
|
||||||
* ename:VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV causes this instance to
|
* ename:VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV causes this instance to
|
||||||
|
@ -536,8 +537,8 @@ include::../../api/protos/vkCmdBuildAccelerationStructureNV.txt[]
|
||||||
If pname:update is ename:VK_TRUE, pname:src must: not be
|
If pname:update is ename:VK_TRUE, pname:src must: not be
|
||||||
ename:VK_NULL_HANDLE
|
ename:VK_NULL_HANDLE
|
||||||
* [[VUID-vkCmdBuildAccelerationStructureNV-update-02490]]
|
* [[VUID-vkCmdBuildAccelerationStructureNV-update-02490]]
|
||||||
If pname:update is ename:VK_TRUE, pname:src must: have been built before with
|
If pname:update is ename:VK_TRUE, pname:src must: have been built before
|
||||||
ename:VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV set in
|
with ename:VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV set in
|
||||||
slink:VkAccelerationStructureInfoNV::pname:flags
|
slink:VkAccelerationStructureInfoNV::pname:flags
|
||||||
* [[VUID-vkCmdBuildAccelerationStructureNV-update-02491]]
|
* [[VUID-vkCmdBuildAccelerationStructureNV-update-02491]]
|
||||||
If pname:update is ename:VK_FALSE, The pname:size member of the
|
If pname:update is ename:VK_FALSE, The pname:size member of the
|
||||||
|
|
|
@ -20,10 +20,10 @@ commands are recorded in that command buffer.
|
||||||
ifdef::VK_NV_mesh_shader[]
|
ifdef::VK_NV_mesh_shader[]
|
||||||
Drawing can be achieved in two modes:
|
Drawing can be achieved in two modes:
|
||||||
|
|
||||||
* <<drawing-mesh-shading,Programmable Mesh Shading>>, the mesh shader
|
* <<drawing-mesh-shading,Programmable Mesh Shading>>, the mesh shader
|
||||||
assembles primitives, or
|
assembles primitives, or
|
||||||
* <<drawing-primitive-shading,Programmable Primitive Shading>>, the input
|
* <<drawing-primitive-shading,Programmable Primitive Shading>>, the input
|
||||||
primitives are assembled
|
primitives are assembled
|
||||||
|
|
||||||
as follows.
|
as follows.
|
||||||
endif::VK_NV_mesh_shader[]
|
endif::VK_NV_mesh_shader[]
|
||||||
|
|
|
@ -383,19 +383,19 @@ binding for that vertex shader invocation are considered out of bounds.
|
||||||
* [[features-features-multiViewport]] pname:multiViewport specifies
|
* [[features-features-multiViewport]] pname:multiViewport specifies
|
||||||
whether more than one viewport is supported.
|
whether more than one viewport is supported.
|
||||||
If this feature is not enabled:
|
If this feature is not enabled:
|
||||||
** The pname:viewportCount and pname:scissorCount members of the
|
** The pname:viewportCount and pname:scissorCount members of the
|
||||||
sname:VkPipelineViewportStateCreateInfo structure must: be set to 1.
|
sname:VkPipelineViewportStateCreateInfo structure must: be set to 1.
|
||||||
** The pname:firstViewport and pname:viewportCount parameters to the
|
** The pname:firstViewport and pname:viewportCount parameters to the
|
||||||
fname:vkCmdSetViewport command must: be set to 0 and 1, respectively.
|
fname:vkCmdSetViewport command must: be set to 0 and 1, respectively.
|
||||||
** The pname:firstScissor and pname:scissorCount parameters to the
|
** The pname:firstScissor and pname:scissorCount parameters to the
|
||||||
fname:vkCmdSetScissor command must: be set to 0 and 1, respectively.
|
fname:vkCmdSetScissor command must: be set to 0 and 1, respectively.
|
||||||
ifdef::VK_NV_scissor_exclusive[]
|
ifdef::VK_NV_scissor_exclusive[]
|
||||||
** The pname:exclusiveScissorCount member of the
|
** The pname:exclusiveScissorCount member of the
|
||||||
sname:VkPipelineViewportExclusiveScissorStateCreateInfoNV structure
|
sname:VkPipelineViewportExclusiveScissorStateCreateInfoNV structure
|
||||||
must: be set to 0 or 1.
|
must: be set to 0 or 1.
|
||||||
** The pname:firstExclusiveScissor and pname:exclusiveScissorCount
|
** The pname:firstExclusiveScissor and pname:exclusiveScissorCount
|
||||||
parameters to the fname:vkCmdSetExclusiveScissorNV command must: be
|
parameters to the fname:vkCmdSetExclusiveScissorNV command must: be set
|
||||||
set to 0 and 1, respectively.
|
to 0 and 1, respectively.
|
||||||
endif::VK_NV_scissor_exclusive[]
|
endif::VK_NV_scissor_exclusive[]
|
||||||
* [[features-features-samplerAnisotropy]] pname:samplerAnisotropy
|
* [[features-features-samplerAnisotropy]] pname:samplerAnisotropy
|
||||||
specifies whether anisotropic filtering is supported.
|
specifies whether anisotropic filtering is supported.
|
||||||
|
@ -910,8 +910,6 @@ include::../validity/structs/VkPhysicalDeviceShaderAtomicInt64FeaturesKHR.txt[]
|
||||||
--
|
--
|
||||||
endif::VK_KHR_shader_atomic_int64[]
|
endif::VK_KHR_shader_atomic_int64[]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ifdef::VK_KHR_8bit_storage[]
|
ifdef::VK_KHR_8bit_storage[]
|
||||||
[open,refpage='VkPhysicalDevice8BitStorageFeaturesKHR',desc='Structure describing features supported by VK_KHR_8bit_storage',type='structs']
|
[open,refpage='VkPhysicalDevice8BitStorageFeaturesKHR',desc='Structure describing features supported by VK_KHR_8bit_storage',type='structs']
|
||||||
--
|
--
|
||||||
|
@ -1021,8 +1019,39 @@ include::../validity/structs/VkPhysicalDevice16BitStorageFeatures.txt[]
|
||||||
--
|
--
|
||||||
endif::VK_VERSION_1_1,VK_KHR_16bit_storage[]
|
endif::VK_VERSION_1_1,VK_KHR_16bit_storage[]
|
||||||
|
|
||||||
ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
ifdef::VK_KHR_shader_float16_int8[]
|
||||||
|
[open,refpage='VkPhysicalDeviceFloat16Int8FeaturesKHR',desc='Structure describing features supported by VK_KHR_shader_float16_int8',type='structs']
|
||||||
|
--
|
||||||
|
|
||||||
|
To query features additionally supported by the +VK_KHR_shader_float16_int8+
|
||||||
|
extension, call flink:vkGetPhysicalDeviceFeatures2KHR with a
|
||||||
|
sname:VkPhysicalDeviceFloat16Int8FeaturesKHR structure in the pname:pNext
|
||||||
|
chain.
|
||||||
|
The sname:VkPhysicalDeviceFloat16Int8FeaturesKHR structure can: also be in
|
||||||
|
the pname:pNext chain of a slink:VkDeviceCreateInfo structure, in which case
|
||||||
|
it controls which additional features are enabled in the device.
|
||||||
|
|
||||||
|
The sname:VkPhysicalDeviceFloat16Int8FeaturesKHR structure is defined as:
|
||||||
|
|
||||||
|
include::../api/structs/VkPhysicalDeviceFloat16Int8FeaturesKHR.txt[]
|
||||||
|
|
||||||
|
* pname:sType is the type of this structure.
|
||||||
|
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||||
|
* [[features-features-shaderFloat16]] pname:shaderFloat16 indicates
|
||||||
|
whether 16-bit floats (halfs) are supported in shader code.
|
||||||
|
This also indicates whether shader modules can: declare the code:Float16
|
||||||
|
capability.
|
||||||
|
* [[features-features-shaderInt8]] pname:shaderInt8 indicates whether
|
||||||
|
8-bit integers (signed and unsigned) are supported in shader code.
|
||||||
|
This also indicates whether shader modules can: declare the code:Int8
|
||||||
|
capability.
|
||||||
|
|
||||||
|
include::../validity/structs/VkPhysicalDeviceFloat16Int8FeaturesKHR.txt[]
|
||||||
|
|
||||||
|
--
|
||||||
|
endif::VK_KHR_shader_float16_int8[]
|
||||||
|
|
||||||
|
ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||||
[open,refpage='VkPhysicalDeviceSamplerYcbcrConversionFeatures',desc='Structure describing Y\'CbCr conversion features that can be supported by an implementation',type='structs']
|
[open,refpage='VkPhysicalDeviceSamplerYcbcrConversionFeatures',desc='Structure describing Y\'CbCr conversion features that can be supported by an implementation',type='structs']
|
||||||
--
|
--
|
||||||
|
|
||||||
|
@ -1501,7 +1530,6 @@ include::../api/structs/VkPhysicalDeviceVulkanMemoryModelFeaturesKHR.txt[]
|
||||||
code:VulkanMemoryModelDeviceScopeKHR capability.
|
code:VulkanMemoryModelDeviceScopeKHR capability.
|
||||||
|
|
||||||
include::../validity/structs/VkPhysicalDeviceVulkanMemoryModelFeaturesKHR.txt[]
|
include::../validity/structs/VkPhysicalDeviceVulkanMemoryModelFeaturesKHR.txt[]
|
||||||
|
|
||||||
--
|
--
|
||||||
endif::VK_KHR_vulkan_memory_model[]
|
endif::VK_KHR_vulkan_memory_model[]
|
||||||
|
|
||||||
|
@ -2334,9 +2362,18 @@ endif::VK_EXT_descriptor_indexing[]
|
||||||
fragment shader stage.
|
fragment shader stage.
|
||||||
* [[features-limits-maxComputeSharedMemorySize]]
|
* [[features-limits-maxComputeSharedMemorySize]]
|
||||||
pname:maxComputeSharedMemorySize is the maximum total storage size, in
|
pname:maxComputeSharedMemorySize is the maximum total storage size, in
|
||||||
bytes, of all variables declared with the code:WorkgroupLocal storage
|
bytes, available for variables declared with the code:Workgroup storage
|
||||||
class in shader modules (or with the code:shared storage qualifier in
|
class in shader modules (or with the code:shared storage qualifier in
|
||||||
GLSL) in the compute shader stage.
|
GLSL) in the compute shader stage.
|
||||||
|
The amount of storage consumed by the variables declared with the
|
||||||
|
code:Workgroup storage class is implementation-dependent.
|
||||||
|
However, the amount of storage consumed may not exceed the largest block
|
||||||
|
size that would be obtained if all active variables declared with
|
||||||
|
code:Workgroup storage class were assigned offsets in an arbitrary order
|
||||||
|
by successively taking the smallest valid offset according to the
|
||||||
|
<<interfaces-resources-layout-std430,Standard Storage Buffer Layout>>
|
||||||
|
rules.
|
||||||
|
(This is equivalent to using the GLSL std430 layout rules.)
|
||||||
* [[features-limits-maxComputeWorkGroupCount]]
|
* [[features-limits-maxComputeWorkGroupCount]]
|
||||||
pname:maxComputeWorkGroupCount[3] is the maximum number of local
|
pname:maxComputeWorkGroupCount[3] is the maximum number of local
|
||||||
workgroups that can: be dispatched by a single dispatch command.
|
workgroups that can: be dispatched by a single dispatch command.
|
||||||
|
@ -2761,6 +2798,134 @@ include::../validity/structs/VkPhysicalDeviceMultiviewProperties.txt[]
|
||||||
|
|
||||||
endif::VK_VERSION_1_1,VK_KHR_multiview[]
|
endif::VK_VERSION_1_1,VK_KHR_multiview[]
|
||||||
|
|
||||||
|
ifdef::VK_KHR_shader_float_controls[]
|
||||||
|
[open,refpage='VkPhysicalDeviceFloatControlsPropertiesKHR',desc='Structure describing properties supported by VK_KHR_shader_float_controls',type='structs']
|
||||||
|
--
|
||||||
|
|
||||||
|
The members of the sname:VkPhysicalDeviceFloatControlsPropertiesKHR
|
||||||
|
structure describe the following implementation-dependent limits:
|
||||||
|
|
||||||
|
include::../api/structs/VkPhysicalDeviceFloatControlsPropertiesKHR.txt[]
|
||||||
|
|
||||||
|
* [[features-features-separateDenormSettings]]
|
||||||
|
pname:separateDenormSettings is a boolean value indicating whether the
|
||||||
|
implementation supports separate settings for 16-bit and 64-bit
|
||||||
|
denormals.
|
||||||
|
* [[features-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-features-shaderSignedZeroInfNanPreserveFloat16]]
|
||||||
|
pname:shaderSignedZeroInfNanPreserveFloat16 is a boolean value
|
||||||
|
indicating whether sign of a zero, [eq]##Nan##s and
|
||||||
|
latexmath:[\pm\infty] can: be preserved in 16-bit floating-point
|
||||||
|
computations.
|
||||||
|
It also indicates whether the code:SignedZeroInfNanPreserve execution
|
||||||
|
mode can: be used for 16-bit floating-point types.
|
||||||
|
* [[features-features-shaderSignedZeroInfNanPreserveFloat32]]
|
||||||
|
pname:shaderSignedZeroInfNanPreserveFloat32 is a boolean value
|
||||||
|
indicating whether sign of a zero, [eq]##Nan##s and
|
||||||
|
latexmath:[\pm\infty] can: be preserved in 32-bit floating-point
|
||||||
|
computations.
|
||||||
|
It also indicates whether the code:SignedZeroInfNanPreserve execution
|
||||||
|
mode can: be used for 32-bit floating-point types.
|
||||||
|
* [[features-features-shaderSignedZeroInfNanPreserveFloat64]]
|
||||||
|
pname:shaderSignedZeroInfNanPreserveFloat64 is a boolean value
|
||||||
|
indicating whether sign of a zero, [eq]##Nan##s and
|
||||||
|
latexmath:[\pm\infty] can: be preserved in 64-bit floating-point
|
||||||
|
computations.
|
||||||
|
It also indicates whether the code:SignedZeroInfNanPreserve execution
|
||||||
|
mode can: be used for 64-bit floating-point types.
|
||||||
|
* [[features-features-shaderDenormPreserveFloat16]]
|
||||||
|
pname:shaderDenormPreserveFloat16 is a boolean value indicating whether
|
||||||
|
denormals can: be preserved in 16-bit floating-point computations.
|
||||||
|
It also indicates whether the code:DenormPreserve execution mode can: be
|
||||||
|
used for 16-bit floating-point types.
|
||||||
|
* [[features-features-shaderDenormPreserveFloat32]]
|
||||||
|
pname:shaderDenormPreserveFloat32 is a boolean value indicating whether
|
||||||
|
denormals can: be preserved in 32-bit floating-point computations.
|
||||||
|
It also indicates whether the code:DenormPreserve execution mode can: be
|
||||||
|
used for 32-bit floating-point types.
|
||||||
|
* [[features-features-shaderDenormPreserveFloat64]]
|
||||||
|
pname:shaderDenormPreserveFloat64 is a boolean value indicating whether
|
||||||
|
denormals can: be preserved in 64-bit floating-point computations.
|
||||||
|
It also indicates whether the code:DenormPreserve execution mode can: be
|
||||||
|
used for 64-bit floating-point types.
|
||||||
|
* [[features-features-shaderDenormFlushToZeroFloat16]]
|
||||||
|
pname:shaderDenormFlushToZeroFloat16 is a boolean value indicating
|
||||||
|
whether denormals can: be flushed to zero in 16-bit floating-point
|
||||||
|
computations.
|
||||||
|
It also indicates whether the code:DenormFlushToZero execution mode can:
|
||||||
|
be used for 16-bit floating-point types.
|
||||||
|
* [[features-features-shaderDenormFlushToZeroFloat32]]
|
||||||
|
pname:shaderDenormFlushToZeroFloat32 is a boolean value indicating
|
||||||
|
whether denormals can: be flushed to zero in 32-bit floating-point
|
||||||
|
computations.
|
||||||
|
It also indicates whether the code:DenormFlushToZero execution mode can:
|
||||||
|
be used for 32-bit floating-point types.
|
||||||
|
* [[features-features-shaderDenormFlushToZeroFloat64]]
|
||||||
|
pname:shaderDenormFlushToZeroFloat64 is a boolean value indicating
|
||||||
|
whether denormals can: be flushed to zero in 64-bit floating-point
|
||||||
|
computations.
|
||||||
|
It also indicates whether the code:DenormFlushToZero execution mode can:
|
||||||
|
be used for 64-bit floating-point types.
|
||||||
|
* [[features-features-shaderRoundingModeRTEFloat16]]
|
||||||
|
pname:shaderRoundingModeRTEFloat16 is a boolean value indicating whether
|
||||||
|
an implementation supports the round-to-nearest-even rounding mode for
|
||||||
|
16-bit floating-point arithmetic and conversion instructions.
|
||||||
|
It also indicates whether the code:RoundingModeRTE execution mode can:
|
||||||
|
be used for 16-bit floating-point types.
|
||||||
|
* [[features-features-shaderRoundingModeRTEFloat32]]
|
||||||
|
pname:shaderRoundingModeRTEFloat32 is a boolean value indicating whether
|
||||||
|
an implementation supports the round-to-nearest-even rounding mode for
|
||||||
|
32-bit floating-point arithmetic and conversion instructions.
|
||||||
|
It also indicates whether the code:RoundingModeRTE execution mode can:
|
||||||
|
be used for 32-bit floating-point types.
|
||||||
|
* [[features-features-shaderRoundingModeRTEFloat64]]
|
||||||
|
pname:shaderRoundingModeRTEFloat64 is a boolean value indicating whether
|
||||||
|
an implementation supports the round-to-nearest-even rounding mode for
|
||||||
|
64-bit floating-point arithmetic and conversion instructions.
|
||||||
|
It also indicates whether the code:RoundingModeRTE execution mode can:
|
||||||
|
be used for 64-bit floating-point types.
|
||||||
|
* [[features-features-shaderRoundingModeRTZFloat16]]
|
||||||
|
pname:shaderRoundingModeRTZFloat16 is a boolean value indicating whether
|
||||||
|
an implementation supports the round-towards-zero rounding mode for
|
||||||
|
16-bit floating-point arithmetic and conversion instructions.
|
||||||
|
It also indicates whether the code:RoundingModeRTZ execution mode can:
|
||||||
|
be used for 16-bit floating-point types.
|
||||||
|
* [[features-features-shaderRoundingModeRTZFloat32]]
|
||||||
|
pname:shaderRoundingModeRTZFloat32 is a boolean value indicating whether
|
||||||
|
an implementation supports the round-towards-zero rounding mode for
|
||||||
|
32-bit floating-point arithmetic and conversion instructions.
|
||||||
|
It also indicates whether the code:RoundingModeRTZ execution mode can:
|
||||||
|
be used for 32-bit floating-point types.
|
||||||
|
* [[features-features-shaderRoundingModeRTZFloat64]]
|
||||||
|
pname:shaderRoundingModeRTZFloat64 is a boolean value indicating whether
|
||||||
|
an implementation supports the round-towards-zero rounding mode for
|
||||||
|
64-bit floating-point arithmetic and conversion instructions.
|
||||||
|
It also indicates whether the code:RoundingModeRTZ execution mode can:
|
||||||
|
be used for 64-bit floating-point types.
|
||||||
|
|
||||||
|
ifdef::editing-notes[]
|
||||||
|
[NOTE]
|
||||||
|
.editing-note
|
||||||
|
====
|
||||||
|
Implementations may not be able to control behavior of denorms for
|
||||||
|
floating-point atomics.
|
||||||
|
This needs to be taken into account when such atomics will be added to
|
||||||
|
Vulkan.
|
||||||
|
====
|
||||||
|
endif::editing-notes[]
|
||||||
|
|
||||||
|
If the sname:VkPhysicalDeviceFloatControlsPropertiesKHR structure is
|
||||||
|
included in the pname:pNext chain of slink:VkPhysicalDeviceProperties2, it
|
||||||
|
is filled with the implementation-dependent limits.
|
||||||
|
|
||||||
|
include::../validity/structs/VkPhysicalDeviceFloatControlsPropertiesKHR.txt[]
|
||||||
|
|
||||||
|
--
|
||||||
|
endif::VK_KHR_shader_float_controls[]
|
||||||
|
|
||||||
ifdef::VK_EXT_discard_rectangles[]
|
ifdef::VK_EXT_discard_rectangles[]
|
||||||
|
|
||||||
[open,refpage='VkPhysicalDeviceDiscardRectanglePropertiesEXT',desc='Structure describing discard rectangle limits that can be supported by an implementation',type='structs']
|
[open,refpage='VkPhysicalDeviceDiscardRectanglePropertiesEXT',desc='Structure describing discard rectangle limits that can be supported by an implementation',type='structs']
|
||||||
|
@ -3963,6 +4128,7 @@ include::../validity/structs/VkPhysicalDeviceRayTracingPropertiesNV.txt[]
|
||||||
--
|
--
|
||||||
endif::VK_NV_ray_tracing[]
|
endif::VK_NV_ray_tracing[]
|
||||||
|
|
||||||
|
|
||||||
[[features-limits-minmax]]
|
[[features-limits-minmax]]
|
||||||
=== Limit Requirements
|
=== Limit Requirements
|
||||||
|
|
||||||
|
@ -7648,24 +7814,24 @@ include::../api/structs/VkImageFormatProperties.txt[]
|
||||||
[eq]#pname:maxExtent.height#, and [eq]#pname:maxExtent.depth#, except
|
[eq]#pname:maxExtent.height#, and [eq]#pname:maxExtent.depth#, except
|
||||||
when one of the following conditions is true, in which case it may:
|
when one of the following conditions is true, in which case it may:
|
||||||
instead be `1`:
|
instead be `1`:
|
||||||
** fname:vkGetPhysicalDeviceImageFormatProperties::pname:tiling was
|
** fname:vkGetPhysicalDeviceImageFormatProperties::pname:tiling was
|
||||||
ename:VK_IMAGE_TILING_LINEAR
|
ename:VK_IMAGE_TILING_LINEAR
|
||||||
ifdef::VK_EXT_image_drm_format_modifier[]
|
ifdef::VK_EXT_image_drm_format_modifier[]
|
||||||
** slink:VkPhysicalDeviceImageFormatInfo2::pname:tiling was
|
** slink:VkPhysicalDeviceImageFormatInfo2::pname:tiling was
|
||||||
ename:VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
|
ename:VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
|
||||||
endif::VK_EXT_image_drm_format_modifier[]
|
endif::VK_EXT_image_drm_format_modifier[]
|
||||||
ifdef::VK_VERSION_1_1,VK_KHR_external_memory_capabilities[]
|
ifdef::VK_VERSION_1_1,VK_KHR_external_memory_capabilities[]
|
||||||
** the slink:VkPhysicalDeviceImageFormatInfo2::pname:pNext chain
|
** the slink:VkPhysicalDeviceImageFormatInfo2::pname:pNext chain included
|
||||||
included an instance of slink:VkPhysicalDeviceExternalImageFormatInfo
|
an instance of slink:VkPhysicalDeviceExternalImageFormatInfo with a
|
||||||
with a handle type included in the pname:handleTypes member for which
|
handle type included in the pname:handleTypes member for which mipmap
|
||||||
mipmap image support is not required
|
image support is not required
|
||||||
endif::VK_VERSION_1_1,VK_KHR_external_memory_capabilities[]
|
endif::VK_VERSION_1_1,VK_KHR_external_memory_capabilities[]
|
||||||
ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||||
** image pname:format is one of those listed in
|
** image pname:format is one of those listed in
|
||||||
<<features-formats-requiring-sampler-ycbcr-conversion>>
|
<<features-formats-requiring-sampler-ycbcr-conversion>>
|
||||||
endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||||
ifdef::VK_EXT_fragment_density_map[]
|
ifdef::VK_EXT_fragment_density_map[]
|
||||||
** pname:flags contains ename:VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT
|
** pname:flags contains ename:VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT
|
||||||
endif::VK_EXT_fragment_density_map[]
|
endif::VK_EXT_fragment_density_map[]
|
||||||
* pname:maxArrayLayers is the maximum number of array layers.
|
* pname:maxArrayLayers is the maximum number of array layers.
|
||||||
* If pname:tiling is ename:VK_IMAGE_TILING_LINEAR, then
|
* If pname:tiling is ename:VK_IMAGE_TILING_LINEAR, then
|
||||||
|
@ -8161,9 +8327,9 @@ endif::VK_KHR_external_memory_capabilities[]
|
||||||
|
|
||||||
* ename:VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT specifies that
|
* ename:VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT specifies that
|
||||||
images or buffers created with the specified parameters and handle type
|
images or buffers created with the specified parameters and handle type
|
||||||
must: use the mechanisms defined in the `<<VK_NV_dedicated_allocation>>`
|
must: use the mechanisms defined by slink:VkMemoryDedicatedRequirements
|
||||||
extension to create (or import) a dedicated allocation for the image or
|
and slink:VkMemoryDedicatedAllocateInfo to create (or import) a
|
||||||
buffer.
|
dedicated allocation for the image or buffer.
|
||||||
* ename:VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT specifies that handles
|
* ename:VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT specifies that handles
|
||||||
of this type can: be exported from Vulkan memory objects.
|
of this type can: be exported from Vulkan memory objects.
|
||||||
* ename:VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT specifies that handles
|
* ename:VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT specifies that handles
|
||||||
|
|
|
@ -1695,6 +1695,12 @@ variable decorated with the code:RayTmaxNV decoration.
|
||||||
+
|
+
|
||||||
The code:HitTNV decoration must: only be used in any hit and closest hit
|
The code:HitTNV decoration must: only be used in any hit and closest hit
|
||||||
shaders.
|
shaders.
|
||||||
|
+
|
||||||
|
Any variable decorated with code:HitTNV must: be declared using the
|
||||||
|
code:Input storage class.
|
||||||
|
+
|
||||||
|
Any variable decorated with code:HitTNV must: be declared as a scalar 32-bit
|
||||||
|
floating-point value.
|
||||||
|
|
||||||
[[interfaces-builtin-variables-incomingrayflags]]
|
[[interfaces-builtin-variables-incomingrayflags]]
|
||||||
code:IncomingRayFlagsNV::
|
code:IncomingRayFlagsNV::
|
||||||
|
@ -1818,7 +1824,7 @@ code:LaunchIDNV::
|
||||||
A variable decorated with the code:LaunchIDNV decoration will specify the
|
A variable decorated with the code:LaunchIDNV decoration will specify the
|
||||||
index of the work item being process.
|
index of the work item being process.
|
||||||
One work item is generated for each of the pname:width {times} pname:height
|
One work item is generated for each of the pname:width {times} pname:height
|
||||||
items dispatched by a flink:vkCmdTraceRaysNV command.
|
{times} pname:depth items dispatched by a flink:vkCmdTraceRaysNV command.
|
||||||
All shader invocations inherit the same value for variables decorated with
|
All shader invocations inherit the same value for variables decorated with
|
||||||
code:LaunchIDNV.
|
code:LaunchIDNV.
|
||||||
+
|
+
|
||||||
|
@ -1829,16 +1835,16 @@ Any variable decorated with code:LaunchIDNV must: be declared using the
|
||||||
code:Input storage class.
|
code:Input storage class.
|
||||||
+
|
+
|
||||||
Any variable decorated with code:LaunchIDNV must: be declared as a
|
Any variable decorated with code:LaunchIDNV must: be declared as a
|
||||||
two-component vector of 32-bit floating-point values.
|
three-component vector of 32-bit integer values.
|
||||||
|
|
||||||
[[interfaces-builtin-variables-launchsize]]
|
[[interfaces-builtin-variables-launchsize]]
|
||||||
code:LaunchSizeNV::
|
code:LaunchSizeNV::
|
||||||
|
|
||||||
A variable decorated with the code:LaunchSizeNV decoration will contain the
|
A variable decorated with the code:LaunchSizeNV decoration will contain the
|
||||||
pname:width and pname:height dimensions passed to the flink:vkCmdTraceRaysNV
|
pname:width, pname:height, and pname:depth dimensions passed to the
|
||||||
command that initiated this shader execution.
|
flink:vkCmdTraceRaysNV command that initiated this shader execution.
|
||||||
The pname:width is in the first component, and the pname:height is in the
|
The pname:width is in the first component, the pname:height is in the second
|
||||||
second component.
|
component, and the pname:depth is in the third component.
|
||||||
+
|
+
|
||||||
The code:LaunchSizeNV decoration must: only be used within ray generation,
|
The code:LaunchSizeNV decoration must: only be used within ray generation,
|
||||||
intersection, any hit, closest hit, and miss shaders.
|
intersection, any hit, closest hit, and miss shaders.
|
||||||
|
@ -1847,7 +1853,7 @@ Any variable decorated with code:LaunchSizeNV must: be declared using the
|
||||||
code:Input storage class.
|
code:Input storage class.
|
||||||
+
|
+
|
||||||
Any variable decorated with code:LaunchSizeNV must: be declared as a
|
Any variable decorated with code:LaunchSizeNV must: be declared as a
|
||||||
two-component vector of 32-bit floating-point values.
|
three-component vector of 32-bit integer values.
|
||||||
endif::VK_NV_ray_tracing[]
|
endif::VK_NV_ray_tracing[]
|
||||||
|
|
||||||
[[interfaces-builtin-variables-layer]]
|
[[interfaces-builtin-variables-layer]]
|
||||||
|
@ -2427,12 +2433,12 @@ array of scalar 32-bit integers.
|
||||||
The array must: be sized according to the primitive type and
|
The array must: be sized according to the primitive type and
|
||||||
code:OutputPrimitivesNV execution modes, where the size is:
|
code:OutputPrimitivesNV execution modes, where the size is:
|
||||||
|
|
||||||
* the value specified by code:OutputPrimitivesNV if the execution mode is
|
* the value specified by code:OutputPrimitivesNV if the execution mode is
|
||||||
code:OutputPoints,
|
code:OutputPoints,
|
||||||
* two times the value specified by code:OutputPrimitivesNV if the execution
|
* two times the value specified by code:OutputPrimitivesNV if the
|
||||||
mode is code:OutputLinesNV, or
|
execution mode is code:OutputLinesNV, or
|
||||||
* three times the value specified by code:OutputPrimitivesNV if the
|
* three times the value specified by code:OutputPrimitivesNV if the
|
||||||
execution mode is code:OutputTrianglesNV.
|
execution mode is code:OutputTrianglesNV.
|
||||||
endif::VK_NV_mesh_shader[]
|
endif::VK_NV_mesh_shader[]
|
||||||
|
|
||||||
ifdef::VK_NV_ray_tracing[]
|
ifdef::VK_NV_ray_tracing[]
|
||||||
|
|
|
@ -1155,8 +1155,15 @@ ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||||
dlink:VK_NULL_HANDLE, and the Android hardware buffer's
|
dlink:VK_NULL_HANDLE, and the Android hardware buffer's
|
||||||
code:AHardwareBuffer::code:usage includes
|
code:AHardwareBuffer::code:usage includes
|
||||||
code:AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE, the pname:image must:
|
code:AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE, the pname:image must:
|
||||||
either have a complete mipmap chain, or it must: have exactly `1` mip
|
have a complete mipmap chain.
|
||||||
level.
|
* [[VUID-VkMemoryAllocateInfo-pNext-02586]]
|
||||||
|
If the parameters define an import operation, the external handle is an
|
||||||
|
Android hardware buffer, and the pname:pNext chain includes an instance
|
||||||
|
of slink:VkMemoryDedicatedAllocateInfo with pname:image that is not
|
||||||
|
dlink:VK_NULL_HANDLE, and the Android hardware buffer's
|
||||||
|
code:AHardwareBuffer::code:usage does not include
|
||||||
|
code:AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE, the pname:image must:
|
||||||
|
have exactly one mipmap level.
|
||||||
* [[VUID-VkMemoryAllocateInfo-pNext-02390]]
|
* [[VUID-VkMemoryAllocateInfo-pNext-02390]]
|
||||||
If the parameters define an import operation, the external handle is an
|
If the parameters define an import operation, the external handle is an
|
||||||
Android hardware buffer, and the pname:pNext chain includes an instance
|
Android hardware buffer, and the pname:pNext chain includes an instance
|
||||||
|
|
|
@ -802,8 +802,9 @@ include::../api/protos/vkCmdBindShadingRateImageNV.txt[]
|
||||||
If pname:imageView is not dlink:VK_NULL_HANDLE, it must: have a format
|
If pname:imageView is not dlink:VK_NULL_HANDLE, it must: have a format
|
||||||
of ename:VK_FORMAT_R8_UINT.
|
of ename:VK_FORMAT_R8_UINT.
|
||||||
* [[VUID-vkCmdBindShadingRateImageNV-imageView-02061]]
|
* [[VUID-vkCmdBindShadingRateImageNV-imageView-02061]]
|
||||||
If pname:imageView is not dlink:VK_NULL_HANDLE, the image must: have
|
If pname:imageView is not dlink:VK_NULL_HANDLE, it must: have been
|
||||||
been created with ename:VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV set
|
created with a pname:usage value including
|
||||||
|
ename:VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV
|
||||||
* [[VUID-vkCmdBindShadingRateImageNV-imageView-02062]]
|
* [[VUID-vkCmdBindShadingRateImageNV-imageView-02062]]
|
||||||
If pname:imageView is not dlink:VK_NULL_HANDLE, pname:imageLayout must:
|
If pname:imageView is not dlink:VK_NULL_HANDLE, pname:imageLayout must:
|
||||||
match the actual elink:VkImageLayout of each subresource accessible from
|
match the actual elink:VkImageLayout of each subresource accessible from
|
||||||
|
|
|
@ -2350,10 +2350,10 @@ record the commands for the first subpass of that render pass.
|
||||||
the sname:VkAttachmentReference structures specified when creating the
|
the sname:VkAttachmentReference structures specified when creating the
|
||||||
render pass specified in the pname:renderPass member of
|
render pass specified in the pname:renderPass member of
|
||||||
pname:pRenderPassBegin is ename:VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
|
pname:pRenderPassBegin is ename:VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
|
||||||
then the corresponding attachment image subresource of the framebuffer
|
then the corresponding attachment image view of the framebuffer
|
||||||
specified in the pname:framebuffer member of pname:pRenderPassBegin
|
specified in the pname:framebuffer member of pname:pRenderPassBegin
|
||||||
must: have been created with ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
|
must: have been created with a pname:usage value including
|
||||||
set
|
ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
|
||||||
// The VU below comes in an alternate version when the extension is
|
// The VU below comes in an alternate version when the extension is
|
||||||
// enabled.
|
// enabled.
|
||||||
ifndef::VK_VERSION_1_1,VK_KHR_maintenance2[]
|
ifndef::VK_VERSION_1_1,VK_KHR_maintenance2[]
|
||||||
|
@ -2365,9 +2365,10 @@ ifndef::VK_VERSION_1_1,VK_KHR_maintenance2[]
|
||||||
pname:pRenderPassBegin is
|
pname:pRenderPassBegin is
|
||||||
ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, or
|
ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, or
|
||||||
ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL then the
|
ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL then the
|
||||||
corresponding attachment image subresource of the framebuffer specified
|
corresponding attachment image view of the framebuffer specified in the
|
||||||
in the pname:framebuffer member of pname:pRenderPassBegin must: have
|
pname:framebuffer member of pname:pRenderPassBegin must: have been
|
||||||
been created with ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set
|
created with a pname:usage value including
|
||||||
|
ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
|
||||||
endif::VK_VERSION_1_1,VK_KHR_maintenance2[]
|
endif::VK_VERSION_1_1,VK_KHR_maintenance2[]
|
||||||
// The nested ifdefs are there in anticipation of the hoped-for day when the
|
// The nested ifdefs are there in anticipation of the hoped-for day when the
|
||||||
// VU extractor and validation layers can handle VU with imbedded
|
// VU extractor and validation layers can handle VU with imbedded
|
||||||
|
@ -2385,9 +2386,10 @@ ifdef::VK_VERSION_1_1,VK_KHR_maintenance2[]
|
||||||
// endif::VK_VERSION_1_1,VK_KHR_maintenance2[]
|
// endif::VK_VERSION_1_1,VK_KHR_maintenance2[]
|
||||||
ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, or
|
ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, or
|
||||||
ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL then the
|
ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL then the
|
||||||
corresponding attachment image subresource of the framebuffer specified
|
corresponding attachment image view of the framebuffer specified in the
|
||||||
in the pname:framebuffer member of pname:pRenderPassBegin must: have
|
pname:framebuffer member of pname:pRenderPassBegin must: have been
|
||||||
been created with ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set
|
created with a pname:usage value including
|
||||||
|
ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
|
||||||
endif::VK_VERSION_1_1,VK_KHR_maintenance2[]
|
endif::VK_VERSION_1_1,VK_KHR_maintenance2[]
|
||||||
* [[VUID-vkCmdBeginRenderPass-initialLayout-00897]]
|
* [[VUID-vkCmdBeginRenderPass-initialLayout-00897]]
|
||||||
If any of the pname:initialLayout or pname:finalLayout member of the
|
If any of the pname:initialLayout or pname:finalLayout member of the
|
||||||
|
@ -2395,28 +2397,31 @@ endif::VK_VERSION_1_1,VK_KHR_maintenance2[]
|
||||||
the sname:VkAttachmentReference structures specified when creating the
|
the sname:VkAttachmentReference structures specified when creating the
|
||||||
render pass specified in the pname:renderPass member of
|
render pass specified in the pname:renderPass member of
|
||||||
pname:pRenderPassBegin is ename:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
|
pname:pRenderPassBegin is ename:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
|
||||||
then the corresponding attachment image subresource of the framebuffer
|
then the corresponding attachment image view of the framebuffer
|
||||||
specified in the pname:framebuffer member of pname:pRenderPassBegin
|
specified in the pname:framebuffer member of pname:pRenderPassBegin
|
||||||
must: have been created with ename:VK_IMAGE_USAGE_SAMPLED_BIT or
|
must: have been created with a pname:usage value including
|
||||||
ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT set
|
ename:VK_IMAGE_USAGE_SAMPLED_BIT or
|
||||||
|
ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
|
||||||
* [[VUID-vkCmdBeginRenderPass-initialLayout-00898]]
|
* [[VUID-vkCmdBeginRenderPass-initialLayout-00898]]
|
||||||
If any of the pname:initialLayout or pname:finalLayout member of the
|
If any of the pname:initialLayout or pname:finalLayout member of the
|
||||||
sname:VkAttachmentDescription structures or the pname:layout member of
|
sname:VkAttachmentDescription structures or the pname:layout member of
|
||||||
the sname:VkAttachmentReference structures specified when creating the
|
the sname:VkAttachmentReference structures specified when creating the
|
||||||
render pass specified in the pname:renderPass member of
|
render pass specified in the pname:renderPass member of
|
||||||
pname:pRenderPassBegin is ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
|
pname:pRenderPassBegin is ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
|
||||||
then the corresponding attachment image subresource of the framebuffer
|
then the corresponding attachment image view of the framebuffer
|
||||||
specified in the pname:framebuffer member of pname:pRenderPassBegin
|
specified in the pname:framebuffer member of pname:pRenderPassBegin
|
||||||
must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT set
|
must: have been created with a pname:usage value including
|
||||||
|
ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT
|
||||||
* [[VUID-vkCmdBeginRenderPass-initialLayout-00899]]
|
* [[VUID-vkCmdBeginRenderPass-initialLayout-00899]]
|
||||||
If any of the pname:initialLayout or pname:finalLayout member of the
|
If any of the pname:initialLayout or pname:finalLayout member of the
|
||||||
sname:VkAttachmentDescription structures or the pname:layout member of
|
sname:VkAttachmentDescription structures or the pname:layout member of
|
||||||
the sname:VkAttachmentReference structures specified when creating the
|
the sname:VkAttachmentReference structures specified when creating the
|
||||||
render pass specified in the pname:renderPass member of
|
render pass specified in the pname:renderPass member of
|
||||||
pname:pRenderPassBegin is ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
|
pname:pRenderPassBegin is ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
|
||||||
then the corresponding attachment image subresource of the framebuffer
|
then the corresponding attachment image view of the framebuffer
|
||||||
specified in the pname:framebuffer member of pname:pRenderPassBegin
|
specified in the pname:framebuffer member of pname:pRenderPassBegin
|
||||||
must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT set
|
must: have been created with a pname:usage value including
|
||||||
|
ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT
|
||||||
* [[VUID-vkCmdBeginRenderPass-initialLayout-00900]]
|
* [[VUID-vkCmdBeginRenderPass-initialLayout-00900]]
|
||||||
If any of the pname:initialLayout members of the
|
If any of the pname:initialLayout members of the
|
||||||
sname:VkAttachmentDescription structures specified when creating the
|
sname:VkAttachmentDescription structures specified when creating the
|
||||||
|
@ -2471,10 +2476,10 @@ record the commands for the first subpass of that render pass.
|
||||||
the sname:VkAttachmentReference structures specified when creating the
|
the sname:VkAttachmentReference structures specified when creating the
|
||||||
render pass specified in the pname:renderPass member of
|
render pass specified in the pname:renderPass member of
|
||||||
pname:pRenderPassBegin is ename:VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
|
pname:pRenderPassBegin is ename:VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
|
||||||
then the corresponding attachment image subresource of the framebuffer
|
then the corresponding attachment image view of the framebuffer
|
||||||
specified in the pname:framebuffer member of pname:pRenderPassBegin
|
specified in the pname:framebuffer member of pname:pRenderPassBegin
|
||||||
must: have been created with ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
|
must: have been created with a pname:usage value including
|
||||||
set
|
ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
|
||||||
* [[VUID-vkCmdBeginRenderPass2KHR-initialLayout-03096]]
|
* [[VUID-vkCmdBeginRenderPass2KHR-initialLayout-03096]]
|
||||||
If any of the pname:initialLayout or pname:finalLayout member of the
|
If any of the pname:initialLayout or pname:finalLayout member of the
|
||||||
sname:VkAttachmentDescription structures or the pname:layout member of
|
sname:VkAttachmentDescription structures or the pname:layout member of
|
||||||
|
@ -2485,37 +2490,41 @@ record the commands for the first subpass of that render pass.
|
||||||
ename:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,
|
ename:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,
|
||||||
ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, or
|
ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, or
|
||||||
ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL then the
|
ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL then the
|
||||||
corresponding attachment image subresource of the framebuffer specified
|
corresponding attachment image view of the framebuffer specified in the
|
||||||
in the pname:framebuffer member of pname:pRenderPassBegin must: have
|
pname:framebuffer member of pname:pRenderPassBegin must: have been
|
||||||
been created with ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set
|
created with a pname:usage value including
|
||||||
|
ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
|
||||||
* [[VUID-vkCmdBeginRenderPass2KHR-initialLayout-03097]]
|
* [[VUID-vkCmdBeginRenderPass2KHR-initialLayout-03097]]
|
||||||
If any of the pname:initialLayout or pname:finalLayout member of the
|
If any of the pname:initialLayout or pname:finalLayout member of the
|
||||||
sname:VkAttachmentDescription structures or the pname:layout member of
|
sname:VkAttachmentDescription structures or the pname:layout member of
|
||||||
the sname:VkAttachmentReference structures specified when creating the
|
the sname:VkAttachmentReference structures specified when creating the
|
||||||
render pass specified in the pname:renderPass member of
|
render pass specified in the pname:renderPass member of
|
||||||
pname:pRenderPassBegin is ename:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
|
pname:pRenderPassBegin is ename:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
|
||||||
then the corresponding attachment image subresource of the framebuffer
|
then the corresponding attachment image view of the framebuffer
|
||||||
specified in the pname:framebuffer member of pname:pRenderPassBegin
|
specified in the pname:framebuffer member of pname:pRenderPassBegin
|
||||||
must: have been created with ename:VK_IMAGE_USAGE_SAMPLED_BIT or
|
must: have been created with a pname:usage value including
|
||||||
ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT set
|
ename:VK_IMAGE_USAGE_SAMPLED_BIT or
|
||||||
|
ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
|
||||||
* [[VUID-vkCmdBeginRenderPass2KHR-initialLayout-03098]]
|
* [[VUID-vkCmdBeginRenderPass2KHR-initialLayout-03098]]
|
||||||
If any of the pname:initialLayout or pname:finalLayout member of the
|
If any of the pname:initialLayout or pname:finalLayout member of the
|
||||||
sname:VkAttachmentDescription structures or the pname:layout member of
|
sname:VkAttachmentDescription structures or the pname:layout member of
|
||||||
the sname:VkAttachmentReference structures specified when creating the
|
the sname:VkAttachmentReference structures specified when creating the
|
||||||
render pass specified in the pname:renderPass member of
|
render pass specified in the pname:renderPass member of
|
||||||
pname:pRenderPassBegin is ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
|
pname:pRenderPassBegin is ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
|
||||||
then the corresponding attachment image subresource of the framebuffer
|
then the corresponding attachment image view of the framebuffer
|
||||||
specified in the pname:framebuffer member of pname:pRenderPassBegin
|
specified in the pname:framebuffer member of pname:pRenderPassBegin
|
||||||
must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT set
|
must: have been created with a pname:usage value including
|
||||||
|
ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT
|
||||||
* [[VUID-vkCmdBeginRenderPass2KHR-initialLayout-03099]]
|
* [[VUID-vkCmdBeginRenderPass2KHR-initialLayout-03099]]
|
||||||
If any of the pname:initialLayout or pname:finalLayout member of the
|
If any of the pname:initialLayout or pname:finalLayout member of the
|
||||||
sname:VkAttachmentDescription structures or the pname:layout member of
|
sname:VkAttachmentDescription structures or the pname:layout member of
|
||||||
the sname:VkAttachmentReference structures specified when creating the
|
the sname:VkAttachmentReference structures specified when creating the
|
||||||
render pass specified in the pname:renderPass member of
|
render pass specified in the pname:renderPass member of
|
||||||
pname:pRenderPassBegin is ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
|
pname:pRenderPassBegin is ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
|
||||||
then the corresponding attachment image subresource of the framebuffer
|
then the corresponding attachment image view of the framebuffer
|
||||||
specified in the pname:framebuffer member of pname:pRenderPassBegin
|
specified in the pname:framebuffer member of pname:pRenderPassBegin
|
||||||
must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT set
|
must: have been created with a pname:usage value including
|
||||||
|
ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT
|
||||||
* [[VUID-vkCmdBeginRenderPass2KHR-initialLayout-03100]]
|
* [[VUID-vkCmdBeginRenderPass2KHR-initialLayout-03100]]
|
||||||
If any of the pname:initialLayout members of the
|
If any of the pname:initialLayout members of the
|
||||||
sname:VkAttachmentDescription structures specified when creating the
|
sname:VkAttachmentDescription structures specified when creating the
|
||||||
|
|
|
@ -1360,6 +1360,17 @@ When this structure is not present in the pname:pNext chain of
|
||||||
sname:VkImageCreateInfo then the implicit value of pname:stencilUsage
|
sname:VkImageCreateInfo then the implicit value of pname:stencilUsage
|
||||||
matches that of sname:VkImageCreateInfo::pname:usage.
|
matches that of sname:VkImageCreateInfo::pname:usage.
|
||||||
|
|
||||||
|
When this structure is present sname:VkImageCreateInfo::pname:usage
|
||||||
|
specifies the intended usage of the depth aspect of the image and
|
||||||
|
sname:VkImageStencilUsageCreateInfoEXT::stencilUsage specifies the intended
|
||||||
|
usage of the stencil aspect of the image.
|
||||||
|
However, for the purposes of determining image specific valid usage
|
||||||
|
conditions, the image itself is considered to be created with a particular
|
||||||
|
elink:VkImageUsageFlagBits value if either
|
||||||
|
sname:VkImageCreateInfo::pname:usage or
|
||||||
|
sname:VkImageStencilUsageCreateInfoEXT::stencil usage includes that bit
|
||||||
|
value.
|
||||||
|
|
||||||
This structure can: also be included in the pname:pNext chain of
|
This structure can: also be included in the pname:pNext chain of
|
||||||
slink:VkPhysicalDeviceImageFormatInfo2 to query additional capabilities
|
slink:VkPhysicalDeviceImageFormatInfo2 to query additional capabilities
|
||||||
specific to image creation parameter combinations including a separate set
|
specific to image creation parameter combinations including a separate set
|
||||||
|
@ -2503,10 +2514,10 @@ The type(s) of device access supported by each layout are:
|
||||||
combined image/sampler and/or input attachment).
|
combined image/sampler and/or input attachment).
|
||||||
This layout is valid only for image subresources of images created with
|
This layout is valid only for image subresources of images created with
|
||||||
the ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT usage bit enabled.
|
the ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT usage bit enabled.
|
||||||
Only image subresources of images created with
|
Only image views created with a pname:usage value including
|
||||||
ename:VK_IMAGE_USAGE_SAMPLED_BIT can: be used as a sampled image or
|
ename:VK_IMAGE_USAGE_SAMPLED_BIT can: be used as a sampled image or
|
||||||
combined image/sampler in a shader.
|
combined image/sampler in a shader.
|
||||||
Similarly, only image subresources of images created with
|
Similarly, only image views created with a pname:usage value including
|
||||||
ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT can: be used as input
|
ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT can: be used as input
|
||||||
attachments.
|
attachments.
|
||||||
ifdef::VK_VERSION_1_1,VK_KHR_maintenance2[]
|
ifdef::VK_VERSION_1_1,VK_KHR_maintenance2[]
|
||||||
|
@ -2517,10 +2528,10 @@ ifdef::VK_VERSION_1_1,VK_KHR_maintenance2[]
|
||||||
and/or input attachment) where only the depth aspect is accessed.
|
and/or input attachment) where only the depth aspect is accessed.
|
||||||
This layout is valid only for image subresources of images created with
|
This layout is valid only for image subresources of images created with
|
||||||
the ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT usage bit enabled.
|
the ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT usage bit enabled.
|
||||||
Only image subresources of images created with
|
Only image views created with a pname:usage value including
|
||||||
ename:VK_IMAGE_USAGE_SAMPLED_BIT can: be used as a sampled image or
|
ename:VK_IMAGE_USAGE_SAMPLED_BIT can: be used as a sampled image or
|
||||||
combined image/sampler in a shader.
|
combined image/sampler in a shader.
|
||||||
Similarly, only image subresources of images created with
|
Similarly, only image views created with a pname:usage value including
|
||||||
ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT can: be used as input
|
ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT can: be used as input
|
||||||
attachments.
|
attachments.
|
||||||
* ename:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL: must:
|
* ename:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL: must:
|
||||||
|
@ -2530,10 +2541,10 @@ ifdef::VK_VERSION_1_1,VK_KHR_maintenance2[]
|
||||||
and/or input attachment) where only the stencil aspect is accessed.
|
and/or input attachment) where only the stencil aspect is accessed.
|
||||||
This layout is valid only for image subresources of images created with
|
This layout is valid only for image subresources of images created with
|
||||||
the ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT usage bit enabled.
|
the ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT usage bit enabled.
|
||||||
Only image subresources of images created with
|
Only image views created with a pname:usage value including
|
||||||
ename:VK_IMAGE_USAGE_SAMPLED_BIT can: be used as a sampled image or
|
ename:VK_IMAGE_USAGE_SAMPLED_BIT can: be used as a sampled image or
|
||||||
combined image/sampler in a shader.
|
combined image/sampler in a shader.
|
||||||
Similarly, only image subresources of images created with
|
Similarly, only image views created with a pname:usage value including
|
||||||
ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT can: be used as input
|
ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT can: be used as input
|
||||||
attachments.
|
attachments.
|
||||||
endif::VK_VERSION_1_1,VK_KHR_maintenance2[]
|
endif::VK_VERSION_1_1,VK_KHR_maintenance2[]
|
||||||
|
|
|
@ -921,11 +921,11 @@ section.
|
||||||
* If the pname:chromaFilter member of the
|
* If the pname:chromaFilter member of the
|
||||||
slink:VkSamplerYcbcrConversionCreateInfo structure is
|
slink:VkSamplerYcbcrConversionCreateInfo structure is
|
||||||
ename:VK_FILTER_NEAREST:
|
ename:VK_FILTER_NEAREST:
|
||||||
** If the format's R and B channels are reduced in resolution in just
|
** If the format's R and B channels are reduced in resolution in just
|
||||||
width by a factor of two relative to the G channel (i.e. this is a
|
width by a factor of two relative to the G channel (i.e. this is a
|
||||||
"`etext:_422`" format), the latexmath:[\tau_{ijk}[level\]] values
|
"`etext:_422`" format), the latexmath:[\tau_{ijk}[level\]] values
|
||||||
accessed by <<textures-texel-filtering,texel filtering>> are
|
accessed by <<textures-texel-filtering,texel filtering>> are
|
||||||
reconstructed as follows:
|
reconstructed as follows:
|
||||||
+
|
+
|
||||||
[latexmath]
|
[latexmath]
|
||||||
++++++++++++++
|
++++++++++++++
|
||||||
|
@ -935,11 +935,11 @@ section.
|
||||||
\end{aligned}
|
\end{aligned}
|
||||||
++++++++++++++
|
++++++++++++++
|
||||||
|
|
||||||
** If the format's R and B channels are reduced in resolution in width
|
** If the format's R and B channels are reduced in resolution in width and
|
||||||
and height by a factor of two relative to the G channel (i.e. this is
|
height by a factor of two relative to the G channel (i.e. this is a
|
||||||
a "`etext:_420`" format), the latexmath:[\tau_{ijk}[level\]] values
|
"`etext:_420`" format), the latexmath:[\tau_{ijk}[level\]] values
|
||||||
accessed by <<textures-texel-filtering,texel filtering>> are
|
accessed by <<textures-texel-filtering,texel filtering>> are
|
||||||
reconstructed as follows:
|
reconstructed as follows:
|
||||||
+
|
+
|
||||||
[latexmath]
|
[latexmath]
|
||||||
++++++++++++++
|
++++++++++++++
|
||||||
|
|
|
@ -43,7 +43,7 @@ extern "C" {
|
||||||
#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
|
#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
|
||||||
#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
|
#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
|
||||||
// Version of this file
|
// Version of this file
|
||||||
#define VK_HEADER_VERSION 94
|
#define VK_HEADER_VERSION 95
|
||||||
|
|
||||||
|
|
||||||
#define VK_NULL_HANDLE 0
|
#define VK_NULL_HANDLE 0
|
||||||
|
@ -327,6 +327,7 @@ typedef enum VkStructureType {
|
||||||
VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000,
|
VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000,
|
||||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001,
|
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001,
|
||||||
VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002,
|
VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002,
|
||||||
|
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = 1000082000,
|
||||||
VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000,
|
VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000,
|
||||||
VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX = 1000086000,
|
VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX = 1000086000,
|
||||||
VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX = 1000086001,
|
VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX = 1000086001,
|
||||||
|
@ -442,6 +443,7 @@ typedef enum VkStructureType {
|
||||||
VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = 1000190001,
|
VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = 1000190001,
|
||||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002,
|
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002,
|
||||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000,
|
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000,
|
||||||
|
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = 1000197000,
|
||||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000,
|
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000,
|
||||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000,
|
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000,
|
||||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001,
|
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001,
|
||||||
|
@ -5493,6 +5495,19 @@ VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetWithTemplateKHR(
|
||||||
const void* pData);
|
const void* pData);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define VK_KHR_shader_float16_int8 1
|
||||||
|
#define VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION 1
|
||||||
|
#define VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME "VK_KHR_shader_float16_int8"
|
||||||
|
|
||||||
|
typedef struct VkPhysicalDeviceFloat16Int8FeaturesKHR {
|
||||||
|
VkStructureType sType;
|
||||||
|
void* pNext;
|
||||||
|
VkBool32 shaderFloat16;
|
||||||
|
VkBool32 shaderInt8;
|
||||||
|
} VkPhysicalDeviceFloat16Int8FeaturesKHR;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define VK_KHR_16bit_storage 1
|
#define VK_KHR_16bit_storage 1
|
||||||
#define VK_KHR_16BIT_STORAGE_SPEC_VERSION 1
|
#define VK_KHR_16BIT_STORAGE_SPEC_VERSION 1
|
||||||
#define VK_KHR_16BIT_STORAGE_EXTENSION_NAME "VK_KHR_16bit_storage"
|
#define VK_KHR_16BIT_STORAGE_EXTENSION_NAME "VK_KHR_16bit_storage"
|
||||||
|
@ -6149,6 +6164,34 @@ typedef struct VkPhysicalDeviceDriverPropertiesKHR {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define VK_KHR_shader_float_controls 1
|
||||||
|
#define VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION 1
|
||||||
|
#define VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME "VK_KHR_shader_float_controls"
|
||||||
|
|
||||||
|
typedef struct VkPhysicalDeviceFloatControlsPropertiesKHR {
|
||||||
|
VkStructureType sType;
|
||||||
|
void* pNext;
|
||||||
|
VkBool32 separateDenormSettings;
|
||||||
|
VkBool32 separateRoundingModeSettings;
|
||||||
|
VkBool32 shaderSignedZeroInfNanPreserveFloat16;
|
||||||
|
VkBool32 shaderSignedZeroInfNanPreserveFloat32;
|
||||||
|
VkBool32 shaderSignedZeroInfNanPreserveFloat64;
|
||||||
|
VkBool32 shaderDenormPreserveFloat16;
|
||||||
|
VkBool32 shaderDenormPreserveFloat32;
|
||||||
|
VkBool32 shaderDenormPreserveFloat64;
|
||||||
|
VkBool32 shaderDenormFlushToZeroFloat16;
|
||||||
|
VkBool32 shaderDenormFlushToZeroFloat32;
|
||||||
|
VkBool32 shaderDenormFlushToZeroFloat64;
|
||||||
|
VkBool32 shaderRoundingModeRTEFloat16;
|
||||||
|
VkBool32 shaderRoundingModeRTEFloat32;
|
||||||
|
VkBool32 shaderRoundingModeRTEFloat64;
|
||||||
|
VkBool32 shaderRoundingModeRTZFloat16;
|
||||||
|
VkBool32 shaderRoundingModeRTZFloat32;
|
||||||
|
VkBool32 shaderRoundingModeRTZFloat64;
|
||||||
|
} VkPhysicalDeviceFloatControlsPropertiesKHR;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define VK_KHR_swapchain_mutable_format 1
|
#define VK_KHR_swapchain_mutable_format 1
|
||||||
#define VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION 1
|
#define VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION 1
|
||||||
#define VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME "VK_KHR_swapchain_mutable_format"
|
#define VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME "VK_KHR_swapchain_mutable_format"
|
||||||
|
@ -7475,11 +7518,11 @@ typedef struct VkDebugUtilsMessengerCallbackDataEXT {
|
||||||
int32_t messageIdNumber;
|
int32_t messageIdNumber;
|
||||||
const char* pMessage;
|
const char* pMessage;
|
||||||
uint32_t queueLabelCount;
|
uint32_t queueLabelCount;
|
||||||
VkDebugUtilsLabelEXT* pQueueLabels;
|
const VkDebugUtilsLabelEXT* pQueueLabels;
|
||||||
uint32_t cmdBufLabelCount;
|
uint32_t cmdBufLabelCount;
|
||||||
VkDebugUtilsLabelEXT* pCmdBufLabels;
|
const VkDebugUtilsLabelEXT* pCmdBufLabels;
|
||||||
uint32_t objectCount;
|
uint32_t objectCount;
|
||||||
VkDebugUtilsObjectNameInfoEXT* pObjects;
|
const VkDebugUtilsObjectNameInfoEXT* pObjects;
|
||||||
} VkDebugUtilsMessengerCallbackDataEXT;
|
} VkDebugUtilsMessengerCallbackDataEXT;
|
||||||
|
|
||||||
typedef VkBool32 (VKAPI_PTR *PFN_vkDebugUtilsMessengerCallbackEXT)(
|
typedef VkBool32 (VKAPI_PTR *PFN_vkDebugUtilsMessengerCallbackEXT)(
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
# The value to start tagging VU statements at, unless overridden by -nextvu
|
# The value to start tagging VU statements at, unless overridden by -nextvu
|
||||||
startVUID = 2586
|
startVUID = 2596
|
||||||
|
|
|
@ -248,7 +248,7 @@ layers with Khronos, as described below.
|
||||||
To reserve an author ID, propose a merge request against
|
To reserve an author ID, propose a merge request against
|
||||||
<<extensions-api-registry,`vk.xml`>> in the `master` branch.
|
<<extensions-api-registry,`vk.xml`>> in the `master` branch.
|
||||||
The merge must add a `<tag>` XML tag and fill in the `name`, `author` and
|
The merge must add a `<tag>` XML tag and fill in the `name`, `author` and
|
||||||
+contact+ attributes with the requested author ID, the author's formal name
|
`contact` attributes with the requested author ID, the author's formal name
|
||||||
(e.g. company or project name), and contact email address, respectively.
|
(e.g. company or project name), and contact email address, respectively.
|
||||||
The author ID will only be reserved once this merge request is accepted.
|
The author ID will only be reserved once this merge request is accepted.
|
||||||
|
|
||||||
|
@ -424,18 +424,19 @@ Some aspects of the changes for this example extension are described below.
|
||||||
Changes for extensions include (but may not be limited to) the following:
|
Changes for extensions include (but may not be limited to) the following:
|
||||||
|
|
||||||
* All extensions must add an appendix to the Vulkan specification.
|
* All extensions must add an appendix to the Vulkan specification.
|
||||||
The appendix should be modeled after the `VK_KHR_shader_draw_parameters`
|
The appendix can be modeled after the `VK_KHR_shader_float_controls`
|
||||||
extension in `appendices/VK_KHR_shader_draw_parameters.txt`, which
|
extension in `appendices/VK_KHR_shader_float_controls.txt.txt`, which
|
||||||
contains metainformation about the extension (as well as code examples,
|
contains metainformation about the extension (as well as code examples,
|
||||||
and revision history).
|
and revision history).
|
||||||
This example is complicated because `VK_KHR_shader_draw_parameters` has
|
Other useful references are the `VK_KHR_shader_draw_parameters`
|
||||||
a variety of external dependencies and interactions.
|
appendix, which includes a variety of external dependencies and
|
||||||
The `VK_EXT_debug_marker` extension is a simpler, standalone example.
|
interactions, and the `VK_EXT_debug_marker` appendix, which is a
|
||||||
|
simpler, standalone example.
|
||||||
* In the preamble to the appendix, start with an asciidoc `include` of the
|
* In the preamble to the appendix, start with an asciidoc `include` of the
|
||||||
automatically generated meta information.
|
automatically generated meta information.
|
||||||
This information includes the extension name string, type, number,
|
This information includes the extension name string, type, number,
|
||||||
revision, and contact information from +vk.xml+.
|
revision, and contact information from `vk.xml`.
|
||||||
* Following the `include`, add as many of the following sections as are
|
* Following the `include`, add as many of the following items as are
|
||||||
meaningful:
|
meaningful:
|
||||||
** *Status* - *Complete*, *Draft*, or other.
|
** *Status* - *Complete*, *Draft*, or other.
|
||||||
When an extension is published in the `master` branch, it is normally
|
When an extension is published in the `master` branch, it is normally
|
||||||
|
@ -443,16 +444,42 @@ Changes for extensions include (but may not be limited to) the following:
|
||||||
time, unless it contains additional information.
|
time, unless it contains additional information.
|
||||||
** *Last Modified Date* - if wanted, although git log queries can provide
|
** *Last Modified Date* - if wanted, although git log queries can provide
|
||||||
equivalent information.
|
equivalent information.
|
||||||
** *IP Status* - Such as *No known IP claims*.
|
** *IP Status* - Such as *No known IP claims*, or more specific
|
||||||
|
information if there are known IP claims and the extension has, or has
|
||||||
|
not been ratified by the Khronos Board of Promoters.
|
||||||
** *Interactions and External Dependencies* - may include requirements or
|
** *Interactions and External Dependencies* - may include requirements or
|
||||||
interactions with optional Vulkan features, SPIR-V (+SPV+) and OpenGL
|
interactions with optional Vulkan features, SPIR-V (`SPV`) and OpenGL
|
||||||
extensions, and interactions (other than strictly requiring) with other
|
extensions, and interactions (other than strictly requiring) with other
|
||||||
Vulkan extensions.
|
Vulkan extensions.
|
||||||
** *Contributors* - Names and corporate affiliations of people who have
|
** *Contributors* - Names and corporate affiliations of people who have
|
||||||
made significant direct contributions to this extension.
|
made significant direct contributions to this extension.
|
||||||
|
* Following these items, add whitespace followed by a *Description*
|
||||||
|
section.
|
||||||
|
The first paragraph of this section should be a compact, standalone
|
||||||
|
description of the extension's functionality and purpose, suitable for
|
||||||
|
use in summaries of new functionality such as press releases or the
|
||||||
|
Vulkan change log.
|
||||||
|
Additional paragraphs expanding on the description may be added at the
|
||||||
|
author's discretion.
|
||||||
|
* Following the *Description* section, add the following sections, If
|
||||||
|
there are no new interfaces of a given type, use "`None`" as the body of
|
||||||
|
that section.
|
||||||
|
** *New Enum Constants* (include elink{cl} links to the enumerated type(s)
|
||||||
|
being extended, followed by ename{cl} links to each individual new
|
||||||
|
enumerant).
|
||||||
|
** *New Enums* (include elink{cl} links to the new enumerated type(s)).
|
||||||
|
** *New Structures* (include slink{cl} links to the new structure(s)).
|
||||||
|
** *New Functions* (include flink{cl} links to the new command(s)).
|
||||||
|
** *New SPIR-V Capabilities* (only for extensions adding new SPIR-V
|
||||||
|
capabilities; include xrefs to the appropriate new section of the List
|
||||||
|
of SPIR-V Capabilities in `appendices/spirvenv.txt`).
|
||||||
|
** *Issues* (in itemized list style, describing each significant issue
|
||||||
|
raised during development of the extension, and its resolution).
|
||||||
|
** *Version History* (in itemized list style, describing significant
|
||||||
|
functional changes to the extension during its development).
|
||||||
* Each extension's appendix file is automatically included from
|
* Each extension's appendix file is automatically included from
|
||||||
`appendices/extensions.txt` via code generated from `vk.xml`.
|
`appendices/extensions.txt` via code generated from `vk.xml`.
|
||||||
It is no longer necessary to explicit include the appendices.
|
It is no longer necessary to explicitly include the appendices.
|
||||||
* Extensions usually make significant additions and changes to the Vulkan
|
* Extensions usually make significant additions and changes to the Vulkan
|
||||||
specification.
|
specification.
|
||||||
They often add an entirely new chapter, or a new section of an existing
|
They often add an entirely new chapter, or a new section of an existing
|
||||||
|
@ -728,7 +755,7 @@ For EXT and vendor extension bitmask types, reservations must be approved by
|
||||||
the listed contact of the extension.
|
the listed contact of the extension.
|
||||||
Bits are not reserved, and must not be used in a published implementation or
|
Bits are not reserved, and must not be used in a published implementation or
|
||||||
specification until the reservation is merged into
|
specification until the reservation is merged into
|
||||||
<<extensions-api-registry,+vk.xml+>> by the registry maintainer.
|
<<extensions-api-registry,`vk.xml`>> by the registry maintainer.
|
||||||
|
|
||||||
|
|
||||||
== Required Extension Tokens
|
== Required Extension Tokens
|
||||||
|
@ -789,7 +816,7 @@ the following definitions were in effect:
|
||||||
|
|
||||||
Expanding on previous discussion, extensions can add values to existing
|
Expanding on previous discussion, extensions can add values to existing
|
||||||
enums; and can add their own commands, enums, typedefs, etc.
|
enums; and can add their own commands, enums, typedefs, etc.
|
||||||
This is done by adding to <<extensions-api-registry,+vk.xml+>>.
|
This is done by adding to <<extensions-api-registry,`vk.xml`>>.
|
||||||
All such additions will be included in the Vulkan header files supplied by
|
All such additions will be included in the Vulkan header files supplied by
|
||||||
Khronos.
|
Khronos.
|
||||||
|
|
||||||
|
@ -821,6 +848,7 @@ The use of a `default:` statement, within a `switch`, may avoid future
|
||||||
compilation issues.
|
compilation issues.
|
||||||
====
|
====
|
||||||
|
|
||||||
|
|
||||||
[[extension-function_prototypes]]
|
[[extension-function_prototypes]]
|
||||||
== Extension Function Prototypes
|
== Extension Function Prototypes
|
||||||
|
|
||||||
|
|
|
@ -150,6 +150,9 @@ include::style/vuid.txt[]
|
||||||
|
|
||||||
= Revision History
|
= Revision History
|
||||||
|
|
||||||
|
* 2018-11-19 - Add details to the <<extensions-documenting-extensions,
|
||||||
|
Changes for New Extensions>> section including the new "`Description`"
|
||||||
|
section, and other standard parts of extension appendices.
|
||||||
* 2018-08-13 - Add %inline directive to the <<markup-sample-section-images,
|
* 2018-08-13 - Add %inline directive to the <<markup-sample-section-images,
|
||||||
Figures>> section (public pull request 734).
|
Figures>> section (public pull request 734).
|
||||||
* 2018-07-30 - Added a section on <<writing-undefined, Describing Undefined
|
* 2018-07-30 - Added a section on <<writing-undefined, Describing Undefined
|
||||||
|
|
55
xml/vk.xml
55
xml/vk.xml
|
@ -146,7 +146,7 @@ server.
|
||||||
<type category="define">// Vulkan 1.1 version number
|
<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>
|
#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
|
<type category="define">// Version of this file
|
||||||
#define <name>VK_HEADER_VERSION</name> 94</type>
|
#define <name>VK_HEADER_VERSION</name> 95</type>
|
||||||
|
|
||||||
<type category="define">
|
<type category="define">
|
||||||
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
|
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
|
||||||
|
@ -2849,7 +2849,7 @@ server.
|
||||||
<member><type>VkBool32</type> <name>dstPremultiplied</name></member>
|
<member><type>VkBool32</type> <name>dstPremultiplied</name></member>
|
||||||
<member><type>VkBlendOverlapEXT</type> <name>blendOverlap</name></member>
|
<member><type>VkBlendOverlapEXT</type> <name>blendOverlap</name></member>
|
||||||
</type>
|
</type>
|
||||||
<type category="struct" name="VkPhysicalDeviceInlineUniformBlockFeaturesEXT" returnedonly="true" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
|
<type category="struct" name="VkPhysicalDeviceInlineUniformBlockFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
|
||||||
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
|
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
|
||||||
<member><type>void</type>* <name>pNext</name></member>
|
<member><type>void</type>* <name>pNext</name></member>
|
||||||
<member><type>VkBool32</type> <name>inlineUniformBlock</name></member>
|
<member><type>VkBool32</type> <name>inlineUniformBlock</name></member>
|
||||||
|
@ -2920,6 +2920,33 @@ server.
|
||||||
<member noautovalidity="true"><type>void</type>* <name>pNext</name></member>
|
<member noautovalidity="true"><type>void</type>* <name>pNext</name></member>
|
||||||
<member><type>VkBool32</type> <name>shaderDrawParameters</name></member>
|
<member><type>VkBool32</type> <name>shaderDrawParameters</name></member>
|
||||||
</type>
|
</type>
|
||||||
|
<type category="struct" name="VkPhysicalDeviceFloat16Int8FeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
|
||||||
|
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
|
||||||
|
<member noautovalidity="true"><type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure -->
|
||||||
|
<member><type>VkBool32</type> <name>shaderFloat16</name></member> <!-- 16-bit floats (halfs) in shaders -->
|
||||||
|
<member><type>VkBool32</type> <name>shaderInt8</name></member> <!-- 8-bit integers in shaders -->
|
||||||
|
</type>
|
||||||
|
<type category="struct" name="VkPhysicalDeviceFloatControlsPropertiesKHR" 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>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 -->
|
||||||
|
<member><type>VkBool32</type> <name>shaderDenormPreserveFloat16</name></member> <!-- An implementation can preserve denormals -->
|
||||||
|
<member><type>VkBool32</type> <name>shaderDenormPreserveFloat32</name></member> <!-- An implementation can preserve denormals -->
|
||||||
|
<member><type>VkBool32</type> <name>shaderDenormPreserveFloat64</name></member> <!-- An implementation can preserve denormals -->
|
||||||
|
<member><type>VkBool32</type> <name>shaderDenormFlushToZeroFloat16</name></member> <!-- An implementation can flush to zero denormals -->
|
||||||
|
<member><type>VkBool32</type> <name>shaderDenormFlushToZeroFloat32</name></member> <!-- An implementation can flush to zero denormals -->
|
||||||
|
<member><type>VkBool32</type> <name>shaderDenormFlushToZeroFloat64</name></member> <!-- An implementation can flush to zero denormals -->
|
||||||
|
<member><type>VkBool32</type> <name>shaderRoundingModeRTEFloat16</name></member> <!-- An implementation can support RTE -->
|
||||||
|
<member><type>VkBool32</type> <name>shaderRoundingModeRTEFloat32</name></member> <!-- An implementation can support RTE -->
|
||||||
|
<member><type>VkBool32</type> <name>shaderRoundingModeRTEFloat64</name></member> <!-- An implementation can support RTE -->
|
||||||
|
<member><type>VkBool32</type> <name>shaderRoundingModeRTZFloat16</name></member> <!-- An implementation can support RTZ -->
|
||||||
|
<member><type>VkBool32</type> <name>shaderRoundingModeRTZFloat32</name></member> <!-- An implementation can support RTZ -->
|
||||||
|
<member><type>VkBool32</type> <name>shaderRoundingModeRTZFloat64</name></member> <!-- An implementation can support RTZ -->
|
||||||
|
</type>
|
||||||
<type category="struct" name="VkNativeBufferANDROID">
|
<type category="struct" name="VkNativeBufferANDROID">
|
||||||
<member values="VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID"><type>VkStructureType</type> <name>sType</name></member>
|
<member values="VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID"><type>VkStructureType</type> <name>sType</name></member>
|
||||||
<member>const <type>void</type>* <name>pNext</name></member>
|
<member>const <type>void</type>* <name>pNext</name></member>
|
||||||
|
@ -3269,7 +3296,7 @@ server.
|
||||||
<member><type>VkBool32</type> <name>conditionalRendering</name></member>
|
<member><type>VkBool32</type> <name>conditionalRendering</name></member>
|
||||||
<member><type>VkBool32</type> <name>inheritedConditionalRendering</name></member>
|
<member><type>VkBool32</type> <name>inheritedConditionalRendering</name></member>
|
||||||
</type>
|
</type>
|
||||||
<type category="struct" name="VkPhysicalDeviceVulkanMemoryModelFeaturesKHR" returnedonly="true" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
|
<type category="struct" name="VkPhysicalDeviceVulkanMemoryModelFeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
|
||||||
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
|
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
|
||||||
<member noautovalidity="true"><type>void</type>* <name>pNext</name></member>
|
<member noautovalidity="true"><type>void</type>* <name>pNext</name></member>
|
||||||
<member><type>VkBool32</type> <name>vulkanMemoryModel</name></member>
|
<member><type>VkBool32</type> <name>vulkanMemoryModel</name></member>
|
||||||
|
@ -8482,10 +8509,12 @@ server.
|
||||||
<type name="VkCommandBufferInheritanceConditionalRenderingInfoEXT"/>
|
<type name="VkCommandBufferInheritanceConditionalRenderingInfoEXT"/>
|
||||||
</require>
|
</require>
|
||||||
</extension>
|
</extension>
|
||||||
<extension name="VK_KHR_extension_83" number="83" author="KHR" contact="Jan-Harald Fredriksen @janharaldfredriksen-arm" supported="disabled">
|
<extension name="VK_KHR_shader_float16_int8" number="83" type="device" requires="VK_KHR_get_physical_device_properties2" author="KHR" contact="Alexander Galazin @alegal-arm" supported="vulkan">
|
||||||
<require>
|
<require>
|
||||||
<enum value="0" name="VK_KHR_EXTENSION_83_SPEC_VERSION"/>
|
<enum value="1" name="VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION"/>
|
||||||
<enum value=""VK_KHR_extension_83"" name="VK_KHR_EXTENSION_83_EXTENSION_NAME"/>
|
<enum value=""VK_KHR_shader_float16_int8"" name="VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME"/>
|
||||||
|
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR"/>
|
||||||
|
<type name="VkPhysicalDeviceFloat16Int8FeaturesKHR"/>
|
||||||
</require>
|
</require>
|
||||||
</extension>
|
</extension>
|
||||||
<extension name="VK_KHR_16bit_storage" number="84" type="device" requires="VK_KHR_get_physical_device_properties2,VK_KHR_storage_buffer_storage_class" author="KHR" contact="Jan-Harald Fredriksen @janharaldfredriksen-arm" supported="vulkan" promotedto="VK_VERSION_1_1">
|
<extension name="VK_KHR_16bit_storage" number="84" type="device" requires="VK_KHR_get_physical_device_properties2,VK_KHR_storage_buffer_storage_class" author="KHR" contact="Jan-Harald Fredriksen @janharaldfredriksen-arm" supported="vulkan" promotedto="VK_VERSION_1_1">
|
||||||
|
@ -9844,10 +9873,12 @@ server.
|
||||||
<type name="VkPhysicalDeviceDriverPropertiesKHR"/>
|
<type name="VkPhysicalDeviceDriverPropertiesKHR"/>
|
||||||
</require>
|
</require>
|
||||||
</extension>
|
</extension>
|
||||||
<extension name="VK_ARM_extension_198" number="198" author="Alexander Galazin" contact="Alexander Galazin @alegal-arm" supported="disabled">
|
<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>
|
<require>
|
||||||
<enum value="0" name="VK_ARM_EXTENSION_198_SPEC_VERSION"/>
|
<enum value="1" name="VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION"/>
|
||||||
<enum value=""VK_EXT_extension_198"" name="VK_ARM_EXTENSION_198_EXTENSION_NAME"/>
|
<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"/>
|
||||||
</require>
|
</require>
|
||||||
</extension>
|
</extension>
|
||||||
<extension name="VK_NV_shader_subgroup_partitioned" number="199" type="device" requiresCore="1.1" author="NV" contact="Jeff Bolz @jeffbolznv" supported="vulkan">
|
<extension name="VK_NV_shader_subgroup_partitioned" number="199" type="device" requiresCore="1.1" author="NV" contact="Jeff Bolz @jeffbolznv" supported="vulkan">
|
||||||
|
@ -10210,5 +10241,11 @@ server.
|
||||||
<enum value=""VK_EXT_extension_248"" name="VK_EXT_EXTENSION_248_EXTENSION_NAME"/>
|
<enum value=""VK_EXT_extension_248"" name="VK_EXT_EXTENSION_248_EXTENSION_NAME"/>
|
||||||
</require>
|
</require>
|
||||||
</extension>
|
</extension>
|
||||||
|
<extension name="VK_KHR_extension_249" number="249" author="KHR" contact="Keith Packard @keithp" supported="disabled">
|
||||||
|
<require>
|
||||||
|
<enum value="0" name="VK_KHR_EXTENSION_249_SPEC_VERSION"/>
|
||||||
|
<enum value=""VK_KHR_extension_249"" name="VK_KHR_EXTENSION_249_EXTENSION_NAME"/>
|
||||||
|
</require>
|
||||||
|
</extension>
|
||||||
</extensions>
|
</extensions>
|
||||||
</registry>
|
</registry>
|
||||||
|
|
Loading…
Reference in New Issue