vulkan-3.24: Bindings to the Vulkan graphics API.
Safe HaskellSafe-Inferred
LanguageHaskell2010

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

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

Documentation

cmdDecompressMemoryNV Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

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

-> ("decompressMemoryRegions" ::: Vector DecompressMemoryRegionNV)

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

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

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 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 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 LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryOutside Outside Graphics ComputeAction

See Also

VK_NV_memory_decompression, CommandBuffer, DecompressMemoryRegionNV

cmdDecompressMemoryIndirectCountNV Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

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

-> ("indirectCommandsAddress" ::: DeviceAddress)

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

-> ("indirectCommandsCountAddress" ::: DeviceAddress)

indirectCommandsCountAddress is the device address containing the decompression count.

-> ("stride" ::: Word32)

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

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

  • If indirectCommandsAddress comes from a non-sparse buffer then it must be bound completely and contiguously to a single DeviceMemory object
  • The Buffer that indirectCommandsAddress comes from must have been created with the BUFFER_USAGE_INDIRECT_BUFFER_BIT bit set
  • offset must be a multiple of 4
  • If indirectCommandsCountAddress comes from a non-sparse buffer then it must be bound completely and contiguously to a single DeviceMemory object
  • The Buffer that indirectCommandsCountAddress comes from must have been created with the BUFFER_USAGE_INDIRECT_BUFFER_BIT bit set
  • indirectCommandsCountAddress must be a multiple of 4
  • The count stored in indirectCommandsCountAddress must be less than or equal to PhysicalDeviceMemoryDecompressionPropertiesNV::maxDecompressionIndirectCount
  • stride must be a multiple of 4 and must be greater than or equal to sizeof(DecompressMemoryRegionNV)
  • If the count stored in indirectCommandsCountAddress is equal to 1, (offset + sizeof(DecompressMemoryRegionNV)) must be less than or equal to the size of the Buffer that indirectCommandsAddress comes from
  • If the count stored in indirectCommandsCountAddress is greater than 1, indirectCommandsAddress + sizeof(DecompressMemoryRegionNV) + (stride × (count stored in countBuffer - 1)) must be less than or equal to the last valid address in the Buffer that indirectCommandsAddress was created from

Valid Usage (Implicit)

  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer 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 that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryOutside Outside Graphics ComputeAction

See Also

VK_NV_memory_decompression, CommandBuffer, DeviceAddress

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

VK_NV_memory_decompression, Bool32, StructureType

Constructors

PhysicalDeviceMemoryDecompressionFeaturesNV 

Fields

Instances

Instances details
Storable PhysicalDeviceMemoryDecompressionFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_memory_decompression

Show PhysicalDeviceMemoryDecompressionFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_memory_decompression

Eq PhysicalDeviceMemoryDecompressionFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_memory_decompression

FromCStruct PhysicalDeviceMemoryDecompressionFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_memory_decompression

ToCStruct PhysicalDeviceMemoryDecompressionFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_memory_decompression

Zero PhysicalDeviceMemoryDecompressionFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_memory_decompression

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

Instances details
Storable PhysicalDeviceMemoryDecompressionPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_memory_decompression

Show PhysicalDeviceMemoryDecompressionPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_memory_decompression

Eq PhysicalDeviceMemoryDecompressionPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_memory_decompression

FromCStruct PhysicalDeviceMemoryDecompressionPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_memory_decompression

ToCStruct PhysicalDeviceMemoryDecompressionPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_memory_decompression

Zero PhysicalDeviceMemoryDecompressionPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_memory_decompression

data DecompressMemoryRegionNV Source #

VkDecompressMemoryRegionNV - Structure specifying decompression parameters

Valid Usage

  • The srcAddress must be 4 byte aligned
  • The memory in range srcAddress and srcAddress + compressedSize must be valid and bound to a DeviceMemory object
  • The dstAddress must be 4 byte aligned
  • The memory in range dstAddress and dstAddress + decompressedSize must be valid and bound to a DeviceMemory object
  • The decompressedSize must be large enough to hold the decompressed data based on the decompressionMethod
  • The decompressionMethod must have a single bit set
  • The srcAddress to srcAddress + compressedSize region must not overlap with the dstAddress and dstAddress + decompressedSize region

Valid Usage (Implicit)

  • decompressionMethod must not be 0

See Also

VK_NV_memory_decompression, DeviceAddress, DeviceSize, MemoryDecompressionMethodFlagsNV, cmdDecompressMemoryNV

Constructors

DecompressMemoryRegionNV 

Fields

Instances

Instances details
Storable DecompressMemoryRegionNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_memory_decompression

Show DecompressMemoryRegionNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_memory_decompression

Eq DecompressMemoryRegionNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_memory_decompression

FromCStruct DecompressMemoryRegionNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_memory_decompression

ToCStruct DecompressMemoryRegionNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_memory_decompression

Zero DecompressMemoryRegionNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_memory_decompression

newtype MemoryDecompressionMethodFlagBitsNV Source #

VkMemoryDecompressionMethodFlagBitsNV - List the supported memory decompression methods

See Also

VK_NV_memory_decompression

Bundled Patterns

pattern MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_NV :: MemoryDecompressionMethodFlagBitsNV

MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_NV specifies that the GDeflate 1.0 algorithm is used to decompress data.

Instances

Instances details
Bits MemoryDecompressionMethodFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_memory_decompression

Methods

(.&.) :: MemoryDecompressionMethodFlagBitsNV -> MemoryDecompressionMethodFlagBitsNV -> MemoryDecompressionMethodFlagBitsNV #

(.|.) :: MemoryDecompressionMethodFlagBitsNV -> MemoryDecompressionMethodFlagBitsNV -> MemoryDecompressionMethodFlagBitsNV #

xor :: MemoryDecompressionMethodFlagBitsNV -> MemoryDecompressionMethodFlagBitsNV -> MemoryDecompressionMethodFlagBitsNV #

complement :: MemoryDecompressionMethodFlagBitsNV -> MemoryDecompressionMethodFlagBitsNV #

shift :: MemoryDecompressionMethodFlagBitsNV -> Int -> MemoryDecompressionMethodFlagBitsNV #

rotate :: MemoryDecompressionMethodFlagBitsNV -> Int -> MemoryDecompressionMethodFlagBitsNV #

zeroBits :: MemoryDecompressionMethodFlagBitsNV #

bit :: Int -> MemoryDecompressionMethodFlagBitsNV #

setBit :: MemoryDecompressionMethodFlagBitsNV -> Int -> MemoryDecompressionMethodFlagBitsNV #

clearBit :: MemoryDecompressionMethodFlagBitsNV -> Int -> MemoryDecompressionMethodFlagBitsNV #

complementBit :: MemoryDecompressionMethodFlagBitsNV -> Int -> MemoryDecompressionMethodFlagBitsNV #

testBit :: MemoryDecompressionMethodFlagBitsNV -> Int -> Bool #

bitSizeMaybe :: MemoryDecompressionMethodFlagBitsNV -> Maybe Int #

bitSize :: MemoryDecompressionMethodFlagBitsNV -> Int #

isSigned :: MemoryDecompressionMethodFlagBitsNV -> Bool #

shiftL :: MemoryDecompressionMethodFlagBitsNV -> Int -> MemoryDecompressionMethodFlagBitsNV #

unsafeShiftL :: MemoryDecompressionMethodFlagBitsNV -> Int -> MemoryDecompressionMethodFlagBitsNV #

shiftR :: MemoryDecompressionMethodFlagBitsNV -> Int -> MemoryDecompressionMethodFlagBitsNV #

unsafeShiftR :: MemoryDecompressionMethodFlagBitsNV -> Int -> MemoryDecompressionMethodFlagBitsNV #

rotateL :: MemoryDecompressionMethodFlagBitsNV -> Int -> MemoryDecompressionMethodFlagBitsNV #

rotateR :: MemoryDecompressionMethodFlagBitsNV -> Int -> MemoryDecompressionMethodFlagBitsNV #

popCount :: MemoryDecompressionMethodFlagBitsNV -> Int #

FiniteBits MemoryDecompressionMethodFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_memory_decompression

Storable MemoryDecompressionMethodFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_memory_decompression

Read MemoryDecompressionMethodFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_memory_decompression

Show MemoryDecompressionMethodFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_memory_decompression

Eq MemoryDecompressionMethodFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_memory_decompression

Ord MemoryDecompressionMethodFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_memory_decompression

Zero MemoryDecompressionMethodFlagBitsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_memory_decompression

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 #