| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
Vulkan.Extensions.VK_NV_memory_decompression
Description
Name
VK_NV_memory_decompression - device extension
VK_NV_memory_decompression
- Name String
VK_NV_memory_decompression
- Extension Type
- Device extension
- Registered Extension Number
- 428
- Revision
- 1
- Ratification Status
- Not ratified
- Extension and Version Dependencies
- VK_KHR_get_physical_device_properties2 and VK_KHR_buffer_device_address
- Contact
Other Extension Metadata
- Last Modified Date
- 2022-01-31
- Contributors
- Vikram Kushwaha, NVIDIA
- Jeff Bolz, NVIDIA
- Christoph Kubisch, NVIDIA
- Piers Daniell, NVIDIA
Description
This extension adds support for performing memory to memory decompression.
New Commands
New Structures
Extending
PhysicalDeviceFeatures2,DeviceCreateInfo:Extending
PhysicalDeviceProperties2:
New Enums
New Bitmasks
New Enum Constants
Version History
Revision 1, 2022-01-31 (Vikram Kushwaha)
- Initial draft
See Also
DecompressMemoryRegionNV, MemoryDecompressionMethodFlagBitsNV,
MemoryDecompressionMethodFlagsNV,
PhysicalDeviceMemoryDecompressionFeaturesNV,
PhysicalDeviceMemoryDecompressionPropertiesNV,
cmdDecompressMemoryIndirectCountNV, cmdDecompressMemoryNV
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
- cmdDecompressMemoryNV :: forall io. MonadIO io => CommandBuffer -> ("decompressMemoryRegions" ::: Vector DecompressMemoryRegionNV) -> io ()
- cmdDecompressMemoryIndirectCountNV :: forall io. MonadIO io => CommandBuffer -> ("indirectCommandsAddress" ::: DeviceAddress) -> ("indirectCommandsCountAddress" ::: DeviceAddress) -> ("stride" ::: Word32) -> io ()
- data PhysicalDeviceMemoryDecompressionFeaturesNV = PhysicalDeviceMemoryDecompressionFeaturesNV {}
- data PhysicalDeviceMemoryDecompressionPropertiesNV = PhysicalDeviceMemoryDecompressionPropertiesNV {}
- data DecompressMemoryRegionNV = DecompressMemoryRegionNV {}
- type MemoryDecompressionMethodFlagsNV = MemoryDecompressionMethodFlagBitsNV
- newtype MemoryDecompressionMethodFlagBitsNV where
- type NV_MEMORY_DECOMPRESSION_SPEC_VERSION = 1
- pattern NV_MEMORY_DECOMPRESSION_SPEC_VERSION :: forall a. Integral a => a
- type NV_MEMORY_DECOMPRESSION_EXTENSION_NAME = "VK_NV_memory_decompression"
- pattern NV_MEMORY_DECOMPRESSION_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
Documentation
cmdDecompressMemoryNV Source #
Arguments
| :: forall io. MonadIO io | |
| => CommandBuffer |
|
| -> ("decompressMemoryRegions" ::: Vector DecompressMemoryRegionNV) |
|
| -> io () |
vkCmdDecompressMemoryNV - Decompress data between memory regions
Description
Each region specified in pDecompressMemoryRegions is decompressed from
the source to destination region based on the specified decompression
method.
Valid Usage
- The memoryDecompression feature must be enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
pDecompressMemoryRegionsmust be a valid pointer to an array ofdecompressRegionCountvalidDecompressMemoryRegionNVstructures -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must support graphics, or compute operations - This command must only be called outside of a render pass instance
- This command must only be called outside of a video coding scope
-
decompressRegionCountmust be greater than0
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Outside | Outside | Graphics Compute | Action |
See Also
VK_NV_memory_decompression,
CommandBuffer, DecompressMemoryRegionNV
cmdDecompressMemoryIndirectCountNV Source #
Arguments
| :: forall io. MonadIO io | |
| => CommandBuffer |
|
| -> ("indirectCommandsAddress" ::: DeviceAddress) |
|
| -> ("indirectCommandsCountAddress" ::: DeviceAddress) |
|
| -> ("stride" ::: Word32) |
|
| -> io () |
vkCmdDecompressMemoryIndirectCountNV - Indirect decompress data between memory regions
Description
Each region specified in indirectCommandsAddress is decompressed from
the source to destination region based on the specified decompression
method.
Valid Usage
- The memoryDecompression feature must be enabled
-
If
indirectCommandsAddresscomes from a non-sparse buffer then it must be bound completely and contiguously to a singleDeviceMemoryobject -
The
BufferthatindirectCommandsAddresscomes from must have been created with theBUFFER_USAGE_INDIRECT_BUFFER_BITbit set -
offsetmust be a multiple of4 -
If
indirectCommandsCountAddresscomes from a non-sparse buffer then it must be bound completely and contiguously to a singleDeviceMemoryobject -
The
BufferthatindirectCommandsCountAddresscomes from must have been created with theBUFFER_USAGE_INDIRECT_BUFFER_BITbit set -
indirectCommandsCountAddressmust be a multiple of4 -
The count stored in
indirectCommandsCountAddressmust be less than or equal toPhysicalDeviceMemoryDecompressionPropertiesNV::maxDecompressionIndirectCount -
stridemust be a multiple of4and must be greater than or equal to sizeof(DecompressMemoryRegionNV) -
If the count stored in
indirectCommandsCountAddressis equal to1, (offset+ sizeof(DecompressMemoryRegionNV)) must be less than or equal to the size of theBufferthatindirectCommandsAddresscomes from -
If the count stored in
indirectCommandsCountAddressis greater than1,indirectCommandsAddress+ sizeof(DecompressMemoryRegionNV) + (stride× (count stored incountBuffer- 1)) must be less than or equal to the last valid address in theBufferthatindirectCommandsAddresswas created from
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
commandBuffermust be in the recording state -
The
CommandPoolthatcommandBufferwas allocated from must support graphics, or compute operations - This command must only be called outside of a render pass instance
- This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Outside | Outside | Graphics Compute | Action |
See Also
data PhysicalDeviceMemoryDecompressionFeaturesNV Source #
VkPhysicalDeviceMemoryDecompressionFeaturesNV - Structure describing if memory decompression is supported by an implementation
Members
This structure describes the following features:
Description
If the PhysicalDeviceMemoryDecompressionFeaturesNV 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. PhysicalDeviceMemoryDecompressionFeaturesNV can also be
used in the pNext chain of DeviceCreateInfo to
selectively enable these features.
Valid Usage (Implicit)
See Also
Constructors
| PhysicalDeviceMemoryDecompressionFeaturesNV | |
Fields | |
Instances
data PhysicalDeviceMemoryDecompressionPropertiesNV Source #
VkPhysicalDeviceMemoryDecompressionPropertiesNV - Structure describing supported memory decompression methods by an implementation
Description
If the PhysicalDeviceMemoryDecompressionPropertiesNV structure is
included in the pNext chain of the
PhysicalDeviceProperties2
structure passed to
getPhysicalDeviceProperties2,
it is filled in with each corresponding implementation-dependent
property.
Valid Usage (Implicit)
See Also
VK_NV_memory_decompression,
MemoryDecompressionMethodFlagsNV,
StructureType
Constructors
| PhysicalDeviceMemoryDecompressionPropertiesNV | |
Fields
| |
Instances
data DecompressMemoryRegionNV Source #
VkDecompressMemoryRegionNV - Structure specifying decompression parameters
Valid Usage
- The memory in
range
srcAddressandsrcAddress+compressedSizemust be valid and bound to aDeviceMemoryobject - The
dstAddressmust be 4 byte aligned - If
decompressionMethodisMEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_NV, thendecompressedSizemust be less than or equal to 65536 bytes - The memory in
range
dstAddressanddstAddress+decompressedSizemust be valid and bound to aDeviceMemoryobject - The
decompressedSizemust be large enough to hold the decompressed data based on thedecompressionMethod - The
decompressionMethodmust have a single bit set - The
srcAddresstosrcAddress+compressedSizeregion must not overlap with thedstAddressanddstAddress+decompressedSizeregion
Valid Usage (Implicit)
-
decompressionMethodmust be a valid combination ofMemoryDecompressionMethodFlagBitsNVvalues
See Also
VK_NV_memory_decompression,
DeviceAddress,
DeviceSize,
MemoryDecompressionMethodFlagsNV, cmdDecompressMemoryNV
Constructors
| DecompressMemoryRegionNV | |
Fields
| |
Instances
newtype MemoryDecompressionMethodFlagBitsNV Source #
VkMemoryDecompressionMethodFlagBitsNV - List the supported memory decompression methods
See Also
Constructors
| MemoryDecompressionMethodFlagBitsNV Flags64 |
Bundled Patterns
| pattern MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_NV :: MemoryDecompressionMethodFlagBitsNV |
|
Instances
type NV_MEMORY_DECOMPRESSION_SPEC_VERSION = 1 Source #
pattern NV_MEMORY_DECOMPRESSION_SPEC_VERSION :: forall a. Integral a => a Source #
type NV_MEMORY_DECOMPRESSION_EXTENSION_NAME = "VK_NV_memory_decompression" Source #
pattern NV_MEMORY_DECOMPRESSION_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #