{-# OPTIONS_HADDOCK not-home#-}
{-# LANGUAGE DataKinds       #-}
{-# LANGUAGE MagicHash       #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE Strict          #-}
{-# LANGUAGE ViewPatterns    #-}
module Graphics.Vulkan.Ext.VK_EXT_texture_compression_astc_hdr
       (-- * Vulkan extension: @VK_EXT_texture_compression_astc_hdr@
        -- |
        --
        -- supported: @vulkan@
        --
        -- contact: @Jan-Harald Fredriksen @janharaldfredriksen-arm@
        --
        -- author: @ARM@
        --
        -- type: @device@
        --
        -- Extension number: @67@
        --
        -- Required extensions: 'VK_KHR_get_physical_device_properties2'.
        --

        -- ** Required extensions: 'VK_KHR_get_physical_device_properties2'.
        module Graphics.Vulkan.Marshal, AHardwareBuffer(),
        ANativeWindow(), CAMetalLayer(), VkBool32(..), VkDeviceAddress(..),
        VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
        VkAndroidSurfaceCreateFlagsKHR(..), VkBufferViewCreateFlags(..),
        VkBuildAccelerationStructureFlagsNV(..),
        VkCommandPoolTrimFlags(..), VkCommandPoolTrimFlagsKHR(..),
        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
        VkDebugUtilsMessengerCreateFlagsEXT(..),
        VkDescriptorBindingFlagsEXT(..), VkDescriptorPoolResetFlags(..),
        VkDescriptorUpdateTemplateCreateFlags(..),
        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
        VkDeviceCreateFlags(..), VkDirectFBSurfaceCreateFlagsEXT(..),
        VkDisplayModeCreateFlagsKHR(..),
        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
        VkExternalFenceFeatureFlagsKHR(..),
        VkExternalFenceHandleTypeFlagsKHR(..),
        VkExternalMemoryFeatureFlagsKHR(..),
        VkExternalMemoryHandleTypeFlagsKHR(..),
        VkExternalSemaphoreFeatureFlagsKHR(..),
        VkExternalSemaphoreHandleTypeFlagsKHR(..),
        VkFenceImportFlagsKHR(..), VkGeometryFlagsNV(..),
        VkGeometryInstanceFlagsNV(..), VkHeadlessSurfaceCreateFlagsEXT(..),
        VkIOSSurfaceCreateFlagsMVK(..),
        VkImagePipeSurfaceCreateFlagsFUCHSIA(..),
        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
        VkMetalSurfaceCreateFlagsEXT(..), VkPeerMemoryFeatureFlagsKHR(..),
        VkPipelineColorBlendStateCreateFlags(..),
        VkPipelineCoverageModulationStateCreateFlagsNV(..),
        VkPipelineCoverageReductionStateCreateFlagsNV(..),
        VkPipelineCoverageToColorStateCreateFlagsNV(..),
        VkPipelineDepthStencilStateCreateFlags(..),
        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
        VkPipelineDynamicStateCreateFlags(..),
        VkPipelineInputAssemblyStateCreateFlags(..),
        VkPipelineLayoutCreateFlags(..),
        VkPipelineMultisampleStateCreateFlags(..),
        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
        VkPipelineRasterizationDepthClipStateCreateFlagsEXT(..),
        VkPipelineRasterizationStateCreateFlags(..),
        VkPipelineRasterizationStateStreamCreateFlagsEXT(..),
        VkPipelineTessellationStateCreateFlags(..),
        VkPipelineVertexInputStateCreateFlags(..),
        VkPipelineViewportStateCreateFlags(..),
        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
        VkQueryPoolCreateFlags(..), VkResolveModeFlagsKHR(..),
        VkSemaphoreCreateFlags(..), VkSemaphoreImportFlagsKHR(..),
        VkSemaphoreWaitFlagsKHR(..),
        VkStreamDescriptorSurfaceCreateFlagsGGP(..),
        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
        VkWaylandSurfaceCreateFlagsKHR(..),
        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
        VkXlibSurfaceCreateFlagsKHR(..), VkDeviceCreateInfo,
        VkDeviceDiagnosticsConfigBitmaskNV(..), VkDeviceEventTypeEXT(..),
        VkDeviceGroupPresentModeBitmaskKHR(..), VkDeviceCreateFlagBits(..),
        VkDeviceDiagnosticsConfigFlagBitsNV(),
        VkDeviceDiagnosticsConfigFlagsNV(),
        VkDeviceGroupPresentModeFlagBitsKHR(),
        VkDeviceGroupPresentModeFlagsKHR(), VkDeviceQueueCreateBitmask(..),
        VkDeviceQueueCreateFlagBits(), VkDeviceQueueCreateFlags(),
        VkDeviceQueueCreateInfo, VkPhysicalDeviceFeatures,
        VkPhysicalDeviceFeatures2,
        VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT,
        VkStructureType(..),
        -- > #include "vk_platform.h"
        VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION,
        pattern VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION,
        VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME,
        pattern VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME,
        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT,
        pattern VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT,
        pattern VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT,
        pattern VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT,
        pattern VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT,
        pattern VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT,
        pattern VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT,
        pattern VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT,
        pattern VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT,
        pattern VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT,
        pattern VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT,
        pattern VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT,
        pattern VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT,
        pattern VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT,
        pattern VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT)
       where
import GHC.Ptr                                             (Ptr (..))
import Graphics.Vulkan.Marshal
import Graphics.Vulkan.Types.BaseTypes
import Graphics.Vulkan.Types.Bitmasks
import Graphics.Vulkan.Types.Enum.Device
import Graphics.Vulkan.Types.Enum.Format                   (VkFormat (..))
import Graphics.Vulkan.Types.Enum.StructureType
import Graphics.Vulkan.Types.Struct.Device                 (VkDeviceCreateInfo, VkDeviceQueueCreateInfo)
import Graphics.Vulkan.Types.Struct.PhysicalDevice         (VkPhysicalDeviceFeatures2,
                                                            VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT)
import Graphics.Vulkan.Types.Struct.PhysicalDeviceFeatures (VkPhysicalDeviceFeatures)

pattern VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION ::
        (Num a, Eq a) => a

pattern $bVK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION :: forall a. (Num a, Eq a) => a
$mVK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION :: forall {r} {a}.
(Num a, Eq a) =>
a -> (Void# -> r) -> (Void# -> r) -> r
VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION = 1

type VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION = 1

pattern VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME ::
        CString

pattern $bVK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME :: CString
$mVK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME <-
        (is_VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME -> True)
  where
    VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME
      = CString
_VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME

{-# INLINE _VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME #-}

_VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME :: CString
_VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME :: CString
_VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME
  = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"VK_EXT_texture_compression_astc_hdr\NUL"#

{-# INLINE is_VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME
           #-}

is_VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME ::
                                                      CString -> Bool
is_VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME :: CString -> Bool
is_VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME
  = (Ordering
EQ Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
==) (Ordering -> Bool) -> (CString -> Ordering) -> CString -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
      CString -> CString -> Ordering
cmpCStrings CString
_VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME

type VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME =
     "VK_EXT_texture_compression_astc_hdr"

pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT
        :: VkStructureType

pattern $bVK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT :: VkStructureType
$mVK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT
        = VkStructureType 1000066000

pattern VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT :: VkFormat

pattern $bVK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT :: VkFormat
$mVK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT :: forall {r}. VkFormat -> (Void# -> r) -> (Void# -> r) -> r
VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = VkFormat 1000066000

pattern VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT :: VkFormat

pattern $bVK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT :: VkFormat
$mVK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT :: forall {r}. VkFormat -> (Void# -> r) -> (Void# -> r) -> r
VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = VkFormat 1000066001

pattern VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT :: VkFormat

pattern $bVK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT :: VkFormat
$mVK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT :: forall {r}. VkFormat -> (Void# -> r) -> (Void# -> r) -> r
VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = VkFormat 1000066002

pattern VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT :: VkFormat

pattern $bVK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT :: VkFormat
$mVK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT :: forall {r}. VkFormat -> (Void# -> r) -> (Void# -> r) -> r
VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = VkFormat 1000066003

pattern VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT :: VkFormat

pattern $bVK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT :: VkFormat
$mVK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT :: forall {r}. VkFormat -> (Void# -> r) -> (Void# -> r) -> r
VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = VkFormat 1000066004

pattern VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT :: VkFormat

pattern $bVK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT :: VkFormat
$mVK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT :: forall {r}. VkFormat -> (Void# -> r) -> (Void# -> r) -> r
VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = VkFormat 1000066005

pattern VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT :: VkFormat

pattern $bVK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT :: VkFormat
$mVK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT :: forall {r}. VkFormat -> (Void# -> r) -> (Void# -> r) -> r
VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = VkFormat 1000066006

pattern VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT :: VkFormat

pattern $bVK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT :: VkFormat
$mVK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT :: forall {r}. VkFormat -> (Void# -> r) -> (Void# -> r) -> r
VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = VkFormat 1000066007

pattern VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT :: VkFormat

pattern $bVK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT :: VkFormat
$mVK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT :: forall {r}. VkFormat -> (Void# -> r) -> (Void# -> r) -> r
VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = VkFormat 1000066008

pattern VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT :: VkFormat

pattern $bVK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT :: VkFormat
$mVK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT :: forall {r}. VkFormat -> (Void# -> r) -> (Void# -> r) -> r
VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = VkFormat 1000066009

pattern VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT :: VkFormat

pattern $bVK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT :: VkFormat
$mVK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT :: forall {r}. VkFormat -> (Void# -> r) -> (Void# -> r) -> r
VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = VkFormat 1000066010

pattern VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT :: VkFormat

pattern $bVK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT :: VkFormat
$mVK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT :: forall {r}. VkFormat -> (Void# -> r) -> (Void# -> r) -> r
VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = VkFormat 1000066011

pattern VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT :: VkFormat

pattern $bVK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT :: VkFormat
$mVK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT :: forall {r}. VkFormat -> (Void# -> r) -> (Void# -> r) -> r
VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = VkFormat 1000066012

pattern VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT :: VkFormat

pattern $bVK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT :: VkFormat
$mVK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT :: forall {r}. VkFormat -> (Void# -> r) -> (Void# -> r) -> r
VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = VkFormat 1000066013