Safe Haskell | None |
---|---|
Language | Haskell2010 |
Name
VK_VALVE_mutable_descriptor_type - device extension
VK_VALVE_mutable_descriptor_type
- Name String
VK_VALVE_mutable_descriptor_type
- Extension Type
- Device extension
- Registered Extension Number
- 352
- Revision
- 1
- Extension and Version Dependencies
- Requires Vulkan 1.0
- Requires
VK_KHR_maintenance3
- Special Use
- Contact
Other Extension Metadata
- Last Modified Date
- 2020-12-02
- IP Status
- No known IP claims.
- Contributors
- Joshua Ashton, Valve
- Hans-Kristian Arntzen, Valve
Description
This extension allows applications to reduce descriptor memory footprint by allowing a descriptor to be able to mutate to a given list of descriptor types depending on which descriptor types are written into, or copied into a descriptor set.
The main use case this extension intends to address is descriptor
indexing with
DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT
where the descriptor types are completely generic, as this means
applications can allocate one large descriptor set, rather than having
one large descriptor set per descriptor type, which significantly bloats
descriptor memory usage and causes performance issues.
This extension also adds a mechanism to declare that a descriptor pool, and therefore the descriptor sets that are allocated from it, reside only in host memory; as such these descriptors can only be updated/copied, but not bound.
These features together allow much more efficient emulation of the raw D3D12 binding model. This extension is primarily intended to be useful for API layering efforts.
New Structures
Extending
DescriptorSetLayoutCreateInfo
,DescriptorPoolCreateInfo
:Extending
PhysicalDeviceFeatures2
,DeviceCreateInfo
:
New Enum Constants
VALVE_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION
Extending
DescriptorPoolCreateFlagBits
:Extending
DescriptorSetLayoutCreateFlagBits
:Extending
DescriptorType
:Extending
StructureType
:
Version History
Revision 1, 2020-12-01 (Joshua Ashton, Hans-Kristian Arntzen)
- Initial specification, squashed from public draft.
See Also
MutableDescriptorTypeCreateInfoVALVE
,
MutableDescriptorTypeListVALVE
,
PhysicalDeviceMutableDescriptorTypeFeaturesVALVE
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
- data PhysicalDeviceMutableDescriptorTypeFeaturesVALVE = PhysicalDeviceMutableDescriptorTypeFeaturesVALVE {}
- data MutableDescriptorTypeListVALVE = MutableDescriptorTypeListVALVE {}
- data MutableDescriptorTypeCreateInfoVALVE = MutableDescriptorTypeCreateInfoVALVE {}
- type VALVE_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION = 1
- pattern VALVE_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION :: forall a. Integral a => a
- type VALVE_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME = "VK_VALVE_mutable_descriptor_type"
- pattern VALVE_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
Documentation
data PhysicalDeviceMutableDescriptorTypeFeaturesVALVE Source #
VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE - Structure describing whether the mutable descriptor type is supported
Members
The members of the PhysicalDeviceMutableDescriptorTypeFeaturesVALVE
structure describe the following features:
Description
mutableDescriptorType
indicates that the implementation must support using theDescriptorType
ofDESCRIPTOR_TYPE_MUTABLE_VALVE
with at least the following descriptor types, where any combination of the types must be supported:
Additionally,
mutableDescriptorType
indicates that:- Non-uniform descriptor indexing must be supported if all
descriptor types in a
MutableDescriptorTypeListVALVE
forDESCRIPTOR_TYPE_MUTABLE_VALVE
have the corresponding non-uniform indexing features enabled inPhysicalDeviceDescriptorIndexingFeatures
. DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
withdescriptorType
ofDESCRIPTOR_TYPE_MUTABLE_VALVE
relaxes the list of required descriptor types to the descriptor types which have the corresponding update-after-bind feature enabled inPhysicalDeviceDescriptorIndexingFeatures
.- Dynamically uniform descriptor indexing must be supported if
all descriptor types in a
MutableDescriptorTypeListVALVE
forDESCRIPTOR_TYPE_MUTABLE_VALVE
have the corresponding dynamic indexing features enabled. DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE
must be supported.DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE
must be supported.
- Non-uniform descriptor indexing must be supported if all
descriptor types in a
Valid Usage (Implicit)
See Also
Instances
data MutableDescriptorTypeListVALVE Source #
VkMutableDescriptorTypeListVALVE - Structure describing descriptor types that a given descriptor may mutate to
Valid Usage
-
descriptorTypeCount
must not be0
if the corresponding binding is ofDESCRIPTOR_TYPE_MUTABLE_VALVE
-
pDescriptorTypes
must be a valid pointer to an array ofdescriptorTypeCount
valid, uniqueDescriptorType
values if the given binding is ofDESCRIPTOR_TYPE_MUTABLE_VALVE
type -
descriptorTypeCount
must be0
if the corresponding binding is not ofDESCRIPTOR_TYPE_MUTABLE_VALVE
-
pDescriptorTypes
must not containDESCRIPTOR_TYPE_MUTABLE_VALVE
-
pDescriptorTypes
must not containDESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
-
pDescriptorTypes
must not containDESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
-
pDescriptorTypes
must not containDESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT
Valid Usage (Implicit)
-
If
descriptorTypeCount
is not0
,pDescriptorTypes
must be a valid pointer to an array ofdescriptorTypeCount
validDescriptorType
values
See Also
MutableDescriptorTypeListVALVE | |
|
Instances
data MutableDescriptorTypeCreateInfoVALVE Source #
VkMutableDescriptorTypeCreateInfoVALVE - Structure describing the list of possible active descriptor types for mutable type descriptors
Description
If mutableDescriptorTypeListCount
is zero or if this structure is not
included in the pNext
chain, the MutableDescriptorTypeListVALVE
for
each element is considered to be zero or NULL
for each member.
Otherwise, the descriptor set layout binding at
DescriptorSetLayoutCreateInfo
::pBindings
[i]
uses the descriptor type lists in
MutableDescriptorTypeCreateInfoVALVE
::pMutableDescriptorTypeLists
[i].
Valid Usage (Implicit)
-
sType
must beSTRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE
-
If
mutableDescriptorTypeListCount
is not0
,pMutableDescriptorTypeLists
must be a valid pointer to an array ofmutableDescriptorTypeListCount
validMutableDescriptorTypeListVALVE
structures
See Also
MutableDescriptorTypeCreateInfoVALVE | |
|
Instances
pattern VALVE_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION :: forall a. Integral a => a Source #
type VALVE_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME = "VK_VALVE_mutable_descriptor_type" Source #
pattern VALVE_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #