Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
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
- 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 - Requires
VK_KHR_buffer_device_address
to be enabled for any device-level functionality
- 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 #
:: 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)
-
commandBuffer
must be a validCommandBuffer
handle
-
pDecompressMemoryRegions
must be a valid pointer to an array ofdecompressRegionCount
validDecompressMemoryRegionNV
structures -
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was 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
-
decompressRegionCount
must be greater than0
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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 #
:: 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
indirectCommandsAddress
comes from a non-sparse buffer then it must be bound completely and contiguously to a singleDeviceMemory
object -
The
Buffer
thatindirectCommandsAddress
comes from must have been created with theBUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set -
offset
must be a multiple of4
-
If
indirectCommandsCountAddress
comes from a non-sparse buffer then it must be bound completely and contiguously to a singleDeviceMemory
object -
The
Buffer
thatindirectCommandsCountAddress
comes from must have been created with theBUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set -
indirectCommandsCountAddress
must be a multiple of4
-
The count stored in
indirectCommandsCountAddress
must be less than or equal toPhysicalDeviceMemoryDecompressionPropertiesNV
::maxDecompressionIndirectCount
-
stride
must be a multiple of4
and must be greater than or equal to sizeof(DecompressMemoryRegionNV
) -
If the count stored in
indirectCommandsCountAddress
is equal to1
, (offset
+ sizeof(DecompressMemoryRegionNV
)) must be less than or equal to the size of theBuffer
thatindirectCommandsAddress
comes from -
If the count stored in
indirectCommandsCountAddress
is greater than1
,indirectCommandsAddress
+ sizeof(DecompressMemoryRegionNV
) + (stride
× (count stored incountBuffer
- 1)) must be less than or equal to the last valid address in theBuffer
thatindirectCommandsAddress
was created from
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
commandBuffer
must be in the recording state -
The
CommandPool
thatcommandBuffer
was 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
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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
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
PhysicalDeviceMemoryDecompressionPropertiesNV | |
|
Instances
data DecompressMemoryRegionNV Source #
VkDecompressMemoryRegionNV - Structure specifying decompression parameters
Valid Usage
- The memory in
range
srcAddress
andsrcAddress
+compressedSize
must be valid and bound to aDeviceMemory
object - The
dstAddress
must be 4 byte aligned - The memory in
range
dstAddress
anddstAddress
+decompressedSize
must be valid and bound to aDeviceMemory
object - The
decompressedSize
must be large enough to hold the decompressed data based on thedecompressionMethod
- The
decompressionMethod
must have a single bit set - The
srcAddress
tosrcAddress
+compressedSize
region must not overlap with thedstAddress
anddstAddress
+decompressedSize
region
Valid Usage (Implicit)
-
decompressionMethod
must be a valid combination ofMemoryDecompressionMethodFlagBitsNV
values
See Also
VK_NV_memory_decompression,
DeviceAddress
,
DeviceSize
,
MemoryDecompressionMethodFlagsNV
, cmdDecompressMemoryNV
DecompressMemoryRegionNV | |
|
Instances
newtype MemoryDecompressionMethodFlagBitsNV Source #
VkMemoryDecompressionMethodFlagBitsNV - List the supported memory decompression methods
See Also
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 #