{-# OPTIONS_GHC -fno-warn-orphans#-}
{-# OPTIONS_HADDOCK not-home#-}
{-# LANGUAGE CPP                      #-}
{-# LANGUAGE DataKinds                #-}
{-# LANGUAGE FlexibleInstances        #-}
{-# LANGUAGE ForeignFunctionInterface #-}
{-# LANGUAGE MagicHash                #-}
{-# LANGUAGE PatternSynonyms          #-}
{-# LANGUAGE Strict                   #-}
{-# LANGUAGE TypeFamilies             #-}
{-# LANGUAGE ViewPatterns             #-}
module Graphics.Vulkan.Ext.VK_NVX_image_view_handle
       (-- * Vulkan extension: @VK_NVX_image_view_handle@
        -- |
        --
        -- supported: @vulkan@
        --
        -- contact: @Eric Werness @ewerness@
        --
        -- author: @NVX@
        --
        -- type: @device@
        --
        -- Extension number: @31@
        VkDescriptorBindingBitmask(..), VkDescriptorPoolCreateBitmask(..),
        VkDescriptorType(..), VkDescriptorUpdateTemplateType(..),
        VkDescriptorBindingFlagBits(), VkDescriptorBindingFlagBitsEXT(..),
        VkDescriptorBindingFlags(), VkDescriptorPoolCreateFlagBits(),
        VkDescriptorPoolCreateFlags(),
        VkDescriptorSetLayoutCreateBitmask(..),
        VkDescriptorSetLayoutCreateFlagBits(),
        VkDescriptorSetLayoutCreateFlags(),
        VkDescriptorUpdateTemplateTypeKHR(..), AHardwareBuffer(),
        ANativeWindow(), CAMetalLayer(), VkBool32(..), VkDeviceAddress(..),
        VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
        VkImageViewAddressPropertiesNVX, VkImageViewHandleInfoNVX,
        VkStructureType(..), -- > #include "vk_platform.h"
                             VkGetImageViewHandleNVX,
        pattern VkGetImageViewHandleNVX, HS_vkGetImageViewHandleNVX,
        PFN_vkGetImageViewHandleNVX, VkGetImageViewAddressNVX,
        pattern VkGetImageViewAddressNVX, HS_vkGetImageViewAddressNVX,
        PFN_vkGetImageViewAddressNVX, module Graphics.Vulkan.Marshal,
        VkResult(..), VkAccelerationStructureKHR,
        VkAccelerationStructureKHR_T(), VkAccelerationStructureNV,
        VkAccelerationStructureNV_T(), VkBuffer, VkBufferView,
        VkBufferView_T(), VkBuffer_T(), VkCommandBuffer,
        VkCommandBuffer_T(), VkCommandPool, VkCommandPool_T(),
        VkDebugReportCallbackEXT, VkDebugReportCallbackEXT_T(),
        VkDebugUtilsMessengerEXT, VkDebugUtilsMessengerEXT_T(),
        VkDeferredOperationKHR, VkDeferredOperationKHR_T(),
        VkDescriptorPool, VkDescriptorPool_T(), VkDescriptorSet,
        VkDescriptorSetLayout, VkDescriptorSetLayout_T(),
        VkDescriptorSet_T(), VkDescriptorUpdateTemplate,
        VkDescriptorUpdateTemplateKHR, VkDescriptorUpdateTemplateKHR_T(),
        VkDescriptorUpdateTemplate_T(), VkDevice, VkDeviceMemory,
        VkDeviceMemory_T(), VkDevice_T(), VkDisplayKHR, VkDisplayKHR_T(),
        VkDisplayModeKHR, VkDisplayModeKHR_T(), VkEvent, VkEvent_T(),
        VkFence, VkFence_T(), VkFramebuffer, VkFramebuffer_T(), VkImage,
        VkImageView, VkImageView_T(), VkImage_T(),
        VkIndirectCommandsLayoutNV, VkIndirectCommandsLayoutNV_T(),
        VkInstance, VkInstance_T(), VkPerformanceConfigurationINTEL,
        VkPerformanceConfigurationINTEL_T(), VkPhysicalDevice,
        VkPhysicalDevice_T(), VkPipeline, VkPipelineCache,
        VkPipelineCache_T(), VkPipelineLayout, VkPipelineLayout_T(),
        VkPipeline_T(), VkPrivateDataSlotEXT, VkPrivateDataSlotEXT_T(),
        VkQueryPool, VkQueryPool_T(), VkQueue, VkQueue_T(), VkRenderPass,
        VkRenderPass_T(), VkSampler, VkSamplerYcbcrConversion,
        VkSamplerYcbcrConversionKHR, VkSamplerYcbcrConversionKHR_T(),
        VkSamplerYcbcrConversion_T(), VkSampler_T(), VkSemaphore,
        VkSemaphore_T(), VkShaderModule, VkShaderModule_T(), VkSurfaceKHR,
        VkSurfaceKHR_T(), VkSwapchainKHR, VkSwapchainKHR_T(),
        VkValidationCacheEXT, VkValidationCacheEXT_T(), VkImageBlit,
        VkImageCopy, VkImageCreateInfo,
        VkImageDrmFormatModifierExplicitCreateInfoEXT,
        VkImageDrmFormatModifierListCreateInfoEXT,
        VkImageDrmFormatModifierPropertiesEXT, VkImageFormatListCreateInfo,
        VkImageFormatListCreateInfoKHR, VkImageFormatProperties,
        VkImageFormatProperties2, VkImageFormatProperties2KHR,
        VkImageMemoryBarrier, VkImageMemoryRequirementsInfo2,
        VkImageMemoryRequirementsInfo2KHR,
        VkImagePlaneMemoryRequirementsInfo,
        VkImagePlaneMemoryRequirementsInfoKHR, VkImageResolve,
        VkImageSparseMemoryRequirementsInfo2,
        VkImageSparseMemoryRequirementsInfo2KHR,
        VkImageStencilUsageCreateInfo, VkImageStencilUsageCreateInfoEXT,
        VkImageSubresource, VkImageSubresourceLayers,
        VkImageSubresourceRange, VkImageSwapchainCreateInfoKHR,
        VkImageViewASTCDecodeModeEXT, VkImageViewCreateInfo,
        VkImageViewUsageCreateInfo, VkImageViewUsageCreateInfoKHR,
        VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION,
        pattern VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION,
        VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME,
        pattern VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME,
        pattern VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX,
        pattern VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX)
       where
import GHC.Ptr                                  (Ptr (..))
import Graphics.Vulkan.Marshal
import Graphics.Vulkan.Marshal.Proc             (VulkanProc (..))
import Graphics.Vulkan.Types.BaseTypes
import Graphics.Vulkan.Types.Enum.Descriptor
import Graphics.Vulkan.Types.Enum.Result
import Graphics.Vulkan.Types.Enum.StructureType
import Graphics.Vulkan.Types.Handles
import Graphics.Vulkan.Types.Struct.Image

pattern VkGetImageViewHandleNVX :: CString

pattern $bVkGetImageViewHandleNVX :: CString
$mVkGetImageViewHandleNVX :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkGetImageViewHandleNVX <-
        (is_VkGetImageViewHandleNVX -> True)
  where
    VkGetImageViewHandleNVX = CString
_VkGetImageViewHandleNVX

{-# INLINE _VkGetImageViewHandleNVX #-}

_VkGetImageViewHandleNVX :: CString
_VkGetImageViewHandleNVX :: CString
_VkGetImageViewHandleNVX = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkGetImageViewHandleNVX\NUL"#

{-# INLINE is_VkGetImageViewHandleNVX #-}

is_VkGetImageViewHandleNVX :: CString -> Bool
is_VkGetImageViewHandleNVX :: CString -> Bool
is_VkGetImageViewHandleNVX
  = (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
_VkGetImageViewHandleNVX

type VkGetImageViewHandleNVX = "vkGetImageViewHandleNVX"

-- | > uint32_t vkGetImageViewHandleNVX
--   >     ( VkDevice device
--   >     , const VkImageViewHandleInfoNVX* pInfo
--   >     )
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetImageViewHandleNVX vkGetImageViewHandleNVX registry at www.khronos.org>
type HS_vkGetImageViewHandleNVX =
     VkDevice -- ^ device
              -> Ptr VkImageViewHandleInfoNVX -- ^ pInfo
                                              -> IO Word32

type PFN_vkGetImageViewHandleNVX =
     FunPtr HS_vkGetImageViewHandleNVX

foreign import ccall unsafe "dynamic"
               unwrapVkGetImageViewHandleNVXUnsafe ::
               PFN_vkGetImageViewHandleNVX -> HS_vkGetImageViewHandleNVX

foreign import ccall safe "dynamic"
               unwrapVkGetImageViewHandleNVXSafe ::
               PFN_vkGetImageViewHandleNVX -> HS_vkGetImageViewHandleNVX

instance VulkanProc "vkGetImageViewHandleNVX" where
    type VkProcType "vkGetImageViewHandleNVX" =
         HS_vkGetImageViewHandleNVX
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkGetImageViewHandleNVX

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType "vkGetImageViewHandleNVX")
-> VkProcType "vkGetImageViewHandleNVX"
unwrapVkProcPtrUnsafe = FunPtr (VkProcType "vkGetImageViewHandleNVX")
-> VkProcType "vkGetImageViewHandleNVX"
PFN_vkGetImageViewHandleNVX -> HS_vkGetImageViewHandleNVX
unwrapVkGetImageViewHandleNVXUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType "vkGetImageViewHandleNVX")
-> VkProcType "vkGetImageViewHandleNVX"
unwrapVkProcPtrSafe = FunPtr (VkProcType "vkGetImageViewHandleNVX")
-> VkProcType "vkGetImageViewHandleNVX"
PFN_vkGetImageViewHandleNVX -> HS_vkGetImageViewHandleNVX
unwrapVkGetImageViewHandleNVXSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

pattern VkGetImageViewAddressNVX :: CString

pattern $bVkGetImageViewAddressNVX :: CString
$mVkGetImageViewAddressNVX :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkGetImageViewAddressNVX <-
        (is_VkGetImageViewAddressNVX -> True)
  where
    VkGetImageViewAddressNVX = CString
_VkGetImageViewAddressNVX

{-# INLINE _VkGetImageViewAddressNVX #-}

_VkGetImageViewAddressNVX :: CString
_VkGetImageViewAddressNVX :: CString
_VkGetImageViewAddressNVX = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkGetImageViewAddressNVX\NUL"#

{-# INLINE is_VkGetImageViewAddressNVX #-}

is_VkGetImageViewAddressNVX :: CString -> Bool
is_VkGetImageViewAddressNVX :: CString -> Bool
is_VkGetImageViewAddressNVX
  = (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
_VkGetImageViewAddressNVX

type VkGetImageViewAddressNVX = "vkGetImageViewAddressNVX"

-- | Success codes: 'VK_SUCCESS'.
--
--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_UNKNOWN'.
--
--   > VkResult vkGetImageViewAddressNVX
--   >     ( VkDevice device
--   >     , VkImageView imageView
--   >     , VkImageViewAddressPropertiesNVX* pProperties
--   >     )
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetImageViewAddressNVX vkGetImageViewAddressNVX registry at www.khronos.org>
type HS_vkGetImageViewAddressNVX =
     VkDevice -- ^ device
              ->
       VkImageView -- ^ imageView
                   -> Ptr VkImageViewAddressPropertiesNVX -- ^ pProperties
                                                          -> IO VkResult

type PFN_vkGetImageViewAddressNVX =
     FunPtr HS_vkGetImageViewAddressNVX

foreign import ccall unsafe "dynamic"
               unwrapVkGetImageViewAddressNVXUnsafe ::
               PFN_vkGetImageViewAddressNVX -> HS_vkGetImageViewAddressNVX

foreign import ccall safe "dynamic"
               unwrapVkGetImageViewAddressNVXSafe ::
               PFN_vkGetImageViewAddressNVX -> HS_vkGetImageViewAddressNVX

instance VulkanProc "vkGetImageViewAddressNVX" where
    type VkProcType "vkGetImageViewAddressNVX" =
         HS_vkGetImageViewAddressNVX
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkGetImageViewAddressNVX

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType "vkGetImageViewAddressNVX")
-> VkProcType "vkGetImageViewAddressNVX"
unwrapVkProcPtrUnsafe = FunPtr (VkProcType "vkGetImageViewAddressNVX")
-> VkProcType "vkGetImageViewAddressNVX"
PFN_vkGetImageViewAddressNVX -> HS_vkGetImageViewAddressNVX
unwrapVkGetImageViewAddressNVXUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType "vkGetImageViewAddressNVX")
-> VkProcType "vkGetImageViewAddressNVX"
unwrapVkProcPtrSafe = FunPtr (VkProcType "vkGetImageViewAddressNVX")
-> VkProcType "vkGetImageViewAddressNVX"
PFN_vkGetImageViewAddressNVX -> HS_vkGetImageViewAddressNVX
unwrapVkGetImageViewAddressNVXSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

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

pattern $bVK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION :: forall a. (Num a, Eq a) => a
$mVK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION :: forall {r} {a}.
(Num a, Eq a) =>
a -> (Void# -> r) -> (Void# -> r) -> r
VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2

type VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2

pattern VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME :: CString

pattern $bVK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME :: CString
$mVK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME <-
        (is_VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME -> True)
  where
    VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME
      = CString
_VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME

{-# INLINE _VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME #-}

_VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME :: CString
_VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME :: CString
_VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME
  = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"VK_NVX_image_view_handle\NUL"#

{-# INLINE is_VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME #-}

is_VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME :: CString -> Bool
is_VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME :: CString -> Bool
is_VK_NVX_IMAGE_VIEW_HANDLE_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_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME

type VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME =
     "VK_NVX_image_view_handle"

pattern VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX ::
        VkStructureType

pattern $bVK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX :: VkStructureType
$mVK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX =
        VkStructureType 1000030000

pattern VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX ::
        VkStructureType

pattern $bVK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX :: VkStructureType
$mVK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX =
        VkStructureType 1000030001