HORIZON HASKELLDocslts/ghc-10.0.x8174fa42026-10-11Search names, modules, packages, or :: a typeCtrl K

GHC 10.0.0.20260917 · lts/ghc-10.0.x · 8174fa4 · 2026-10-11

Modulevulkan-3.27GHC2021

Vulkan.Extensions.VK_NV_memory_decompression

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          or

Vulkan Version 1.1      and

VK_KHR_buffer_device_address or Vulkan Version 1.2

Deprecation State
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

New Enums

New Bitmasks

New Enum Constants

Version History

  • Revision 1, 2022-01-31 (Vikram Kushwaha)

    • Initial draft

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.

  • 11 types
  • 2 values
  • Packagevulkan-3.27
  • Exports18
  • LanguageGHC2021
  • LicenceBSD-3-Clause
  • SourceVK_NV_memory_decompression.hs
valuecmdDecompressMemoryNV
  1. :: MonadIO io
  2. => CommandBuffer

    commandBuffer is the command buffer into which the command will be recorded.

  3. -> "decompressMemoryRegions" ::: Vector DecompressMemoryRegionNV

    pDecompressMemoryRegions is a pointer to an array of decompressRegionCount DecompressMemoryRegionNV structures specifying decompression parameters.

  4. -> io ()
#

vkCmdDecompressMemoryNV - Decompress memory containing compressed data

Description

Each region specified in pDecompressMemoryRegions is decompressed from the compressed to decompressed region based on the decompression method specified in DecompressMemoryRegionNV::decompressionMethod. If the regions containing compressed and decompressed data overlap, the decompression behavior is undefined.

Valid Usage

Valid Usage (Implicit)

  • pDecompressMemoryRegions must be a valid pointer to an array of decompressRegionCount valid DecompressMemoryRegionNV structures

  • commandBuffer must be in the recording state

  • The CommandPool that commandBuffer was allocated from must support QUEUE_COMPUTE_BIT, or QUEUE_GRAPHICS_BIT operations

  • This command must only be called outside of a render pass instance

  • This command must not be called between suspended render pass instances

  • This command must only be called outside of a video coding scope

  • decompressRegionCount must be greater than 0

Host Synchronization

  • Host access to commandBuffer must be externally synchronized

  • Host access to the CommandPool that commandBuffer 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

VK_QUEUE_COMPUTE_BIT VK_QUEUE_GRAPHICS_BIT

Action

Conditional Rendering

vkCmdDecompressMemoryNV is not affected by conditional rendering

See Also

VK_NV_memory_decompression, CommandBuffer, DecompressMemoryRegionNV

valuecmdDecompressMemoryIndirectCountNV
  1. :: MonadIO io
  2. => CommandBuffer

    commandBuffer is the command buffer into which the command will be recorded.

  3. -> "indirectCommandsAddress" ::: DeviceAddress

    indirectCommandsAddress is the device address containing decompression parameters laid out as an array of DecompressMemoryRegionNV structures.

  4. -> "indirectCommandsCountAddress" ::: DeviceAddress

    indirectCommandsCountAddress is the device address containing a 32-bit integer value specifying the decompression count.

  5. -> "stride" ::: Word32

    stride is the byte stride between successive sets of decompression parameters located starting from indirectCommandsAddress.

  6. -> 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 decompressionMethod.

Valid Usage

  • indirectCommandsAddress must be a device address allocated to the application from a buffer created with the BUFFER_USAGE_INDIRECT_BUFFER_BIT usage flag set

  • indirectCommandsAddress must be a multiple of 4

  • indirectCommandsCountAddress must be a device address allocated to the application from a buffer created with the BUFFER_USAGE_INDIRECT_BUFFER_BIT usage flag set

  • indirectCommandsCountAddress must be a multiple of 4

  • The count stored in indirectCommandsCountAddress must be less than or equal to PhysicalDeviceMemoryDecompressionPropertiesEXT::maxDecompressionIndirectCount

  • All device addresses between indirectCommandsAddress and indirectCommandsAddress + (stride × (count stored in indirectCommandsCountAddress)) - 1 must be in the buffer device address range of the same buffer

  • stride must be a multiple of 4 and must be greater than or equal to sizeof(DecompressMemoryRegionNV)

