| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Vulkan.Extensions.VK_EXT_zero_initialize_device_memory
Description
Name
VK_EXT_zero_initialize_device_memory - device extension
VK_EXT_zero_initialize_device_memory
- Name String
VK_EXT_zero_initialize_device_memory
- Extension Type
- Device extension
- Registered Extension Number
- 621
- Revision
- 1
- Ratification Status
- Ratified
- Extension and Version Dependencies
- VK_KHR_get_physical_device_properties2 or Vulkan Version 1.1
- Contact
- Extension Proposal
- VK_EXT_zero_initialize_device_memory
Other Extension Metadata
- Last Modified Date
- 2025-04-09
- Interactions and External Dependencies
- Interacts with Vulkan 1.1.
- Interacts with
VK_KHR_get_physical_device_properties2.
- IP Status
- No known IP claims.
- Contributors
- Hans-Kristian Arntzen, VALVE
- Mike Blumenkrantz, VALVE
- Tobias Hector, AMD
- Faith Ekstrand, Collabora
- Ricardo Garcia, Igalia
- Jan-Harald Fredriksen, ARM
- Spencer Fricke, LunarG
Description
By default, Vulkan provides no guarantees that device memory allocated through vkAllocateMemory is cleared to zero. This means that applications wanting resources to be zero-initialized must execute a command such as vkCmdFillBuffer or vkCmdClearColorImage on the device to ensure a deterministic result. This can be wasteful if the underlying platform either:
- Already performs that zero clear anyway, due to e.g. security concerns.
- Can be performed more efficiently in implementation, by e.g. clearing pages to zero in the background after device memory is freed.
This extension also has uses in API layering and porting efforts, where zero memory behavior may be more strict than Vulkan. Different OS platforms also have wildly different behaviors here, which leads to implementations needing to apply workarounds to paper over these issues in the wild. If an extension exists to make allocation behavior explicit, we hopefully achieve a more robust ecosystem for Vulkan.
New Structures
Extending
PhysicalDeviceFeatures2,DeviceCreateInfo:
New Enum Constants
EXT_ZERO_INITIALIZE_DEVICE_MEMORY_SPEC_VERSIONExtending
ImageLayout:Extending
MemoryAllocateFlagBits:Extending
StructureType:
Version History
Revision 1, 2025-03-10 (Mike Blumenkrantz)
- Initial version
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 PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT = PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT {}
- type EXT_ZERO_INITIALIZE_DEVICE_MEMORY_SPEC_VERSION = 1
- pattern EXT_ZERO_INITIALIZE_DEVICE_MEMORY_SPEC_VERSION :: Integral a => a
- type EXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME = "VK_EXT_zero_initialize_device_memory"
- pattern EXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME :: (Eq a, IsString a) => a
Documentation
data PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT Source #
VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT - Structure describing whether the implementation supports cleared allocation functionality
Members
This structure describes the following features:
Description
If the PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT 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
PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT, 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
| PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT | |
Fields | |
Instances
pattern EXT_ZERO_INITIALIZE_DEVICE_MEMORY_SPEC_VERSION :: Integral a => a Source #
type EXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME = "VK_EXT_zero_initialize_device_memory" Source #
pattern EXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME :: (Eq a, IsString a) => a Source #