Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Name
VK_EXT_buffer_device_address - device extension
VK_EXT_buffer_device_address
- Name String
VK_EXT_buffer_device_address
- Extension Type
- Device extension
- Registered Extension Number
- 245
- Revision
- 2
- Extension and Version Dependencies
- Requires support for Vulkan 1.0
- Requires
VK_KHR_get_physical_device_properties2
to be enabled for any device-level functionality
- Deprecation state
Deprecated by
VK_KHR_buffer_device_address
extension- Which in turn was promoted to Vulkan 1.2
- Contact
Other Extension Metadata
- Last Modified Date
- 2019-01-06
- IP Status
- No known IP claims.
- Interactions and External Dependencies
- This extension requires SPV_EXT_physical_storage_buffer
- This extension provides API support for GLSL_EXT_buffer_reference and GLSL_EXT_buffer_reference_uvec2
- Contributors
- Jeff Bolz, NVIDIA
- Neil Henning, AMD
- Tobias Hector, AMD
- Jason Ekstrand, Intel
- Baldur Karlsson, Valve
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 PhysicalStorageBufferEXT
storage class in the
GL_EXT_buffer_reference
GLSL extension and
SPV_EXT_physical_storage_buffer
SPIR-V extension.
It also allows buffer device addresses to be provided by a trace replay tool, so that it matches the address used when the trace was captured.
New Commands
New Structures
Extending
BufferCreateInfo
:Extending
PhysicalDeviceFeatures2
,DeviceCreateInfo
:
New Enum Constants
EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION
Extending
BufferCreateFlagBits
:Extending
BufferUsageFlagBits
:Extending
Result
:Extending
StructureType
:
New SPIR-V Capabilities
Issues
1) Where is VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT and VkPhysicalDeviceBufferAddressFeaturesEXT?
RESOLVED: They were renamed as
STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT
and PhysicalDeviceBufferDeviceAddressFeaturesEXT
accordingly for
consistency. Even though, the old names can still be found in the
generated header files for compatibility.
Version History
Revision 1, 2018-11-01 (Jeff Bolz)
- Internal revisions
Revision 2, 2019-01-06 (Jon Leech)
- Minor updates to appendix for publication
See Also
BufferDeviceAddressCreateInfoEXT
, BufferDeviceAddressInfoEXT
,
PhysicalDeviceBufferAddressFeaturesEXT
,
PhysicalDeviceBufferDeviceAddressFeaturesEXT
,
getBufferDeviceAddressEXT
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_BUFFER_ADDRESS_FEATURES_EXT :: StructureType
- pattern STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT :: StructureType
- pattern BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT :: BufferUsageFlagBits
- pattern BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT :: BufferCreateFlagBits
- pattern ERROR_INVALID_DEVICE_ADDRESS_EXT :: Result
- getBufferDeviceAddressEXT :: MonadIO io => Device -> BufferDeviceAddressInfo -> io DeviceAddress
- data PhysicalDeviceBufferDeviceAddressFeaturesEXT = PhysicalDeviceBufferDeviceAddressFeaturesEXT {}
- data BufferDeviceAddressCreateInfoEXT = BufferDeviceAddressCreateInfoEXT {}
- type PhysicalDeviceBufferAddressFeaturesEXT = PhysicalDeviceBufferDeviceAddressFeaturesEXT
- type BufferDeviceAddressInfoEXT = BufferDeviceAddressInfo
- type EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 2
- pattern EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION :: forall a. Integral a => a
- type EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_EXT_buffer_device_address"
- pattern EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
Documentation
pattern ERROR_INVALID_DEVICE_ADDRESS_EXT :: Result Source #
getBufferDeviceAddressEXT :: MonadIO io => Device -> BufferDeviceAddressInfo -> io DeviceAddress Source #
data PhysicalDeviceBufferDeviceAddressFeaturesEXT Source #
VkPhysicalDeviceBufferDeviceAddressFeaturesEXT - Structure describing buffer address features that can be supported by an implementation
Members
This structure describes the following features:
Description
If the PhysicalDeviceBufferDeviceAddressFeaturesEXT
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. PhysicalDeviceBufferDeviceAddressFeaturesEXT
can also be
used in the pNext
chain of DeviceCreateInfo
to
selectively enable these features.
Note
The PhysicalDeviceBufferDeviceAddressFeaturesEXT
structure has the
same members as the
PhysicalDeviceBufferDeviceAddressFeatures
structure, but the functionality indicated by the members is expressed
differently. The features indicated by the
PhysicalDeviceBufferDeviceAddressFeatures
structure requires additional flags to be passed at memory allocation
time, and the capture and replay mechanism is built around opaque
capture addresses for buffer and memory objects.
Valid Usage (Implicit)
See Also
PhysicalDeviceBufferDeviceAddressFeaturesEXT | |
|
Instances
data BufferDeviceAddressCreateInfoEXT Source #
VkBufferDeviceAddressCreateInfoEXT - Request a specific address for a buffer
Description
If deviceAddress
is zero, no specific address is requested.
If deviceAddress
is not zero, then it must be an address retrieved
from an identically created buffer on the same implementation. The
buffer must also be bound to an identically created
DeviceMemory
object.
If this structure is not present, it is as if deviceAddress
is zero.
Apps should avoid creating buffers with app-provided addresses and
implementation-provided addresses in the same process, to reduce the
likelihood of ERROR_INVALID_DEVICE_ADDRESS_EXT
errors.
Valid Usage (Implicit)
See Also
BufferDeviceAddressCreateInfoEXT | |
|
Instances
pattern EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION :: forall a. Integral a => a Source #
type EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_EXT_buffer_device_address" Source #
pattern EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #