| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Vulkan.Extensions.VK_NV_push_constant_bank
Description
Name
VK_NV_push_constant_bank - device extension
VK_NV_push_constant_bank
- Name String
VK_NV_push_constant_bank
- Extension Type
- Device extension
- Registered Extension Number
- 581
- Revision
- 1
- Ratification Status
- Not ratified
- Extension and Version Dependencies
- None
- SPIR-V Dependencies
- Contact
- Extension Proposal
- VK_NV_push_constant_bank
Other Extension Metadata
- Last Modified Date
- 2025-09-15
- Contributors
- Pat Brown, NVIDIA
- Piers Daniell, NVIDIA
- Rodrigo Locatti, NVIDIA
- Daniel Story, Nintendo
Description
The VK_NV_push_constant_bank extension allows applications to specify a bank and offset for push constants, enabling more flexible push constant management in descriptor heap scenarios where shaders are able to access different root descriptors.
Traditional push constants are placed in a default location, but this extension allows applications to specify which hardware constant bank to use and at what offset within that bank. This provides greater control over memory layout and enables more efficient use of hardware resources in advanced descriptor heap configurations.
The extension integrates with
VK_EXT_descriptor_heap
by allowing PushConstantBankInfoNV structures to be chained to
DescriptorSetAndBindingMappingEXT,
PushDataInfoEXT,
Promoted_From_VK_KHR_maintenance6AdditionalFunctionality.PushConstantsInfo',
or
IndirectCommandsLayoutTokenEXT
structures, specifying the hardware bank where push constants should be
placed as part of the descriptor heap mapping configuration or push data
operations.
Key features include:
- Bank and offset specification for push constant placement
- Integration with descriptor heap mapping through structure chaining
- Support for GLSL shader qualifiers for bank and offset specification in SPIR-V
- Validation of bank bounds and alignment requirements
- Compatibility with existing push constant API
The number of available push constant banks is implementation-dependent
and can be queried through separate limits in
PhysicalDevicePushConstantBankPropertiesNV:
maxGraphicsPushConstantBanks and maxComputePushConstantBanks for
non-descriptor heap usage, and maxGraphicsPushDataBanks and
maxComputePushDataBanks for descriptor heap scenarios. Applications
must ensure bank indices remain within the appropriate
implementation-defined range based on the shader type and usage context.
Shader support for banks and member offsets are defined by the SPV_NV_push_constant_bank SPIR-V extension, which can be used with the GLSL_NV_push_constant_bank GLSL extension.
New SPIR-V Capabilities
New SPIR-V Decorations
New Structures
Extending
DescriptorSetAndBindingMappingEXT,PushDataInfoEXT,Promoted_From_VK_KHR_maintenance6AdditionalFunctionality.PushConstantsInfo',IndirectCommandsLayoutTokenEXT:
Extending
PhysicalDeviceFeatures2,DeviceCreateInfo:Extending
PhysicalDeviceProperties2:
New Enum Constants
Issues
None.
Version History
Revision 1, 2025-09-15 (NVIDIA Vassili Nikolaev)
- Initial draft
See Also
No cross-references are available
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 PushConstantBankInfoNV = PushConstantBankInfoNV {}
- data PhysicalDevicePushConstantBankFeaturesNV = PhysicalDevicePushConstantBankFeaturesNV {}
- data PhysicalDevicePushConstantBankPropertiesNV = PhysicalDevicePushConstantBankPropertiesNV {}
- type NV_PUSH_CONSTANT_BANK_SPEC_VERSION = 1
- pattern NV_PUSH_CONSTANT_BANK_SPEC_VERSION :: Integral a => a
- type NV_PUSH_CONSTANT_BANK_EXTENSION_NAME = "VK_NV_push_constant_bank"
- pattern NV_PUSH_CONSTANT_BANK_EXTENSION_NAME :: (Eq a, IsString a) => a
Documentation
data PushConstantBankInfoNV Source #
VkPushConstantBankInfoNV - Structure specifying push constant bank information
Description
This structure can be chained to
PushDataInfoEXT,
Promoted_From_VK_KHR_maintenance6AdditionalFunctionality.PushConstantsInfo',
DescriptorSetAndBindingMappingEXT,
and
IndirectCommandsLayoutTokenEXT
via the pNext chain to specify push constant bank placement:
- When chained to
PushDataInfoEXT, it specifies the hardware bank into whichcmdPushDataEXTpushes the data. - When chained to
Promoted_From_VK_KHR_maintenance6AdditionalFunctionality.PushConstantsInfo', it specifies the hardware bank into whichPromoted_From_VK_KHR_maintenance6AdditionalFunctionality.cmdPushConstants2' pushes the constants. - When chained to
DescriptorSetAndBindingMappingEXT, it specifies the hardware push data bank from which the push data is read. - When chained to
IndirectCommandsLayoutTokenEXTwithINDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_EXT, it specifies the hardware bank into which indirect push data is placed.
This allows for more flexible push constant management in descriptor heap scenarios where shaders access different root descriptors with specific bank requirements.
Valid Usage
- When chained to
PushDataInfoEXT, if the command buffer is executing graphics operations,bankmust be less thanPhysicalDevicePushConstantBankPropertiesNV::maxGraphicsPushDataBanks
- When chained to
PushDataInfoEXT, if the command buffer is executing compute operations,bankmust be less thanPhysicalDevicePushConstantBankPropertiesNV::maxComputePushDataBanks - When chained to
Promoted_From_VK_KHR_maintenance6AdditionalFunctionality.PushConstantsInfo', if VkPushConstantsInfo::stageFlags includes a graphics stage thenbankmust be less thanPhysicalDevicePushConstantBankPropertiesNV::maxGraphicsPushConstantBanks - When chained to
Promoted_From_VK_KHR_maintenance6AdditionalFunctionality.PushConstantsInfo', if VkPushConstantsInfo::stageFlags includes a compute stage thenbankmust be less thanPhysicalDevicePushConstantBankPropertiesNV::maxComputePushConstantBanks - When chained to
DescriptorSetAndBindingMappingEXTfor a graphics shader stage,bankmust be less thanPhysicalDevicePushConstantBankPropertiesNV::maxGraphicsPushDataBanks - When chained to
DescriptorSetAndBindingMappingEXTfor a compute shader stage,bankmust be less thanPhysicalDevicePushConstantBankPropertiesNV::maxComputePushDataBanks
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_PUSH_CONSTANT_BANK_INFO_NV
See Also
Constructors
| PushConstantBankInfoNV | |
Instances
data PhysicalDevicePushConstantBankFeaturesNV Source #
VkPhysicalDevicePushConstantBankFeaturesNV - Structure describing push constant bank features
Members
This structure describes the following features:
Description
If the PhysicalDevicePushConstantBankFeaturesNV 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. If the application wishes to use a
Device with any features described by
PhysicalDevicePushConstantBankFeaturesNV, it must add an instance of
the structure, with the desired feature members set to
TRUE, to the pNext chain of
DeviceCreateInfo when creating the
Device.
Valid Usage (Implicit)
See Also
Constructors
| PhysicalDevicePushConstantBankFeaturesNV | |
Fields | |
Instances
data PhysicalDevicePushConstantBankPropertiesNV Source #
VkPhysicalDevicePushConstantBankPropertiesNV - Structure describing push constant bank properties
Members
This structure describes the following implementation-dependent limits:
Description
If the PhysicalDevicePushConstantBankPropertiesNV structure is
included in the pNext chain of the
PhysicalDeviceProperties2
structure passed to
getPhysicalDeviceProperties2,
it is filled in with each corresponding implementation-dependent
property.
The number of banks available for descriptor heap usage
(maxGraphicsPushDataBanks and maxComputePushDataBanks) is equal or
greater than the number of banks available for non-descriptor heap usage
(maxGraphicsPushConstantBanks and maxComputePushConstantBanks).
For graphics shaders, both descriptor heap and non-descriptor heap limits are greater than 1. For compute shaders, the number of banks is equal to or greater than 1.
Valid Usage (Implicit)
See Also
Constructors
| PhysicalDevicePushConstantBankPropertiesNV | |
Fields
| |
Instances
type NV_PUSH_CONSTANT_BANK_SPEC_VERSION = 1 Source #
pattern NV_PUSH_CONSTANT_BANK_SPEC_VERSION :: Integral a => a Source #
type NV_PUSH_CONSTANT_BANK_EXTENSION_NAME = "VK_NV_push_constant_bank" Source #
pattern NV_PUSH_CONSTANT_BANK_EXTENSION_NAME :: (Eq a, IsString a) => a Source #