{-# language CPP #-}
-- | = Name
--
-- VK_KHR_maintenance9 - device extension
--
-- = VK_KHR_maintenance9
--
-- [__Name String__]
--     @VK_KHR_maintenance9@
--
-- [__Extension Type__]
--     Device extension
--
-- [__Registered Extension Number__]
--     585
--
-- [__Revision__]
--     1
--
-- [__Ratification Status__]
--     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>
--     or
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
--
-- [__Contact__]
--
--     -   Mike Blumenkrantz
--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_maintenance9] @zmike%0A*Here describe the issue or question you have about the VK_KHR_maintenance9 extension* >
--
-- [__Extension Proposal__]
--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_maintenance9.adoc VK_KHR_maintenance9>
--
-- == Other Extension Metadata
--
-- [__Last Modified Date__]
--     2025-05-29
--
-- [__Interactions and External Dependencies__; __Contributors__]
--
--     -   Mike Blumenkrantz, Valve
--
--     -   Shahbaz Youssefi, Google
--
--     -   Hans-Kristian Arntzen, Valve
--
--     -   Piers Daniell, NVIDIA
--
--     -   Daniel Story, Nintendo
--
--     -   Jeff Bolz, NVIDIA
--
-- == Description
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance9 VK_KHR_maintenance9>
-- adds a collection of minor features, none of which would warrant an
-- entire extension of their own.
--
-- The new features are as follows:
--
-- -   Support VkDevice with no queues. These can be used as effectively an
--     offline compiler to prepopulate pipeline caches, without expensive
--     queue creation or internal memory allocations.
--
-- -   Allow
--     'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdSetEvent2'
--     to not provide a dependency, providing
--     'Vulkan.Core10.CommandBufferBuilding.cmdSetEvent'-style usage using
--     enums from @VK_KHR_synchronization2@
--
-- -   Add a
--     'Vulkan.Core10.Enums.QueryPoolCreateFlagBits.QueryPoolCreateFlagBits'::'Vulkan.Core10.Enums.QueryPoolCreateFlagBits.QUERY_POOL_CREATE_RESET_BIT_KHR'
--     flag to create a query pool with all queries initialized to the
--     reset state.
--
-- -   Allow any integer bit width for specific bit-wise operations.
--
-- -   Add a property to enable sparse support with
--     @VK_EXT_image_2d_view_of_3d@.
--
-- -   Add a property to indicate the implementation will return (0,0,0,0)
--     or (0,0,0,1) to vertex shaders that read unassigned attributes.
--
-- -   The effects of image memory barriers and image layout transitions on
--     3D images created with VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT are
--     scoped to the slices specified by the user-provided
--     VkImageSubresourceRange.
--
-- -   Queue family ownership transfers are no longer required for buffers
--     and linear images, and a new physical device queue family property
--     is exposed to indicate whether queue family ownership transfers are
--     required for optimal images.
--
-- == New Structures
--
-- -   Extending
--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--     'Vulkan.Core10.Device.DeviceCreateInfo':
--
--     -   'PhysicalDeviceMaintenance9FeaturesKHR'
--
-- -   Extending
--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
--
--     -   'PhysicalDeviceMaintenance9PropertiesKHR'
--
-- -   Extending
--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.QueueFamilyProperties2':
--
--     -   'QueueFamilyOwnershipTransferPropertiesKHR'
--
-- == New Enums
--
-- -   'DefaultVertexAttributeValueKHR'
--
-- == New Enum Constants
--
-- -   'KHR_MAINTENANCE_9_EXTENSION_NAME'
--
-- -   'KHR_MAINTENANCE_9_SPEC_VERSION'
--
-- -   Extending
--     'Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlagBits':
--
--     -   'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_ASYMMETRIC_EVENT_BIT_KHR'
--
-- -   Extending
--     'Vulkan.Core10.Enums.QueryPoolCreateFlagBits.QueryPoolCreateFlagBits':
--
--     -   'Vulkan.Core10.Enums.QueryPoolCreateFlagBits.QUERY_POOL_CREATE_RESET_BIT_KHR'
--
-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR'
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR'
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR'
--
-- == Issues
--
-- None.
--
-- == Version History
--
-- -   Revision 1, 2025-05-29 (Contributors)
--
--     -   Internal revisions
--
-- == See Also
--
-- No cross-references are available
--
-- == Document Notes
--
-- For more information, see the
-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_maintenance9 Vulkan Specification>.
--
-- This page is a generated document. Fixes and changes should be made to
-- the generator scripts, not directly.
module Vulkan.Extensions.VK_KHR_maintenance9  ( PhysicalDeviceMaintenance9FeaturesKHR(..)
                                              , PhysicalDeviceMaintenance9PropertiesKHR(..)
                                              , QueueFamilyOwnershipTransferPropertiesKHR(..)
                                              , DefaultVertexAttributeValueKHR( DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ZERO_KHR
                                                                              , DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ONE_KHR
                                                                              , ..
                                                                              )
                                              , KHR_MAINTENANCE_9_SPEC_VERSION
                                              , pattern KHR_MAINTENANCE_9_SPEC_VERSION
                                              , KHR_MAINTENANCE_9_EXTENSION_NAME
                                              , pattern KHR_MAINTENANCE_9_EXTENSION_NAME
                                              ) where

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 (showsPrec)
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 Data.Int (Int32)
import Foreign.Ptr (Ptr)
import GHC.Read (Read(readPrec))
import GHC.Show (Show(showsPrec))
import Data.Word (Word32)
import Data.Kind (Type)
import Vulkan.Core10.FundamentalTypes (bool32ToBool)
import Vulkan.Core10.FundamentalTypes (boolToBool32)
import Vulkan.Core10.FundamentalTypes (Bool32)
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR))
-- | VkPhysicalDeviceMaintenance9FeaturesKHR - Structure describing whether
-- the implementation supports maintenance9 functionality
--
-- = Members
--
-- This structure describes the following feature:
--
-- = Description
--
-- If the 'PhysicalDeviceMaintenance9FeaturesKHR' 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. If the application wishes to use a
-- 'Vulkan.Core10.Handles.Device' with any features described by
-- 'PhysicalDeviceMaintenance9FeaturesKHR', it /must/ add an instance of
-- the structure, with the desired feature members set to
-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
-- 'Vulkan.Core10.Handles.Device'.
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance9 VK_KHR_maintenance9>,
-- 'Vulkan.Core10.FundamentalTypes.Bool32',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data PhysicalDeviceMaintenance9FeaturesKHR = PhysicalDeviceMaintenance9FeaturesKHR
  { -- | #features-maintenance9# @maintenance9@ indicates that the implementation
    -- supports the following:
    --
    -- -   The restriction that certain bitfield SPIR-V instructions only
    --     operate on 32-bit integers is relaxed.
    --
    -- -   The value returned when a vertex shader reads an unbound vertex
    --     attribute is defined by way of the
    --     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-defaultVertexAttributeValue defaultVertexAttributeValue>
    --     property.
    --
    -- -   A new
    --     'Vulkan.Core10.Enums.QueryPoolCreateFlagBits.QueryPoolCreateFlagBits'::'Vulkan.Core10.Enums.QueryPoolCreateFlagBits.QUERY_POOL_CREATE_RESET_BIT_KHR'
    --     flag /can/ be used to initialize all queries in query pool to the
    --     reset state on creation.
    --
    -- -   'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdSetEvent2'
    --     /may/ not provide a dependency other than the event src stage mask.
    --
    -- -   The effects of image memory barriers and image layout transitions on
    --     3D images created with
    --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT'
    --     are limited to only those slices specified in
    --     'Vulkan.Core10.ImageView.ImageSubresourceRange'
    --
    -- -   A device /can/ be created with no queues. This can be used for
    --     compiling pipelines or shaders for the purpose of filling pipeline
    --     caches.
    --
    -- -   Queue family ownership transfers are no longer required for buffers
    --     and linear images. For optimally tiled images, a new physical device
    --     query is added to check if resources created with
    --     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE' /can/
    --     automatically transfer ownership between two queue families.
    --
    -- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-image2DViewOf3DSparse image2DViewOf3DSparse>
    --     enables 2D views of 3D sparse images.
    PhysicalDeviceMaintenance9FeaturesKHR -> Bool
maintenance9 :: Bool }
  deriving (Typeable, PhysicalDeviceMaintenance9FeaturesKHR
-> PhysicalDeviceMaintenance9FeaturesKHR -> Bool
(PhysicalDeviceMaintenance9FeaturesKHR
 -> PhysicalDeviceMaintenance9FeaturesKHR -> Bool)
-> (PhysicalDeviceMaintenance9FeaturesKHR
    -> PhysicalDeviceMaintenance9FeaturesKHR -> Bool)
-> Eq PhysicalDeviceMaintenance9FeaturesKHR
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PhysicalDeviceMaintenance9FeaturesKHR
-> PhysicalDeviceMaintenance9FeaturesKHR -> Bool
== :: PhysicalDeviceMaintenance9FeaturesKHR
-> PhysicalDeviceMaintenance9FeaturesKHR -> Bool
$c/= :: PhysicalDeviceMaintenance9FeaturesKHR
-> PhysicalDeviceMaintenance9FeaturesKHR -> Bool
/= :: PhysicalDeviceMaintenance9FeaturesKHR
-> PhysicalDeviceMaintenance9FeaturesKHR -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceMaintenance9FeaturesKHR)
#endif
deriving instance Show PhysicalDeviceMaintenance9FeaturesKHR

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

instance FromCStruct PhysicalDeviceMaintenance9FeaturesKHR where
  peekCStruct :: Ptr PhysicalDeviceMaintenance9FeaturesKHR
-> IO PhysicalDeviceMaintenance9FeaturesKHR
peekCStruct Ptr PhysicalDeviceMaintenance9FeaturesKHR
p = do
    maintenance9 <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceMaintenance9FeaturesKHR
p Ptr PhysicalDeviceMaintenance9FeaturesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
    pure $ PhysicalDeviceMaintenance9FeaturesKHR
             (bool32ToBool maintenance9)

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

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


-- | VkPhysicalDeviceMaintenance9PropertiesKHR - Structure describing various
-- implementation-defined properties introduced with VK_KHR_maintenance9
--
-- = Members
--
-- -   @sType@ is a 'Vulkan.Core10.Enums.StructureType.StructureType' value
--     identifying this structure.
--
-- -   @pNext@ is @NULL@ or a pointer to a structure extending this
--     structure.
--
-- -   #limits-image2DViewOf3DSparse# If the
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-image2DViewOf3D image2DViewOf3D>
--     feature is enabled, @image2DViewOf3DSparse@ indicates whether the
--     implementation supports binding a slice of a sparse 3D image to a 2D
--     image view.
--
-- -   #limits-defaultVertexAttributeValue# @defaultVertexAttributeValue@
--     is a 'DefaultVertexAttributeValueKHR' that indicates what value the
--     implementation will return when the vertex shader reads unbound
--     vertex attributes. Unbound attributes are those that have no
--     corresponding
--     'Vulkan.Core10.GraphicsPipeline.VertexInputAttributeDescription'::@location@
--     defined in the bound graphics pipeline or no corresponding
--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@location@
--     set by the most recent call to
--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'
--     when the state is dynamic .
--
-- = Description
--
-- If the 'PhysicalDeviceMaintenance9PropertiesKHR' 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_KHR_maintenance9 VK_KHR_maintenance9>,
-- 'Vulkan.Core10.FundamentalTypes.Bool32',
-- 'DefaultVertexAttributeValueKHR',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data PhysicalDeviceMaintenance9PropertiesKHR = PhysicalDeviceMaintenance9PropertiesKHR
  { -- No documentation found for Nested "VkPhysicalDeviceMaintenance9PropertiesKHR" "image2DViewOf3DSparse"
    PhysicalDeviceMaintenance9PropertiesKHR -> Bool
image2DViewOf3DSparse :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceMaintenance9PropertiesKHR" "defaultVertexAttributeValue"
    PhysicalDeviceMaintenance9PropertiesKHR
-> DefaultVertexAttributeValueKHR
defaultVertexAttributeValue :: DefaultVertexAttributeValueKHR
  }
  deriving (Typeable, PhysicalDeviceMaintenance9PropertiesKHR
-> PhysicalDeviceMaintenance9PropertiesKHR -> Bool
(PhysicalDeviceMaintenance9PropertiesKHR
 -> PhysicalDeviceMaintenance9PropertiesKHR -> Bool)
-> (PhysicalDeviceMaintenance9PropertiesKHR
    -> PhysicalDeviceMaintenance9PropertiesKHR -> Bool)
-> Eq PhysicalDeviceMaintenance9PropertiesKHR
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PhysicalDeviceMaintenance9PropertiesKHR
-> PhysicalDeviceMaintenance9PropertiesKHR -> Bool
== :: PhysicalDeviceMaintenance9PropertiesKHR
-> PhysicalDeviceMaintenance9PropertiesKHR -> Bool
$c/= :: PhysicalDeviceMaintenance9PropertiesKHR
-> PhysicalDeviceMaintenance9PropertiesKHR -> Bool
/= :: PhysicalDeviceMaintenance9PropertiesKHR
-> PhysicalDeviceMaintenance9PropertiesKHR -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceMaintenance9PropertiesKHR)
#endif
deriving instance Show PhysicalDeviceMaintenance9PropertiesKHR

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

instance FromCStruct PhysicalDeviceMaintenance9PropertiesKHR where
  peekCStruct :: Ptr PhysicalDeviceMaintenance9PropertiesKHR
-> IO PhysicalDeviceMaintenance9PropertiesKHR
peekCStruct Ptr PhysicalDeviceMaintenance9PropertiesKHR
p = do
    image2DViewOf3DSparse <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceMaintenance9PropertiesKHR
p Ptr PhysicalDeviceMaintenance9PropertiesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
    defaultVertexAttributeValue <- peek @DefaultVertexAttributeValueKHR ((p `plusPtr` 20 :: Ptr DefaultVertexAttributeValueKHR))
    pure $ PhysicalDeviceMaintenance9PropertiesKHR
             (bool32ToBool image2DViewOf3DSparse) defaultVertexAttributeValue

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

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


-- | VkQueueFamilyOwnershipTransferPropertiesKHR - Structure describing queue
-- family ownership transfer properties
--
-- = Description
--
-- If this structure is included in the @pNext@ chain of the
-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.QueueFamilyProperties2'
-- structure passed to
-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceQueueFamilyProperties2',
-- then it is filled with the queue family ownership properties for the
-- specified queue family.
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance9 VK_KHR_maintenance9>,
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data QueueFamilyOwnershipTransferPropertiesKHR = QueueFamilyOwnershipTransferPropertiesKHR
  { -- | @optimalImageTransferToQueueFamilies@ is a bitmask of queue family
    -- indices that indicates which queue families belonging to the same
    -- logical device support implicitly acquiring optimal image resources
    -- owned by this queue family, without the resources\' contents becoming
    -- undefined.
    QueueFamilyOwnershipTransferPropertiesKHR -> Word32
optimalImageTransferToQueueFamilies :: Word32 }
  deriving (Typeable, QueueFamilyOwnershipTransferPropertiesKHR
-> QueueFamilyOwnershipTransferPropertiesKHR -> Bool
(QueueFamilyOwnershipTransferPropertiesKHR
 -> QueueFamilyOwnershipTransferPropertiesKHR -> Bool)
-> (QueueFamilyOwnershipTransferPropertiesKHR
    -> QueueFamilyOwnershipTransferPropertiesKHR -> Bool)
-> Eq QueueFamilyOwnershipTransferPropertiesKHR
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: QueueFamilyOwnershipTransferPropertiesKHR
-> QueueFamilyOwnershipTransferPropertiesKHR -> Bool
== :: QueueFamilyOwnershipTransferPropertiesKHR
-> QueueFamilyOwnershipTransferPropertiesKHR -> Bool
$c/= :: QueueFamilyOwnershipTransferPropertiesKHR
-> QueueFamilyOwnershipTransferPropertiesKHR -> Bool
/= :: QueueFamilyOwnershipTransferPropertiesKHR
-> QueueFamilyOwnershipTransferPropertiesKHR -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (QueueFamilyOwnershipTransferPropertiesKHR)
#endif
deriving instance Show QueueFamilyOwnershipTransferPropertiesKHR

instance ToCStruct QueueFamilyOwnershipTransferPropertiesKHR where
  withCStruct :: forall b.
QueueFamilyOwnershipTransferPropertiesKHR
-> (Ptr QueueFamilyOwnershipTransferPropertiesKHR -> IO b) -> IO b
withCStruct QueueFamilyOwnershipTransferPropertiesKHR
x Ptr QueueFamilyOwnershipTransferPropertiesKHR -> IO b
f = Int
-> (Ptr QueueFamilyOwnershipTransferPropertiesKHR -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr QueueFamilyOwnershipTransferPropertiesKHR -> IO b) -> IO b)
-> (Ptr QueueFamilyOwnershipTransferPropertiesKHR -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr QueueFamilyOwnershipTransferPropertiesKHR
p -> Ptr QueueFamilyOwnershipTransferPropertiesKHR
-> QueueFamilyOwnershipTransferPropertiesKHR -> IO b -> IO b
forall b.
Ptr QueueFamilyOwnershipTransferPropertiesKHR
-> QueueFamilyOwnershipTransferPropertiesKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr QueueFamilyOwnershipTransferPropertiesKHR
p QueueFamilyOwnershipTransferPropertiesKHR
x (Ptr QueueFamilyOwnershipTransferPropertiesKHR -> IO b
f Ptr QueueFamilyOwnershipTransferPropertiesKHR
p)
  pokeCStruct :: forall b.
Ptr QueueFamilyOwnershipTransferPropertiesKHR
-> QueueFamilyOwnershipTransferPropertiesKHR -> IO b -> IO b
pokeCStruct Ptr QueueFamilyOwnershipTransferPropertiesKHR
p QueueFamilyOwnershipTransferPropertiesKHR{Word32
optimalImageTransferToQueueFamilies :: QueueFamilyOwnershipTransferPropertiesKHR -> Word32
optimalImageTransferToQueueFamilies :: Word32
..} IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr QueueFamilyOwnershipTransferPropertiesKHR
p Ptr QueueFamilyOwnershipTransferPropertiesKHR
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr QueueFamilyOwnershipTransferPropertiesKHR
p Ptr QueueFamilyOwnershipTransferPropertiesKHR
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr QueueFamilyOwnershipTransferPropertiesKHR
p Ptr QueueFamilyOwnershipTransferPropertiesKHR -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) (Word32
optimalImageTransferToQueueFamilies)
    IO b
f
  cStructSize :: Int
cStructSize = Int
24
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b.
Ptr QueueFamilyOwnershipTransferPropertiesKHR -> IO b -> IO b
pokeZeroCStruct Ptr QueueFamilyOwnershipTransferPropertiesKHR
p IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr QueueFamilyOwnershipTransferPropertiesKHR
p Ptr QueueFamilyOwnershipTransferPropertiesKHR
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr QueueFamilyOwnershipTransferPropertiesKHR
p Ptr QueueFamilyOwnershipTransferPropertiesKHR
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr QueueFamilyOwnershipTransferPropertiesKHR
p Ptr QueueFamilyOwnershipTransferPropertiesKHR -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
    IO b
f

instance FromCStruct QueueFamilyOwnershipTransferPropertiesKHR where
  peekCStruct :: Ptr QueueFamilyOwnershipTransferPropertiesKHR
-> IO QueueFamilyOwnershipTransferPropertiesKHR
peekCStruct Ptr QueueFamilyOwnershipTransferPropertiesKHR
p = do
    optimalImageTransferToQueueFamilies <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr QueueFamilyOwnershipTransferPropertiesKHR
p Ptr QueueFamilyOwnershipTransferPropertiesKHR -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32))
    pure $ QueueFamilyOwnershipTransferPropertiesKHR
             optimalImageTransferToQueueFamilies

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

instance Zero QueueFamilyOwnershipTransferPropertiesKHR where
  zero :: QueueFamilyOwnershipTransferPropertiesKHR
zero = Word32 -> QueueFamilyOwnershipTransferPropertiesKHR
QueueFamilyOwnershipTransferPropertiesKHR
           Word32
forall a. Zero a => a
zero


-- | VkDefaultVertexAttributeValueKHR - Values returned for unbound vertex
-- attributes
--
-- = Description
--
-- -   'DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ZERO_KHR' - the value
--     read for an unbound vertex attribute is (0,0,0,0).
--
-- -   'DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ONE_KHR' - the value
--     read for an unbound vertex attribute is (0,0,0,1).
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance9 VK_KHR_maintenance9>,
-- 'PhysicalDeviceMaintenance9PropertiesKHR'
newtype DefaultVertexAttributeValueKHR = DefaultVertexAttributeValueKHR Int32
  deriving newtype (DefaultVertexAttributeValueKHR
-> DefaultVertexAttributeValueKHR -> Bool
(DefaultVertexAttributeValueKHR
 -> DefaultVertexAttributeValueKHR -> Bool)
-> (DefaultVertexAttributeValueKHR
    -> DefaultVertexAttributeValueKHR -> Bool)
-> Eq DefaultVertexAttributeValueKHR
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: DefaultVertexAttributeValueKHR
-> DefaultVertexAttributeValueKHR -> Bool
== :: DefaultVertexAttributeValueKHR
-> DefaultVertexAttributeValueKHR -> Bool
$c/= :: DefaultVertexAttributeValueKHR
-> DefaultVertexAttributeValueKHR -> Bool
/= :: DefaultVertexAttributeValueKHR
-> DefaultVertexAttributeValueKHR -> Bool
Eq, Eq DefaultVertexAttributeValueKHR
Eq DefaultVertexAttributeValueKHR =>
(DefaultVertexAttributeValueKHR
 -> DefaultVertexAttributeValueKHR -> Ordering)
-> (DefaultVertexAttributeValueKHR
    -> DefaultVertexAttributeValueKHR -> Bool)
-> (DefaultVertexAttributeValueKHR
    -> DefaultVertexAttributeValueKHR -> Bool)
-> (DefaultVertexAttributeValueKHR
    -> DefaultVertexAttributeValueKHR -> Bool)
-> (DefaultVertexAttributeValueKHR
    -> DefaultVertexAttributeValueKHR -> Bool)
-> (DefaultVertexAttributeValueKHR
    -> DefaultVertexAttributeValueKHR
    -> DefaultVertexAttributeValueKHR)
-> (DefaultVertexAttributeValueKHR
    -> DefaultVertexAttributeValueKHR
    -> DefaultVertexAttributeValueKHR)
-> Ord DefaultVertexAttributeValueKHR
DefaultVertexAttributeValueKHR
-> DefaultVertexAttributeValueKHR -> Bool
DefaultVertexAttributeValueKHR
-> DefaultVertexAttributeValueKHR -> Ordering
DefaultVertexAttributeValueKHR
-> DefaultVertexAttributeValueKHR -> DefaultVertexAttributeValueKHR
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
$ccompare :: DefaultVertexAttributeValueKHR
-> DefaultVertexAttributeValueKHR -> Ordering
compare :: DefaultVertexAttributeValueKHR
-> DefaultVertexAttributeValueKHR -> Ordering
$c< :: DefaultVertexAttributeValueKHR
-> DefaultVertexAttributeValueKHR -> Bool
< :: DefaultVertexAttributeValueKHR
-> DefaultVertexAttributeValueKHR -> Bool
$c<= :: DefaultVertexAttributeValueKHR
-> DefaultVertexAttributeValueKHR -> Bool
<= :: DefaultVertexAttributeValueKHR
-> DefaultVertexAttributeValueKHR -> Bool
$c> :: DefaultVertexAttributeValueKHR
-> DefaultVertexAttributeValueKHR -> Bool
> :: DefaultVertexAttributeValueKHR
-> DefaultVertexAttributeValueKHR -> Bool
$c>= :: DefaultVertexAttributeValueKHR
-> DefaultVertexAttributeValueKHR -> Bool
>= :: DefaultVertexAttributeValueKHR
-> DefaultVertexAttributeValueKHR -> Bool
$cmax :: DefaultVertexAttributeValueKHR
-> DefaultVertexAttributeValueKHR -> DefaultVertexAttributeValueKHR
max :: DefaultVertexAttributeValueKHR
-> DefaultVertexAttributeValueKHR -> DefaultVertexAttributeValueKHR
$cmin :: DefaultVertexAttributeValueKHR
-> DefaultVertexAttributeValueKHR -> DefaultVertexAttributeValueKHR
min :: DefaultVertexAttributeValueKHR
-> DefaultVertexAttributeValueKHR -> DefaultVertexAttributeValueKHR
Ord, Ptr DefaultVertexAttributeValueKHR
-> IO DefaultVertexAttributeValueKHR
Ptr DefaultVertexAttributeValueKHR
-> Int -> IO DefaultVertexAttributeValueKHR
Ptr DefaultVertexAttributeValueKHR
-> Int -> DefaultVertexAttributeValueKHR -> IO ()
Ptr DefaultVertexAttributeValueKHR
-> DefaultVertexAttributeValueKHR -> IO ()
DefaultVertexAttributeValueKHR -> Int
(DefaultVertexAttributeValueKHR -> Int)
-> (DefaultVertexAttributeValueKHR -> Int)
-> (Ptr DefaultVertexAttributeValueKHR
    -> Int -> IO DefaultVertexAttributeValueKHR)
-> (Ptr DefaultVertexAttributeValueKHR
    -> Int -> DefaultVertexAttributeValueKHR -> IO ())
-> (forall b. Ptr b -> Int -> IO DefaultVertexAttributeValueKHR)
-> (forall b.
    Ptr b -> Int -> DefaultVertexAttributeValueKHR -> IO ())
-> (Ptr DefaultVertexAttributeValueKHR
    -> IO DefaultVertexAttributeValueKHR)
-> (Ptr DefaultVertexAttributeValueKHR
    -> DefaultVertexAttributeValueKHR -> IO ())
-> Storable DefaultVertexAttributeValueKHR
forall b. Ptr b -> Int -> IO DefaultVertexAttributeValueKHR
forall b. Ptr b -> Int -> DefaultVertexAttributeValueKHR -> 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
$csizeOf :: DefaultVertexAttributeValueKHR -> Int
sizeOf :: DefaultVertexAttributeValueKHR -> Int
$calignment :: DefaultVertexAttributeValueKHR -> Int
alignment :: DefaultVertexAttributeValueKHR -> Int
$cpeekElemOff :: Ptr DefaultVertexAttributeValueKHR
-> Int -> IO DefaultVertexAttributeValueKHR
peekElemOff :: Ptr DefaultVertexAttributeValueKHR
-> Int -> IO DefaultVertexAttributeValueKHR
$cpokeElemOff :: Ptr DefaultVertexAttributeValueKHR
-> Int -> DefaultVertexAttributeValueKHR -> IO ()
pokeElemOff :: Ptr DefaultVertexAttributeValueKHR
-> Int -> DefaultVertexAttributeValueKHR -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO DefaultVertexAttributeValueKHR
peekByteOff :: forall b. Ptr b -> Int -> IO DefaultVertexAttributeValueKHR
$cpokeByteOff :: forall b. Ptr b -> Int -> DefaultVertexAttributeValueKHR -> IO ()
pokeByteOff :: forall b. Ptr b -> Int -> DefaultVertexAttributeValueKHR -> IO ()
$cpeek :: Ptr DefaultVertexAttributeValueKHR
-> IO DefaultVertexAttributeValueKHR
peek :: Ptr DefaultVertexAttributeValueKHR
-> IO DefaultVertexAttributeValueKHR
$cpoke :: Ptr DefaultVertexAttributeValueKHR
-> DefaultVertexAttributeValueKHR -> IO ()
poke :: Ptr DefaultVertexAttributeValueKHR
-> DefaultVertexAttributeValueKHR -> IO ()
Storable, DefaultVertexAttributeValueKHR
DefaultVertexAttributeValueKHR
-> Zero DefaultVertexAttributeValueKHR
forall a. a -> Zero a
$czero :: DefaultVertexAttributeValueKHR
zero :: DefaultVertexAttributeValueKHR
Zero)

-- No documentation found for Nested "VkDefaultVertexAttributeValueKHR" "VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ZERO_KHR"
pattern $mDEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ZERO_KHR :: forall {r}.
DefaultVertexAttributeValueKHR -> ((# #) -> r) -> ((# #) -> r) -> r
$bDEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ZERO_KHR :: DefaultVertexAttributeValueKHR
DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ZERO_KHR = DefaultVertexAttributeValueKHR 0

-- No documentation found for Nested "VkDefaultVertexAttributeValueKHR" "VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ONE_KHR"
pattern $mDEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ONE_KHR :: forall {r}.
DefaultVertexAttributeValueKHR -> ((# #) -> r) -> ((# #) -> r) -> r
$bDEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ONE_KHR :: DefaultVertexAttributeValueKHR
DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ONE_KHR = DefaultVertexAttributeValueKHR 1

{-# COMPLETE
  DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ZERO_KHR
  , DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ONE_KHR ::
    DefaultVertexAttributeValueKHR
  #-}

conNameDefaultVertexAttributeValueKHR :: String
conNameDefaultVertexAttributeValueKHR :: String
conNameDefaultVertexAttributeValueKHR = String
"DefaultVertexAttributeValueKHR"

enumPrefixDefaultVertexAttributeValueKHR :: String
enumPrefixDefaultVertexAttributeValueKHR :: String
enumPrefixDefaultVertexAttributeValueKHR = String
"DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_"

showTableDefaultVertexAttributeValueKHR :: [(DefaultVertexAttributeValueKHR, String)]
showTableDefaultVertexAttributeValueKHR :: [(DefaultVertexAttributeValueKHR, String)]
showTableDefaultVertexAttributeValueKHR =
  [
    ( DefaultVertexAttributeValueKHR
DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ZERO_KHR
    , String
"ZERO_KHR"
    )
  ,
    ( DefaultVertexAttributeValueKHR
DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ONE_KHR
    , String
"ONE_KHR"
    )
  ]

instance Show DefaultVertexAttributeValueKHR where
  showsPrec :: Int -> DefaultVertexAttributeValueKHR -> ShowS
showsPrec =
    String
-> [(DefaultVertexAttributeValueKHR, String)]
-> String
-> (DefaultVertexAttributeValueKHR -> Int32)
-> (Int32 -> ShowS)
-> Int
-> DefaultVertexAttributeValueKHR
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
      String
enumPrefixDefaultVertexAttributeValueKHR
      [(DefaultVertexAttributeValueKHR, String)]
showTableDefaultVertexAttributeValueKHR
      String
conNameDefaultVertexAttributeValueKHR
      (\(DefaultVertexAttributeValueKHR Int32
x) -> Int32
x)
      (Int -> Int32 -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec Int
11)

instance Read DefaultVertexAttributeValueKHR where
  readPrec :: ReadPrec DefaultVertexAttributeValueKHR
readPrec =
    String
-> [(DefaultVertexAttributeValueKHR, String)]
-> String
-> (Int32 -> DefaultVertexAttributeValueKHR)
-> ReadPrec DefaultVertexAttributeValueKHR
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
      String
enumPrefixDefaultVertexAttributeValueKHR
      [(DefaultVertexAttributeValueKHR, String)]
showTableDefaultVertexAttributeValueKHR
      String
conNameDefaultVertexAttributeValueKHR
      Int32 -> DefaultVertexAttributeValueKHR
DefaultVertexAttributeValueKHR

type KHR_MAINTENANCE_9_SPEC_VERSION = 1

-- No documentation found for TopLevel "VK_KHR_MAINTENANCE_9_SPEC_VERSION"
pattern KHR_MAINTENANCE_9_SPEC_VERSION :: forall a . Integral a => a
pattern $mKHR_MAINTENANCE_9_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_MAINTENANCE_9_SPEC_VERSION :: forall a. Integral a => a
KHR_MAINTENANCE_9_SPEC_VERSION = 1


type KHR_MAINTENANCE_9_EXTENSION_NAME = "VK_KHR_maintenance9"

-- No documentation found for TopLevel "VK_KHR_MAINTENANCE_9_EXTENSION_NAME"
pattern KHR_MAINTENANCE_9_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $mKHR_MAINTENANCE_9_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_MAINTENANCE_9_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
KHR_MAINTENANCE_9_EXTENSION_NAME = "VK_KHR_maintenance9"