{-# language CPP #-}
-- No documentation found for Chapter "Core12"
module Vulkan.Core12  ( pattern API_VERSION_1_2
                      , PhysicalDeviceVulkan11Features(..)
                      , PhysicalDeviceVulkan11Properties(..)
                      , PhysicalDeviceVulkan12Features(..)
                      , PhysicalDeviceVulkan12Properties(..)
                      , StructureType(..)
                      , module Vulkan.Core12.Enums
                      , module Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing
                      , module Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset
                      , module Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax
                      , module Vulkan.Core12.Promoted_From_VK_EXT_scalar_block_layout
                      , module Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage
                      , module Vulkan.Core12.Promoted_From_VK_KHR_8bit_storage
                      , module Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address
                      , module Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2
                      , module Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve
                      , module Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count
                      , module Vulkan.Core12.Promoted_From_VK_KHR_driver_properties
                      , module Vulkan.Core12.Promoted_From_VK_KHR_image_format_list
                      , module Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer
                      , module Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts
                      , module Vulkan.Core12.Promoted_From_VK_KHR_shader_atomic_int64
                      , module Vulkan.Core12.Promoted_From_VK_KHR_shader_float16_int8
                      , module Vulkan.Core12.Promoted_From_VK_KHR_shader_float_controls
                      , module Vulkan.Core12.Promoted_From_VK_KHR_shader_subgroup_extended_types
                      , module Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore
                      , module Vulkan.Core12.Promoted_From_VK_KHR_uniform_buffer_standard_layout
                      , module Vulkan.Core12.Promoted_From_VK_KHR_vulkan_memory_model
                      ) where
import Vulkan.Core12.Enums
import Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing
import Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset
import Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax
import Vulkan.Core12.Promoted_From_VK_EXT_scalar_block_layout
import Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage
import Vulkan.Core12.Promoted_From_VK_KHR_8bit_storage
import Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address
import Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2
import Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve
import Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count
import Vulkan.Core12.Promoted_From_VK_KHR_driver_properties
import Vulkan.Core12.Promoted_From_VK_KHR_image_format_list
import Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer
import Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts
import Vulkan.Core12.Promoted_From_VK_KHR_shader_atomic_int64
import Vulkan.Core12.Promoted_From_VK_KHR_shader_float16_int8
import Vulkan.Core12.Promoted_From_VK_KHR_shader_float_controls
import Vulkan.Core12.Promoted_From_VK_KHR_shader_subgroup_extended_types
import Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore
import Vulkan.Core12.Promoted_From_VK_KHR_uniform_buffer_standard_layout
import Vulkan.Core12.Promoted_From_VK_KHR_vulkan_memory_model
import Vulkan.CStruct.Utils (FixedArray)
import Foreign.Marshal.Alloc (allocaBytes)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
import Data.ByteString (packCString)
import Vulkan.CStruct (FromCStruct)
import Vulkan.CStruct (FromCStruct(..))
import Vulkan.CStruct (ToCStruct)
import Vulkan.CStruct (ToCStruct(..))
import Vulkan.Zero (Zero(..))
import Data.Typeable (Typeable)
import Foreign.C.Types (CChar)
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 Data.Word (Word32)
import Data.Word (Word64)
import Data.Word (Word8)
import Data.ByteString (ByteString)
import Data.Kind (Type)
import Vulkan.Core10.FundamentalTypes (bool32ToBool)
import Vulkan.Core10.FundamentalTypes (boolToBool32)
import Vulkan.CStruct.Utils (lowerArrayPtr)
import Vulkan.CStruct.Utils (peekByteStringFromSizedVectorPtr)
import Vulkan.CStruct.Utils (pokeFixedLengthByteString)
import Vulkan.CStruct.Utils (pokeFixedLengthNullTerminatedByteString)
import Vulkan.Core10.FundamentalTypes (Bool32)
import Vulkan.Core12.Promoted_From_VK_KHR_driver_properties (ConformanceVersion)
import Vulkan.Core10.FundamentalTypes (DeviceSize)
import Vulkan.Core12.Enums.DriverId (DriverId)
import Vulkan.Core10.APIConstants (LUID_SIZE)
import Vulkan.Core10.APIConstants (MAX_DRIVER_INFO_SIZE)
import Vulkan.Core10.APIConstants (MAX_DRIVER_NAME_SIZE)
import Vulkan.Core11.Enums.PointClippingBehavior (PointClippingBehavior)
import Vulkan.Core12.Enums.ResolveModeFlagBits (ResolveModeFlags)
import Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlags)
import Vulkan.Core12.Enums.ShaderFloatControlsIndependence (ShaderFloatControlsIndependence)
import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlags)
import Vulkan.Core10.APIConstants (UUID_SIZE)
import Vulkan.Version (pattern MAKE_API_VERSION)
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES))
import Vulkan.Core10.Enums.StructureType (StructureType(..))
pattern API_VERSION_1_2 :: Word32
pattern $bAPI_VERSION_1_2 :: Word32
$mAPI_VERSION_1_2 :: forall {r}. Word32 -> ((# #) -> r) -> ((# #) -> r) -> r
API_VERSION_1_2 = MAKE_API_VERSION 1 2 0


-- | VkPhysicalDeviceVulkan11Features - Structure describing the Vulkan 1.1
-- features that can be supported by an implementation
--
-- = Members
--
-- This structure describes the following features:
--
-- = Description
--
-- If the 'PhysicalDeviceVulkan11Features' 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. 'PhysicalDeviceVulkan11Features' /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_VERSION_1_2 VK_VERSION_1_2>,
-- 'Vulkan.Core10.FundamentalTypes.Bool32',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data PhysicalDeviceVulkan11Features = PhysicalDeviceVulkan11Features
  { -- | #features-storageBuffer16BitAccess# @storageBuffer16BitAccess@ specifies
    -- whether objects in the @StorageBuffer@, @ShaderRecordBufferKHR@, or
    -- @PhysicalStorageBuffer@ storage class with the @Block@ decoration /can/
    -- have 16-bit integer and 16-bit floating-point members. If this feature
    -- is not enabled, 16-bit integer or 16-bit floating-point members /must/
    -- not be used in such objects. This also specifies whether shader modules
    -- /can/ declare the @StorageBuffer16BitAccess@ capability.
    PhysicalDeviceVulkan11Features -> Bool
storageBuffer16BitAccess :: Bool
  , -- | #features-uniformAndStorageBuffer16BitAccess#
    -- @uniformAndStorageBuffer16BitAccess@ specifies whether objects in the
    -- @Uniform@ storage class with the @Block@ decoration /can/ have 16-bit
    -- integer and 16-bit floating-point members. If this feature is not
    -- enabled, 16-bit integer or 16-bit floating-point members /must/ not be
    -- used in such objects. This also specifies whether shader modules /can/
    -- declare the @UniformAndStorageBuffer16BitAccess@ capability.
    PhysicalDeviceVulkan11Features -> Bool
uniformAndStorageBuffer16BitAccess :: Bool
  , -- | #features-storagePushConstant16# @storagePushConstant16@ specifies
    -- whether objects in the @PushConstant@ storage class /can/ have 16-bit
    -- integer and 16-bit floating-point members. If this feature is not
    -- enabled, 16-bit integer or floating-point members /must/ not be used in
    -- such objects. This also specifies whether shader modules /can/ declare
    -- the @StoragePushConstant16@ capability.
    PhysicalDeviceVulkan11Features -> Bool
storagePushConstant16 :: Bool
  , -- | #features-storageInputOutput16# @storageInputOutput16@ specifies whether
    -- objects in the @Input@ and @Output@ storage classes /can/ have 16-bit
    -- integer and 16-bit floating-point members. If this feature is not
    -- enabled, 16-bit integer or 16-bit floating-point members /must/ not be
    -- used in such objects. This also specifies whether shader modules /can/
    -- declare the @StorageInputOutput16@ capability.
    PhysicalDeviceVulkan11Features -> Bool
storageInputOutput16 :: Bool
  , -- | #features-multiview# @multiview@ specifies whether the implementation
    -- supports multiview rendering within a render pass. If this feature is
    -- not enabled, the view mask of each subpass /must/ always be zero.
    PhysicalDeviceVulkan11Features -> Bool
multiview :: Bool
  , -- | #features-multiview-gs# @multiviewGeometryShader@ specifies whether the
    -- implementation supports multiview rendering within a render pass, with
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#geometry geometry shaders>.
    -- If this feature is not enabled, then a pipeline compiled against a
    -- subpass with a non-zero view mask /must/ not include a geometry shader.
    PhysicalDeviceVulkan11Features -> Bool
multiviewGeometryShader :: Bool
  , -- | #features-multiview-tess# @multiviewTessellationShader@ specifies
    -- whether the implementation supports multiview rendering within a render
    -- pass, with
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#tessellation tessellation shaders>.
    -- If this feature is not enabled, then a pipeline compiled against a
    -- subpass with a non-zero view mask /must/ not include any tessellation
    -- shaders.
    PhysicalDeviceVulkan11Features -> Bool
multiviewTessellationShader :: Bool
  , -- | #features-variablePointersStorageBuffer# @variablePointersStorageBuffer@
    -- specifies whether the implementation supports the SPIR-V
    -- @VariablePointersStorageBuffer@ capability. When this feature is not
    -- enabled, shader modules /must/ not declare the
    -- @SPV_KHR_variable_pointers@ extension or the
    -- @VariablePointersStorageBuffer@ capability.
    PhysicalDeviceVulkan11Features -> Bool
variablePointersStorageBuffer :: Bool
  , -- | #features-variablePointers# @variablePointers@ specifies whether the
    -- implementation supports the SPIR-V @VariablePointers@ capability. When
    -- this feature is not enabled, shader modules /must/ not declare the
    -- @VariablePointers@ capability.
    PhysicalDeviceVulkan11Features -> Bool
variablePointers :: Bool
  , -- | #features-protectedMemory# @protectedMemory@ specifies whether
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-protected-memory protected memory>
    -- is supported.
    PhysicalDeviceVulkan11Features -> Bool
protectedMemory :: Bool
  , -- | #features-samplerYcbcrConversion# @samplerYcbcrConversion@ specifies
    -- whether the implementation supports
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>.
    -- If @samplerYcbcrConversion@ is 'Vulkan.Core10.FundamentalTypes.FALSE',
    -- sampler Y′CBCR conversion is not supported, and samplers using sampler
    -- Y′CBCR conversion /must/ not be used.
    PhysicalDeviceVulkan11Features -> Bool
samplerYcbcrConversion :: Bool
  , -- | #features-shaderDrawParameters# @shaderDrawParameters@ specifies whether
    -- the implementation supports the SPIR-V @DrawParameters@ capability. When
    -- this feature is not enabled, shader modules /must/ not declare the
    -- @SPV_KHR_shader_draw_parameters@ extension or the @DrawParameters@
    -- capability.
    PhysicalDeviceVulkan11Features -> Bool
shaderDrawParameters :: Bool
  }
  deriving (Typeable, PhysicalDeviceVulkan11Features
-> PhysicalDeviceVulkan11Features -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PhysicalDeviceVulkan11Features
-> PhysicalDeviceVulkan11Features -> Bool
$c/= :: PhysicalDeviceVulkan11Features
-> PhysicalDeviceVulkan11Features -> Bool
== :: PhysicalDeviceVulkan11Features
-> PhysicalDeviceVulkan11Features -> Bool
$c== :: PhysicalDeviceVulkan11Features
-> PhysicalDeviceVulkan11Features -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceVulkan11Features)
#endif
deriving instance Show PhysicalDeviceVulkan11Features

instance ToCStruct PhysicalDeviceVulkan11Features where
  withCStruct :: forall b.
PhysicalDeviceVulkan11Features
-> (Ptr PhysicalDeviceVulkan11Features -> IO b) -> IO b
withCStruct PhysicalDeviceVulkan11Features
x Ptr PhysicalDeviceVulkan11Features -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
64 forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceVulkan11Features
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceVulkan11Features
p PhysicalDeviceVulkan11Features
x (Ptr PhysicalDeviceVulkan11Features -> IO b
f Ptr PhysicalDeviceVulkan11Features
p)
  pokeCStruct :: forall b.
Ptr PhysicalDeviceVulkan11Features
-> PhysicalDeviceVulkan11Features -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceVulkan11Features
p PhysicalDeviceVulkan11Features{Bool
shaderDrawParameters :: Bool
samplerYcbcrConversion :: Bool
protectedMemory :: Bool
variablePointers :: Bool
variablePointersStorageBuffer :: Bool
multiviewTessellationShader :: Bool
multiviewGeometryShader :: Bool
multiview :: Bool
storageInputOutput16 :: Bool
storagePushConstant16 :: Bool
uniformAndStorageBuffer16BitAccess :: Bool
storageBuffer16BitAccess :: Bool
$sel:shaderDrawParameters:PhysicalDeviceVulkan11Features :: PhysicalDeviceVulkan11Features -> Bool
$sel:samplerYcbcrConversion:PhysicalDeviceVulkan11Features :: PhysicalDeviceVulkan11Features -> Bool
$sel:protectedMemory:PhysicalDeviceVulkan11Features :: PhysicalDeviceVulkan11Features -> Bool
$sel:variablePointers:PhysicalDeviceVulkan11Features :: PhysicalDeviceVulkan11Features -> Bool
$sel:variablePointersStorageBuffer:PhysicalDeviceVulkan11Features :: PhysicalDeviceVulkan11Features -> Bool
$sel:multiviewTessellationShader:PhysicalDeviceVulkan11Features :: PhysicalDeviceVulkan11Features -> Bool
$sel:multiviewGeometryShader:PhysicalDeviceVulkan11Features :: PhysicalDeviceVulkan11Features -> Bool
$sel:multiview:PhysicalDeviceVulkan11Features :: PhysicalDeviceVulkan11Features -> Bool
$sel:storageInputOutput16:PhysicalDeviceVulkan11Features :: PhysicalDeviceVulkan11Features -> Bool
$sel:storagePushConstant16:PhysicalDeviceVulkan11Features :: PhysicalDeviceVulkan11Features -> Bool
$sel:uniformAndStorageBuffer16BitAccess:PhysicalDeviceVulkan11Features :: PhysicalDeviceVulkan11Features -> Bool
$sel:storageBuffer16BitAccess:PhysicalDeviceVulkan11Features :: PhysicalDeviceVulkan11Features -> Bool
..} IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Features
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 PhysicalDeviceVulkan11Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
storageBuffer16BitAccess))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
uniformAndStorageBuffer16BitAccess))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
storagePushConstant16))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
storageInputOutput16))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
multiview))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
multiviewGeometryShader))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
multiviewTessellationShader))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
44 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
variablePointersStorageBuffer))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
variablePointers))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
52 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
protectedMemory))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
56 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
samplerYcbcrConversion))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
60 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderDrawParameters))
    IO b
f
  cStructSize :: Int
cStructSize = Int
64
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b. Ptr PhysicalDeviceVulkan11Features -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceVulkan11Features
p IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Features
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 PhysicalDeviceVulkan11Features
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 PhysicalDeviceVulkan11Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
44 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
52 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
56 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
60 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    IO b
f

instance FromCStruct PhysicalDeviceVulkan11Features where
  peekCStruct :: Ptr PhysicalDeviceVulkan11Features
-> IO PhysicalDeviceVulkan11Features
peekCStruct Ptr PhysicalDeviceVulkan11Features
p = do
    Bool32
storageBuffer16BitAccess <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan11Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
    Bool32
uniformAndStorageBuffer16BitAccess <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan11Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32))
    Bool32
storagePushConstant16 <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan11Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Bool32))
    Bool32
storageInputOutput16 <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan11Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr Bool32))
    Bool32
multiview <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan11Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Bool32))
    Bool32
multiviewGeometryShader <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan11Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr Bool32))
    Bool32
multiviewTessellationShader <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan11Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr Bool32))
    Bool32
variablePointersStorageBuffer <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan11Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
44 :: Ptr Bool32))
    Bool32
variablePointers <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan11Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr Bool32))
    Bool32
protectedMemory <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan11Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
52 :: Ptr Bool32))
    Bool32
samplerYcbcrConversion <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan11Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
56 :: Ptr Bool32))
    Bool32
shaderDrawParameters <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan11Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
60 :: Ptr Bool32))
    forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> PhysicalDeviceVulkan11Features
PhysicalDeviceVulkan11Features
             (Bool32 -> Bool
bool32ToBool Bool32
storageBuffer16BitAccess)
             (Bool32 -> Bool
bool32ToBool Bool32
uniformAndStorageBuffer16BitAccess)
             (Bool32 -> Bool
bool32ToBool Bool32
storagePushConstant16)
             (Bool32 -> Bool
bool32ToBool Bool32
storageInputOutput16)
             (Bool32 -> Bool
bool32ToBool Bool32
multiview)
             (Bool32 -> Bool
bool32ToBool Bool32
multiviewGeometryShader)
             (Bool32 -> Bool
bool32ToBool Bool32
multiviewTessellationShader)
             (Bool32 -> Bool
bool32ToBool Bool32
variablePointersStorageBuffer)
             (Bool32 -> Bool
bool32ToBool Bool32
variablePointers)
             (Bool32 -> Bool
bool32ToBool Bool32
protectedMemory)
             (Bool32 -> Bool
bool32ToBool Bool32
samplerYcbcrConversion)
             (Bool32 -> Bool
bool32ToBool Bool32
shaderDrawParameters)

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

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


-- | VkPhysicalDeviceVulkan11Properties - Structure specifying physical
-- device properties for functionality promoted to Vulkan 1.1
--
-- = Description
--
-- If the 'PhysicalDeviceVulkan11Properties' 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.
--
-- These properties correspond to Vulkan 1.1 functionality.
--
-- The members of 'PhysicalDeviceVulkan11Properties' have the same values
-- as the corresponding members of
-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceIDProperties',
-- 'Vulkan.Core11.Originally_Based_On_VK_KHR_subgroup.PhysicalDeviceSubgroupProperties',
-- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.PhysicalDevicePointClippingProperties',
-- 'Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties',
-- 'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryProperties',
-- and
-- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.PhysicalDeviceMaintenance3Properties'.
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_2 VK_VERSION_1_2>,
-- 'Vulkan.Core10.FundamentalTypes.Bool32',
-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
-- 'Vulkan.Core11.Enums.PointClippingBehavior.PointClippingBehavior',
-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags',
-- 'Vulkan.Core10.Enums.StructureType.StructureType',
-- 'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SubgroupFeatureFlags'
data PhysicalDeviceVulkan11Properties = PhysicalDeviceVulkan11Properties
  { -- | @deviceUUID@ is an array of 'Vulkan.Core10.APIConstants.UUID_SIZE'
    -- @uint8_t@ values representing a universally unique identifier for the
    -- device.
    PhysicalDeviceVulkan11Properties -> ByteString
deviceUUID :: ByteString
  , -- | @driverUUID@ is an array of 'Vulkan.Core10.APIConstants.UUID_SIZE'
    -- @uint8_t@ values representing a universally unique identifier for the
    -- driver build in use by the device.
    PhysicalDeviceVulkan11Properties -> ByteString
driverUUID :: ByteString
  , -- | @deviceLUID@ is an array of 'Vulkan.Core10.APIConstants.LUID_SIZE'
    -- @uint8_t@ values representing a locally unique identifier for the
    -- device.
    PhysicalDeviceVulkan11Properties -> ByteString
deviceLUID :: ByteString
  , -- | @deviceNodeMask@ is a @uint32_t@ bitfield identifying the node within a
    -- linked device adapter corresponding to the device.
    PhysicalDeviceVulkan11Properties -> Word32
deviceNodeMask :: Word32
  , -- | @deviceLUIDValid@ is a boolean value that will be
    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if @deviceLUID@ contains a valid
    -- LUID and @deviceNodeMask@ contains a valid node mask, and
    -- 'Vulkan.Core10.FundamentalTypes.FALSE' if they do not.
    PhysicalDeviceVulkan11Properties -> Bool
deviceLUIDValid :: Bool
  , -- | #limits-subgroup-size# @subgroupSize@ is the default number of
    -- invocations in each subgroup. @subgroupSize@ is at least 1 if any of the
    -- physical device’s queues support
    -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' or
    -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT'. @subgroupSize@ is
    -- a power-of-two.
    PhysicalDeviceVulkan11Properties -> Word32
subgroupSize :: Word32
  , -- | #limits-subgroupSupportedStages# @subgroupSupportedStages@ is a bitfield
    -- of 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits'
    -- describing the shader stages that
    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-group-operations group operations>
    -- with
    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-scope-subgroup subgroup scope>
    -- are supported in. @subgroupSupportedStages@ will have the
    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT' bit
    -- set if any of the physical device’s queues support
    -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT'.
    PhysicalDeviceVulkan11Properties -> ShaderStageFlags
subgroupSupportedStages :: ShaderStageFlags
  , -- | @subgroupSupportedOperations@ is a bitmask of
    -- 'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SubgroupFeatureFlagBits'
    -- specifying the sets of
    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-group-operations group operations>
    -- with
    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-scope-subgroup subgroup scope>
    -- supported on this device. @subgroupSupportedOperations@ will have the
    -- 'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SUBGROUP_FEATURE_BASIC_BIT'
    -- bit set if any of the physical device’s queues support
    -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' or
    -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT'.
    PhysicalDeviceVulkan11Properties -> SubgroupFeatureFlags
subgroupSupportedOperations :: SubgroupFeatureFlags
  , -- | #limits-subgroupQuadOperationsInAllStages#
    -- @subgroupQuadOperationsInAllStages@ is a boolean specifying whether
    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-quad-operations quad group operations>
    -- are available in all stages, or are restricted to fragment and compute
    -- stages.
    PhysicalDeviceVulkan11Properties -> Bool
subgroupQuadOperationsInAllStages :: Bool
  , -- | #limits-pointClipping# @pointClippingBehavior@ is a
    -- 'Vulkan.Core11.Enums.PointClippingBehavior.PointClippingBehavior' value
    -- specifying the point clipping behavior supported by the implementation.
    PhysicalDeviceVulkan11Properties -> PointClippingBehavior
pointClippingBehavior :: PointClippingBehavior
  , -- | #limits-maxMultiviewViewCount# @maxMultiviewViewCount@ is one greater
    -- than the maximum view index that /can/ be used in a subpass.
    PhysicalDeviceVulkan11Properties -> Word32
maxMultiviewViewCount :: Word32
  , -- | #limits-maxMultiviewInstanceIndex# @maxMultiviewInstanceIndex@ is the
    -- maximum valid value of instance index allowed to be generated by a
    -- drawing command recorded within a subpass of a multiview render pass
    -- instance.
    PhysicalDeviceVulkan11Properties -> Word32
maxMultiviewInstanceIndex :: Word32
  , -- | #limits-protectedNoFault# @protectedNoFault@ specifies how an
    -- implementation behaves when an application attempts to write to
    -- unprotected memory in a protected queue operation, read from protected
    -- memory in an unprotected queue operation, or perform a query in a
    -- protected queue operation. If this limit is
    -- 'Vulkan.Core10.FundamentalTypes.TRUE', such writes will be discarded or
    -- have undefined values written, reads and queries will return undefined
    -- values. If this limit is 'Vulkan.Core10.FundamentalTypes.FALSE',
    -- applications /must/ not perform these operations. See
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-protected-access-rules ???>
    -- for more information.
    PhysicalDeviceVulkan11Properties -> Bool
protectedNoFault :: Bool
  , -- | #limits-maxPerSetDescriptors# @maxPerSetDescriptors@ is a maximum number
    -- of descriptors (summed over all descriptor types) in a single descriptor
    -- set that is guaranteed to satisfy any implementation-dependent
    -- constraints on the size of a descriptor set itself. Applications /can/
    -- query whether a descriptor set that goes beyond this limit is supported
    -- using
    -- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.getDescriptorSetLayoutSupport'.
    PhysicalDeviceVulkan11Properties -> Word32
maxPerSetDescriptors :: Word32
  , -- | #limits-maxMemoryAllocationSize# @maxMemoryAllocationSize@ is the
    -- maximum size of a memory allocation that /can/ be created, even if there
    -- is more space available in the heap.
    PhysicalDeviceVulkan11Properties -> DeviceSize
maxMemoryAllocationSize :: DeviceSize
  }
  deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceVulkan11Properties)
#endif
deriving instance Show PhysicalDeviceVulkan11Properties

instance ToCStruct PhysicalDeviceVulkan11Properties where
  withCStruct :: forall b.
PhysicalDeviceVulkan11Properties
-> (Ptr PhysicalDeviceVulkan11Properties -> IO b) -> IO b
withCStruct PhysicalDeviceVulkan11Properties
x Ptr PhysicalDeviceVulkan11Properties -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
112 forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceVulkan11Properties
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceVulkan11Properties
p PhysicalDeviceVulkan11Properties
x (Ptr PhysicalDeviceVulkan11Properties -> IO b
f Ptr PhysicalDeviceVulkan11Properties
p)
  pokeCStruct :: forall b.
Ptr PhysicalDeviceVulkan11Properties
-> PhysicalDeviceVulkan11Properties -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceVulkan11Properties
p PhysicalDeviceVulkan11Properties{Bool
Word32
DeviceSize
ByteString
ShaderStageFlags
PointClippingBehavior
SubgroupFeatureFlags
maxMemoryAllocationSize :: DeviceSize
maxPerSetDescriptors :: Word32
protectedNoFault :: Bool
maxMultiviewInstanceIndex :: Word32
maxMultiviewViewCount :: Word32
pointClippingBehavior :: PointClippingBehavior
subgroupQuadOperationsInAllStages :: Bool
subgroupSupportedOperations :: SubgroupFeatureFlags
subgroupSupportedStages :: ShaderStageFlags
subgroupSize :: Word32
deviceLUIDValid :: Bool
deviceNodeMask :: Word32
deviceLUID :: ByteString
driverUUID :: ByteString
deviceUUID :: ByteString
$sel:maxMemoryAllocationSize:PhysicalDeviceVulkan11Properties :: PhysicalDeviceVulkan11Properties -> DeviceSize
$sel:maxPerSetDescriptors:PhysicalDeviceVulkan11Properties :: PhysicalDeviceVulkan11Properties -> Word32
$sel:protectedNoFault:PhysicalDeviceVulkan11Properties :: PhysicalDeviceVulkan11Properties -> Bool
$sel:maxMultiviewInstanceIndex:PhysicalDeviceVulkan11Properties :: PhysicalDeviceVulkan11Properties -> Word32
$sel:maxMultiviewViewCount:PhysicalDeviceVulkan11Properties :: PhysicalDeviceVulkan11Properties -> Word32
$sel:pointClippingBehavior:PhysicalDeviceVulkan11Properties :: PhysicalDeviceVulkan11Properties -> PointClippingBehavior
$sel:subgroupQuadOperationsInAllStages:PhysicalDeviceVulkan11Properties :: PhysicalDeviceVulkan11Properties -> Bool
$sel:subgroupSupportedOperations:PhysicalDeviceVulkan11Properties :: PhysicalDeviceVulkan11Properties -> SubgroupFeatureFlags
$sel:subgroupSupportedStages:PhysicalDeviceVulkan11Properties :: PhysicalDeviceVulkan11Properties -> ShaderStageFlags
$sel:subgroupSize:PhysicalDeviceVulkan11Properties :: PhysicalDeviceVulkan11Properties -> Word32
$sel:deviceLUIDValid:PhysicalDeviceVulkan11Properties :: PhysicalDeviceVulkan11Properties -> Bool
$sel:deviceNodeMask:PhysicalDeviceVulkan11Properties :: PhysicalDeviceVulkan11Properties -> Word32
$sel:deviceLUID:PhysicalDeviceVulkan11Properties :: PhysicalDeviceVulkan11Properties -> ByteString
$sel:driverUUID:PhysicalDeviceVulkan11Properties :: PhysicalDeviceVulkan11Properties -> ByteString
$sel:deviceUUID:PhysicalDeviceVulkan11Properties :: PhysicalDeviceVulkan11Properties -> ByteString
..} IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
    forall (n :: Nat).
KnownNat n =>
Ptr (FixedArray n Word8) -> ByteString -> IO ()
pokeFixedLengthByteString ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr (FixedArray UUID_SIZE Word8))) (ByteString
deviceUUID)
    forall (n :: Nat).
KnownNat n =>
Ptr (FixedArray n Word8) -> ByteString -> IO ()
pokeFixedLengthByteString ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr (FixedArray UUID_SIZE Word8))) (ByteString
driverUUID)
    forall (n :: Nat).
KnownNat n =>
Ptr (FixedArray n Word8) -> ByteString -> IO ()
pokeFixedLengthByteString ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr (FixedArray LUID_SIZE Word8))) (ByteString
deviceLUID)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
56 :: Ptr Word32)) (Word32
deviceNodeMask)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
60 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
deviceLUIDValid))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
64 :: Ptr Word32)) (Word32
subgroupSize)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
68 :: Ptr ShaderStageFlags)) (ShaderStageFlags
subgroupSupportedStages)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
72 :: Ptr SubgroupFeatureFlags)) (SubgroupFeatureFlags
subgroupSupportedOperations)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
76 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
subgroupQuadOperationsInAllStages))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
80 :: Ptr PointClippingBehavior)) (PointClippingBehavior
pointClippingBehavior)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
84 :: Ptr Word32)) (Word32
maxMultiviewViewCount)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
88 :: Ptr Word32)) (Word32
maxMultiviewInstanceIndex)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
92 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
protectedNoFault))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
96 :: Ptr Word32)) (Word32
maxPerSetDescriptors)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
104 :: Ptr DeviceSize)) (DeviceSize
maxMemoryAllocationSize)
    IO b
f
  cStructSize :: Int
cStructSize = Int
112
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b. Ptr PhysicalDeviceVulkan11Properties -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceVulkan11Properties
p IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
    forall (n :: Nat).
KnownNat n =>
Ptr (FixedArray n Word8) -> ByteString -> IO ()
pokeFixedLengthByteString ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr (FixedArray UUID_SIZE Word8))) (forall a. Monoid a => a
mempty)
    forall (n :: Nat).
KnownNat n =>
Ptr (FixedArray n Word8) -> ByteString -> IO ()
pokeFixedLengthByteString ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr (FixedArray UUID_SIZE Word8))) (forall a. Monoid a => a
mempty)
    forall (n :: Nat).
KnownNat n =>
Ptr (FixedArray n Word8) -> ByteString -> IO ()
pokeFixedLengthByteString ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr (FixedArray LUID_SIZE Word8))) (forall a. Monoid a => a
mempty)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
56 :: Ptr Word32)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
60 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
64 :: Ptr Word32)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
68 :: Ptr ShaderStageFlags)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
72 :: Ptr SubgroupFeatureFlags)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
76 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
80 :: Ptr PointClippingBehavior)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
84 :: Ptr Word32)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
88 :: Ptr Word32)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
92 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
96 :: Ptr Word32)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
104 :: Ptr DeviceSize)) (forall a. Zero a => a
zero)
    IO b
f

instance FromCStruct PhysicalDeviceVulkan11Properties where
  peekCStruct :: Ptr PhysicalDeviceVulkan11Properties
-> IO PhysicalDeviceVulkan11Properties
peekCStruct Ptr PhysicalDeviceVulkan11Properties
p = do
    ByteString
deviceUUID <- forall (n :: Nat).
KnownNat n =>
Ptr (FixedArray n Word8) -> IO ByteString
peekByteStringFromSizedVectorPtr ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr (FixedArray UUID_SIZE Word8)))
    ByteString
driverUUID <- forall (n :: Nat).
KnownNat n =>
Ptr (FixedArray n Word8) -> IO ByteString
peekByteStringFromSizedVectorPtr ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr (FixedArray UUID_SIZE Word8)))
    ByteString
deviceLUID <- forall (n :: Nat).
KnownNat n =>
Ptr (FixedArray n Word8) -> IO ByteString
peekByteStringFromSizedVectorPtr ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr (FixedArray LUID_SIZE Word8)))
    Word32
deviceNodeMask <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
56 :: Ptr Word32))
    Bool32
deviceLUIDValid <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
60 :: Ptr Bool32))
    Word32
subgroupSize <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
64 :: Ptr Word32))
    ShaderStageFlags
subgroupSupportedStages <- forall a. Storable a => Ptr a -> IO a
peek @ShaderStageFlags ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
68 :: Ptr ShaderStageFlags))
    SubgroupFeatureFlags
subgroupSupportedOperations <- forall a. Storable a => Ptr a -> IO a
peek @SubgroupFeatureFlags ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
72 :: Ptr SubgroupFeatureFlags))
    Bool32
subgroupQuadOperationsInAllStages <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
76 :: Ptr Bool32))
    PointClippingBehavior
pointClippingBehavior <- forall a. Storable a => Ptr a -> IO a
peek @PointClippingBehavior ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
80 :: Ptr PointClippingBehavior))
    Word32
maxMultiviewViewCount <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
84 :: Ptr Word32))
    Word32
