vulkan-3.15: Bindings to the Vulkan graphics API.
Safe HaskellNone
LanguageHaskell2010

Vulkan.Extensions.VK_EXT_inline_uniform_block

Description

Name

VK_EXT_inline_uniform_block - device extension

VK_EXT_inline_uniform_block

Name String
VK_EXT_inline_uniform_block
Extension Type
Device extension
Registered Extension Number
139
Revision
1
Extension and Version Dependencies
  • Requires Vulkan 1.0
  • Requires VK_KHR_get_physical_device_properties2
  • Requires VK_KHR_maintenance1
Contact

Other Extension Metadata

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

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 Structures

New Enum Constants

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 DescriptorSetLayoutBinding 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 WriteDescriptorSet, CopyDescriptorSet, and DescriptorUpdateTemplateEntry (where applicable) specify the byte offset and number of bytes to write/copy to the binding’s backing store. Additionally, the stride member of DescriptorUpdateTemplateEntry 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

See Also

DescriptorPoolInlineUniformBlockCreateInfoEXT, PhysicalDeviceInlineUniformBlockFeaturesEXT, PhysicalDeviceInlineUniformBlockPropertiesEXT, WriteDescriptorSetInlineUniformBlockEXT

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.

Synopsis

Documentation

data PhysicalDeviceInlineUniformBlockFeaturesEXT Source #

VkPhysicalDeviceInlineUniformBlockFeaturesEXT - Structure describing inline uniform block features that can be supported by an implementation

Members

This structure describes the following features:

Description

If the PhysicalDeviceInlineUniformBlockFeaturesEXT structure is included in the pNext chain of the PhysicalDeviceFeatures2 structure passed to getPhysicalDeviceFeatures2, it is filled in to indicate whether each corresponding feature is supported. PhysicalDeviceInlineUniformBlockFeaturesEXT can also be used in the pNext chain of DeviceCreateInfo to selectively enable these features.

Valid Usage (Implicit)

See Also

VK_EXT_inline_uniform_block, Bool32, StructureType

Constructors

PhysicalDeviceInlineUniformBlockFeaturesEXT 

Fields

Instances

Instances details
Eq PhysicalDeviceInlineUniformBlockFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_inline_uniform_block

Show PhysicalDeviceInlineUniformBlockFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_inline_uniform_block

Storable PhysicalDeviceInlineUniformBlockFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_inline_uniform_block

FromCStruct PhysicalDeviceInlineUniformBlockFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_inline_uniform_block

ToCStruct PhysicalDeviceInlineUniformBlockFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_inline_uniform_block

Zero PhysicalDeviceInlineUniformBlockFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_inline_uniform_block

data PhysicalDeviceInlineUniformBlockPropertiesEXT Source #

VkPhysicalDeviceInlineUniformBlockPropertiesEXT - Structure describing inline uniform block properties that can be supported by an implementation

Description

If the PhysicalDeviceInlineUniformBlockPropertiesEXT structure is included in the pNext chain of the PhysicalDeviceProperties2 structure passed to getPhysicalDeviceProperties2, it is filled in with each corresponding implementation-dependent property.

Valid Usage (Implicit)

See Also

VK_EXT_inline_uniform_block, StructureType

Constructors

PhysicalDeviceInlineUniformBlockPropertiesEXT 

Fields

Instances

Instances details
Eq PhysicalDeviceInlineUniformBlockPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_inline_uniform_block

Show PhysicalDeviceInlineUniformBlockPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_inline_uniform_block

Storable PhysicalDeviceInlineUniformBlockPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_inline_uniform_block

FromCStruct PhysicalDeviceInlineUniformBlockPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_inline_uniform_block

ToCStruct PhysicalDeviceInlineUniformBlockPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_inline_uniform_block

Zero PhysicalDeviceInlineUniformBlockPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_inline_uniform_block

data WriteDescriptorSetInlineUniformBlockEXT Source #

VkWriteDescriptorSetInlineUniformBlockEXT - Structure specifying inline uniform block data

Valid Usage (Implicit)

See Also

VK_EXT_inline_uniform_block, StructureType

Constructors

WriteDescriptorSetInlineUniformBlockEXT 

Fields

  • dataSize :: Word32

    dataSize is the number of bytes of inline uniform block data pointed to by pData.

    dataSize must be an integer multiple of 4

    dataSize must be greater than 0

  • data' :: Ptr ()

    pData is a pointer to dataSize number of bytes of data to write to the inline uniform block.

    pData must be a valid pointer to an array of dataSize bytes

Instances

Instances details
Show WriteDescriptorSetInlineUniformBlockEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_inline_uniform_block

Storable WriteDescriptorSetInlineUniformBlockEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_inline_uniform_block

FromCStruct WriteDescriptorSetInlineUniformBlockEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_inline_uniform_block

ToCStruct WriteDescriptorSetInlineUniformBlockEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_inline_uniform_block

Zero WriteDescriptorSetInlineUniformBlockEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_inline_uniform_block

data DescriptorPoolInlineUniformBlockCreateInfoEXT Source #

VkDescriptorPoolInlineUniformBlockCreateInfoEXT - Structure specifying the maximum number of inline uniform block bindings of a newly created descriptor pool

Valid Usage (Implicit)

See Also

VK_EXT_inline_uniform_block, StructureType

Constructors

DescriptorPoolInlineUniformBlockCreateInfoEXT 

Fields

Instances

Instances details
Eq DescriptorPoolInlineUniformBlockCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_inline_uniform_block

Show DescriptorPoolInlineUniformBlockCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_inline_uniform_block

Storable DescriptorPoolInlineUniformBlockCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_inline_uniform_block

FromCStruct DescriptorPoolInlineUniformBlockCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_inline_uniform_block

ToCStruct DescriptorPoolInlineUniformBlockCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_inline_uniform_block

Zero DescriptorPoolInlineUniformBlockCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_inline_uniform_block

type EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME = "VK_EXT_inline_uniform_block" Source #