| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
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
SubresourceLayout2EXTExtending
ImageCreateInfo,SwapchainCreateInfoKHR,PhysicalDeviceImageFormatInfo2:Extending
ImageFormatProperties2,SurfaceFormat2KHR,SubresourceLayout2:Extending
PhysicalDeviceFeatures2,DeviceCreateInfo:
New Enums
New Bitmasks
New Enum Constants
EXT_IMAGE_COMPRESSION_CONTROL_SPEC_VERSIONExtending
Result:Extending
StructureType:
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
- pattern STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT :: StructureType
- pattern STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT :: StructureType
- data ImageCompressionControlEXT = ImageCompressionControlEXT {}
- data PhysicalDeviceImageCompressionControlFeaturesEXT = PhysicalDeviceImageCompressionControlFeaturesEXT {}
- data ImageCompressionPropertiesEXT = ImageCompressionPropertiesEXT {}
- type ImageCompressionFlagsEXT = ImageCompressionFlagBitsEXT
- newtype ImageCompressionFlagBitsEXT where
- ImageCompressionFlagBitsEXT Flags
- pattern IMAGE_COMPRESSION_DEFAULT_EXT :: ImageCompressionFlagBitsEXT
- pattern IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT :: ImageCompressionFlagBitsEXT
- pattern IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT :: ImageCompressionFlagBitsEXT
- pattern IMAGE_COMPRESSION_DISABLED_EXT :: ImageCompressionFlagBitsEXT
- type ImageCompressionFixedRateFlagsEXT = ImageCompressionFixedRateFlagBitsEXT
- newtype ImageCompressionFixedRateFlagBitsEXT where
- ImageCompressionFixedRateFlagBitsEXT Flags
- 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
- type EXT_IMAGE_COMPRESSION_CONTROL_SPEC_VERSION = 1
- pattern EXT_IMAGE_COMPRESSION_CONTROL_SPEC_VERSION :: Integral a => a
- type EXT_IMAGE_COMPRESSION_CONTROL_EXTENSION_NAME = "VK_EXT_image_compression_control"
- pattern EXT_IMAGE_COMPRESSION_CONTROL_EXTENSION_NAME :: (Eq a, IsString a) => a
- type ImageSubresource2EXT = ImageSubresource2
- type SubresourceLayout2EXT = SubresourceLayout2
- getImageSubresourceLayout2EXT :: forall {a :: [Type]} {io}. (Extendss SubresourceLayout2 a, PokeChain a, PeekChain a, MonadIO io) => Device -> Image -> ImageSubresource2 -> io (SubresourceLayout2 a)
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
-
flagsmust be one ofIMAGE_COMPRESSION_DEFAULT_EXT,IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT,IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT, orIMAGE_COMPRESSION_DISABLED_EXT
- If
flagsincludesIMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT,pFixedRateFlagsmust not beNULL
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT
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
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
Constructors
| PhysicalDeviceImageCompressionControlFeaturesEXT | |
Fields | |
Instances
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
newtype ImageCompressionFlagBitsEXT Source #
VkImageCompressionFlagBitsEXT - Bitmask specifying image compression controls
Description
IMAGE_COMPRESSION_DEFAULT_EXTspecifies that the default image compression setting is used. Implementations must not apply fixed-rate compression.
IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXTspecifies that the implementation may choose any supported fixed-rate compression setting in an implementation-defined manner based on the properties of the image.IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXTspecifies that fixed-rate compression may be used and that the allowed compression rates are specified byImageCompressionControlEXT::pFixedRateFlags.IMAGE_COMPRESSION_DISABLED_EXTspecifies that all lossless and fixed-rate compression should be disabled.
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
Constructors
| ImageCompressionFlagBitsEXT Flags |
Bundled Patterns
Instances
newtype ImageCompressionFixedRateFlagBitsEXT Source #
VkImageCompressionFixedRateFlagBitsEXT - Bitmask specifying fixed rate image compression rates
Description
IMAGE_COMPRESSION_FIXED_RATE_NONE_EXTspecifies that fixed-rate compression must not be used.
IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXTspecifies that fixed-rate compression with a bitrate of [1,2) bits per component may be used.IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXTspecifies that fixed-rate compression with a bitrate of [2,3) bits per component may be used.IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXTspecifies that fixed-rate compression with a bitrate of [3,4) bits per component may be used.IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXTspecifies that fixed-rate compression with a bitrate of [4,5) bits per component may be used.IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXTspecifies that fixed-rate compression with a bitrate of [5,6) bits per component may be used.IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXTspecifies that fixed-rate compression with a bitrate of [6,7) bits per component may be used.IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXTspecifies that fixed-rate compression with a bitrate of [7,8) bits per component may be used.IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXTspecifies that fixed-rate compression with a bitrate of [8,9) bits per component may be used.IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXTspecifies that fixed-rate compression with a bitrate of [9,10) bits per component may be used.IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXTspecifies that fixed-rate compression with a bitrate of [10,11) bits per component may be used.IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXTspecifies that fixed-rate compression with a bitrate of [11,12) bits per component may be used.IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXTspecifies that fixed-rate compression with a bitrate of at least 12 bits per component may be used.
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
Constructors
| ImageCompressionFixedRateFlagBitsEXT Flags |
Bundled Patterns
Instances
pattern EXT_IMAGE_COMPRESSION_CONTROL_SPEC_VERSION :: Integral a => a Source #
type EXT_IMAGE_COMPRESSION_CONTROL_EXTENSION_NAME = "VK_EXT_image_compression_control" Source #
pattern EXT_IMAGE_COMPRESSION_CONTROL_EXTENSION_NAME :: (Eq a, IsString a) => a Source #
getImageSubresourceLayout2EXT :: forall {a :: [Type]} {io}. (Extendss SubresourceLayout2 a, PokeChain a, PeekChain a, MonadIO io) => Device -> Image -> ImageSubresource2 -> io (SubresourceLayout2 a) Source #