Change log for June 30, 2019 Vulkan 1.1.113 spec update:

* Update release number to 113.

Github Issues:

  * Fix typo in `<<VK_EXT_global_priority>>` appendix (public issue 979).

Internal Issues:

  * Expand the explanation of
    slink:VkSamplerYcbcrConversionImageFormatPropertiesKHR::pname:combinedImageSamplerDescriptorCount,
    and explain how it interacts with slink:VkWriteDescriptorSet,
    slink:VkDescriptorSetLayoutBinding::pname:descriptorCount, and
    slink:VkDescriptorPoolSize::pname:descriptorCount (internal issue 1643).
  * Clarify restrictions on components for code:OpImageGather in the
    <<spirvenv-module-validation, Validation Rules within a Module>> section
    (internal issue 1707).
  * Clarify the descriptions of <<limits-computeUnitsPerShaderArray,
    pname:computeUnitsPerShaderArray>> and <<limits-wavefrontSize,
    pname:wavefrontSize>> fields in
    slink:VkPhysicalDeviceShaderCorePropertiesAMD.

New Extensions:

  * `<<VK_EXT_texel_buffer_alignment>>`
  * `<<VK_EXT_shader_demote_to_helper_invocation>>`
This commit is contained in:
Jon Leech 2019-06-29 23:14:02 -07:00
parent 7376fb77d1
commit 8897c572ce
16 changed files with 386 additions and 36 deletions

View File

@ -57,7 +57,7 @@ hpp-generate:
- cmake -H. -Bbuild
- make -C build
- cd build
- ./VulkanHppGenerator
- ./VulkanHppGenerator "${SPEC_DIR}"/xml/vk.xml
after_script:
- mkdir -p Vulkan-Hpp/vulkan/
- cp /tmp/Vulkan-Hpp/vulkan/vulkan.hpp Vulkan-Hpp/vulkan/

View File

@ -8,6 +8,36 @@ public pull requests that have been accepted.
-----------------------------------------------------
Change log for June 30, 2019 Vulkan 1.1.113 spec update:
* Update release number to 113.
Github Issues:
* Fix typo in `<<VK_EXT_global_priority>>` appendix (public issue 979).
Internal Issues:
* Expand the explanation of
slink:VkSamplerYcbcrConversionImageFormatPropertiesKHR::pname:combinedImageSamplerDescriptorCount,
and explain how it interacts with slink:VkWriteDescriptorSet,
slink:VkDescriptorSetLayoutBinding::pname:descriptorCount, and
slink:VkDescriptorPoolSize::pname:descriptorCount (internal issue 1643).
* Clarify restrictions on components for code:OpImageGather in the
<<spirvenv-module-validation, Validation Rules within a Module>> section
(internal issue 1707).
* Clarify the descriptions of <<limits-computeUnitsPerShaderArray,
pname:computeUnitsPerShaderArray>> and <<limits-wavefrontSize,
pname:wavefrontSize>> fields in
slink:VkPhysicalDeviceShaderCorePropertiesAMD.
New Extensions:
* `<<VK_EXT_texel_buffer_alignment>>`
* `<<VK_EXT_shader_demote_to_helper_invocation>>`
-----------------------------------------------------
Change log for June 23, 2019 Vulkan 1.1.112 spec update:
* Update release number to 112.

View File

@ -121,7 +121,7 @@ VERBOSE =
# ADOCOPTS options for asciidoc->HTML5 output
NOTEOPTS = -a editing-notes -a implementation-guide
PATCHVERSION = 112
PATCHVERSION = 113
ifneq (,$(findstring VK_VERSION_1_1,$(VERSIONS)))
SPECREVISION = 1.1.$(PATCHVERSION)
else

View File

