VK_EXT_inline_uniform_block(3)
source link: https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_inline_uniform_block.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
VK_EXT_inline_uniform_block(3)
VK_EXT_inline_uniform_block(3) Manual Page
VK_EXT_inline_uniform_block - device extension
Registered Extension Number
Revision
Extension and Version Dependencies
-
Requires support for Vulkan 1.0
-
Requires
VK_KHR_get_physical_device_properties2
to be enabled for any device-level functionality -
Requires
VK_KHR_maintenance1
to be enabled for any device-level functionality
Deprecation state
-
Promoted to Vulkan 1.3
Contact
-
Daniel Rakos aqnuep
Other Extension Metadata
2018-08-01
Interactions and External Dependencies-
Promoted to Vulkan 1.3 Core
No known IP claims.
Contributors-
Daniel Rakos, AMD
-
Jeff Bolz, NVIDIA
-
Slawomir Grajewski, Intel
-
Neil Henning, Codeplay
Description
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 drawing or dispatching commands and may enable uniform data to be accessed with fewer indirections compared to uniforms backed by buffer memory.
New Enum Constants
-
VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME
-
VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION
-
Extending VkDescriptorType:
-
VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT
-
-
Extending VkStructureType:
-
VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT
-
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT
-
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT
-
VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT
-
Promotion to Vulkan 1.3
Functionality in this extension is included in core Vulkan 1.3, with the EXT suffix omitted. The original type, enum and command names are still available as aliases of the core functionality.
Issues
1) Do we need a new storage class for inline uniform blocks vs. uniform blocks?
RESOLVED: No.
The 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 descriptorCount
of VkDescriptorSetLayoutBinding
thus
provides the total number of bytes a particular binding with an inline
uniform block descriptor type can hold, while the srcArrayElement
,
dstArrayElement
, and descriptorCount
members of
VkWriteDescriptorSet
, VkCopyDescriptorSet
, and
VkDescriptorUpdateTemplateEntry
(where applicable) specify the byte
offset and number of bytes to write/copy to the binding’s backing store.
Additionally, the stride
member of
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 “arrayed”. 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 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 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
-
Document Notes
For more information, see the Vulkan Specification
This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.
Copyright
Copyright 2014-2022 The Khronos Group Inc.
SPDX-License-Identifier: CC-BY-4.0
Last updated 2022-09-22 03:00:27 -0700
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK