Registered Extension Number

551

Revision

1

Ratification Status

Ratified

Extension and Version Dependencies

Contact

Extension Proposal

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

New Structures

New Enums

New Bitmasks

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 2014-2025 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0