| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
Vulkan.Extensions.VK_VALVE_mutable_descriptor_type
Description
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
- Ratification Status
- Not ratified
- Extension and Version Dependencies
- VK_KHR_maintenance3
- Deprecation State
- Promoted to
VK_EXT_mutable_descriptor_typeextension
- Promoted to
- 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_VERSIONExtending
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
- pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE :: StructureType
- pattern STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE :: StructureType
- pattern DESCRIPTOR_TYPE_MUTABLE_VALVE :: DescriptorType
- pattern DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE :: DescriptorPoolCreateFlagBits
- pattern DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE :: DescriptorSetLayoutCreateFlagBits
- type PhysicalDeviceMutableDescriptorTypeFeaturesVALVE = PhysicalDeviceMutableDescriptorTypeFeaturesEXT
- type MutableDescriptorTypeListVALVE = MutableDescriptorTypeListEXT
- type MutableDescriptorTypeCreateInfoVALVE = MutableDescriptorTypeCreateInfoEXT
- 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
- data PhysicalDeviceMutableDescriptorTypeFeaturesEXT = PhysicalDeviceMutableDescriptorTypeFeaturesEXT {}
- data MutableDescriptorTypeListEXT = MutableDescriptorTypeListEXT {}
- data MutableDescriptorTypeCreateInfoEXT = MutableDescriptorTypeCreateInfoEXT {}
Documentation
pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE :: StructureType Source #
pattern DESCRIPTOR_TYPE_MUTABLE_VALVE :: DescriptorType Source #
pattern DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE :: DescriptorSetLayoutCreateFlagBits Source #
type PhysicalDeviceMutableDescriptorTypeFeaturesVALVE = PhysicalDeviceMutableDescriptorTypeFeaturesEXT Source #
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 #
data PhysicalDeviceMutableDescriptorTypeFeaturesEXT Source #
VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT - Structure describing whether the mutable descriptor type is supported
Members
This structure describes the following feature:
Description
sTypeis aStructureTypevalue identifying this structure.
pNextisNULLor a pointer to a structure extending this structure.mutableDescriptorTypeindicates that the implementation must support using theDescriptorTypeofDESCRIPTOR_TYPE_MUTABLE_EXTwith at least the following descriptor types, where any combination of the types must be supported:Additionally,
mutableDescriptorTypeindicates that:- Non-uniform descriptor indexing must be supported if all
descriptor types in a
MutableDescriptorTypeListEXTforDESCRIPTOR_TYPE_MUTABLE_EXThave the corresponding non-uniform indexing features enabled inPhysicalDeviceDescriptorIndexingFeatures. DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BITwithdescriptorTypeofDESCRIPTOR_TYPE_MUTABLE_EXTrelaxes 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
MutableDescriptorTypeListEXTforDESCRIPTOR_TYPE_MUTABLE_EXThave the corresponding dynamic indexing features enabled. DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXTmust be supported.DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXTmust be supported.
- Non-uniform descriptor indexing must be supported if all
descriptor types in a
If the PhysicalDeviceMutableDescriptorTypeFeaturesEXT 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. PhysicalDeviceMutableDescriptorTypeFeaturesEXT can also
be used in the pNext chain of DeviceCreateInfo
to selectively enable these features.
Valid Usage (Implicit)
See Also
VK_EXT_mutable_descriptor_type,
VK_VALVE_mutable_descriptor_type,
Bool32,
StructureType
Constructors
| PhysicalDeviceMutableDescriptorTypeFeaturesEXT | |
Fields | |
Instances
data MutableDescriptorTypeListEXT Source #
VkMutableDescriptorTypeListEXT - Structure describing descriptor types that a given descriptor may mutate to
Valid Usage
-
descriptorTypeCountmust not be0if the corresponding binding is ofDESCRIPTOR_TYPE_MUTABLE_EXT
-
pDescriptorTypesmust be a valid pointer to an array ofdescriptorTypeCountvalid, uniqueDescriptorTypevalues if the given binding is ofDESCRIPTOR_TYPE_MUTABLE_EXTtype -
descriptorTypeCountmust be0if the corresponding binding is not ofDESCRIPTOR_TYPE_MUTABLE_EXT -
pDescriptorTypesmust not containDESCRIPTOR_TYPE_MUTABLE_EXT -
pDescriptorTypesmust not containDESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC -
pDescriptorTypesmust not containDESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC -
pDescriptorTypesmust not containDESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
Valid Usage (Implicit)
- If
descriptorTypeCountis not0,pDescriptorTypesmust be a valid pointer to an array ofdescriptorTypeCountvalidDescriptorTypevalues
See Also
VK_EXT_mutable_descriptor_type,
VK_VALVE_mutable_descriptor_type,
DescriptorType,
MutableDescriptorTypeCreateInfoEXT
Constructors
| MutableDescriptorTypeListEXT | |
Fields
| |
Instances
| Show MutableDescriptorTypeListEXT Source # | |
Defined in Vulkan.Extensions.VK_EXT_mutable_descriptor_type Methods showsPrec :: Int -> MutableDescriptorTypeListEXT -> ShowS # show :: MutableDescriptorTypeListEXT -> String # showList :: [MutableDescriptorTypeListEXT] -> ShowS # | |
| FromCStruct MutableDescriptorTypeListEXT Source # | |
| ToCStruct MutableDescriptorTypeListEXT Source # | |
Defined in Vulkan.Extensions.VK_EXT_mutable_descriptor_type Methods withCStruct :: MutableDescriptorTypeListEXT -> (Ptr MutableDescriptorTypeListEXT -> IO b) -> IO b Source # pokeCStruct :: Ptr MutableDescriptorTypeListEXT -> MutableDescriptorTypeListEXT -> IO b -> IO b Source # withZeroCStruct :: (Ptr MutableDescriptorTypeListEXT -> IO b) -> IO b Source # pokeZeroCStruct :: Ptr MutableDescriptorTypeListEXT -> IO b -> IO b Source # cStructSize :: Int Source # | |
| Zero MutableDescriptorTypeListEXT Source # | |
Defined in Vulkan.Extensions.VK_EXT_mutable_descriptor_type Methods | |
data MutableDescriptorTypeCreateInfoEXT Source #
VkMutableDescriptorTypeCreateInfoEXT - 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 MutableDescriptorTypeListEXT 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
MutableDescriptorTypeCreateInfoEXT::pMutableDescriptorTypeLists[i].
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT
-
If
mutableDescriptorTypeListCountis not0,pMutableDescriptorTypeListsmust be a valid pointer to an array ofmutableDescriptorTypeListCountvalidMutableDescriptorTypeListEXTstructures
See Also
VK_EXT_mutable_descriptor_type,
VK_VALVE_mutable_descriptor_type,
MutableDescriptorTypeListEXT,
StructureType
Constructors
| MutableDescriptorTypeCreateInfoEXT | |
Fields
| |
Instances
| Show MutableDescriptorTypeCreateInfoEXT Source # | |
Defined in Vulkan.Extensions.VK_EXT_mutable_descriptor_type Methods showsPrec :: Int -> MutableDescriptorTypeCreateInfoEXT -> ShowS # | |
| FromCStruct MutableDescriptorTypeCreateInfoEXT Source # | |
| ToCStruct MutableDescriptorTypeCreateInfoEXT Source # | |
Defined in Vulkan.Extensions.VK_EXT_mutable_descriptor_type Methods withCStruct :: MutableDescriptorTypeCreateInfoEXT -> (Ptr MutableDescriptorTypeCreateInfoEXT -> IO b) -> IO b Source # pokeCStruct :: Ptr MutableDescriptorTypeCreateInfoEXT -> MutableDescriptorTypeCreateInfoEXT -> IO b -> IO b Source # withZeroCStruct :: (Ptr MutableDescriptorTypeCreateInfoEXT -> IO b) -> IO b Source # pokeZeroCStruct :: Ptr MutableDescriptorTypeCreateInfoEXT -> IO b -> IO b Source # cStructSize :: Int Source # | |
| Zero MutableDescriptorTypeCreateInfoEXT Source # | |
Defined in Vulkan.Extensions.VK_EXT_mutable_descriptor_type Methods | |