{-# language CPP #-}
-- | = 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__]
--     Not ratified
--
-- [__Extension and Version Dependencies__]
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
--
-- [__Contact__]
--
--     -   Jan-Harald Fredriksen
--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_image_compression_control] @janharaldfredriksen-arm%0A*Here describe the issue or question you have about the VK_EXT_image_compression_control extension* >
--
-- [__Extension Proposal__]
--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_image_compression_control.adoc 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
--
-- -   'Vulkan.Extensions.VK_EXT_host_image_copy.getImageSubresourceLayout2EXT'
--
-- == New Structures
--
-- -   'Vulkan.Extensions.VK_EXT_host_image_copy.ImageSubresource2EXT'
--
-- -   'Vulkan.Extensions.VK_EXT_host_image_copy.SubresourceLayout2EXT'
--
-- -   Extending 'Vulkan.Core10.Image.ImageCreateInfo',
--     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR',
--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2':
--
--     -   'ImageCompressionControlEXT'
--
-- -   Extending
--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2',
--     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceFormat2KHR',
--     'Vulkan.Extensions.VK_KHR_maintenance5.SubresourceLayout2KHR':
--
--     -   'ImageCompressionPropertiesEXT'
--
-- -   Extending
--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--     'Vulkan.Core10.Device.DeviceCreateInfo':
--
--     -   'PhysicalDeviceImageCompressionControlFeaturesEXT'
--
-- == New Enums
--
-- -   'ImageCompressionFixedRateFlagBitsEXT'
--
-- -   'ImageCompressionFlagBitsEXT'
--
-- == New Bitmasks
--
-- -   'ImageCompressionFixedRateFlagsEXT'
--
-- -   'ImageCompressionFlagsEXT'
--
-- == New Enum Constants
--
-- -   'EXT_IMAGE_COMPRESSION_CONTROL_EXTENSION_NAME'
--
-- -   'EXT_IMAGE_COMPRESSION_CONTROL_SPEC_VERSION'
--
-- -   Extending 'Vulkan.Core10.Enums.Result.Result':
--
--     -   'Vulkan.Core10.Enums.Result.ERROR_COMPRESSION_EXHAUSTED_EXT'
--
-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT'
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT'
--
--     -   'STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT'
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT'
--
--     -   'STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT'
--
-- == Version History
--
-- -   Revision 1, 2022-05-02 (Jan-Harald Fredriksen)
--
--     -   Initial draft
--
-- == See Also
--
-- 'ImageCompressionControlEXT', 'ImageCompressionFixedRateFlagBitsEXT',
-- 'ImageCompressionFixedRateFlagsEXT', 'ImageCompressionFlagBitsEXT',
-- 'ImageCompressionFlagsEXT', 'ImageCompressionPropertiesEXT',
-- 'Vulkan.Extensions.VK_EXT_host_image_copy.ImageSubresource2EXT',
-- 'PhysicalDeviceImageCompressionControlFeaturesEXT',
-- 'Vulkan.Extensions.VK_EXT_host_image_copy.SubresourceLayout2EXT',
-- 'Vulkan.Extensions.VK_EXT_host_image_copy.getImageSubresourceLayout2EXT'
--
-- == Document Notes
--
-- For more information, see the
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_compression_control Vulkan Specification>
--
-- This page is a generated document. Fixes and changes should be made to
-- the generator scripts, not directly.
module Vulkan.Extensions.VK_EXT_image_compression_control  ( pattern STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT
                                                           , pattern STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT
                                                           , ImageCompressionControlEXT(..)
                                                           , PhysicalDeviceImageCompressionControlFeaturesEXT(..)
                                                           , ImageCompressionPropertiesEXT(..)
                                                           , ImageCompressionFlagsEXT
                                                           , ImageCompressionFlagBitsEXT( IMAGE_COMPRESSION_DEFAULT_EXT
                                                                                        , IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT
                                                                                        , IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT
                                                                                        , IMAGE_COMPRESSION_DISABLED_EXT
                                                                                        , ..
                                                                                        )
                                                           , ImageCompressionFixedRateFlagsEXT
                                                           , ImageCompressionFixedRateFlagBitsEXT( IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT
                                                                                                 , IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT
                                                                                                 , IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT
                                                                                                 , IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT
                                                                                                 , IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT
                                                                                                 , IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT
                                                                                                 , IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT
                                                                                                 , IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT
                                                                                                 , IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT
                                                                                                 , IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT
                                                                                                 , IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT
                                                                                                 , IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT
                                                                                                 , IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT
                                                                                                 , IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT
                                                                                                 , IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT
                                                                                                 , IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT
                                                                                                 , IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT
                                                                                                 , IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT
                                                                                                 , IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT
                                                                                                 , IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT
                                                                                                 , IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT
                                                                                                 , IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT
                                                                                                 , IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT
                                                                                                 , IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT
                                                                                                 , IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT
                                                                                                 , ..
                                                                                                 )
                                                           , EXT_IMAGE_COMPRESSION_CONTROL_SPEC_VERSION
                                                           , pattern EXT_IMAGE_COMPRESSION_CONTROL_SPEC_VERSION
                                                           , EXT_IMAGE_COMPRESSION_CONTROL_EXTENSION_NAME
                                                           , pattern EXT_IMAGE_COMPRESSION_CONTROL_EXTENSION_NAME
                                                           , ImageSubresource2KHR(..)
                                                           , SubresourceLayout2KHR(..)
                                                           , getImageSubresourceLayout2KHR
                                                           , ImageSubresource2EXT
                                                           , SubresourceLayout2EXT
                                                           , getImageSubresourceLayout2EXT
                                                           ) where

import Data.Bits (Bits)
import Data.Bits (FiniteBits)
import Vulkan.Internal.Utils (enumReadPrec)
import Vulkan.Internal.Utils (enumShowsPrec)
import Foreign.Marshal.Alloc (allocaBytes)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
import GHC.Show (showString)
import Numeric (showHex)
import Vulkan.CStruct (FromCStruct)
import Vulkan.CStruct (FromCStruct(..))
import Vulkan.CStruct (ToCStruct)
import Vulkan.CStruct (ToCStruct(..))
import Vulkan.Zero (Zero)
import Vulkan.Zero (Zero(..))
import Data.String (IsString)
import Data.Typeable (Typeable)
import Foreign.Storable (Storable)
import Foreign.Storable (Storable(peek))
import Foreign.Storable (Storable(poke))
import qualified Foreign.Storable (Storable(..))
import GHC.Generics (Generic)
import Foreign.Ptr (Ptr)
import GHC.Read (Read(readPrec))
import GHC.Show (Show(showsPrec))
import Data.Word (Word32)
import Data.Kind (Type)
import Vulkan.Core10.FundamentalTypes (bool32ToBool)
import Vulkan.Core10.FundamentalTypes (boolToBool32)
import Vulkan.Core10.FundamentalTypes (Bool32)
import Vulkan.Core10.FundamentalTypes (Flags)
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR))
import Vulkan.Extensions.VK_EXT_host_image_copy (getImageSubresourceLayout2EXT)
import Vulkan.Extensions.VK_KHR_maintenance5 (getImageSubresourceLayout2KHR)
import Vulkan.Extensions.VK_EXT_host_image_copy (ImageSubresource2EXT)
import Vulkan.Extensions.VK_KHR_maintenance5 (ImageSubresource2KHR(..))
import Vulkan.Extensions.VK_EXT_host_image_copy (SubresourceLayout2EXT)
import Vulkan.Extensions.VK_KHR_maintenance5 (SubresourceLayout2KHR(..))
-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT"
pattern $bSTRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT :: StructureType
$mSTRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT :: forall {r}. StructureType -> ((# #) -> r) -> ((# #) -> r) -> r
STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT = STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR


-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT"
pattern $bSTRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT :: StructureType
$mSTRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT :: forall {r}. StructureType -> ((# #) -> r) -> ((# #) -> r) -> r
STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR


-- | 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
--
-- -   #VUID-VkImageCompressionControlEXT-flags-06747# @flags@ /must/ be
--     one of 'IMAGE_COMPRESSION_DEFAULT_EXT',
--     'IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT',
--     'IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT', or
--     'IMAGE_COMPRESSION_DISABLED_EXT'
--
-- -   #VUID-VkImageCompressionControlEXT-flags-06748# If @flags@ includes
--     'IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT', @pFixedRateFlags@
--     /must/ not be @NULL@
--
-- == Valid Usage (Implicit)
--
-- -   #VUID-VkImageCompressionControlEXT-sType-sType# @sType@ /must/ be
--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT'
--
-- Note
--
-- 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
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_compression_control VK_EXT_image_compression_control>,
-- 'ImageCompressionFixedRateFlagsEXT', 'ImageCompressionFlagsEXT',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data ImageCompressionControlEXT = ImageCompressionControlEXT
  { -- | @flags@ is a bitmask of 'ImageCompressionFlagBitsEXT' describing
    -- compression controls for the image.
    ImageCompressionControlEXT -> ImageCompressionFlagBitsEXT
flags :: ImageCompressionFlagsEXT
  , -- | @compressionControlPlaneCount@ is the number of entries in the
    -- @pFixedRateFlags@ array.
    ImageCompressionControlEXT -> Flags
compressionControlPlaneCount :: Word32
  , -- | @pFixedRateFlags@ is @NULL@ or a pointer to an array of
    -- 'ImageCompressionFixedRateFlagsEXT' bitfields describing allowed
    -- fixed-rate compression rates of each image plane. It is ignored if
    -- @flags@ does not include 'IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT'.
    ImageCompressionControlEXT
-> Ptr ImageCompressionFixedRateFlagBitsEXT
fixedRateFlags :: Ptr ImageCompressionFixedRateFlagsEXT
  }
  deriving (Typeable, ImageCompressionControlEXT -> ImageCompressionControlEXT -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ImageCompressionControlEXT -> ImageCompressionControlEXT -> Bool
$c/= :: ImageCompressionControlEXT -> ImageCompressionControlEXT -> Bool
== :: ImageCompressionControlEXT -> ImageCompressionControlEXT -> Bool
$c== :: ImageCompressionControlEXT -> ImageCompressionControlEXT -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (ImageCompressionControlEXT)
#endif
deriving instance Show ImageCompressionControlEXT

instance ToCStruct ImageCompressionControlEXT where
  withCStruct :: forall b.
ImageCompressionControlEXT
-> (Ptr ImageCompressionControlEXT -> IO b) -> IO b
withCStruct ImageCompressionControlEXT
x Ptr ImageCompressionControlEXT -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 forall a b. (a -> b) -> a -> b
$ \Ptr ImageCompressionControlEXT
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr ImageCompressionControlEXT
p ImageCompressionControlEXT
x (Ptr ImageCompressionControlEXT -> IO b
f Ptr ImageCompressionControlEXT
p)
  pokeCStruct :: forall b.
Ptr ImageCompressionControlEXT
-> ImageCompressionControlEXT -> IO b -> IO b
pokeCStruct Ptr ImageCompressionControlEXT
p ImageCompressionControlEXT{Flags
Ptr ImageCompressionFixedRateFlagBitsEXT
ImageCompressionFlagBitsEXT
fixedRateFlags :: Ptr ImageCompressionFixedRateFlagBitsEXT
compressionControlPlaneCount :: Flags
flags :: ImageCompressionFlagBitsEXT
$sel:fixedRateFlags:ImageCompressionControlEXT :: ImageCompressionControlEXT
-> Ptr ImageCompressionFixedRateFlagBitsEXT
$sel:compressionControlPlaneCount:ImageCompressionControlEXT :: ImageCompressionControlEXT -> Flags
$sel:flags:ImageCompressionControlEXT :: ImageCompressionControlEXT -> ImageCompressionFlagBitsEXT
..} IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ImageCompressionControlEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ImageCompressionControlEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ImageCompressionControlEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr ImageCompressionFlagsEXT)) (ImageCompressionFlagBitsEXT
flags)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ImageCompressionControlEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Word32)) (Flags
compressionControlPlaneCount)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ImageCompressionControlEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr (Ptr ImageCompressionFixedRateFlagsEXT))) (Ptr ImageCompressionFixedRateFlagBitsEXT
fixedRateFlags)
    IO b
f
  cStructSize :: Int
cStructSize = Int
32
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b. Ptr ImageCompressionControlEXT -> IO b -> IO b
pokeZeroCStruct Ptr ImageCompressionControlEXT
p IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ImageCompressionControlEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ImageCompressionControlEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ImageCompressionControlEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr ImageCompressionFlagsEXT)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ImageCompressionControlEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr (Ptr ImageCompressionFixedRateFlagsEXT))) (forall a. Zero a => a
zero)
    IO b
f

instance FromCStruct ImageCompressionControlEXT where
  peekCStruct :: Ptr ImageCompressionControlEXT -> IO ImageCompressionControlEXT
peekCStruct Ptr ImageCompressionControlEXT
p = do
    ImageCompressionFlagBitsEXT
flags <- forall a. Storable a => Ptr a -> IO a
peek @ImageCompressionFlagsEXT ((Ptr ImageCompressionControlEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr ImageCompressionFlagsEXT))
    Flags
compressionControlPlaneCount <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr ImageCompressionControlEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Word32))
    Ptr ImageCompressionFixedRateFlagBitsEXT
pFixedRateFlags <- forall a. Storable a => Ptr a -> IO a
peek @(Ptr ImageCompressionFixedRateFlagsEXT) ((Ptr ImageCompressionControlEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr (Ptr ImageCompressionFixedRateFlagsEXT)))
    forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ ImageCompressionFlagBitsEXT
-> Flags
-> Ptr ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionControlEXT
ImageCompressionControlEXT
             ImageCompressionFlagBitsEXT
flags Flags
compressionControlPlaneCount Ptr ImageCompressionFixedRateFlagBitsEXT
pFixedRateFlags

instance Storable ImageCompressionControlEXT where
  sizeOf :: ImageCompressionControlEXT -> Int
sizeOf ~ImageCompressionControlEXT
_ = Int
32
  alignment :: ImageCompressionControlEXT -> Int
alignment ~ImageCompressionControlEXT
_ = Int
8
  peek :: Ptr ImageCompressionControlEXT -> IO ImageCompressionControlEXT
peek = forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
  poke :: Ptr ImageCompressionControlEXT
-> ImageCompressionControlEXT -> IO ()
poke Ptr ImageCompressionControlEXT
ptr ImageCompressionControlEXT
poked = forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr ImageCompressionControlEXT
ptr ImageCompressionControlEXT
poked (forall (f :: * -> *) a. Applicative f => a -> f a
pure ())

instance Zero ImageCompressionControlEXT where
  zero :: ImageCompressionControlEXT
zero = ImageCompressionFlagBitsEXT
-> Flags
-> Ptr ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionControlEXT
ImageCompressionControlEXT
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero


-- | 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
-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
-- structure passed to
-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
-- it is filled in to indicate whether each corresponding feature is
-- supported. 'PhysicalDeviceImageCompressionControlFeaturesEXT' /can/ also
-- be used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
-- to selectively enable these features.
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_compression_control VK_EXT_image_compression_control>,
-- 'Vulkan.Core10.FundamentalTypes.Bool32',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data PhysicalDeviceImageCompressionControlFeaturesEXT = PhysicalDeviceImageCompressionControlFeaturesEXT
  { -- | #features-imageCompressionControl# @imageCompressionControl@ indicates
    -- that the implementation supports providing controls for image
    -- compression at image creation time.
    PhysicalDeviceImageCompressionControlFeaturesEXT -> Bool
imageCompressionControl :: Bool }
  deriving (Typeable, PhysicalDeviceImageCompressionControlFeaturesEXT
-> PhysicalDeviceImageCompressionControlFeaturesEXT -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PhysicalDeviceImageCompressionControlFeaturesEXT
-> PhysicalDeviceImageCompressionControlFeaturesEXT -> Bool
$c/= :: PhysicalDeviceImageCompressionControlFeaturesEXT
-> PhysicalDeviceImageCompressionControlFeaturesEXT -> Bool
== :: PhysicalDeviceImageCompressionControlFeaturesEXT
-> PhysicalDeviceImageCompressionControlFeaturesEXT -> Bool
$c== :: PhysicalDeviceImageCompressionControlFeaturesEXT
-> PhysicalDeviceImageCompressionControlFeaturesEXT -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceImageCompressionControlFeaturesEXT)
#endif
deriving instance Show PhysicalDeviceImageCompressionControlFeaturesEXT

instance ToCStruct PhysicalDeviceImageCompressionControlFeaturesEXT where
  withCStruct :: forall b.
PhysicalDeviceImageCompressionControlFeaturesEXT
-> (Ptr PhysicalDeviceImageCompressionControlFeaturesEXT -> IO b)
-> IO b
withCStruct PhysicalDeviceImageCompressionControlFeaturesEXT
x Ptr PhysicalDeviceImageCompressionControlFeaturesEXT -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceImageCompressionControlFeaturesEXT
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceImageCompressionControlFeaturesEXT
p PhysicalDeviceImageCompressionControlFeaturesEXT
x (Ptr PhysicalDeviceImageCompressionControlFeaturesEXT -> IO b
f Ptr PhysicalDeviceImageCompressionControlFeaturesEXT
p)
  pokeCStruct :: forall b.
Ptr PhysicalDeviceImageCompressionControlFeaturesEXT
-> PhysicalDeviceImageCompressionControlFeaturesEXT -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceImageCompressionControlFeaturesEXT
p PhysicalDeviceImageCompressionControlFeaturesEXT{Bool
imageCompressionControl :: Bool
$sel:imageCompressionControl:PhysicalDeviceImageCompressionControlFeaturesEXT :: PhysicalDeviceImageCompressionControlFeaturesEXT -> Bool
..} IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceImageCompressionControlFeaturesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceImageCompressionControlFeaturesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceImageCompressionControlFeaturesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
imageCompressionControl))
    IO b
f
  cStructSize :: Int
cStructSize = Int
24
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceImageCompressionControlFeaturesEXT
-> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceImageCompressionControlFeaturesEXT
p IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceImageCompressionControlFeaturesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceImageCompressionControlFeaturesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceImageCompressionControlFeaturesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    IO b
f

instance FromCStruct PhysicalDeviceImageCompressionControlFeaturesEXT where
  peekCStruct :: Ptr PhysicalDeviceImageCompressionControlFeaturesEXT
-> IO PhysicalDeviceImageCompressionControlFeaturesEXT
peekCStruct Ptr PhysicalDeviceImageCompressionControlFeaturesEXT
p = do
    Bool32
imageCompressionControl <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceImageCompressionControlFeaturesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
    forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ Bool -> PhysicalDeviceImageCompressionControlFeaturesEXT
PhysicalDeviceImageCompressionControlFeaturesEXT
             (Bool32 -> Bool
bool32ToBool Bool32
imageCompressionControl)

instance Storable PhysicalDeviceImageCompressionControlFeaturesEXT where
  sizeOf :: PhysicalDeviceImageCompressionControlFeaturesEXT -> Int
sizeOf ~PhysicalDeviceImageCompressionControlFeaturesEXT
_ = Int
24
  alignment :: PhysicalDeviceImageCompressionControlFeaturesEXT -> Int
alignment ~PhysicalDeviceImageCompressionControlFeaturesEXT
_ = Int
8
  peek :: Ptr PhysicalDeviceImageCompressionControlFeaturesEXT
-> IO PhysicalDeviceImageCompressionControlFeaturesEXT
peek = forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
  poke :: Ptr PhysicalDeviceImageCompressionControlFeaturesEXT
-> PhysicalDeviceImageCompressionControlFeaturesEXT -> IO ()
poke Ptr PhysicalDeviceImageCompressionControlFeaturesEXT
ptr PhysicalDeviceImageCompressionControlFeaturesEXT
poked = forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceImageCompressionControlFeaturesEXT
ptr PhysicalDeviceImageCompressionControlFeaturesEXT
poked (forall (f :: * -> *) a. Applicative f => a -> f a
pure ())

instance Zero PhysicalDeviceImageCompressionControlFeaturesEXT where
  zero :: PhysicalDeviceImageCompressionControlFeaturesEXT
zero = Bool -> PhysicalDeviceImageCompressionControlFeaturesEXT
PhysicalDeviceImageCompressionControlFeaturesEXT
           forall a. Zero a => a
zero


-- | VkImageCompressionPropertiesEXT - Compression properties of an image
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_compression_control VK_EXT_image_compression_control>,
-- 'ImageCompressionFixedRateFlagsEXT', 'ImageCompressionFlagsEXT',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data ImageCompressionPropertiesEXT = ImageCompressionPropertiesEXT
  { -- | @imageCompressionFlags@ returns a value describing the compression
    -- controls that apply to the image. The value will be either
    -- 'IMAGE_COMPRESSION_DEFAULT_EXT' to indicate no fixed-rate compression,
    -- 'IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT' to indicate fixed-rate
    -- compression, or 'IMAGE_COMPRESSION_DISABLED_EXT' to indicate no
    -- compression.
    ImageCompressionPropertiesEXT -> ImageCompressionFlagBitsEXT
imageCompressionFlags :: ImageCompressionFlagsEXT
  , -- | @imageCompressionFixedRateFlags@ returns a
    -- 'ImageCompressionFixedRateFlagsEXT' value describing the compression
    -- rates that apply to the specified aspect of the image.
    ImageCompressionPropertiesEXT
-> ImageCompressionFixedRateFlagBitsEXT
imageCompressionFixedRateFlags :: ImageCompressionFixedRateFlagsEXT
  }
  deriving (Typeable, ImageCompressionPropertiesEXT
-> ImageCompressionPropertiesEXT -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ImageCompressionPropertiesEXT
-> ImageCompressionPropertiesEXT -> Bool
$c/= :: ImageCompressionPropertiesEXT
-> ImageCompressionPropertiesEXT -> Bool
== :: ImageCompressionPropertiesEXT
-> ImageCompressionPropertiesEXT -> Bool
$c== :: ImageCompressionPropertiesEXT
-> ImageCompressionPropertiesEXT -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (ImageCompressionPropertiesEXT)
#endif
deriving instance Show ImageCompressionPropertiesEXT

instance ToCStruct ImageCompressionPropertiesEXT where
  withCStruct :: forall b.
ImageCompressionPropertiesEXT
-> (Ptr ImageCompressionPropertiesEXT -> IO b) -> IO b
withCStruct ImageCompressionPropertiesEXT
x Ptr ImageCompressionPropertiesEXT -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 forall a b. (a -> b) -> a -> b
$ \Ptr ImageCompressionPropertiesEXT
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr ImageCompressionPropertiesEXT
p ImageCompressionPropertiesEXT
x (Ptr ImageCompressionPropertiesEXT -> IO b
f Ptr ImageCompressionPropertiesEXT
p)
  pokeCStruct :: forall b.
Ptr ImageCompressionPropertiesEXT
-> ImageCompressionPropertiesEXT -> IO b -> IO b
pokeCStruct Ptr ImageCompressionPropertiesEXT
p ImageCompressionPropertiesEXT{ImageCompressionFixedRateFlagBitsEXT
ImageCompressionFlagBitsEXT
imageCompressionFixedRateFlags :: ImageCompressionFixedRateFlagBitsEXT
imageCompressionFlags :: ImageCompressionFlagBitsEXT
$sel:imageCompressionFixedRateFlags:ImageCompressionPropertiesEXT :: ImageCompressionPropertiesEXT
-> ImageCompressionFixedRateFlagBitsEXT
$sel:imageCompressionFlags:ImageCompressionPropertiesEXT :: ImageCompressionPropertiesEXT -> ImageCompressionFlagBitsEXT
..} IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ImageCompressionPropertiesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ImageCompressionPropertiesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ImageCompressionPropertiesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr ImageCompressionFlagsEXT)) (ImageCompressionFlagBitsEXT
imageCompressionFlags)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ImageCompressionPropertiesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr ImageCompressionFixedRateFlagsEXT)) (ImageCompressionFixedRateFlagBitsEXT
imageCompressionFixedRateFlags)
    IO b
f
  cStructSize :: Int
cStructSize = Int
24
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b. Ptr ImageCompressionPropertiesEXT -> IO b -> IO b
pokeZeroCStruct Ptr ImageCompressionPropertiesEXT
p IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ImageCompressionPropertiesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ImageCompressionPropertiesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ImageCompressionPropertiesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr ImageCompressionFlagsEXT)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ImageCompressionPropertiesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr ImageCompressionFixedRateFlagsEXT)) (forall a. Zero a => a
zero)
    IO b
f

instance FromCStruct ImageCompressionPropertiesEXT where
  peekCStruct :: Ptr ImageCompressionPropertiesEXT
-> IO ImageCompressionPropertiesEXT
peekCStruct Ptr ImageCompressionPropertiesEXT
p = do
    ImageCompressionFlagBitsEXT
imageCompressionFlags <- forall a. Storable a => Ptr a -> IO a
peek @ImageCompressionFlagsEXT ((Ptr ImageCompressionPropertiesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr ImageCompressionFlagsEXT))
    ImageCompressionFixedRateFlagBitsEXT
imageCompressionFixedRateFlags <- forall a. Storable a => Ptr a -> IO a
peek @ImageCompressionFixedRateFlagsEXT ((Ptr ImageCompressionPropertiesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr ImageCompressionFixedRateFlagsEXT))
    forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ ImageCompressionFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionPropertiesEXT
ImageCompressionPropertiesEXT
             ImageCompressionFlagBitsEXT
imageCompressionFlags ImageCompressionFixedRateFlagBitsEXT
imageCompressionFixedRateFlags

instance Storable ImageCompressionPropertiesEXT where
  sizeOf :: ImageCompressionPropertiesEXT -> Int
sizeOf ~ImageCompressionPropertiesEXT
_ = Int
24
  alignment :: ImageCompressionPropertiesEXT -> Int
alignment ~ImageCompressionPropertiesEXT
_ = Int
8
  peek :: Ptr ImageCompressionPropertiesEXT
-> IO ImageCompressionPropertiesEXT
peek = forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
  poke :: Ptr ImageCompressionPropertiesEXT
-> ImageCompressionPropertiesEXT -> IO ()
poke Ptr ImageCompressionPropertiesEXT
ptr ImageCompressionPropertiesEXT
poked = forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr ImageCompressionPropertiesEXT
ptr ImageCompressionPropertiesEXT
poked (forall (f :: * -> *) a. Applicative f => a -> f a
pure ())

instance Zero ImageCompressionPropertiesEXT where
  zero :: ImageCompressionPropertiesEXT
zero = ImageCompressionFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionPropertiesEXT
ImageCompressionPropertiesEXT
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero


type ImageCompressionFlagsEXT = ImageCompressionFlagBitsEXT

-- | VkImageCompressionFlagBitsEXT - Bitmask specifying image compression
-- controls
--
-- = Description
--
-- If 'ImageCompressionControlEXT'::@flags@ is
-- 'IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT', then the @i@th member of
-- the @pFixedRateFlags@ array specifies the allowed compression rates for
-- the image’s @i@th plane.
--
-- Note
--
-- 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
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_compression_control VK_EXT_image_compression_control>,
-- 'ImageCompressionFlagsEXT'
newtype ImageCompressionFlagBitsEXT = ImageCompressionFlagBitsEXT Flags
  deriving newtype (ImageCompressionFlagBitsEXT -> ImageCompressionFlagBitsEXT -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ImageCompressionFlagBitsEXT -> ImageCompressionFlagBitsEXT -> Bool
$c/= :: ImageCompressionFlagBitsEXT -> ImageCompressionFlagBitsEXT -> Bool
== :: ImageCompressionFlagBitsEXT -> ImageCompressionFlagBitsEXT -> Bool
$c== :: ImageCompressionFlagBitsEXT -> ImageCompressionFlagBitsEXT -> Bool
Eq, Eq ImageCompressionFlagBitsEXT
ImageCompressionFlagBitsEXT -> ImageCompressionFlagBitsEXT -> Bool
ImageCompressionFlagBitsEXT
-> ImageCompressionFlagBitsEXT -> Ordering
ImageCompressionFlagBitsEXT
-> ImageCompressionFlagBitsEXT -> ImageCompressionFlagBitsEXT
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: ImageCompressionFlagBitsEXT
-> ImageCompressionFlagBitsEXT -> ImageCompressionFlagBitsEXT
$cmin :: ImageCompressionFlagBitsEXT
-> ImageCompressionFlagBitsEXT -> ImageCompressionFlagBitsEXT
max :: ImageCompressionFlagBitsEXT
-> ImageCompressionFlagBitsEXT -> ImageCompressionFlagBitsEXT
$cmax :: ImageCompressionFlagBitsEXT
-> ImageCompressionFlagBitsEXT -> ImageCompressionFlagBitsEXT
>= :: ImageCompressionFlagBitsEXT -> ImageCompressionFlagBitsEXT -> Bool
$c>= :: ImageCompressionFlagBitsEXT -> ImageCompressionFlagBitsEXT -> Bool
> :: ImageCompressionFlagBitsEXT -> ImageCompressionFlagBitsEXT -> Bool
$c> :: ImageCompressionFlagBitsEXT -> ImageCompressionFlagBitsEXT -> Bool
<= :: ImageCompressionFlagBitsEXT -> ImageCompressionFlagBitsEXT -> Bool
$c<= :: ImageCompressionFlagBitsEXT -> ImageCompressionFlagBitsEXT -> Bool
< :: ImageCompressionFlagBitsEXT -> ImageCompressionFlagBitsEXT -> Bool
$c< :: ImageCompressionFlagBitsEXT -> ImageCompressionFlagBitsEXT -> Bool
compare :: ImageCompressionFlagBitsEXT
-> ImageCompressionFlagBitsEXT -> Ordering
$ccompare :: ImageCompressionFlagBitsEXT
-> ImageCompressionFlagBitsEXT -> Ordering
Ord, Ptr ImageCompressionFlagBitsEXT -> IO ImageCompressionFlagBitsEXT
Ptr ImageCompressionFlagBitsEXT
-> Int -> IO ImageCompressionFlagBitsEXT
Ptr ImageCompressionFlagBitsEXT
-> Int -> ImageCompressionFlagBitsEXT -> IO ()
Ptr ImageCompressionFlagBitsEXT
-> ImageCompressionFlagBitsEXT -> IO ()
ImageCompressionFlagBitsEXT -> Int
forall b. Ptr b -> Int -> IO ImageCompressionFlagBitsEXT
forall b. Ptr b -> Int -> ImageCompressionFlagBitsEXT -> IO ()
forall a.
(a -> Int)
-> (a -> Int)
-> (Ptr a -> Int -> IO a)
-> (Ptr a -> Int -> a -> IO ())
-> (forall b. Ptr b -> Int -> IO a)
-> (forall b. Ptr b -> Int -> a -> IO ())
-> (Ptr a -> IO a)
-> (Ptr a -> a -> IO ())
-> Storable a
poke :: Ptr ImageCompressionFlagBitsEXT
-> ImageCompressionFlagBitsEXT -> IO ()
$cpoke :: Ptr ImageCompressionFlagBitsEXT
-> ImageCompressionFlagBitsEXT -> IO ()
peek :: Ptr ImageCompressionFlagBitsEXT -> IO ImageCompressionFlagBitsEXT
$cpeek :: Ptr ImageCompressionFlagBitsEXT -> IO ImageCompressionFlagBitsEXT
pokeByteOff :: forall b. Ptr b -> Int -> ImageCompressionFlagBitsEXT -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> ImageCompressionFlagBitsEXT -> IO ()
peekByteOff :: forall b. Ptr b -> Int -> IO ImageCompressionFlagBitsEXT
$cpeekByteOff :: forall b. Ptr b -> Int -> IO ImageCompressionFlagBitsEXT
pokeElemOff :: Ptr ImageCompressionFlagBitsEXT
-> Int -> ImageCompressionFlagBitsEXT -> IO ()
$cpokeElemOff :: Ptr ImageCompressionFlagBitsEXT
-> Int -> ImageCompressionFlagBitsEXT -> IO ()
peekElemOff :: Ptr ImageCompressionFlagBitsEXT
-> Int -> IO ImageCompressionFlagBitsEXT
$cpeekElemOff :: Ptr ImageCompressionFlagBitsEXT
-> Int -> IO ImageCompressionFlagBitsEXT
alignment :: ImageCompressionFlagBitsEXT -> Int
$calignment :: ImageCompressionFlagBitsEXT -> Int
sizeOf :: ImageCompressionFlagBitsEXT -> Int
$csizeOf :: ImageCompressionFlagBitsEXT -> Int
Storable, ImageCompressionFlagBitsEXT
forall a. a -> Zero a
zero :: ImageCompressionFlagBitsEXT
$czero :: ImageCompressionFlagBitsEXT
Zero, Eq ImageCompressionFlagBitsEXT
ImageCompressionFlagBitsEXT
Int -> ImageCompressionFlagBitsEXT
ImageCompressionFlagBitsEXT -> Bool
ImageCompressionFlagBitsEXT -> Int
ImageCompressionFlagBitsEXT -> Maybe Int
ImageCompressionFlagBitsEXT -> ImageCompressionFlagBitsEXT
ImageCompressionFlagBitsEXT -> Int -> Bool
ImageCompressionFlagBitsEXT -> Int -> ImageCompressionFlagBitsEXT
ImageCompressionFlagBitsEXT
-> ImageCompressionFlagBitsEXT -> ImageCompressionFlagBitsEXT
forall a.
Eq a
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> a
-> (Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> Bool)
-> (a -> Maybe Int)
-> (a -> Int)
-> (a -> Bool)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int)
-> Bits a
popCount :: ImageCompressionFlagBitsEXT -> Int
$cpopCount :: ImageCompressionFlagBitsEXT -> Int
rotateR :: ImageCompressionFlagBitsEXT -> Int -> ImageCompressionFlagBitsEXT
$crotateR :: ImageCompressionFlagBitsEXT -> Int -> ImageCompressionFlagBitsEXT
rotateL :: ImageCompressionFlagBitsEXT -> Int -> ImageCompressionFlagBitsEXT
$crotateL :: ImageCompressionFlagBitsEXT -> Int -> ImageCompressionFlagBitsEXT
unsafeShiftR :: ImageCompressionFlagBitsEXT -> Int -> ImageCompressionFlagBitsEXT
$cunsafeShiftR :: ImageCompressionFlagBitsEXT -> Int -> ImageCompressionFlagBitsEXT
shiftR :: ImageCompressionFlagBitsEXT -> Int -> ImageCompressionFlagBitsEXT
$cshiftR :: ImageCompressionFlagBitsEXT -> Int -> ImageCompressionFlagBitsEXT
unsafeShiftL :: ImageCompressionFlagBitsEXT -> Int -> ImageCompressionFlagBitsEXT
$cunsafeShiftL :: ImageCompressionFlagBitsEXT -> Int -> ImageCompressionFlagBitsEXT
shiftL :: ImageCompressionFlagBitsEXT -> Int -> ImageCompressionFlagBitsEXT
$cshiftL :: ImageCompressionFlagBitsEXT -> Int -> ImageCompressionFlagBitsEXT
isSigned :: ImageCompressionFlagBitsEXT -> Bool
$cisSigned :: ImageCompressionFlagBitsEXT -> Bool
bitSize :: ImageCompressionFlagBitsEXT -> Int
$cbitSize :: ImageCompressionFlagBitsEXT -> Int
bitSizeMaybe :: ImageCompressionFlagBitsEXT -> Maybe Int
$cbitSizeMaybe :: ImageCompressionFlagBitsEXT -> Maybe Int
testBit :: ImageCompressionFlagBitsEXT -> Int -> Bool
$ctestBit :: ImageCompressionFlagBitsEXT -> Int -> Bool
complementBit :: ImageCompressionFlagBitsEXT -> Int -> ImageCompressionFlagBitsEXT
$ccomplementBit :: ImageCompressionFlagBitsEXT -> Int -> ImageCompressionFlagBitsEXT
clearBit :: ImageCompressionFlagBitsEXT -> Int -> ImageCompressionFlagBitsEXT
$cclearBit :: ImageCompressionFlagBitsEXT -> Int -> ImageCompressionFlagBitsEXT
setBit :: ImageCompressionFlagBitsEXT -> Int -> ImageCompressionFlagBitsEXT
$csetBit :: ImageCompressionFlagBitsEXT -> Int -> ImageCompressionFlagBitsEXT
bit :: Int -> ImageCompressionFlagBitsEXT
$cbit :: Int -> ImageCompressionFlagBitsEXT
zeroBits :: ImageCompressionFlagBitsEXT
$czeroBits :: ImageCompressionFlagBitsEXT
rotate :: ImageCompressionFlagBitsEXT -> Int -> ImageCompressionFlagBitsEXT
$crotate :: ImageCompressionFlagBitsEXT -> Int -> ImageCompressionFlagBitsEXT
shift :: ImageCompressionFlagBitsEXT -> Int -> ImageCompressionFlagBitsEXT
$cshift :: ImageCompressionFlagBitsEXT -> Int -> ImageCompressionFlagBitsEXT
complement :: ImageCompressionFlagBitsEXT -> ImageCompressionFlagBitsEXT
$ccomplement :: ImageCompressionFlagBitsEXT -> ImageCompressionFlagBitsEXT
xor :: ImageCompressionFlagBitsEXT
-> ImageCompressionFlagBitsEXT -> ImageCompressionFlagBitsEXT
$cxor :: ImageCompressionFlagBitsEXT
-> ImageCompressionFlagBitsEXT -> ImageCompressionFlagBitsEXT
.|. :: ImageCompressionFlagBitsEXT
-> ImageCompressionFlagBitsEXT -> ImageCompressionFlagBitsEXT
$c.|. :: ImageCompressionFlagBitsEXT
-> ImageCompressionFlagBitsEXT -> ImageCompressionFlagBitsEXT
.&. :: ImageCompressionFlagBitsEXT
-> ImageCompressionFlagBitsEXT -> ImageCompressionFlagBitsEXT
$c.&. :: ImageCompressionFlagBitsEXT
-> ImageCompressionFlagBitsEXT -> ImageCompressionFlagBitsEXT
Bits, Bits ImageCompressionFlagBitsEXT
ImageCompressionFlagBitsEXT -> Int
forall b.
Bits b -> (b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
countTrailingZeros :: ImageCompressionFlagBitsEXT -> Int
$ccountTrailingZeros :: ImageCompressionFlagBitsEXT -> Int
countLeadingZeros :: ImageCompressionFlagBitsEXT -> Int
$ccountLeadingZeros :: ImageCompressionFlagBitsEXT -> Int
finiteBitSize :: ImageCompressionFlagBitsEXT -> Int
$cfiniteBitSize :: ImageCompressionFlagBitsEXT -> Int
FiniteBits)

-- | 'IMAGE_COMPRESSION_DEFAULT_EXT' specifies that the default image
-- compression setting is used. Implementations /must/ not apply fixed-rate
-- compression.
pattern $bIMAGE_COMPRESSION_DEFAULT_EXT :: ImageCompressionFlagBitsEXT
$mIMAGE_COMPRESSION_DEFAULT_EXT :: forall {r}.
ImageCompressionFlagBitsEXT -> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_COMPRESSION_DEFAULT_EXT = ImageCompressionFlagBitsEXT 0x00000000

-- | 'IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT' specifies that the
-- implementation /may/ choose any supported fixed-rate compression setting
-- in an implementation-defined manner based on the properties of the
-- image.
pattern $bIMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT :: ImageCompressionFlagBitsEXT
$mIMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT :: forall {r}.
ImageCompressionFlagBitsEXT -> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT = ImageCompressionFlagBitsEXT 0x00000001

-- | 'IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT' specifies that fixed-rate
-- compression /may/ be used and that the allowed compression rates are
-- specified by 'ImageCompressionControlEXT'::@pFixedRateFlags@.
pattern $bIMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT :: ImageCompressionFlagBitsEXT
$mIMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT :: forall {r}.
ImageCompressionFlagBitsEXT -> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT = ImageCompressionFlagBitsEXT 0x00000002

-- | 'IMAGE_COMPRESSION_DISABLED_EXT' specifies that all lossless and
-- fixed-rate compression /should/ be disabled.
pattern $bIMAGE_COMPRESSION_DISABLED_EXT :: ImageCompressionFlagBitsEXT
$mIMAGE_COMPRESSION_DISABLED_EXT :: forall {r}.
ImageCompressionFlagBitsEXT -> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_COMPRESSION_DISABLED_EXT = ImageCompressionFlagBitsEXT 0x00000004

conNameImageCompressionFlagBitsEXT :: String
conNameImageCompressionFlagBitsEXT :: String
conNameImageCompressionFlagBitsEXT = String
"ImageCompressionFlagBitsEXT"

enumPrefixImageCompressionFlagBitsEXT :: String
enumPrefixImageCompressionFlagBitsEXT :: String
enumPrefixImageCompressionFlagBitsEXT = String
"IMAGE_COMPRESSION_"

showTableImageCompressionFlagBitsEXT :: [(ImageCompressionFlagBitsEXT, String)]
showTableImageCompressionFlagBitsEXT :: [(ImageCompressionFlagBitsEXT, String)]
showTableImageCompressionFlagBitsEXT =
  [
    ( ImageCompressionFlagBitsEXT
IMAGE_COMPRESSION_DEFAULT_EXT
    , String
"DEFAULT_EXT"
    )
  ,
    ( ImageCompressionFlagBitsEXT
IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT
    , String
"FIXED_RATE_DEFAULT_EXT"
    )
  ,
    ( ImageCompressionFlagBitsEXT
IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT
    , String
"FIXED_RATE_EXPLICIT_EXT"
    )
  ,
    ( ImageCompressionFlagBitsEXT
IMAGE_COMPRESSION_DISABLED_EXT
    , String
"DISABLED_EXT"
    )
  ]

instance Show ImageCompressionFlagBitsEXT where
  showsPrec :: Int -> ImageCompressionFlagBitsEXT -> ShowS
showsPrec =
    forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
      String
enumPrefixImageCompressionFlagBitsEXT
      [(ImageCompressionFlagBitsEXT, String)]
showTableImageCompressionFlagBitsEXT
      String
conNameImageCompressionFlagBitsEXT
      (\(ImageCompressionFlagBitsEXT Flags
x) -> Flags
x)
      (\Flags
x -> String -> ShowS
showString String
"0x" forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. (Integral a, Show a) => a -> ShowS
showHex Flags
x)

instance Read ImageCompressionFlagBitsEXT where
  readPrec :: ReadPrec ImageCompressionFlagBitsEXT
readPrec =
    forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
      String
enumPrefixImageCompressionFlagBitsEXT
      [(ImageCompressionFlagBitsEXT, String)]
showTableImageCompressionFlagBitsEXT
      String
conNameImageCompressionFlagBitsEXT
      Flags -> ImageCompressionFlagBitsEXT
ImageCompressionFlagBitsEXT

type ImageCompressionFixedRateFlagsEXT = ImageCompressionFixedRateFlagBitsEXT

-- | 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
-- 'Vulkan.Core10.Enums.Format.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.
--
-- Note
--
-- 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,
-- 'Vulkan.Core10.Enums.Format.FORMAT_R8G8_UNORM' compressed to half its
-- original size is a rate of 4 bits per component, 8 bits per pixel.
-- 'Vulkan.Core10.Enums.Format.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
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_compression_control VK_EXT_image_compression_control>,
-- 'ImageCompressionFixedRateFlagsEXT'
newtype ImageCompressionFixedRateFlagBitsEXT = ImageCompressionFixedRateFlagBitsEXT Flags
  deriving newtype (ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT -> Bool
$c/= :: ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT -> Bool
== :: ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT -> Bool
$c== :: ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT -> Bool
Eq, Eq ImageCompressionFixedRateFlagBitsEXT
ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT -> Bool
ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT -> Ordering
ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT
$cmin :: ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT
max :: ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT
$cmax :: ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT
>= :: ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT -> Bool
$c>= :: ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT -> Bool
> :: ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT -> Bool
$c> :: ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT -> Bool
<= :: ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT -> Bool
$c<= :: ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT -> Bool
< :: ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT -> Bool
$c< :: ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT -> Bool
compare :: ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT -> Ordering
$ccompare :: ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT -> Ordering
Ord, Ptr ImageCompressionFixedRateFlagBitsEXT
-> IO ImageCompressionFixedRateFlagBitsEXT
Ptr ImageCompressionFixedRateFlagBitsEXT
-> Int -> IO ImageCompressionFixedRateFlagBitsEXT
Ptr ImageCompressionFixedRateFlagBitsEXT
-> Int -> ImageCompressionFixedRateFlagBitsEXT -> IO ()
Ptr ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT -> IO ()
ImageCompressionFixedRateFlagBitsEXT -> Int
forall b. Ptr b -> Int -> IO ImageCompressionFixedRateFlagBitsEXT
forall b.
Ptr b -> Int -> ImageCompressionFixedRateFlagBitsEXT -> IO ()
forall a.
(a -> Int)
-> (a -> Int)
-> (Ptr a -> Int -> IO a)
-> (Ptr a -> Int -> a -> IO ())
-> (forall b. Ptr b -> Int -> IO a)
-> (forall b. Ptr b -> Int -> a -> IO ())
-> (Ptr a -> IO a)
-> (Ptr a -> a -> IO ())
-> Storable a
poke :: Ptr ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT -> IO ()
$cpoke :: Ptr ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT -> IO ()
peek :: Ptr ImageCompressionFixedRateFlagBitsEXT
-> IO ImageCompressionFixedRateFlagBitsEXT
$cpeek :: Ptr ImageCompressionFixedRateFlagBitsEXT
-> IO ImageCompressionFixedRateFlagBitsEXT
pokeByteOff :: forall b.
Ptr b -> Int -> ImageCompressionFixedRateFlagBitsEXT -> IO ()
$cpokeByteOff :: forall b.
Ptr b -> Int -> ImageCompressionFixedRateFlagBitsEXT -> IO ()
peekByteOff :: forall b. Ptr b -> Int -> IO ImageCompressionFixedRateFlagBitsEXT
$cpeekByteOff :: forall b. Ptr b -> Int -> IO ImageCompressionFixedRateFlagBitsEXT
pokeElemOff :: Ptr ImageCompressionFixedRateFlagBitsEXT
-> Int -> ImageCompressionFixedRateFlagBitsEXT -> IO ()
$cpokeElemOff :: Ptr ImageCompressionFixedRateFlagBitsEXT
-> Int -> ImageCompressionFixedRateFlagBitsEXT -> IO ()
peekElemOff :: Ptr ImageCompressionFixedRateFlagBitsEXT
-> Int -> IO ImageCompressionFixedRateFlagBitsEXT
$cpeekElemOff :: Ptr ImageCompressionFixedRateFlagBitsEXT
-> Int -> IO ImageCompressionFixedRateFlagBitsEXT
alignment :: ImageCompressionFixedRateFlagBitsEXT -> Int
$calignment :: ImageCompressionFixedRateFlagBitsEXT -> Int
sizeOf :: ImageCompressionFixedRateFlagBitsEXT -> Int
$csizeOf :: ImageCompressionFixedRateFlagBitsEXT -> Int
Storable, ImageCompressionFixedRateFlagBitsEXT
forall a. a -> Zero a
zero :: ImageCompressionFixedRateFlagBitsEXT
$czero :: ImageCompressionFixedRateFlagBitsEXT
Zero, Eq ImageCompressionFixedRateFlagBitsEXT
ImageCompressionFixedRateFlagBitsEXT
Int -> ImageCompressionFixedRateFlagBitsEXT
ImageCompressionFixedRateFlagBitsEXT -> Bool
ImageCompressionFixedRateFlagBitsEXT -> Int
ImageCompressionFixedRateFlagBitsEXT -> Maybe Int
ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT
ImageCompressionFixedRateFlagBitsEXT -> Int -> Bool
ImageCompressionFixedRateFlagBitsEXT
-> Int -> ImageCompressionFixedRateFlagBitsEXT
ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT
forall a.
Eq a
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> a
-> (Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> Bool)
-> (a -> Maybe Int)
-> (a -> Int)
-> (a -> Bool)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int)
-> Bits a
popCount :: ImageCompressionFixedRateFlagBitsEXT -> Int
$cpopCount :: ImageCompressionFixedRateFlagBitsEXT -> Int
rotateR :: ImageCompressionFixedRateFlagBitsEXT
-> Int -> ImageCompressionFixedRateFlagBitsEXT
$crotateR :: ImageCompressionFixedRateFlagBitsEXT
-> Int -> ImageCompressionFixedRateFlagBitsEXT
rotateL :: ImageCompressionFixedRateFlagBitsEXT
-> Int -> ImageCompressionFixedRateFlagBitsEXT
$crotateL :: ImageCompressionFixedRateFlagBitsEXT
-> Int -> ImageCompressionFixedRateFlagBitsEXT
unsafeShiftR :: ImageCompressionFixedRateFlagBitsEXT
-> Int -> ImageCompressionFixedRateFlagBitsEXT
$cunsafeShiftR :: ImageCompressionFixedRateFlagBitsEXT
-> Int -> ImageCompressionFixedRateFlagBitsEXT
shiftR :: ImageCompressionFixedRateFlagBitsEXT
-> Int -> ImageCompressionFixedRateFlagBitsEXT
$cshiftR :: ImageCompressionFixedRateFlagBitsEXT
-> Int -> ImageCompressionFixedRateFlagBitsEXT
unsafeShiftL :: ImageCompressionFixedRateFlagBitsEXT
-> Int -> ImageCompressionFixedRateFlagBitsEXT
$cunsafeShiftL :: ImageCompressionFixedRateFlagBitsEXT
-> Int -> ImageCompressionFixedRateFlagBitsEXT
shiftL :: ImageCompressionFixedRateFlagBitsEXT
-> Int -> ImageCompressionFixedRateFlagBitsEXT
$cshiftL :: ImageCompressionFixedRateFlagBitsEXT
-> Int -> ImageCompressionFixedRateFlagBitsEXT
isSigned :: ImageCompressionFixedRateFlagBitsEXT -> Bool
$cisSigned :: ImageCompressionFixedRateFlagBitsEXT -> Bool
bitSize :: ImageCompressionFixedRateFlagBitsEXT -> Int
$cbitSize :: ImageCompressionFixedRateFlagBitsEXT -> Int
bitSizeMaybe :: ImageCompressionFixedRateFlagBitsEXT -> Maybe Int
$cbitSizeMaybe :: ImageCompressionFixedRateFlagBitsEXT -> Maybe Int
testBit :: ImageCompressionFixedRateFlagBitsEXT -> Int -> Bool
$ctestBit :: ImageCompressionFixedRateFlagBitsEXT -> Int -> Bool
complementBit :: ImageCompressionFixedRateFlagBitsEXT
-> Int -> ImageCompressionFixedRateFlagBitsEXT
$ccomplementBit :: ImageCompressionFixedRateFlagBitsEXT
-> Int -> ImageCompressionFixedRateFlagBitsEXT
clearBit :: ImageCompressionFixedRateFlagBitsEXT
-> Int -> ImageCompressionFixedRateFlagBitsEXT
$cclearBit :: ImageCompressionFixedRateFlagBitsEXT
-> Int -> ImageCompressionFixedRateFlagBitsEXT
setBit :: ImageCompressionFixedRateFlagBitsEXT
-> Int -> ImageCompressionFixedRateFlagBitsEXT
$csetBit :: ImageCompressionFixedRateFlagBitsEXT
-> Int -> ImageCompressionFixedRateFlagBitsEXT
bit :: Int -> ImageCompressionFixedRateFlagBitsEXT
$cbit :: Int -> ImageCompressionFixedRateFlagBitsEXT
zeroBits :: ImageCompressionFixedRateFlagBitsEXT
$czeroBits :: ImageCompressionFixedRateFlagBitsEXT
rotate :: ImageCompressionFixedRateFlagBitsEXT
-> Int -> ImageCompressionFixedRateFlagBitsEXT
$crotate :: ImageCompressionFixedRateFlagBitsEXT
-> Int -> ImageCompressionFixedRateFlagBitsEXT
shift :: ImageCompressionFixedRateFlagBitsEXT
-> Int -> ImageCompressionFixedRateFlagBitsEXT
$cshift :: ImageCompressionFixedRateFlagBitsEXT
-> Int -> ImageCompressionFixedRateFlagBitsEXT
complement :: ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT
$ccomplement :: ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT
xor :: ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT
$cxor :: ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT
.|. :: ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT
$c.|. :: ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT
.&. :: ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT
$c.&. :: ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT
-> ImageCompressionFixedRateFlagBitsEXT
Bits, Bits ImageCompressionFixedRateFlagBitsEXT
ImageCompressionFixedRateFlagBitsEXT -> Int
forall b.
Bits b -> (b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
countTrailingZeros :: ImageCompressionFixedRateFlagBitsEXT -> Int
$ccountTrailingZeros :: ImageCompressionFixedRateFlagBitsEXT -> Int
countLeadingZeros :: ImageCompressionFixedRateFlagBitsEXT -> Int
$ccountLeadingZeros :: ImageCompressionFixedRateFlagBitsEXT -> Int
finiteBitSize :: ImageCompressionFixedRateFlagBitsEXT -> Int
$cfiniteBitSize :: ImageCompressionFixedRateFlagBitsEXT -> Int
FiniteBits)

-- | 'IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT' specifies that fixed-rate
-- compression /must/ not be used.
pattern $bIMAGE_COMPRESSION_FIXED_RATE_NONE_EXT :: ImageCompressionFixedRateFlagBitsEXT
$mIMAGE_COMPRESSION_FIXED_RATE_NONE_EXT :: forall {r}.
ImageCompressionFixedRateFlagBitsEXT
-> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT = ImageCompressionFixedRateFlagBitsEXT 0x00000000

-- | 'IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT' specifies that fixed-rate
-- compression with a bitrate of [1,2) bits per component /may/ be used.
pattern $bIMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT
$mIMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT :: forall {r}.
ImageCompressionFixedRateFlagBitsEXT
-> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT = ImageCompressionFixedRateFlagBitsEXT 0x00000001

-- | 'IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT' specifies that fixed-rate
-- compression with a bitrate of [2,3) bits per component /may/ be used.
pattern $bIMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT
$mIMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT :: forall {r}.
ImageCompressionFixedRateFlagBitsEXT
-> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT = ImageCompressionFixedRateFlagBitsEXT 0x00000002

-- | 'IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT' specifies that fixed-rate
-- compression with a bitrate of [3,4) bits per component /may/ be used.
pattern $bIMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT
$mIMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT :: forall {r}.
ImageCompressionFixedRateFlagBitsEXT
-> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT = ImageCompressionFixedRateFlagBitsEXT 0x00000004

-- | 'IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT' specifies that fixed-rate
-- compression with a bitrate of [4,5) bits per component /may/ be used.
pattern $bIMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT
$mIMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT :: forall {r}.
ImageCompressionFixedRateFlagBitsEXT
-> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT = ImageCompressionFixedRateFlagBitsEXT 0x00000008

-- | 'IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT' specifies that fixed-rate
-- compression with a bitrate of [5,6) bits per component /may/ be used.
pattern $bIMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT
$mIMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT :: forall {r}.
ImageCompressionFixedRateFlagBitsEXT
-> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT = ImageCompressionFixedRateFlagBitsEXT 0x00000010

-- | 'IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT' specifies that fixed-rate
-- compression with a bitrate of [6,7) bits per component /may/ be used.
pattern $bIMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT
$mIMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT :: forall {r}.
ImageCompressionFixedRateFlagBitsEXT
-> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT = ImageCompressionFixedRateFlagBitsEXT 0x00000020

-- | 'IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT' specifies that fixed-rate
-- compression with a bitrate of [7,8) bits per component /may/ be used.
pattern $bIMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT
$mIMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT :: forall {r}.
ImageCompressionFixedRateFlagBitsEXT
-> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT = ImageCompressionFixedRateFlagBitsEXT 0x00000040

-- | 'IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT' specifies that fixed-rate
-- compression with a bitrate of [8,9) bits per component /may/ be used.
pattern $bIMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT
$mIMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT :: forall {r}.
ImageCompressionFixedRateFlagBitsEXT
-> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT = ImageCompressionFixedRateFlagBitsEXT 0x00000080

-- | 'IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT' specifies that fixed-rate
-- compression with a bitrate of [9,10) bits per component /may/ be used.
pattern $bIMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT
$mIMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT :: forall {r}.
ImageCompressionFixedRateFlagBitsEXT
-> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT = ImageCompressionFixedRateFlagBitsEXT 0x00000100

-- | 'IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT' specifies that fixed-rate
-- compression with a bitrate of [10,11) bits per component /may/ be used.
pattern $bIMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT
$mIMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT :: forall {r}.
ImageCompressionFixedRateFlagBitsEXT
-> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT = ImageCompressionFixedRateFlagBitsEXT 0x00000200

-- | 'IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT' specifies that fixed-rate
-- compression with a bitrate of [11,12) bits per component /may/ be used.
pattern $bIMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT
$mIMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT :: forall {r}.
ImageCompressionFixedRateFlagBitsEXT
-> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT = ImageCompressionFixedRateFlagBitsEXT 0x00000400

-- | 'IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT' specifies that fixed-rate
-- compression with a bitrate of at least 12 bits per component /may/ be
-- used.
pattern $bIMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT
$mIMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT :: forall {r}.
ImageCompressionFixedRateFlagBitsEXT
-> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT = ImageCompressionFixedRateFlagBitsEXT 0x00000800

-- No documentation found for Nested "VkImageCompressionFixedRateFlagBitsEXT" "VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT"
pattern $bIMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT
$mIMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT :: forall {r}.
ImageCompressionFixedRateFlagBitsEXT
-> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT = ImageCompressionFixedRateFlagBitsEXT 0x00001000

-- No documentation found for Nested "VkImageCompressionFixedRateFlagBitsEXT" "VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT"
pattern $bIMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT
$mIMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT :: forall {r}.
ImageCompressionFixedRateFlagBitsEXT
-> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT = ImageCompressionFixedRateFlagBitsEXT 0x00002000

-- No documentation found for Nested "VkImageCompressionFixedRateFlagBitsEXT" "VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT"
pattern $bIMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT
$mIMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT :: forall {r}.
ImageCompressionFixedRateFlagBitsEXT
-> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT = ImageCompressionFixedRateFlagBitsEXT 0x00004000

-- No documentation found for Nested "VkImageCompressionFixedRateFlagBitsEXT" "VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT"
pattern $bIMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT
$mIMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT :: forall {r}.
ImageCompressionFixedRateFlagBitsEXT
-> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT = ImageCompressionFixedRateFlagBitsEXT 0x00008000

-- No documentation found for Nested "VkImageCompressionFixedRateFlagBitsEXT" "VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT"
pattern $bIMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT
$mIMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT :: forall {r}.
ImageCompressionFixedRateFlagBitsEXT
-> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT = ImageCompressionFixedRateFlagBitsEXT 0x00010000

-- No documentation found for Nested "VkImageCompressionFixedRateFlagBitsEXT" "VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT"
pattern $bIMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT
$mIMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT :: forall {r}.
ImageCompressionFixedRateFlagBitsEXT
-> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT = ImageCompressionFixedRateFlagBitsEXT 0x00020000

-- No documentation found for Nested "VkImageCompressionFixedRateFlagBitsEXT" "VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT"
pattern $bIMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT
$mIMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT :: forall {r}.
ImageCompressionFixedRateFlagBitsEXT
-> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT = ImageCompressionFixedRateFlagBitsEXT 0x00040000

-- No documentation found for Nested "VkImageCompressionFixedRateFlagBitsEXT" "VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT"
pattern $bIMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT
$mIMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT :: forall {r}.
ImageCompressionFixedRateFlagBitsEXT
-> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT = ImageCompressionFixedRateFlagBitsEXT 0x00080000

-- No documentation found for Nested "VkImageCompressionFixedRateFlagBitsEXT" "VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT"
pattern $bIMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT
$mIMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT :: forall {r}.
ImageCompressionFixedRateFlagBitsEXT
-> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT = ImageCompressionFixedRateFlagBitsEXT 0x00100000

-- No documentation found for Nested "VkImageCompressionFixedRateFlagBitsEXT" "VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT"
pattern $bIMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT
$mIMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT :: forall {r}.
ImageCompressionFixedRateFlagBitsEXT
-> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT = ImageCompressionFixedRateFlagBitsEXT 0x00200000

-- No documentation found for Nested "VkImageCompressionFixedRateFlagBitsEXT" "VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT"
pattern $bIMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT
$mIMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT :: forall {r}.
ImageCompressionFixedRateFlagBitsEXT
-> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT = ImageCompressionFixedRateFlagBitsEXT 0x00400000

-- No documentation found for Nested "VkImageCompressionFixedRateFlagBitsEXT" "VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT"
pattern $bIMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT :: ImageCompressionFixedRateFlagBitsEXT
$mIMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT :: forall {r}.
ImageCompressionFixedRateFlagBitsEXT
-> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT = ImageCompressionFixedRateFlagBitsEXT 0x00800000

conNameImageCompressionFixedRateFlagBitsEXT :: String
conNameImageCompressionFixedRateFlagBitsEXT :: String
conNameImageCompressionFixedRateFlagBitsEXT = String
"ImageCompressionFixedRateFlagBitsEXT"

enumPrefixImageCompressionFixedRateFlagBitsEXT :: String
enumPrefixImageCompressionFixedRateFlagBitsEXT :: String
enumPrefixImageCompressionFixedRateFlagBitsEXT = String
"IMAGE_COMPRESSION_FIXED_RATE_"

showTableImageCompressionFixedRateFlagBitsEXT :: [(ImageCompressionFixedRateFlagBitsEXT, String)]
showTableImageCompressionFixedRateFlagBitsEXT :: [(ImageCompressionFixedRateFlagBitsEXT, String)]
showTableImageCompressionFixedRateFlagBitsEXT =
  [
    ( ImageCompressionFixedRateFlagBitsEXT
IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT
    , String
"NONE_EXT"
    )
  ,
    ( ImageCompressionFixedRateFlagBitsEXT
IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT
    , String
"1BPC_BIT_EXT"
    )
  ,
    ( ImageCompressionFixedRateFlagBitsEXT
IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT
    , String
"2BPC_BIT_EXT"
    )
  ,
    ( ImageCompressionFixedRateFlagBitsEXT
IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT
    , String
"3BPC_BIT_EXT"
    )
  ,
    ( ImageCompressionFixedRateFlagBitsEXT
IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT
    , String
"4BPC_BIT_EXT"
    )
  ,
    ( ImageCompressionFixedRateFlagBitsEXT
IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT
    , String
"5BPC_BIT_EXT"
    )
  ,
    ( ImageCompressionFixedRateFlagBitsEXT
IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT
    , String
"6BPC_BIT_EXT"
    )
  ,
    ( ImageCompressionFixedRateFlagBitsEXT
IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT
    , String
"7BPC_BIT_EXT"
    )
  ,
    ( ImageCompressionFixedRateFlagBitsEXT
IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT
    , String
"8BPC_BIT_EXT"
    )
  ,
    ( ImageCompressionFixedRateFlagBitsEXT
IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT
    , String
"9BPC_BIT_EXT"
    )
  ,
    ( ImageCompressionFixedRateFlagBitsEXT
IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT
    , String
"10BPC_BIT_EXT"
    )
  ,
    ( ImageCompressionFixedRateFlagBitsEXT
IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT
    , String
"11BPC_BIT_EXT"
    )
  ,
    ( ImageCompressionFixedRateFlagBitsEXT
IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT
    , String
"12BPC_BIT_EXT"
    )
  ,
    ( ImageCompressionFixedRateFlagBitsEXT
IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT
    , String
"13BPC_BIT_EXT"
    )
  ,
    ( ImageCompressionFixedRateFlagBitsEXT
IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT
    , String
"14BPC_BIT_EXT"
    )
  ,
    ( ImageCompressionFixedRateFlagBitsEXT
IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT
    , String
"15BPC_BIT_EXT"
    )
  ,
    ( ImageCompressionFixedRateFlagBitsEXT
IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT
    , String
"16BPC_BIT_EXT"
    )
  ,
    ( ImageCompressionFixedRateFlagBitsEXT
IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT
    , String
"17BPC_BIT_EXT"
    )
  ,
    ( ImageCompressionFixedRateFlagBitsEXT
IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT
    , String
"18BPC_BIT_EXT"
    )
  ,
    ( ImageCompressionFixedRateFlagBitsEXT
IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT
    , String
"19BPC_BIT_EXT"
    )
  ,
    ( ImageCompressionFixedRateFlagBitsEXT
IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT
    , String
"20BPC_BIT_EXT"
    )
  ,
    ( ImageCompressionFixedRateFlagBitsEXT
IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT
    , String
"21BPC_BIT_EXT"
    )
  ,
    ( ImageCompressionFixedRateFlagBitsEXT
IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT
    , String
"22BPC_BIT_EXT"
    )
  ,
    ( ImageCompressionFixedRateFlagBitsEXT
IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT
    , String
"23BPC_BIT_EXT"
    )
  ,
    ( ImageCompressionFixedRateFlagBitsEXT
IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT
    , String
"24BPC_BIT_EXT"
    )
  ]

instance Show ImageCompressionFixedRateFlagBitsEXT where
  showsPrec :: Int -> ImageCompressionFixedRateFlagBitsEXT -> ShowS
showsPrec =
    forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
      String
enumPrefixImageCompressionFixedRateFlagBitsEXT
      [(ImageCompressionFixedRateFlagBitsEXT, String)]
showTableImageCompressionFixedRateFlagBitsEXT
      String
conNameImageCompressionFixedRateFlagBitsEXT
      (\(ImageCompressionFixedRateFlagBitsEXT Flags
x) -> Flags
x)
      (\Flags
x -> String -> ShowS
showString String
"0x" forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. (Integral a, Show a) => a -> ShowS
showHex Flags
x)

instance Read ImageCompressionFixedRateFlagBitsEXT where
  readPrec :: ReadPrec ImageCompressionFixedRateFlagBitsEXT
readPrec =
    forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
      String
enumPrefixImageCompressionFixedRateFlagBitsEXT
      [(ImageCompressionFixedRateFlagBitsEXT, String)]
showTableImageCompressionFixedRateFlagBitsEXT
      String
conNameImageCompressionFixedRateFlagBitsEXT
      Flags -> ImageCompressionFixedRateFlagBitsEXT
ImageCompressionFixedRateFlagBitsEXT

type EXT_IMAGE_COMPRESSION_CONTROL_SPEC_VERSION = 1

-- No documentation found for TopLevel "VK_EXT_IMAGE_COMPRESSION_CONTROL_SPEC_VERSION"
pattern EXT_IMAGE_COMPRESSION_CONTROL_SPEC_VERSION :: forall a . Integral a => a
pattern $bEXT_IMAGE_COMPRESSION_CONTROL_SPEC_VERSION :: forall a. Integral a => a
$mEXT_IMAGE_COMPRESSION_CONTROL_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
EXT_IMAGE_COMPRESSION_CONTROL_SPEC_VERSION = 1


type EXT_IMAGE_COMPRESSION_CONTROL_EXTENSION_NAME = "VK_EXT_image_compression_control"

-- No documentation found for TopLevel "VK_EXT_IMAGE_COMPRESSION_CONTROL_EXTENSION_NAME"
pattern EXT_IMAGE_COMPRESSION_CONTROL_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $bEXT_IMAGE_COMPRESSION_CONTROL_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
$mEXT_IMAGE_COMPRESSION_CONTROL_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
EXT_IMAGE_COMPRESSION_CONTROL_EXTENSION_NAME = "VK_EXT_image_compression_control"