@ -1,12 +1,12 @@
include::meta/VK_AMD_shader_core_properties.txt[]
*Last Modified Date*::
2018-02-15
2019-06-25
*IP Status*::
No known IP claims.
*Contributors*::
- Martin Dinkov, AMD
- Matthaeus Chajdas, AMD
- Matthaeus G. Chajdas, AMD
This extension exposes shader core properties for a target physical device
through the `<<VK_KHR_get_physical_device_properties2>>` extension.
@ -104,5 +104,7 @@ printf("VGPRs are allocated in groups of this size: %d\n",
=== Version History
* Revision 2, 2019-06-25 (Matthaeus G. Chajdas)
- Clarified the meaning of a few fields.
* Revision 1, 2018-02-15 (Martin Dinkov)
- Initial draft.

View File

@ -22,7 +22,7 @@ in favour of the higher-priority task.
Therefore, higher-priority work may retain similar latency and throughput
characteristics even if the system is congested with lower priority work.
The global priority level of a queue shall take predence over the
The global priority level of a queue shall take precedence over the
per-process queue priority
(sname:VkDeviceQueueCreateInfo::pname:pQueuePriorities).

View File

@ -0,0 +1,56 @@
include::meta/VK_EXT_shader_demote_to_helper_invocation.txt[]
*Last Modified Date*::
2019-06-01
*IP Status*::
No known IP claims.
*Contributors*::
- Jeff Bolz, NVIDIA
This extension adds Vulkan support for the
`SPV_EXT_demote_to_helper_invocation` SPIR-V extension.
That SPIR-V extension provides a new instruction
code:OpDemoteToHelperInvocationEXT allowing shaders to "demote" a fragment
shader invocation to behave like a helper invocation for its duration.
The demoted invocation will have no further side effects and will not output
to the framebuffer, but remains active and can participate in computing
derivatives and in subgroup operations.
This is a better match for the "discard" instruction in HLSL.
=== New Object Types
None.
=== New Enum Constants
* Extending elink:VkStructureType:
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT
=== New Enums
None.
=== New Structures
* slink:VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT
=== New Functions
None.
=== New SPIR-V Capability
* <<spirvenv-capabilities-table-demote,DemoteToHelperInvocationEXT>>
=== Issues
None.
=== Examples
None.
=== Version History
* Revision 1, 2019-06-01 (Jeff Bolz)
- Initial draft

View File

@ -0,0 +1,41 @@
include::meta/VK_EXT_texel_buffer_alignment.txt[]
*Last Modified Date*::
2019-06-06
*IP Status*::
No known IP claims.
*Interactions and External Dependencies*::
*Contributors*::
- Jeff Bolz, NVIDIA
This extension adds more expressive alignment requirements for uniform and
storage texel buffers.
Some implementations have single texel alignment requirements that can't be
expressed via
slink:VkPhysicalDeviceLimits::pname:minTexelBufferOffsetAlignment.
=== New Enum Constants
* Extending elink:VkStructureType:
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT
=== New Enums
None.
=== New Structures
* slink:VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT
* slink:VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT
=== New Functions
None.
=== Issues
=== Version History
* Revision 1, 2019-06-06 (Jeff Bolz)
- Initial draft

View File

@ -290,6 +290,10 @@ ifdef::VK_NV_shading_rate_image[]
| code:FragmentShaderShadingRateInterlockEXT | <<features-features-fragmentShaderShadingRateInterlock,fragmentShaderShadingRateInterlock>>, <<features-shadingRateImage,shadingRateImage>>
endif::VK_NV_shading_rate_image[]
endif::VK_EXT_fragment_shader_interlock[]
ifdef::VK_EXT_shader_demote_to_helper_invocation[]
[[spirvenv-capabilities-table-demote]]
| code:DemoteToHelperInvocationEXT | <<features-features-shaderDemoteToHelperInvocation,shaderDemoteToHelperInvocation>>
endif::VK_EXT_shader_demote_to_helper_invocation[]
|====
ifdef::VK_VERSION_1_1,VK_KHR_variable_pointers[]
@ -498,6 +502,11 @@ The application can: pass a SPIR-V module to flink:vkCreateShaderModule that
uses the `SPV_EXT_fragment_shader_interlock` SPIR-V extension.
endif::VK_EXT_fragment_shader_interlock[]
ifdef::VK_EXT_shader_demote_to_helper_invocation[]
The application can: pass a SPIR-V module to flink:vkCreateShaderModule that
uses the `SPV_EXT_demote_to_helper_invocation` SPIR-V extension.
endif::VK_EXT_shader_demote_to_helper_invocation[]
The application must: not pass a SPIR-V module containing any of the
following to flink:vkCreateShaderModule:
@ -646,6 +655,8 @@ endif::VK_KHR_shader_float16_int8+!VK_KHR_16bit_storage[]
** Objects of types code:OpTypeImage, code:OpTypeSampler,
code:OpTypeSampledImage, and arrays of these types must: not be stored
to or modified.
* The "`Component`" operand of code:OpImageGather, and
code:OpImageSparseGather must: be the <id> of a constant instruction.
* Structure types must: not contain opaque types.
* Decorations
** Any code:BuiltIn decoration not listed in

View File

@ -738,14 +738,29 @@ endif::VK_KHR_sampler_ycbcr_conversion[]
include::{generated}/validity/structs/VkSamplerYcbcrConversionImageFormatProperties.txt[]
--
pname:combinedImageSamplerDescriptorCount affects only the count towards the
pname:maxDescriptorSetSamplers, pname:maxDescriptorSetSampledImages,
pname:maxPerStageDescriptorSamplers, and
pname:maxPerStageDescriptorSampledImages limits, and does not affect binding
numbers in the slink:VkDescriptorSetLayoutBinding.
pname:combinedImageSamplerDescriptorCount is a number between 1 and the
number of planes in the format.
A descriptor set layout binding with immutable Y'C~b~C~r~ conversion
samplers will have a maximum pname:combinedImageSamplerDescriptorCount which
is the maximum across all formats supported by its samplers of the
pname:combinedImageSamplerDescriptorCount for each format.
Descriptor sets with that layout will internally use that maximum
pname:combinedImageSamplerDescriptorCount descriptors for each descriptor in
the binding.
This expanded number of descriptors will be consumed from the descriptor
pool when a descriptor set is allocated, and counts towards the
pname:maxDescriptorSetSamplers, pname:maxDescriptorSetSampledImages,
pname:maxPerStageDescriptorSamplers, and
pname:maxPerStageDescriptorSampledImages limits.
.Note
[NOTE]
====
All descriptors in a binding use the same maximum
pname:combinedImageSamplerDescriptorCount descriptors to allow
implementations to use a uniform stride for dynamic indexing of the
descriptors in the binding.
====
endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]

View File

@ -2066,6 +2066,28 @@ ifdef::VK_EXT_inline_uniform_block[]
of this type.
endif::VK_EXT_inline_uniform_block[]
ifdef::VULKAN_1_1,VK_KHR_sampler_ycbcr_conversion[]
Each combined image sampler descriptor for a multi-planar format may:
consume multiple descriptors from the pool, as indicated by
slink:VkSamplerYcbcrConversionImageFormatProperties::pname:maxCombinedImageSamplerDescriptorCount.
The pname:descriptorCount for pools that will contain such descriptors must:
be expanded to allow for this.
[NOTE]
.Note
====
For example, consider a descriptor set layout binding with two descriptors
and immutable samplers for multi-planar formats that have
sname:VkSamplerYcbcrConversionImageFormatProperties::pname:combinedImageSamplerDescriptorCount
values of `2` and `3` respectively.
There are two descriptors in the binding and the maximum
pname:combinedImageSamplerDescriptorCount is `3`, so descriptor sets with
this layout consume `6` descriptors from the descriptor pool.
To create a descriptor pool that allows allocating four descriptor sets with
this layout, pname:descriptorCount must be at least `24`.
====
endif::VULKAN_1_1,VK_KHR_sampler_ycbcr_conversion[]
.Valid Usage
****
* [[VUID-VkDescriptorPoolSize-descriptorCount-00302]]

View File

@ -2010,11 +2010,11 @@ structure describe the following features:
* [[features-features-fragmentShaderSampleInterlock]]
pname:fragmentShaderSampleInterlock indicates that the implementation
supports the code:FragmentShaderSampleInterlockEXT SPIR-V capability.
* [[features-features-fragmentShaderPixelInterlock]]
pname:fragmentShaderPixelInterlock indicates that the implementation
supports the code:FragmentShaderPixelInterlockEXT SPIR-V capability.
* [[features-features-fragmentShaderShadingRateInterlock]]
pname:fragmentShaderShadingRateInterlock indicates that the
implementation supports the code:FragmentShaderShadingRateInterlockEXT
@ -2196,6 +2196,65 @@ include::{generated}/validity/structs/VkPhysicalDeviceShaderSMBuiltinsFeaturesNV
endif::VK_NV_shader_sm_builtins[]
ifdef::VK_EXT_shader_demote_to_helper_invocation[]
[open,refpage='VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT',desc='Structure describing the shader demote to helper invocations features that can be supported by an implementation',type='structs']
--
The sname:VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT
structure is defined as:
include::{generated}/api/structs/VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT.txt[]
The members of the
sname:VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT structure
describe the following features:
* [[features-features-shaderDemoteToHelperInvocation]]
pname:shaderDemoteToHelperInvocation indicates whether the
implementation supports the SPIR-V code:DemoteToHelperInvocationEXT
capability.
If the sname:VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT
structure is included in the pname:pNext chain of
slink:VkPhysicalDeviceFeatures2, it is filled with values indicating whether
the feature is supported.
sname:VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT can: also be
used in the pname:pNext chain of slink:VkDeviceCreateInfo to enable the
feature.
include::{generated}/validity/structs/VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT.txt[]
--
endif::VK_EXT_shader_demote_to_helper_invocation[]
ifdef::VK_EXT_texel_buffer_alignment[]
[open,refpage='VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT',desc='Structure describing the texel buffer alignment features that can be supported by an implementation',type='structs']
--
The sname:VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT structure is
defined as:
include::{generated}/api/structs/VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT.txt[]
The members of the sname:VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT
structure describe the following features:
* [[features-features-texelBufferAlignment]] pname:texelBufferAlignment
indicates whether the implementation uses more specific alignment
requirements advertised in
slink:VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT rather than
slink:VkPhysicalDeviceLimits::pname:minTexelBufferOffsetAlignment.
If the sname:VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT structure is
included in the pname:pNext chain of slink:VkPhysicalDeviceFeatures2, it is
filled with values indicating whether the feature is supported.
sname:VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT can: also be used in
the pname:pNext chain of slink:VkDeviceCreateInfo to enable the feature.
include::{generated}/validity/structs/VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT.txt[]
--
endif::VK_EXT_texel_buffer_alignment[]
[[features-requirements]]
== Feature Requirements

View File

@ -559,11 +559,24 @@ range.
pname:minTexelBufferOffsetAlignment is the minimum required: alignment,
in bytes, for the pname:offset member of the
sname:VkBufferViewCreateInfo structure for texel buffers.
When a buffer view is created for a buffer which was created with
ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT or
ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT set in the pname:usage
member of the sname:VkBufferCreateInfo structure, the pname:offset must:
be an integer multiple of this limit.
ifdef::VK_EXT_texel_buffer_alignment[]
If <<features-features-texelBufferAlignment,texelBufferAlignment>> is
enabled, this limit is equivalent to the maximum of the
<<limits-uniformTexelBufferOffsetAlignmentBytes,
pname:uniformTexelBufferOffsetAlignmentBytes>> and
<<limits-storageTexelBufferOffsetAlignmentBytes,
pname:storageTexelBufferOffsetAlignmentBytes>> members of
slink:VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT, but smaller
alignment is optionally: allowed by
<<limits-storageTexelBufferOffsetSingleTexelAlignment,
pname:storageTexelBufferOffsetSingleTexelAlignment>> and
<<limits-uniformTexelBufferOffsetSingleTexelAlignment,
pname:uniformTexelBufferOffsetSingleTexelAlignment>>.
If <<features-features-texelBufferAlignment,texelBufferAlignment>> is
not enabled,
endif::VK_EXT_texel_buffer_alignment[]
slink:VkBufferViewCreateInfo::pname:offset must: be a multiple of this
value.
* [[limits-minUniformBufferOffsetAlignment]]
pname:minUniformBufferOffsetAlignment is the minimum required:
alignment, in bytes, for the pname:offset member of the
@ -1942,15 +1955,16 @@ describe the following implementation-dependent limits:
launcher) and shader export (export buffer) units.
Currently, a shader engine can have one or two shader arrays.
* [[limits-computeUnitsPerShaderArray]] pname:computeUnitsPerShaderArray
is an unsigned integer value indicating the number of compute units
within a shader array.
is an unsigned integer value indicating the physical number of compute
units within a shader array.
The active number of compute units in a shader array may: be lower.
A compute unit houses a set of SIMDs along with a sequencer module and a
local data store.
* [[limits-simdPerComputeUnit]] pname:simdPerComputeUnit is an unsigned
integer value indicating the number of SIMDs inside a compute unit.
Each SIMD processes a single instruction at a time.
* [[limits-wavefrontSize]] pname:wavefrontSize is an unsigned integer
value indicating the number of channels (or threads) in a wavefront.
value indicating the maximum size of a subgroup.
* [[limits-sgprsPerSimd]] pname:sgprsPerSimd is an unsigned integer value
indicating the number of physical Scalar General Purpose Registers
(SGPRs) per SIMD.
@ -2238,6 +2252,57 @@ include::{generated}/validity/structs/VkPhysicalDeviceShaderSMBuiltinsProperties
endif::VK_NV_shader_sm_builtins[]
ifdef::VK_EXT_texel_buffer_alignment[]
[open,refpage='VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT',desc='Structure describing the texel buffer alignment requirements supported by an implementation',type='structs']
--
The sname:VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT structure is
defined as:
include::{generated}/api/structs/VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT.txt[]
The members of the sname:VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT
structure describe the following implementation-dependent limits:
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
* [[limits-storageTexelBufferOffsetAlignmentBytes]]
pname:storageTexelBufferOffsetAlignmentBytes is a byte alignment that is
sufficient for a storage texel buffer of any format.
* [[limits-storageTexelBufferOffsetSingleTexelAlignment]]
pname:storageTexelBufferOffsetSingleTexelAlignment indicates whether
single texel alignment is sufficient for a storage texel buffer of any
format.
* [[limits-uniformTexelBufferOffsetAlignmentBytes]]
pname:uniformTexelBufferOffsetAlignmentBytes is a byte alignment that is
sufficient for a uniform texel buffer of any format.
* [[limits-uniformTexelBufferOffsetSingleTexelAlignment]]
pname:uniformTexelBufferOffsetSingleTexelAlignment indicates whether
single texel alignment is sufficient for a uniform texel buffer of any
format.
If the sname:VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT structure is
included in the pname:pNext chain of slink:VkPhysicalDeviceProperties2, it
is filled with the implementation-dependent limits.
If the single texel alignment property is ename:VK_FALSE, then the buffer
view's offset must: be aligned to the corresponding byte alignment value.
If the single texel alignment property is ename:VK_TRUE, then the buffer
view's offset must: be aligned to the lesser of the corresponding byte
alignment value or the size of a single texel, based on
slink:VkBufferViewCreateInfo::pname:format.
If the size of a single texel is a multiple of three bytes, then the size of
a single component of the format is used instead.
These limits must: not advertise a larger alignment than the
<<limits-required,required>> maximum minimum value of
slink:VkPhysicalDeviceLimits::pname:minTexelBufferOffsetAlignment, for any
format that supports use as a texel buffer.
include::{generated}/validity/structs/VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT.txt[]
--
endif::VK_EXT_texel_buffer_alignment[]
[[limits-minmax]]
== Limit Requirements

View File

