{-# language CPP #-}
-- | = Name
--
-- VK_NV_device_diagnostics_config - device extension
--
-- == VK_NV_device_diagnostics_config
--
-- [__Name String__]
--     @VK_NV_device_diagnostics_config@
--
-- [__Extension Type__]
--     Device extension
--
-- [__Registered Extension Number__]
--     301
--
-- [__Revision__]
--     2
--
-- [__Extension and Version Dependencies__]
--
--     -   Requires support for Vulkan 1.0
--
--     -   Requires @VK_KHR_get_physical_device_properties2@ to be enabled
--         for any device-level functionality
--
-- [__Contact__]
--
--     -   Kedarnath Thangudu
--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_NV_device_diagnostics_config] @kthangudu%0A*Here describe the issue or question you have about the VK_NV_device_diagnostics_config extension* >
--
-- == Other Extension Metadata
--
-- [__Last Modified Date__]
--     2022-04-06
--
-- [__Contributors__]
--
--     -   Kedarnath Thangudu, NVIDIA
--
--     -   Thomas Klein, NVIDIA
--
-- == Description
--
-- Applications using Nvidia Nsight™ Aftermath SDK for Vulkan to integrate
-- device crash dumps into their error reporting mechanisms, /may/ use this
-- extension to configure options related to device crash dump creation.
--
-- Version 2 of this extension adds
-- 'DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_ERROR_REPORTING_BIT_NV' which
-- when set enables enhanced reporting of shader execution errors.
--
-- == New Structures
--
-- -   Extending 'Vulkan.Core10.Device.DeviceCreateInfo':
--
--     -   'DeviceDiagnosticsConfigCreateInfoNV'
--
-- -   Extending
--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--     'Vulkan.Core10.Device.DeviceCreateInfo':
--
--     -   'PhysicalDeviceDiagnosticsConfigFeaturesNV'
--
-- == New Enums
--
-- -   'DeviceDiagnosticsConfigFlagBitsNV'
--
-- == New Bitmasks
--
-- -   'DeviceDiagnosticsConfigFlagsNV'
--
-- == New Enum Constants
--
-- -   'NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME'
--
-- -   'NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION'
--
-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV'
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV'
--
-- == Version History
--
-- -   Revision 1, 2019-11-21 (Kedarnath Thangudu)
--
--     -   Internal revisions
--
-- -   Revision 2, 2022-04-06 (Kedarnath Thangudu)
--
--     -   Added a config bit
--         'DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_ERROR_REPORTING_BIT_NV'
--
-- == See Also
--
-- 'DeviceDiagnosticsConfigCreateInfoNV',
-- 'DeviceDiagnosticsConfigFlagBitsNV', 'DeviceDiagnosticsConfigFlagsNV',
-- 'PhysicalDeviceDiagnosticsConfigFeaturesNV'
--
-- == Document Notes
--
-- For more information, see the
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_device_diagnostics_config Vulkan Specification>
--
-- This page is a generated document. Fixes and changes should be made to
-- the generator scripts, not directly.
module Vulkan.Extensions.VK_NV_device_diagnostics_config  ( PhysicalDeviceDiagnosticsConfigFeaturesNV(..)
                                                          , DeviceDiagnosticsConfigCreateInfoNV(..)
                                                          , DeviceDiagnosticsConfigFlagsNV
                                                          , DeviceDiagnosticsConfigFlagBitsNV( DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV
                                                                                             , DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV
                                                                                             , DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV
                                                                                             , DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_ERROR_REPORTING_BIT_NV
                                                                                             , ..
                                                                                             )
                                                          , NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION
                                                          , pattern NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION
                                                          , NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME
                                                          , pattern NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME
                                                          ) 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.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_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV))
-- | VkPhysicalDeviceDiagnosticsConfigFeaturesNV - Structure describing the
-- device-generated diagnostic configuration features that can be supported
-- by an implementation
--
-- = Members
--
-- This structure describes the following feature:
--
-- = Description
--
-- If the 'PhysicalDeviceDiagnosticsConfigFeaturesNV' 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. 'PhysicalDeviceDiagnosticsConfigFeaturesNV' /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_NV_device_diagnostics_config VK_NV_device_diagnostics_config>,
-- 'Vulkan.Core10.FundamentalTypes.Bool32',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data PhysicalDeviceDiagnosticsConfigFeaturesNV = PhysicalDeviceDiagnosticsConfigFeaturesNV
  { -- | #features-diagnosticsConfig# @diagnosticsConfig@ indicates whether the
    -- implementation supports the ability to configure diagnostic tools.
    PhysicalDeviceDiagnosticsConfigFeaturesNV -> Bool
diagnosticsConfig :: Bool }
  deriving (Typeable, PhysicalDeviceDiagnosticsConfigFeaturesNV
-> PhysicalDeviceDiagnosticsConfigFeaturesNV -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PhysicalDeviceDiagnosticsConfigFeaturesNV
-> PhysicalDeviceDiagnosticsConfigFeaturesNV -> Bool
$c/= :: PhysicalDeviceDiagnosticsConfigFeaturesNV
-> PhysicalDeviceDiagnosticsConfigFeaturesNV -> Bool
== :: PhysicalDeviceDiagnosticsConfigFeaturesNV
-> PhysicalDeviceDiagnosticsConfigFeaturesNV -> Bool
$c== :: PhysicalDeviceDiagnosticsConfigFeaturesNV
-> PhysicalDeviceDiagnosticsConfigFeaturesNV -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceDiagnosticsConfigFeaturesNV)
#endif
deriving instance Show PhysicalDeviceDiagnosticsConfigFeaturesNV

instance ToCStruct PhysicalDeviceDiagnosticsConfigFeaturesNV where
  withCStruct :: forall b.
PhysicalDeviceDiagnosticsConfigFeaturesNV
-> (Ptr PhysicalDeviceDiagnosticsConfigFeaturesNV -> IO b) -> IO b
withCStruct PhysicalDeviceDiagnosticsConfigFeaturesNV
x Ptr PhysicalDeviceDiagnosticsConfigFeaturesNV -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceDiagnosticsConfigFeaturesNV
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceDiagnosticsConfigFeaturesNV
p PhysicalDeviceDiagnosticsConfigFeaturesNV
x (Ptr PhysicalDeviceDiagnosticsConfigFeaturesNV -> IO b
f Ptr PhysicalDeviceDiagnosticsConfigFeaturesNV
p)
  pokeCStruct :: forall b.
Ptr PhysicalDeviceDiagnosticsConfigFeaturesNV
-> PhysicalDeviceDiagnosticsConfigFeaturesNV -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceDiagnosticsConfigFeaturesNV
p PhysicalDeviceDiagnosticsConfigFeaturesNV{Bool
diagnosticsConfig :: Bool
$sel:diagnosticsConfig:PhysicalDeviceDiagnosticsConfigFeaturesNV :: PhysicalDeviceDiagnosticsConfigFeaturesNV -> Bool
..} IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDiagnosticsConfigFeaturesNV
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDiagnosticsConfigFeaturesNV
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 PhysicalDeviceDiagnosticsConfigFeaturesNV
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
diagnosticsConfig))
    IO b
f
  cStructSize :: Int
cStructSize = Int
24
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceDiagnosticsConfigFeaturesNV -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceDiagnosticsConfigFeaturesNV
p IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDiagnosticsConfigFeaturesNV
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDiagnosticsConfigFeaturesNV
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 PhysicalDeviceDiagnosticsConfigFeaturesNV
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 PhysicalDeviceDiagnosticsConfigFeaturesNV where
  peekCStruct :: Ptr PhysicalDeviceDiagnosticsConfigFeaturesNV
-> IO PhysicalDeviceDiagnosticsConfigFeaturesNV
peekCStruct Ptr PhysicalDeviceDiagnosticsConfigFeaturesNV
p = do
    Bool32
diagnosticsConfig <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceDiagnosticsConfigFeaturesNV
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 -> PhysicalDeviceDiagnosticsConfigFeaturesNV
PhysicalDeviceDiagnosticsConfigFeaturesNV
             (Bool32 -> Bool
bool32ToBool Bool32
diagnosticsConfig)

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

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


-- | VkDeviceDiagnosticsConfigCreateInfoNV - Specify diagnostics config for a
-- Vulkan device
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_diagnostics_config VK_NV_device_diagnostics_config>,
-- 'DeviceDiagnosticsConfigFlagsNV',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data DeviceDiagnosticsConfigCreateInfoNV = DeviceDiagnosticsConfigCreateInfoNV
  { -- | @flags@ is a bitmask of 'DeviceDiagnosticsConfigFlagBitsNV' specifying
    -- additional parameters for configuring diagnostic tools.
    --
    -- #VUID-VkDeviceDiagnosticsConfigCreateInfoNV-flags-parameter# @flags@
    -- /must/ be a valid combination of 'DeviceDiagnosticsConfigFlagBitsNV'
    -- values
    DeviceDiagnosticsConfigCreateInfoNV
-> DeviceDiagnosticsConfigFlagBitsNV
flags :: DeviceDiagnosticsConfigFlagsNV }
  deriving (Typeable, DeviceDiagnosticsConfigCreateInfoNV
-> DeviceDiagnosticsConfigCreateInfoNV -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeviceDiagnosticsConfigCreateInfoNV
-> DeviceDiagnosticsConfigCreateInfoNV -> Bool
$c/= :: DeviceDiagnosticsConfigCreateInfoNV
-> DeviceDiagnosticsConfigCreateInfoNV -> Bool
== :: DeviceDiagnosticsConfigCreateInfoNV
-> DeviceDiagnosticsConfigCreateInfoNV -> Bool
$c== :: DeviceDiagnosticsConfigCreateInfoNV
-> DeviceDiagnosticsConfigCreateInfoNV -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (DeviceDiagnosticsConfigCreateInfoNV)
#endif
deriving instance Show DeviceDiagnosticsConfigCreateInfoNV

instance ToCStruct DeviceDiagnosticsConfigCreateInfoNV where
  withCStruct :: forall b.
DeviceDiagnosticsConfigCreateInfoNV
-> (Ptr DeviceDiagnosticsConfigCreateInfoNV -> IO b) -> IO b
withCStruct DeviceDiagnosticsConfigCreateInfoNV
x Ptr DeviceDiagnosticsConfigCreateInfoNV -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 forall a b. (a -> b) -> a -> b
$ \Ptr DeviceDiagnosticsConfigCreateInfoNV
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr DeviceDiagnosticsConfigCreateInfoNV
p DeviceDiagnosticsConfigCreateInfoNV
x (Ptr DeviceDiagnosticsConfigCreateInfoNV -> IO b
f Ptr DeviceDiagnosticsConfigCreateInfoNV
p)
  pokeCStruct :: forall b.
Ptr DeviceDiagnosticsConfigCreateInfoNV
-> DeviceDiagnosticsConfigCreateInfoNV -> IO b -> IO b
pokeCStruct Ptr DeviceDiagnosticsConfigCreateInfoNV
p DeviceDiagnosticsConfigCreateInfoNV{DeviceDiagnosticsConfigFlagBitsNV
flags :: DeviceDiagnosticsConfigFlagBitsNV
$sel:flags:DeviceDiagnosticsConfigCreateInfoNV :: DeviceDiagnosticsConfigCreateInfoNV
-> DeviceDiagnosticsConfigFlagBitsNV
..} IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DeviceDiagnosticsConfigCreateInfoNV
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DeviceDiagnosticsConfigCreateInfoNV
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 DeviceDiagnosticsConfigCreateInfoNV
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr DeviceDiagnosticsConfigFlagsNV)) (DeviceDiagnosticsConfigFlagBitsNV
flags)
    IO b
f
  cStructSize :: Int
cStructSize = Int
24
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b. Ptr DeviceDiagnosticsConfigCreateInfoNV -> IO b -> IO b
pokeZeroCStruct Ptr DeviceDiagnosticsConfigCreateInfoNV
p IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DeviceDiagnosticsConfigCreateInfoNV
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DeviceDiagnosticsConfigCreateInfoNV
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
    IO b
f

instance FromCStruct DeviceDiagnosticsConfigCreateInfoNV where
  peekCStruct :: Ptr DeviceDiagnosticsConfigCreateInfoNV
-> IO DeviceDiagnosticsConfigCreateInfoNV
peekCStruct Ptr DeviceDiagnosticsConfigCreateInfoNV
p = do
    DeviceDiagnosticsConfigFlagBitsNV
flags <- forall a. Storable a => Ptr a -> IO a
peek @DeviceDiagnosticsConfigFlagsNV ((Ptr DeviceDiagnosticsConfigCreateInfoNV
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr DeviceDiagnosticsConfigFlagsNV))
    forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigCreateInfoNV
DeviceDiagnosticsConfigCreateInfoNV
             DeviceDiagnosticsConfigFlagBitsNV
flags

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

instance Zero DeviceDiagnosticsConfigCreateInfoNV where
  zero :: DeviceDiagnosticsConfigCreateInfoNV
zero = DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigCreateInfoNV
DeviceDiagnosticsConfigCreateInfoNV
           forall a. Zero a => a
zero


type DeviceDiagnosticsConfigFlagsNV = DeviceDiagnosticsConfigFlagBitsNV

-- | VkDeviceDiagnosticsConfigFlagBitsNV - Bitmask specifying diagnostics
-- flags
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_diagnostics_config VK_NV_device_diagnostics_config>,
-- 'DeviceDiagnosticsConfigFlagsNV'
newtype DeviceDiagnosticsConfigFlagBitsNV = DeviceDiagnosticsConfigFlagBitsNV Flags
  deriving newtype (DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV -> Bool
$c/= :: DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV -> Bool
== :: DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV -> Bool
$c== :: DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV -> Bool
Eq, Eq DeviceDiagnosticsConfigFlagBitsNV
DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV -> Bool
DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV -> Ordering
DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV
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 :: DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV
$cmin :: DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV
max :: DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV
$cmax :: DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV
>= :: DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV -> Bool
$c>= :: DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV -> Bool
> :: DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV -> Bool
$c> :: DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV -> Bool
<= :: DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV -> Bool
$c<= :: DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV -> Bool
< :: DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV -> Bool
$c< :: DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV -> Bool
compare :: DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV -> Ordering
$ccompare :: DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV -> Ordering
Ord, Ptr DeviceDiagnosticsConfigFlagBitsNV
-> IO DeviceDiagnosticsConfigFlagBitsNV
Ptr DeviceDiagnosticsConfigFlagBitsNV
-> Int -> IO DeviceDiagnosticsConfigFlagBitsNV
Ptr DeviceDiagnosticsConfigFlagBitsNV
-> Int -> DeviceDiagnosticsConfigFlagBitsNV -> IO ()
Ptr DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV -> IO ()
DeviceDiagnosticsConfigFlagBitsNV -> Int
forall b. Ptr b -> Int -> IO DeviceDiagnosticsConfigFlagBitsNV
forall b.
Ptr b -> Int -> DeviceDiagnosticsConfigFlagBitsNV -> 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 DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV -> IO ()
$cpoke :: Ptr DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV -> IO ()
peek :: Ptr DeviceDiagnosticsConfigFlagBitsNV
-> IO DeviceDiagnosticsConfigFlagBitsNV
$cpeek :: Ptr DeviceDiagnosticsConfigFlagBitsNV
-> IO DeviceDiagnosticsConfigFlagBitsNV
pokeByteOff :: forall b.
Ptr b -> Int -> DeviceDiagnosticsConfigFlagBitsNV -> IO ()
$cpokeByteOff :: forall b.
Ptr b -> Int -> DeviceDiagnosticsConfigFlagBitsNV -> IO ()
peekByteOff :: forall b. Ptr b -> Int -> IO DeviceDiagnosticsConfigFlagBitsNV
$cpeekByteOff :: forall b. Ptr b -> Int -> IO DeviceDiagnosticsConfigFlagBitsNV
pokeElemOff :: Ptr DeviceDiagnosticsConfigFlagBitsNV
-> Int -> DeviceDiagnosticsConfigFlagBitsNV -> IO ()
$cpokeElemOff :: Ptr DeviceDiagnosticsConfigFlagBitsNV
-> Int -> DeviceDiagnosticsConfigFlagBitsNV -> IO ()
peekElemOff :: Ptr DeviceDiagnosticsConfigFlagBitsNV
-> Int -> IO DeviceDiagnosticsConfigFlagBitsNV
$cpeekElemOff :: Ptr DeviceDiagnosticsConfigFlagBitsNV
-> Int -> IO DeviceDiagnosticsConfigFlagBitsNV
alignment :: DeviceDiagnosticsConfigFlagBitsNV -> Int
$calignment :: DeviceDiagnosticsConfigFlagBitsNV -> Int
sizeOf :: DeviceDiagnosticsConfigFlagBitsNV -> Int
$csizeOf :: DeviceDiagnosticsConfigFlagBitsNV -> Int
Storable, DeviceDiagnosticsConfigFlagBitsNV
forall a. a -> Zero a
zero :: DeviceDiagnosticsConfigFlagBitsNV
$czero :: DeviceDiagnosticsConfigFlagBitsNV
Zero, Eq DeviceDiagnosticsConfigFlagBitsNV
DeviceDiagnosticsConfigFlagBitsNV
Int -> DeviceDiagnosticsConfigFlagBitsNV
DeviceDiagnosticsConfigFlagBitsNV -> Bool
DeviceDiagnosticsConfigFlagBitsNV -> Int
DeviceDiagnosticsConfigFlagBitsNV -> Maybe Int
DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV
DeviceDiagnosticsConfigFlagBitsNV -> Int -> Bool
DeviceDiagnosticsConfigFlagBitsNV
-> Int -> DeviceDiagnosticsConfigFlagBitsNV
DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV
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 :: DeviceDiagnosticsConfigFlagBitsNV -> Int
$cpopCount :: DeviceDiagnosticsConfigFlagBitsNV -> Int
rotateR :: DeviceDiagnosticsConfigFlagBitsNV
-> Int -> DeviceDiagnosticsConfigFlagBitsNV
$crotateR :: DeviceDiagnosticsConfigFlagBitsNV
-> Int -> DeviceDiagnosticsConfigFlagBitsNV
rotateL :: DeviceDiagnosticsConfigFlagBitsNV
-> Int -> DeviceDiagnosticsConfigFlagBitsNV
$crotateL :: DeviceDiagnosticsConfigFlagBitsNV
-> Int -> DeviceDiagnosticsConfigFlagBitsNV
unsafeShiftR :: DeviceDiagnosticsConfigFlagBitsNV
-> Int -> DeviceDiagnosticsConfigFlagBitsNV
$cunsafeShiftR :: DeviceDiagnosticsConfigFlagBitsNV
-> Int -> DeviceDiagnosticsConfigFlagBitsNV
shiftR :: DeviceDiagnosticsConfigFlagBitsNV
-> Int -> DeviceDiagnosticsConfigFlagBitsNV
$cshiftR :: DeviceDiagnosticsConfigFlagBitsNV
-> Int -> DeviceDiagnosticsConfigFlagBitsNV
unsafeShiftL :: DeviceDiagnosticsConfigFlagBitsNV
-> Int -> DeviceDiagnosticsConfigFlagBitsNV
$cunsafeShiftL :: DeviceDiagnosticsConfigFlagBitsNV
-> Int -> DeviceDiagnosticsConfigFlagBitsNV
shiftL :: DeviceDiagnosticsConfigFlagBitsNV
-> Int -> DeviceDiagnosticsConfigFlagBitsNV
$cshiftL :: DeviceDiagnosticsConfigFlagBitsNV
-> Int -> DeviceDiagnosticsConfigFlagBitsNV
isSigned :: DeviceDiagnosticsConfigFlagBitsNV -> Bool
$cisSigned :: DeviceDiagnosticsConfigFlagBitsNV -> Bool
bitSize :: DeviceDiagnosticsConfigFlagBitsNV -> Int
$cbitSize :: DeviceDiagnosticsConfigFlagBitsNV -> Int
bitSizeMaybe :: DeviceDiagnosticsConfigFlagBitsNV -> Maybe Int
$cbitSizeMaybe :: DeviceDiagnosticsConfigFlagBitsNV -> Maybe Int
testBit :: DeviceDiagnosticsConfigFlagBitsNV -> Int -> Bool
$ctestBit :: DeviceDiagnosticsConfigFlagBitsNV -> Int -> Bool
complementBit :: DeviceDiagnosticsConfigFlagBitsNV
-> Int -> DeviceDiagnosticsConfigFlagBitsNV
$ccomplementBit :: DeviceDiagnosticsConfigFlagBitsNV
-> Int -> DeviceDiagnosticsConfigFlagBitsNV
clearBit :: DeviceDiagnosticsConfigFlagBitsNV
-> Int -> DeviceDiagnosticsConfigFlagBitsNV
$cclearBit :: DeviceDiagnosticsConfigFlagBitsNV
-> Int -> DeviceDiagnosticsConfigFlagBitsNV
setBit :: DeviceDiagnosticsConfigFlagBitsNV
-> Int -> DeviceDiagnosticsConfigFlagBitsNV
$csetBit :: DeviceDiagnosticsConfigFlagBitsNV
-> Int -> DeviceDiagnosticsConfigFlagBitsNV
bit :: Int -> DeviceDiagnosticsConfigFlagBitsNV
$cbit :: Int -> DeviceDiagnosticsConfigFlagBitsNV
zeroBits :: DeviceDiagnosticsConfigFlagBitsNV
$czeroBits :: DeviceDiagnosticsConfigFlagBitsNV
rotate :: DeviceDiagnosticsConfigFlagBitsNV
-> Int -> DeviceDiagnosticsConfigFlagBitsNV
$crotate :: DeviceDiagnosticsConfigFlagBitsNV
-> Int -> DeviceDiagnosticsConfigFlagBitsNV
shift :: DeviceDiagnosticsConfigFlagBitsNV
-> Int -> DeviceDiagnosticsConfigFlagBitsNV
$cshift :: DeviceDiagnosticsConfigFlagBitsNV
-> Int -> DeviceDiagnosticsConfigFlagBitsNV
complement :: DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV
$ccomplement :: DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV
xor :: DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV
$cxor :: DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV
.|. :: DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV
$c.|. :: DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV
.&. :: DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV
$c.&. :: DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV
-> DeviceDiagnosticsConfigFlagBitsNV
Bits, Bits DeviceDiagnosticsConfigFlagBitsNV
DeviceDiagnosticsConfigFlagBitsNV -> Int
forall b.
Bits b -> (b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
countTrailingZeros :: DeviceDiagnosticsConfigFlagBitsNV -> Int
$ccountTrailingZeros :: DeviceDiagnosticsConfigFlagBitsNV -> Int
countLeadingZeros :: DeviceDiagnosticsConfigFlagBitsNV -> Int
$ccountLeadingZeros :: DeviceDiagnosticsConfigFlagBitsNV -> Int
finiteBitSize :: DeviceDiagnosticsConfigFlagBitsNV -> Int
$cfiniteBitSize :: DeviceDiagnosticsConfigFlagBitsNV -> Int
FiniteBits)

-- | 'DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV' enables the
-- generation of debug information for shaders.
pattern $bDEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV :: DeviceDiagnosticsConfigFlagBitsNV
$mDEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV :: forall {r}.
DeviceDiagnosticsConfigFlagBitsNV
-> ((# #) -> r) -> ((# #) -> r) -> r
DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = DeviceDiagnosticsConfigFlagBitsNV 0x00000001

-- | 'DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV' enables
-- driver side tracking of resources (images, buffers, etc.) used to
-- augment the device fault information.
pattern $bDEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV :: DeviceDiagnosticsConfigFlagBitsNV
$mDEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV :: forall {r}.
DeviceDiagnosticsConfigFlagBitsNV
-> ((# #) -> r) -> ((# #) -> r) -> r
DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = DeviceDiagnosticsConfigFlagBitsNV 0x00000002

-- | 'DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV' enables
-- automatic insertion of
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#device-diagnostic-checkpoints diagnostic checkpoints>
-- for draw calls, dispatches, trace rays, and copies. The CPU call stack
-- at the time of the command will be associated as the marker data for the
-- automatically inserted checkpoints.
pattern $bDEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV :: DeviceDiagnosticsConfigFlagBitsNV
$mDEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV :: forall {r}.
DeviceDiagnosticsConfigFlagBitsNV
-> ((# #) -> r) -> ((# #) -> r) -> r
DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = DeviceDiagnosticsConfigFlagBitsNV 0x00000004

-- | 'DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_ERROR_REPORTING_BIT_NV' enables
-- shader error reporting.
pattern $bDEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_ERROR_REPORTING_BIT_NV :: DeviceDiagnosticsConfigFlagBitsNV
$mDEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_ERROR_REPORTING_BIT_NV :: forall {r}.
DeviceDiagnosticsConfigFlagBitsNV
-> ((# #) -> r) -> ((# #) -> r) -> r
DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_ERROR_REPORTING_BIT_NV = DeviceDiagnosticsConfigFlagBitsNV 0x00000008

conNameDeviceDiagnosticsConfigFlagBitsNV :: String
conNameDeviceDiagnosticsConfigFlagBitsNV :: String
conNameDeviceDiagnosticsConfigFlagBitsNV = String
"DeviceDiagnosticsConfigFlagBitsNV"

enumPrefixDeviceDiagnosticsConfigFlagBitsNV :: String
enumPrefixDeviceDiagnosticsConfigFlagBitsNV :: String
enumPrefixDeviceDiagnosticsConfigFlagBitsNV = String
"DEVICE_DIAGNOSTICS_CONFIG_ENABLE_"

showTableDeviceDiagnosticsConfigFlagBitsNV :: [(DeviceDiagnosticsConfigFlagBitsNV, String)]
showTableDeviceDiagnosticsConfigFlagBitsNV :: [(DeviceDiagnosticsConfigFlagBitsNV, String)]
showTableDeviceDiagnosticsConfigFlagBitsNV =
  [
    ( DeviceDiagnosticsConfigFlagBitsNV
DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV
    , String
"SHADER_DEBUG_INFO_BIT_NV"
    )
  ,
    ( DeviceDiagnosticsConfigFlagBitsNV
DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV
    , String
"RESOURCE_TRACKING_BIT_NV"
    )
  ,
    ( DeviceDiagnosticsConfigFlagBitsNV
DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV
    , String
"AUTOMATIC_CHECKPOINTS_BIT_NV"
    )
  ,
    ( DeviceDiagnosticsConfigFlagBitsNV
DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_ERROR_REPORTING_BIT_NV
    , String
"SHADER_ERROR_REPORTING_BIT_NV"
    )
  ]

instance Show DeviceDiagnosticsConfigFlagBitsNV where
  showsPrec :: Int -> DeviceDiagnosticsConfigFlagBitsNV -> ShowS
showsPrec =
    forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
      String
enumPrefixDeviceDiagnosticsConfigFlagBitsNV
      [(DeviceDiagnosticsConfigFlagBitsNV, String)]
showTableDeviceDiagnosticsConfigFlagBitsNV
      String
conNameDeviceDiagnosticsConfigFlagBitsNV
      (\(DeviceDiagnosticsConfigFlagBitsNV 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 DeviceDiagnosticsConfigFlagBitsNV where
  readPrec :: ReadPrec DeviceDiagnosticsConfigFlagBitsNV
readPrec =
    forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
      String
enumPrefixDeviceDiagnosticsConfigFlagBitsNV
      [(DeviceDiagnosticsConfigFlagBitsNV, String)]
showTableDeviceDiagnosticsConfigFlagBitsNV
      String
conNameDeviceDiagnosticsConfigFlagBitsNV
      Flags -> DeviceDiagnosticsConfigFlagBitsNV
DeviceDiagnosticsConfigFlagBitsNV

type NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION = 2

-- No documentation found for TopLevel "VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION"
pattern NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION :: forall a . Integral a => a
pattern $bNV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION :: forall a. Integral a => a
$mNV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION = 2


type NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME = "VK_NV_device_diagnostics_config"

-- No documentation found for TopLevel "VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME"
pattern NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $bNV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
$mNV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME = "VK_NV_device_diagnostics_config"