# VK_EXT_memory_decompression(3) Manual Page

## Name

VK_EXT_memory_decompression - device extension

Loading… please wait.

## Registered Extension Number

551

## Revision

1

## Ratification Status

Ratified

## Extension and Version Dependencies

VK_KHR_get_physical_device_properties2
and
VK_KHR_buffer_device_address

## Contact

- Vikram Kushwaha [GitHub]vkushwaha-nv

## Extension Proposal

VK_EXT_memory_decompression

## Other Extension Metadata

Last Modified Date

  2025-01-23

Contributors

  - Vikram Kushwaha, NVIDIA

  - Daniel Koch, NVIDIA

  - Jeff Bolz, NVIDIA

  - Christoph Kubisch, NVIDIA

  - Piers Daniell, NVIDIA

  - Spencer Fricke, LunarG

## Description

This extension adds support for performing memory to memory decompression.

## New Commands

- vkCmdDecompressMemoryEXT

- vkCmdDecompressMemoryIndirectCountEXT

## New Structures

- VkDecompressMemoryInfoEXT

- VkDecompressMemoryRegionEXT

- Extending VkPhysicalDeviceFeatures2, VkDeviceCreateInfo:

  - VkPhysicalDeviceMemoryDecompressionFeaturesEXT

- Extending VkPhysicalDeviceProperties2:

  - VkPhysicalDeviceMemoryDecompressionPropertiesEXT

## New Enums

- VkMemoryDecompressionMethodFlagBitsEXT

## New Bitmasks

- VkMemoryDecompressionMethodFlagsEXT

## New Enum Constants

- `VK_EXT_MEMORY_DECOMPRESSION_EXTENSION_NAME`

- `VK_EXT_MEMORY_DECOMPRESSION_SPEC_VERSION`

- Extending VkAccessFlagBits2:

  - `VK_ACCESS_2_MEMORY_DECOMPRESSION_READ_BIT_EXT`

  - `VK_ACCESS_2_MEMORY_DECOMPRESSION_WRITE_BIT_EXT`

- Extending VkBufferUsageFlagBits2:

  - `VK_BUFFER_USAGE_2_MEMORY_DECOMPRESSION_BIT_EXT`

- Extending VkPipelineStageFlagBits2:

  - `VK_PIPELINE_STAGE_2_MEMORY_DECOMPRESSION_BIT_EXT`

- Extending VkStructureType:

  - `VK_STRUCTURE_TYPE_DECOMPRESS_MEMORY_INFO_EXT`

  - `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_EXT`

  - `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_EXT`

## Issues

1) How does an app know the minimum size that `decompressedSize` should be set to?

RESOLVED: When decompressing, data is typically processed in chunks. For example, with GDeflate 1.0, data is streamed in 64 KB blocks, but the final block may be smaller. The exact size of this last block depends on the compression method and original data size and so it must be stored in the compressed bitstream so that the decompressor can set `decompressedSize` correctly. It is still ok for the last block to take up all 64 KB, but setting it too low will cause issues and is undefined behavior. It is a known limitation that the validation layers will not be able to detect the minimum size of `decompressedSize` unless it decides to implement each decompression method specification.

## Version History

- Revision 1, 2025-01-23 (Daniel Koch)

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

## Copyright

Copyright 2014-2025 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0