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:
parent
7376fb77d1
commit
8897c572ce
|
@ -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/
|
||||
|
|
|
@ -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.
|
||||
|
|
2
Makefile
2
Makefile
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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).
|
||||
|
||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
||||
|
|
|
@ -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[]
|
||||
|
||||
|
|
|
@ -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]]
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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[]
|
||||
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
# The value to start tagging VU statements at, unless overridden by -nextvu
|
||||
startVUID = 2749
|
||||
startVUID = 2752
|
||||
|
|
|
@ -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=""VK_KHR_extension_276"" 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=""VK_EXT_extension_277"" name="VK_EXT_extension_277"/>
|
||||
<enum value="1" name="VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION"/>
|
||||
<enum value=""VK_EXT_shader_demote_to_helper_invocation"" 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=""VK_ARM_extension_281"" 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=""VK_EXT_extension_282"" name="VK_EXT_extension_282"/>
|
||||
<enum value="1" name="VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION"/>
|
||||
<enum value=""VK_EXT_texel_buffer_alignment"" 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>
|
||||
|
|
Loading…
Reference in New Issue