vulkan
Safe HaskellNone
LanguageHaskell2010

Vulkan.Extensions.VK_EXT_image_compression_control

Description

Name

VK_EXT_image_compression_control - device extension

VK_EXT_image_compression_control

Name String
VK_EXT_image_compression_control
Extension Type
Device extension
Registered Extension Number
339
Revision
1
Ratification Status
Ratified
Extension and Version Dependencies
VK_KHR_get_physical_device_properties2 or Vulkan Version 1.1
Contact
Extension Proposal
VK_EXT_image_compression_control

Other Extension Metadata

Last Modified Date
2022-05-02
IP Status
No known IP claims.
Contributors
  • Jan-Harald Fredriksen, Arm
  • Graeme Leese, Broadcom
  • Andrew Garrard, Imagination
  • Lisa Wu, Arm
  • Peter Kohaut, Arm

Description

This extension enables fixed-rate image compression and adds the ability to control when this kind of compression can be applied. Many implementations support some form of framebuffer compression. This is typically transparent to applications as lossless compression schemes are used. With fixed-rate compression, the compression is done at a defined bitrate. Such compression algorithms generally produce results that are visually lossless, but the results are typically not bit-exact when compared to a non-compressed result. The implementation may not be able to use the requested compression rate in all cases. This extension adds a query that can be used to determine the compression scheme and rate that was applied to an image.

New Commands

New Structures

New Enums

New Bitmasks

New Enum Constants

Version History

  • Revision 1, 2022-05-02 (Jan-Harald Fredriksen)

    • 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

data ImageCompressionControlEXT Source #

VkImageCompressionControlEXT - Specify image compression properties

Description

If enabled, fixed-rate compression is done in an implementation-defined manner and may be applied at block granularity. In that case, a write to an individual texel may modify the value of other texels in the same block.

Valid Usage

Valid Usage (Implicit)

Some combinations of compression properties may not be supported. For example, some implementations may not support different fixed-rate compression rates per plane of a multi-planar format and will not be able to enable fixed-rate compression for any plane if the requested rates differ.

See Also

VK_EXT_image_compression_control, ImageCompressionFixedRateFlagsEXT, ImageCompressionFlagsEXT, StructureType

Constructors

ImageCompressionControlEXT 

Fields

Instances

Instances details
Eq ImageCompressionControlEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_compression_control

Storable ImageCompressionControlEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_compression_control

Show ImageCompressionControlEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_compression_control

FromCStruct ImageCompressionControlEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_compression_control

ToCStruct ImageCompressionControlEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_compression_control

Zero ImageCompressionControlEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_compression_control

data PhysicalDeviceImageCompressionControlFeaturesEXT Source #

VkPhysicalDeviceImageCompressionControlFeaturesEXT - Structure describing whether image compression controls can be supported by an implementation

Members

This structure describes the following feature:

Description

If the PhysicalDeviceImageCompressionControlFeaturesEXT 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 PhysicalDeviceImageCompressionControlFeaturesEXT, 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_image_compression_control, Bool32, StructureType

Constructors

PhysicalDeviceImageCompressionControlFeaturesEXT 

Fields

  • imageCompressionControl :: Bool

    imageCompressionControl indicates that the implementation supports providing controls for image compression at image creation time.

Instances

Instances details
Eq PhysicalDeviceImageCompressionControlFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_compression_control

Storable PhysicalDeviceImageCompressionControlFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_compression_control

Show PhysicalDeviceImageCompressionControlFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_compression_control

FromCStruct PhysicalDeviceImageCompressionControlFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_compression_control

ToCStruct PhysicalDeviceImageCompressionControlFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_compression_control

Zero PhysicalDeviceImageCompressionControlFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_compression_control

data ImageCompressionPropertiesEXT Source #

VkImageCompressionPropertiesEXT - Compression properties of an image

Valid Usage (Implicit)

See Also

VK_EXT_image_compression_control, ImageCompressionFixedRateFlagsEXT, ImageCompressionFlagsEXT, StructureType

Constructors

ImageCompressionPropertiesEXT 

Fields

Instances

Instances details
Eq ImageCompressionPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_compression_control

Storable ImageCompressionPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_compression_control

Show ImageCompressionPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_compression_control

FromCStruct ImageCompressionPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_compression_control

ToCStruct ImageCompressionPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_compression_control

Zero ImageCompressionPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_compression_control

newtype ImageCompressionFlagBitsEXT Source #

VkImageCompressionFlagBitsEXT - Bitmask specifying image compression controls

Description

  • IMAGE_COMPRESSION_DEFAULT_EXT specifies that the default image compression setting is used. Implementations must not apply fixed-rate compression.

If ImageCompressionControlEXT::flags is IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT, then the ith member of the pFixedRateFlags array specifies the allowed compression rates for the image’s ith plane.

If IMAGE_COMPRESSION_DISABLED_EXT is included in ImageCompressionControlEXT::flags, both lossless and fixed-rate compression will be disabled. This is likely to have a negative impact on performance and is only intended to be used for debugging purposes.

See Also

VK_EXT_image_compression_control, ImageCompressionFlagsEXT

Instances

Instances details
Bits ImageCompressionFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_compression_control

Methods

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

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

xor :: ImageCompressionFlagBitsEXT -> ImageCompressionFlagBitsEXT -> ImageCompressionFlagBitsEXT #

complement :: ImageCompressionFlagBitsEXT -> ImageCompressionFlagBitsEXT #

shift :: ImageCompressionFlagBitsEXT -> Int -> ImageCompressionFlagBitsEXT #

rotate :: ImageCompressionFlagBitsEXT -> Int -> ImageCompressionFlagBitsEXT #

zeroBits :: ImageCompressionFlagBitsEXT #

bit :: Int -> ImageCompressionFlagBitsEXT #

setBit :: ImageCompressionFlagBitsEXT -> Int -> ImageCompressionFlagBitsEXT #

clearBit :: ImageCompressionFlagBitsEXT -> Int -> ImageCompressionFlagBitsEXT #

complementBit :: ImageCompressionFlagBitsEXT -> Int -> ImageCompressionFlagBitsEXT #

testBit :: ImageCompressionFlagBitsEXT -> Int -> Bool #

bitSizeMaybe :: ImageCompressionFlagBitsEXT -> Maybe Int #

bitSize :: ImageCompressionFlagBitsEXT -> Int #

isSigned :: ImageCompressionFlagBitsEXT -> Bool #

shiftL :: ImageCompressionFlagBitsEXT -> Int -> ImageCompressionFlagBitsEXT #

unsafeShiftL :: ImageCompressionFlagBitsEXT -> Int -> ImageCompressionFlagBitsEXT #

shiftR :: ImageCompressionFlagBitsEXT -> Int -> ImageCompressionFlagBitsEXT #

unsafeShiftR :: ImageCompressionFlagBitsEXT -> Int -> ImageCompressionFlagBitsEXT #

rotateL :: ImageCompressionFlagBitsEXT -> Int -> ImageCompressionFlagBitsEXT #

rotateR :: ImageCompressionFlagBitsEXT -> Int -> ImageCompressionFlagBitsEXT #

popCount :: ImageCompressionFlagBitsEXT -> Int #

FiniteBits ImageCompressionFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_compression_control

Eq ImageCompressionFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_compression_control

Ord ImageCompressionFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_compression_control

Storable ImageCompressionFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_compression_control

Read ImageCompressionFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_compression_control

Show ImageCompressionFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_compression_control

Zero ImageCompressionFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_compression_control

newtype ImageCompressionFixedRateFlagBitsEXT Source #

VkImageCompressionFixedRateFlagBitsEXT - Bitmask specifying fixed rate image compression rates

Description

If the format has a different bit rate for different components, ImageCompressionControlEXT::pFixedRateFlags describes the rate of the component with the largest number of bits assigned to it, scaled pro rata. For example, to request that a FORMAT_A2R10G10B10_UNORM_PACK32 format be stored at a rate of 8 bits per pixel, use IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT (10 bits for the largest component, stored at quarter the original size, 2.5 bits, rounded down).

If flags includes IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT, and multiple bits are set in ImageCompressionControlEXT::pFixedRateFlags for a plane, implementations should apply the lowest allowed bitrate that is supported.

