{-# language CPP #-}
-- No documentation found for Chapter "Core13"
module Vulkan.Core13  ( pattern API_VERSION_1_3
                      , PhysicalDeviceVulkan13Features(..)
                      , PhysicalDeviceVulkan13Properties(..)
                      , StructureType(..)
                      , Flags64
                      , module Vulkan.Core13.Enums
                      , module Vulkan.Core13.Handles
                      , module Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state
                      , module Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2
                      , module Vulkan.Core13.Promoted_From_VK_EXT_image_robustness
                      , module Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block
                      , module Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_cache_control
                      , module Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback
                      , module Vulkan.Core13.Promoted_From_VK_EXT_private_data
                      , module Vulkan.Core13.Promoted_From_VK_EXT_shader_demote_to_helper_invocation
                      , module Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control
                      , module Vulkan.Core13.Promoted_From_VK_EXT_texel_buffer_alignment
                      , module Vulkan.Core13.Promoted_From_VK_EXT_texture_compression_astc_hdr
                      , module Vulkan.Core13.Promoted_From_VK_EXT_tooling_info
                      , module Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2
                      , module Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering
                      , module Vulkan.Core13.Promoted_From_VK_KHR_format_feature_flags2
                      , module Vulkan.Core13.Promoted_From_VK_KHR_maintenance4
                      , module Vulkan.Core13.Promoted_From_VK_KHR_shader_integer_dot_product
                      , module Vulkan.Core13.Promoted_From_VK_KHR_shader_terminate_invocation
                      , module Vulkan.Core13.Promoted_From_VK_KHR_synchronization2
                      , module Vulkan.Core13.Promoted_From_VK_KHR_zero_initialize_workgroup_memory
                      ) where
import Vulkan.Core13.Enums
import Vulkan.Core13.Handles
import Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state
import Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2
import Vulkan.Core13.Promoted_From_VK_EXT_image_robustness
import Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block
import Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_cache_control
import Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback
import Vulkan.Core13.Promoted_From_VK_EXT_private_data
import Vulkan.Core13.Promoted_From_VK_EXT_shader_demote_to_helper_invocation
import Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control
import Vulkan.Core13.Promoted_From_VK_EXT_texel_buffer_alignment
import Vulkan.Core13.Promoted_From_VK_EXT_texture_compression_astc_hdr
import Vulkan.Core13.Promoted_From_VK_EXT_tooling_info
import Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2
import Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering
import Vulkan.Core13.Promoted_From_VK_KHR_format_feature_flags2
import Vulkan.Core13.Promoted_From_VK_KHR_maintenance4
import Vulkan.Core13.Promoted_From_VK_KHR_shader_integer_dot_product
import Vulkan.Core13.Promoted_From_VK_KHR_shader_terminate_invocation
import Vulkan.Core13.Promoted_From_VK_KHR_synchronization2
import Vulkan.Core13.Promoted_From_VK_KHR_zero_initialize_workgroup_memory
import Foreign.Marshal.Alloc (allocaBytes)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
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.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.Kind (Type)
import Vulkan.Core10.FundamentalTypes (bool32ToBool)
import Vulkan.Core10.FundamentalTypes (boolToBool32)
import Vulkan.Core10.FundamentalTypes (Bool32)
import Vulkan.Core10.FundamentalTypes (DeviceSize)
import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.Version (pattern MAKE_API_VERSION)
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES))
import Vulkan.Core10.FundamentalTypes (Flags64)
import Vulkan.Core10.Enums.StructureType (StructureType(..))
pattern API_VERSION_1_3 :: Word32
pattern $bAPI_VERSION_1_3 :: Word32
$mAPI_VERSION_1_3 :: forall {r}. Word32 -> ((# #) -> r) -> ((# #) -> r) -> r
API_VERSION_1_3 = MAKE_API_VERSION 1 3 0


-- | VkPhysicalDeviceVulkan13Features - Structure describing the Vulkan 1.3
-- features that can be supported by an implementation
--
-- = Members
--
-- This structure describes the following features:
--
-- = Description
--
-- If the 'PhysicalDeviceVulkan13Features' 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. 'PhysicalDeviceVulkan13Features' /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_3 VK_VERSION_1_3>,
-- 'Vulkan.Core10.FundamentalTypes.Bool32',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data PhysicalDeviceVulkan13Features = PhysicalDeviceVulkan13Features
  { -- | #features-robustImageAccess# @robustImageAccess@ indicates whether image
    -- accesses are tightly bounds-checked against the dimensions of the image
    -- view.
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-input-validation Invalid texels>
    -- resulting from out of bounds image loads will be replaced as described
    -- in
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-texel-replacement Texel Replacement>,
    -- with either (0,0,1) or (0,0,0) values inserted for missing G, B, or A
    -- components based on the format.
    PhysicalDeviceVulkan13Features -> Bool
robustImageAccess :: Bool
  , -- | #features-inlineUniformBlock# @inlineUniformBlock@ indicates whether the
    -- implementation supports inline uniform block descriptors. If this
    -- feature is not enabled,
    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
    -- /must/ not be used.
    PhysicalDeviceVulkan13Features -> Bool
inlineUniformBlock :: Bool
  , -- | #features-descriptorBindingInlineUniformBlockUpdateAfterBind#
    -- @descriptorBindingInlineUniformBlockUpdateAfterBind@ indicates whether
    -- the implementation supports updating inline uniform block 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_INLINE_UNIFORM_BLOCK'.
    PhysicalDeviceVulkan13Features -> Bool
descriptorBindingInlineUniformBlockUpdateAfterBind :: Bool
  , -- | #features-pipelineCreationCacheControl# @pipelineCreationCacheControl@
    -- indicates that the implementation supports:
    --
    -- -   The following /can/ be used in @Vk*PipelineCreateInfo@::@flags@:
    --
    --     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT'
    --
    --     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT'
    --
    -- -   The following /can/ be used in
    --     'Vulkan.Core10.PipelineCache.PipelineCacheCreateInfo'::@flags@:
    --
    --     -   'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT'
    PhysicalDeviceVulkan13Features -> Bool
pipelineCreationCacheControl :: Bool
  , -- | #features-privateData# @privateData@ indicates whether the
    -- implementation supports private data. See
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#private-data Private Data>.
    PhysicalDeviceVulkan13Features -> Bool
privateData :: Bool
  , -- | #features-shaderDemoteToHelperInvocation#
    -- @shaderDemoteToHelperInvocation@ indicates whether the implementation
    -- supports the SPIR-V @DemoteToHelperInvocationEXT@ capability.
    PhysicalDeviceVulkan13Features -> Bool
shaderDemoteToHelperInvocation :: Bool
  , -- | #features-shaderTerminateInvocation# @shaderTerminateInvocation@
    -- specifies whether the implementation supports SPIR-V modules that use
    -- the @SPV_KHR_terminate_invocation@ extension.
    PhysicalDeviceVulkan13Features -> Bool
shaderTerminateInvocation :: Bool
  , -- | #features-subgroupSizeControl# @subgroupSizeControl@ indicates whether
    -- the implementation supports controlling shader subgroup sizes via the
    -- 'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT'
    -- flag and the
    -- 'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfo'
    -- structure.
    PhysicalDeviceVulkan13Features -> Bool
subgroupSizeControl :: Bool
  , -- | #features-computeFullSubgroups# @computeFullSubgroups@ indicates whether
    -- the implementation supports requiring full subgroups in compute , mesh,
    -- or task shaders via the
    -- 'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT'
    -- flag.
    PhysicalDeviceVulkan13Features -> Bool
computeFullSubgroups :: Bool
  , -- | #features-synchronization2# @synchronization2@ indicates whether the
    -- implementation supports the new set of synchronization commands
    -- introduced in @VK_KHR_synchronization2@.
    PhysicalDeviceVulkan13Features -> Bool
synchronization2 :: Bool
  , -- | #features-textureCompressionASTC_HDR# @textureCompressionASTC_HDR@
    -- indicates whether all of the ASTC HDR compressed texture formats are
    -- supported. If this feature is enabled, then the
    -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_BIT',
    -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_BLIT_SRC_BIT'
    -- and
    -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
    -- features /must/ be supported in @optimalTilingFeatures@ for the
    -- following formats:
    --
    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x4_SFLOAT_BLOCK'
    --
    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x4_SFLOAT_BLOCK'
    --
    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x5_SFLOAT_BLOCK'
    --
    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x5_SFLOAT_BLOCK'
    --
    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x6_SFLOAT_BLOCK'
    --
    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x5_SFLOAT_BLOCK'
    --
    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x6_SFLOAT_BLOCK'
    --
    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x8_SFLOAT_BLOCK'
    --
    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x5_SFLOAT_BLOCK'
    --
    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x6_SFLOAT_BLOCK'
    --
    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x8_SFLOAT_BLOCK'
    --
    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x10_SFLOAT_BLOCK'
    --
    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_12x10_SFLOAT_BLOCK'
    --
    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_12x12_SFLOAT_BLOCK'
    --
    -- To query for additional properties, or if the feature is not enabled,
    -- 'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceFormatProperties'
    -- and
    -- 'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceImageFormatProperties'
    -- /can/ be used to check for supported properties of individual formats as
    -- normal.
    PhysicalDeviceVulkan13Features -> Bool
textureCompressionASTC_HDR :: Bool
  , -- | #features-shaderZeroInitializeWorkgroupMemory#
    -- @shaderZeroInitializeWorkgroupMemory@ specifies whether the
    -- implementation supports initializing a variable in Workgroup storage
    -- class.
    PhysicalDeviceVulkan13Features -> Bool
shaderZeroInitializeWorkgroupMemory :: Bool
  , -- | #features-dynamicRendering# @dynamicRendering@ specifies that the
    -- implementation supports dynamic render pass instances using the
    -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
    -- command.
    PhysicalDeviceVulkan13Features -> Bool
dynamicRendering :: Bool
  , -- | #features-shaderIntegerDotProduct# @shaderIntegerDotProduct@ specifies
    -- whether shader modules /can/ declare the @DotProductInputAllKHR@,
    -- @DotProductInput4x8BitKHR@, @DotProductInput4x8BitPackedKHR@ and
    -- @DotProductKHR@ capabilities.
    PhysicalDeviceVulkan13Features -> Bool
shaderIntegerDotProduct :: Bool
  , -- | #features-maintenance4# @maintenance4@ indicates that the implementation
    -- supports the following:
    --
    -- -   The application /may/ destroy a
    --     'Vulkan.Core10.Handles.PipelineLayout' object immediately after
    --     using it to create another object.
    --
    -- -   @LocalSizeId@ /can/ be used as an alternative to @LocalSize@ to
    --     specify the local workgroup size with specialization constants.
    --
    -- -   Images created with identical creation parameters will always have
    --     the same alignment requirements.
    --
    -- -   The size memory requirement of a buffer or image is never greater
    --     than that of another buffer or image created with a greater or equal
    --     size.
    --
    -- -   Push constants do not have to be initialized before they are
    --     dynamically accessed.
    --
    -- -   The interface matching rules allow a larger output vector to match
    --     with a smaller input vector, with additional values being discarded.
    PhysicalDeviceVulkan13Features -> Bool
maintenance4 :: Bool
  }
  deriving (Typeable, PhysicalDeviceVulkan13Features
-> PhysicalDeviceVulkan13Features -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PhysicalDeviceVulkan13Features
-> PhysicalDeviceVulkan13Features -> Bool
$c/= :: PhysicalDeviceVulkan13Features
-> PhysicalDeviceVulkan13Features -> Bool
== :: PhysicalDeviceVulkan13Features
-> PhysicalDeviceVulkan13Features -> Bool
$c== :: PhysicalDeviceVulkan13Features
-> PhysicalDeviceVulkan13Features -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceVulkan13Features)
#endif
deriving instance Show PhysicalDeviceVulkan13Features

instance ToCStruct PhysicalDeviceVulkan13Features where
  withCStruct :: forall b.
PhysicalDeviceVulkan13Features
-> (Ptr PhysicalDeviceVulkan13Features -> IO b) -> IO b
withCStruct PhysicalDeviceVulkan13Features
x Ptr PhysicalDeviceVulkan13Features -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
80 forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceVulkan13Features
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceVulkan13Features
p PhysicalDeviceVulkan13Features
x (Ptr PhysicalDeviceVulkan13Features -> IO b
f Ptr PhysicalDeviceVulkan13Features
p)
  pokeCStruct :: forall b.
Ptr PhysicalDeviceVulkan13Features
-> PhysicalDeviceVulkan13Features -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceVulkan13Features
p PhysicalDeviceVulkan13Features{Bool
maintenance4 :: Bool
shaderIntegerDotProduct :: Bool
dynamicRendering :: Bool
shaderZeroInitializeWorkgroupMemory :: Bool
textureCompressionASTC_HDR :: Bool
synchronization2 :: Bool
computeFullSubgroups :: Bool
subgroupSizeControl :: Bool
shaderTerminateInvocation :: Bool
shaderDemoteToHelperInvocation :: Bool
privateData :: Bool
pipelineCreationCacheControl :: Bool
descriptorBindingInlineUniformBlockUpdateAfterBind :: Bool
inlineUniformBlock :: Bool
robustImageAccess :: Bool
$sel:maintenance4:PhysicalDeviceVulkan13Features :: PhysicalDeviceVulkan13Features -> Bool
$sel:shaderIntegerDotProduct:PhysicalDeviceVulkan13Features :: PhysicalDeviceVulkan13Features -> Bool
$sel:dynamicRendering:PhysicalDeviceVulkan13Features :: PhysicalDeviceVulkan13Features -> Bool
$sel:shaderZeroInitializeWorkgroupMemory:PhysicalDeviceVulkan13Features :: PhysicalDeviceVulkan13Features -> Bool
$sel:textureCompressionASTC_HDR:PhysicalDeviceVulkan13Features :: PhysicalDeviceVulkan13Features -> Bool
$sel:synchronization2:PhysicalDeviceVulkan13Features :: PhysicalDeviceVulkan13Features -> Bool
$sel:computeFullSubgroups:PhysicalDeviceVulkan13Features :: PhysicalDeviceVulkan13Features -> Bool
$sel:subgroupSizeControl:PhysicalDeviceVulkan13Features :: PhysicalDeviceVulkan13Features -> Bool
$sel:shaderTerminateInvocation:PhysicalDeviceVulkan13Features :: PhysicalDeviceVulkan13Features -> Bool
$sel:shaderDemoteToHelperInvocation:PhysicalDeviceVulkan13Features :: PhysicalDeviceVulkan13Features -> Bool
$sel:privateData:PhysicalDeviceVulkan13Features :: PhysicalDeviceVulkan13Features -> Bool
$sel:pipelineCreationCacheControl:PhysicalDeviceVulkan13Features :: PhysicalDeviceVulkan13Features -> Bool
$sel:descriptorBindingInlineUniformBlockUpdateAfterBind:PhysicalDeviceVulkan13Features :: PhysicalDeviceVulkan13Features -> Bool
$sel:inlineUniformBlock:PhysicalDeviceVulkan13Features :: PhysicalDeviceVulkan13Features -> Bool
$sel:robustImageAccess:PhysicalDeviceVulkan13Features :: PhysicalDeviceVulkan13Features -> Bool
..} IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Features
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 PhysicalDeviceVulkan13Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
robustImageAccess))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
inlineUniformBlock))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
descriptorBindingInlineUniformBlockUpdateAfterBind))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
pipelineCreationCacheControl))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
privateData))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderDemoteToHelperInvocation))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderTerminateInvocation))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
44 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
subgroupSizeControl))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
computeFullSubgroups))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
52 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
synchronization2))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
56 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
textureCompressionASTC_HDR))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
60 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderZeroInitializeWorkgroupMemory))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
64 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
dynamicRendering))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
68 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderIntegerDotProduct))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
72 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
maintenance4))
    IO b
f
  cStructSize :: Int
cStructSize = Int
80
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b. Ptr PhysicalDeviceVulkan13Features -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceVulkan13Features
p IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Features
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 PhysicalDeviceVulkan13Features
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 PhysicalDeviceVulkan13Features
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 PhysicalDeviceVulkan13Features
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 PhysicalDeviceVulkan13Features
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 PhysicalDeviceVulkan13Features
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 PhysicalDeviceVulkan13Features
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 PhysicalDeviceVulkan13Features
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 PhysicalDeviceVulkan13Features
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 PhysicalDeviceVulkan13Features
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 PhysicalDeviceVulkan13Features
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 PhysicalDeviceVulkan13Features
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 PhysicalDeviceVulkan13Features
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 PhysicalDeviceVulkan13Features
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 PhysicalDeviceVulkan13Features
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 PhysicalDeviceVulkan13Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
72 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    IO b
f

instance FromCStruct PhysicalDeviceVulkan13Features where
  peekCStruct :: Ptr PhysicalDeviceVulkan13Features
-> IO PhysicalDeviceVulkan13Features
peekCStruct Ptr PhysicalDeviceVulkan13Features
p = do
    Bool32
robustImageAccess <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
    Bool32
inlineUniformBlock <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32))
    Bool32
descriptorBindingInlineUniformBlockUpdateAfterBind <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Bool32))
    Bool32
pipelineCreationCacheControl <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr Bool32))
    Bool32
privateData <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Bool32))
    Bool32
shaderDemoteToHelperInvocation <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr Bool32))
    Bool32
shaderTerminateInvocation <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr Bool32))
    Bool32
subgroupSizeControl <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
44 :: Ptr Bool32))
    Bool32
computeFullSubgroups <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr Bool32))
    Bool32
synchronization2 <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
52 :: Ptr Bool32))
    Bool32
textureCompressionASTC_HDR <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
56 :: Ptr Bool32))
    Bool32
shaderZeroInitializeWorkgroupMemory <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
60 :: Ptr Bool32))
    Bool32
dynamicRendering <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
64 :: Ptr Bool32))
    Bool32
shaderIntegerDotProduct <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
68 :: Ptr Bool32))
    Bool32
maintenance4 <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Features
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
72 :: 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
-> PhysicalDeviceVulkan13Features
PhysicalDeviceVulkan13Features
             (Bool32 -> Bool
bool32ToBool Bool32
robustImageAccess)
             (Bool32 -> Bool
bool32ToBool Bool32
inlineUniformBlock)
             (Bool32 -> Bool
bool32ToBool Bool32
descriptorBindingInlineUniformBlockUpdateAfterBind)
             (Bool32 -> Bool
bool32ToBool Bool32
pipelineCreationCacheControl)
             (Bool32 -> Bool
bool32ToBool Bool32
privateData)
             (Bool32 -> Bool
bool32ToBool Bool32
shaderDemoteToHelperInvocation)
             (Bool32 -> Bool
bool32ToBool Bool32
shaderTerminateInvocation)
             (Bool32 -> Bool
bool32ToBool Bool32
subgroupSizeControl)
             (Bool32 -> Bool
bool32ToBool Bool32
computeFullSubgroups)
             (Bool32 -> Bool
bool32ToBool Bool32
synchronization2)
             (Bool32 -> Bool
bool32ToBool Bool32
textureCompressionASTC_HDR)
             (Bool32 -> Bool
bool32ToBool Bool32
shaderZeroInitializeWorkgroupMemory)
             (Bool32 -> Bool
bool32ToBool Bool32
dynamicRendering)
             (Bool32 -> Bool
bool32ToBool Bool32
shaderIntegerDotProduct)
             (Bool32 -> Bool
bool32ToBool Bool32
maintenance4)

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

instance Zero PhysicalDeviceVulkan13Features where
  zero :: PhysicalDeviceVulkan13Features
zero = Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> PhysicalDeviceVulkan13Features
PhysicalDeviceVulkan13Features
           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


-- | VkPhysicalDeviceVulkan13Properties - Structure specifying physical
-- device properties for functionality promoted to Vulkan 1.3
--
-- = Description
--
-- If the 'PhysicalDeviceVulkan13Properties' 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.3 functionality.
--
-- The members of 'PhysicalDeviceVulkan13Properties' /must/ have the same
-- values as the corresponding members of
-- 'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockProperties'
-- and
-- 'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlProperties'.
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
-- 'Vulkan.Core10.FundamentalTypes.Bool32',
-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data PhysicalDeviceVulkan13Properties = PhysicalDeviceVulkan13Properties
  { -- | #limits-minSubgroupSize# @minSubgroupSize@ is the minimum subgroup size
    -- supported by this device. @minSubgroupSize@ is at least one if any of
    -- the physical device’s queues support
    -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' or
    -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT'. @minSubgroupSize@
    -- is a power-of-two. @minSubgroupSize@ is less than or equal to
    -- @maxSubgroupSize@. @minSubgroupSize@ is less than or equal to
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-subgroup-size subgroupSize>.
    PhysicalDeviceVulkan13Properties -> Word32
minSubgroupSize :: Word32
  , -- | #limits-maxSubgroupSize# @maxSubgroupSize@ is the maximum subgroup size
    -- supported by this device. @maxSubgroupSize@ is at least one if any of
    -- the physical device’s queues support
    -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' or
    -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT'. @maxSubgroupSize@
    -- is a power-of-two. @maxSubgroupSize@ is greater than or equal to
    -- @minSubgroupSize@. @maxSubgroupSize@ is greater than or equal to
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-subgroup-size subgroupSize>.
    PhysicalDeviceVulkan13Properties -> Word32
maxSubgroupSize :: Word32
  , -- | #limits-maxComputeWorkgroupSubgroups# @maxComputeWorkgroupSubgroups@ is
    -- the maximum number of subgroups supported by the implementation within a
    -- workgroup.
    PhysicalDeviceVulkan13Properties -> Word32
maxComputeWorkgroupSubgroups :: Word32
  , -- | #limits-requiredSubgroupSizeStages# @requiredSubgroupSizeStages@ is a
    -- bitfield of what shader stages support having a required subgroup size
    -- specified.
    PhysicalDeviceVulkan13Properties -> ShaderStageFlags
requiredSubgroupSizeStages :: ShaderStageFlags
  , -- | #limits-maxInlineUniformBlockSize# @maxInlineUniformBlockSize@ is the
    -- maximum size in bytes of an
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-inlineuniformblock inline uniform block>
    -- binding.
    PhysicalDeviceVulkan13Properties -> Word32
maxInlineUniformBlockSize :: Word32
  , -- | #limits-maxPerStageDescriptorInlineUniformBlocks#
    -- @maxPerStageDescriptorInlineUniformBlocks@ is the maximum number of
    -- inline uniform block bindings that /can/ be accessible to a single
    -- shader stage in a pipeline layout. Descriptor bindings with a descriptor
    -- type of
    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
    -- count against this limit. Only descriptor bindings in descriptor set
    -- layouts created without the
    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
    -- bit set count against this limit.
    PhysicalDeviceVulkan13Properties -> Word32
maxPerStageDescriptorInlineUniformBlocks :: Word32
  , -- | #limits-maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks#
    -- @maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks@ is similar to
    -- @maxPerStageDescriptorInlineUniformBlocks@ but counts descriptor
    -- bindings from descriptor sets created with or without the
    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
    -- bit set.
    PhysicalDeviceVulkan13Properties -> Word32
maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks :: Word32
  , -- | #limits-maxDescriptorSetInlineUniformBlocks#
    -- @maxDescriptorSetInlineUniformBlocks@ is the maximum number of inline
    -- uniform block bindings that /can/ be included in descriptor bindings in
    -- a pipeline layout across all pipeline shader stages and descriptor set
    -- numbers. Descriptor bindings with a descriptor type of
    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
    -- count against this limit. Only descriptor bindings in descriptor set
    -- layouts created without the
    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
    -- bit set count against this limit.
    PhysicalDeviceVulkan13Properties -> Word32
maxDescriptorSetInlineUniformBlocks :: Word32
  , -- | #limits-maxDescriptorSetUpdateAfterBindInlineUniformBlocks#
    -- @maxDescriptorSetUpdateAfterBindInlineUniformBlocks@ is similar to
    -- @maxDescriptorSetInlineUniformBlocks@ but counts descriptor bindings
    -- from descriptor sets created with or without the
    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
    -- bit set.
    PhysicalDeviceVulkan13Properties -> Word32
maxDescriptorSetUpdateAfterBindInlineUniformBlocks :: Word32
  , -- | #limits-maxInlineUniformTotalSize# @maxInlineUniformTotalSize@ is the
    -- maximum total size in bytes of all inline uniform block bindings, across
    -- all pipeline shader stages and descriptor set numbers, that /can/ be
    -- included in a pipeline layout. Descriptor bindings with a descriptor
    -- type of
    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
    -- count against this limit.
    PhysicalDeviceVulkan13Properties -> Word32
maxInlineUniformTotalSize :: Word32
  , -- | @integerDotProduct8BitUnsignedAccelerated@ is a boolean that will be
    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 8-bit unsigned
    -- dot product operations using the @OpUDotKHR@ SPIR-V instruction is
    -- accelerated
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
    PhysicalDeviceVulkan13Properties -> Bool
integerDotProduct8BitUnsignedAccelerated :: Bool
  , -- | @integerDotProduct8BitSignedAccelerated@ is a boolean that will be
    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 8-bit signed
    -- dot product operations using the @OpSDotKHR@ SPIR-V instruction is
    -- accelerated
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
    PhysicalDeviceVulkan13Properties -> Bool
integerDotProduct8BitSignedAccelerated :: Bool
  , -- | @integerDotProduct8BitMixedSignednessAccelerated@ is a boolean that will
    -- be 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 8-bit mixed
    -- signedness dot product operations using the @OpSUDotKHR@ SPIR-V
    -- instruction is accelerated
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
    PhysicalDeviceVulkan13Properties -> Bool
integerDotProduct8BitMixedSignednessAccelerated :: Bool
  , -- | @integerDotProduct4x8BitPackedUnsignedAccelerated@ is a boolean that
    -- will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 8-bit
    -- unsigned dot product operations from operands packed into 32-bit
    -- integers using the @OpUDotKHR@ SPIR-V instruction is accelerated
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
    PhysicalDeviceVulkan13Properties -> Bool
integerDotProduct4x8BitPackedUnsignedAccelerated :: Bool
  , -- | @integerDotProduct4x8BitPackedSignedAccelerated@ is a boolean that will
    -- be 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 8-bit signed
    -- dot product operations from operands packed into 32-bit integers using
    -- the @OpSDotKHR@ SPIR-V instruction is accelerated
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
    PhysicalDeviceVulkan13Properties -> Bool
integerDotProduct4x8BitPackedSignedAccelerated :: Bool
  , -- | @integerDotProduct4x8BitPackedMixedSignednessAccelerated@ is a boolean
    -- that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for
    -- 8-bit mixed signedness dot product operations from operands packed into
    -- 32-bit integers using the @OpSUDotKHR@ SPIR-V instruction is accelerated
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
    PhysicalDeviceVulkan13Properties -> Bool
integerDotProduct4x8BitPackedMixedSignednessAccelerated :: Bool
  , -- | @integerDotProduct16BitUnsignedAccelerated@ is a boolean that will be
    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 16-bit unsigned
    -- dot product operations using the @OpUDotKHR@ SPIR-V instruction is
    -- accelerated
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
    PhysicalDeviceVulkan13Properties -> Bool
integerDotProduct16BitUnsignedAccelerated :: Bool
  , -- | @integerDotProduct16BitSignedAccelerated@ is a boolean that will be
    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 16-bit signed
    -- dot product operations using the @OpSDotKHR@ SPIR-V instruction is
    -- accelerated
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
    PhysicalDeviceVulkan13Properties -> Bool
integerDotProduct16BitSignedAccelerated :: Bool
  , -- | @integerDotProduct16BitMixedSignednessAccelerated@ is a boolean that
    -- will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 16-bit
    -- mixed signedness dot product operations using the @OpSUDotKHR@ SPIR-V
    -- instruction is accelerated
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
    PhysicalDeviceVulkan13Properties -> Bool
integerDotProduct16BitMixedSignednessAccelerated :: Bool
  , -- | @integerDotProduct32BitUnsignedAccelerated@ is a boolean that will be
    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 32-bit unsigned
    -- dot product operations using the @OpUDotKHR@ SPIR-V instruction is
    -- accelerated
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
    PhysicalDeviceVulkan13Properties -> Bool
integerDotProduct32BitUnsignedAccelerated :: Bool
  , -- | @integerDotProduct32BitSignedAccelerated@ is a boolean that will be
    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 32-bit signed
    -- dot product operations using the @OpSDotKHR@ SPIR-V instruction is
    -- accelerated
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
    PhysicalDeviceVulkan13Properties -> Bool
integerDotProduct32BitSignedAccelerated :: Bool
  , -- | @integerDotProduct32BitMixedSignednessAccelerated@ is a boolean that
    -- will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 32-bit
    -- mixed signedness dot product operations using the @OpSUDotKHR@ SPIR-V
    -- instruction is accelerated
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
    PhysicalDeviceVulkan13Properties -> Bool
integerDotProduct32BitMixedSignednessAccelerated :: Bool
  , -- | @integerDotProduct64BitUnsignedAccelerated@ is a boolean that will be
    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 64-bit unsigned
    -- dot product operations using the @OpUDotKHR@ SPIR-V instruction is
    -- accelerated
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
    PhysicalDeviceVulkan13Properties -> Bool
integerDotProduct64BitUnsignedAccelerated :: Bool
  , -- | @integerDotProduct64BitSignedAccelerated@ is a boolean that will be
    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 64-bit signed
    -- dot product operations using the @OpSDotKHR@ SPIR-V instruction is
    -- accelerated
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
    PhysicalDeviceVulkan13Properties -> Bool
integerDotProduct64BitSignedAccelerated :: Bool
  , -- | @integerDotProduct64BitMixedSignednessAccelerated@ is a boolean that
    -- will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 64-bit
    -- mixed signedness dot product operations using the @OpSUDotKHR@ SPIR-V
    -- instruction is accelerated
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
    PhysicalDeviceVulkan13Properties -> Bool
integerDotProduct64BitMixedSignednessAccelerated :: Bool
  , -- | @integerDotProductAccumulatingSaturating8BitUnsignedAccelerated@ is a
    -- boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
    -- support for 8-bit unsigned accumulating saturating dot product
    -- operations using the @OpUDotAccSatKHR@ SPIR-V instruction is accelerated
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
    PhysicalDeviceVulkan13Properties -> Bool
integerDotProductAccumulatingSaturating8BitUnsignedAccelerated :: Bool
  , -- | @integerDotProductAccumulatingSaturating8BitSignedAccelerated@ is a
    -- boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
    -- support for 8-bit signed accumulating saturating dot product operations
    -- using the @OpSDotAccSatKHR@ SPIR-V instruction is accelerated
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
    PhysicalDeviceVulkan13Properties -> Bool
integerDotProductAccumulatingSaturating8BitSignedAccelerated :: Bool
  , -- | @integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated@
    -- is a boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
    -- support for 8-bit mixed signedness accumulating saturating dot product
    -- operations using the @OpSUDotAccSatKHR@ SPIR-V instruction is
    -- accelerated
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
    PhysicalDeviceVulkan13Properties -> Bool
integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated :: Bool
  , -- | @integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated@
    -- is a boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
    -- support for 8-bit unsigned accumulating saturating dot product
    -- operations from operands packed into 32-bit integers using the
    -- @OpUDotAccSatKHR@ SPIR-V instruction is accelerated
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
    PhysicalDeviceVulkan13Properties -> Bool
integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated :: Bool
  , -- | @integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated@
    -- is a boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
    -- support for 8-bit signed accumulating saturating dot product operations
    -- from operands packed into 32-bit integers using the @OpSDotAccSatKHR@
    -- SPIR-V instruction is accelerated
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
    PhysicalDeviceVulkan13Properties -> Bool
integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated :: Bool
  , -- | @integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated@
    -- is a boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
    -- support for 8-bit mixed signedness accumulating saturating dot product
    -- operations from operands packed into 32-bit integers using the
    -- @OpSUDotAccSatKHR@ SPIR-V instruction is accelerated
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
    PhysicalDeviceVulkan13Properties -> Bool
integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated :: Bool
  , -- | @integerDotProductAccumulatingSaturating16BitUnsignedAccelerated@ is a
    -- boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
    -- support for 16-bit unsigned accumulating saturating dot product
    -- operations using the @OpUDotAccSatKHR@ SPIR-V instruction is accelerated
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
    PhysicalDeviceVulkan13Properties -> Bool
integerDotProductAccumulatingSaturating16BitUnsignedAccelerated :: Bool
  , -- | @integerDotProductAccumulatingSaturating16BitSignedAccelerated@ is a
    -- boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
    -- support for 16-bit signed accumulating saturating dot product operations
    -- using the @OpSDotAccSatKHR@ SPIR-V instruction is accelerated
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
    PhysicalDeviceVulkan13Properties -> Bool
integerDotProductAccumulatingSaturating16BitSignedAccelerated :: Bool
  , -- | @integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated@
    -- is a boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
    -- support for 16-bit mixed signedness accumulating saturating dot product
    -- operations using the @OpSUDotAccSatKHR@ SPIR-V instruction is
    -- accelerated
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
    PhysicalDeviceVulkan13Properties -> Bool
integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated :: Bool
  , -- | @integerDotProductAccumulatingSaturating32BitUnsignedAccelerated@ is a
    -- boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
    -- support for 32-bit unsigned accumulating saturating dot product
    -- operations using the @OpUDotAccSatKHR@ SPIR-V instruction is accelerated
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
    PhysicalDeviceVulkan13Properties -> Bool
integerDotProductAccumulatingSaturating32BitUnsignedAccelerated :: Bool
  , -- | @integerDotProductAccumulatingSaturating32BitSignedAccelerated@ is a
    -- boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
    -- support for 32-bit signed accumulating saturating dot product operations
    -- using the @OpSDotAccSatKHR@ SPIR-V instruction is accelerated
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
    PhysicalDeviceVulkan13Properties -> Bool
integerDotProductAccumulatingSaturating32BitSignedAccelerated :: Bool
  , -- | @integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated@
    -- is a boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
    -- support for 32-bit mixed signedness accumulating saturating dot product
    -- operations using the @OpSUDotAccSatKHR@ SPIR-V instruction is
    -- accelerated
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
    PhysicalDeviceVulkan13Properties -> Bool
integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated :: Bool
  , -- | @integerDotProductAccumulatingSaturating64BitUnsignedAccelerated@ is a
    -- boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
    -- support for 64-bit unsigned accumulating saturating dot product
    -- operations using the @OpUDotAccSatKHR@ SPIR-V instruction is accelerated
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
    PhysicalDeviceVulkan13Properties -> Bool
integerDotProductAccumulatingSaturating64BitUnsignedAccelerated :: Bool
  , -- | @integerDotProductAccumulatingSaturating64BitSignedAccelerated@ is a
    -- boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
    -- support for 64-bit signed accumulating saturating dot product operations
    -- using the @OpSDotAccSatKHR@ SPIR-V instruction is accelerated
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
    PhysicalDeviceVulkan13Properties -> Bool
integerDotProductAccumulatingSaturating64BitSignedAccelerated :: Bool
  , -- | @integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated@
    -- is a boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
    -- support for 64-bit mixed signedness accumulating saturating dot product
    -- operations using the @OpSUDotAccSatKHR@ SPIR-V instruction is
    -- accelerated
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
    PhysicalDeviceVulkan13Properties -> Bool
integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated :: Bool
  , -- | #limits-storageTexelBufferOffsetAlignmentBytes#
    -- @storageTexelBufferOffsetAlignmentBytes@ is a byte alignment that is
    -- sufficient for a storage texel buffer of any format. The value /must/ be
    -- a power of two.
    PhysicalDeviceVulkan13Properties -> DeviceSize
storageTexelBufferOffsetAlignmentBytes :: DeviceSize
  , -- | #limits-storageTexelBufferOffsetSingleTexelAlignment#
    -- @storageTexelBufferOffsetSingleTexelAlignment@ indicates whether single
    -- texel alignment is sufficient for a storage texel buffer of any format.
    PhysicalDeviceVulkan13Properties -> Bool
storageTexelBufferOffsetSingleTexelAlignment :: Bool
  , -- | #limits-uniformTexelBufferOffsetAlignmentBytes#
    -- @uniformTexelBufferOffsetAlignmentBytes@ is a byte alignment that is
    -- sufficient for a uniform texel buffer of any format. The value /must/ be
    -- a power of two.
    PhysicalDeviceVulkan13Properties -> DeviceSize
uniformTexelBufferOffsetAlignmentBytes :: DeviceSize
  , -- | #limits-uniformTexelBufferOffsetSingleTexelAlignment#
    -- @uniformTexelBufferOffsetSingleTexelAlignment@ indicates whether single
    -- texel alignment is sufficient for a uniform texel buffer of any format.
    PhysicalDeviceVulkan13Properties -> Bool
uniformTexelBufferOffsetSingleTexelAlignment :: Bool
  , -- | #limits-maxBufferSize# @maxBufferSize@ is the maximum size
    -- 'Vulkan.Core10.Handles.Buffer' that /can/ be created.
    PhysicalDeviceVulkan13Properties -> DeviceSize
maxBufferSize :: DeviceSize
  }
  deriving (Typeable, PhysicalDeviceVulkan13Properties
-> PhysicalDeviceVulkan13Properties -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PhysicalDeviceVulkan13Properties
-> PhysicalDeviceVulkan13Properties -> Bool
$c/= :: PhysicalDeviceVulkan13Properties
-> PhysicalDeviceVulkan13Properties -> Bool
== :: PhysicalDeviceVulkan13Properties
-> PhysicalDeviceVulkan13Properties -> Bool
$c== :: PhysicalDeviceVulkan13Properties
-> PhysicalDeviceVulkan13Properties -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceVulkan13Properties)
#endif
deriving instance Show PhysicalDeviceVulkan13Properties

instance ToCStruct PhysicalDeviceVulkan13Properties where
  withCStruct :: forall b.
PhysicalDeviceVulkan13Properties
-> (Ptr PhysicalDeviceVulkan13Properties -> IO b) -> IO b
withCStruct PhysicalDeviceVulkan13Properties
x Ptr PhysicalDeviceVulkan13Properties -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
216 forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceVulkan13Properties
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceVulkan13Properties
p PhysicalDeviceVulkan13Properties
x (Ptr PhysicalDeviceVulkan13Properties -> IO b
f Ptr PhysicalDeviceVulkan13Properties
p)
  pokeCStruct :: forall b.
Ptr PhysicalDeviceVulkan13Properties
-> PhysicalDeviceVulkan13Properties -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceVulkan13Properties
p PhysicalDeviceVulkan13Properties{Bool
Word32
DeviceSize
ShaderStageFlags
maxBufferSize :: DeviceSize
uniformTexelBufferOffsetSingleTexelAlignment :: Bool
uniformTexelBufferOffsetAlignmentBytes :: DeviceSize
storageTexelBufferOffsetSingleTexelAlignment :: Bool
storageTexelBufferOffsetAlignmentBytes :: DeviceSize
integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated :: Bool
integerDotProductAccumulatingSaturating64BitSignedAccelerated :: Bool
integerDotProductAccumulatingSaturating64BitUnsignedAccelerated :: Bool
integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated :: Bool
integerDotProductAccumulatingSaturating32BitSignedAccelerated :: Bool
integerDotProductAccumulatingSaturating32BitUnsignedAccelerated :: Bool
integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated :: Bool
integerDotProductAccumulatingSaturating16BitSignedAccelerated :: Bool
integerDotProductAccumulatingSaturating16BitUnsignedAccelerated :: Bool
integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated :: Bool
integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated :: Bool
integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated :: Bool
integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated :: Bool
integerDotProductAccumulatingSaturating8BitSignedAccelerated :: Bool
integerDotProductAccumulatingSaturating8BitUnsignedAccelerated :: Bool
integerDotProduct64BitMixedSignednessAccelerated :: Bool
integerDotProduct64BitSignedAccelerated :: Bool
integerDotProduct64BitUnsignedAccelerated :: Bool
integerDotProduct32BitMixedSignednessAccelerated :: Bool
integerDotProduct32BitSignedAccelerated :: Bool
integerDotProduct32BitUnsignedAccelerated :: Bool
integerDotProduct16BitMixedSignednessAccelerated :: Bool
integerDotProduct16BitSignedAccelerated :: Bool
integerDotProduct16BitUnsignedAccelerated :: Bool
integerDotProduct4x8BitPackedMixedSignednessAccelerated :: Bool
integerDotProduct4x8BitPackedSignedAccelerated :: Bool
integerDotProduct4x8BitPackedUnsignedAccelerated :: Bool
integerDotProduct8BitMixedSignednessAccelerated :: Bool
integerDotProduct8BitSignedAccelerated :: Bool
integerDotProduct8BitUnsignedAccelerated :: Bool
maxInlineUniformTotalSize :: Word32
maxDescriptorSetUpdateAfterBindInlineUniformBlocks :: Word32
maxDescriptorSetInlineUniformBlocks :: Word32
maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks :: Word32
maxPerStageDescriptorInlineUniformBlocks :: Word32
maxInlineUniformBlockSize :: Word32
requiredSubgroupSizeStages :: ShaderStageFlags
maxComputeWorkgroupSubgroups :: Word32
maxSubgroupSize :: Word32
minSubgroupSize :: Word32
$sel:maxBufferSize:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> DeviceSize
$sel:uniformTexelBufferOffsetSingleTexelAlignment:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Bool
$sel:uniformTexelBufferOffsetAlignmentBytes:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> DeviceSize
$sel:storageTexelBufferOffsetSingleTexelAlignment:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Bool
$sel:storageTexelBufferOffsetAlignmentBytes:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> DeviceSize
$sel:integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Bool
$sel:integerDotProductAccumulatingSaturating64BitSignedAccelerated:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Bool
$sel:integerDotProductAccumulatingSaturating64BitUnsignedAccelerated:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Bool
$sel:integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Bool
$sel:integerDotProductAccumulatingSaturating32BitSignedAccelerated:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Bool
$sel:integerDotProductAccumulatingSaturating32BitUnsignedAccelerated:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Bool
$sel:integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Bool
$sel:integerDotProductAccumulatingSaturating16BitSignedAccelerated:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Bool
$sel:integerDotProductAccumulatingSaturating16BitUnsignedAccelerated:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Bool
$sel:integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Bool
$sel:integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Bool
$sel:integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Bool
$sel:integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Bool
$sel:integerDotProductAccumulatingSaturating8BitSignedAccelerated:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Bool
$sel:integerDotProductAccumulatingSaturating8BitUnsignedAccelerated:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Bool
$sel:integerDotProduct64BitMixedSignednessAccelerated:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Bool
$sel:integerDotProduct64BitSignedAccelerated:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Bool
$sel:integerDotProduct64BitUnsignedAccelerated:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Bool
$sel:integerDotProduct32BitMixedSignednessAccelerated:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Bool
$sel:integerDotProduct32BitSignedAccelerated:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Bool
$sel:integerDotProduct32BitUnsignedAccelerated:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Bool
$sel:integerDotProduct16BitMixedSignednessAccelerated:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Bool
$sel:integerDotProduct16BitSignedAccelerated:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Bool
$sel:integerDotProduct16BitUnsignedAccelerated:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Bool
$sel:integerDotProduct4x8BitPackedMixedSignednessAccelerated:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Bool
$sel:integerDotProduct4x8BitPackedSignedAccelerated:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Bool
$sel:integerDotProduct4x8BitPackedUnsignedAccelerated:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Bool
$sel:integerDotProduct8BitMixedSignednessAccelerated:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Bool
$sel:integerDotProduct8BitSignedAccelerated:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Bool
$sel:integerDotProduct8BitUnsignedAccelerated:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Bool
$sel:maxInlineUniformTotalSize:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Word32
$sel:maxDescriptorSetUpdateAfterBindInlineUniformBlocks:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Word32
$sel:maxDescriptorSetInlineUniformBlocks:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Word32
$sel:maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Word32
$sel:maxPerStageDescriptorInlineUniformBlocks:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Word32
$sel:maxInlineUniformBlockSize:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Word32
$sel:requiredSubgroupSizeStages:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> ShaderStageFlags
$sel:maxComputeWorkgroupSubgroups:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Word32
$sel:maxSubgroupSize:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Word32
$sel:minSubgroupSize:PhysicalDeviceVulkan13Properties :: PhysicalDeviceVulkan13Properties -> Word32
..} IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
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 PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) (Word32
minSubgroupSize)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Word32)) (Word32
maxSubgroupSize)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word32)) (Word32
maxComputeWorkgroupSubgroups)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr ShaderStageFlags)) (ShaderStageFlags
requiredSubgroupSizeStages)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Word32)) (Word32
maxInlineUniformBlockSize)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr Word32)) (Word32
maxPerStageDescriptorInlineUniformBlocks)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr Word32)) (Word32
maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
44 :: Ptr Word32)) (Word32
maxDescriptorSetInlineUniformBlocks)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr Word32)) (Word32
maxDescriptorSetUpdateAfterBindInlineUniformBlocks)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
52 :: Ptr Word32)) (Word32
maxInlineUniformTotalSize)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
56 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
integerDotProduct8BitUnsignedAccelerated))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
60 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
integerDotProduct8BitSignedAccelerated))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
64 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
integerDotProduct8BitMixedSignednessAccelerated))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
68 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
integerDotProduct4x8BitPackedUnsignedAccelerated))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
72 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
integerDotProduct4x8BitPackedSignedAccelerated))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
76 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
integerDotProduct4x8BitPackedMixedSignednessAccelerated))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
80 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
integerDotProduct16BitUnsignedAccelerated))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
84 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
integerDotProduct16BitSignedAccelerated))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
88 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
integerDotProduct16BitMixedSignednessAccelerated))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
92 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
integerDotProduct32BitUnsignedAccelerated))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
96 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
integerDotProduct32BitSignedAccelerated))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
100 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
integerDotProduct32BitMixedSignednessAccelerated))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
104 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
integerDotProduct64BitUnsignedAccelerated))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
108 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
integerDotProduct64BitSignedAccelerated))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
112 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
integerDotProduct64BitMixedSignednessAccelerated))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
116 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
integerDotProductAccumulatingSaturating8BitUnsignedAccelerated))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
120 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
integerDotProductAccumulatingSaturating8BitSignedAccelerated))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
124 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
128 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
132 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
136 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
140 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
integerDotProductAccumulatingSaturating16BitUnsignedAccelerated))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
144 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
integerDotProductAccumulatingSaturating16BitSignedAccelerated))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
148 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
152 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
integerDotProductAccumulatingSaturating32BitUnsignedAccelerated))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
156 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
integerDotProductAccumulatingSaturating32BitSignedAccelerated))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
160 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
164 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
integerDotProductAccumulatingSaturating64BitUnsignedAccelerated))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
168 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
integerDotProductAccumulatingSaturating64BitSignedAccelerated))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
172 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
176 :: Ptr DeviceSize)) (DeviceSize
storageTexelBufferOffsetAlignmentBytes)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
184 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
storageTexelBufferOffsetSingleTexelAlignment))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
192 :: Ptr DeviceSize)) (DeviceSize
uniformTexelBufferOffsetAlignmentBytes)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
200 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
uniformTexelBufferOffsetSingleTexelAlignment))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
208 :: Ptr DeviceSize)) (DeviceSize
maxBufferSize)
    IO b
f
  cStructSize :: Int
cStructSize = Int
216
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b. Ptr PhysicalDeviceVulkan13Properties -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceVulkan13Properties
p IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
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 PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Word32)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word32)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr ShaderStageFlags)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Word32)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr Word32)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr Word32)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
44 :: Ptr Word32)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr Word32)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
52 :: Ptr Word32)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
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 PhysicalDeviceVulkan13Properties
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 PhysicalDeviceVulkan13Properties
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 PhysicalDeviceVulkan13Properties
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 PhysicalDeviceVulkan13Properties
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 PhysicalDeviceVulkan13Properties
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 PhysicalDeviceVulkan13Properties
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 PhysicalDeviceVulkan13Properties
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 PhysicalDeviceVulkan13Properties
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 PhysicalDeviceVulkan13Properties
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 PhysicalDeviceVulkan13Properties
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 PhysicalDeviceVulkan13Properties
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 PhysicalDeviceVulkan13Properties
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 PhysicalDeviceVulkan13Properties
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 PhysicalDeviceVulkan13Properties
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 PhysicalDeviceVulkan13Properties
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 PhysicalDeviceVulkan13Properties
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 PhysicalDeviceVulkan13Properties
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 PhysicalDeviceVulkan13Properties
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 PhysicalDeviceVulkan13Properties
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 PhysicalDeviceVulkan13Properties
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 PhysicalDeviceVulkan13Properties
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 PhysicalDeviceVulkan13Properties
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 PhysicalDeviceVulkan13Properties
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 PhysicalDeviceVulkan13Properties
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 PhysicalDeviceVulkan13Properties
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 PhysicalDeviceVulkan13Properties
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 PhysicalDeviceVulkan13Properties
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 PhysicalDeviceVulkan13Properties
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 PhysicalDeviceVulkan13Properties
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 PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
176 :: Ptr DeviceSize)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
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 PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
192 :: Ptr DeviceSize)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
200 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
208 :: Ptr DeviceSize)) (forall a. Zero a => a
zero)
    IO b
f

instance FromCStruct PhysicalDeviceVulkan13Properties where
  peekCStruct :: Ptr PhysicalDeviceVulkan13Properties
-> IO PhysicalDeviceVulkan13Properties
peekCStruct Ptr PhysicalDeviceVulkan13Properties
p = do
    Word32
minSubgroupSize <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32))
    Word32
maxSubgroupSize <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Word32))
    Word32
maxComputeWorkgroupSubgroups <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word32))
    ShaderStageFlags
requiredSubgroupSizeStages <- forall a. Storable a => Ptr a -> IO a
peek @ShaderStageFlags ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr ShaderStageFlags))
    Word32
maxInlineUniformBlockSize <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Word32))
    Word32
maxPerStageDescriptorInlineUniformBlocks <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr Word32))
    Word32
maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr Word32))
    Word32
maxDescriptorSetInlineUniformBlocks <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
44 :: Ptr Word32))
    Word32
maxDescriptorSetUpdateAfterBindInlineUniformBlocks <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr Word32))
    Word32
maxInlineUniformTotalSize <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
52 :: Ptr Word32))
    Bool32
integerDotProduct8BitUnsignedAccelerated <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
56 :: Ptr Bool32))
    Bool32
integerDotProduct8BitSignedAccelerated <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
60 :: Ptr Bool32))
    Bool32
integerDotProduct8BitMixedSignednessAccelerated <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
64 :: Ptr Bool32))
    Bool32
integerDotProduct4x8BitPackedUnsignedAccelerated <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
68 :: Ptr Bool32))
    Bool32
integerDotProduct4x8BitPackedSignedAccelerated <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
72 :: Ptr Bool32))
    Bool32
integerDotProduct4x8BitPackedMixedSignednessAccelerated <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
76 :: Ptr Bool32))
    Bool32
integerDotProduct16BitUnsignedAccelerated <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
80 :: Ptr Bool32))
    Bool32
integerDotProduct16BitSignedAccelerated <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
84 :: Ptr Bool32))
    Bool32
integerDotProduct16BitMixedSignednessAccelerated <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
88 :: Ptr Bool32))
    Bool32
integerDotProduct32BitUnsignedAccelerated <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
92 :: Ptr Bool32))
    Bool32
integerDotProduct32BitSignedAccelerated <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
96 :: Ptr Bool32))
    Bool32
integerDotProduct32BitMixedSignednessAccelerated <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
100 :: Ptr Bool32))
    Bool32
integerDotProduct64BitUnsignedAccelerated <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
104 :: Ptr Bool32))
    Bool32
integerDotProduct64BitSignedAccelerated <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
108 :: Ptr Bool32))
    Bool32
integerDotProduct64BitMixedSignednessAccelerated <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
112 :: Ptr Bool32))
    Bool32
integerDotProductAccumulatingSaturating8BitUnsignedAccelerated <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
116 :: Ptr Bool32))
    Bool32
integerDotProductAccumulatingSaturating8BitSignedAccelerated <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
120 :: Ptr Bool32))
    Bool32
integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
124 :: Ptr Bool32))
    Bool32
integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
128 :: Ptr Bool32))
    Bool32
integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
132 :: Ptr Bool32))
    Bool32
integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
136 :: Ptr Bool32))
    Bool32
integerDotProductAccumulatingSaturating16BitUnsignedAccelerated <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
140 :: Ptr Bool32))
    Bool32
integerDotProductAccumulatingSaturating16BitSignedAccelerated <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
144 :: Ptr Bool32))
    Bool32
integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
148 :: Ptr Bool32))
    Bool32
integerDotProductAccumulatingSaturating32BitUnsignedAccelerated <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
152 :: Ptr Bool32))
    Bool32
integerDotProductAccumulatingSaturating32BitSignedAccelerated <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
156 :: Ptr Bool32))
    Bool32
integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
160 :: Ptr Bool32))
    Bool32
integerDotProductAccumulatingSaturating64BitUnsignedAccelerated <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
164 :: Ptr Bool32))
    Bool32
integerDotProductAccumulatingSaturating64BitSignedAccelerated <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
168 :: Ptr Bool32))
    Bool32
integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
172 :: Ptr Bool32))
    DeviceSize
storageTexelBufferOffsetAlignmentBytes <- forall a. Storable a => Ptr a -> IO a
peek @DeviceSize ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
176 :: Ptr DeviceSize))
    Bool32
storageTexelBufferOffsetSingleTexelAlignment <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
184 :: Ptr Bool32))
    DeviceSize
uniformTexelBufferOffsetAlignmentBytes <- forall a. Storable a => Ptr a -> IO a
peek @DeviceSize ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
192 :: Ptr DeviceSize))
    Bool32
uniformTexelBufferOffsetSingleTexelAlignment <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
200 :: Ptr Bool32))
    DeviceSize
maxBufferSize <- forall a. Storable a => Ptr a -> IO a
peek @DeviceSize ((Ptr PhysicalDeviceVulkan13Properties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
208 :: Ptr DeviceSize))
    forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ Word32
-> Word32
-> Word32
-> ShaderStageFlags
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> 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
-> DeviceSize
-> Bool
-> DeviceSize
-> Bool
-> DeviceSize
-> PhysicalDeviceVulkan13Properties
PhysicalDeviceVulkan13Properties
             Word32
minSubgroupSize
             Word32
maxSubgroupSize
             Word32
maxComputeWorkgroupSubgroups
             ShaderStageFlags
requiredSubgroupSizeStages
             Word32
maxInlineUniformBlockSize
             Word32
maxPerStageDescriptorInlineUniformBlocks
             Word32
maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks
             Word32
maxDescriptorSetInlineUniformBlocks
             Word32
maxDescriptorSetUpdateAfterBindInlineUniformBlocks
             Word32
maxInlineUniformTotalSize
             (Bool32 -> Bool
bool32ToBool Bool32
integerDotProduct8BitUnsignedAccelerated)
             (Bool32 -> Bool
bool32ToBool Bool32
integerDotProduct8BitSignedAccelerated)
             (Bool32 -> Bool
bool32ToBool Bool32
integerDotProduct8BitMixedSignednessAccelerated)
             (Bool32 -> Bool
bool32ToBool Bool32
integerDotProduct4x8BitPackedUnsignedAccelerated)
             (Bool32 -> Bool
bool32ToBool Bool32
integerDotProduct4x8BitPackedSignedAccelerated)
             (Bool32 -> Bool
bool32ToBool Bool32
integerDotProduct4x8BitPackedMixedSignednessAccelerated)
             (Bool32 -> Bool
bool32ToBool Bool32
integerDotProduct16BitUnsignedAccelerated)
             (Bool32 -> Bool
bool32ToBool Bool32
integerDotProduct16BitSignedAccelerated)
             (Bool32 -> Bool
bool32ToBool Bool32
integerDotProduct16BitMixedSignednessAccelerated)
             (Bool32 -> Bool
bool32ToBool Bool32
integerDotProduct32BitUnsignedAccelerated)
             (Bool32 -> Bool
bool32ToBool Bool32
integerDotProduct32BitSignedAccelerated)
             (Bool32 -> Bool
bool32ToBool Bool32
integerDotProduct32BitMixedSignednessAccelerated)
             (Bool32 -> Bool
bool32ToBool Bool32
integerDotProduct64BitUnsignedAccelerated)
             (Bool32 -> Bool
bool32ToBool Bool32
integerDotProduct64BitSignedAccelerated)
             (Bool32 -> Bool
bool32ToBool Bool32
integerDotProduct64BitMixedSignednessAccelerated)
             (Bool32 -> Bool
bool32ToBool Bool32
integerDotProductAccumulatingSaturating8BitUnsignedAccelerated)
             (Bool32 -> Bool
bool32ToBool Bool32
integerDotProductAccumulatingSaturating8BitSignedAccelerated)
             (Bool32 -> Bool
bool32ToBool Bool32
integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated)
             (Bool32 -> Bool
bool32ToBool Bool32
integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated)
             (Bool32 -> Bool
bool32ToBool Bool32
integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated)
             (Bool32 -> Bool
bool32ToBool Bool32
integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated)
             (Bool32 -> Bool
bool32ToBool Bool32
integerDotProductAccumulatingSaturating16BitUnsignedAccelerated)
             (Bool32 -> Bool
bool32ToBool Bool32
integerDotProductAccumulatingSaturating16BitSignedAccelerated)
             (Bool32 -> Bool
bool32ToBool Bool32
integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated)
             (Bool32 -> Bool
bool32ToBool Bool32
integerDotProductAccumulatingSaturating32BitUnsignedAccelerated)
             (Bool32 -> Bool
bool32ToBool Bool32
integerDotProductAccumulatingSaturating32BitSignedAccelerated)
             (Bool32 -> Bool
bool32ToBool Bool32
integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated)
             (Bool32 -> Bool
bool32ToBool Bool32
integerDotProductAccumulatingSaturating64BitUnsignedAccelerated)
             (Bool32 -> Bool
bool32ToBool Bool32
integerDotProductAccumulatingSaturating64BitSignedAccelerated)
             (Bool32 -> Bool
bool32ToBool Bool32
integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated)
             DeviceSize
storageTexelBufferOffsetAlignmentBytes
             (Bool32 -> Bool
bool32ToBool Bool32
storageTexelBufferOffsetSingleTexelAlignment)
             DeviceSize
uniformTexelBufferOffsetAlignmentBytes
             (Bool32 -> Bool
bool32ToBool Bool32
uniformTexelBufferOffsetSingleTexelAlignment)
             DeviceSize
maxBufferSize

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

instance Zero PhysicalDeviceVulkan13Properties where
  zero :: PhysicalDeviceVulkan13Properties
zero = Word32
-> Word32
-> Word32
-> ShaderStageFlags
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> Word32
-> 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
-> DeviceSize
-> Bool
-> DeviceSize
-> Bool
-> DeviceSize
-> PhysicalDeviceVulkan13Properties
PhysicalDeviceVulkan13Properties
           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