{-# language CPP #-}
-- No documentation found for Chapter "Core14"
module Vulkan.Core14  ( pattern API_VERSION_1_4
                      , PhysicalDeviceVulkan14Features(..)
                      , PhysicalDeviceVulkan14Properties(..)
                      , StructureType(..)
                      , module Vulkan.Core14.Enums
                      , module Vulkan.Core14.PromotedStreamingTransfers'
                      , module Vulkan.Core14.Promoted_From_VK_EXT_pipeline_protected_accessAdditionalFunctionality'
                      , module Vulkan.Core14.Promoted_From_VK_EXT_pipeline_robustnessAdditionalFunctionality'
                      , module Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap
                      , module Vulkan.Core14.Promoted_From_VK_KHR_global_priority
                      , module Vulkan.Core14.Promoted_From_VK_KHR_index_type_uint8Roadmap
                      , module Vulkan.Core14.Promoted_From_VK_KHR_line_rasterizationRoadmap
                      , module Vulkan.Core14.Promoted_From_VK_KHR_maintenance5Roadmap
                      , module Vulkan.Core14.Promoted_From_VK_KHR_maintenance6AdditionalFunctionality'
                      , module Vulkan.Core14.Promoted_From_VK_KHR_map_memory2Roadmap
                      , module Vulkan.Core14.Promoted_From_VK_KHR_push_descriptorRoadmap
                      , module Vulkan.Core14.Promoted_From_VK_KHR_shader_expect_assumeRoadmap
                      , module Vulkan.Core14.Promoted_From_VK_KHR_shader_float_controls2Roadmap
                      , module Vulkan.Core14.Promoted_From_VK_KHR_shader_subgroup_rotateRoadmap
                      , module Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisorRoadmap
                      ) where
import Vulkan.Core14.Enums
import Vulkan.Core14.PromotedStreamingTransfers'
import Vulkan.Core14.Promoted_From_VK_EXT_pipeline_protected_accessAdditionalFunctionality'
import Vulkan.Core14.Promoted_From_VK_EXT_pipeline_robustnessAdditionalFunctionality'
import Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_readRoadmap
import Vulkan.Core14.Promoted_From_VK_KHR_global_priority
import Vulkan.Core14.Promoted_From_VK_KHR_index_type_uint8Roadmap
import Vulkan.Core14.Promoted_From_VK_KHR_line_rasterizationRoadmap
import Vulkan.Core14.Promoted_From_VK_KHR_maintenance5Roadmap
import Vulkan.Core14.Promoted_From_VK_KHR_maintenance6AdditionalFunctionality'
import Vulkan.Core14.Promoted_From_VK_KHR_map_memory2Roadmap
import Vulkan.Core14.Promoted_From_VK_KHR_push_descriptorRoadmap
import Vulkan.Core14.Promoted_From_VK_KHR_shader_expect_assumeRoadmap
import Vulkan.Core14.Promoted_From_VK_KHR_shader_float_controls2Roadmap
import Vulkan.Core14.Promoted_From_VK_KHR_shader_subgroup_rotateRoadmap
import Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisorRoadmap
import Vulkan.CStruct.Utils (FixedArray)
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.Word (Word8)
import Data.ByteString (ByteString)
import Data.Kind (Type)
import Vulkan.Core10.FundamentalTypes (bool32ToBool)
import Vulkan.Core10.FundamentalTypes (boolToBool32)
import Vulkan.CStruct.Utils (peekByteStringFromSizedVectorPtr)
import Vulkan.CStruct.Utils (pokeFixedLengthByteString)
import Vulkan.Core10.FundamentalTypes (Bool32)
import Vulkan.Core10.Enums.ImageLayout (ImageLayout)
import Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior (PipelineRobustnessBufferBehavior)
import Vulkan.Core14.Enums.PipelineRobustnessImageBehavior (PipelineRobustnessImageBehavior)
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.Core10.APIConstants (UUID_SIZE)
import Vulkan.Version (pattern MAKE_API_VERSION)
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES))
import Vulkan.Core10.Enums.StructureType (StructureType(..))
pattern API_VERSION_1_4 :: Word32
pattern $mAPI_VERSION_1_4 :: forall {r}. Word32 -> ((# #) -> r) -> ((# #) -> r) -> r
$bAPI_VERSION_1_4 :: Word32
API_VERSION_1_4 = MAKE_API_VERSION 1 4 0


-- | VkPhysicalDeviceVulkan14Features - Structure describing the Vulkan 1.4
-- features that can be supported by an implementation
--
-- = Members
--
-- This structure describes the following features:
--
-- = Description
--
-- If the 'PhysicalDeviceVulkan14Features' structure is included in the
-- @pNext@ chain of the
-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
-- structure passed to
-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
-- it is filled in to indicate whether each corresponding feature is
-- supported. If the application wishes to use a
-- 'Vulkan.Core10.Handles.Device' with any features described by
-- 'PhysicalDeviceVulkan14Features', it /must/ add an instance of the
-- structure, with the desired feature members set to
-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
-- 'Vulkan.Core10.Handles.Device'.
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
-- 'Vulkan.Core10.FundamentalTypes.Bool32',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data PhysicalDeviceVulkan14Features = PhysicalDeviceVulkan14Features
  { -- | #features-globalPriorityQuery# @globalPriorityQuery@ indicates whether
    -- the implementation supports the ability to query global queue
    -- priorities.
    PhysicalDeviceVulkan14Features -> Bool
globalPriorityQuery :: Bool
  , -- | #features-shaderSubgroupRotate# @shaderSubgroupRotate@ specifies whether
    -- shader modules /can/ declare the @GroupNonUniformRotateKHR@ capability.
    PhysicalDeviceVulkan14Features -> Bool
shaderSubgroupRotate :: Bool
  , -- | #features-shaderSubgroupRotateClustered# @shaderSubgroupRotateClustered@
    -- specifies whether shader modules /can/ use the @ClusterSize@ operand to
    -- @OpGroupNonUniformRotateKHR@.
    PhysicalDeviceVulkan14Features -> Bool
shaderSubgroupRotateClustered :: Bool
  , -- | #features-shaderFloatControls2# @shaderFloatControls2@ specifies whether
    -- shader modules /can/ declare the @FloatControls2@ capability.
    PhysicalDeviceVulkan14Features -> Bool
shaderFloatControls2 :: Bool
  , -- | #features-shaderExpectAssume# @shaderExpectAssume@ specifies whether
    -- shader modules /can/ declare the @ExpectAssumeKHR@ capability.
    PhysicalDeviceVulkan14Features -> Bool
shaderExpectAssume :: Bool
  , -- | #features-rectangularLines# @rectangularLines@ indicates whether the
    -- implementation supports
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines rectangular line rasterization>.
    PhysicalDeviceVulkan14Features -> Bool
rectangularLines :: Bool
  , -- | #features-bresenhamLines# @bresenhamLines@ indicates whether the
    -- implementation supports
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-bresenham Bresenham-style line rasterization>.
    PhysicalDeviceVulkan14Features -> Bool
bresenhamLines :: Bool
  , -- | #features-smoothLines# @smoothLines@ indicates whether the
    -- implementation supports
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-smooth smooth line rasterization>.
    PhysicalDeviceVulkan14Features -> Bool
smoothLines :: Bool
  , -- | #features-stippledRectangularLines# @stippledRectangularLines@ indicates
    -- whether the implementation supports
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-stipple stippled line rasterization>
    -- with
    -- 'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR'
    -- lines.
    PhysicalDeviceVulkan14Features -> Bool
stippledRectangularLines :: Bool
  , -- | #features-stippledBresenhamLines# @stippledBresenhamLines@ indicates
    -- whether the implementation supports
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-stipple stippled line rasterization>
    -- with
    -- 'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM'
    -- lines.
    PhysicalDeviceVulkan14Features -> Bool
stippledBresenhamLines :: Bool
  , -- | #features-stippledSmoothLines# @stippledSmoothLines@ indicates whether
    -- the implementation supports
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-stipple stippled line rasterization>
    -- with
    -- 'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH'
    -- lines.
    PhysicalDeviceVulkan14Features -> Bool
stippledSmoothLines :: Bool
  , -- | #features-vertexAttributeInstanceRateDivisor#
    -- @vertexAttributeInstanceRateDivisor@ specifies whether vertex attribute
    -- fetching may be repeated in the case of instanced rendering.
    PhysicalDeviceVulkan14Features -> Bool
vertexAttributeInstanceRateDivisor :: Bool
  , -- | #features-vertexAttributeInstanceRateZeroDivisor#
    -- @vertexAttributeInstanceRateZeroDivisor@ specifies whether a zero value
    -- for
    -- 'Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.VertexInputBindingDivisorDescriptionEXT'::@divisor@
    -- is supported.
    PhysicalDeviceVulkan14Features -> Bool
vertexAttributeInstanceRateZeroDivisor :: Bool
  , -- | #features-indexTypeUint8# @indexTypeUint8@ indicates that
    -- 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT8' can be used with
    -- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5Roadmap.cmdBindIndexBuffer2'
    -- and 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer'.
    PhysicalDeviceVulkan14Features -> Bool
indexTypeUint8 :: Bool
  , -- | #features-dynamicRenderingLocalRead# @dynamicRenderingLocalRead@
    -- specifies that the implementation supports local reads inside dynamic
    -- render pass instances using the
    -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
    -- command.
    PhysicalDeviceVulkan14Features -> Bool
dynamicRenderingLocalRead :: Bool
  , -- | #features-maintenance5# @maintenance5@ indicates that the implementation
    -- supports the following:
    --
    -- -   The ability to expose support for the optional format
    --     'Vulkan.Core10.Enums.Format.FORMAT_A1B5G5R5_UNORM_PACK16'.
    --
    -- -   The ability to expose support for the optional format
    --     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM'.
    --
    -- -   A property to indicate that multisample coverage operations are
    --     performed after sample counting in EarlyFragmentTests mode.
    --
    -- -   Creating a 'Vulkan.Core10.Handles.BufferView' with a subset of the
    --     associated 'Vulkan.Core10.Handles.Buffer' usage using
    --     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5Roadmap.BufferUsageFlags2CreateInfo'.
    --
    -- -   A new function
    --     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5Roadmap.cmdBindIndexBuffer2',
    --     allowing a range of memory to be bound as an index buffer.
    --
    -- -   'Vulkan.Core10.DeviceInitialization.getDeviceProcAddr' will return
    --     @NULL@ for function pointers of core functions for versions higher
    --     than the version requested by the application.
    --
    -- -   'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2'
    --     supports using 'Vulkan.Core10.APIConstants.WHOLE_SIZE' in the
    --     @pSizes@ parameter.
    --
    -- -   If @PointSize@ is not written, a default value of @1.0@ is used for
    --     the size of points.
    --
    -- -   'Vulkan.Core10.Shader.ShaderModuleCreateInfo' /can/ be added as a
    --     chained structure to pipeline creation via
    --     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo',
    --     rather than having to create a shader module.
    --
    -- -   A function
    --     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5Roadmap.getRenderingAreaGranularity'
    --     to query the optimal render area for a dynamic rendering instance.
    --
    -- -   A property to indicate that depth\/stencil texturing operations with
    --     'Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_ONE' have
    --     defined behavior.
    --
    -- -   'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5Roadmap.getDeviceImageSubresourceLayout'
    --     allows an application to perform a
    --     'Vulkan.Core10.Image.getImageSubresourceLayout' query without having
    --     to create an image.
    --
    -- -   'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS' as the
    --     @layerCount@ member of
    --     'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers'.
    --
    -- -   A property to indicate whether @PointSize@ controls the final
    --     rasterization of polygons if
    --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-polygonmode polygon mode>
    --     is 'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_POINT'.
    --
    -- -   Two properties to indicate the non-strict line rasterization
    --     algorithm used.
    --
    -- -   Two new flags words
    --     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2'
    --     and 'Vulkan.Core14.Enums.BufferUsageFlags2.BufferUsageFlagBits2'.
    --
    -- -   Physical-device-level functions /can/ now be called with any value
    --     in the valid range for a type beyond the defined enumerants, such
    --     that applications can avoid checking individual features,
    --     extensions, or versions before querying supported properties of a
    --     particular enumerant.
    --
    -- -   Copies between images of any type are allowed, with 1D images
    --     treated as 2D images with a height of @1@.
    PhysicalDeviceVulkan14Features -> Bool
maintenance5 :: Bool
  , -- | #features-maintenance6# @maintenance6@ indicates that the implementation
    -- supports the following:
    --
    -- -   'Vulkan.Core10.APIConstants.NULL_HANDLE' /can/ be used when binding
    --     an index buffer
    --
    -- -   'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6AdditionalFunctionality'.BindMemoryStatus'
    --     /can/ be included in the @pNext@ chain of the
    --     'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo'
    --     and
    --     'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo'
    --     structures, enabling applications to retrieve
    --     'Vulkan.Core10.Enums.Result.Result' values for individual memory
    --     binding operations.
    --
    -- -   'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6AdditionalFunctionality'.PhysicalDeviceMaintenance6Properties'::@blockTexelViewCompatibleMultipleLayers@
    --     property to indicate that the implementation supports creating image
    --     views with
    --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT'
    --     where the @layerCount@ member of @subresourceRange@ is greater than
    --     @1@.
    --
    -- -   'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6AdditionalFunctionality'.PhysicalDeviceMaintenance6Properties'::@maxCombinedImageSamplerDescriptorCount@
    --     property which indicates the maximum descriptor size required for
    --     any
    --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion format that requires a sampler Y′CBCR conversion>
    --     supported by the implementation.
    --
    -- -   A
    --     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6AdditionalFunctionality'.PhysicalDeviceMaintenance6Properties'::@fragmentShadingRateClampCombinerInputs@
    --     property which indicates whether the implementation clamps the
    --     inputs to fragment shading rate combiner operations.
    PhysicalDeviceVulkan14Features -> Bool
maintenance6 :: Bool
  , -- | #features-pipelineProtectedAccess# @pipelineProtectedAccess@ indicates
    -- whether the implementation supports specifying protected access on
    -- individual pipelines.
    PhysicalDeviceVulkan14Features -> Bool
pipelineProtectedAccess :: Bool
  , -- | #features-pipelineRobustness# @pipelineRobustness@ indicates that
    -- robustness /can/ be requested on a per-pipeline-stage granularity.
    PhysicalDeviceVulkan14Features -> Bool
pipelineRobustness :: Bool
  , -- | #features-hostImageCopy# @hostImageCopy@ indicates that the
    -- implementation supports copying from host memory to images using the
    -- 'Vulkan.Core14.PromotedStreamingTransfers'.copyMemoryToImage' command,
    -- copying from images to host memory using the
    -- 'Vulkan.Core14.PromotedStreamingTransfers'.copyImageToMemory' command,
    -- and copying between images using the
    -- 'Vulkan.Core14.PromotedStreamingTransfers'.copyImageToImage' command.
    PhysicalDeviceVulkan14Features -> Bool
hostImageCopy :: Bool
  , -- | #features-pushDescriptor# @pushDescriptor@ indicates that the
    -- implementation supports push descriptors.
    PhysicalDeviceVulkan14Features -> Bool
pushDescriptor :: Bool
  }
  deriving (Typeable, PhysicalDeviceVulkan14Features
-> PhysicalDeviceVulkan14Features -> Bool
(PhysicalDeviceVulkan14Features
 -> PhysicalDeviceVulkan14Features -> Bool)
-> (PhysicalDeviceVulkan14Features
    -> PhysicalDeviceVulkan14Features -> Bool)
-> Eq PhysicalDeviceVulkan14Features
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PhysicalDeviceVulkan14Features
-> PhysicalDeviceVulkan14Features -> Bool
== :: PhysicalDeviceVulkan14Features
-> PhysicalDeviceVulkan14Features -> Bool
$c/= :: PhysicalDeviceVulkan14Features
-> PhysicalDeviceVulkan14Features -> Bool
/= :: PhysicalDeviceVulkan14Features
-> PhysicalDeviceVulkan14Features -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceVulkan14Features)
#endif
deriving instance Show PhysicalDeviceVulkan14Features

instance ToCStruct PhysicalDeviceVulkan14Features where
  withCStruct :: forall b.
PhysicalDeviceVulkan14Features
-> (Ptr PhysicalDeviceVulkan14Features -> IO b) -> IO b
withCStruct PhysicalDeviceVulkan14Features
x Ptr PhysicalDeviceVulkan14Features -> IO b
f = Int -> (Ptr PhysicalDeviceVulkan14Features -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
104 ((Ptr PhysicalDeviceVulkan14Features -> IO b) -> IO b)
-> (Ptr PhysicalDeviceVulkan14Features -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceVulkan14Features
p -> Ptr PhysicalDeviceVulkan14Features
-> PhysicalDeviceVulkan14Features -> IO b -> IO b
forall b.
Ptr PhysicalDeviceVulkan14Features
-> PhysicalDeviceVulkan14Features -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceVulkan14Features
p PhysicalDeviceVulkan14Features
x (Ptr PhysicalDeviceVulkan14Features -> IO b
f Ptr PhysicalDeviceVulkan14Features
p)
  pokeCStruct :: forall b.
Ptr PhysicalDeviceVulkan14Features
-> PhysicalDeviceVulkan14Features -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceVulkan14Features
p PhysicalDeviceVulkan14Features{Bool
globalPriorityQuery :: PhysicalDeviceVulkan14Features -> Bool
shaderSubgroupRotate :: PhysicalDeviceVulkan14Features -> Bool
shaderSubgroupRotateClustered :: PhysicalDeviceVulkan14Features -> Bool
shaderFloatControls2 :: PhysicalDeviceVulkan14Features -> Bool
shaderExpectAssume :: PhysicalDeviceVulkan14Features -> Bool
rectangularLines :: PhysicalDeviceVulkan14Features -> Bool
bresenhamLines :: PhysicalDeviceVulkan14Features -> Bool
smoothLines :: PhysicalDeviceVulkan14Features -> Bool
stippledRectangularLines :: PhysicalDeviceVulkan14Features -> Bool
stippledBresenhamLines :: PhysicalDeviceVulkan14Features -> Bool
stippledSmoothLines :: PhysicalDeviceVulkan14Features -> Bool
vertexAttributeInstanceRateDivisor :: PhysicalDeviceVulkan14Features -> Bool
vertexAttributeInstanceRateZeroDivisor :: PhysicalDeviceVulkan14Features -> Bool
indexTypeUint8 :: PhysicalDeviceVulkan14Features -> Bool
dynamicRenderingLocalRead :: PhysicalDeviceVulkan14Features -> Bool
maintenance5 :: PhysicalDeviceVulkan14Features -> Bool
maintenance6 :: PhysicalDeviceVulkan14Features -> Bool
pipelineProtectedAccess :: PhysicalDeviceVulkan14Features -> Bool
pipelineRobustness :: PhysicalDeviceVulkan14Features -> Bool
hostImageCopy :: PhysicalDeviceVulkan14Features -> Bool
pushDescriptor :: PhysicalDeviceVulkan14Features -> Bool
globalPriorityQuery :: Bool
shaderSubgroupRotate :: Bool
shaderSubgroupRotateClustered :: Bool
shaderFloatControls2 :: Bool
shaderExpectAssume :: Bool
rectangularLines :: Bool
bresenhamLines :: Bool
smoothLines :: Bool
stippledRectangularLines :: Bool
stippledBresenhamLines :: Bool
stippledSmoothLines :: Bool
vertexAttributeInstanceRateDivisor :: Bool
vertexAttributeInstanceRateZeroDivisor :: Bool
indexTypeUint8 :: Bool
dynamicRenderingLocalRead :: Bool
maintenance5 :: Bool
maintenance6 :: Bool
pipelineProtectedAccess :: Bool
pipelineRobustness :: Bool
hostImageCopy :: Bool
pushDescriptor :: Bool
..} IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
globalPriorityQuery))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderSubgroupRotate))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderSubgroupRotateClustered))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderFloatControls2))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderExpectAssume))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
rectangularLines))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
bresenhamLines))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
44 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
smoothLines))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
stippledRectangularLines))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
52 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
stippledBresenhamLines))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
56 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
stippledSmoothLines))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
60 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
vertexAttributeInstanceRateDivisor))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
64 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
vertexAttributeInstanceRateZeroDivisor))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
68 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
indexTypeUint8))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
72 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
dynamicRenderingLocalRead))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
76 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
maintenance5))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
80 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
maintenance6))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
84 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
pipelineProtectedAccess))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
88 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
pipelineRobustness))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
92 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
hostImageCopy))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
96 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
pushDescriptor))
    IO b
f
  cStructSize :: Int
cStructSize = Int
104
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b. Ptr PhysicalDeviceVulkan14Features -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceVulkan14Features
p IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
44 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
52 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
56 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
60 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
64 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
68 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
72 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
76 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
80 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
84 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
88 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
92 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
96 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    IO b
f

instance FromCStruct PhysicalDeviceVulkan14Features where
  peekCStruct :: Ptr PhysicalDeviceVulkan14Features
-> IO PhysicalDeviceVulkan14Features
peekCStruct Ptr PhysicalDeviceVulkan14Features
p = do
    globalPriorityQuery <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVulkan14Features
p Ptr PhysicalDeviceVulkan14Features -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
    shaderSubgroupRotate <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
    shaderSubgroupRotateClustered <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
    shaderFloatControls2 <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))
    shaderExpectAssume <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))
    rectangularLines <- peek @Bool32 ((p `plusPtr` 36 :: Ptr Bool32))
    bresenhamLines <- peek @Bool32 ((p `plusPtr` 40 :: Ptr Bool32))
    smoothLines <- peek @Bool32 ((p `plusPtr` 44 :: Ptr Bool32))
    stippledRectangularLines <- peek @Bool32 ((p `plusPtr` 48 :: Ptr Bool32))
    stippledBresenhamLines <- peek @Bool32 ((p `plusPtr` 52 :: Ptr Bool32))
    stippledSmoothLines <- peek @Bool32 ((p `plusPtr` 56 :: Ptr Bool32))
    vertexAttributeInstanceRateDivisor <- peek @Bool32 ((p `plusPtr` 60 :: Ptr Bool32))
    vertexAttributeInstanceRateZeroDivisor <- peek @Bool32 ((p `plusPtr` 64 :: Ptr Bool32))
    indexTypeUint8 <- peek @Bool32 ((p `plusPtr` 68 :: Ptr Bool32))
    dynamicRenderingLocalRead <- peek @Bool32 ((p `plusPtr` 72 :: Ptr Bool32))
    maintenance5 <- peek @Bool32 ((p `plusPtr` 76 :: Ptr Bool32))
    maintenance6 <- peek @Bool32 ((p `plusPtr` 80 :: Ptr Bool32))
    pipelineProtectedAccess <- peek @Bool32 ((p `plusPtr` 84 :: Ptr Bool32))
    pipelineRobustness <- peek @Bool32 ((p `plusPtr` 88 :: Ptr Bool32))
    hostImageCopy <- peek @Bool32 ((p `plusPtr` 92 :: Ptr Bool32))
    pushDescriptor <- peek @Bool32 ((p `plusPtr` 96 :: Ptr Bool32))
    pure $ PhysicalDeviceVulkan14Features
             (bool32ToBool globalPriorityQuery)
             (bool32ToBool shaderSubgroupRotate)
             (bool32ToBool shaderSubgroupRotateClustered)
             (bool32ToBool shaderFloatControls2)
             (bool32ToBool shaderExpectAssume)
             (bool32ToBool rectangularLines)
             (bool32ToBool bresenhamLines)
             (bool32ToBool smoothLines)
             (bool32ToBool stippledRectangularLines)
             (bool32ToBool stippledBresenhamLines)
             (bool32ToBool stippledSmoothLines)
             (bool32ToBool vertexAttributeInstanceRateDivisor)
             (bool32ToBool vertexAttributeInstanceRateZeroDivisor)
             (bool32ToBool indexTypeUint8)
             (bool32ToBool dynamicRenderingLocalRead)
             (bool32ToBool maintenance5)
             (bool32ToBool maintenance6)
             (bool32ToBool pipelineProtectedAccess)
             (bool32ToBool pipelineRobustness)
             (bool32ToBool hostImageCopy)
             (bool32ToBool pushDescriptor)

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

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


-- | VkPhysicalDeviceVulkan14Properties - Structure specifying physical
-- device properties for functionality promoted to Vulkan 1.4
--
-- = Description
--
-- If the 'PhysicalDeviceVulkan14Properties' 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.4 functionality.
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
-- 'Vulkan.Core10.FundamentalTypes.Bool32',
-- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
-- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PipelineRobustnessBufferBehavior',
-- 'Vulkan.Core14.Enums.PipelineRobustnessImageBehavior.PipelineRobustnessImageBehavior',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data PhysicalDeviceVulkan14Properties = PhysicalDeviceVulkan14Properties
  { -- | #limits-lineSubPixelPrecisionBits# @lineSubPixelPrecisionBits@ is the
    -- number of bits of subpixel precision in framebuffer coordinates xf and
    -- yf when rasterizing
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines line segments>.
    PhysicalDeviceVulkan14Properties -> Word32
lineSubPixelPrecisionBits :: Word32
  , -- | #limits-maxVertexAttribDivisor# @maxVertexAttribDivisor@ is the maximum
    -- value of the number of instances that will repeat the value of vertex
    -- attribute data when instanced rendering is enabled.
    PhysicalDeviceVulkan14Properties -> Word32
maxVertexAttribDivisor :: Word32
  , -- | #limits-supportsNonZeroFirstInstance# @supportsNonZeroFirstInstance@
    -- specifies whether a non-zero value for the @firstInstance@ parameter of
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing drawing commands>
    -- is supported when
    -- 'Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisorRoadmap.VertexInputBindingDivisorDescription'::@divisor@
    -- is not @1@.
    PhysicalDeviceVulkan14Properties -> Bool
supportsNonZeroFirstInstance :: Bool
  , -- | #limits-maxPushDescriptors# @maxPushDescriptors@ is the maximum number
    -- of descriptors that /can/ be used in a descriptor set layout created
    -- with
    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT'
    -- set.
    PhysicalDeviceVulkan14Properties -> Word32
maxPushDescriptors :: Word32
  , -- | #limits-dynamicRenderingLocalReadDepthStencilAttachments#
    -- @dynamicRenderingLocalReadDepthStencilAttachments@ is
    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the implementation supports
    -- local reads of depth\/stencil attachments,
    -- 'Vulkan.Core10.FundamentalTypes.FALSE' otherwise.
    PhysicalDeviceVulkan14Properties -> Bool
dynamicRenderingLocalReadDepthStencilAttachments :: Bool
  , -- | #limits-dynamicRenderingLocalReadMultisampledAttachments#
    -- @dynamicRenderingLocalReadMultisampledAttachments@ is
    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the implementation supports
    -- local reads of multisampled attachments,
    -- 'Vulkan.Core10.FundamentalTypes.FALSE' otherwise.
    PhysicalDeviceVulkan14Properties -> Bool
dynamicRenderingLocalReadMultisampledAttachments :: Bool
  , -- | @earlyFragmentMultisampleCoverageAfterSampleCounting@ is a boolean value
    -- indicating whether the
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-shader fragment shading>
    -- and
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-covg multisample coverage>
    -- operations are performed after
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-samplecount sample counting>
    -- for
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-shader fragment shaders>
    -- with @EarlyFragmentTests@ execution mode.
    PhysicalDeviceVulkan14Properties -> Bool
earlyFragmentMultisampleCoverageAfterSampleCounting :: Bool
  , -- | @earlyFragmentSampleMaskTestBeforeSampleCounting@ is a boolean value
    -- indicating whether the
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-samplemask sample mask test>
    -- operation is performed before
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-samplecount sample counting>
    -- for
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-shader fragment shaders>
    -- using the @EarlyFragmentTests@ execution mode.
    PhysicalDeviceVulkan14Properties -> Bool
earlyFragmentSampleMaskTestBeforeSampleCounting :: Bool
  , -- | @depthStencilSwizzleOneSupport@ is a boolean indicating that
    -- depth\/stencil texturing operations with
    -- 'Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_ONE' have
    -- defined behavior.
    PhysicalDeviceVulkan14Properties -> Bool
depthStencilSwizzleOneSupport :: Bool
  , -- | @polygonModePointSize@ is a boolean value indicating whether the point
    -- size of the final rasterization of polygons with
    -- 'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_POINT' is controlled by
    -- @PointSize@.
    PhysicalDeviceVulkan14Properties -> Bool
polygonModePointSize :: Bool
  , -- | @nonStrictSinglePixelWideLinesUseParallelogram@ is a boolean value
    -- indicating whether non-strict lines with a width of 1.0 are rasterized
    -- as parallelograms or using Bresenham’s algorithm.
    PhysicalDeviceVulkan14Properties -> Bool
nonStrictSinglePixelWideLinesUseParallelogram :: Bool
  , -- | @nonStrictWideLinesUseParallelogram@ is a boolean value indicating
    -- whether non-strict lines with a width greater than 1.0 are rasterized as
    -- parallelograms or using Bresenham’s algorithm.
    PhysicalDeviceVulkan14Properties -> Bool
nonStrictWideLinesUseParallelogram :: Bool
  , -- | @blockTexelViewCompatibleMultipleLayers@ is a boolean value indicating
    -- that an implementation supports creating image views with
    -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT'
    -- where the @layerCount@ member of @subresourceRange@ is greater than @1@.
    PhysicalDeviceVulkan14Properties -> Bool
blockTexelViewCompatibleMultipleLayers :: Bool
  , -- | @maxCombinedImageSamplerDescriptorCount@ is the maximum number of
    -- combined image sampler descriptors that the implementation uses to
    -- access any of the
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y′CBCR conversion>
    -- supported by the implementation.
    PhysicalDeviceVulkan14Properties -> Word32
maxCombinedImageSamplerDescriptorCount :: Word32
  , -- | @fragmentShadingRateClampCombinerInputs@ is a boolean value indicating
    -- that an implementation clamps the inputs to
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-combining combiner operations>.
    PhysicalDeviceVulkan14Properties -> Bool
fragmentShadingRateClampCombinerInputs :: Bool
  , -- | @defaultRobustnessStorageBuffers@ describes the behavior of out of
    -- bounds accesses made to storage buffers when no robustness features are
    -- enabled
    PhysicalDeviceVulkan14Properties
-> PipelineRobustnessBufferBehavior
defaultRobustnessStorageBuffers :: PipelineRobustnessBufferBehavior
  , -- | @defaultRobustnessUniformBuffers@ describes the behavior of out of
    -- bounds accesses made to uniform buffers when no robustness features are
    -- enabled
    PhysicalDeviceVulkan14Properties
-> PipelineRobustnessBufferBehavior
defaultRobustnessUniformBuffers :: PipelineRobustnessBufferBehavior
  , -- | @defaultRobustnessVertexInputs@ describes the behavior of out of bounds
    -- accesses made to vertex input attributes when no robustness features are
    -- enabled
    PhysicalDeviceVulkan14Properties
-> PipelineRobustnessBufferBehavior
defaultRobustnessVertexInputs :: PipelineRobustnessBufferBehavior
  , -- | @defaultRobustnessImages@ describes the behavior of out of bounds
    -- accesses made to images when no robustness features are enabled
    PhysicalDeviceVulkan14Properties -> PipelineRobustnessImageBehavior
defaultRobustnessImages :: PipelineRobustnessImageBehavior
  , -- | @copySrcLayoutCount@ is an integer related to the number of image
    -- layouts for host copies from images available or queried, as described
    -- below.
    PhysicalDeviceVulkan14Properties -> Word32
copySrcLayoutCount :: Word32
  , -- | @pCopySrcLayouts@ is a pointer to an array of
    -- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout' in which supported image
    -- layouts for use with host copy operations from images are returned.
    PhysicalDeviceVulkan14Properties -> Ptr ImageLayout
copySrcLayouts :: Ptr ImageLayout
  , -- | @copyDstLayoutCount@ is an integer related to the number of image
    -- layouts for host copies to images available or queried, as described
    -- below.
    PhysicalDeviceVulkan14Properties -> Word32
copyDstLayoutCount :: Word32
  , -- | @pCopyDstLayouts@ is a pointer to an array of
    -- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout' in which supported image
    -- layouts for use with host copy operations to images are returned.
    PhysicalDeviceVulkan14Properties -> Ptr ImageLayout
copyDstLayouts :: Ptr ImageLayout
  , -- | @optimalTilingLayoutUUID@ is an array of
    -- 'Vulkan.Core10.APIConstants.UUID_SIZE' @uint8_t@ values representing a
    -- universally unique identifier for the implementation’s swizzling layout
    -- of images created with
    -- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL'.
    PhysicalDeviceVulkan14Properties -> ByteString
optimalTilingLayoutUUID :: ByteString
  , -- | @identicalMemoryTypeRequirements@ indicates that specifying the
    -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT'
    -- flag in 'Vulkan.Core10.Image.ImageCreateInfo'::@usage@ does not affect
    -- the memory type requirements of the image.
    PhysicalDeviceVulkan14Properties -> Bool
identicalMemoryTypeRequirements :: Bool
  }
  deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceVulkan14Properties)
#endif
deriving instance Show PhysicalDeviceVulkan14Properties

instance ToCStruct PhysicalDeviceVulkan14Properties where
  withCStruct :: forall b.
PhysicalDeviceVulkan14Properties
-> (Ptr PhysicalDeviceVulkan14Properties -> IO b) -> IO b
withCStruct PhysicalDeviceVulkan14Properties
x Ptr PhysicalDeviceVulkan14Properties -> IO b
f = Int -> (Ptr PhysicalDeviceVulkan14Properties -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
144 ((Ptr PhysicalDeviceVulkan14Properties -> IO b) -> IO b)
-> (Ptr PhysicalDeviceVulkan14Properties -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceVulkan14Properties
p -> Ptr PhysicalDeviceVulkan14Properties
-> PhysicalDeviceVulkan14Properties -> IO b -> IO b
forall b.
Ptr PhysicalDeviceVulkan14Properties
-> PhysicalDeviceVulkan14Properties -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceVulkan14Properties
p PhysicalDeviceVulkan14Properties
x (Ptr PhysicalDeviceVulkan14Properties -> IO b
f Ptr PhysicalDeviceVulkan14Properties
p)
  pokeCStruct :: forall b.
Ptr PhysicalDeviceVulkan14Properties
-> PhysicalDeviceVulkan14Properties -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceVulkan14Properties
p PhysicalDeviceVulkan14Properties{Bool
Word32
Ptr ImageLayout
ByteString
PipelineRobustnessImageBehavior
PipelineRobustnessBufferBehavior
lineSubPixelPrecisionBits :: PhysicalDeviceVulkan14Properties -> Word32
maxVertexAttribDivisor :: PhysicalDeviceVulkan14Properties -> Word32
supportsNonZeroFirstInstance :: PhysicalDeviceVulkan14Properties -> Bool
maxPushDescriptors :: PhysicalDeviceVulkan14Properties -> Word32
dynamicRenderingLocalReadDepthStencilAttachments :: PhysicalDeviceVulkan14Properties -> Bool
dynamicRenderingLocalReadMultisampledAttachments :: PhysicalDeviceVulkan14Properties -> Bool
earlyFragmentMultisampleCoverageAfterSampleCounting :: PhysicalDeviceVulkan14Properties -> Bool
earlyFragmentSampleMaskTestBeforeSampleCounting :: PhysicalDeviceVulkan14Properties -> Bool
depthStencilSwizzleOneSupport :: PhysicalDeviceVulkan14Properties -> Bool
polygonModePointSize :: PhysicalDeviceVulkan14Properties -> Bool
nonStrictSinglePixelWideLinesUseParallelogram :: PhysicalDeviceVulkan14Properties -> Bool
nonStrictWideLinesUseParallelogram :: PhysicalDeviceVulkan14Properties -> Bool
blockTexelViewCompatibleMultipleLayers :: PhysicalDeviceVulkan14Properties -> Bool
maxCombinedImageSamplerDescriptorCount :: PhysicalDeviceVulkan14Properties -> Word32
fragmentShadingRateClampCombinerInputs :: PhysicalDeviceVulkan14Properties -> Bool
defaultRobustnessStorageBuffers :: PhysicalDeviceVulkan14Properties
-> PipelineRobustnessBufferBehavior
defaultRobustnessUniformBuffers :: PhysicalDeviceVulkan14Properties
-> PipelineRobustnessBufferBehavior
defaultRobustnessVertexInputs :: PhysicalDeviceVulkan14Properties
-> PipelineRobustnessBufferBehavior
defaultRobustnessImages :: PhysicalDeviceVulkan14Properties -> PipelineRobustnessImageBehavior
copySrcLayoutCount :: PhysicalDeviceVulkan14Properties -> Word32
copySrcLayouts :: PhysicalDeviceVulkan14Properties -> Ptr ImageLayout
copyDstLayoutCount :: PhysicalDeviceVulkan14Properties -> Word32
copyDstLayouts :: PhysicalDeviceVulkan14Properties -> Ptr ImageLayout
optimalTilingLayoutUUID :: PhysicalDeviceVulkan14Properties -> ByteString
identicalMemoryTypeRequirements :: PhysicalDeviceVulkan14Properties -> Bool
lineSubPixelPrecisionBits :: Word32
maxVertexAttribDivisor :: Word32
supportsNonZeroFirstInstance :: Bool
maxPushDescriptors :: Word32
dynamicRenderingLocalReadDepthStencilAttachments :: Bool
dynamicRenderingLocalReadMultisampledAttachments :: Bool
earlyFragmentMultisampleCoverageAfterSampleCounting :: Bool
earlyFragmentSampleMaskTestBeforeSampleCounting :: Bool
depthStencilSwizzleOneSupport :: Bool
polygonModePointSize :: Bool
nonStrictSinglePixelWideLinesUseParallelogram :: Bool
nonStrictWideLinesUseParallelogram :: Bool
blockTexelViewCompatibleMultipleLayers :: Bool
maxCombinedImageSamplerDescriptorCount :: Word32
fragmentShadingRateClampCombinerInputs :: Bool
defaultRobustnessStorageBuffers :: PipelineRobustnessBufferBehavior
defaultRobustnessUniformBuffers :: PipelineRobustnessBufferBehavior
defaultRobustnessVertexInputs :: PipelineRobustnessBufferBehavior
defaultRobustnessImages :: PipelineRobustnessImageBehavior
copySrcLayoutCount :: Word32
copySrcLayouts :: Ptr ImageLayout
copyDstLayoutCount :: Word32
copyDstLayouts :: Ptr ImageLayout
optimalTilingLayoutUUID :: ByteString
identicalMemoryTypeRequirements :: Bool
..} IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) (Word32
lineSubPixelPrecisionBits)
    Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Word32)) (Word32
maxVertexAttribDivisor)
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
supportsNonZeroFirstInstance))
    Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr Word32)) (Word32
maxPushDescriptors)
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
dynamicRenderingLocalReadDepthStencilAttachments))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
dynamicRenderingLocalReadMultisampledAttachments))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
earlyFragmentMultisampleCoverageAfterSampleCounting))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
44 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
earlyFragmentSampleMaskTestBeforeSampleCounting))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
depthStencilSwizzleOneSupport))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
52 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
polygonModePointSize))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
56 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
nonStrictSinglePixelWideLinesUseParallelogram))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
60 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
nonStrictWideLinesUseParallelogram))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
64 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
blockTexelViewCompatibleMultipleLayers))
    Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
68 :: Ptr Word32)) (Word32
maxCombinedImageSamplerDescriptorCount)
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
72 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
fragmentShadingRateClampCombinerInputs))
    Ptr PipelineRobustnessBufferBehavior
-> PipelineRobustnessBufferBehavior -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties
-> Int -> Ptr PipelineRobustnessBufferBehavior
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
76 :: Ptr PipelineRobustnessBufferBehavior)) (PipelineRobustnessBufferBehavior
defaultRobustnessStorageBuffers)
    Ptr PipelineRobustnessBufferBehavior
-> PipelineRobustnessBufferBehavior -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties
-> Int -> Ptr PipelineRobustnessBufferBehavior
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
80 :: Ptr PipelineRobustnessBufferBehavior)) (PipelineRobustnessBufferBehavior
defaultRobustnessUniformBuffers)
    Ptr PipelineRobustnessBufferBehavior
-> PipelineRobustnessBufferBehavior -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties
-> Int -> Ptr PipelineRobustnessBufferBehavior
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
84 :: Ptr PipelineRobustnessBufferBehavior)) (PipelineRobustnessBufferBehavior
defaultRobustnessVertexInputs)
    Ptr PipelineRobustnessImageBehavior
-> PipelineRobustnessImageBehavior -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties
-> Int -> Ptr PipelineRobustnessImageBehavior
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
88 :: Ptr PipelineRobustnessImageBehavior)) (PipelineRobustnessImageBehavior
defaultRobustnessImages)
    Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
92 :: Ptr Word32)) (Word32
copySrcLayoutCount)
    Ptr (Ptr ImageLayout) -> Ptr ImageLayout -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties
-> Int -> Ptr (Ptr ImageLayout)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
96 :: Ptr (Ptr ImageLayout))) (Ptr ImageLayout
copySrcLayouts)
    Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
104 :: Ptr Word32)) (Word32
copyDstLayoutCount)
    Ptr (Ptr ImageLayout) -> Ptr ImageLayout -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties
-> Int -> Ptr (Ptr ImageLayout)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
112 :: Ptr (Ptr ImageLayout))) (Ptr ImageLayout
copyDstLayouts)
    Ptr (FixedArray UUID_SIZE Word8) -> ByteString -> IO ()
forall (n :: Nat).
KnownNat n =>
Ptr (FixedArray n Word8) -> ByteString -> IO ()
pokeFixedLengthByteString ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties
-> Int -> Ptr (FixedArray UUID_SIZE Word8)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
120 :: Ptr (FixedArray UUID_SIZE Word8))) (ByteString
optimalTilingLayoutUUID)
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
136 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
identicalMemoryTypeRequirements))
    IO b
f
  cStructSize :: Int
cStructSize = Int
144
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b. Ptr PhysicalDeviceVulkan14Properties -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceVulkan14Properties
p IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
    Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
44 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
52 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
56 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
60 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
64 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
68 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
72 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr PipelineRobustnessBufferBehavior
-> PipelineRobustnessBufferBehavior -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties
-> Int -> Ptr PipelineRobustnessBufferBehavior
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
76 :: Ptr PipelineRobustnessBufferBehavior)) (PipelineRobustnessBufferBehavior
forall a. Zero a => a
zero)
    Ptr PipelineRobustnessBufferBehavior
-> PipelineRobustnessBufferBehavior -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties
-> Int -> Ptr PipelineRobustnessBufferBehavior
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
80 :: Ptr PipelineRobustnessBufferBehavior)) (PipelineRobustnessBufferBehavior
forall a. Zero a => a
zero)
    Ptr PipelineRobustnessBufferBehavior
-> PipelineRobustnessBufferBehavior -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties
-> Int -> Ptr PipelineRobustnessBufferBehavior
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
84 :: Ptr PipelineRobustnessBufferBehavior)) (PipelineRobustnessBufferBehavior
forall a. Zero a => a
zero)
    Ptr PipelineRobustnessImageBehavior
-> PipelineRobustnessImageBehavior -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties
-> Int -> Ptr PipelineRobustnessImageBehavior
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
88 :: Ptr PipelineRobustnessImageBehavior)) (PipelineRobustnessImageBehavior
forall a. Zero a => a
zero)
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
136 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    IO b
f

instance FromCStruct PhysicalDeviceVulkan14Properties where
  peekCStruct :: Ptr PhysicalDeviceVulkan14Properties
-> IO PhysicalDeviceVulkan14Properties
peekCStruct Ptr PhysicalDeviceVulkan14Properties
p = do
    lineSubPixelPrecisionBits <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceVulkan14Properties
