Vulkan-Docs/appendices/VK_EXT_inline_uniform_block...

113 lines
3.8 KiB
Plaintext
Raw Normal View History

Change log for September 8, 2018 Vulkan 1.1.84 spec update: * Update release number to 84. Public Issues: * Fix code sample in the `<<VK_EXT_debug_utils>>` extension (public issue 751). * Fix misleading comment in `vk.xml` for slink:VkDescriptorBufferInfo::pname:buffer (public pull request 762). * Fix formatting of deprecation attributes in schema doc (public pull request 767). * Change `can` to `may` in the description of elink:VkSparseImageFormatFlagBits, which are return values from queries (public pull request 768). * Prettify generated contact list in extension appendices, adding logos and a New Issue link (public pull request 770). * Enable sRGB conversion based on the image view format, not the image format, in the <<textures-format-conversion, Format Conversion>> section (public pull request 773). * Fix typo in equation in the <<primsrast-lines-basic, Basic Line Segment Rasterization>> section (public pull request 780). * Fix special characters in GitHub contacts links (public pull request 783). * Make clean_pdf target remove pdf folder (public pull request 784). * Fix styleguide bad markup of block continuation (public pull request 792). Other Issues: * Allow a zero vertex attribute divisor in the `<<VK_EXT_vertex_attribute_divisor>>` extension, exposed via the slink:VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT feature. * Add missing `structextends="VkDeviceCreateInfo"` to slink:VkPhysicalDeviceShaderDrawParameterFeatures and slink:VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT. New Extensions: * `VK_KHR_memory_model` * `VK_EXT_astc_decode_mode` * `VK_EXT_inline_uniform_block`
2018-09-08 22:52:13 +00:00
include::meta/VK_EXT_inline_uniform_block.txt[]
*Last Modified Date*::
2018-08-01
*IP Status*::
No known IP claims.
*Contributors*::
- Daniel Rakos, AMD
- Jeff Bolz, NVIDIA
- Slawomir Grajewski, Intel
- Neil Henning, Codeplay
This extension introduces the ability to back uniform blocks directly with
descriptor sets by storing inline uniform data within descriptor pool
storage.
Compared to push constants this new construct allows uniform data to be
reused across multiple disjoint sets of draw or dispatch commands and may:
enable uniform data to be accessed with less indirections compared to
uniforms backed by buffer memory.
=== New Object Types
None
=== New Enum Constants
* Extending elink:VkStructureType:
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT
** ename:VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT
** ename:VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT
* Extending elink:VkDescriptorType:
** ename:VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT
=== New Enums
None
=== New Structures
* slink:VkPhysicalDeviceInlineUniformBlockFeaturesEXT
* slink:VkPhysicalDeviceInlineUniformBlockPropertiesEXT
* slink:VkWriteDescriptorSetInlineUniformBlockEXT
* slink:VkDescriptorPoolInlineUniformBlockCreateInfoEXT
=== New Functions
None
=== New Built-In Variables
None
=== Issues
1) Do we need a new storage class for inline uniform blocks vs uniform
blocks?
*RESOLVED*: No.
The code:Uniform storage class is used to allow the same syntax used for
both uniform buffers and inline uniform blocks.
2) Is the descriptor array index and array size expressed in terms of bytes
or dwords for inline uniform block descriptors?
*RESOLVED*: In bytes, but both must: be a multiple of 4, similar to how push
constant ranges are specified.
The pname:descriptorCount of sname:VkDescriptorSetLayoutBinding thus
provides the total number of bytes a particular binding with an inline
uniform block descriptor type can hold, while the pname:srcArrayElement,
pname:dstArrayElement, and pname:descriptorCount members of
sname:VkWriteDescriptorSet, sname:VkCopyDescriptorSet, and
sname:VkDescriptorUpdateTemplateEntry (where applicable) specify the byte
offset and number of bytes to write/copy to the binding's backing store.
Additionally, the pname:stride member of
sname:VkDescriptorUpdateTemplateEntry is ignored for inline uniform blocks
and a default value of one is used, meaning that the data to update inline
uniform block bindings with must be contiguous in memory.
3) What layout rules apply for uniform blocks corresponding to inline
constants?
*RESOLVED*: They use the same layout rules as uniform buffers.
4) Do we need to add non-uniform indexing features/properties as introduced
by `VK_EXT_descriptor_indexing` for inline uniform blocks?
*RESOLVED*: No, because inline uniform blocks are not allowed to be
2018-10-08 23:12:09 +00:00
"`arrayed`".
Change log for September 8, 2018 Vulkan 1.1.84 spec update: * Update release number to 84. Public Issues: * Fix code sample in the `<<VK_EXT_debug_utils>>` extension (public issue 751). * Fix misleading comment in `vk.xml` for slink:VkDescriptorBufferInfo::pname:buffer (public pull request 762). * Fix formatting of deprecation attributes in schema doc (public pull request 767). * Change `can` to `may` in the description of elink:VkSparseImageFormatFlagBits, which are return values from queries (public pull request 768). * Prettify generated contact list in extension appendices, adding logos and a New Issue link (public pull request 770). * Enable sRGB conversion based on the image view format, not the image format, in the <<textures-format-conversion, Format Conversion>> section (public pull request 773). * Fix typo in equation in the <<primsrast-lines-basic, Basic Line Segment Rasterization>> section (public pull request 780). * Fix special characters in GitHub contacts links (public pull request 783). * Make clean_pdf target remove pdf folder (public pull request 784). * Fix styleguide bad markup of block continuation (public pull request 792). Other Issues: * Allow a zero vertex attribute divisor in the `<<VK_EXT_vertex_attribute_divisor>>` extension, exposed via the slink:VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT feature. * Add missing `structextends="VkDeviceCreateInfo"` to slink:VkPhysicalDeviceShaderDrawParameterFeatures and slink:VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT. New Extensions: * `VK_KHR_memory_model` * `VK_EXT_astc_decode_mode` * `VK_EXT_inline_uniform_block`
2018-09-08 22:52:13 +00:00
A single binding with an inline uniform block descriptor type corresponds to
a single uniform block instance and the array indices inside that binding
refer to individual offsets within the uniform block (see issue #2).
However, this extension does introduce new features/properties about the
level of support for update-after-bind inline uniform blocks.
5) Is the pname:descriptorBindingVariableDescriptorCount feature introduced
by `VK_EXT_descriptor_indexing` supported for inline uniform blocks?
*RESOLVED*: Yes, as long as other inline uniform block specific limits are
respected.
6) Do the robustness guarantees of pname:robustBufferAccess apply to inline
uniform block accesses?
*RESOLVED*: No, similarly to push constants, as they are not backed by
buffer memory like uniform buffers.
=== Version History
* Revision 1, 2018-08-01 (Daniel Rakos)
- Internal revisions