maxMultiviewInstanceIndex <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
88 :: Ptr Word32))
    Bool32
protectedNoFault <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
92 :: Ptr Bool32))
    Word32
maxPerSetDescriptors <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
96 :: Ptr Word32))
    DeviceSize
maxMemoryAllocationSize <- forall a. Storable a => Ptr a -> IO a
peek @DeviceSize ((Ptr PhysicalDeviceVulkan11Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
104 :: Ptr DeviceSize))
    forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ ByteString
-> ByteString
-> ByteString
-> Word32
-> Bool
-> Word32
-> ShaderStageFlags
-> SubgroupFeatureFlags
-> Bool
-> PointClippingBehavior
-> Word32
-> Word32
-> Bool
-> Word32
-> DeviceSize
-> PhysicalDeviceVulkan11Properties
PhysicalDeviceVulkan11Properties
             ByteString
deviceUUID
             ByteString
driverUUID
             ByteString
deviceLUID
             Word32
deviceNodeMask
             (Bool32 -> Bool
bool32ToBool Bool32
deviceLUIDValid)
             Word32
subgroupSize
             ShaderStageFlags
subgroupSupportedStages
             SubgroupFeatureFlags
subgroupSupportedOperations
             (Bool32 -> Bool
bool32ToBool Bool32
subgroupQuadOperationsInAllStages)
             PointClippingBehavior
pointClippingBehavior
             Word32
maxMultiviewViewCount
             Word32
maxMultiviewInstanceIndex
             (Bool32 -> Bool
bool32ToBool Bool32
protectedNoFault)
             Word32
maxPerSetDescriptors
             DeviceSize
maxMemoryAllocationSize

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

instance Zero PhysicalDeviceVulkan11Properties where
  zero :: PhysicalDeviceVulkan11Properties
zero = ByteString
-> ByteString
-> ByteString
-> Word32
-> Bool
-> Word32
-> ShaderStageFlags
-> SubgroupFeatureFlags
-> Bool
-> PointClippingBehavior
-> Word32
-> Word32
-> Bool
-> Word32
-> DeviceSize
-> PhysicalDeviceVulkan11Properties
PhysicalDeviceVulkan11Properties
           forall a. Monoid a => a
mempty
           forall a. Monoid a => a
mempty
           forall a. Monoid a => a
mempty
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero


-- | VkPhysicalDeviceVulkan12Features - Structure describing the Vulkan 1.2
-- features that can be supported by an implementation
--
-- = Members
--
-- This structure describes the following features:
--
-- = Description
--
-- -   @sType@ is the type of this structure.
--
-- -   @pNext@ is @NULL@ or a pointer to a structure extending this
--     structure.
--
-- -   #features-samplerMirrorClampToEdge# @samplerMirrorClampToEdge@
--     indicates whether the implementation supports the
--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE'
--     sampler address mode. If this feature is not enabled, the
--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE'
--     sampler address mode /must/ not be used.
--
-- -   #features-drawIndirectCount# @drawIndirectCount@ indicates whether
--     the implementation supports the
--     'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndirectCount'
--     and
--     'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndexedIndirectCount'
--     functions. If this feature is not enabled, these functions /must/
--     not be used.
--
-- -   #features-storageBuffer8BitAccess# @storageBuffer8BitAccess@
--     indicates whether objects in the @StorageBuffer@,
--     @ShaderRecordBufferKHR@, or @PhysicalStorageBuffer@ storage class
--     with the @Block@ decoration /can/ have 8-bit integer members. If
--     this feature is not enabled, 8-bit integer members /must/ not be
--     used in such objects. This also indicates whether shader modules
--     /can/ declare the @StorageBuffer8BitAccess@ capability.
--
-- -   #features-uniformAndStorageBuffer8BitAccess#
--     @uniformAndStorageBuffer8BitAccess@ indicates whether objects in the
--     @Uniform@ storage class with the @Block@ decoration /can/ have 8-bit
--     integer members. If this feature is not enabled, 8-bit integer
--     members /must/ not be used in such objects. This also indicates
--     whether shader modules /can/ declare the
--     @UniformAndStorageBuffer8BitAccess@ capability.
--
-- -   #features-storagePushConstant8# @storagePushConstant8@ indicates
--     whether objects in the @PushConstant@ storage class /can/ have 8-bit
--     integer members. If this feature is not enabled, 8-bit integer
--     members /must/ not be used in such objects. This also indicates
--     whether shader modules /can/ declare the @StoragePushConstant8@
--     capability.
--
-- -   #features-shaderBufferInt64Atomics# @shaderBufferInt64Atomics@
--     indicates whether shaders /can/ perform 64-bit unsigned and signed
--     integer atomic operations on buffers.
--
-- -   #features-shaderSharedInt64Atomics# @shaderSharedInt64Atomics@
--     indicates whether shaders /can/ perform 64-bit unsigned and signed
--     integer atomic operations on shared and payload memory.
--
-- -   #features-shaderFloat16# @shaderFloat16@ indicates whether 16-bit
--     floats (halfs) are supported in shader code. This also indicates
--     whether shader modules /can/ declare the @Float16@ capability.
--     However, this only enables a subset of the storage classes that
--     SPIR-V allows for the @Float16@ SPIR-V capability: Declaring and
--     using 16-bit floats in the @Private@, @Workgroup@ (for non-Block
--     variables), and @Function@ storage classes is enabled, while
--     declaring them in the interface storage classes (e.g.,
--     @UniformConstant@, @Uniform@, @StorageBuffer@, @Input@, @Output@,
--     and @PushConstant@) is not enabled.
--
-- -   #features-shaderInt8# @shaderInt8@ indicates whether 8-bit integers
--     (signed and unsigned) are supported in shader code. This also
--     indicates whether shader modules /can/ declare the @Int8@
--     capability. However, this only enables a subset of the storage
--     classes that SPIR-V allows for the @Int8@ SPIR-V capability:
--     Declaring and using 8-bit integers in the @Private@, @Workgroup@
--     (for non-Block variables), and @Function@ storage classes is
--     enabled, while declaring them in the interface storage classes
--     (e.g., @UniformConstant@, @Uniform@, @StorageBuffer@, @Input@,
--     @Output@, and @PushConstant@) is not enabled.
--
-- -   #features-descriptorIndexing# @descriptorIndexing@ indicates whether
--     the implementation supports the minimum set of descriptor indexing
--     features as described in the
--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-requirements Feature Requirements>
--     section. Enabling the @descriptorIndexing@ member when
--     'Vulkan.Core10.Device.createDevice' is called does not imply the
--     other minimum descriptor indexing features are also enabled. Those
--     other descriptor indexing features /must/ be enabled individually as
--     needed by the application.
--
-- -   #features-shaderInputAttachmentArrayDynamicIndexing#
--     @shaderInputAttachmentArrayDynamicIndexing@ indicates whether arrays
--     of input attachments /can/ be indexed by dynamically uniform integer
--     expressions in shader code. If this feature is not enabled,
--     resources with a descriptor type of
--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
--     /must/ be indexed only by constant integral expressions when
--     aggregated into arrays in shader code. This also indicates whether
--     shader modules /can/ declare the
--     @InputAttachmentArrayDynamicIndexing@ capability.
--
-- -   #features-shaderUniformTexelBufferArrayDynamicIndexing#
--     @shaderUniformTexelBufferArrayDynamicIndexing@ indicates whether
--     arrays of uniform texel buffers /can/ be indexed by dynamically
--     uniform integer expressions in shader code. If this feature is not
--     enabled, resources with a descriptor type of
--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'
--     /must/ be indexed only by constant integral expressions when
--     aggregated into arrays in shader code. This also indicates whether
--     shader modules /can/ declare the
--     @UniformTexelBufferArrayDynamicIndexing@ capability.
--
-- -   #features-shaderStorageTexelBufferArrayDynamicIndexing#
--     @shaderStorageTexelBufferArrayDynamicIndexing@ indicates whether
--     arrays of storage texel buffers /can/ be indexed by dynamically
--     uniform integer expressions in shader code. If this feature is not
--     enabled, resources with a descriptor type of
--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
--     /must/ be indexed only by constant integral expressions when
--     aggregated into arrays in shader code. This also indicates whether
--     shader modules /can/ declare the
--     @StorageTexelBufferArrayDynamicIndexing@ capability.
--
-- -   #features-shaderUniformBufferArrayNonUniformIndexing#
--     @shaderUniformBufferArrayNonUniformIndexing@ indicates whether
--     arrays of uniform buffers /can/ be indexed by non-uniform integer
--     expressions in shader code. If this feature is not enabled,
--     resources with a descriptor type of
--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'
--     or
--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'
--     /must/ not be indexed by non-uniform integer expressions when
--     aggregated into arrays in shader code. This also indicates whether
--     shader modules /can/ declare the
--     @UniformBufferArrayNonUniformIndexing@ capability.
--
-- -   #features-shaderSampledImageArrayNonUniformIndexing#
--     @shaderSampledImageArrayNonUniformIndexing@ indicates whether arrays
--     of samplers or sampled images /can/ be indexed by non-uniform
--     integer expressions in shader code. If this feature is not enabled,
--     resources with a descriptor type of
--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER',
--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',
--     or
--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE'
--     /must/ not be indexed by non-uniform integer expressions when
--     aggregated into arrays in shader code. This also indicates whether
--     shader modules /can/ declare the
--     @SampledImageArrayNonUniformIndexing@ capability.
--
-- -   #features-shaderStorageBufferArrayNonUniformIndexing#
--     @shaderStorageBufferArrayNonUniformIndexing@ indicates whether
--     arrays of storage buffers /can/ be indexed by non-uniform integer
--     expressions in shader code. If this feature is not enabled,
--     resources with a descriptor type of
--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'
--     or
--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'
--     /must/ not be indexed by non-uniform integer expressions when
--     aggregated into arrays in shader code. This also indicates whether
--     shader modules /can/ declare the
--     @StorageBufferArrayNonUniformIndexing@ capability.
--
-- -   #features-shaderStorageImageArrayNonUniformIndexing#
--     @shaderStorageImageArrayNonUniformIndexing@ indicates whether arrays
--     of storage images /can/ be indexed by non-uniform integer
--     expressions in shader code. If this feature is not enabled,
--     resources with a descriptor type of
--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE'
--     /must/ not be indexed by non-uniform integer expressions when
--     aggregated into arrays in shader code. This also indicates whether
--     shader modules /can/ declare the
--     @StorageImageArrayNonUniformIndexing@ capability.
--
-- -   #features-shaderInputAttachmentArrayNonUniformIndexing#
--     @shaderInputAttachmentArrayNonUniformIndexing@ indicates whether
--     arrays of input attachments /can/ be indexed by non-uniform integer
--     expressions in shader code. If this feature is not enabled,
--     resources with a descriptor type of
--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
--     /must/ not be indexed by non-uniform integer expressions when
--     aggregated into arrays in shader code. This also indicates whether
--     shader modules /can/ declare the
--     @InputAttachmentArrayNonUniformIndexing@ capability.
--
-- -   #features-shaderUniformTexelBufferArrayNonUniformIndexing#
--     @shaderUniformTexelBufferArrayNonUniformIndexing@ indicates whether
--     arrays of uniform texel buffers /can/ be indexed by non-uniform
--     integer expressions in shader code. If this feature is not enabled,
--     resources with a descriptor type of
--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'
--     /must/ not be indexed by non-uniform integer expressions when
--     aggregated into arrays in shader code. This also indicates whether
--     shader modules /can/ declare the
--     @UniformTexelBufferArrayNonUniformIndexing@ capability.
--
-- -   #features-shaderStorageTexelBufferArrayNonUniformIndexing#
--     @shaderStorageTexelBufferArrayNonUniformIndexing@ indicates whether
--     arrays of storage texel buffers /can/ be indexed by non-uniform
--     integer expressions in shader code. If this feature is not enabled,
--     resources with a descriptor type of
--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
--     /must/ not be indexed by non-uniform integer expressions when
--     aggregated into arrays in shader code. This also indicates whether
--     shader modules /can/ declare the
--     @StorageTexelBufferArrayNonUniformIndexing@ capability.
--
-- -   #features-descriptorBindingUniformBufferUpdateAfterBind#
--     @descriptorBindingUniformBufferUpdateAfterBind@ indicates whether
--     the implementation supports updating uniform buffer descriptors
--     after a set is bound. If this feature is not enabled,
--     'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'
--     /must/ not be used with
--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'.
--
-- -   #features-descriptorBindingSampledImageUpdateAfterBind#
--     @descriptorBindingSampledImageUpdateAfterBind@ indicates whether the
--     implementation supports updating sampled image descriptors after a
--     set is bound. If this feature is not enabled,
--     'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'
--     /must/ not be used with
--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER',
--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',
--     or
--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE'.
--
-- -   #features-descriptorBindingStorageImageUpdateAfterBind#
--     @descriptorBindingStorageImageUpdateAfterBind@ indicates whether the
--     implementation supports updating storage image descriptors after a
--     set is bound. If this feature is not enabled,
--     'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'
--     /must/ not be used with
--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE'.
--
-- -   #features-descriptorBindingStorageBufferUpdateAfterBind#
--     @descriptorBindingStorageBufferUpdateAfterBind@ indicates whether
--     the implementation supports updating storage buffer descriptors
--     after a set is bound. If this feature is not enabled,
--     'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'
--     /must/ not be used with
--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'.
--
-- -   #features-descriptorBindingUniformTexelBufferUpdateAfterBind#
--     @descriptorBindingUniformTexelBufferUpdateAfterBind@ indicates
--     whether the implementation supports updating uniform texel buffer
--     descriptors after a set is bound. If this feature is not enabled,
--     'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'
--     /must/ not be used with
--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'.
--
-- -   #features-descriptorBindingStorageTexelBufferUpdateAfterBind#
--     @descriptorBindingStorageTexelBufferUpdateAfterBind@ indicates
--     whether the implementation supports updating storage texel buffer
--     descriptors after a set is bound. If this feature is not enabled,
--     'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'
--     /must/ not be used with
--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'.
--
-- -   #features-descriptorBindingUpdateUnusedWhilePending#
--     @descriptorBindingUpdateUnusedWhilePending@ indicates whether the
--     implementation supports updating descriptors while the set is in
--     use. If this feature is not enabled,
--     'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT'
--     /must/ not be used.
--
-- -   #features-descriptorBindingPartiallyBound#
--     @descriptorBindingPartiallyBound@ indicates whether the
--     implementation supports statically using a descriptor set binding in
--     which some descriptors are not valid. If this feature is not
--     enabled,
--     'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT'
--     /must/ not be used.
--
-- -   #features-descriptorBindingVariableDescriptorCount#
--     @descriptorBindingVariableDescriptorCount@ indicates whether the
--     implementation supports descriptor sets with a variable-sized last
--     binding. If this feature is not enabled,
--     'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT'
--     /must/ not be used.
--
-- -   #features-runtimeDescriptorArray# @runtimeDescriptorArray@ indicates
--     whether the implementation supports the SPIR-V
--     @RuntimeDescriptorArray@ capability. If this feature is not enabled,
--     descriptors /must/ not be declared in runtime arrays.
--
-- -   #features-samplerFilterMinmax# @samplerFilterMinmax@ indicates
--     whether the implementation supports a minimum set of required
--     formats supporting min\/max filtering as defined by the
--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-filterMinmaxSingleComponentFormats-minimum-requirements filterMinmaxSingleComponentFormats>
--     property minimum requirements. If this feature is not enabled, then
--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'
--     /must/ only use
--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE'.
--
-- -   #features-scalarBlockLayout# @scalarBlockLayout@ indicates that the
--     implementation supports the layout of resource blocks in shaders
--     using
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-alignment-requirements scalar alignment>.
--
-- -   #features-imagelessFramebuffer# @imagelessFramebuffer@ indicates
--     that the implementation supports specifying the image view for
--     attachments at render pass begin time via
--     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo'.
--
-- -   #features-uniformBufferStandardLayout# @uniformBufferStandardLayout@
--     indicates that the implementation supports the same layouts for
--     uniform buffers as for storage and other kinds of buffers. See
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources-standard-layout Standard Buffer Layout>.
--
-- -   #features-subgroup-extended-types# @shaderSubgroupExtendedTypes@ is
--     a boolean specifying whether subgroup operations can use 8-bit
--     integer, 16-bit integer, 64-bit integer, 16-bit floating-point, and
--     vectors of these types in
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-group-operations group operations>
--     with
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-scope-subgroup subgroup scope>,
--     if the implementation supports the types.
--
-- -   #features-separateDepthStencilLayouts# @separateDepthStencilLayouts@
--     indicates whether the implementation supports a
--     'Vulkan.Core10.OtherTypes.ImageMemoryBarrier' for a depth\/stencil
--     image with only one of
--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or
--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
--     set, and whether
--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL',
--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',
--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL',
--     or
--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'
--     can be used.
--
-- -   #features-hostQueryReset# @hostQueryReset@ indicates that the
--     implementation supports resetting queries from the host with
--     'Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset.resetQueryPool'.
--
-- -   #features-timelineSemaphore# @timelineSemaphore@ indicates whether
--     semaphores created with a
--     'Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of
--     'Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_TIMELINE' are
--     supported.
--
-- -   #features-bufferDeviceAddress# @bufferDeviceAddress@ indicates that
--     the implementation supports accessing buffer memory in shaders as
--     storage buffers via an address queried from
--     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'.
--
-- -   #features-bufferDeviceAddressCaptureReplay#
--     @bufferDeviceAddressCaptureReplay@ indicates that the implementation
--     supports saving and reusing buffer and device addresses, e.g. for
--     trace capture and replay.
--
-- -   #features-bufferDeviceAddressMultiDevice#
--     @bufferDeviceAddressMultiDevice@ indicates that the implementation
--     supports the @bufferDeviceAddress@ , @rayTracingPipeline@ and
--     @rayQuery@ features for logical devices created with multiple
--     physical devices. If this feature is not supported, buffer and
--     acceleration structure addresses /must/ not be queried on a logical
--     device created with more than one physical device.
--
-- -   #features-vulkanMemoryModel# @vulkanMemoryModel@ indicates whether
--     the Vulkan Memory Model is supported, as defined in
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-model Vulkan Memory Model>.
--     This also indicates whether shader modules /can/ declare the
--     @VulkanMemoryModel@ capability.
--
-- -   #features-vulkanMemoryModelDeviceScope#
--     @vulkanMemoryModelDeviceScope@ indicates whether the Vulkan Memory
--     Model can use 'Vulkan.Core10.Handles.Device' scope synchronization.
--     This also indicates whether shader modules /can/ declare the
--     @VulkanMemoryModelDeviceScope@ capability.
--
-- -   #features-vulkanMemoryModelAvailabilityVisibilityChains#
--     @vulkanMemoryModelAvailabilityVisibilityChains@ indicates whether
--     the Vulkan Memory Model can use
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-model-availability-visibility availability and visibility chains>
--     with more than one element.
--
-- -   #features-shaderOutputViewportIndex# @shaderOutputViewportIndex@
--     indicates whether the implementation supports the
--     @ShaderViewportIndex@ SPIR-V capability enabling variables decorated
--     with the @ViewportIndex@ built-in to be exported from mesh, vertex
--     or tessellation evaluation shaders. If this feature is not enabled,
--     the @ViewportIndex@ built-in decoration /must/ not be used on
--     outputs in mesh, vertex or tessellation evaluation shaders.
--
-- -   #features-shaderOutputLayer# @shaderOutputLayer@ indicates whether
--     the implementation supports the @ShaderLayer@ SPIR-V capability
--     enabling variables decorated with the @Layer@ built-in to be
--     exported from mesh, vertex or tessellation evaluation shaders. If
--     this feature is not enabled, the @Layer@ built-in decoration /must/
--     not be used on outputs in mesh, vertex or tessellation evaluation
--     shaders.
--
-- -   #features-subgroupBroadcastDynamicId# If
--     @subgroupBroadcastDynamicId@ is
--     'Vulkan.Core10.FundamentalTypes.TRUE', the “Id” operand of
--     @OpGroupNonUniformBroadcast@ /can/ be dynamically uniform within a
--     subgroup, and the “Index” operand of
--     @OpGroupNonUniformQuadBroadcast@ /can/ be dynamically uniform within
--     the derivative group. If it is
--     'Vulkan.Core10.FundamentalTypes.FALSE', these operands /must/ be
--     constants.
--
-- If the 'PhysicalDeviceVulkan12Features' 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. 'PhysicalDeviceVulkan12Features' /can/ also be used in the
-- @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively
-- enable these features.
--
-- == Valid Usage (Implicit)
--
-- -   #VUID-VkPhysicalDeviceVulkan12Features-sType-sType# @sType@ /must/
--     be
--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES'
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_2 VK_VERSION_1_2>,
-- 'Vulkan.Core10.FundamentalTypes.Bool32',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data PhysicalDeviceVulkan12Features = PhysicalDeviceVulkan12Features
  { -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "samplerMirrorClampToEdge"
    PhysicalDeviceVulkan12Features -> Bool
samplerMirrorClampToEdge :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "drawIndirectCount"
    PhysicalDeviceVulkan12Features -> Bool
drawIndirectCount :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "storageBuffer8BitAccess"
    PhysicalDeviceVulkan12Features -> Bool
storageBuffer8BitAccess :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "uniformAndStorageBuffer8BitAccess"
    PhysicalDeviceVulkan12Features -> Bool
uniformAndStorageBuffer8BitAccess :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "storagePushConstant8"
    PhysicalDeviceVulkan12Features -> Bool
storagePushConstant8 :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "shaderBufferInt64Atomics"
    PhysicalDeviceVulkan12Features -> Bool
shaderBufferInt64Atomics :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "shaderSharedInt64Atomics"
    PhysicalDeviceVulkan12Features -> Bool
shaderSharedInt64Atomics :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "shaderFloat16"
    PhysicalDeviceVulkan12Features -> Bool
shaderFloat16 :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "shaderInt8"
    PhysicalDeviceVulkan12Features -> Bool
shaderInt8 :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "descriptorIndexing"
    PhysicalDeviceVulkan12Features -> Bool
descriptorIndexing :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "shaderInputAttachmentArrayDynamicIndexing"
    PhysicalDeviceVulkan12Features -> Bool
shaderInputAttachmentArrayDynamicIndexing :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "shaderUniformTexelBufferArrayDynamicIndexing"
    PhysicalDeviceVulkan12Features -> Bool
shaderUniformTexelBufferArrayDynamicIndexing :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "shaderStorageTexelBufferArrayDynamicIndexing"
    PhysicalDeviceVulkan12Features -> Bool
shaderStorageTexelBufferArrayDynamicIndexing :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "shaderUniformBufferArrayNonUniformIndexing"
    PhysicalDeviceVulkan12Features -> Bool
shaderUniformBufferArrayNonUniformIndexing :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "shaderSampledImageArrayNonUniformIndexing"
    PhysicalDeviceVulkan12Features -> Bool
shaderSampledImageArrayNonUniformIndexing :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "shaderStorageBufferArrayNonUniformIndexing"
    PhysicalDeviceVulkan12Features -> Bool
shaderStorageBufferArrayNonUniformIndexing :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "shaderStorageImageArrayNonUniformIndexing"
    PhysicalDeviceVulkan12Features -> Bool
shaderStorageImageArrayNonUniformIndexing :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "shaderInputAttachmentArrayNonUniformIndexing"
    PhysicalDeviceVulkan12Features -> Bool
shaderInputAttachmentArrayNonUniformIndexing :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "shaderUniformTexelBufferArrayNonUniformIndexing"
    PhysicalDeviceVulkan12Features -> Bool
shaderUniformTexelBufferArrayNonUniformIndexing :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "shaderStorageTexelBufferArrayNonUniformIndexing"
    PhysicalDeviceVulkan12Features -> Bool
shaderStorageTexelBufferArrayNonUniformIndexing :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "descriptorBindingUniformBufferUpdateAfterBind"
    PhysicalDeviceVulkan12Features -> Bool
descriptorBindingUniformBufferUpdateAfterBind :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "descriptorBindingSampledImageUpdateAfterBind"
    PhysicalDeviceVulkan12Features -> Bool
descriptorBindingSampledImageUpdateAfterBind :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "descriptorBindingStorageImageUpdateAfterBind"
    PhysicalDeviceVulkan12Features -> Bool
descriptorBindingStorageImageUpdateAfterBind :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "descriptorBindingStorageBufferUpdateAfterBind"
    PhysicalDeviceVulkan12Features -> Bool
descriptorBindingStorageBufferUpdateAfterBind :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "descriptorBindingUniformTexelBufferUpdateAfterBind"
    PhysicalDeviceVulkan12Features -> Bool
descriptorBindingUniformTexelBufferUpdateAfterBind :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "descriptorBindingStorageTexelBufferUpdateAfterBind"
    PhysicalDeviceVulkan12Features -> Bool
descriptorBindingStorageTexelBufferUpdateAfterBind :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "descriptorBindingUpdateUnusedWhilePending"
    PhysicalDeviceVulkan12Features -> Bool
descriptorBindingUpdateUnusedWhilePending :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "descriptorBindingPartiallyBound"
    PhysicalDeviceVulkan12Features -> Bool
descriptorBindingPartiallyBound :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "descriptorBindingVariableDescriptorCount"
    PhysicalDeviceVulkan12Features -> Bool
descriptorBindingVariableDescriptorCount :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "runtimeDescriptorArray"
    PhysicalDeviceVulkan12Features -> Bool
runtimeDescriptorArray :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "samplerFilterMinmax"
    PhysicalDeviceVulkan12Features -> Bool
samplerFilterMinmax :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "scalarBlockLayout"
    PhysicalDeviceVulkan12Features -> Bool
scalarBlockLayout :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "imagelessFramebuffer"
    PhysicalDeviceVulkan12Features -> Bool
imagelessFramebuffer :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "uniformBufferStandardLayout"
    PhysicalDeviceVulkan12Features -> Bool
uniformBufferStandardLayout :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "shaderSubgroupExtendedTypes"
    PhysicalDeviceVulkan12Features -> Bool
shaderSubgroupExtendedTypes :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "separateDepthStencilLayouts"
    PhysicalDeviceVulkan12Features -> Bool
separateDepthStencilLayouts :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "hostQueryReset"
    PhysicalDeviceVulkan12Features -> Bool
hostQueryReset :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "timelineSemaphore"
    PhysicalDeviceVulkan12Features -> Bool
timelineSemaphore :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "bufferDeviceAddress"
    PhysicalDeviceVulkan12Features -> Bool
bufferDeviceAddress :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "bufferDeviceAddressCaptureReplay"
    PhysicalDeviceVulkan12Features -> Bool
bufferDeviceAddressCaptureReplay :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "bufferDeviceAddressMultiDevice"
    PhysicalDeviceVulkan12Features -> Bool
bufferDeviceAddressMultiDevice :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "vulkanMemoryModel"
    PhysicalDeviceVulkan12Features -> Bool
vulkanMemoryModel :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "vulkanMemoryModelDeviceScope"
    PhysicalDeviceVulkan12Features -> Bool
vulkanMemoryModelDeviceScope :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "vulkanMemoryModelAvailabilityVisibilityChains"
    PhysicalDeviceVulkan12Features -> Bool
vulkanMemoryModelAvailabilityVisibilityChains :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "shaderOutputViewportIndex"
    PhysicalDeviceVulkan12Features -> Bool
shaderOutputViewportIndex :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "shaderOutputLayer"
    PhysicalDeviceVulkan12Features -> Bool
shaderOutputLayer :: Bool
  , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "subgroupBroadcastDynamicId"
    PhysicalDeviceVulkan12Features -> Bool
subgroupBroadcastDynamicId :: Bool
  }
  deriving (Typeable, PhysicalDeviceVulkan12Features
-> PhysicalDeviceVulkan12Features -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PhysicalDeviceVulkan12Features
-> PhysicalDeviceVulkan12Features -> Bool
$c/= :: PhysicalDeviceVulkan12Features
-> PhysicalDeviceVulkan12Features -> Bool
== :: PhysicalDeviceVulkan12Features
-> PhysicalDeviceVulkan12Features -> Bool
$c== :: PhysicalDeviceVulkan12Features
-> PhysicalDeviceVulkan12Features -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceVulkan12Features)
#endif
deriving instance Show PhysicalDeviceVulkan12Features

instance ToCStruct PhysicalDeviceVulkan12Features where
  withCStruct :: forall b.
PhysicalDeviceVulkan12Features
-> (Ptr PhysicalDeviceVulkan12Features -> IO b) -> IO b
withCStruct PhysicalDeviceVulkan12Features
x Ptr PhysicalDeviceVulkan12Features -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
208 forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceVulkan12Features
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceVulkan12Features
p PhysicalDeviceVulkan12Features
x (Ptr PhysicalDeviceVulkan12Features -> IO b
f Ptr PhysicalDeviceVulkan12Features
p)
  pokeCStruct :: forall b.
Ptr PhysicalDeviceVulkan12Features
-> PhysicalDeviceVulkan12Features -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceVulkan12Features
p PhysicalDeviceVulkan12Features{Bool
subgroupBroadcastDynamicId :: Bool
shaderOutputLayer :: Bool
shaderOutputViewportIndex :: Bool
vulkanMemoryModelAvailabilityVisibilityChains :: Bool
vulkanMemoryModelDeviceScope :: Bool
vulkanMemoryModel :: Bool
bufferDeviceAddressMultiDevice :: Bool
bufferDeviceAddressCaptureReplay :: Bool
bufferDeviceAddress :: Bool
timelineSemaphore :: Bool
hostQueryReset :: Bool
separateDepthStencilLayouts :: Bool
shaderSubgroupExtendedTypes :: Bool
uniformBufferStandardLayout :: Bool
imagelessFramebuffer :: Bool
scalarBlockLayout :: Bool
samplerFilterMinmax :: Bool
runtimeDescriptorArray :: Bool
descriptorBindingVariableDescriptorCount :: Bool
descriptorBindingPartiallyBound :: Bool
descriptorBindingUpdateUnusedWhilePending :: Bool
descriptorBindingStorageTexelBufferUpdateAfterBind :: Bool
descriptorBindingUniformTexelBufferUpdateAfterBind :: Bool
descriptorBindingStorageBufferUpdateAfterBind :: Bool
descriptorBindingStorageImageUpdateAfterBind :: Bool
descriptorBindingSampledImageUpdateAfterBind :: Bool
descriptorBindingUniformBufferUpdateAfterBind :: Bool
shaderStorageTexelBufferArrayNonUniformIndexing :: Bool
shaderUniformTexelBufferArrayNonUniformIndexing :: Bool
shaderInputAttachmentArrayNonUniformIndexing :: Bool
shaderStorageImageArrayNonUniformIndexing :: Bool
shaderStorageBufferArrayNonUniformIndexing :: Bool
shaderSampledImageArrayNonUniformIndexing :: Bool
shaderUniformBufferArrayNonUniformIndexing :: Bool
shaderStorageTexelBufferArrayDynamicIndexing :: Bool
shaderUniformTexelBufferArrayDynamicIndexing :: Bool
shaderInputAttachmentArrayDynamicIndexing :: Bool
descriptorIndexing :: Bool
shaderInt8 :: Bool
shaderFloat16 :: Bool
shaderSharedInt64Atomics :: Bool
shaderBufferInt64Atomics :: Bool
storagePushConstant8 :: Bool
uniformAndStorageBuffer8BitAccess :: Bool
storageBuffer8BitAccess :: Bool
drawIndirectCount :: Bool
samplerMirrorClampToEdge :: Bool
$sel:subgroupBroadcastDynamicId:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:shaderOutputLayer:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:shaderOutputViewportIndex:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:vulkanMemoryModelAvailabilityVisibilityChains:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:vulkanMemoryModelDeviceScope:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:vulkanMemoryModel:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:bufferDeviceAddressMultiDevice:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:bufferDeviceAddressCaptureReplay:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:bufferDeviceAddress:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:timelineSemaphore:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:hostQueryReset:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:separateDepthStencilLayouts:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:shaderSubgroupExtendedTypes:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:uniformBufferStandardLayout:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:imagelessFramebuffer:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:scalarBlockLayout:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:samplerFilterMinmax:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:runtimeDescriptorArray:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:descriptorBindingVariableDescriptorCount:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:descriptorBindingPartiallyBound:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:descriptorBindingUpdateUnusedWhilePending:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:descriptorBindingStorageTexelBufferUpdateAfterBind:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:descriptorBindingUniformTexelBufferUpdateAfterBind:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:descriptorBindingStorageBufferUpdateAfterBind:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:descriptorBindingStorageImageUpdateAfterBind:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:descriptorBindingSampledImageUpdateAfterBind:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:descriptorBindingUniformBufferUpdateAfterBind:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:shaderStorageTexelBufferArrayNonUniformIndexing:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:shaderUniformTexelBufferArrayNonUniformIndexing:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:shaderInputAttachmentArrayNonUniformIndexing:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:shaderStorageImageArrayNonUniformIndexing:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:shaderStorageBufferArrayNonUniformIndexing:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:shaderSampledImageArrayNonUniformIndexing:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:shaderUniformBufferArrayNonUniformIndexing:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:shaderStorageTexelBufferArrayDynamicIndexing:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:shaderUniformTexelBufferArrayDynamicIndexing:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:shaderInputAttachmentArrayDynamicIndexing:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:descriptorIndexing:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:shaderInt8:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:shaderFloat16:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:shaderSharedInt64Atomics:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:shaderBufferInt64Atomics:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:storagePushConstant8:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:uniformAndStorageBuffer8BitAccess:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:storageBuffer8BitAccess:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:drawIndirectCount:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
$sel:samplerMirrorClampToEdge:PhysicalDeviceVulkan12Features :: PhysicalDeviceVulkan12Features -> Bool
..} IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
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 PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
samplerMirrorClampToEdge))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
drawIndirectCount))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
storageBuffer8BitAccess))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
uniformAndStorageBuffer8BitAccess))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
storagePushConstant8))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderBufferInt64Atomics))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderSharedInt64Atomics))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
44 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderFloat16))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderInt8))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
52 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
descriptorIndexing))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
56 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderInputAttachmentArrayDynamicIndexing))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
60 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderUniformTexelBufferArrayDynamicIndexing))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
64 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderStorageTexelBufferArrayDynamicIndexing))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
68 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderUniformBufferArrayNonUniformIndexing))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
72 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderSampledImageArrayNonUniformIndexing))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
76 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderStorageBufferArrayNonUniformIndexing))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
80 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderStorageImageArrayNonUniformIndexing))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
84 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderInputAttachmentArrayNonUniformIndexing))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
88 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderUniformTexelBufferArrayNonUniformIndexing))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
92 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderStorageTexelBufferArrayNonUniformIndexing))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
96 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
descriptorBindingUniformBufferUpdateAfterBind))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
100 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
descriptorBindingSampledImageUpdateAfterBind))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
104 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
descriptorBindingStorageImageUpdateAfterBind))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
108 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
descriptorBindingStorageBufferUpdateAfterBind))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
112 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
descriptorBindingUniformTexelBufferUpdateAfterBind))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
116 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
descriptorBindingStorageTexelBufferUpdateAfterBind))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
120 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
descriptorBindingUpdateUnusedWhilePending))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
124 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
descriptorBindingPartiallyBound))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
128 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
descriptorBindingVariableDescriptorCount))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
132 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
runtimeDescriptorArray))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
136 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
samplerFilterMinmax))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
140 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
scalarBlockLayout))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
144 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
imagelessFramebuffer))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
148 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
uniformBufferStandardLayout))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
152 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderSubgroupExtendedTypes))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
156 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
separateDepthStencilLayouts))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
160 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
hostQueryReset))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
164 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
timelineSemaphore))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
168 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
bufferDeviceAddress))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
172 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
bufferDeviceAddressCaptureReplay))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
176 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
bufferDeviceAddressMultiDevice))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
180 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
vulkanMemoryModel))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
184 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
vulkanMemoryModelDeviceScope))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
188 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
vulkanMemoryModelAvailabilityVisibilityChains))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
192 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderOutputViewportIndex))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
196 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderOutputLayer))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
200 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
subgroupBroadcastDynamicId))
    IO b
f
  cStructSize :: Int
cStructSize = Int
208
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b. Ptr PhysicalDeviceVulkan12Features -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceVulkan12Features
p IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
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 PhysicalDeviceVulkan12Features
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 PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
44 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
52 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
56 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
60 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
64 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
68 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
72 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
76 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
80 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
84 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
88 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
92 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
96 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
100 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
104 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
108 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
112 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
116 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
120 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
124 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
128 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
132 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
136 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
140 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
144 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
148 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
152 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
156 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
160 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
164 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
168 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
172 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
176 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
180 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
184 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
188 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
192 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
196 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
200 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    IO b
f

instance FromCStruct PhysicalDeviceVulkan12Features where
  peekCStruct :: Ptr PhysicalDeviceVulkan12Features
-> IO PhysicalDeviceVulkan12Features
peekCStruct Ptr PhysicalDeviceVulkan12Features
p = do
    Bool32
samplerMirrorClampToEdge <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
    Bool32
drawIndirectCount <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32))
    Bool32
storageBuffer8BitAccess <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Bool32))
    Bool32
uniformAndStorageBuffer8BitAccess <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr Bool32))
    Bool32
storagePushConstant8 <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Bool32))
    Bool32
shaderBufferInt64Atomics <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr Bool32))
    Bool32
shaderSharedInt64Atomics <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr Bool32))
    Bool32
shaderFloat16 <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
44 :: Ptr Bool32))
    Bool32
shaderInt8 <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr Bool32))
    Bool32
descriptorIndexing <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
52 :: Ptr Bool32))
    Bool32
shaderInputAttachmentArrayDynamicIndexing <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
56 :: Ptr Bool32))
    Bool32
shaderUniformTexelBufferArrayDynamicIndexing <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
60 :: Ptr Bool32))
    Bool32
shaderStorageTexelBufferArrayDynamicIndexing <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
64 :: Ptr Bool32))
    Bool32
shaderUniformBufferArrayNonUniformIndexing <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
68 :: Ptr Bool32))
    Bool32
shaderSampledImageArrayNonUniformIndexing <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
72 :: Ptr Bool32))
    Bool32
shaderStorageBufferArrayNonUniformIndexing <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
76 :: Ptr Bool32))
    Bool32
shaderStorageImageArrayNonUniformIndexing <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
80 :: Ptr Bool32))
    Bool32
shaderInputAttachmentArrayNonUniformIndexing <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
84 :: Ptr Bool32))
    Bool32
shaderUniformTexelBufferArrayNonUniformIndexing <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
88 :: Ptr Bool32))
    Bool32
shaderStorageTexelBufferArrayNonUniformIndexing <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
92 :: Ptr Bool32))
    Bool32
descriptorBindingUniformBufferUpdateAfterBind <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
96 :: Ptr Bool32))
    Bool32
descriptorBindingSampledImageUpdateAfterBind <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
100 :: Ptr Bool32))
    Bool32
descriptorBindingStorageImageUpdateAfterBind <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
104 :: Ptr Bool32))
    Bool32
descriptorBindingStorageBufferUpdateAfterBind <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
108 :: Ptr Bool32))
    Bool32
descriptorBindingUniformTexelBufferUpdateAfterBind <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
112 :: Ptr Bool32))
    Bool32
descriptorBindingStorageTexelBufferUpdateAfterBind <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
116 :: Ptr Bool32))
    Bool32
descriptorBindingUpdateUnusedWhilePending <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
120 :: Ptr Bool32))
    Bool32
descriptorBindingPartiallyBound <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
124 :: Ptr Bool32))
    Bool32
descriptorBindingVariableDescriptorCount <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
128 :: Ptr Bool32))
    Bool32
runtimeDescriptorArray <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
132 :: Ptr Bool32))
    Bool32
samplerFilterMinmax <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
136 :: Ptr Bool32))
    Bool32
scalarBlockLayout <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
140 :: Ptr Bool32))
    Bool32
imagelessFramebuffer <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
144 :: Ptr Bool32))
    Bool32
uniformBufferStandardLayout <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
148 :: Ptr Bool32))
    Bool32
shaderSubgroupExtendedTypes <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
152 :: Ptr Bool32))
    Bool32
separateDepthStencilLayouts <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
156 :: Ptr Bool32))
    Bool32
hostQueryReset <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
160 :: Ptr Bool32))
    Bool32
timelineSemaphore <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
164 :: Ptr Bool32))
    Bool32
bufferDeviceAddress <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
168 :: Ptr Bool32))
    Bool32
bufferDeviceAddressCaptureReplay <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
172 :: Ptr Bool32))
    Bool32
bufferDeviceAddressMultiDevice <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
176 :: Ptr Bool32))
    Bool32
vulkanMemoryModel <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
180 :: Ptr Bool32))
    Bool32
vulkanMemoryModelDeviceScope <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
184 :: Ptr Bool32))
    Bool32
vulkanMemoryModelAvailabilityVisibilityChains <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
188 :: Ptr Bool32))
    Bool32
shaderOutputViewportIndex <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
192 :: Ptr Bool32))
    Bool32
shaderOutputLayer <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
196 :: Ptr Bool32))
    Bool32
subgroupBroadcastDynamicId <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
200 :: Ptr Bool32))
    forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> PhysicalDeviceVulkan12Features
PhysicalDeviceVulkan12Features
             (Bool32 -> Bool
bool32ToBool Bool32
samplerMirrorClampToEdge)
             (Bool32 -> Bool
bool32ToBool Bool32
drawIndirectCount)
             (Bool32 -> Bool
bool32ToBool Bool32
storageBuffer8BitAccess)
             (Bool32 -> Bool
bool32ToBool Bool32
uniformAndStorageBuffer8BitAccess)
             (Bool32 -> Bool
bool32ToBool Bool32
storagePushConstant8)
             (Bool32 -> Bool
bool32ToBool Bool32
shaderBufferInt64Atomics)
             (Bool32 -> Bool
bool32ToBool Bool32
shaderSharedInt64Atomics)
             (Bool32 -> Bool
bool32ToBool Bool32
shaderFloat16)
             (Bool32 -> Bool
bool32ToBool Bool32
shaderInt8)
             (Bool32 -> Bool
bool32ToBool Bool32
descriptorIndexing)
             (Bool32 -> Bool
bool32ToBool Bool32
shaderInputAttachmentArrayDynamicIndexing)
             (Bool32 -> Bool
bool32ToBool Bool32
shaderUniformTexelBufferArrayDynamicIndexing)
             (Bool32 -> Bool
bool32ToBool Bool32
shaderStorageTexelBufferArrayDynamicIndexing)
             (Bool32 -> Bool
bool32ToBool Bool32
shaderUniformBufferArrayNonUniformIndexing)
             (Bool32 -> Bool
bool32ToBool Bool32
shaderSampledImageArrayNonUniformIndexing)
             (Bool32 -> Bool
bool32ToBool Bool32
shaderStorageBufferArrayNonUniformIndexing)
             (Bool32 -> Bool
bool32ToBool Bool32
shaderStorageImageArrayNonUniformIndexing)
             (Bool32 -> Bool
bool32ToBool Bool32
shaderInputAttachmentArrayNonUniformIndexing)
             (Bool32 -> Bool
bool32ToBool Bool32
shaderUniformTexelBufferArrayNonUniformIndexing)
             (Bool32 -> Bool
bool32ToBool Bool32
shaderStorageTexelBufferArrayNonUniformIndexing)
             (Bool32 -> Bool
bool32ToBool Bool32
descriptorBindingUniformBufferUpdateAfterBind)
             (Bool32 -> Bool
bool32ToBool Bool32
descriptorBindingSampledImageUpdateAfterBind)
             (Bool32 -> Bool
bool32ToBool Bool32
descriptorBindingStorageImageUpdateAfterBind)
             (Bool32 -> Bool
bool32ToBool Bool32
descriptorBindingStorageBufferUpdateAfterBind)
             (Bool32 -> Bool
bool32ToBool Bool32
descriptorBindingUniformTexelBufferUpdateAfterBind)
             (Bool32 -> Bool
bool32ToBool Bool32
descriptorBindingStorageTexelBufferUpdateAfterBind)
             (Bool32 -> Bool
bool32ToBool Bool32
descriptorBindingUpdateUnusedWhilePending)
             (Bool32 -> Bool
bool32ToBool Bool32
descriptorBindingPartiallyBound)
             (Bool32 -> Bool
bool32ToBool Bool32
descriptorBindingVariableDescriptorCount)
             (Bool32 -> Bool
bool32ToBool Bool32
runtimeDescriptorArray)
             (Bool32 -> Bool
bool32ToBool Bool32
samplerFilterMinmax)
             (Bool32 -> Bool
bool32ToBool Bool32
scalarBlockLayout)
             (Bool32 -> Bool
bool32ToBool Bool32
imagelessFramebuffer)
             (Bool32 -> Bool
bool32ToBool Bool32
uniformBufferStandardLayout)
             (Bool32 -> Bool
bool32ToBool Bool32
shaderSubgroupExtendedTypes)
             (Bool32 -> Bool
bool32ToBool Bool32
separateDepthStencilLayouts)
             (Bool32 -> Bool
bool32ToBool Bool32
hostQueryReset)
             (Bool32 -> Bool
bool32ToBool Bool32
timelineSemaphore)
             (Bool32 -> Bool
bool32ToBool Bool32
bufferDeviceAddress)
             (Bool32 -> Bool
bool32ToBool Bool32
bufferDeviceAddressCaptureReplay)
             (Bool32 -> Bool
bool32ToBool Bool32
bufferDeviceAddressMultiDevice)
             (Bool32 -> Bool
bool32ToBool Bool32
vulkanMemoryModel)
             (Bool32 -> Bool
bool32ToBool Bool32
vulkanMemoryModelDeviceScope)
             (Bool32 -> Bool
bool32ToBool Bool32
vulkanMemoryModelAvailabilityVisibilityChains)
             (Bool32 -> Bool
bool32ToBool Bool32
shaderOutputViewportIndex)
             (Bool32 -> Bool
bool32ToBool Bool32
shaderOutputLayer)
             (Bool32 -> Bool
bool32ToBool Bool32
subgroupBroadcastDynamicId)

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

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


-- | VkPhysicalDeviceVulkan12Properties - Structure specifying physical
-- device properties for functionality promoted to Vulkan 1.2
--
-- = Description
--
-- If the 'PhysicalDeviceVulkan12Properties' 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.
--
-- These properties correspond to Vulkan 1.2 functionality.
--
-- The members of 'PhysicalDeviceVulkan12Properties' /must/ have the same
-- values as the corresponding members of
-- 'Vulkan.Core12.Promoted_From_VK_KHR_driver_properties.PhysicalDeviceDriverProperties',
-- 'Vulkan.Core12.Promoted_From_VK_KHR_shader_float_controls.PhysicalDeviceFloatControlsProperties',
-- 'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties',
-- 'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties',
-- 'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.PhysicalDeviceSamplerFilterMinmaxProperties',
-- and
-- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.PhysicalDeviceTimelineSemaphoreProperties'.
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_2 VK_VERSION_1_2>,
-- 'Vulkan.Core10.FundamentalTypes.Bool32',
-- 'Vulkan.Core12.Promoted_From_VK_KHR_driver_properties.ConformanceVersion',
-- 'Vulkan.Core12.Enums.DriverId.DriverId',
-- 'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlags',
-- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlags',
-- 'Vulkan.Core12.Enums.ShaderFloatControlsIndependence.ShaderFloatControlsIndependence',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data PhysicalDeviceVulkan12Properties = PhysicalDeviceVulkan12Properties
  { -- | @driverID@ is a unique identifier for the driver of the physical device.
    PhysicalDeviceVulkan12Properties -> DriverId
driverID :: DriverId
  , -- | @driverName@ is an array of
    -- 'Vulkan.Core10.APIConstants.MAX_DRIVER_NAME_SIZE' @char@ containing a
    -- null-terminated UTF-8 string which is the name of the driver.
    PhysicalDeviceVulkan12Properties -> ByteString
driverName :: ByteString
  , -- | @driverInfo@ is an array of
    -- 'Vulkan.Core10.APIConstants.MAX_DRIVER_INFO_SIZE' @char@ containing a
    -- null-terminated UTF-8 string with additional information about the
    -- driver.
    PhysicalDeviceVulkan12Properties -> ByteString
driverInfo :: ByteString
  , -- | @conformanceVersion@ is the version of the Vulkan conformance test this
    -- driver is conformant against (see
    -- 'Vulkan.Core12.Promoted_From_VK_KHR_driver_properties.ConformanceVersion').
    PhysicalDeviceVulkan12Properties -> ConformanceVersion
conformanceVersion :: ConformanceVersion
  , -- | #features-denormBehaviorIndependence# @denormBehaviorIndependence@ is a
    -- 'Vulkan.Core12.Enums.ShaderFloatControlsIndependence.ShaderFloatControlsIndependence'
    -- value indicating whether, and how, denorm behavior can be set
    -- independently for different bit widths.
    PhysicalDeviceVulkan12Properties -> ShaderFloatControlsIndependence
denormBehaviorIndependence :: ShaderFloatControlsIndependence
  , -- | #features-roundingModeIndependence# @roundingModeIndependence@ is a
    -- 'Vulkan.Core12.Enums.ShaderFloatControlsIndependence.ShaderFloatControlsIndependence'
    -- value indicating whether, and how, rounding modes can be set
    -- independently for different bit widths.
    PhysicalDeviceVulkan12Properties -> ShaderFloatControlsIndependence
roundingModeIndependence :: ShaderFloatControlsIndependence
  , -- | #limits-shaderSignedZeroInfNanPreserveFloat16#
    -- @shaderSignedZeroInfNanPreserveFloat16@ is a boolean value indicating
    -- whether sign of a zero, Nans and \(\pm\infty\) /can/ be preserved in
    -- 16-bit floating-point computations. It also indicates whether the
    -- @SignedZeroInfNanPreserve@ execution mode /can/ be used for 16-bit
    -- floating-point types.
    PhysicalDeviceVulkan12Properties -> Bool
shaderSignedZeroInfNanPreserveFloat16 :: Bool
  , -- | #limits-shaderSignedZeroInfNanPreserveFloat32#
    -- @shaderSignedZeroInfNanPreserveFloat32@ is a boolean value indicating
    -- whether sign of a zero, Nans and \(\pm\infty\) /can/ be preserved in
    -- 32-bit floating-point computations. It also indicates whether the
    -- @SignedZeroInfNanPreserve@ execution mode /can/ be used for 32-bit
    -- floating-point types.
    PhysicalDeviceVulkan12Properties -> Bool
shaderSignedZeroInfNanPreserveFloat32 :: Bool
  , -- | #limits-shaderSignedZeroInfNanPreserveFloat64#
    -- @shaderSignedZeroInfNanPreserveFloat64@ is a boolean value indicating
    -- whether sign of a zero, Nans and \(\pm\infty\) /can/ be preserved in
    -- 64-bit floating-point computations. It also indicates whether the
    -- @SignedZeroInfNanPreserve@ execution mode /can/ be used for 64-bit
    -- floating-point types.
    PhysicalDeviceVulkan12Properties -> Bool
shaderSignedZeroInfNanPreserveFloat64 :: Bool
  , -- | #limits-shaderDenormPreserveFloat16# @shaderDenormPreserveFloat16@ is a
    -- boolean value indicating whether denormals /can/ be preserved in 16-bit
    -- floating-point computations. It also indicates whether the
    -- @DenormPreserve@ execution mode /can/ be used for 16-bit floating-point
    -- types.
    PhysicalDeviceVulkan12Properties -> Bool
shaderDenormPreserveFloat16 :: Bool
  , -- | #limits-shaderDenormPreserveFloat32# @shaderDenormPreserveFloat32@ is a
    -- boolean value indicating whether denormals /can/ be preserved in 32-bit
    -- floating-point computations. It also indicates whether the
    -- @DenormPreserve@ execution mode /can/ be used for 32-bit floating-point
    -- types.
    PhysicalDeviceVulkan12Properties -> Bool
shaderDenormPreserveFloat32 :: Bool
  , -- | #limits-shaderDenormPreserveFloat64# @shaderDenormPreserveFloat64@ is a
    -- boolean value indicating whether denormals /can/ be preserved in 64-bit
    -- floating-point computations. It also indicates whether the
    -- @DenormPreserve@ execution mode /can/ be used for 64-bit floating-point
    -- types.
    PhysicalDeviceVulkan12Properties -> Bool
shaderDenormPreserveFloat64 :: Bool
  , -- | #limits-shaderDenormFlushToZeroFloat16# @shaderDenormFlushToZeroFloat16@
    -- is a boolean value indicating whether denormals /can/ be flushed to zero
    -- in 16-bit floating-point computations. It also indicates whether the
    -- @DenormFlushToZero@ execution mode /can/ be used for 16-bit
    -- floating-point types.
    PhysicalDeviceVulkan12Properties -> Bool
shaderDenormFlushToZeroFloat16 :: Bool
  , -- | #limits-shaderDenormFlushToZeroFloat32# @shaderDenormFlushToZeroFloat32@
    -- is a boolean value indicating whether denormals /can/ be flushed to zero
    -- in 32-bit floating-point computations. It also indicates whether the
    -- @DenormFlushToZero@ execution mode /can/ be used for 32-bit
    -- floating-point types.
    PhysicalDeviceVulkan12Properties -> Bool
shaderDenormFlushToZeroFloat32 :: Bool
  , -- | #limits-shaderDenormFlushToZeroFloat64# @shaderDenormFlushToZeroFloat64@
    -- is a boolean value indicating whether denormals /can/ be flushed to zero
    -- in 64-bit floating-point computations. It also indicates whether the
    -- @DenormFlushToZero@ execution mode /can/ be used for 64-bit
    -- floating-point types.
    PhysicalDeviceVulkan12Properties -> Bool
shaderDenormFlushToZeroFloat64 :: Bool
  , -- | #limits-shaderRoundingModeRTEFloat16# @shaderRoundingModeRTEFloat16@ is
    -- a boolean value indicating whether an implementation supports the
    -- round-to-nearest-even rounding mode for 16-bit floating-point arithmetic
    -- and conversion instructions. It also indicates whether the
    -- @RoundingModeRTE@ execution mode /can/ be used for 16-bit floating-point
    -- types.
    PhysicalDeviceVulkan12Properties -> Bool
shaderRoundingModeRTEFloat16 :: Bool
  , -- | #limits-shaderRoundingModeRTEFloat32# @shaderRoundingModeRTEFloat32@ is
    -- a boolean value indicating whether an implementation supports the
    -- round-to-nearest-even rounding mode for 32-bit floating-point arithmetic
    -- and conversion instructions. It also indicates whether the
    -- @RoundingModeRTE@ execution mode /can/ be used for 32-bit floating-point
    -- types.
    PhysicalDeviceVulkan12Properties -> Bool
shaderRoundingModeRTEFloat32 :: Bool
  , -- | #limits-shaderRoundingModeRTEFloat64# @shaderRoundingModeRTEFloat64@ is
    -- a boolean value indicating whether an implementation supports the
    -- round-to-nearest-even rounding mode for 64-bit floating-point arithmetic
    -- and conversion instructions. It also indicates whether the
    -- @RoundingModeRTE@ execution mode /can/ be used for 64-bit floating-point
    -- types.
    PhysicalDeviceVulkan12Properties -> Bool
shaderRoundingModeRTEFloat64 :: Bool
  , -- | #limits-shaderRoundingModeRTZFloat16# @shaderRoundingModeRTZFloat16@ is
    -- a boolean value indicating whether an implementation supports the
    -- round-towards-zero rounding mode for 16-bit floating-point arithmetic
    -- and conversion instructions. It also indicates whether the
    -- @RoundingModeRTZ@ execution mode /can/ be used for 16-bit floating-point
    -- types.
    PhysicalDeviceVulkan12Properties -> Bool
shaderRoundingModeRTZFloat16 :: Bool
  , -- | #limits-shaderRoundingModeRTZFloat32# @shaderRoundingModeRTZFloat32@ is
    -- a boolean value indicating whether an implementation supports the
    -- round-towards-zero rounding mode for 32-bit floating-point arithmetic
    -- and conversion instructions. It also indicates whether the
    -- @RoundingModeRTZ@ execution mode /can/ be used for 32-bit floating-point
    -- types.
    PhysicalDeviceVulkan12Properties -> Bool
shaderRoundingModeRTZFloat32 :: Bool
  , -- | #limits-shaderRoundingModeRTZFloat64# @shaderRoundingModeRTZFloat64@ is
    -- a boolean value indicating whether an implementation supports the
    -- round-towards-zero rounding mode for 64-bit floating-point arithmetic
    -- and conversion instructions. It also indicates whether the
    -- @RoundingModeRTZ@ execution mode /can/ be used for 64-bit floating-point
    -- types.
    PhysicalDeviceVulkan12Properties -> Bool
shaderRoundingModeRTZFloat64 :: Bool
  , -- | #limits-maxUpdateAfterBindDescriptorsInAllPools#
    -- @maxUpdateAfterBindDescriptorsInAllPools@ is the maximum number of
    -- descriptors (summed over all descriptor types) that /can/ be created
    -- across all pools that are created with the
    -- 'Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits.DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT'
    -- bit set. Pool creation /may/ fail when this limit is exceeded, or when
    -- the space this limit represents is unable to satisfy a pool creation due
    -- to fragmentation.
    PhysicalDeviceVulkan12Properties -> Word32
maxUpdateAfterBindDescriptorsInAllPools :: Word32
  , -- | #limits-shaderUniformBufferArrayNonUniformIndexingNative#
    -- @shaderUniformBufferArrayNonUniformIndexingNative@ is a boolean value
    -- indicating whether uniform buffer descriptors natively support
    -- nonuniform indexing. If this is 'Vulkan.Core10.FundamentalTypes.FALSE',
    -- then a single dynamic instance of an instruction that nonuniformly
    -- indexes an array of uniform buffers /may/ execute multiple times in
    -- order to access all the descriptors.
    PhysicalDeviceVulkan12Properties -> Bool
shaderUniformBufferArrayNonUniformIndexingNative :: Bool
  , -- | #limits-shaderSampledImageArrayNonUniformIndexingNative#
    -- @shaderSampledImageArrayNonUniformIndexingNative@ is a boolean value
    -- indicating whether sampler and image descriptors natively support
    -- nonuniform indexing. If this is 'Vulkan.Core10.FundamentalTypes.FALSE',
    -- then a single dynamic instance of an instruction that nonuniformly
    -- indexes an array of samplers or images /may/ execute multiple times in
    -- order to access all the descriptors.
    PhysicalDeviceVulkan12Properties -> Bool
shaderSampledImageArrayNonUniformIndexingNative :: Bool
  , -- | #limits-shaderStorageBufferArrayNonUniformIndexingNative#
    -- @shaderStorageBufferArrayNonUniformIndexingNative@ is a boolean value
    -- indicating whether storage buffer descriptors natively support
    -- nonuniform indexing. If this is 'Vulkan.Core10.FundamentalTypes.FALSE',
    -- then a single dynamic instance of an instruction that nonuniformly
    -- indexes an array of storage buffers /may/ execute multiple times in
    -- order to access all the descriptors.
    PhysicalDeviceVulkan12Properties -> Bool
shaderStorageBufferArrayNonUniformIndexingNative :: Bool
  , -- | #limits-shaderStorageImageArrayNonUniformIndexingNative#
    -- @shaderStorageImageArrayNonUniformIndexingNative@ is a boolean value
    -- indicating whether storage image descriptors natively support nonuniform
    -- indexing. If this is 'Vulkan.Core10.FundamentalTypes.FALSE', then a
    -- single dynamic instance of an instruction that nonuniformly indexes an
    -- array of storage images /may/ execute multiple times in order to access
    -- all the descriptors.
    PhysicalDeviceVulkan12Properties -> Bool
shaderStorageImageArrayNonUniformIndexingNative :: Bool
  , -- | #limits-shaderInputAttachmentArrayNonUniformIndexingNative#
    -- @shaderInputAttachmentArrayNonUniformIndexingNative@ is a boolean value
    -- indicating whether input attachment descriptors natively support
    -- nonuniform indexing. If this is 'Vulkan.Core10.FundamentalTypes.FALSE',
    -- then a single dynamic instance of an instruction that nonuniformly
    -- indexes an array of input attachments /may/ execute multiple times in
    -- order to access all the descriptors.
    PhysicalDeviceVulkan12Properties -> Bool
shaderInputAttachmentArrayNonUniformIndexingNative :: Bool
  , -- | #limits-robustBufferAccessUpdateAfterBind#
    -- @robustBufferAccessUpdateAfterBind@ is a boolean value indicating
    -- whether
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
    -- /can/ be enabled on a device simultaneously with
    -- @descriptorBindingUniformBufferUpdateAfterBind@,
    -- @descriptorBindingStorageBufferUpdateAfterBind@,
    -- @descriptorBindingUniformTexelBufferUpdateAfterBind@, and\/or
    -- @descriptorBindingStorageTexelBufferUpdateAfterBind@. If this is
    -- 'Vulkan.Core10.FundamentalTypes.FALSE', then either @robustBufferAccess@
    -- /must/ be disabled or all of these update-after-bind features /must/ be
    -- disabled.
    PhysicalDeviceVulkan12Properties -> Bool
robustBufferAccessUpdateAfterBind :: Bool
  , -- | #limits-quadDivergentImplicitLod# @quadDivergentImplicitLod@ is a
    -- boolean value indicating whether implicit level of detail calculations
    -- for image operations have well-defined results when the image and\/or
    -- sampler objects used for the instruction are not uniform within a quad.
    -- See
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-derivative-image-operations Derivative Image Operations>.
    PhysicalDeviceVulkan12Properties -> Bool
quadDivergentImplicitLod :: Bool
  , -- | #limits-maxPerStageDescriptorUpdateAfterBindSamplers#
    -- @maxPerStageDescriptorUpdateAfterBindSamplers@ is similar to
    -- @maxPerStageDescriptorSamplers@ but counts descriptors from descriptor
    -- sets created with or without the
    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
    -- bit set.
    PhysicalDeviceVulkan12Properties -> Word32
maxPerStageDescriptorUpdateAfterBindSamplers :: Word32
  , -- | #limits-maxPerStageDescriptorUpdateAfterBindUniformBuffers#
    -- @maxPerStageDescriptorUpdateAfterBindUniformBuffers@ is similar to
    -- @maxPerStageDescriptorUniformBuffers@ but counts descriptors from
    -- descriptor sets created with or without the
    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
    -- bit set.
    PhysicalDeviceVulkan12Properties -> Word32
maxPerStageDescriptorUpdateAfterBindUniformBuffers :: Word32
  , -- | #limits-maxPerStageDescriptorUpdateAfterBindStorageBuffers#
    -- @maxPerStageDescriptorUpdateAfterBindStorageBuffers@ is similar to
    -- @maxPerStageDescriptorStorageBuffers@ but counts descriptors from
    -- descriptor sets created with or without the
    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
    -- bit set.
    PhysicalDeviceVulkan12Properties -> Word32
maxPerStageDescriptorUpdateAfterBindStorageBuffers :: Word32
  , -- | #limits-maxPerStageDescriptorUpdateAfterBindSampledImages#
    -- @maxPerStageDescriptorUpdateAfterBindSampledImages@ is similar to
    -- @maxPerStageDescriptorSampledImages@ but counts descriptors from
    -- descriptor sets created with or without the
    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
    -- bit set.
    PhysicalDeviceVulkan12Properties -> Word32
maxPerStageDescriptorUpdateAfterBindSampledImages :: Word32
  , -- | #limits-maxPerStageDescriptorUpdateAfterBindStorageImages#
    -- @maxPerStageDescriptorUpdateAfterBindStorageImages@ is similar to
    -- @maxPerStageDescriptorStorageImages@ but counts descriptors from
    -- descriptor sets created with or without the
    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
    -- bit set.
    PhysicalDeviceVulkan12Properties -> Word32
maxPerStageDescriptorUpdateAfterBindStorageImages :: Word32
  , -- | #limits-maxPerStageDescriptorUpdateAfterBindInputAttachments#
    -- @maxPerStageDescriptorUpdateAfterBindInputAttachments@ is similar to
    -- @maxPerStageDescriptorInputAttachments@ but counts descriptors from
    -- descriptor sets created with or without the
    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
    -- bit set.
    PhysicalDeviceVulkan12Properties -> Word32
maxPerStageDescriptorUpdateAfterBindInputAttachments :: Word32
  , -- | #limits-maxPerStageUpdateAfterBindResources#
    -- @maxPerStageUpdateAfterBindResources@ is similar to
    -- @maxPerStageResources@ but counts descriptors from descriptor sets
    -- created with or without the
    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
    -- bit set.
    PhysicalDeviceVulkan12Properties -> Word32
maxPerStageUpdateAfterBindResources :: Word32
  , -- | #limits-maxDescriptorSetUpdateAfterBindSamplers#
    -- @maxDescriptorSetUpdateAfterBindSamplers@ is similar to
    -- @maxDescriptorSetSamplers@ but counts descriptors from descriptor sets
    -- created with or without the
    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
    -- bit set.
    PhysicalDeviceVulkan12Properties -> Word32
maxDescriptorSetUpdateAfterBindSamplers :: Word32
  , -- | #limits-maxDescriptorSetUpdateAfterBindUniformBuffers#
    -- @maxDescriptorSetUpdateAfterBindUniformBuffers@ is similar to
    -- @maxDescriptorSetUniformBuffers@ but counts descriptors from descriptor
    -- sets created with or without the
    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
    -- bit set.
    PhysicalDeviceVulkan12Properties -> Word32
maxDescriptorSetUpdateAfterBindUniformBuffers :: Word32
  , -- | #limits-maxDescriptorSetUpdateAfterBindUniformBuffersDynamic#
    -- @maxDescriptorSetUpdateAfterBindUniformBuffersDynamic@ is similar to
    -- @maxDescriptorSetUniformBuffersDynamic@ but counts descriptors from
    -- descriptor sets created with or without the
    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
    -- bit set. While an application /can/ allocate dynamic uniform buffer
    -- descriptors from a pool created with the
    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT',
    -- bindings for these descriptors /must/ not be present in any descriptor
    -- set layout that includes bindings created with
    -- 'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'.
    PhysicalDeviceVulkan12Properties -> Word32
maxDescriptorSetUpdateAfterBindUniformBuffersDynamic :: Word32
  , -- | #limits-maxDescriptorSetUpdateAfterBindStorageBuffers#
    -- @maxDescriptorSetUpdateAfterBindStorageBuffers@ is similar to
    -- @maxDescriptorSetStorageBuffers@ but counts descriptors from descriptor
    -- sets created with or without the
    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
    -- bit set.
    PhysicalDeviceVulkan12Properties -> Word32
maxDescriptorSetUpdateAfterBindStorageBuffers :: Word32
  , -- | #limits-maxDescriptorSetUpdateAfterBindStorageBuffersDynamic#
    -- @maxDescriptorSetUpdateAfterBindStorageBuffersDynamic@ is similar to
    -- @maxDescriptorSetStorageBuffersDynamic@ but counts descriptors from
    -- descriptor sets created with or without the
    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
    -- bit set. While an application /can/ allocate dynamic storage buffer
    -- descriptors from a pool created with the
    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT',
    -- bindings for these descriptors /must/ not be present in any descriptor
    -- set layout that includes bindings created with
    -- 'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'.
    PhysicalDeviceVulkan12Properties -> Word32
maxDescriptorSetUpdateAfterBindStorageBuffersDynamic :: Word32
  , -- | #limits-maxDescriptorSetUpdateAfterBindSampledImages#
    -- @maxDescriptorSetUpdateAfterBindSampledImages@ is similar to
    -- @maxDescriptorSetSampledImages@ but counts descriptors from descriptor
    -- sets created with or without the
    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
    -- bit set.
    PhysicalDeviceVulkan12Properties -> Word32
maxDescriptorSetUpdateAfterBindSampledImages :: Word32
  , -- | #limits-maxDescriptorSetUpdateAfterBindStorageImages#
    -- @maxDescriptorSetUpdateAfterBindStorageImages@ is similar to
    -- @maxDescriptorSetStorageImages@ but counts descriptors from descriptor
    -- sets created with or without the
    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
    -- bit set.
    PhysicalDeviceVulkan12Properties -> Word32
maxDescriptorSetUpdateAfterBindStorageImages :: Word32
  , -- | #limits-maxDescriptorSetUpdateAfterBindInputAttachments#
    -- @maxDescriptorSetUpdateAfterBindInputAttachments@ is similar to
    -- @maxDescriptorSetInputAttachments@ but counts descriptors from
    -- descriptor sets created with or without the
    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
    -- bit set.
    PhysicalDeviceVulkan12Properties -> Word32
maxDescriptorSetUpdateAfterBindInputAttachments :: Word32
  , -- | #features-depthResolveModes# @supportedDepthResolveModes@ is a bitmask
    -- of 'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits'
    -- indicating the set of supported depth resolve modes.
    -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_SAMPLE_ZERO_BIT'
    -- /must/ be included in the set but implementations /may/ support
    -- additional modes.
    PhysicalDeviceVulkan12Properties -> ResolveModeFlags
supportedDepthResolveModes :: ResolveModeFlags
  , -- | #features-stencilResolveModes# @supportedStencilResolveModes@ is a
    -- bitmask of 'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits'
    -- indicating the set of supported stencil resolve modes.
    -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_SAMPLE_ZERO_BIT'
    -- /must/ be included in the set but implementations /may/ support
    -- additional modes.
    -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_AVERAGE_BIT'
    -- /must/ not be included in the set.
    PhysicalDeviceVulkan12Properties -> ResolveModeFlags
supportedStencilResolveModes :: ResolveModeFlags
  , -- | #features-independentResolveNone# @independentResolveNone@ is
    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the implementation supports
    -- setting the depth and stencil resolve modes to different values when one
    -- of those modes is
    -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE'. Otherwise
    -- the implementation only supports setting both modes to the same value.
    PhysicalDeviceVulkan12Properties -> Bool
independentResolveNone :: Bool
  , -- | #features-independentResolve# @independentResolve@ is
    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the implementation supports all
    -- combinations of the supported depth and stencil resolve modes, including
    -- setting either depth or stencil resolve mode to
    -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE'. An
    -- implementation that supports @independentResolve@ /must/ also support
    -- @independentResolveNone@.
    PhysicalDeviceVulkan12Properties -> Bool
independentResolve :: Bool
  , -- | #limits-filterMinmaxSingleComponentFormats#
    -- @filterMinmaxSingleComponentFormats@ is a boolean value indicating
    -- whether a minimum set of required formats support min\/max filtering.
    PhysicalDeviceVulkan12Properties -> Bool
filterMinmaxSingleComponentFormats :: Bool
  , -- | #limits-filterMinmaxImageComponentMapping#
    -- @filterMinmaxImageComponentMapping@ is a boolean value indicating
    -- whether the implementation supports non-identity component mapping of
    -- the image when doing min\/max filtering.
    PhysicalDeviceVulkan12Properties -> Bool
filterMinmaxImageComponentMapping :: Bool
  , -- | #limits-maxTimelineSemaphoreValueDifference#
    -- @maxTimelineSemaphoreValueDifference@ indicates the maximum difference
    -- allowed by the implementation between the current value of a timeline
    -- semaphore and any pending signal or wait operations.
    PhysicalDeviceVulkan12Properties -> DeviceSize
maxTimelineSemaphoreValueDifference :: Word64
  , -- | #limits-framebufferIntegerColorSampleCounts#
    -- @framebufferIntegerColorSampleCounts@ is a bitmask of
    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' indicating
    -- the color sample counts that are supported for all framebuffer color
    -- attachments with integer formats.
    PhysicalDeviceVulkan12Properties -> SampleCountFlags
framebufferIntegerColorSampleCounts :: SampleCountFlags
  }
  deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceVulkan12Properties)
#endif
deriving instance Show PhysicalDeviceVulkan12Properties

instance ToCStruct PhysicalDeviceVulkan12Properties where
  withCStruct :: forall b.
PhysicalDeviceVulkan12Properties
-> (Ptr PhysicalDeviceVulkan12Properties -> IO b) -> IO b
withCStruct PhysicalDeviceVulkan12Properties
x Ptr PhysicalDeviceVulkan12Properties -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
736 forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceVulkan12Properties
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceVulkan12Properties
p PhysicalDeviceVulkan12Properties
x (Ptr PhysicalDeviceVulkan12Properties -> IO b
f Ptr PhysicalDeviceVulkan12Properties
p)
  pokeCStruct :: forall b.
Ptr PhysicalDeviceVulkan12Properties
-> PhysicalDeviceVulkan12Properties -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceVulkan12Properties
p PhysicalDeviceVulkan12Properties{Bool
Word32
DeviceSize
ByteString
SampleCountFlags
ConformanceVersion
ShaderFloatControlsIndependence
DriverId
ResolveModeFlags
framebufferIntegerColorSampleCounts :: SampleCountFlags
maxTimelineSemaphoreValueDifference :: DeviceSize
filterMinmaxImageComponentMapping :: Bool
filterMinmaxSingleComponentFormats :: Bool
independentResolve :: Bool
independentResolveNone :: Bool
supportedStencilResolveModes :: ResolveModeFlags
supportedDepthResolveModes :: ResolveModeFlags
maxDescriptorSetUpdateAfterBindInputAttachments :: Word32
maxDescriptorSetUpdateAfterBindStorageImages :: Word32
maxDescriptorSetUpdateAfterBindSampledImages :: Word32
maxDescriptorSetUpdateAfterBindStorageBuffersDynamic :: Word32
maxDescriptorSetUpdateAfterBindStorageBuffers :: Word32
maxDescriptorSetUpdateAfterBindUniformBuffersDynamic :: Word32
maxDescriptorSetUpdateAfterBindUniformBuffers :: Word32
maxDescriptorSetUpdateAfterBindSamplers :: Word32
maxPerStageUpdateAfterBindResources :: Word32
maxPerStageDescriptorUpdateAfterBindInputAttachments :: Word32
maxPerStageDescriptorUpdateAfterBindStorageImages :: Word32
maxPerStageDescriptorUpdateAfterBindSampledImages :: Word32
maxPerStageDescriptorUpdateAfterBindStorageBuffers :: Word32
maxPerStageDescriptorUpdateAfterBindUniformBuffers :: Word32
maxPerStageDescriptorUpdateAfterBindSamplers :: Word32
quadDivergentImplicitLod :: Bool
robustBufferAccessUpdateAfterBind :: Bool
shaderInputAttachmentArrayNonUniformIndexingNative :: Bool
shaderStorageImageArrayNonUniformIndexingNative :: Bool
shaderStorageBufferArrayNonUniformIndexingNative :: Bool
shaderSampledImageArrayNonUniformIndexingNative :: Bool
shaderUniformBufferArrayNonUniformIndexingNative :: Bool
maxUpdateAfterBindDescriptorsInAllPools :: Word32
shaderRoundingModeRTZFloat64 :: Bool
shaderRoundingModeRTZFloat32 :: Bool
shaderRoundingModeRTZFloat16 :: Bool
shaderRoundingModeRTEFloat64 :: Bool
shaderRoundingModeRTEFloat32 :: Bool
shaderRoundingModeRTEFloat16 :: Bool
shaderDenormFlushToZeroFloat64 :: Bool
shaderDenormFlushToZeroFloat32 :: Bool
shaderDenormFlushToZeroFloat16 :: Bool
shaderDenormPreserveFloat64 :: Bool
shaderDenormPreserveFloat32 :: Bool
shaderDenormPreserveFloat16 :: Bool
shaderSignedZeroInfNanPreserveFloat64 :: Bool
shaderSignedZeroInfNanPreserveFloat32 :: Bool
shaderSignedZeroInfNanPreserveFloat16 :: Bool
roundingModeIndependence :: ShaderFloatControlsIndependence
denormBehaviorIndependence :: ShaderFloatControlsIndependence
conformanceVersion :: ConformanceVersion
driverInfo :: ByteString
driverName :: ByteString
driverID :: DriverId
$sel:framebufferIntegerColorSampleCounts:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> SampleCountFlags
$sel:maxTimelineSemaphoreValueDifference:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> DeviceSize
$sel:filterMinmaxImageComponentMapping:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Bool
$sel:filterMinmaxSingleComponentFormats:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Bool
$sel:independentResolve:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Bool
$sel:independentResolveNone:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Bool
$sel:supportedStencilResolveModes:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> ResolveModeFlags
$sel:supportedDepthResolveModes:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> ResolveModeFlags
$sel:maxDescriptorSetUpdateAfterBindInputAttachments:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Word32
$sel:maxDescriptorSetUpdateAfterBindStorageImages:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Word32
$sel:maxDescriptorSetUpdateAfterBindSampledImages:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Word32
$sel:maxDescriptorSetUpdateAfterBindStorageBuffersDynamic:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Word32
$sel:maxDescriptorSetUpdateAfterBindStorageBuffers:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Word32
$sel:maxDescriptorSetUpdateAfterBindUniformBuffersDynamic:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Word32
$sel:maxDescriptorSetUpdateAfterBindUniformBuffers:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Word32
$sel:maxDescriptorSetUpdateAfterBindSamplers:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Word32
$sel:maxPerStageUpdateAfterBindResources:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Word32
$sel:maxPerStageDescriptorUpdateAfterBindInputAttachments:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Word32
$sel:maxPerStageDescriptorUpdateAfterBindStorageImages:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Word32
$sel:maxPerStageDescriptorUpdateAfterBindSampledImages:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Word32
$sel:maxPerStageDescriptorUpdateAfterBindStorageBuffers:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Word32
$sel:maxPerStageDescriptorUpdateAfterBindUniformBuffers:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Word32
$sel:maxPerStageDescriptorUpdateAfterBindSamplers:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Word32
$sel:quadDivergentImplicitLod:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Bool
$sel:robustBufferAccessUpdateAfterBind:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Bool
$sel:shaderInputAttachmentArrayNonUniformIndexingNative:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Bool
$sel:shaderStorageImageArrayNonUniformIndexingNative:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Bool
$sel:shaderStorageBufferArrayNonUniformIndexingNative:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Bool
$sel:shaderSampledImageArrayNonUniformIndexingNative:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Bool
$sel:shaderUniformBufferArrayNonUniformIndexingNative:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Bool
$sel:maxUpdateAfterBindDescriptorsInAllPools:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Word32
$sel:shaderRoundingModeRTZFloat64:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Bool
$sel:shaderRoundingModeRTZFloat32:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Bool
$sel:shaderRoundingModeRTZFloat16:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Bool
$sel:shaderRoundingModeRTEFloat64:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Bool
$sel:shaderRoundingModeRTEFloat32:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Bool
$sel:shaderRoundingModeRTEFloat16:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Bool
$sel:shaderDenormFlushToZeroFloat64:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Bool
$sel:shaderDenormFlushToZeroFloat32:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Bool
$sel:shaderDenormFlushToZeroFloat16:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Bool
$sel:shaderDenormPreserveFloat64:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Bool
$sel:shaderDenormPreserveFloat32:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Bool
$sel:shaderDenormPreserveFloat16:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Bool
$sel:shaderSignedZeroInfNanPreserveFloat64:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Bool
$sel:shaderSignedZeroInfNanPreserveFloat32:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Bool
$sel:shaderSignedZeroInfNanPreserveFloat16:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> Bool
$sel:roundingModeIndependence:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> ShaderFloatControlsIndependence
$sel:denormBehaviorIndependence:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> ShaderFloatControlsIndependence
$sel:conformanceVersion:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> ConformanceVersion
$sel:driverInfo:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> ByteString
$sel:driverName:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> ByteString
$sel:driverID:PhysicalDeviceVulkan12Properties :: PhysicalDeviceVulkan12Properties -> DriverId
..} IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
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 PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr DriverId)) (DriverId
driverID)
    forall (n :: Nat).
KnownNat n =>
Ptr (FixedArray n CChar) -> ByteString -> IO ()
pokeFixedLengthNullTerminatedByteString ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr (FixedArray MAX_DRIVER_NAME_SIZE CChar))) (ByteString
driverName)
    forall (n :: Nat).