The choice of “bits per component” terminology was chosen so that the same compression rate describes the same degree of compression applied to formats that differ only in the number of components. For example, FORMAT_R8G8_UNORM compressed to half its original size is a rate of 4 bits per component, 8 bits per pixel. FORMAT_R8G8B8A8_UNORM compressed to half its original size is 4 bits per component, 16 bits per pixel. Both of these cases can be requested with IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT.

See Also

VK_EXT_image_compression_control, ImageCompressionFixedRateFlagsEXT

Bundled Patterns

pattern IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT :: ImageCompressionFixedRateFlagBitsEXT 
pattern IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT 
pattern IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT 
pattern IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT 
pattern IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT 
pattern IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT 
pattern IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT 
pattern IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT 
pattern IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT 
pattern IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT 
pattern IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT 
pattern IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT 
pattern IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT 
pattern IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT 
pattern IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT 
pattern IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT 
pattern IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT 
pattern IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT 
pattern IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT 
pattern IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT 
pattern IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT 
pattern IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT 
pattern IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT 
pattern IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT 
pattern IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT 

Instances

Instances details
Bits ImageCompressionFixedRateFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_compression_control

Methods

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

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

xor :: ImageCompressionFixedRateFlagBitsEXT -> ImageCompressionFixedRateFlagBitsEXT -> ImageCompressionFixedRateFlagBitsEXT #

complement :: ImageCompressionFixedRateFlagBitsEXT -> ImageCompressionFixedRateFlagBitsEXT #

shift :: ImageCompressionFixedRateFlagBitsEXT -> Int -> ImageCompressionFixedRateFlagBitsEXT #

rotate :: ImageCompressionFixedRateFlagBitsEXT -> Int -> ImageCompressionFixedRateFlagBitsEXT #

zeroBits :: ImageCompressionFixedRateFlagBitsEXT #

bit :: Int -> ImageCompressionFixedRateFlagBitsEXT #

setBit :: ImageCompressionFixedRateFlagBitsEXT -> Int -> ImageCompressionFixedRateFlagBitsEXT #

clearBit :: ImageCompressionFixedRateFlagBitsEXT -> Int -> ImageCompressionFixedRateFlagBitsEXT #

complementBit :: ImageCompressionFixedRateFlagBitsEXT -> Int -> ImageCompressionFixedRateFlagBitsEXT #

testBit :: ImageCompressionFixedRateFlagBitsEXT -> Int -> Bool #

bitSizeMaybe :: ImageCompressionFixedRateFlagBitsEXT -> Maybe Int #

bitSize :: ImageCompressionFixedRateFlagBitsEXT -> Int #

isSigned :: ImageCompressionFixedRateFlagBitsEXT -> Bool #

shiftL :: ImageCompressionFixedRateFlagBitsEXT -> Int -> ImageCompressionFixedRateFlagBitsEXT #

unsafeShiftL :: ImageCompressionFixedRateFlagBitsEXT -> Int -> ImageCompressionFixedRateFlagBitsEXT #

shiftR :: ImageCompressionFixedRateFlagBitsEXT -> Int -> ImageCompressionFixedRateFlagBitsEXT #

unsafeShiftR :: ImageCompressionFixedRateFlagBitsEXT -> Int -> ImageCompressionFixedRateFlagBitsEXT #

rotateL :: ImageCompressionFixedRateFlagBitsEXT -> Int -> ImageCompressionFixedRateFlagBitsEXT #

rotateR :: ImageCompressionFixedRateFlagBitsEXT -> Int -> ImageCompressionFixedRateFlagBitsEXT #

popCount :: ImageCompressionFixedRateFlagBitsEXT -> Int #

FiniteBits ImageCompressionFixedRateFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_compression_control

Eq ImageCompressionFixedRateFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_compression_control

Ord ImageCompressionFixedRateFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_compression_control

Storable ImageCompressionFixedRateFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_compression_control

Read ImageCompressionFixedRateFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_compression_control

Show ImageCompressionFixedRateFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_compression_control

Zero ImageCompressionFixedRateFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_image_compression_control

type EXT_IMAGE_COMPRESSION_CONTROL_EXTENSION_NAME = "VK_EXT_image_compression_control" Source #