p Ptr PhysicalDeviceVulkan14Properties -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32))
    maxVertexAttribDivisor <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
    supportsNonZeroFirstInstance <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
    maxPushDescriptors <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
    dynamicRenderingLocalReadDepthStencilAttachments <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))
    dynamicRenderingLocalReadMultisampledAttachments <- peek @Bool32 ((p `plusPtr` 36 :: Ptr Bool32))
    earlyFragmentMultisampleCoverageAfterSampleCounting <- peek @Bool32 ((p `plusPtr` 40 :: Ptr Bool32))
    earlyFragmentSampleMaskTestBeforeSampleCounting <- peek @Bool32 ((p `plusPtr` 44 :: Ptr Bool32))
    depthStencilSwizzleOneSupport <- peek @Bool32 ((p `plusPtr` 48 :: Ptr Bool32))
    polygonModePointSize <- peek @Bool32 ((p `plusPtr` 52 :: Ptr Bool32))
    nonStrictSinglePixelWideLinesUseParallelogram <- peek @Bool32 ((p `plusPtr` 56 :: Ptr Bool32))
    nonStrictWideLinesUseParallelogram <- peek @Bool32 ((p `plusPtr` 60 :: Ptr Bool32))
    blockTexelViewCompatibleMultipleLayers <- peek @Bool32 ((p `plusPtr` 64 :: Ptr Bool32))
    maxCombinedImageSamplerDescriptorCount <- peek @Word32 ((p `plusPtr` 68 :: Ptr Word32))
    fragmentShadingRateClampCombinerInputs <- peek @Bool32 ((p `plusPtr` 72 :: Ptr Bool32))
    defaultRobustnessStorageBuffers <- peek @PipelineRobustnessBufferBehavior ((p `plusPtr` 76 :: Ptr PipelineRobustnessBufferBehavior))
    defaultRobustnessUniformBuffers <- peek @PipelineRobustnessBufferBehavior ((p `plusPtr` 80 :: Ptr PipelineRobustnessBufferBehavior))
    defaultRobustnessVertexInputs <- peek @PipelineRobustnessBufferBehavior ((p `plusPtr` 84 :: Ptr PipelineRobustnessBufferBehavior))
    defaultRobustnessImages <- peek @PipelineRobustnessImageBehavior ((p `plusPtr` 88 :: Ptr PipelineRobustnessImageBehavior))
    copySrcLayoutCount <- peek @Word32 ((p `plusPtr` 92 :: Ptr Word32))
    pCopySrcLayouts <- peek @(Ptr ImageLayout) ((p `plusPtr` 96 :: Ptr (Ptr ImageLayout)))
    copyDstLayoutCount <- peek @Word32 ((p `plusPtr` 104 :: Ptr Word32))
    pCopyDstLayouts <- peek @(Ptr ImageLayout) ((p `plusPtr` 112 :: Ptr (Ptr ImageLayout)))
    optimalTilingLayoutUUID <- peekByteStringFromSizedVectorPtr ((p `plusPtr` 120 :: Ptr (FixedArray UUID_SIZE Word8)))
    identicalMemoryTypeRequirements <- peek @Bool32 ((p `plusPtr` 136 :: Ptr Bool32))
    pure $ PhysicalDeviceVulkan14Properties
             lineSubPixelPrecisionBits
             maxVertexAttribDivisor
             (bool32ToBool supportsNonZeroFirstInstance)
             maxPushDescriptors
             (bool32ToBool dynamicRenderingLocalReadDepthStencilAttachments)
             (bool32ToBool dynamicRenderingLocalReadMultisampledAttachments)
             (bool32ToBool earlyFragmentMultisampleCoverageAfterSampleCounting)
             (bool32ToBool earlyFragmentSampleMaskTestBeforeSampleCounting)
             (bool32ToBool depthStencilSwizzleOneSupport)
             (bool32ToBool polygonModePointSize)
             (bool32ToBool nonStrictSinglePixelWideLinesUseParallelogram)
             (bool32ToBool nonStrictWideLinesUseParallelogram)
             (bool32ToBool blockTexelViewCompatibleMultipleLayers)
             maxCombinedImageSamplerDescriptorCount
             (bool32ToBool fragmentShadingRateClampCombinerInputs)
             defaultRobustnessStorageBuffers
             defaultRobustnessUniformBuffers
             defaultRobustnessVertexInputs
             defaultRobustnessImages
             copySrcLayoutCount
             pCopySrcLayouts
             copyDstLayoutCount
             pCopyDstLayouts
             optimalTilingLayoutUUID
             (bool32ToBool identicalMemoryTypeRequirements)

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

instance Zero PhysicalDeviceVulkan14Properties where
  zero :: PhysicalDeviceVulkan14Properties
zero = Word32
-> Word32
-> Bool
-> Word32
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Word32
-> Bool
-> PipelineRobustnessBufferBehavior
-> PipelineRobustnessBufferBehavior
-> PipelineRobustnessBufferBehavior
-> PipelineRobustnessImageBehavior
-> Word32
-> Ptr ImageLayout
-> Word32
-> Ptr ImageLayout
-> ByteString
-> Bool
-> PhysicalDeviceVulkan14Properties
PhysicalDeviceVulkan14Properties
           Word32
forall a. Zero a => a
zero
           Word32
forall a. Zero a => a
zero
           Bool
forall a. Zero a => a
zero
           Word32
forall a. Zero a => a
zero
           Bool
forall a. Zero a => a
zero
           Bool
forall a. Zero a => a
zero
           Bool
forall a. Zero a => a
zero
           Bool
forall a. Zero a => a
zero
           Bool
forall a. Zero a => a
zero
           Bool
forall a. Zero a => a
zero
           Bool
forall a. Zero a => a
zero
           Bool
forall a. Zero a => a
zero
           Bool
forall a. Zero a => a
zero
           Word32
forall a. Zero a => a
zero
           Bool
forall a. Zero a => a
zero
           PipelineRobustnessBufferBehavior
forall a. Zero a => a
zero
           PipelineRobustnessBufferBehavior
forall a. Zero a => a
zero
           PipelineRobustnessBufferBehavior
forall a. Zero a => a
zero
           PipelineRobustnessImageBehavior
forall a. Zero a => a
zero
           Word32
forall a. Zero a => a
zero
           Ptr ImageLayout
forall a. Zero a => a
zero
           Word32
forall a. Zero a => a
zero
           Ptr ImageLayout
forall a. Zero a => a
zero
           ByteString
forall a. Monoid a => a
mempty
           Bool
forall a. Zero a => a
zero