KnownNat n =>
Ptr (FixedArray n CChar) -> ByteString -> IO ()
pokeFixedLengthNullTerminatedByteString ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
276 :: Ptr (FixedArray MAX_DRIVER_INFO_SIZE CChar))) (ByteString
driverInfo)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
532 :: Ptr ConformanceVersion)) (ConformanceVersion
conformanceVersion)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
536 :: Ptr ShaderFloatControlsIndependence)) (ShaderFloatControlsIndependence
denormBehaviorIndependence)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
540 :: Ptr ShaderFloatControlsIndependence)) (ShaderFloatControlsIndependence
roundingModeIndependence)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
544 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderSignedZeroInfNanPreserveFloat16))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
548 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderSignedZeroInfNanPreserveFloat32))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
552 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderSignedZeroInfNanPreserveFloat64))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
556 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderDenormPreserveFloat16))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
560 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderDenormPreserveFloat32))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
564 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderDenormPreserveFloat64))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
568 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderDenormFlushToZeroFloat16))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
572 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderDenormFlushToZeroFloat32))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
576 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderDenormFlushToZeroFloat64))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
580 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderRoundingModeRTEFloat16))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
584 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderRoundingModeRTEFloat32))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
588 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderRoundingModeRTEFloat64))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
592 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderRoundingModeRTZFloat16))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
596 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderRoundingModeRTZFloat32))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
600 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderRoundingModeRTZFloat64))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
604 :: Ptr Word32)) (Word32
maxUpdateAfterBindDescriptorsInAllPools)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
608 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderUniformBufferArrayNonUniformIndexingNative))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
612 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderSampledImageArrayNonUniformIndexingNative))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
616 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderStorageBufferArrayNonUniformIndexingNative))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
620 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderStorageImageArrayNonUniformIndexingNative))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
624 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderInputAttachmentArrayNonUniformIndexingNative))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
628 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
robustBufferAccessUpdateAfterBind))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
632 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
quadDivergentImplicitLod))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
636 :: Ptr Word32)) (Word32
maxPerStageDescriptorUpdateAfterBindSamplers)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
640 :: Ptr Word32)) (Word32
maxPerStageDescriptorUpdateAfterBindUniformBuffers)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
644 :: Ptr Word32)) (Word32
maxPerStageDescriptorUpdateAfterBindStorageBuffers)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
648 :: Ptr Word32)) (Word32
maxPerStageDescriptorUpdateAfterBindSampledImages)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
652 :: Ptr Word32)) (Word32
maxPerStageDescriptorUpdateAfterBindStorageImages)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
656 :: Ptr Word32)) (Word32
maxPerStageDescriptorUpdateAfterBindInputAttachments)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
660 :: Ptr Word32)) (Word32
maxPerStageUpdateAfterBindResources)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
664 :: Ptr Word32)) (Word32
maxDescriptorSetUpdateAfterBindSamplers)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
668 :: Ptr Word32)) (Word32
maxDescriptorSetUpdateAfterBindUniformBuffers)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
672 :: Ptr Word32)) (Word32
maxDescriptorSetUpdateAfterBindUniformBuffersDynamic)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
676 :: Ptr Word32)) (Word32
maxDescriptorSetUpdateAfterBindStorageBuffers)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
680 :: Ptr Word32)) (Word32
maxDescriptorSetUpdateAfterBindStorageBuffersDynamic)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
684 :: Ptr Word32)) (Word32
maxDescriptorSetUpdateAfterBindSampledImages)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
688 :: Ptr Word32)) (Word32
maxDescriptorSetUpdateAfterBindStorageImages)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
692 :: Ptr Word32)) (Word32
maxDescriptorSetUpdateAfterBindInputAttachments)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
696 :: Ptr ResolveModeFlags)) (ResolveModeFlags
supportedDepthResolveModes)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
700 :: Ptr ResolveModeFlags)) (ResolveModeFlags
supportedStencilResolveModes)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
704 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
independentResolveNone))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
708 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
independentResolve))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
712 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
filterMinmaxSingleComponentFormats))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
716 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
filterMinmaxImageComponentMapping))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
720 :: Ptr Word64)) (DeviceSize
maxTimelineSemaphoreValueDifference)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
728 :: Ptr SampleCountFlags)) (SampleCountFlags
framebufferIntegerColorSampleCounts)
    IO b
f
  cStructSize :: Int
cStructSize = Int
736
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b. Ptr PhysicalDeviceVulkan12Properties -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceVulkan12Properties
p IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
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 PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr DriverId)) (forall a. Zero a => a
zero)
    forall (n :: Nat).
KnownNat n =>
Ptr (FixedArray n CChar) -> ByteString -> IO ()
pokeFixedLengthNullTerminatedByteString ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr (FixedArray MAX_DRIVER_NAME_SIZE CChar))) (forall a. Monoid a => a
mempty)
    forall (n :: Nat).
KnownNat n =>
Ptr (FixedArray n CChar) -> ByteString -> IO ()
pokeFixedLengthNullTerminatedByteString ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
276 :: Ptr (FixedArray MAX_DRIVER_INFO_SIZE CChar))) (forall a. Monoid a => a
mempty)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
532 :: Ptr ConformanceVersion)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
536 :: Ptr ShaderFloatControlsIndependence)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
540 :: Ptr ShaderFloatControlsIndependence)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
544 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
548 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
552 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
556 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
560 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
564 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
568 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
572 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
576 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
580 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
584 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
588 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
592 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
596 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
600 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
604 :: Ptr Word32)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
608 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
612 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
616 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
620 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
624 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
628 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
632 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
636 :: Ptr Word32)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
640 :: Ptr Word32)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
644 :: Ptr Word32)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
648 :: Ptr Word32)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
652 :: Ptr Word32)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
656 :: Ptr Word32)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
660 :: Ptr Word32)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
664 :: Ptr Word32)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
668 :: Ptr Word32)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
672 :: Ptr Word32)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
676 :: Ptr Word32)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
680 :: Ptr Word32)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
684 :: Ptr Word32)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
688 :: Ptr Word32)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
692 :: Ptr Word32)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
696 :: Ptr ResolveModeFlags)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
700 :: Ptr ResolveModeFlags)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
704 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
708 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
712 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
716 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
720 :: Ptr Word64)) (forall a. Zero a => a
zero)
    IO b
f

instance FromCStruct PhysicalDeviceVulkan12Properties where
  peekCStruct :: Ptr PhysicalDeviceVulkan12Properties
-> IO PhysicalDeviceVulkan12Properties
peekCStruct Ptr PhysicalDeviceVulkan12Properties
p = do
    DriverId
driverID <- forall a. Storable a => Ptr a -> IO a
peek @DriverId ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr DriverId))
    ByteString
driverName <- CString -> IO ByteString
packCString (forall a (n :: Nat). Ptr (FixedArray n a) -> Ptr a
lowerArrayPtr ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr (FixedArray MAX_DRIVER_NAME_SIZE CChar))))
    ByteString
driverInfo <- CString -> IO ByteString
packCString (forall a (n :: Nat). Ptr (FixedArray n a) -> Ptr a
lowerArrayPtr ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
276 :: Ptr (FixedArray MAX_DRIVER_INFO_SIZE CChar))))
    ConformanceVersion
conformanceVersion <- forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @ConformanceVersion ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
532 :: Ptr ConformanceVersion))
    ShaderFloatControlsIndependence
denormBehaviorIndependence <- forall a. Storable a => Ptr a -> IO a
peek @ShaderFloatControlsIndependence ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
536 :: Ptr ShaderFloatControlsIndependence))
    ShaderFloatControlsIndependence
roundingModeIndependence <- forall a. Storable a => Ptr a -> IO a
peek @ShaderFloatControlsIndependence ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
540 :: Ptr ShaderFloatControlsIndependence))
    Bool32
shaderSignedZeroInfNanPreserveFloat16 <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
544 :: Ptr Bool32))
    Bool32
shaderSignedZeroInfNanPreserveFloat32 <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
548 :: Ptr Bool32))
    Bool32
shaderSignedZeroInfNanPreserveFloat64 <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
552 :: Ptr Bool32))
    Bool32
shaderDenormPreserveFloat16 <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
556 :: Ptr Bool32))
    Bool32
shaderDenormPreserveFloat32 <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
560 :: Ptr Bool32))
    Bool32
shaderDenormPreserveFloat64 <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
564 :: Ptr Bool32))
    Bool32
shaderDenormFlushToZeroFloat16 <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
568 :: Ptr Bool32))
    Bool32
shaderDenormFlushToZeroFloat32 <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
572 :: Ptr Bool32))
    Bool32
shaderDenormFlushToZeroFloat64 <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
576 :: Ptr Bool32))
    Bool32
shaderRoundingModeRTEFloat16 <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
580 :: Ptr Bool32))
    Bool32
shaderRoundingModeRTEFloat32 <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
584 :: Ptr Bool32))
    Bool32
shaderRoundingModeRTEFloat64 <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
588 :: Ptr Bool32))
    Bool32
shaderRoundingModeRTZFloat16 <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
592 :: Ptr Bool32))
    Bool32
shaderRoundingModeRTZFloat32 <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
596 :: Ptr Bool32))
    Bool32
shaderRoundingModeRTZFloat64 <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
600 :: Ptr Bool32))
    Word32
maxUpdateAfterBindDescriptorsInAllPools <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
604 :: Ptr Word32))
    Bool32
shaderUniformBufferArrayNonUniformIndexingNative <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
608 :: Ptr Bool32))
    Bool32
shaderSampledImageArrayNonUniformIndexingNative <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
612 :: Ptr Bool32))
    Bool32
shaderStorageBufferArrayNonUniformIndexingNative <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
616 :: Ptr Bool32))
    Bool32
shaderStorageImageArrayNonUniformIndexingNative <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
620 :: Ptr Bool32))
    Bool32
shaderInputAttachmentArrayNonUniformIndexingNative <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
624 :: Ptr Bool32))
    Bool32
robustBufferAccessUpdateAfterBind <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
628 :: Ptr Bool32))
    Bool32
quadDivergentImplicitLod <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
632 :: Ptr Bool32))
    Word32
maxPerStageDescriptorUpdateAfterBindSamplers <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
636 :: Ptr Word32))
    Word32
maxPerStageDescriptorUpdateAfterBindUniformBuffers <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
640 :: Ptr Word32))
    Word32
maxPerStageDescriptorUpdateAfterBindStorageBuffers <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
644 :: Ptr Word32))
    Word32
maxPerStageDescriptorUpdateAfterBindSampledImages <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
648 :: Ptr Word32))
    Word32
maxPerStageDescriptorUpdateAfterBindStorageImages <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
652 :: Ptr Word32))
    Word32
maxPerStageDescriptorUpdateAfterBindInputAttachments <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
656 :: Ptr Word32))
    Word32
maxPerStageUpdateAfterBindResources <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
660 :: Ptr Word32))
    Word32
maxDescriptorSetUpdateAfterBindSamplers <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
664 :: Ptr Word32))
    Word32
maxDescriptorSetUpdateAfterBindUniformBuffers <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
668 :: Ptr Word32))
    Word32
maxDescriptorSetUpdateAfterBindUniformBuffersDynamic <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
672 :: Ptr Word32))
    Word32
maxDescriptorSetUpdateAfterBindStorageBuffers <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
676 :: Ptr Word32))
    Word32
maxDescriptorSetUpdateAfterBindStorageBuffersDynamic <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
680 :: Ptr Word32))
    Word32
maxDescriptorSetUpdateAfterBindSampledImages <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
684 :: Ptr Word32))
    Word32
maxDescriptorSetUpdateAfterBindStorageImages <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
688 :: Ptr Word32))
    Word32
maxDescriptorSetUpdateAfterBindInputAttachments <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
692 :: Ptr Word32))
    ResolveModeFlags
supportedDepthResolveModes <- forall a. Storable a => Ptr a -> IO a
peek @ResolveModeFlags ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
696 :: Ptr ResolveModeFlags))
    ResolveModeFlags
supportedStencilResolveModes <- forall a. Storable a => Ptr a -> IO a
peek @ResolveModeFlags ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
700 :: Ptr ResolveModeFlags))
    Bool32
independentResolveNone <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
704 :: Ptr Bool32))
    Bool32
independentResolve <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
708 :: Ptr Bool32))
    Bool32
filterMinmaxSingleComponentFormats <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
712 :: Ptr Bool32))
    Bool32
filterMinmaxImageComponentMapping <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
716 :: Ptr Bool32))
    DeviceSize
maxTimelineSemaphoreValueDifference <- forall a. Storable a => Ptr a -> IO a
peek @Word64 ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
720 :: Ptr Word64))
    SampleCountFlags
framebufferIntegerColorSampleCounts <- forall a. Storable a => Ptr a -> IO a
peek @SampleCountFlags ((Ptr PhysicalDeviceVulkan12Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
728 :: Ptr SampleCountFlags))
    forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ DriverId
-> ByteString
-> ByteString
-> ConformanceVersion
-> ShaderFloatControlsIndependence
-> ShaderFloatControlsIndependence
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Word32
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> ResolveModeFlags
-> ResolveModeFlags
-> Bool
-> Bool
-> Bool
-> Bool
-> DeviceSize
-> SampleCountFlags
-> PhysicalDeviceVulkan12Properties
PhysicalDeviceVulkan12Properties
             DriverId
driverID
             ByteString
driverName
             ByteString
driverInfo
             ConformanceVersion
conformanceVersion
             ShaderFloatControlsIndependence
denormBehaviorIndependence
             ShaderFloatControlsIndependence
roundingModeIndependence
             (Bool32 -> Bool
bool32ToBool Bool32
shaderSignedZeroInfNanPreserveFloat16)
             (Bool32 -> Bool
bool32ToBool Bool32
shaderSignedZeroInfNanPreserveFloat32)
             (Bool32 -> Bool
bool32ToBool Bool32
shaderSignedZeroInfNanPreserveFloat64)
             (Bool32 -> Bool
bool32ToBool Bool32
shaderDenormPreserveFloat16)
             (Bool32 -> Bool
bool32ToBool Bool32
shaderDenormPreserveFloat32)
             (Bool32 -> Bool
bool32ToBool Bool32
shaderDenormPreserveFloat64)
             (Bool32 -> Bool
bool32ToBool Bool32
shaderDenormFlushToZeroFloat16)
             (Bool32 -> Bool
bool32ToBool Bool32
shaderDenormFlushToZeroFloat32)
             (Bool32 -> Bool
bool32ToBool Bool32
shaderDenormFlushToZeroFloat64)
             (Bool32 -> Bool
bool32ToBool Bool32
shaderRoundingModeRTEFloat16)
             (Bool32 -> Bool
bool32ToBool Bool32
shaderRoundingModeRTEFloat32)
             (Bool32 -> Bool
bool32ToBool Bool32
shaderRoundingModeRTEFloat64)
             (Bool32 -> Bool
bool32ToBool Bool32
shaderRoundingModeRTZFloat16)
             (Bool32 -> Bool
bool32ToBool Bool32
shaderRoundingModeRTZFloat32)
             (Bool32 -> Bool
bool32ToBool Bool32
shaderRoundingModeRTZFloat64)
             Word32
maxUpdateAfterBindDescriptorsInAllPools
             (Bool32 -> Bool
bool32ToBool Bool32
shaderUniformBufferArrayNonUniformIndexingNative)
             (Bool32 -> Bool
bool32ToBool Bool32
shaderSampledImageArrayNonUniformIndexingNative)
             (Bool32 -> Bool
bool32ToBool Bool32
shaderStorageBufferArrayNonUniformIndexingNative)
             (Bool32 -> Bool
bool32ToBool Bool32
shaderStorageImageArrayNonUniformIndexingNative)
             (Bool32 -> Bool
bool32ToBool Bool32
shaderInputAttachmentArrayNonUniformIndexingNative)
             (Bool32 -> Bool
bool32ToBool Bool32
robustBufferAccessUpdateAfterBind)
             (Bool32 -> Bool
bool32ToBool Bool32
quadDivergentImplicitLod)
             Word32
maxPerStageDescriptorUpdateAfterBindSamplers
             Word32
maxPerStageDescriptorUpdateAfterBindUniformBuffers
             Word32
maxPerStageDescriptorUpdateAfterBindStorageBuffers
             Word32
maxPerStageDescriptorUpdateAfterBindSampledImages
             Word32
maxPerStageDescriptorUpdateAfterBindStorageImages
             Word32
maxPerStageDescriptorUpdateAfterBindInputAttachments
             Word32
maxPerStageUpdateAfterBindResources
             Word32
maxDescriptorSetUpdateAfterBindSamplers
             Word32
maxDescriptorSetUpdateAfterBindUniformBuffers
             Word32
maxDescriptorSetUpdateAfterBindUniformBuffersDynamic
             Word32
maxDescriptorSetUpdateAfterBindStorageBuffers
             Word32
maxDescriptorSetUpdateAfterBindStorageBuffersDynamic
             Word32
maxDescriptorSetUpdateAfterBindSampledImages
             Word32
maxDescriptorSetUpdateAfterBindStorageImages
             Word32
maxDescriptorSetUpdateAfterBindInputAttachments
             ResolveModeFlags
supportedDepthResolveModes
             ResolveModeFlags
supportedStencilResolveModes
             (Bool32 -> Bool
bool32ToBool Bool32
independentResolveNone)
             (Bool32 -> Bool
bool32ToBool Bool32
independentResolve)
             (Bool32 -> Bool
bool32ToBool Bool32
filterMinmaxSingleComponentFormats)
             (Bool32 -> Bool
bool32ToBool Bool32
filterMinmaxImageComponentMapping)
             DeviceSize
maxTimelineSemaphoreValueDifference
             SampleCountFlags
framebufferIntegerColorSampleCounts

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

instance Zero PhysicalDeviceVulkan12Properties where
  zero :: PhysicalDeviceVulkan12Properties
zero = DriverId
-> ByteString
-> ByteString
-> ConformanceVersion
-> ShaderFloatControlsIndependence
-> ShaderFloatControlsIndependence
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Word32
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> ResolveModeFlags
-> ResolveModeFlags
-> Bool
-> Bool
-> Bool
-> Bool
-> DeviceSize
-> SampleCountFlags
-> PhysicalDeviceVulkan12Properties
PhysicalDeviceVulkan12Properties
           forall a. Zero a => a
zero
           forall a. Monoid a => a
mempty
           forall a. Monoid a => a
mempty
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero