Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Name
VK_KHR_buffer_device_address - device extension
VK_KHR_buffer_device_address
- Name String
VK_KHR_buffer_device_address
- Extension Type
- Device extension
- Registered Extension Number
- 258
- Revision
- 1
- Ratification Status
- Ratified
- Extension and Version Dependencies
VK_KHR_get_physical_device_properties2 and
VK_KHR_device_group or Version 1.1
- Deprecation State
- Promoted to Vulkan 1.2
- Contact
Other Extension Metadata
- Last Modified Date
- 2019-06-24
- IP Status
- No known IP claims.
- Interactions and External Dependencies
- Promoted to Vulkan 1.2 Core
- This extension requires SPV_KHR_physical_storage_buffer
- This extension provides API support for GL_EXT_buffer_reference and GL_EXT_buffer_reference2 and GL_EXT_buffer_reference_uvec2
- Contributors
- Jeff Bolz, NVIDIA
- Neil Henning, AMD
- Tobias Hector, AMD
- Faith Ekstrand, Intel
- Baldur Karlsson, Valve
- Jan-Harald Fredriksen, Arm
Description
This extension allows the application to query a 64-bit buffer device
address value for a buffer, which can be used to access the buffer
memory via the PhysicalStorageBuffer
storage class in the
GL_EXT_buffer_reference
GLSL extension and
SPV_KHR_physical_storage_buffer
SPIR-V extension.
Another way to describe this extension is that it adds “pointers to
buffer memory in shaders”. By calling
getBufferDeviceAddress
with a Buffer
, it will return a
DeviceAddress
value which represents
the address of the start of the buffer.
getBufferOpaqueCaptureAddress
and
getDeviceMemoryOpaqueCaptureAddress
allow opaque addresses for buffers and memory objects to be queried for
the current process. A trace capture and replay tool can then supply
these addresses to be used at replay time to match the addresses used
when the trace was captured. To enable tools to insert these queries,
new memory allocation flags must be specified for memory objects that
will be bound to buffers accessed via the PhysicalStorageBuffer
storage class. __Note that this mechanism is intended only to support
capture/replay tools, and is not recommended for use in other
applications.__
Promotion to Vulkan 1.2
All functionality in this extension is included in core Vulkan 1.2, with
the KHR suffix omitted. However, if Vulkan 1.2 is supported and this
extension is not, the bufferDeviceAddress
feature is optional. The
original type, enum and command names are still available as aliases of
the core functionality.
Promotion to Vulkan 1.3
Support for the bufferDeviceAddress
feature is mandatory in Vulkan
1.3, regardless of whether this extension is supported.
New Commands
New Structures
DeviceMemoryOpaqueCaptureAddressInfoKHR
Extending
BufferCreateInfo
:Extending
MemoryAllocateInfo
:Extending
PhysicalDeviceFeatures2
,DeviceCreateInfo
:
New Enum Constants
KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION
Extending
BufferCreateFlagBits
:Extending
BufferUsageFlagBits
:Extending
MemoryAllocateFlagBits
:Extending
Result
:Extending
StructureType
:
New SPIR-V Capabilities
Version History
Revision 1, 2019-06-24 (Jan-Harald Fredriksen)
- Internal revisions based on VK_EXT_buffer_device_address
See Also
BufferDeviceAddressInfoKHR
, BufferOpaqueCaptureAddressCreateInfoKHR
,
DeviceMemoryOpaqueCaptureAddressInfoKHR
,
MemoryOpaqueCaptureAddressAllocateInfoKHR
,
PhysicalDeviceBufferDeviceAddressFeaturesKHR
,
getBufferDeviceAddressKHR
, getBufferOpaqueCaptureAddressKHR
,
getDeviceMemoryOpaqueCaptureAddressKHR
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.
Documentation
pattern ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR :: Result Source #
getBufferOpaqueCaptureAddressKHR :: MonadIO io => Device -> BufferDeviceAddressInfo -> io Word64 Source #
getBufferDeviceAddressKHR :: MonadIO io => Device -> BufferDeviceAddressInfo -> io DeviceAddress Source #
getDeviceMemoryOpaqueCaptureAddressKHR :: MonadIO io => Device -> DeviceMemoryOpaqueCaptureAddressInfo -> io Word64 Source #
type PhysicalDeviceBufferDeviceAddressFeaturesKHR = PhysicalDeviceBufferDeviceAddressFeatures Source #
pattern KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION :: forall a. Integral a => a Source #
type KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" Source #
pattern KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #