{-# language CPP #-}
-- | = Name
--
-- VK_EXT_graphics_pipeline_library - device extension
--
-- == VK_EXT_graphics_pipeline_library
--
-- [__Name String__]
--     @VK_EXT_graphics_pipeline_library@
--
-- [__Extension Type__]
--     Device extension
--
-- [__Registered Extension Number__]
--     321
--
-- [__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>
--     and
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_pipeline_library VK_KHR_pipeline_library>
--
-- [__Contact__]
--
--     -   Tobias Hector
--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_graphics_pipeline_library] @tobski%0A*Here describe the issue or question you have about the VK_EXT_graphics_pipeline_library extension* >
--
-- [__Extension Proposal__]
--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_graphics_pipeline_library.adoc VK_EXT_graphics_pipeline_library>
--
-- == Other Extension Metadata
--
-- [__Last Modified Date__]
--     2021-08-17
--
-- [__Contributors__]
--
--     -   Tobias Hector, AMD
--
--     -   Chris Glover, Google
--
--     -   Jeff Leger, Qualcomm
--
--     -   Jan-Harald Fredriksen, Arm
--
--     -   Piers Daniell, NVidia
--
--     -   Boris Zanin, Mobica
--
--     -   Krzysztof Niski, NVidia
--
--     -   Dan Ginsburg, Valve
--
--     -   Sebastian Aaltonen, Unity
--
--     -   Arseny Kapoulkine, Roblox
--
--     -   Calle Lejdfors, Ubisoft
--
--     -   Tiago Rodrigues, Ubisoft
--
--     -   Francois Duranleau, Gameloft
--
-- == Description
--
-- This extension allows the separate compilation of four distinct parts of
-- graphics pipelines, with the intent of allowing faster pipeline loading
-- for applications reusing the same shaders or state in multiple
-- pipelines. Each part can be independently compiled into a graphics
-- pipeline library, with a final link step required to create an
-- executable pipeline that can be bound to a command buffer.
--
-- == New Structures
--
-- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':
--
--     -   'GraphicsPipelineLibraryCreateInfoEXT'
--
-- -   Extending
--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--     'Vulkan.Core10.Device.DeviceCreateInfo':
--
--     -   'PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT'
--
-- -   Extending
--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
--
--     -   'PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT'
--
-- == New Enums
--
-- -   'GraphicsPipelineLibraryFlagBitsEXT'
--
-- -   'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PipelineLayoutCreateFlagBits'
--
-- == New Bitmasks
--
-- -   'GraphicsPipelineLibraryFlagsEXT'
--
-- == New Enum Constants
--
-- -   'EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME'
--
-- -   'EXT_GRAPHICS_PIPELINE_LIBRARY_SPEC_VERSION'
--
-- -   Extending
--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':
--
--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT'
--
--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT'
--
-- -   Extending
--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PipelineLayoutCreateFlagBits':
--
--     -   'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'
--
-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT'
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT'
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT'
--
-- == Version History
--
-- -   Revision 1, 2021-08-17 (Tobias Hector)
--
--     -   Initial draft.
--
-- == See Also
--
-- 'GraphicsPipelineLibraryCreateInfoEXT',
-- 'GraphicsPipelineLibraryFlagBitsEXT', 'GraphicsPipelineLibraryFlagsEXT',
-- 'PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT',
-- 'PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT',
-- 'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PipelineLayoutCreateFlagBits'
--
-- == Document Notes
--
-- For more information, see the
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_graphics_pipeline_library 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_graphics_pipeline_library  ( PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT(..)
                                                           , PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT(..)
                                                           , GraphicsPipelineLibraryCreateInfoEXT(..)
                                                           , GraphicsPipelineLibraryFlagsEXT
                                                           , GraphicsPipelineLibraryFlagBitsEXT( GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT
                                                                                               , GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
                                                                                               , GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
                                                                                               , GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT
                                                                                               , ..
                                                                                               )
                                                           , EXT_GRAPHICS_PIPELINE_LIBRARY_SPEC_VERSION
                                                           , pattern EXT_GRAPHICS_PIPELINE_LIBRARY_SPEC_VERSION
                                                           , EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME
                                                           , pattern EXT_GRAPHICS_PIPELINE_LIBRARY_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_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT))
-- | VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT - Structure
-- describing support for graphics pipeline libraries
--
-- = Members
--
-- This structure describes the following feature:
--
-- = Description
--
-- If the 'PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT' 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. 'PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT' /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_graphics_pipeline_library VK_EXT_graphics_pipeline_library>,
-- 'Vulkan.Core10.FundamentalTypes.Bool32',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT = PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT
  { -- | #features-graphicsPipelineLibrary# @graphicsPipelineLibrary@ indicates
    -- that the implementation supports
    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-library graphics pipeline libraries>.
    PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT -> Bool
graphicsPipelineLibrary :: Bool }
  deriving (Typeable, PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT
-> PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT
-> PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT -> Bool
$c/= :: PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT
-> PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT -> Bool
== :: PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT
-> PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT -> Bool
$c== :: PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT
-> PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT)
#endif
deriving instance Show PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT

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

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

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


-- | VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT - Structure
-- describing additional properties of graphics pipeline libraries
--
-- = Description
--
-- If the 'PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT' structure is
-- included in the @pNext@ chain of the
-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
-- structure passed to
-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceProperties2',
-- it is filled in with each corresponding implementation-dependent
-- property.
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_graphics_pipeline_library VK_EXT_graphics_pipeline_library>,
-- 'Vulkan.Core10.FundamentalTypes.Bool32',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT = PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT
  { -- | #limits-graphicsPipelineLibraryFastLinking#
    -- @graphicsPipelineLibraryFastLinking@ indicates whether fast linking of
    -- graphics pipelines is supported. If it is
    -- 'Vulkan.Core10.FundamentalTypes.TRUE', creating a graphics pipeline
    -- entirely from pipeline libraries without
    -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT'
    -- is comparable in cost to recording a command in a command buffer.
    PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT -> Bool
graphicsPipelineLibraryFastLinking :: Bool
  , -- | #limits-graphicsPipelineLibraryIndependentInterpolationDecoration#
    -- @graphicsPipelineLibraryIndependentInterpolationDecoration@ indicates
    -- whether @NoPerspective@ and @Flat@ interpolation decorations in the last
    -- vertex processing stage and the fragment shader are required to match
    -- when using graphics pipeline libraries. If it is
    -- 'Vulkan.Core10.FundamentalTypes.TRUE', the interpolation decorations do
    -- not need to match. If it is 'Vulkan.Core10.FundamentalTypes.FALSE',
    -- these decorations /must/ either be present in both stages or neither
    -- stage in order for a given interface variable to match.
    PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT -> Bool
graphicsPipelineLibraryIndependentInterpolationDecoration :: Bool
  }
  deriving (Typeable, PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT
-> PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT
-> PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT -> Bool
$c/= :: PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT
-> PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT -> Bool
== :: PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT
-> PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT -> Bool
$c== :: PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT
-> PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT)
#endif
deriving instance Show PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT

instance ToCStruct PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT where
  withCStruct :: forall b.
PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT
-> (Ptr PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT -> IO b)
-> IO b
withCStruct PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT
x Ptr PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT
p PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT
x (Ptr PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT -> IO b
f Ptr PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT
p)
  pokeCStruct :: forall b.
Ptr PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT
-> PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT
-> IO b
-> IO b
pokeCStruct Ptr PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT
p PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT{Bool
graphicsPipelineLibraryIndependentInterpolationDecoration :: Bool
graphicsPipelineLibraryFastLinking :: Bool
$sel:graphicsPipelineLibraryIndependentInterpolationDecoration:PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT :: PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT -> Bool
$sel:graphicsPipelineLibraryFastLinking:PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT :: PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT -> Bool
..} IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT
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 PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
graphicsPipelineLibraryFastLinking))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
graphicsPipelineLibraryIndependentInterpolationDecoration))
    IO b