@ -520,8 +520,9 @@ include::{generated}/api/structs/VkBufferViewCreateInfo.txt[]
****
* [[VUID-VkBufferViewCreateInfo-offset-00925]]
pname:offset must: be less than the size of pname:buffer
* [[VUID-VkBufferViewCreateInfo-offset-00926]]
pname:offset must: be a multiple of
* [[VUID-VkBufferViewCreateInfo-offset-02749]]
If the <<features-features-texelBufferAlignment,texelBufferAlignment>>
feature is not enabled, pname:offset must: be a multiple of
sname:VkPhysicalDeviceLimits::pname:minTexelBufferOffsetAlignment
* [[VUID-VkBufferViewCreateInfo-range-00928]]
If pname:range is not equal to ename:VK_WHOLE_SIZE, pname:range must: be
@ -560,6 +561,30 @@ include::{generated}/api/structs/VkBufferViewCreateInfo.txt[]
* [[VUID-VkBufferViewCreateInfo-buffer-00935]]
If pname:buffer is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
ifdef::VK_EXT_texel_buffer_alignment[]
* [[VUID-VkBufferViewCreateInfo-buffer-02750]]
If the <<features-features-texelBufferAlignment,texelBufferAlignment>>
feature is enabled and if pname:buffer was created with pname:usage
containing ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT, pname:offset
must: be a multiple of the lesser of
slink:VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT::pname:storageTexelBufferOffsetAlignmentBytes
or, if
slink:VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT::pname:storageTexelBufferOffsetSingleTexelAlignment
is ename:VK_TRUE, the size of a texel of the requested pname:format.
If the size of a texel is a multiple of three bytes, then the size of a
single component of pname:format is used instead
* [[VUID-VkBufferViewCreateInfo-buffer-02751]]
If the <<features-features-texelBufferAlignment,texelBufferAlignment>>
feature is enabled and if pname:buffer was created with pname:usage
containing ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT, pname:offset
must: be a multiple of the lesser of
slink:VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT::pname:uniformTexelBufferOffsetAlignmentBytes
or, if
slink:VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT::pname:uniformTexelBufferOffsetSingleTexelAlignment
is ename:VK_TRUE, the size of a texel of the requested pname:format.
If the size of a texel is a multiple of three bytes, then the size of a
single component of pname:format is used instead
endif::VK_EXT_texel_buffer_alignment[]
****
include::{generated}/validity/structs/VkBufferViewCreateInfo.txt[]

View File

@ -2039,8 +2039,8 @@ for corner-sampled images.
endif::VK_NV_corner_sampled_image[]
and where [eq]#({DeltaUpper}~i~, {DeltaUpper}~j~, {DeltaUpper}~k~)# are
taken from the image instruction if it includes a [eq]#ConstOffset# operand,
otherwise they are taken to be zero.
taken from the image instruction if it includes a code:ConstOffset or
code:Offset operand, otherwise they are taken to be zero.
Operations then proceed to Unnormalized Texel Coordinate Operations.
@ -2339,7 +2339,7 @@ comp & \,\text{from SPIR-V operand Component}
++++++++++++++++++++++++
ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
code:OpImage*Gather must: not be used on a sampled image with
code:OpImage*code:Gather must: not be used on a sampled image with
<<samplers-YCbCr-conversion,sampler Y'C~B~C~R~ conversion>> enabled.
endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]

View File

@ -1,2 +1,2 @@
# The value to start tagging VU statements at, unless overridden by -nextvu
startVUID = 2749
startVUID = 2752

42
xml/vk.xml Normal file → Executable file
View File

@ -154,7 +154,7 @@ server.
<type category="define">// Vulkan 1.1 version number
#define <name>VK_API_VERSION_1_1</name> <type>VK_MAKE_VERSION</type>(1, 1, 0)// Patch version should always be set to 0</type>
<type category="define">// Version of this file
#define <name>VK_HEADER_VERSION</name> 112</type>
#define <name>VK_HEADER_VERSION</name> 113</type>
<type category="define">
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
@ -3134,10 +3134,10 @@ typedef void <name>CAMetalLayer</name>;
<member><type>void</type>* <name>pNext</name><comment>Pointer to next structure</comment></member>
<member><type>uint32_t</type> <name>shaderEngineCount</name><comment>number of shader engines</comment></member>
<member><type>uint32_t</type> <name>shaderArraysPerEngineCount</name><comment>number of shader arrays</comment></member>
<member><type>uint32_t</type> <name>computeUnitsPerShaderArray</name><comment>number of CUs per shader array</comment></member>
<member><type>uint32_t</type> <name>computeUnitsPerShaderArray</name><comment>number of physical CUs per shader array</comment></member>
<member><type>uint32_t</type> <name>simdPerComputeUnit</name><comment>number of SIMDs per compute unit</comment></member>
<member><type>uint32_t</type> <name>wavefrontsPerSimd</name><comment>number of wavefront slots in each SIMD</comment></member>
<member><type>uint32_t</type> <name>wavefrontSize</name><comment>number of threads per wavefront</comment></member>
<member><type>uint32_t</type> <name>wavefrontSize</name><comment>maximum number of threads per wavefront</comment></member>
<member><type>uint32_t</type> <name>sgprsPerSimd</name><comment>number of physical SGPRs per SIMD</comment></member>
<member><type>uint32_t</type> <name>minSgprAllocation</name><comment>minimum number of SGPRs that can be allocated by a wave</comment></member>
<member><type>uint32_t</type> <name>maxSgprAllocation</name><comment>number of available SGPRs</comment></member>
@ -3964,6 +3964,24 @@ typedef void <name>CAMetalLayer</name>;
<member><type>VkBool32</type> <name>fragmentShaderPixelInterlock</name></member>
<member><type>VkBool32</type> <name>fragmentShaderShadingRateInterlock</name></member>
</type>
<type category="struct" name="VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member noautovalidity="true"><type>void</type>* <name>pNext</name></member>
<member><type>VkBool32</type> <name>shaderDemoteToHelperInvocation</name></member>
</type>
<type category="struct" name="VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member noautovalidity="true"><type>void</type>* <name>pNext</name></member>
<member><type>VkBool32</type> <name>texelBufferAlignment</name></member>
</type>
<type category="struct" name="VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT" structextends="VkPhysicalDeviceMemoryProperties2" returnedonly="true">
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member noautovalidity="true"><type>void</type>* <name>pNext</name></member>
<member><type>VkDeviceSize</type> <name>storageTexelBufferOffsetAlignmentBytes</name></member>
<member><type>VkBool32</type> <name>storageTexelBufferOffsetSingleTexelAlignment</name></member>
<member><type>VkDeviceSize</type> <name>uniformTexelBufferOffsetAlignmentBytes</name></member>
<member><type>VkBool32</type> <name>uniformTexelBufferOffsetSingleTexelAlignment</name></member>
</type>
</types>
<comment>Vulkan enumerant (token) definitions</comment>
@ -11076,10 +11094,12 @@ typedef void <name>CAMetalLayer</name>;
<enum value="&quot;VK_KHR_extension_276&quot;" name="VK_KHR_extension_276"/>
</require>
</extension>
<extension name="VK_EXT_extension_277" number="277" type="device" author="EXT" contact="Jeff Bolz @jeffbolznv" supported="disabled">
<extension name="VK_EXT_shader_demote_to_helper_invocation" number="277" type="device" requires="VK_KHR_get_physical_device_properties2" author="EXT" contact="Jeff Bolz @jeffbolznv" supported="vulkan">
<require>
<enum value="0" name="VK_EXT_EXTENSION_277_SPEC_VERSION"/>
<enum value="&quot;VK_EXT_extension_277&quot;" name="VK_EXT_extension_277"/>
<enum value="1" name="VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION"/>
<enum value="&quot;VK_EXT_shader_demote_to_helper_invocation&quot;" name="VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME"/>
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT"/>
<type name="VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT"/>
</require>
</extension>
<extension name="VK_NV_extension_278" number="278" type="device" author="NV" contact="Christoph Kubisch @pixeljetstream" supported="disabled">
@ -11106,10 +11126,14 @@ typedef void <name>CAMetalLayer</name>;
<enum value="&quot;VK_ARM_extension_281&quot;" name="VK_ARM_extension_281"/>
</require>
</extension>
<extension name="VK_EXT_extension_282" number="282" type="device" author="EXT" contact="Jeff Bolz @jeffbolznv" supported="disabled">
<extension name="VK_EXT_texel_buffer_alignment" number="282" type="device" requires="VK_KHR_get_physical_device_properties2" author="EXT" contact="Jeff Bolz @jeffbolznv" supported="vulkan">
<require>
<enum value="0" name="VK_EXT_EXTENSION_282_SPEC_VERSION"/>
<enum value="&quot;VK_EXT_extension_282&quot;" name="VK_EXT_extension_282"/>
<enum value="1" name="VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION"/>
<enum value="&quot;VK_EXT_texel_buffer_alignment&quot;" name="VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME"/>
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT"/>
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT"/>
<type name="VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT"/>
<type name="VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT"/>
</require>
</extension>
</extensions>