Valid Usage (Implicit)

  • indirectCommandsAddress must be a valid DeviceAddress value

  • indirectCommandsCountAddress must be a valid DeviceAddress value

  • commandBuffer must be in the recording state

  • The CommandPool that commandBuffer was allocated from must support QUEUE_COMPUTE_BIT, or QUEUE_GRAPHICS_BIT operations

  • This command must only be called outside of a render pass instance

  • This command must not be called between suspended render pass instances

  • 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 that commandBuffer 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

VK_QUEUE_COMPUTE_BIT VK_QUEUE_GRAPHICS_BIT

Action

Conditional Rendering

vkCmdDecompressMemoryIndirectCountNV is not affected by conditional rendering

See Also

VK_NV_memory_decompression, CommandBuffer, DeviceAddress

VkDecompressMemoryRegionNV - Structure specifying decompression region parameters

Valid Usage

  • The decompressionMethod must have a single bit set

  • srcAddress must be 4 byte aligned

  • The memory range defined by srcAddress and compressedSize must be contained within the size of the buffer bound to srcAddress, minus the offset of srcAddress from the base address of that buffer

  • dstAddress must be 4 byte aligned

  • The memory range defined by dstAddress and decompressedSize must be contained within the size of the buffer bound to dstAddress, minus the offset of dstAddress from the base address of that buffer

  • decompressedSize must be large enough to hold the decompressed data based on the decompressionMethod

  • compressedSize must not be zero

  • decompressedSize must not be zero

  • The memory range defined by srcAddress and compressedSize must not overlap the memory range defined by dstAddress and decompressedSize

  • If decompressionMethod is MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_EXT, then decompressedSize must be less than or equal to 65536 bytes

  • The memoryDecompression feature must be enabled

See Also

VK_NV_memory_decompression, DeviceAddress, DeviceSize, MemoryDecompressionMethodFlagsEXT, cmdDecompressMemoryNV

Constructors

Instances6Eq, Show, Storable, FromCStruct, ToCStruct, Zero

VkPhysicalDeviceMemoryDecompressionFeaturesEXT - Structure describing if memory decompression is supported by an implementation

Members

This structure describes the following features:

Description

If the PhysicalDeviceMemoryDecompressionFeaturesEXT 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 PhysicalDeviceMemoryDecompressionFeaturesEXT, 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.

Structure Chaining

Extends the structures

See Also

VK_EXT_memory_decompression, VK_NV_memory_decompression, Bool32, StructureType

Constructors

Instances6Eq, Show, Storable, FromCStruct, ToCStruct, Zero

VkPhysicalDeviceMemoryDecompressionPropertiesEXT - Structure describing supported memory decompression methods by an implementation

Description

If memoryDecompression feature is supported, decompressionMethods must have at least one bit set.

If the PhysicalDeviceMemoryDecompressionPropertiesEXT structure is included in the pNext chain of the PhysicalDeviceProperties2 structure passed to getPhysicalDeviceProperties2, it is filled in with each corresponding implementation-dependent property.

Structure Chaining

Extends the structure

See Also

VK_EXT_memory_decompression, VK_NV_memory_decompression, MemoryDecompressionMethodFlagsEXT, StructureType

Constructors

Instances6Eq, Show, Storable, FromCStruct, ToCStruct, Zero

VkMemoryDecompressionMethodFlagBitsEXT - List the supported memory decompression methods

Description

See Also

VK_EXT_memory_decompression, VK_NV_memory_decompression, MemoryDecompressionMethodFlagsEXT

Instances8Eq, Ord, Read, Show, Bits, FiniteBits, …