vulkan
Safe HaskellNone
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
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.

Synopsis

Documentation

cmdDecompressMemoryNV Source #

Arguments

:: 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 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 LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryOutside Outside VK_QUEUE_COMPUTE_BIT VK_QUEUE_GRAPHICS_BITAction

Conditional Rendering

vkCmdDecompressMemoryNV is not affected by conditional rendering

See Also

VK_NV_memory_decompression, CommandBuffer, DecompressMemoryRegionNV

cmdDecompressMemoryIndirectCountNV Source #

Arguments

:: 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 a 32-bit integer value specifying 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 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 LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryOutside Outside VK_QUEUE_COMPUTE_BIT VK_QUEUE_GRAPHICS_BITAction

Conditional Rendering

vkCmdDecompressMemoryIndirectCountNV is not affected by conditional rendering

See Also

VK_NV_memory_decompression, CommandBuffer, DeviceAddress

data DecompressMemoryRegionNV Source #

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

DecompressMemoryRegionNV 

Fields

Instances

Instances details
Eq DecompressMemoryRegionNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_memory_decompression

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

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

type NV_MEMORY_DECOMPRESSION_EXTENSION_NAME = "VK_NV_memory_decompression" Source #

data PhysicalDeviceMemoryDecompressionFeaturesEXT Source #

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.

Valid Usage (Implicit)

See Also

VK_EXT_memory_decompression, VK_NV_memory_decompression, Bool32, StructureType

Constructors

PhysicalDeviceMemoryDecompressionFeaturesEXT 

Fields

Instances

Instances details
Eq PhysicalDeviceMemoryDecompressionFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_memory_decompression

Storable PhysicalDeviceMemoryDecompressionFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_memory_decompression

Show PhysicalDeviceMemoryDecompressionFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_memory_decompression

FromCStruct PhysicalDeviceMemoryDecompressionFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_memory_decompression

ToCStruct PhysicalDeviceMemoryDecompressionFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_memory_decompression

Zero PhysicalDeviceMemoryDecompressionFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_memory_decompression

data PhysicalDeviceMemoryDecompressionPropertiesEXT Source #

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.

Valid Usage (Implicit)

See Also

VK_EXT_memory_decompression, VK_NV_memory_decompression, MemoryDecompressionMethodFlagsEXT, StructureType

Constructors

PhysicalDeviceMemoryDecompressionPropertiesEXT 

Fields

Instances

Instances details
Eq PhysicalDeviceMemoryDecompressionPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_memory_decompression

Storable PhysicalDeviceMemoryDecompressionPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_memory_decompression

Show PhysicalDeviceMemoryDecompressionPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_memory_decompression

FromCStruct PhysicalDeviceMemoryDecompressionPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_memory_decompression

ToCStruct PhysicalDeviceMemoryDecompressionPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_memory_decompression

Zero PhysicalDeviceMemoryDecompressionPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_memory_decompression

newtype MemoryDecompressionMethodFlagBitsEXT Source #

VkMemoryDecompressionMethodFlagBitsEXT - List the supported memory decompression methods

Description

See Also

VK_EXT_memory_decompression, VK_NV_memory_decompression, MemoryDecompressionMethodFlagsEXT

Instances

Instances details
Bits MemoryDecompressionMethodFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_memory_decompression

Methods

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

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

xor :: MemoryDecompressionMethodFlagBitsEXT -> MemoryDecompressionMethodFlagBitsEXT -> MemoryDecompressionMethodFlagBitsEXT #

complement :: MemoryDecompressionMethodFlagBitsEXT -> MemoryDecompressionMethodFlagBitsEXT #

shift :: MemoryDecompressionMethodFlagBitsEXT -> Int -> MemoryDecompressionMethodFlagBitsEXT #

rotate :: MemoryDecompressionMethodFlagBitsEXT -> Int -> MemoryDecompressionMethodFlagBitsEXT #

zeroBits :: MemoryDecompressionMethodFlagBitsEXT #

bit :: Int -> MemoryDecompressionMethodFlagBitsEXT #

setBit :: MemoryDecompressionMethodFlagBitsEXT -> Int -> MemoryDecompressionMethodFlagBitsEXT #

clearBit :: MemoryDecompressionMethodFlagBitsEXT -> Int -> MemoryDecompressionMethodFlagBitsEXT #

complementBit :: MemoryDecompressionMethodFlagBitsEXT -> Int -> MemoryDecompressionMethodFlagBitsEXT #

testBit :: MemoryDecompressionMethodFlagBitsEXT -> Int -> Bool #

bitSizeMaybe :: MemoryDecompressionMethodFlagBitsEXT -> Maybe Int #

bitSize :: MemoryDecompressionMethodFlagBitsEXT -> Int #

isSigned :: MemoryDecompressionMethodFlagBitsEXT -> Bool #

shiftL :: MemoryDecompressionMethodFlagBitsEXT -> Int -> MemoryDecompressionMethodFlagBitsEXT #

unsafeShiftL :: MemoryDecompressionMethodFlagBitsEXT -> Int -> MemoryDecompressionMethodFlagBitsEXT #

shiftR :: MemoryDecompressionMethodFlagBitsEXT -> Int -> MemoryDecompressionMethodFlagBitsEXT #

unsafeShiftR :: MemoryDecompressionMethodFlagBitsEXT -> Int -> MemoryDecompressionMethodFlagBitsEXT #

rotateL :: MemoryDecompressionMethodFlagBitsEXT -> Int -> MemoryDecompressionMethodFlagBitsEXT #

rotateR :: MemoryDecompressionMethodFlagBitsEXT -> Int -> MemoryDecompressionMethodFlagBitsEXT #

popCount :: MemoryDecompressionMethodFlagBitsEXT -> Int #

FiniteBits MemoryDecompressionMethodFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_memory_decompression

Eq MemoryDecompressionMethodFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_memory_decompression

Ord MemoryDecompressionMethodFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_memory_decompression

Storable MemoryDecompressionMethodFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_memory_decompression

Read MemoryDecompressionMethodFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_memory_decompression

Show MemoryDecompressionMethodFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_memory_decompression

Zero MemoryDecompressionMethodFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_memory_decompression