f
  cStructSize :: Int
cStructSize = Int
24
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT
-> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT
p IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT
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 PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    IO b
f

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

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

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


-- | VkGraphicsPipelineLibraryCreateInfoEXT - Structure specifying the
-- subsets of the graphics pipeline being compiled
--
-- = Description
--
-- If a 'GraphicsPipelineLibraryCreateInfoEXT' structure is included in the
-- @pNext@ chain of 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo', it
-- specifies the
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets subsets of the graphics pipeline>
-- being created, excluding any subsets from linked pipeline libraries. If
-- the pipeline is created with pipeline libraries, state from those
-- libraries is aggregated with said subset.
--
-- If this structure is omitted, and either
-- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@flags@ includes
-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'
-- or the 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pNext@
-- chain includes a
-- 'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'
-- structure with a @libraryCount@ greater than @0@, it is as if @flags@ is
-- @0@. Otherwise if this structure is omitted, it is as if @flags@
-- includes all possible subsets of the graphics pipeline (i.e. a
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-complete complete graphics pipeline>).
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_graphics_pipeline_library VK_EXT_graphics_pipeline_library>,
-- 'GraphicsPipelineLibraryFlagsEXT',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data GraphicsPipelineLibraryCreateInfoEXT = GraphicsPipelineLibraryCreateInfoEXT
  { -- | @flags@ is a bitmask of 'GraphicsPipelineLibraryFlagBitsEXT' specifying
    -- the subsets of the graphics pipeline that are being compiled.
    --
    -- #VUID-VkGraphicsPipelineLibraryCreateInfoEXT-flags-parameter# @flags@
    -- /must/ be a valid combination of 'GraphicsPipelineLibraryFlagBitsEXT'
    -- values
    --
    -- #VUID-VkGraphicsPipelineLibraryCreateInfoEXT-flags-requiredbitmask#
    -- @flags@ /must/ not be @0@
    GraphicsPipelineLibraryCreateInfoEXT
-> GraphicsPipelineLibraryFlagBitsEXT
flags :: GraphicsPipelineLibraryFlagsEXT }
  deriving (Typeable, GraphicsPipelineLibraryCreateInfoEXT
-> GraphicsPipelineLibraryCreateInfoEXT -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GraphicsPipelineLibraryCreateInfoEXT
-> GraphicsPipelineLibraryCreateInfoEXT -> Bool
$c/= :: GraphicsPipelineLibraryCreateInfoEXT
-> GraphicsPipelineLibraryCreateInfoEXT -> Bool
== :: GraphicsPipelineLibraryCreateInfoEXT
-> GraphicsPipelineLibraryCreateInfoEXT -> Bool
$c== :: GraphicsPipelineLibraryCreateInfoEXT
-> GraphicsPipelineLibraryCreateInfoEXT -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (GraphicsPipelineLibraryCreateInfoEXT)
#endif
deriving instance Show GraphicsPipelineLibraryCreateInfoEXT

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

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

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

instance Zero GraphicsPipelineLibraryCreateInfoEXT where
  zero :: GraphicsPipelineLibraryCreateInfoEXT
zero = GraphicsPipelineLibraryFlagBitsEXT
-> GraphicsPipelineLibraryCreateInfoEXT
GraphicsPipelineLibraryCreateInfoEXT
           forall a. Zero a => a
zero


type GraphicsPipelineLibraryFlagsEXT = GraphicsPipelineLibraryFlagBitsEXT

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

-- | 'GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT' specifies
-- that a pipeline will include
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-vertex-input vertex input interface state>.
pattern $bGRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT :: GraphicsPipelineLibraryFlagBitsEXT
$mGRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT :: forall {r}.
GraphicsPipelineLibraryFlagBitsEXT
-> ((# #) -> r) -> ((# #) -> r) -> r
GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT = GraphicsPipelineLibraryFlagBitsEXT 0x00000001

-- | 'GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT' specifies
-- that a pipeline will include
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>.
pattern $bGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT :: GraphicsPipelineLibraryFlagBitsEXT
$mGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT :: forall {r}.
GraphicsPipelineLibraryFlagBitsEXT
-> ((# #) -> r) -> ((# #) -> r) -> r
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT = GraphicsPipelineLibraryFlagBitsEXT 0x00000002

-- | 'GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT' specifies that a
-- pipeline will include
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>.
pattern $bGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT :: GraphicsPipelineLibraryFlagBitsEXT
$mGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT :: forall {r}.
GraphicsPipelineLibraryFlagBitsEXT
-> ((# #) -> r) -> ((# #) -> r) -> r
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT = GraphicsPipelineLibraryFlagBitsEXT 0x00000004

-- | 'GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT' specifies
-- that a pipeline will include
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>.
pattern $bGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT :: GraphicsPipelineLibraryFlagBitsEXT
$mGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT :: forall {r}.
GraphicsPipelineLibraryFlagBitsEXT
-> ((# #) -> r) -> ((# #) -> r) -> r
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT = GraphicsPipelineLibraryFlagBitsEXT 0x00000008

conNameGraphicsPipelineLibraryFlagBitsEXT :: String
conNameGraphicsPipelineLibraryFlagBitsEXT :: String
conNameGraphicsPipelineLibraryFlagBitsEXT = String
"GraphicsPipelineLibraryFlagBitsEXT"

enumPrefixGraphicsPipelineLibraryFlagBitsEXT :: String
enumPrefixGraphicsPipelineLibraryFlagBitsEXT :: String
enumPrefixGraphicsPipelineLibraryFlagBitsEXT = String
"GRAPHICS_PIPELINE_LIBRARY_"

showTableGraphicsPipelineLibraryFlagBitsEXT :: [(GraphicsPipelineLibraryFlagBitsEXT, String)]
showTableGraphicsPipelineLibraryFlagBitsEXT :: [(GraphicsPipelineLibraryFlagBitsEXT, String)]
showTableGraphicsPipelineLibraryFlagBitsEXT =
  [
    ( GraphicsPipelineLibraryFlagBitsEXT
GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT
    , String
"VERTEX_INPUT_INTERFACE_BIT_EXT"
    )
  ,
    ( GraphicsPipelineLibraryFlagBitsEXT
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
    , String
"PRE_RASTERIZATION_SHADERS_BIT_EXT"
    )
  ,
    ( GraphicsPipelineLibraryFlagBitsEXT
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
    , String
"FRAGMENT_SHADER_BIT_EXT"
    )
  ,
    ( GraphicsPipelineLibraryFlagBitsEXT
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT
    , String
"FRAGMENT_OUTPUT_INTERFACE_BIT_EXT"
    )
  ]

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

type EXT_GRAPHICS_PIPELINE_LIBRARY_SPEC_VERSION = 1

-- No documentation found for TopLevel "VK_EXT_GRAPHICS_PIPELINE_LIBRARY_SPEC_VERSION"
pattern EXT_GRAPHICS_PIPELINE_LIBRARY_SPEC_VERSION :: forall a . Integral a => a
pattern $bEXT_GRAPHICS_PIPELINE_LIBRARY_SPEC_VERSION :: forall a. Integral a => a
$mEXT_GRAPHICS_PIPELINE_LIBRARY_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
EXT_GRAPHICS_PIPELINE_LIBRARY_SPEC_VERSION = 1


type EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME = "VK_EXT_graphics_pipeline_library"

-- No documentation found for TopLevel "VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME"
pattern EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $bEXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
$mEXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME = "VK_EXT_graphics_pipeline_library"