packages feed

vulkan 3.16.2 → 3.17

raw patch · 82 files changed

+9870/−5799 lines, 82 files

Files

changelog.md view
@@ -2,6 +2,13 @@  ## WIP +## [3.17] - 2022-03-31+- Bump API version to v1.3.210+  - A significant breaking change is that+    `GraphicsPipelineCreateInfo.rasterizationState` is now optional (it's+    unused when VK_EXT_graphics_pipeline_library is enabled). Hence, this+    member is wrapped in `Maybe`+ ## [3.16.2] - 2022-02-07 - Zero instance for () 
package.yaml view
@@ -1,5 +1,5 @@ name: vulkan-version: "3.16.2"+version: "3.17" synopsis: Bindings to the Vulkan graphics API. description: Please see [the readme](https://github.com/expipiplus1/vulkan/#readme) category: Graphics
src/Vulkan/CStruct/Extends.hs view
@@ -170,9 +170,11 @@ import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block (DescriptorPoolInlineUniformBlockCreateInfo) import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (DescriptorPoolSize) import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (DescriptorSetAllocateInfo)+import {-# SOURCE #-} Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping (DescriptorSetBindingReferenceVALVE) import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (DescriptorSetLayoutBinding) import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (DescriptorSetLayoutBindingFlagsCreateInfo) import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (DescriptorSetLayoutCreateInfo)+import {-# SOURCE #-} Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping (DescriptorSetLayoutHostMappingInfoVALVE) import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_maintenance3 (DescriptorSetLayoutSupport) import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (DescriptorSetVariableDescriptorCountAllocateInfo) import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (DescriptorSetVariableDescriptorCountLayoutSupport)@@ -265,6 +267,7 @@ import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (GeometryNV) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (GeometryTrianglesNV) import {-# SOURCE #-} Vulkan.Core10.Pipeline (GraphicsPipelineCreateInfo)+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_graphics_pipeline_library (GraphicsPipelineLibraryCreateInfoEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (GraphicsPipelineShaderGroupsCreateInfoNV) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (GraphicsShaderGroupCreateInfoNV) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_hdr_metadata (HdrMetadataEXT)@@ -390,6 +393,7 @@ import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve (PhysicalDeviceDepthStencilResolveProperties) import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (PhysicalDeviceDescriptorIndexingFeatures) import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (PhysicalDeviceDescriptorIndexingProperties)+import {-# SOURCE #-} Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping (PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (PhysicalDeviceDeviceGeneratedCommandsFeaturesNV) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (PhysicalDeviceDeviceGeneratedCommandsPropertiesNV) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_memory_report (PhysicalDeviceDeviceMemoryReportFeaturesEXT)@@ -424,6 +428,8 @@ import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_fragment_shading_rate (PhysicalDeviceFragmentShadingRateKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_fragment_shading_rate (PhysicalDeviceFragmentShadingRatePropertiesKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_global_priority (PhysicalDeviceGlobalPriorityQueryFeaturesKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_graphics_pipeline_library (PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT)+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_graphics_pipeline_library (PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT) import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation (PhysicalDeviceGroupProperties) import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset (PhysicalDeviceHostQueryResetFeatures) import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (PhysicalDeviceIDProperties)@@ -469,6 +475,7 @@ import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_present_id (PhysicalDevicePresentIdFeaturesKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_present_wait (PhysicalDevicePresentWaitFeaturesKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_primitive_topology_list_restart (PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT)+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_primitives_generated_query (PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT) import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_private_data (PhysicalDevicePrivateDataFeatures) import {-# SOURCE #-} Vulkan.Core10.DeviceInitialization (PhysicalDeviceProperties) import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceProperties2)@@ -980,6 +987,7 @@   Extends DeviceCreateInfo PhysicalDeviceExternalMemoryRDMAFeaturesNV = ()   Extends DeviceCreateInfo PhysicalDeviceColorWriteEnableFeaturesEXT = ()   Extends DeviceCreateInfo PhysicalDeviceSynchronization2Features = ()+  Extends DeviceCreateInfo PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT = ()   Extends DeviceCreateInfo PhysicalDeviceInheritedViewportScissorFeaturesNV = ()   Extends DeviceCreateInfo PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT = ()   Extends DeviceCreateInfo PhysicalDeviceProvokingVertexFeaturesEXT = ()@@ -990,6 +998,8 @@   Extends DeviceCreateInfo PhysicalDeviceImageViewMinLodFeaturesEXT = ()   Extends DeviceCreateInfo PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = ()   Extends DeviceCreateInfo PhysicalDeviceLinearColorAttachmentFeaturesNV = ()+  Extends DeviceCreateInfo PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT = ()+  Extends DeviceCreateInfo PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE = ()   Extends DeviceQueueCreateInfo DeviceQueueGlobalPriorityCreateInfoKHR = ()   Extends FenceCreateInfo ExportFenceCreateInfo = ()   Extends FenceCreateInfo ExportFenceWin32HandleInfoKHR = ()@@ -1002,11 +1012,13 @@   Extends GraphicsPipelineCreateInfo PipelineRepresentativeFragmentTestStateCreateInfoNV = ()   Extends GraphicsPipelineCreateInfo PipelineCreationFeedbackCreateInfo = ()   Extends GraphicsPipelineCreateInfo PipelineCompilerControlCreateInfoAMD = ()+  Extends GraphicsPipelineCreateInfo PipelineLibraryCreateInfoKHR = ()   Extends GraphicsPipelineCreateInfo PipelineFragmentShadingRateStateCreateInfoKHR = ()   Extends GraphicsPipelineCreateInfo PipelineFragmentShadingRateEnumStateCreateInfoNV = ()   Extends GraphicsPipelineCreateInfo PipelineRenderingCreateInfo = ()   Extends GraphicsPipelineCreateInfo AttachmentSampleCountInfoAMD = ()   Extends GraphicsPipelineCreateInfo MultiviewPerViewAttributesInfoNVX = ()+  Extends GraphicsPipelineCreateInfo GraphicsPipelineLibraryCreateInfoEXT = ()   Extends ImageBlit2 CopyCommandTransformInfoQCOM = ()   Extends ImageCreateInfo DedicatedAllocationImageCreateInfoNV = ()   Extends ImageCreateInfo ExternalMemoryImageCreateInfoNV = ()@@ -1151,6 +1163,7 @@   Extends PhysicalDeviceFeatures2 PhysicalDeviceExternalMemoryRDMAFeaturesNV = ()   Extends PhysicalDeviceFeatures2 PhysicalDeviceColorWriteEnableFeaturesEXT = ()   Extends PhysicalDeviceFeatures2 PhysicalDeviceSynchronization2Features = ()+  Extends PhysicalDeviceFeatures2 PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT = ()   Extends PhysicalDeviceFeatures2 PhysicalDeviceInheritedViewportScissorFeaturesNV = ()   Extends PhysicalDeviceFeatures2 PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT = ()   Extends PhysicalDeviceFeatures2 PhysicalDeviceProvokingVertexFeaturesEXT = ()@@ -1161,6 +1174,8 @@   Extends PhysicalDeviceFeatures2 PhysicalDeviceImageViewMinLodFeaturesEXT = ()   Extends PhysicalDeviceFeatures2 PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = ()   Extends PhysicalDeviceFeatures2 PhysicalDeviceLinearColorAttachmentFeaturesNV = ()+  Extends PhysicalDeviceFeatures2 PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT = ()+  Extends PhysicalDeviceFeatures2 PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE = ()   Extends PhysicalDeviceImageFormatInfo2 PhysicalDeviceExternalImageFormatInfo = ()   Extends PhysicalDeviceImageFormatInfo2 ImageFormatListCreateInfo = ()   Extends PhysicalDeviceImageFormatInfo2 PhysicalDeviceImageDrmFormatModifierInfoEXT = ()@@ -1221,6 +1236,7 @@   Extends PhysicalDeviceProperties2 PhysicalDeviceProvokingVertexPropertiesEXT = ()   Extends PhysicalDeviceProperties2 PhysicalDeviceShaderIntegerDotProductProperties = ()   Extends PhysicalDeviceProperties2 PhysicalDeviceDrmPropertiesEXT = ()+  Extends PhysicalDeviceProperties2 PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT = ()   Extends PhysicalDeviceSurfaceInfo2KHR SurfaceFullScreenExclusiveInfoEXT = ()   Extends PhysicalDeviceSurfaceInfo2KHR SurfaceFullScreenExclusiveWin32InfoEXT = ()   Extends PipelineColorBlendStateCreateInfo PipelineColorBlendAdvancedStateCreateInfoEXT = ()@@ -1235,6 +1251,8 @@   Extends PipelineRasterizationStateCreateInfo PipelineRasterizationDepthClipStateCreateInfoEXT = ()   Extends PipelineRasterizationStateCreateInfo PipelineRasterizationLineStateCreateInfoEXT = ()   Extends PipelineRasterizationStateCreateInfo PipelineRasterizationProvokingVertexStateCreateInfoEXT = ()+  Extends PipelineShaderStageCreateInfo (ShaderModuleCreateInfo '[]) = ()+  Extends PipelineShaderStageCreateInfo DebugUtilsObjectNameInfoEXT = ()   Extends PipelineShaderStageCreateInfo PipelineShaderStageRequiredSubgroupSizeCreateInfo = ()   Extends PipelineTessellationStateCreateInfo PipelineTessellationDomainOriginStateCreateInfo = ()   Extends PipelineVertexInputStateCreateInfo PipelineVertexInputDivisorStateCreateInfoEXT = ()@@ -1407,6 +1425,7 @@   -> (forall e . (Extends a e, ToCStruct e, Show e) => e -> b)   -> IO b peekChainHead ty p c = case ty of+  STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO -> go @(ShaderModuleCreateInfo '[])   STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR -> go @DisplayPresentInfoKHR   STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT -> go @DebugReportCallbackCreateInfoEXT   STRUCTURE_TYPE_VALIDATION_FLAGS_EXT -> go @ValidationFlagsEXT@@ -1521,6 +1540,7 @@   STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR -> go @DeviceQueueGlobalPriorityCreateInfoKHR   STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR -> go @PhysicalDeviceGlobalPriorityQueryFeaturesKHR   STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR -> go @QueueFamilyGlobalPriorityPropertiesKHR+  STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT -> go @DebugUtilsObjectNameInfoEXT   STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT -> go @DebugUtilsMessengerCreateInfoEXT   STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT -> go @PhysicalDeviceDeviceMemoryReportFeaturesEXT   STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT -> go @DeviceDeviceMemoryReportCreateInfoEXT@@ -1671,6 +1691,7 @@   STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT -> go @PhysicalDeviceCustomBorderColorFeaturesEXT   STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT -> go @SamplerBorderColorComponentMappingCreateInfoEXT   STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT -> go @PhysicalDeviceBorderColorSwizzleFeaturesEXT+  STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR -> go @PipelineLibraryCreateInfoKHR   STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT -> go @PhysicalDeviceExtendedDynamicStateFeaturesEXT   STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT -> go @PhysicalDeviceExtendedDynamicState2FeaturesEXT   STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM -> go @RenderPassTransformBeginInfoQCOM@@ -1708,6 +1729,7 @@   STRUCTURE_TYPE_MEMORY_BARRIER_2 -> go @MemoryBarrier2   STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV -> go @QueueFamilyCheckpointProperties2NV   STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES -> go @PhysicalDeviceSynchronization2Features+  STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT -> go @PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT   STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV -> go @PhysicalDeviceInheritedViewportScissorFeaturesNV   STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV -> go @CommandBufferInheritanceViewportScissorInfoNV   STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT -> go @PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT@@ -1738,6 +1760,10 @@   STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT -> go @ImageViewMinLodCreateInfoEXT   STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM -> go @PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM   STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV -> go @PhysicalDeviceLinearColorAttachmentFeaturesNV+  STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT -> go @PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT+  STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT -> go @PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT+  STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT -> go @GraphicsPipelineLibraryCreateInfoEXT+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE -> go @PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE   t -> throwIO $ IOError Nothing InvalidArgument "peekChainHead" ("Unrecognized struct type: " <> show t) Nothing Nothing  where   go :: forall e . (Typeable e, FromCStruct e, ToCStruct e, Show e) => IO b@@ -1791,6 +1817,7 @@ pattern a ::& es <- (\a -> (a, getNext a) -> (a, es))   where a ::& es = setNext a es infix 6 ::&+{-# complete (::&) :: ShaderModuleCreateInfo #-} {-# complete (::&) :: DisplayPresentInfoKHR #-} {-# complete (::&) :: DebugReportCallbackCreateInfoEXT #-} {-# complete (::&) :: ValidationFlagsEXT #-}@@ -1905,6 +1932,7 @@ {-# complete (::&) :: DeviceQueueGlobalPriorityCreateInfoKHR #-} {-# complete (::&) :: PhysicalDeviceGlobalPriorityQueryFeaturesKHR #-} {-# complete (::&) :: QueueFamilyGlobalPriorityPropertiesKHR #-}+{-# complete (::&) :: DebugUtilsObjectNameInfoEXT #-} {-# complete (::&) :: DebugUtilsMessengerCreateInfoEXT #-} {-# complete (::&) :: PhysicalDeviceDeviceMemoryReportFeaturesEXT #-} {-# complete (::&) :: DeviceDeviceMemoryReportCreateInfoEXT #-}@@ -2055,6 +2083,7 @@ {-# complete (::&) :: PhysicalDeviceCustomBorderColorFeaturesEXT #-} {-# complete (::&) :: SamplerBorderColorComponentMappingCreateInfoEXT #-} {-# complete (::&) :: PhysicalDeviceBorderColorSwizzleFeaturesEXT #-}+{-# complete (::&) :: PipelineLibraryCreateInfoKHR #-} {-# complete (::&) :: PhysicalDeviceExtendedDynamicStateFeaturesEXT #-} {-# complete (::&) :: PhysicalDeviceExtendedDynamicState2FeaturesEXT #-} {-# complete (::&) :: RenderPassTransformBeginInfoQCOM #-}@@ -2092,6 +2121,7 @@ {-# complete (::&) :: MemoryBarrier2 #-} {-# complete (::&) :: QueueFamilyCheckpointProperties2NV #-} {-# complete (::&) :: PhysicalDeviceSynchronization2Features #-}+{-# complete (::&) :: PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT #-} {-# complete (::&) :: PhysicalDeviceInheritedViewportScissorFeaturesNV #-} {-# complete (::&) :: CommandBufferInheritanceViewportScissorInfoNV #-} {-# complete (::&) :: PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT #-}@@ -2122,6 +2152,10 @@ {-# complete (::&) :: ImageViewMinLodCreateInfoEXT #-} {-# complete (::&) :: PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM #-} {-# complete (::&) :: PhysicalDeviceLinearColorAttachmentFeaturesNV #-}+{-# complete (::&) :: PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT #-}+{-# complete (::&) :: PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT #-}+{-# complete (::&) :: GraphicsPipelineLibraryCreateInfoEXT #-}+{-# complete (::&) :: PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE #-}  -- | View the head and tail of a 'Chain', see '::&' --
src/Vulkan/Core10/CommandBufferBuilding.hs view
@@ -424,6 +424,12 @@ --     specified by this pipeline /must/ match that set in the previous --     pipeline --+-- -   #VUID-vkCmdBindPipeline-pipelineBindPoint-06653# If+--     @pipelineBindPoint@ is+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS',+--     @pipeline@ /must/ have been created without+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'+-- -- == Valid Usage (Implicit) -- -- -   #VUID-vkCmdBindPipeline-commandBuffer-parameter# @commandBuffer@@@ -1443,6 +1449,12 @@ --     'Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits.DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE' --     flag set --+-- -   #VUID-vkCmdBindDescriptorSets-layout-06564# If @layout@ was not+--     created with+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT',+--     each element of @pDescriptorSets@ /must/ be a valid+--     'Vulkan.Core10.Handles.DescriptorSetLayout'+-- -- == Valid Usage (Implicit) -- -- -   #VUID-vkCmdBindDescriptorSets-commandBuffer-parameter#@@ -1458,8 +1470,9 @@ -- -- -   #VUID-vkCmdBindDescriptorSets-pDescriptorSets-parameter# --     @pDescriptorSets@ /must/ be a valid pointer to an array of---     @descriptorSetCount@ valid 'Vulkan.Core10.Handles.DescriptorSet'---     handles+--     @descriptorSetCount@ valid or+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'+--     'Vulkan.Core10.Handles.DescriptorSet' handles -- -- -   #VUID-vkCmdBindDescriptorSets-pDynamicOffsets-parameter# If --     @dynamicOffsetCount@ is not @0@, @pDynamicOffsets@ /must/ be a valid@@ -1477,9 +1490,9 @@ --     @descriptorSetCount@ /must/ be greater than @0@ -- -- -   #VUID-vkCmdBindDescriptorSets-commonparent# Each of @commandBuffer@,---     @layout@, and the elements of @pDescriptorSets@ /must/ have been---     created, allocated, or retrieved from the same---     'Vulkan.Core10.Handles.Device'+--     @layout@, and the elements of @pDescriptorSets@ that are valid+--     handles of non-ignored parameters /must/ have been created,+--     allocated, or retrieved from the same 'Vulkan.Core10.Handles.Device' -- -- == Host Synchronization --@@ -1891,16 +1904,16 @@ --     'Vulkan.Core10.Handles.ImageView' or --     'Vulkan.Core10.Handles.BufferView' being written as a storage image --     or storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support+--     @OpTypeImage@ is @Unknown@ then the view’s format feature /must/+--     contain --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' -- -- -   #VUID-vkCmdDraw-OpTypeImage-06424# Any --     'Vulkan.Core10.Handles.ImageView' or --     'Vulkan.Core10.Handles.BufferView' being read as a storage image or --     storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support+--     @OpTypeImage@ is @Unknown@ then the view’s format feature /must/+--     contain --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT' -- -- -   #VUID-vkCmdDraw-None-02697# For each set /n/ that is statically used@@ -1997,6 +2010,22 @@ --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind --     point used by this command /must/ not be a protected resource --+-- -   #VUID-vkCmdDraw-None-06550# If the 'Vulkan.Core10.Handles.Pipeline'+--     object bound to the pipeline bind point used by this command+--     accesses a 'Vulkan.Core10.Handles.Sampler' or+--     'Vulkan.Core10.Handles.ImageView' object that enables+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+--     that object /must/ only be used with @OpImageSample*@ or+--     @OpImageSparseSample*@ instructions+--+-- -   #VUID-vkCmdDraw-ConstOffset-06551# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+--     object that enables+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+--     that object /must/ not use the @ConstOffset@ and @Offset@ operands+-- -- -   #VUID-vkCmdDraw-None-04115# If a 'Vulkan.Core10.Handles.ImageView' --     is accessed using @OpImageWrite@ as a result of this command, then --     the @Type@ of the @Texel@ operand of that instruction /must/ have at@@ -2100,6 +2129,14 @@ --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT' --     bit set --+-- -   #VUID-vkCmdDraw-None-06666# If the bound graphics pipeline state was+--     created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command+-- -- -   #VUID-vkCmdDraw-viewportCount-03417# If the bound graphics pipeline --     state was created with the --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'@@ -2359,6 +2396,18 @@ --     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@ --     used to create the currently bound graphics pipeline --+-- -   #VUID-vkCmdDraw-attachmentCount-06667# If the bound graphics+--     pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @attachmentCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'+--     /must/ be equal to the+--     'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'::@attachmentCount@+--     of the currently bound graphics pipeline+-- -- -   #VUID-vkCmdDraw-pDepthAttachment-06181# If the current render pass --     instance was begun with --     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'@@ -2509,6 +2558,24 @@ --     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@ --     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE' --+-- -   #VUID-vkCmdDraw-primitivesGeneratedQueryWithRasterizerDiscard-06708#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>+--     feature is not enabled and the+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+--     query is active,+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>+--     /must/ not be enabled.+--+-- -   #VUID-vkCmdDraw-primitivesGeneratedQueryWithNonZeroStreams-06709# If+--     the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>+--     feature is not enabled and the+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+--     query is active, the bound graphics pipeline /must/ not have been+--     created with a non-zero value in+--     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@.+-- -- -   #VUID-vkCmdDraw-commandBuffer-02712# If @commandBuffer@ is a --     protected command buffer and --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>@@ -2794,16 +2861,16 @@ --     'Vulkan.Core10.Handles.ImageView' or --     'Vulkan.Core10.Handles.BufferView' being written as a storage image --     or storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support+--     @OpTypeImage@ is @Unknown@ then the view’s format feature /must/+--     contain --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' -- -- -   #VUID-vkCmdDrawIndexed-OpTypeImage-06424# Any --     'Vulkan.Core10.Handles.ImageView' or --     'Vulkan.Core10.Handles.BufferView' being read as a storage image or --     storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support+--     @OpTypeImage@ is @Unknown@ then the view’s format feature /must/+--     contain --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT' -- -- -   #VUID-vkCmdDrawIndexed-None-02697# For each set /n/ that is@@ -2902,6 +2969,23 @@ --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind --     point used by this command /must/ not be a protected resource --+-- -   #VUID-vkCmdDrawIndexed-None-06550# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+--     object that enables+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+--     that object /must/ only be used with @OpImageSample*@ or+--     @OpImageSparseSample*@ instructions+--+-- -   #VUID-vkCmdDrawIndexed-ConstOffset-06551# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+--     object that enables+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+--     that object /must/ not use the @ConstOffset@ and @Offset@ operands+-- -- -   #VUID-vkCmdDrawIndexed-None-04115# If a --     'Vulkan.Core10.Handles.ImageView' is accessed using @OpImageWrite@ --     as a result of this command, then the @Type@ of the @Texel@ operand@@ -3008,6 +3092,14 @@ --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT' --     bit set --+-- -   #VUID-vkCmdDrawIndexed-None-06666# If the bound graphics pipeline+--     state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command+-- -- -   #VUID-vkCmdDrawIndexed-viewportCount-03417# If the bound graphics --     pipeline state was created with the --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'@@ -3267,6 +3359,18 @@ --     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@ --     used to create the currently bound graphics pipeline --+-- -   #VUID-vkCmdDrawIndexed-attachmentCount-06667# If the bound graphics+--     pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @attachmentCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'+--     /must/ be equal to the+--     'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'::@attachmentCount@+--     of the currently bound graphics pipeline+-- -- -   #VUID-vkCmdDrawIndexed-pDepthAttachment-06181# If the current render --     pass instance was begun with --     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'@@ -3417,6 +3521,24 @@ --     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@ --     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE' --+-- -   #VUID-vkCmdDrawIndexed-primitivesGeneratedQueryWithRasterizerDiscard-06708#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>+--     feature is not enabled and the+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+--     query is active,+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>+--     /must/ not be enabled.+--+-- -   #VUID-vkCmdDrawIndexed-primitivesGeneratedQueryWithNonZeroStreams-06709#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>+--     feature is not enabled and the+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+--     query is active, the bound graphics pipeline /must/ not have been+--     created with a non-zero value in+--     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@.+-- -- -   #VUID-vkCmdDrawIndexed-commandBuffer-02712# If @commandBuffer@ is a --     protected command buffer and --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>@@ -3696,16 +3818,16 @@ --     'Vulkan.Core10.Handles.ImageView' or --     'Vulkan.Core10.Handles.BufferView' being written as a storage image --     or storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support+--     @OpTypeImage@ is @Unknown@ then the view’s format feature /must/+--     contain --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' -- -- -   #VUID-vkCmdDrawIndirect-OpTypeImage-06424# Any --     'Vulkan.Core10.Handles.ImageView' or --     'Vulkan.Core10.Handles.BufferView' being read as a storage image or --     storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support+--     @OpTypeImage@ is @Unknown@ then the view’s format feature /must/+--     contain --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT' -- -- -   #VUID-vkCmdDrawIndirect-None-02697# For each set /n/ that is@@ -3804,6 +3926,23 @@ --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind --     point used by this command /must/ not be a protected resource --+-- -   #VUID-vkCmdDrawIndirect-None-06550# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+--     object that enables+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+--     that object /must/ only be used with @OpImageSample*@ or+--     @OpImageSparseSample*@ instructions+--+-- -   #VUID-vkCmdDrawIndirect-ConstOffset-06551# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+--     object that enables+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+--     that object /must/ not use the @ConstOffset@ and @Offset@ operands+-- -- -   #VUID-vkCmdDrawIndirect-None-04115# If a --     'Vulkan.Core10.Handles.ImageView' is accessed using @OpImageWrite@ --     as a result of this command, then the @Type@ of the @Texel@ operand@@ -3911,6 +4050,14 @@ --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT' --     bit set --+-- -   #VUID-vkCmdDrawIndirect-None-06666# If the bound graphics pipeline+--     state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command+-- -- -   #VUID-vkCmdDrawIndirect-viewportCount-03417# If the bound graphics --     pipeline state was created with the --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'@@ -4170,6 +4317,18 @@ --     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@ --     used to create the currently bound graphics pipeline --+-- -   #VUID-vkCmdDrawIndirect-attachmentCount-06667# If the bound graphics+--     pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @attachmentCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'+--     /must/ be equal to the+--     'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'::@attachmentCount@+--     of the currently bound graphics pipeline+-- -- -   #VUID-vkCmdDrawIndirect-pDepthAttachment-06181# If the current --     render pass instance was begun with --     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'@@ -4320,6 +4479,24 @@ --     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@ --     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE' --+-- -   #VUID-vkCmdDrawIndirect-primitivesGeneratedQueryWithRasterizerDiscard-06708#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>+--     feature is not enabled and the+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+--     query is active,+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>+--     /must/ not be enabled.+--+-- -   #VUID-vkCmdDrawIndirect-primitivesGeneratedQueryWithNonZeroStreams-06709#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>+--     feature is not enabled and the+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+--     query is active, the bound graphics pipeline /must/ not have been+--     created with a non-zero value in+--     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@.+-- -- -   #VUID-vkCmdDrawIndirect-None-04007# All vertex input bindings --     accessed via vertex input variables declared in the vertex shader --     entry point’s interface /must/ have either valid or@@ -4622,16 +4799,16 @@ --     'Vulkan.Core10.Handles.ImageView' or --     'Vulkan.Core10.Handles.BufferView' being written as a storage image --     or storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support+--     @OpTypeImage@ is @Unknown@ then the view’s format feature /must/+--     contain --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' -- -- -   #VUID-vkCmdDrawIndexedIndirect-OpTypeImage-06424# Any --     'Vulkan.Core10.Handles.ImageView' or --     'Vulkan.Core10.Handles.BufferView' being read as a storage image or --     storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support+--     @OpTypeImage@ is @Unknown@ then the view’s format feature /must/+--     contain --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT' -- -- -   #VUID-vkCmdDrawIndexedIndirect-None-02697# For each set /n/ that is@@ -4730,6 +4907,23 @@ --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind --     point used by this command /must/ not be a protected resource --+-- -   #VUID-vkCmdDrawIndexedIndirect-None-06550# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+--     object that enables+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+--     that object /must/ only be used with @OpImageSample*@ or+--     @OpImageSparseSample*@ instructions+--+-- -   #VUID-vkCmdDrawIndexedIndirect-ConstOffset-06551# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+--     object that enables+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+--     that object /must/ not use the @ConstOffset@ and @Offset@ operands+-- -- -   #VUID-vkCmdDrawIndexedIndirect-None-04115# If a --     'Vulkan.Core10.Handles.ImageView' is accessed using @OpImageWrite@ --     as a result of this command, then the @Type@ of the @Texel@ operand@@ -4837,6 +5031,14 @@ --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT' --     bit set --+-- -   #VUID-vkCmdDrawIndexedIndirect-None-06666# If the bound graphics+--     pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command+-- -- -   #VUID-vkCmdDrawIndexedIndirect-viewportCount-03417# If the bound --     graphics pipeline state was created with the --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'@@ -5096,6 +5298,18 @@ --     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@ --     used to create the currently bound graphics pipeline --+-- -   #VUID-vkCmdDrawIndexedIndirect-attachmentCount-06667# If the bound+--     graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @attachmentCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'+--     /must/ be equal to the+--     'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'::@attachmentCount@+--     of the currently bound graphics pipeline+-- -- -   #VUID-vkCmdDrawIndexedIndirect-pDepthAttachment-06181# If the --     current render pass instance was begun with --     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'@@ -5246,6 +5460,24 @@ --     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@ --     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE' --+-- -   #VUID-vkCmdDrawIndexedIndirect-primitivesGeneratedQueryWithRasterizerDiscard-06708#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>+--     feature is not enabled and the+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+--     query is active,+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>+--     /must/ not be enabled.+--+-- -   #VUID-vkCmdDrawIndexedIndirect-primitivesGeneratedQueryWithNonZeroStreams-06709#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>+--     feature is not enabled and the+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+--     query is active, the bound graphics pipeline /must/ not have been+--     created with a non-zero value in+--     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@.+-- -- -   #VUID-vkCmdDrawIndexedIndirect-None-04007# All vertex input bindings --     accessed via vertex input variables declared in the vertex shader --     entry point’s interface /must/ have either valid or@@ -5543,16 +5775,16 @@ --     'Vulkan.Core10.Handles.ImageView' or --     'Vulkan.Core10.Handles.BufferView' being written as a storage image --     or storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support+--     @OpTypeImage@ is @Unknown@ then the view’s format feature /must/+--     contain --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' -- -- -   #VUID-vkCmdDispatch-OpTypeImage-06424# Any --     'Vulkan.Core10.Handles.ImageView' or --     'Vulkan.Core10.Handles.BufferView' being read as a storage image or --     storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support+--     @OpTypeImage@ is @Unknown@ then the view’s format feature /must/+--     contain --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT' -- -- -   #VUID-vkCmdDispatch-None-02697# For each set /n/ that is statically@@ -5650,6 +5882,23 @@ --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind --     point used by this command /must/ not be a protected resource --+-- -   #VUID-vkCmdDispatch-None-06550# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+--     object that enables+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+--     that object /must/ only be used with @OpImageSample*@ or+--     @OpImageSparseSample*@ instructions+--+-- -   #VUID-vkCmdDispatch-ConstOffset-06551# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+--     object that enables+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+--     that object /must/ not use the @ConstOffset@ and @Offset@ operands+-- -- -   #VUID-vkCmdDispatch-None-04115# If a --     'Vulkan.Core10.Handles.ImageView' is accessed using @OpImageWrite@ --     as a result of this command, then the @Type@ of the @Texel@ operand@@ -5904,16 +6153,16 @@ --     'Vulkan.Core10.Handles.ImageView' or --     'Vulkan.Core10.Handles.BufferView' being written as a storage image --     or storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support+--     @OpTypeImage@ is @Unknown@ then the view’s format feature /must/+--     contain --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' -- -- -   #VUID-vkCmdDispatchIndirect-OpTypeImage-06424# Any --     'Vulkan.Core10.Handles.ImageView' or --     'Vulkan.Core10.Handles.BufferView' being read as a storage image or --     storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support+--     @OpTypeImage@ is @Unknown@ then the view’s format feature /must/+--     contain --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT' -- -- -   #VUID-vkCmdDispatchIndirect-None-02697# For each set /n/ that is@@ -6012,6 +6261,23 @@ --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind --     point used by this command /must/ not be a protected resource --+-- -   #VUID-vkCmdDispatchIndirect-None-06550# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+--     object that enables+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+--     that object /must/ only be used with @OpImageSample*@ or+--     @OpImageSparseSample*@ instructions+--+-- -   #VUID-vkCmdDispatchIndirect-ConstOffset-06551# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+--     object that enables+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+--     that object /must/ not use the @ConstOffset@ and @Offset@ operands+-- -- -   #VUID-vkCmdDispatchIndirect-None-04115# If a --     'Vulkan.Core10.Handles.ImageView' is accessed using @OpImageWrite@ --     as a result of this command, then the @Type@ of the @Texel@ operand@@ -6456,11 +6722,6 @@ --     of @srcImage@ /must/ contain --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_SRC_BIT' ----- -   #VUID-vkCmdCopyImage-srcImage-00126# @srcImage@ /must/ have been---     created with---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'---     usage flag--- -- -   #VUID-vkCmdCopyImage-srcImage-01546# If @srcImage@ is non-sparse --     then the image or /disjoint/ plane to be copied /must/ be bound --     completely and contiguously to a single@@ -6482,11 +6743,6 @@ --     of @dstImage@ /must/ contain --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_DST_BIT' ----- -   #VUID-vkCmdCopyImage-dstImage-00131# @dstImage@ /must/ have been---     created with---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'---     usage flag--- -- -   #VUID-vkCmdCopyImage-dstImage-01547# If @dstImage@ is non-sparse --     then the image or /disjoint/ plane that is the destination of the --     copy /must/ be bound completely and contiguously to a single@@ -6761,6 +7017,46 @@ --     @dstOffset.z@) /must/ equal the depth of the specified --     @dstSubresource@ of @dstImage@ --+-- -   #VUID-vkCmdCopyImage-aspect-06662# If the @aspect@ member of any+--     element of @pRegions@ includes any flag other than+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'+--     or @srcImage@ was not created with+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageStencilUsageCreateInfo separate stencil usage>,+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'+--     /must/ have been included in the+--     'Vulkan.Core10.Image.ImageCreateInfo'::@usage@ used to create+--     @srcImage@+--+-- -   #VUID-vkCmdCopyImage-aspect-06663# If the @aspect@ member of any+--     element of @pRegions@ includes any flag other than+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'+--     or @dstImage@ was not created with+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageStencilUsageCreateInfo separate stencil usage>,+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'+--     /must/ have been included in the+--     'Vulkan.Core10.Image.ImageCreateInfo'::@usage@ used to create+--     @dstImage@+--+-- -   #VUID-vkCmdCopyImage-aspect-06664# If the @aspect@ member of any+--     element of @pRegions@ includes+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',+--     and @srcImage@ was created with+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageStencilUsageCreateInfo separate stencil usage>,+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'+--     /must/ have been included in the+--     'Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo'::@stencilUsage@+--     used to create @srcImage@+--+-- -   #VUID-vkCmdCopyImage-aspect-06665# If the @aspect@ member of any+--     element of @pRegions@ includes+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',+--     and @dstImage@ was created with+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageStencilUsageCreateInfo separate stencil usage>,+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'+--     /must/ have been included in the+--     'Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo'::@stencilUsage@+--     used to create @dstImage@+-- -- == Valid Usage (Implicit) -- -- -   #VUID-vkCmdCopyImage-commandBuffer-parameter# @commandBuffer@ /must/@@ -6967,9 +7263,9 @@ -- -   No format conversion is supported between depth\/stencil images. The --     formats /must/ match. ----- -   Format conversions on unorm, snorm, unscaled and packed float---     formats of the copied aspect of the image are performed by first---     converting the pixels to float values.+-- -   Format conversions on unorm, snorm, scaled and packed float formats+--     of the copied aspect of the image are performed by first converting+--     the pixels to float values. -- -- -   For sRGB source formats, nonlinear RGB values are converted to --     linear representation prior to filtering.@@ -7018,7 +7314,7 @@ --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_BLIT_SRC_BIT' -- -- -   #VUID-vkCmdBlitImage-srcImage-06421# @srcImage@ /must/ not use a---     <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>+--     <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> -- -- -   #VUID-vkCmdBlitImage-srcImage-00219# @srcImage@ /must/ have been --     created with@@ -7046,7 +7342,7 @@ --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_BLIT_DST_BIT' -- -- -   #VUID-vkCmdBlitImage-dstImage-06422# @dstImage@ /must/ not use a---     <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>+--     <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> -- -- -   #VUID-vkCmdBlitImage-dstImage-00224# @dstImage@ /must/ have been --     created with@@ -8320,7 +8616,7 @@ -- -- -   #VUID-vkCmdClearColorImage-image-01545# @image@ /must/ not use any --     of the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y’CBCR conversion>+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y′CBCR conversion> -- -- -   #VUID-vkCmdClearColorImage-image-00003# If @image@ is non-sparse --     then it /must/ be bound completely and contiguously to a single@@ -10443,6 +10739,19 @@ --     'Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackPropertiesEXT'::@transformFeedbackQueries@ --     /must/ be supported --+-- -   #VUID-vkCmdBeginQuery-queryType-06687# If the @queryType@ used to+--     create @queryPool@ was+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+--     the 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics operations+--+-- -   #VUID-vkCmdBeginQuery-queryType-06688# If the @queryType@ used to+--     create @queryPool@ was+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+--     then+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitivesGeneratedQuery primitivesGeneratedQuery>+--     /must/ be enabled+-- -- -   #VUID-vkCmdBeginQuery-queryPool-03223# If @queryPool@ was created --     with a @queryType@ of --     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',@@ -11045,8 +11354,8 @@ -- is being requested. -- -- Results for all requested occlusion queries, pipeline statistics--- queries, transform feedback queries, and timestamp queries are written--- as 64-bit unsigned integer values if+-- queries, transform feedback queries, primitives generated queries, and+-- timestamp queries are written as 64-bit unsigned integer values if -- 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT' is set or -- 32-bit unsigned integer values otherwise. Performance queries store -- results in a tightly packed array whose type is determined by the @unit@@@ -12596,6 +12905,12 @@ --     the number of slices of the @extent@ (for 3D) or layers of the --     @dstSubresource@ (for non-3D) --+-- -   #VUID-VkImageCopy-extent-06668# @extent.width@ /must/ not be 0+--+-- -   #VUID-VkImageCopy-extent-06669# @extent.height@ /must/ not be 0+--+-- -   #VUID-VkImageCopy-extent-06670# @extent.depth@ /must/ not be 0+-- -- == Valid Usage (Implicit) -- -- -   #VUID-VkImageCopy-srcSubresource-parameter# @srcSubresource@ /must/@@ -12853,6 +13168,15 @@ -- -- -   #VUID-VkBufferImageCopy-aspectMask-00212# The @aspectMask@ member of --     @imageSubresource@ /must/ only have a single bit set+--+-- -   #VUID-VkBufferImageCopy-imageExtent-06659# @imageExtent.width@+--     /must/ not be 0+--+-- -   #VUID-VkBufferImageCopy-imageExtent-06660# @imageExtent.height@+--     /must/ not be 0+--+-- -   #VUID-VkBufferImageCopy-imageExtent-06661# @imageExtent.depth@+--     /must/ not be 0 -- -- == Valid Usage (Implicit) --
src/Vulkan/Core10/Device.hs view
@@ -109,6 +109,7 @@ import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clip_control (PhysicalDeviceDepthClipControlFeaturesEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clip_enable (PhysicalDeviceDepthClipEnableFeaturesEXT) import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (PhysicalDeviceDescriptorIndexingFeatures)+import {-# SOURCE #-} Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping (PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (PhysicalDeviceDeviceGeneratedCommandsFeaturesNV) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_memory_report (PhysicalDeviceDeviceMemoryReportFeaturesEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_diagnostics_config (PhysicalDeviceDiagnosticsConfigFeaturesNV)@@ -127,6 +128,7 @@ import {-# SOURCE #-} Vulkan.Extensions.VK_NV_fragment_shading_rate_enums (PhysicalDeviceFragmentShadingRateEnumsFeaturesNV) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_fragment_shading_rate (PhysicalDeviceFragmentShadingRateFeaturesKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_global_priority (PhysicalDeviceGlobalPriorityQueryFeaturesKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_graphics_pipeline_library (PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT) import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset (PhysicalDeviceHostQueryResetFeatures) import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_image_robustness (PhysicalDeviceImageRobustnessFeatures) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_view_min_lod (PhysicalDeviceImageViewMinLodFeaturesEXT)@@ -151,6 +153,7 @@ import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_present_id (PhysicalDevicePresentIdFeaturesKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_present_wait (PhysicalDevicePresentWaitFeaturesKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_primitive_topology_list_restart (PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT)+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_primitives_generated_query (PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT) import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_private_data (PhysicalDevicePrivateDataFeatures) import {-# SOURCE #-} Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (PhysicalDeviceProtectedMemoryFeatures) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_provoking_vertex (PhysicalDeviceProvokingVertexFeaturesEXT)@@ -574,6 +577,13 @@ --     can share the same @queueFamilyIndex@ if one is a protected-capable --     queue and one is not a protected-capable queue --+-- -   #VUID-VkDeviceCreateInfo-pQueueCreateInfos-06654# If multiple+--     elements of @pQueueCreateInfos@ share the same @queueFamilyIndex@,+--     then all of such elements /must/ have the same global priority+--     level, which /can/ be specified explicitly by the including a+--     'Vulkan.Extensions.VK_KHR_global_priority.DeviceQueueGlobalPriorityCreateInfoKHR'+--     structure in the @pNext@ chain, or by the implicit default value+-- -- -   #VUID-VkDeviceCreateInfo-pNext-00373# If the @pNext@ chain includes --     a --     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'@@ -790,6 +800,7 @@ --     'Vulkan.Extensions.VK_EXT_depth_clip_control.PhysicalDeviceDepthClipControlFeaturesEXT', --     'Vulkan.Extensions.VK_EXT_depth_clip_enable.PhysicalDeviceDepthClipEnableFeaturesEXT', --     'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingFeatures',+--     'Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping.PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE', --     'Vulkan.Extensions.VK_NV_device_generated_commands.PhysicalDeviceDeviceGeneratedCommandsFeaturesNV', --     'Vulkan.Extensions.VK_EXT_device_memory_report.PhysicalDeviceDeviceMemoryReportFeaturesEXT', --     'Vulkan.Extensions.VK_NV_device_diagnostics_config.PhysicalDeviceDiagnosticsConfigFeaturesNV',@@ -807,6 +818,7 @@ --     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PhysicalDeviceFragmentShadingRateEnumsFeaturesNV', --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PhysicalDeviceFragmentShadingRateFeaturesKHR', --     'Vulkan.Extensions.VK_KHR_global_priority.PhysicalDeviceGlobalPriorityQueryFeaturesKHR',+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT', --     'Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset.PhysicalDeviceHostQueryResetFeatures', --     'Vulkan.Core13.Promoted_From_VK_EXT_image_robustness.PhysicalDeviceImageRobustnessFeatures', --     'Vulkan.Extensions.VK_EXT_image_view_min_lod.PhysicalDeviceImageViewMinLodFeaturesEXT',@@ -831,6 +843,7 @@ --     'Vulkan.Extensions.VK_KHR_present_id.PhysicalDevicePresentIdFeaturesKHR', --     'Vulkan.Extensions.VK_KHR_present_wait.PhysicalDevicePresentWaitFeaturesKHR', --     'Vulkan.Extensions.VK_EXT_primitive_topology_list_restart.PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT',+--     'Vulkan.Extensions.VK_EXT_primitives_generated_query.PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT', --     'Vulkan.Core13.Promoted_From_VK_EXT_private_data.PhysicalDevicePrivateDataFeatures', --     'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryFeatures', --     'Vulkan.Extensions.VK_EXT_provoking_vertex.PhysicalDeviceProvokingVertexFeaturesEXT',@@ -960,6 +973,8 @@   getNext DeviceCreateInfo{..} = next   extends :: forall e b proxy. Typeable e => proxy e -> (Extends DeviceCreateInfo e => b) -> Maybe b   extends _ f+    | Just Refl <- eqT @e @PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE = Just f+    | Just Refl <- eqT @e @PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT = Just f     | Just Refl <- eqT @e @PhysicalDeviceLinearColorAttachmentFeaturesNV = Just f     | Just Refl <- eqT @e @PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = Just f     | Just Refl <- eqT @e @PhysicalDeviceImageViewMinLodFeaturesEXT = Just f@@ -970,6 +985,7 @@     | Just Refl <- eqT @e @PhysicalDeviceProvokingVertexFeaturesEXT = Just f     | Just Refl <- eqT @e @PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT = Just f     | Just Refl <- eqT @e @PhysicalDeviceInheritedViewportScissorFeaturesNV = Just f+    | Just Refl <- eqT @e @PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT = Just f     | Just Refl <- eqT @e @PhysicalDeviceSynchronization2Features = Just f     | Just Refl <- eqT @e @PhysicalDeviceColorWriteEnableFeaturesEXT = Just f     | Just Refl <- eqT @e @PhysicalDeviceExternalMemoryRDMAFeaturesNV = Just f
src/Vulkan/Core10/DeviceInitialization.hs view
@@ -27,7 +27,6 @@                                            , Instance(..)                                            , PhysicalDevice(..)                                            , AllocationCallbacks(..)-                                           , InstanceCreateFlags(..)                                            , ImageType(..)                                            , ImageTiling(..)                                            , InternalAllocationType(..)@@ -48,6 +47,8 @@                                            , FormatFeatureFlags                                            , SampleCountFlagBits(..)                                            , SampleCountFlags+                                           , InstanceCreateFlagBits(..)+                                           , InstanceCreateFlags                                            , FN_vkInternalAllocationNotification                                            , PFN_vkInternalAllocationNotification                                            , FN_vkInternalFreeNotification@@ -170,7 +171,7 @@ import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceMemoryProperties)) import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceProperties)) import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceQueueFamilyProperties))-import Vulkan.Core10.Enums.InstanceCreateFlags (InstanceCreateFlags)+import Vulkan.Core10.Enums.InstanceCreateFlagBits (InstanceCreateFlags) import Vulkan.Core10.Handles (Instance_T) import Vulkan.Core10.APIConstants (MAX_MEMORY_HEAPS) import Vulkan.Core10.APIConstants (MAX_MEMORY_TYPES)@@ -219,7 +220,8 @@ import Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlagBits(..)) import Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags) import Vulkan.Core10.Handles (Instance(..))-import Vulkan.Core10.Enums.InstanceCreateFlags (InstanceCreateFlags(..))+import Vulkan.Core10.Enums.InstanceCreateFlagBits (InstanceCreateFlagBits(..))+import Vulkan.Core10.Enums.InstanceCreateFlagBits (InstanceCreateFlags) import Vulkan.Core10.Enums.InternalAllocationType (InternalAllocationType(..)) import Vulkan.Core10.Enums.MemoryHeapFlagBits (MemoryHeapFlagBits(..)) import Vulkan.Core10.Enums.MemoryHeapFlagBits (MemoryHeapFlags)@@ -624,9 +626,11 @@ -- | non-@NULL@       |                       |                  | -- | instance         |                       |                  | -- +------------------+-----------------------+------------------++-- | @NULL@           | /global command/2     | fp               |+-- +------------------+-----------------------+------------------+ -- | @NULL@           | 'getInstanceProcAddr' | fp5              | -- +------------------+-----------------------+------------------+--- | @NULL@           | /global command/2     | fp               |+-- | instance         | 'getInstanceProcAddr' | fp               | -- +------------------+-----------------------+------------------+ -- | instance         | core /dispatchable    | fp3              | -- |                  | command/              |                  |@@ -1441,6 +1445,11 @@ --     @ppEnabledExtensionNames@ /must/ contain --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_utils VK_EXT_debug_utils> --+-- -   #VUID-VkInstanceCreateInfo-flags-06559# If @flags@ has the+--     'Vulkan.Core10.Enums.InstanceCreateFlagBits.INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR'+--     bit set, the list of enabled extensions in @ppEnabledExtensionNames@+--     /must/ contain @VK_KHR_portability_enumeration@+-- -- == Valid Usage (Implicit) -- -- -   #VUID-VkInstanceCreateInfo-sType-sType# @sType@ /must/ be@@ -1459,7 +1468,10 @@ --     structures of type --     'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsMessengerCreateInfoEXT' ----- -   #VUID-VkInstanceCreateInfo-flags-zerobitmask# @flags@ /must/ be @0@+-- -   #VUID-VkInstanceCreateInfo-flags-parameter# @flags@ /must/ be a+--     valid combination of+--     'Vulkan.Core10.Enums.InstanceCreateFlagBits.InstanceCreateFlagBits'+--     values -- -- -   #VUID-VkInstanceCreateInfo-pApplicationInfo-parameter# If --     @pApplicationInfo@ is not @NULL@, @pApplicationInfo@ /must/ be a@@ -1479,12 +1491,14 @@ -- -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>, -- 'ApplicationInfo',--- 'Vulkan.Core10.Enums.InstanceCreateFlags.InstanceCreateFlags',+-- 'Vulkan.Core10.Enums.InstanceCreateFlagBits.InstanceCreateFlags', -- 'Vulkan.Core10.Enums.StructureType.StructureType', 'createInstance' data InstanceCreateInfo (es :: [Type]) = InstanceCreateInfo   { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.     next :: Chain es-  , -- | @flags@ is reserved for future use.+  , -- | @flags@ is a bitmask of+    -- 'Vulkan.Core10.Enums.InstanceCreateFlagBits.InstanceCreateFlagBits'+    -- indicating the behavior of the instance.     flags :: InstanceCreateFlags   , -- | @pApplicationInfo@ is @NULL@ or a pointer to a 'ApplicationInfo'     -- structure. If not @NULL@, this information helps implementations@@ -2267,7 +2281,7 @@ --         member for which mipmap image support is not required -- --     -   image @format@ is one of the---         <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y’CBCR conversion>+--         <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y′CBCR conversion> -- --     -   @flags@ contains --         'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'@@ -2286,7 +2300,7 @@ --         @type@ is 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D' -- --     -   @format@ is one of the---         <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y’CBCR conversion>+--         <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y′CBCR conversion> -- -- -   If @tiling@ is --     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT',
src/Vulkan/Core10/Enums.hs view
@@ -43,7 +43,7 @@                             , module Vulkan.Core10.Enums.ImageViewCreateFlagBits                             , module Vulkan.Core10.Enums.ImageViewType                             , module Vulkan.Core10.Enums.IndexType-                            , module Vulkan.Core10.Enums.InstanceCreateFlags+                            , module Vulkan.Core10.Enums.InstanceCreateFlagBits                             , module Vulkan.Core10.Enums.InternalAllocationType                             , module Vulkan.Core10.Enums.LogicOp                             , module Vulkan.Core10.Enums.MemoryHeapFlagBits@@ -59,7 +59,7 @@                             , module Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits                             , module Vulkan.Core10.Enums.PipelineDynamicStateCreateFlags                             , module Vulkan.Core10.Enums.PipelineInputAssemblyStateCreateFlags-                            , module Vulkan.Core10.Enums.PipelineLayoutCreateFlags+                            , module Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits                             , module Vulkan.Core10.Enums.PipelineMultisampleStateCreateFlags                             , module Vulkan.Core10.Enums.PipelineRasterizationStateCreateFlags                             , module Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits@@ -139,7 +139,7 @@ import Vulkan.Core10.Enums.ImageViewCreateFlagBits import Vulkan.Core10.Enums.ImageViewType import Vulkan.Core10.Enums.IndexType-import Vulkan.Core10.Enums.InstanceCreateFlags+import Vulkan.Core10.Enums.InstanceCreateFlagBits import Vulkan.Core10.Enums.InternalAllocationType import Vulkan.Core10.Enums.LogicOp import Vulkan.Core10.Enums.MemoryHeapFlagBits@@ -155,7 +155,7 @@ import Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits import Vulkan.Core10.Enums.PipelineDynamicStateCreateFlags import Vulkan.Core10.Enums.PipelineInputAssemblyStateCreateFlags-import Vulkan.Core10.Enums.PipelineLayoutCreateFlags+import Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits import Vulkan.Core10.Enums.PipelineMultisampleStateCreateFlags import Vulkan.Core10.Enums.PipelineRasterizationStateCreateFlags import Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits
+ src/Vulkan/Core10/Enums/InstanceCreateFlagBits.hs view
@@ -0,0 +1,58 @@+{-# language CPP #-}+-- No documentation found for Chapter "InstanceCreateFlagBits"+module Vulkan.Core10.Enums.InstanceCreateFlagBits  ( InstanceCreateFlags+                                                   , InstanceCreateFlagBits( INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR+                                                                           , ..+                                                                           )+                                                   ) where++import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec)+import GHC.Show (showString)+import Numeric (showHex)+import Vulkan.Zero (Zero)+import Data.Bits (Bits)+import Data.Bits (FiniteBits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec))+import Vulkan.Core10.FundamentalTypes (Flags)+type InstanceCreateFlags = InstanceCreateFlagBits++-- | VkInstanceCreateFlagBits - Bitmask specifying behavior of the instance+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'InstanceCreateFlags'+newtype InstanceCreateFlagBits = InstanceCreateFlagBits Flags+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)++-- | 'INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR' specifies that the+-- instance will enumerate available Vulkan Portability-compliant physical+-- devices and groups in addition to the Vulkan physical devices and groups+-- that are enumerated by default.+pattern INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR = InstanceCreateFlagBits 0x00000001++conNameInstanceCreateFlagBits :: String+conNameInstanceCreateFlagBits = "InstanceCreateFlagBits"++enumPrefixInstanceCreateFlagBits :: String+enumPrefixInstanceCreateFlagBits = "INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR"++showTableInstanceCreateFlagBits :: [(InstanceCreateFlagBits, String)]+showTableInstanceCreateFlagBits = [(INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR, "")]++instance Show InstanceCreateFlagBits where+  showsPrec = enumShowsPrec enumPrefixInstanceCreateFlagBits+                            showTableInstanceCreateFlagBits+                            conNameInstanceCreateFlagBits+                            (\(InstanceCreateFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)++instance Read InstanceCreateFlagBits where+  readPrec = enumReadPrec enumPrefixInstanceCreateFlagBits+                          showTableInstanceCreateFlagBits+                          conNameInstanceCreateFlagBits+                          InstanceCreateFlagBits+
− src/Vulkan/Core10/Enums/InstanceCreateFlags.hs
@@ -1,53 +0,0 @@-{-# language CPP #-}--- No documentation found for Chapter "InstanceCreateFlags"-module Vulkan.Core10.Enums.InstanceCreateFlags  (InstanceCreateFlags(..)) where--import Vulkan.Internal.Utils (enumReadPrec)-import Vulkan.Internal.Utils (enumShowsPrec)-import GHC.Show (showString)-import Numeric (showHex)-import Vulkan.Zero (Zero)-import Data.Bits (Bits)-import Data.Bits (FiniteBits)-import Foreign.Storable (Storable)-import GHC.Read (Read(readPrec))-import GHC.Show (Show(showsPrec))-import Vulkan.Core10.FundamentalTypes (Flags)--- | VkInstanceCreateFlags - Reserved for future use------ = Description------ 'InstanceCreateFlags' is a bitmask type for setting a mask, but is--- currently reserved for future use.------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo'-newtype InstanceCreateFlags = InstanceCreateFlags Flags-  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)----conNameInstanceCreateFlags :: String-conNameInstanceCreateFlags = "InstanceCreateFlags"--enumPrefixInstanceCreateFlags :: String-enumPrefixInstanceCreateFlags = ""--showTableInstanceCreateFlags :: [(InstanceCreateFlags, String)]-showTableInstanceCreateFlags = []--instance Show InstanceCreateFlags where-  showsPrec = enumShowsPrec enumPrefixInstanceCreateFlags-                            showTableInstanceCreateFlags-                            conNameInstanceCreateFlags-                            (\(InstanceCreateFlags x) -> x)-                            (\x -> showString "0x" . showHex x)--instance Read InstanceCreateFlags where-  readPrec = enumReadPrec enumPrefixInstanceCreateFlags-                          showTableInstanceCreateFlags-                          conNameInstanceCreateFlags-                          InstanceCreateFlags-
src/Vulkan/Core10/Enums/PipelineCreateFlagBits.hs view
@@ -5,6 +5,8 @@                                                                            , PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT                                                                            , PIPELINE_CREATE_DERIVATIVE_BIT                                                                            , PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV+                                                                           , PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT+                                                                           , PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT                                                                            , PIPELINE_CREATE_LIBRARY_BIT_KHR                                                                            , PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV                                                                            , PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR@@ -86,7 +88,10 @@ --     'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.getPipelineExecutableInternalRepresentationsKHR'. --     Enabling this flag /must/ not affect the final compiled pipeline but --     /may/ disable pipeline caching or otherwise affect pipeline creation---     time.+--     time. When capturing IR from pipelines created with pipeline+--     libraries, there is no guarantee that IR from libraries /can/ be+--     retrieved from the linked pipeline. Applications /should/ retrieve+--     IR from each library, and any linked pipelines, separately. -- -- -   'PIPELINE_CREATE_LIBRARY_BIT_KHR' specifies that the pipeline --     /cannot/ be used directly, and instead defines a /pipeline library/@@ -160,12 +165,43 @@ --     specifies that the pipeline will be used with a fragment density map --     attachment. --+-- -   'PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT' specifies that+--     pipeline libraries being linked into this library /should/ have link+--     time optimizations applied. If this bit is omitted, implementations+--     /should/ instead perform linking as rapidly as possible.+--+-- -   'PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT'+--     specifies that pipeline libraries should retain any information+--     necessary to later perform an optimal link with+--     'PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT'.+-- -- It is valid to set both 'PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT' and -- 'PIPELINE_CREATE_DERIVATIVE_BIT'. This allows a pipeline to be both a -- parent and possibly a child in a pipeline hierarchy. See -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-pipeline-derivatives Pipeline Derivatives> -- for more information. --+-- When an implementation is looking up a pipeline in a+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-cache pipeline cache>,+-- if that pipeline is being created using linked libraries,+-- implementations /should/ always return an equivalent pipeline created+-- with 'PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT' if available,+-- whether or not that bit was specified.+--+-- Note+--+-- Using 'PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT' (or not) when+-- linking pipeline libraries is intended as a performance tradeoff between+-- host and device. If the bit is omitted, linking should be faster and+-- produce a pipeline more rapidly, but performance of the pipeline on the+-- target device may be reduced. If the bit is included, linking may be+-- slower but should produce a pipeline with device performance comparable+-- to a monolithically created pipeline. Using both options can allow+-- latency-sensitive applications to generate a suboptimal but usable+-- pipeline quickly, and then perform an optimal link in the background,+-- substituting the result for the suboptimally linked pipeline as soon as+-- it is available.+-- -- = See Also -- -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,@@ -181,6 +217,10 @@ pattern PIPELINE_CREATE_DERIVATIVE_BIT                              = PipelineCreateFlagBits 0x00000004 -- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV" pattern PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV             = PipelineCreateFlagBits 0x00100000+-- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT"+pattern PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT              = PipelineCreateFlagBits 0x00000400+-- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT"+pattern PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT  = PipelineCreateFlagBits 0x00800000 -- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_LIBRARY_BIT_KHR" pattern PIPELINE_CREATE_LIBRARY_BIT_KHR                             = PipelineCreateFlagBits 0x00000800 -- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV"@@ -226,15 +266,17 @@  showTablePipelineCreateFlagBits :: [(PipelineCreateFlagBits, String)] showTablePipelineCreateFlagBits =-  [ (PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT                , "DISABLE_OPTIMIZATION_BIT")-  , (PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT                   , "ALLOW_DERIVATIVES_BIT")-  , (PIPELINE_CREATE_DERIVATIVE_BIT                          , "DERIVATIVE_BIT")-  , (PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV         , "RAY_TRACING_ALLOW_MOTION_BIT_NV")-  , (PIPELINE_CREATE_LIBRARY_BIT_KHR                         , "LIBRARY_BIT_KHR")-  , (PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV                , "INDIRECT_BINDABLE_BIT_NV")-  , (PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR, "CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR")-  , (PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR              , "CAPTURE_STATISTICS_BIT_KHR")-  , (PIPELINE_CREATE_DEFER_COMPILE_BIT_NV                    , "DEFER_COMPILE_BIT_NV")+  [ (PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT                  , "DISABLE_OPTIMIZATION_BIT")+  , (PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT                     , "ALLOW_DERIVATIVES_BIT")+  , (PIPELINE_CREATE_DERIVATIVE_BIT                            , "DERIVATIVE_BIT")+  , (PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV           , "RAY_TRACING_ALLOW_MOTION_BIT_NV")+  , (PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT            , "LINK_TIME_OPTIMIZATION_BIT_EXT")+  , (PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT, "RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT")+  , (PIPELINE_CREATE_LIBRARY_BIT_KHR                           , "LIBRARY_BIT_KHR")+  , (PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV                  , "INDIRECT_BINDABLE_BIT_NV")+  , (PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR  , "CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR")+  , (PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR                , "CAPTURE_STATISTICS_BIT_KHR")+  , (PIPELINE_CREATE_DEFER_COMPILE_BIT_NV                      , "DEFER_COMPILE_BIT_NV")   , ( PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR     , "RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR"     )
+ src/Vulkan/Core10/Enums/PipelineLayoutCreateFlagBits.hs view
@@ -0,0 +1,64 @@+{-# language CPP #-}+-- No documentation found for Chapter "PipelineLayoutCreateFlagBits"+module Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits  ( PipelineLayoutCreateFlags+                                                         , PipelineLayoutCreateFlagBits( PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT+                                                                                       , ..+                                                                                       )+                                                         ) where++import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec)+import GHC.Show (showString)+import Numeric (showHex)+import Vulkan.Zero (Zero)+import Data.Bits (Bits)+import Data.Bits (FiniteBits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec))+import Vulkan.Core10.FundamentalTypes (Flags)+type PipelineLayoutCreateFlags = PipelineLayoutCreateFlagBits++-- | VkPipelineLayoutCreateFlagBits - Pipeline layout creation flag bits+--+-- = Description+--+-- -   VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT specifies that+--     implementations /must/ ensure that the properties and\/or absence of+--     a particular descriptor set do not influence any other properties of+--     the pipeline layout. This allows pipelines libraries linked without+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT'+--     to be created with a subset of the total descriptor sets.+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_graphics_pipeline_library VK_EXT_graphics_pipeline_library>,+-- 'PipelineLayoutCreateFlags'+newtype PipelineLayoutCreateFlagBits = PipelineLayoutCreateFlagBits Flags+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)++-- No documentation found for Nested "VkPipelineLayoutCreateFlagBits" "VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT"+pattern PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT = PipelineLayoutCreateFlagBits 0x00000002++conNamePipelineLayoutCreateFlagBits :: String+conNamePipelineLayoutCreateFlagBits = "PipelineLayoutCreateFlagBits"++enumPrefixPipelineLayoutCreateFlagBits :: String+enumPrefixPipelineLayoutCreateFlagBits = "PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT"++showTablePipelineLayoutCreateFlagBits :: [(PipelineLayoutCreateFlagBits, String)]+showTablePipelineLayoutCreateFlagBits = [(PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT, "")]++instance Show PipelineLayoutCreateFlagBits where+  showsPrec = enumShowsPrec enumPrefixPipelineLayoutCreateFlagBits+                            showTablePipelineLayoutCreateFlagBits+                            conNamePipelineLayoutCreateFlagBits+                            (\(PipelineLayoutCreateFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)++instance Read PipelineLayoutCreateFlagBits where+  readPrec = enumReadPrec enumPrefixPipelineLayoutCreateFlagBits+                          showTablePipelineLayoutCreateFlagBits+                          conNamePipelineLayoutCreateFlagBits+                          PipelineLayoutCreateFlagBits+
− src/Vulkan/Core10/Enums/PipelineLayoutCreateFlags.hs
@@ -1,53 +0,0 @@-{-# language CPP #-}--- No documentation found for Chapter "PipelineLayoutCreateFlags"-module Vulkan.Core10.Enums.PipelineLayoutCreateFlags  (PipelineLayoutCreateFlags(..)) where--import Vulkan.Internal.Utils (enumReadPrec)-import Vulkan.Internal.Utils (enumShowsPrec)-import GHC.Show (showString)-import Numeric (showHex)-import Vulkan.Zero (Zero)-import Data.Bits (Bits)-import Data.Bits (FiniteBits)-import Foreign.Storable (Storable)-import GHC.Read (Read(readPrec))-import GHC.Show (Show(showsPrec))-import Vulkan.Core10.FundamentalTypes (Flags)--- | VkPipelineLayoutCreateFlags - Reserved for future use------ = Description------ 'PipelineLayoutCreateFlags' is a bitmask type for setting a mask, but is--- currently reserved for future use.------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo'-newtype PipelineLayoutCreateFlags = PipelineLayoutCreateFlags Flags-  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)----conNamePipelineLayoutCreateFlags :: String-conNamePipelineLayoutCreateFlags = "PipelineLayoutCreateFlags"--enumPrefixPipelineLayoutCreateFlags :: String-enumPrefixPipelineLayoutCreateFlags = ""--showTablePipelineLayoutCreateFlags :: [(PipelineLayoutCreateFlags, String)]-showTablePipelineLayoutCreateFlags = []--instance Show PipelineLayoutCreateFlags where-  showsPrec = enumShowsPrec enumPrefixPipelineLayoutCreateFlags-                            showTablePipelineLayoutCreateFlags-                            conNamePipelineLayoutCreateFlags-                            (\(PipelineLayoutCreateFlags x) -> x)-                            (\x -> showString "0x" . showHex x)--instance Read PipelineLayoutCreateFlags where-  readPrec = enumReadPrec enumPrefixPipelineLayoutCreateFlags-                          showTablePipelineLayoutCreateFlags-                          conNamePipelineLayoutCreateFlags-                          PipelineLayoutCreateFlags-
src/Vulkan/Core10/Enums/QueryType.hs view
@@ -3,6 +3,7 @@ module Vulkan.Core10.Enums.QueryType  (QueryType( QUERY_TYPE_OCCLUSION                                                 , QUERY_TYPE_PIPELINE_STATISTICS                                                 , QUERY_TYPE_TIMESTAMP+                                                , QUERY_TYPE_PRIMITIVES_GENERATED_EXT                                                 , QUERY_TYPE_PERFORMANCE_QUERY_INTEL                                                 , QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV                                                 , QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR@@ -42,6 +43,9 @@ -- | 'QUERY_TYPE_TIMESTAMP' specifies a -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#queries-timestamps timestamp query>. pattern QUERY_TYPE_TIMESTAMP                     = QueryType 2+-- | 'QUERY_TYPE_PRIMITIVES_GENERATED_EXT' specifies a+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#queries-primitives-generated primitives generated query>.+pattern QUERY_TYPE_PRIMITIVES_GENERATED_EXT      = QueryType 1000382000 -- | 'QUERY_TYPE_PERFORMANCE_QUERY_INTEL' specifies a -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#queries-performance-intel Intel performance query>. pattern QUERY_TYPE_PERFORMANCE_QUERY_INTEL       = QueryType 1000210000@@ -69,6 +73,7 @@ {-# complete QUERY_TYPE_OCCLUSION,              QUERY_TYPE_PIPELINE_STATISTICS,              QUERY_TYPE_TIMESTAMP,+             QUERY_TYPE_PRIMITIVES_GENERATED_EXT,              QUERY_TYPE_PERFORMANCE_QUERY_INTEL,              QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV,              QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR,@@ -87,6 +92,7 @@   [ (QUERY_TYPE_OCCLUSION                    , "OCCLUSION")   , (QUERY_TYPE_PIPELINE_STATISTICS          , "PIPELINE_STATISTICS")   , (QUERY_TYPE_TIMESTAMP                    , "TIMESTAMP")+  , (QUERY_TYPE_PRIMITIVES_GENERATED_EXT     , "PRIMITIVES_GENERATED_EXT")   , (QUERY_TYPE_PERFORMANCE_QUERY_INTEL      , "PERFORMANCE_QUERY_INTEL")   , (QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV, "ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV")   , (QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR, "ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR")
src/Vulkan/Core10/Enums/StructureType.hs view
@@ -53,6 +53,9 @@                                                         , STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM+                                                        , STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE+                                                        , STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT                                                         , STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT@@ -60,6 +63,7 @@                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT                                                         , STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT                                                         , STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT                                                         , STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX@@ -110,6 +114,9 @@                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR+                                                        , STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT                                                         , STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV                                                         , STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV                                                         , STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV@@ -684,8 +691,10 @@ -- 'Vulkan.Core10.DescriptorSet.DescriptorPoolCreateInfo', -- 'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.DescriptorPoolInlineUniformBlockCreateInfo', -- 'Vulkan.Core10.DescriptorSet.DescriptorSetAllocateInfo',+-- 'Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping.DescriptorSetBindingReferenceVALVE', -- 'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.DescriptorSetLayoutBindingFlagsCreateInfo', -- 'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutCreateInfo',+-- 'Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping.DescriptorSetLayoutHostMappingInfoVALVE', -- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.DescriptorSetLayoutSupport', -- 'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.DescriptorSetVariableDescriptorCountAllocateInfo', -- 'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.DescriptorSetVariableDescriptorCountLayoutSupport',@@ -759,6 +768,7 @@ -- 'Vulkan.Extensions.VK_NV_ray_tracing.GeometryNV', -- 'Vulkan.Extensions.VK_NV_ray_tracing.GeometryTrianglesNV', -- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',+-- 'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT', -- 'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsPipelineShaderGroupsCreateInfoNV', -- 'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsShaderGroupCreateInfoNV', -- 'Vulkan.Extensions.VK_EXT_hdr_metadata.HdrMetadataEXT',@@ -864,6 +874,7 @@ -- 'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties', -- 'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingFeatures', -- 'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties',+-- 'Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping.PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE', -- 'Vulkan.Extensions.VK_NV_device_generated_commands.PhysicalDeviceDeviceGeneratedCommandsFeaturesNV', -- 'Vulkan.Extensions.VK_NV_device_generated_commands.PhysicalDeviceDeviceGeneratedCommandsPropertiesNV', -- 'Vulkan.Extensions.VK_EXT_device_memory_report.PhysicalDeviceDeviceMemoryReportFeaturesEXT',@@ -897,6 +908,8 @@ -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PhysicalDeviceFragmentShadingRateKHR', -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PhysicalDeviceFragmentShadingRatePropertiesKHR', -- 'Vulkan.Extensions.VK_KHR_global_priority.PhysicalDeviceGlobalPriorityQueryFeaturesKHR',+-- 'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT',+-- 'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT', -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation.PhysicalDeviceGroupProperties', -- 'Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset.PhysicalDeviceHostQueryResetFeatures', -- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceIDProperties',@@ -940,6 +953,7 @@ -- 'Vulkan.Extensions.VK_KHR_present_id.PhysicalDevicePresentIdFeaturesKHR', -- 'Vulkan.Extensions.VK_KHR_present_wait.PhysicalDevicePresentWaitFeaturesKHR', -- 'Vulkan.Extensions.VK_EXT_primitive_topology_list_restart.PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT',+-- 'Vulkan.Extensions.VK_EXT_primitives_generated_query.PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT', -- 'Vulkan.Core13.Promoted_From_VK_EXT_private_data.PhysicalDevicePrivateDataFeatures', -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2', -- 'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryFeatures',@@ -1151,22 +1165,22 @@ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoBindMemoryKHR VkVideoBindMemoryKHR>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoCapabilitiesKHR VkVideoCapabilitiesKHR>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoCodingControlInfoKHR VkVideoCodingControlInfoKHR>,+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeCapabilitiesKHR VkVideoDecodeCapabilitiesKHR>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264CapabilitiesEXT VkVideoDecodeH264CapabilitiesEXT>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264DpbSlotInfoEXT VkVideoDecodeH264DpbSlotInfoEXT>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264MvcEXT VkVideoDecodeH264MvcEXT>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264PictureInfoEXT VkVideoDecodeH264PictureInfoEXT>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264ProfileEXT VkVideoDecodeH264ProfileEXT>,--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264SessionCreateInfoEXT VkVideoDecodeH264SessionCreateInfoEXT>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264SessionParametersAddInfoEXT VkVideoDecodeH264SessionParametersAddInfoEXT>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264SessionParametersCreateInfoEXT VkVideoDecodeH264SessionParametersCreateInfoEXT>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265CapabilitiesEXT VkVideoDecodeH265CapabilitiesEXT>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265DpbSlotInfoEXT VkVideoDecodeH265DpbSlotInfoEXT>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265PictureInfoEXT VkVideoDecodeH265PictureInfoEXT>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265ProfileEXT VkVideoDecodeH265ProfileEXT>,--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265SessionCreateInfoEXT VkVideoDecodeH265SessionCreateInfoEXT>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265SessionParametersAddInfoEXT VkVideoDecodeH265SessionParametersAddInfoEXT>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265SessionParametersCreateInfoEXT VkVideoDecodeH265SessionParametersCreateInfoEXT>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeInfoKHR VkVideoDecodeInfoKHR>,+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeCapabilitiesKHR VkVideoEncodeCapabilitiesKHR>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264CapabilitiesEXT VkVideoEncodeH264CapabilitiesEXT>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264DpbSlotInfoEXT VkVideoEncodeH264DpbSlotInfoEXT>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264EmitPictureParametersEXT VkVideoEncodeH264EmitPictureParametersEXT>,@@ -1174,7 +1188,7 @@ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264ProfileEXT VkVideoEncodeH264ProfileEXT>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264RateControlInfoEXT VkVideoEncodeH264RateControlInfoEXT>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264RateControlLayerInfoEXT VkVideoEncodeH264RateControlLayerInfoEXT>,--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264SessionCreateInfoEXT VkVideoEncodeH264SessionCreateInfoEXT>,+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264ReferenceListsEXT VkVideoEncodeH264ReferenceListsEXT>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264SessionParametersAddInfoEXT VkVideoEncodeH264SessionParametersAddInfoEXT>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264SessionParametersCreateInfoEXT VkVideoEncodeH264SessionParametersCreateInfoEXT>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264VclFrameInfoEXT VkVideoEncodeH264VclFrameInfoEXT>,@@ -1186,7 +1200,6 @@ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265RateControlInfoEXT VkVideoEncodeH265RateControlInfoEXT>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265RateControlLayerInfoEXT VkVideoEncodeH265RateControlLayerInfoEXT>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265ReferenceListsEXT VkVideoEncodeH265ReferenceListsEXT>,--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265SessionCreateInfoEXT VkVideoEncodeH265SessionCreateInfoEXT>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265SessionParametersAddInfoEXT VkVideoEncodeH265SessionParametersAddInfoEXT>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265SessionParametersCreateInfoEXT VkVideoEncodeH265SessionParametersCreateInfoEXT>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265VclFrameInfoEXT VkVideoEncodeH265VclFrameInfoEXT>,@@ -1323,6 +1336,12 @@ pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = StructureType 1000425001 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM" pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = StructureType 1000425000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE"+pattern STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE = StructureType 1000420002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE"+pattern STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE    = StructureType 1000420001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE = StructureType 1000420000 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT" pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT = StructureType 1000412000 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT"@@ -1337,6 +1356,8 @@ pattern STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT        = StructureType 1000391001 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT" pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT = StructureType 1000391000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT = StructureType 1000382000 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT" pattern STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT      = StructureType 1000381001 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT"@@ -1437,6 +1458,12 @@ pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV = StructureType 1000326000 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR" pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR = StructureType 1000323000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT = StructureType 1000320002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT = StructureType 1000320001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT = StructureType 1000320000 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV" pattern STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV                      = StructureType 1000314009 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV"@@ -2408,6 +2435,9 @@              STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM,              STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM,              STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM,+             STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE,+             STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE,              STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT,              STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT,              STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT,@@ -2415,6 +2445,7 @@              STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT,              STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT,              STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT,              STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT,              STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT,              STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX,@@ -2465,6 +2496,9 @@              STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV,              STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV,              STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR,+             STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT,              STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV,              STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV,              STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV,@@ -2994,6 +3028,11 @@   , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM     , "PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM"     )+  , (STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE, "DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE")+  , (STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE       , "DESCRIPTOR_SET_BINDING_REFERENCE_VALVE")+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE+    , "PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE"+    )   , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT     , "PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT"     )@@ -3007,6 +3046,9 @@   , (STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT        , "PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT")   , (STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT             , "IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT")   , (STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT, "PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT")+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT+    , "PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT"+    )   , (STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT           , "PIPELINE_COLOR_WRITE_CREATE_INFO_EXT")   , (STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT, "PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT")   , (STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX                 , "SCREEN_SURFACE_CREATE_INFO_QNX")@@ -3092,6 +3134,13 @@     )   , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR     , "PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR"+    )+  , (STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT, "GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT")+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT+    , "PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT"+    )+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT+    , "PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT"     )   , (STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV                    , "CHECKPOINT_DATA_2_NV")   , (STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV , "QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV")
src/Vulkan/Core10/ExtensionDiscovery.hs view
@@ -263,14 +263,8 @@ -- = See Also -- -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264CapabilitiesEXT VkVideoDecodeH264CapabilitiesEXT>,--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264SessionCreateInfoEXT VkVideoDecodeH264SessionCreateInfoEXT>,--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265CapabilitiesEXT VkVideoDecodeH265CapabilitiesEXT>,--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265SessionCreateInfoEXT VkVideoDecodeH265SessionCreateInfoEXT>,--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264CapabilitiesEXT VkVideoEncodeH264CapabilitiesEXT>,--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264SessionCreateInfoEXT VkVideoEncodeH264SessionCreateInfoEXT>,--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265CapabilitiesEXT VkVideoEncodeH265CapabilitiesEXT>,--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265SessionCreateInfoEXT VkVideoEncodeH265SessionCreateInfoEXT>,+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoCapabilitiesKHR VkVideoCapabilitiesKHR>,+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoSessionCreateInfoKHR VkVideoSessionCreateInfoKHR>, -- 'enumerateDeviceExtensionProperties', -- 'enumerateInstanceExtensionProperties' data ExtensionProperties = ExtensionProperties
src/Vulkan/Core10/FundamentalTypes.hs view
@@ -201,9 +201,7 @@ -- 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR', -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoCapabilitiesKHR VkVideoCapabilitiesKHR>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeInfoKHR VkVideoDecodeInfoKHR>,--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264CapabilitiesEXT VkVideoEncodeH264CapabilitiesEXT>,--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264SessionCreateInfoEXT VkVideoEncodeH264SessionCreateInfoEXT>,--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265CapabilitiesEXT VkVideoEncodeH265CapabilitiesEXT>,+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeCapabilitiesKHR VkVideoEncodeCapabilitiesKHR>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeInfoKHR VkVideoEncodeInfoKHR>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoPictureResourceKHR VkVideoPictureResourceKHR>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoSessionCreateInfoKHR VkVideoSessionCreateInfoKHR>,@@ -444,6 +442,7 @@ -- 'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties', -- 'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingFeatures', -- 'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties',+-- 'Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping.PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE', -- 'Vulkan.Extensions.VK_NV_device_generated_commands.PhysicalDeviceDeviceGeneratedCommandsFeaturesNV', -- 'Vulkan.Extensions.VK_EXT_device_memory_report.PhysicalDeviceDeviceMemoryReportFeaturesEXT', -- 'Vulkan.Extensions.VK_NV_device_diagnostics_config.PhysicalDeviceDiagnosticsConfigFeaturesNV',@@ -466,6 +465,8 @@ -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PhysicalDeviceFragmentShadingRateFeaturesKHR', -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PhysicalDeviceFragmentShadingRatePropertiesKHR', -- 'Vulkan.Extensions.VK_KHR_global_priority.PhysicalDeviceGlobalPriorityQueryFeaturesKHR',+-- 'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT',+-- 'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT', -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation.PhysicalDeviceGroupProperties', -- 'Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset.PhysicalDeviceHostQueryResetFeatures', -- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceIDProperties',@@ -495,6 +496,7 @@ -- 'Vulkan.Extensions.VK_KHR_present_id.PhysicalDevicePresentIdFeaturesKHR', -- 'Vulkan.Extensions.VK_KHR_present_wait.PhysicalDevicePresentWaitFeaturesKHR', -- 'Vulkan.Extensions.VK_EXT_primitive_topology_list_restart.PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT',+-- 'Vulkan.Extensions.VK_EXT_primitives_generated_query.PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT', -- 'Vulkan.Core13.Promoted_From_VK_EXT_private_data.PhysicalDevicePrivateDataFeatures', -- 'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryFeatures', -- 'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryProperties',@@ -584,6 +586,7 @@ -- 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR', -- 'Vulkan.Extensions.VK_AMD_display_native_hdr.SwapchainDisplayNativeHdrCreateInfoAMD', -- 'Vulkan.Extensions.VK_AMD_texture_gather_bias_lod.TextureLODGatherFormatPropertiesAMD',+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264CapabilitiesEXT VkVideoEncodeH264CapabilitiesEXT>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264EmitPictureParametersEXT VkVideoEncodeH264EmitPictureParametersEXT>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264RateControlLayerInfoEXT VkVideoEncodeH264RateControlLayerInfoEXT>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265EmitPictureParametersEXT VkVideoEncodeH265EmitPictureParametersEXT>,
src/Vulkan/Core10/Handles.hs view
@@ -343,6 +343,8 @@ -- 'Vulkan.Extensions.VK_EXT_calibrated_timestamps.getCalibratedTimestampsEXT', -- 'Vulkan.Extensions.VK_KHR_deferred_host_operations.getDeferredOperationMaxConcurrencyKHR', -- 'Vulkan.Extensions.VK_KHR_deferred_host_operations.getDeferredOperationResultKHR',+-- 'Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping.getDescriptorSetHostMappingVALVE',+-- 'Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping.getDescriptorSetLayoutHostMappingInfoVALVE', -- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.getDescriptorSetLayoutSupport', -- 'Vulkan.Extensions.VK_KHR_maintenance3.getDescriptorSetLayoutSupportKHR', -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.getDeviceAccelerationStructureCompatibilityKHR',@@ -1035,6 +1037,7 @@ -- 'Vulkan.Core10.DescriptorSet.allocateDescriptorSets', -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', -- 'Vulkan.Core10.DescriptorSet.freeDescriptorSets',+-- 'Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping.getDescriptorSetHostMappingVALVE', -- 'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.updateDescriptorSetWithTemplate', -- 'Vulkan.Extensions.VK_KHR_descriptor_update_template.updateDescriptorSetWithTemplateKHR' newtype DescriptorSet = DescriptorSet Word64@@ -1052,6 +1055,7 @@ -- -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>, -- 'Vulkan.Core10.DescriptorSet.DescriptorSetAllocateInfo',+-- 'Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping.DescriptorSetBindingReferenceVALVE', -- 'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.DescriptorUpdateTemplateCreateInfo', -- 'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo', -- 'Vulkan.Core10.DescriptorSet.createDescriptorSetLayout',
src/Vulkan/Core10/Image.hs view
@@ -470,7 +470,7 @@ --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT' -- -- Images created with one of the--- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y’CBCR conversion>,+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y′CBCR conversion>, -- have further restrictions on their limits and capabilities compared to -- images created with other formats. Creation of images with a format -- requiring@@ -1098,23 +1098,23 @@ -- -- -   #VUID-VkImageCreateInfo-format-06410# If the image @format@ is one --     of the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y’CBCR conversion>,+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y′CBCR conversion>, --     @mipLevels@ /must/ be 1 -- -- -   #VUID-VkImageCreateInfo-format-06411# If the image @format@ is one --     of the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y’CBCR conversion>,+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y′CBCR conversion>, --     @samples@ /must/ be --     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' -- -- -   #VUID-VkImageCreateInfo-format-06412# If the image @format@ is one --     of the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y’CBCR conversion>,+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y′CBCR conversion>, --     @imageType@ /must/ be 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' -- -- -   #VUID-VkImageCreateInfo-format-06413# If the image @format@ is one --     of the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y’CBCR conversion>,+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y′CBCR conversion>, --     and the @ycbcrImageArrays@ feature is not enabled, @arrayLayers@ --     /must/ be 1 --
src/Vulkan/Core10/ImageView.hs view
@@ -593,7 +593,7 @@ -- storage image descriptors, input attachment descriptors, framebuffer -- attachments, and any 'Vulkan.Core10.Handles.ImageView' used with a -- combined image sampler that enables--- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y’CBCR conversion>.+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>. -- -- If the image view is to be used with a sampler which supports -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,@@ -916,10 +916,9 @@ --     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT', --     @format@ /must/ be identical to the @format@ used to create @image@ ----- -   #VUID-VkImageViewCreateInfo-format-06415# If the image @format@ is---     one of the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y’CBCR conversion>,---     then the @pNext@ chain /must/ include a+-- -   #VUID-VkImageViewCreateInfo-format-06415# If the image view+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#image-views-requiring-sampler-ycbcr-conversion requires a sampler Y′CBCR conversion>,+--     the @pNext@ chain must include a --     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionInfo' --     structure with a conversion value other than --     'Vulkan.Core10.APIConstants.NULL_HANDLE'@@ -939,6 +938,14 @@ --     'Vulkan.Core10.APIConstants.NULL_HANDLE', all members of --     @components@ /must/ have the --     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>+--+-- -   #VUID-VkImageViewCreateInfo-pNext-06658# If the @pNext@ chain+--     includes a+--     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionInfo'+--     structure with a @conversion@ value other than+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @format@ /must/ be the+--     same used in+--     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'::@format@ -- -- -   #VUID-VkImageViewCreateInfo-image-01020# If @image@ is non-sparse --     then it /must/ be bound completely and contiguously to a single
src/Vulkan/Core10/Memory.hs view
@@ -912,6 +912,10 @@ -- -- == Valid Usage --+-- -   #VUID-VkMemoryAllocateInfo-None-06657# The parameters /must/ not+--     define more than one+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-import-operation import operation>+-- -- -   #VUID-VkMemoryAllocateInfo-buffer-06380# If the parameters define an --     import operation from an --     'Vulkan.Extensions.Handles.BufferCollectionFUCHSIA', and@@ -1151,8 +1155,9 @@ --     the Android hardware buffer’s --     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AHardwareBuffer'::@usage@ --     /must/ include at least one of---     @AHARDWAREBUFFER_USAGE_GPU_FRAMEBUFFER@ or---     @AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE@+--     @AHARDWAREBUFFER_USAGE_GPU_FRAMEBUFFER@,+--     @AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE@ or+--     @AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER@ -- -- -   #VUID-VkMemoryAllocateInfo-pNext-02387# If the parameters define an --     import operation, the external handle is an Android hardware buffer,
src/Vulkan/Core10/Pass.hs view
@@ -577,10 +577,11 @@ -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT' -- pipeline stage. ----- If an attachment is not used by any subpass, then @loadOp@, @storeOp@,--- @stencilStoreOp@, and @stencilLoadOp@ are ignored, and the attachment’s--- memory contents will not be modified by execution of a render pass--- instance.+-- If an attachment is not used by any subpass, @loadOp@, @storeOp@,+-- @stencilStoreOp@, and @stencilLoadOp@ will be ignored for that+-- attachment, and no load or store ops will be performed. However, any+-- transition specified by @initialLayout@ and @finalLayout@ will still be+-- executed. -- -- The load and store operations apply on the first and last use of each -- view in the render pass, respectively. If a view index of an attachment@@ -673,11 +674,26 @@ -- -- == Valid Usage --+-- -   #VUID-VkAttachmentDescription-format-06698# @format@ /must/ not be+--     VK_FORMAT_UNDEFINED+-- -- -   #VUID-VkAttachmentDescription-finalLayout-00843# @finalLayout@ --     /must/ not be --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED' or --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED' --+-- -   #VUID-VkAttachmentDescription-format-06699# If @format@ includes a+--     color or depth aspect and @loadOp@ is+--     'Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_LOAD', then+--     @initialLayout@ /must/ not be+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED'+--+-- -   #VUID-VkAttachmentDescription-format-06700# If @format@ includes a+--     stencil aspect and @stencilLoadOp@ is+--     'Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_LOAD', then+--     @initialLayout@ /must/ not be+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED'+-- -- -   #VUID-VkAttachmentDescription-format-03280# If @format@ is a color --     format, @initialLayout@ /must/ not be --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL'@@ -2126,38 +2142,35 @@ -- -- == Valid Usage ----- -   #VUID-VkFramebufferCreateInfo-attachmentCount-00876# If @renderpass@---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @attachmentCount@---     /must/ be equal to the attachment count specified in @renderPass@+-- -   #VUID-VkFramebufferCreateInfo-attachmentCount-00876#+--     @attachmentCount@ /must/ be equal to the attachment count specified+--     in @renderPass@ ----- -   #VUID-VkFramebufferCreateInfo-flags-02778# If @renderpass@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @flags@ does not include---     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- -   #VUID-VkFramebufferCreateInfo-flags-02778# If @flags@ does not+--     include+--     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT' --     and @attachmentCount@ is not @0@, @pAttachments@ /must/ be a valid --     pointer to an array of @attachmentCount@ valid --     'Vulkan.Core10.Handles.ImageView' handles ----- -   #VUID-VkFramebufferCreateInfo-pAttachments-00877# If @renderpass@ is---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ does not---     include+-- -   #VUID-VkFramebufferCreateInfo-pAttachments-00877# If @flags@ does+--     not include --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     each element of @pAttachments@ that is used as a color attachment or --     resolve attachment by @renderPass@ /must/ have been created with a --     @usage@ value including --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT' ----- -   #VUID-VkFramebufferCreateInfo-pAttachments-02633# If @renderpass@ is---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ does not---     include+-- -   #VUID-VkFramebufferCreateInfo-pAttachments-02633# If @flags@ does+--     not include --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     each element of @pAttachments@ that is used as a depth\/stencil --     attachment by @renderPass@ /must/ have been created with a @usage@ --     value including --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT' ----- -   #VUID-VkFramebufferCreateInfo-pAttachments-02634# If @renderpass@ is---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ does not---     include+-- -   #VUID-VkFramebufferCreateInfo-pAttachments-02634# If @flags@ does+--     not include --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     each element of @pAttachments@ that is used as a depth\/stencil --     resolve attachment by @renderPass@ /must/ have been created with a@@ -2165,24 +2178,22 @@ --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT' -- -- -   #VUID-VkFramebufferCreateInfo-pAttachments-00879# If @renderpass@ is---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @renderpass@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @flags@ does not include+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @flags@ does not+--     include --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     each element of @pAttachments@ that is used as an input attachment --     by @renderPass@ /must/ have been created with a @usage@ value --     including --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT' ----- -   #VUID-VkFramebufferCreateInfo-pAttachments-02552# If @renderpass@ is---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', each element of+-- -   #VUID-VkFramebufferCreateInfo-pAttachments-02552# Each element of --     @pAttachments@ that is used as a fragment density map attachment by --     @renderPass@ /must/ not have been created with a @flags@ value --     including --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT' ----- -   #VUID-VkFramebufferCreateInfo-renderPass-02553# If @renderpass@ is---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @renderPass@ has a---     fragment density map attachment, and+-- -   #VUID-VkFramebufferCreateInfo-renderPass-02553# If @renderPass@ has+--     a fragment density map attachment and --     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-fragmentDensityMapNonSubsampledImages non-subsample image feature> --     is not enabled, each element of @pAttachments@ /must/ have been --     created with a @flags@ value including@@ -2196,25 +2207,22 @@ --     created with a @flags@ value including --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM'. ----- -   #VUID-VkFramebufferCreateInfo-pAttachments-00880# If @renderpass@ is---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ does not---     include+-- -   #VUID-VkFramebufferCreateInfo-pAttachments-00880# If @flags@ does+--     not include --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     each element of @pAttachments@ /must/ have been created with a --     'Vulkan.Core10.Enums.Format.Format' value that matches the --     'Vulkan.Core10.Enums.Format.Format' specified by the corresponding --     'AttachmentDescription' in @renderPass@ ----- -   #VUID-VkFramebufferCreateInfo-pAttachments-00881# If @renderpass@ is---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ does not---     include+-- -   #VUID-VkFramebufferCreateInfo-pAttachments-00881# If @flags@ does+--     not include --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     each element of @pAttachments@ /must/ have been created with a --     @samples@ value that matches the @samples@ value specified by the --     corresponding 'AttachmentDescription' in @renderPass@ ----- -   #VUID-VkFramebufferCreateInfo-flags-04533# If @renderpass@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ does not+-- -   #VUID-VkFramebufferCreateInfo-flags-04533# If @flags@ does not --     include --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     each element of @pAttachments@ that is used as an input, color,@@ -2222,8 +2230,7 @@ --     been created with a 'Vulkan.Core10.Image.ImageCreateInfo'::@width@ --     greater than or equal to @width@ ----- -   #VUID-VkFramebufferCreateInfo-flags-04534# If @renderpass@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ does not+-- -   #VUID-VkFramebufferCreateInfo-flags-04534# If @flags@ does not --     include --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     each element of @pAttachments@ that is used as an input, color,@@ -2231,8 +2238,7 @@ --     been created with a 'Vulkan.Core10.Image.ImageCreateInfo'::@height@ --     greater than or equal to @height@ ----- -   #VUID-VkFramebufferCreateInfo-flags-04535# If @renderpass@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ does not+-- -   #VUID-VkFramebufferCreateInfo-flags-04535# If @flags@ does not --     include --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     each element of @pAttachments@ that is used as an input, color,@@ -2241,46 +2247,40 @@ --     'Vulkan.Core10.ImageView.ImageViewCreateInfo'::@subresourceRange.layerCount@ --     greater than or equal to @layers@ ----- -   #VUID-VkFramebufferCreateInfo-renderPass-04536# If @renderpass@ is---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @renderPass@ was+-- -   #VUID-VkFramebufferCreateInfo-renderPass-04536# If @renderPass@ was --     specified with non-zero view masks, each element of @pAttachments@ --     that is used as an input, color, resolve, or depth\/stencil --     attachment by @renderPass@ /must/ have a @layerCount@ greater than --     the index of the most significant bit set in any of those view masks ----- -   #VUID-VkFramebufferCreateInfo-renderPass-02746# If @renderpass@ is---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @renderPass@ was+-- -   #VUID-VkFramebufferCreateInfo-renderPass-02746# If @renderPass@ was --     specified with non-zero view masks, each element of @pAttachments@ --     that is referenced by @fragmentDensityMapAttachment@ /must/ have a --     @layerCount@ equal to @1@ or greater than the index of the most --     significant bit set in any of those view masks ----- -   #VUID-VkFramebufferCreateInfo-renderPass-02747# If @renderpass@ is---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @renderPass@ was+-- -   #VUID-VkFramebufferCreateInfo-renderPass-02747# If @renderPass@ was --     not specified with non-zero view masks, each element of --     @pAttachments@ that is referenced by @fragmentDensityMapAttachment@ --     /must/ have a @layerCount@ equal to @1@ ----- -   #VUID-VkFramebufferCreateInfo-pAttachments-02555# If @renderpass@ is---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ does not---     include+-- -   #VUID-VkFramebufferCreateInfo-pAttachments-02555# If @flags@ does+--     not include --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     an element of @pAttachments@ that is referenced by --     @fragmentDensityMapAttachment@ /must/ have a width at least as large --     as --     \(\left\lceil{\frac{width}{maxFragmentDensityTexelSize_{width}}}\right\rceil\) ----- -   #VUID-VkFramebufferCreateInfo-pAttachments-02556# If @renderpass@ is---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ does not---     include+-- -   #VUID-VkFramebufferCreateInfo-pAttachments-02556# If @flags@ does+--     not include --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     an element of @pAttachments@ that is referenced by --     @fragmentDensityMapAttachment@ /must/ have a height at least as --     large as --     \(\left\lceil{\frac{height}{maxFragmentDensityTexelSize_{height}}}\right\rceil\) ----- -   #VUID-VkFramebufferCreateInfo-flags-04537# If @renderpass@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ does not+-- -   #VUID-VkFramebufferCreateInfo-flags-04537# If @flags@ does not --     include --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     and @renderPass@ was specified with non-zero view masks, each@@ -2290,8 +2290,7 @@ --     greater than the index of the most significant bit set in any of --     those view masks ----- -   #VUID-VkFramebufferCreateInfo-flags-04538# If @renderpass@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ does not+-- -   #VUID-VkFramebufferCreateInfo-flags-04538# If @flags@ does not --     include --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     and @renderPass@ was not specified with non-zero view masks, each@@ -2300,8 +2299,7 @@ --     by @renderPass@ /must/ have a @layerCount@ that is either @1@, or --     greater than @layers@ ----- -   #VUID-VkFramebufferCreateInfo-flags-04539# If @renderpass@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ does not+-- -   #VUID-VkFramebufferCreateInfo-flags-04539# If @flags@ does not --     include --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     an element of @pAttachments@ that is used as a@@ -2312,8 +2310,7 @@ --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FragmentShadingRateAttachmentInfoKHR' --     which references that attachment ----- -   #VUID-VkFramebufferCreateInfo-flags-04540# If @renderpass@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ does not+-- -   #VUID-VkFramebufferCreateInfo-flags-04540# If @flags@ does not --     include --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     an element of @pAttachments@ that is used as a@@ -2357,8 +2354,7 @@ --     than or equal to --     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFramebufferLayers maxFramebufferLayers> ----- -   #VUID-VkFramebufferCreateInfo-renderPass-02531# If @renderpass@ is---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @renderPass@ was+-- -   #VUID-VkFramebufferCreateInfo-renderPass-02531# If @renderPass@ was --     specified with non-zero view masks, @layers@ /must/ be @1@ -- -- -   #VUID-VkFramebufferCreateInfo-pAttachments-00891# If @flags@ does@@ -2385,8 +2381,7 @@ --     structure in the @pNext@ chain /must/ be equal to either zero or --     @attachmentCount@ ----- -   #VUID-VkFramebufferCreateInfo-flags-04541# If @renderpass@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ includes+-- -   #VUID-VkFramebufferCreateInfo-flags-04541# If @flags@ includes --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     the @width@ member of any element of the @pAttachmentImageInfos@ --     member of a@@ -2395,8 +2390,7 @@ --     resolve or depth\/stencil attachment in @renderPass@ /must/ be --     greater than or equal to @width@ ----- -   #VUID-VkFramebufferCreateInfo-flags-04542# If @renderpass@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ includes+-- -   #VUID-VkFramebufferCreateInfo-flags-04542# If @flags@ includes --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     the @height@ member of any element of the @pAttachmentImageInfos@ --     member of a@@ -2405,8 +2399,7 @@ --     resolve or depth\/stencil attachment in @renderPass@ /must/ be --     greater than or equal to @height@ ----- -   #VUID-VkFramebufferCreateInfo-flags-03196# If @renderpass@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ includes+-- -   #VUID-VkFramebufferCreateInfo-flags-03196# If @flags@ includes --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     the @width@ member of any element of the @pAttachmentImageInfos@ --     member of a@@ -2416,8 +2409,7 @@ --     in @renderPass@ /must/ be greater than or equal to --     \(\left\lceil{\frac{width}{maxFragmentDensityTexelSize_{width}}}\right\rceil\) ----- -   #VUID-VkFramebufferCreateInfo-flags-03197# If @renderpass@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ includes+-- -   #VUID-VkFramebufferCreateInfo-flags-03197# If @flags@ includes --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     the @height@ member of any element of the @pAttachmentImageInfos@ --     member of a@@ -2427,8 +2419,7 @@ --     in @renderPass@ /must/ be greater than or equal to --     \(\left\lceil{\frac{height}{maxFragmentDensityTexelSize_{height}}}\right\rceil\) ----- -   #VUID-VkFramebufferCreateInfo-flags-04543# If @renderpass@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ includes+-- -   #VUID-VkFramebufferCreateInfo-flags-04543# If @flags@ includes --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     the @width@ member of any element of the @pAttachmentImageInfos@ --     member of a@@ -2441,8 +2432,7 @@ --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FragmentShadingRateAttachmentInfoKHR' --     which references that attachment ----- -   #VUID-VkFramebufferCreateInfo-flags-04544# If @renderpass@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ includes+-- -   #VUID-VkFramebufferCreateInfo-flags-04544# If @flags@ includes --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     the @height@ member of any element of the @pAttachmentImageInfos@ --     member of a@@ -2455,8 +2445,7 @@ --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FragmentShadingRateAttachmentInfoKHR' --     which references that attachment ----- -   #VUID-VkFramebufferCreateInfo-flags-04545# If @renderpass@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ includes+-- -   #VUID-VkFramebufferCreateInfo-flags-04545# If @flags@ includes --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     the @layerCount@ member of any element of the --     @pAttachmentImageInfos@ member of a@@ -2465,9 +2454,8 @@ --     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment> --     /must/ be either @1@, or greater than or equal to @layers@ ----- -   #VUID-VkFramebufferCreateInfo-flags-04587# If @renderpass@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @flags@ includes---     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- -   #VUID-VkFramebufferCreateInfo-flags-04587# If @flags@ includes+--     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT' --     and @renderPass@ was specified with non-zero view masks, each --     element of @pAttachments@ that is used as a --     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>@@ -2475,9 +2463,8 @@ --     greater than the index of the most significant bit set in any of --     those view masks ----- -   #VUID-VkFramebufferCreateInfo-renderPass-03198# If @renderpass@ is---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', multiview is enabled---     for @renderPass@, and @flags@ includes+-- -   #VUID-VkFramebufferCreateInfo-renderPass-03198# If multiview is+--     enabled for @renderPass@ and @flags@ includes --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     the @layerCount@ member of any element of the --     @pAttachmentImageInfos@ member of a@@ -2487,9 +2474,8 @@ --     greater than the maximum bit index set in the view mask in the --     subpasses in which it is used in @renderPass@ ----- -   #VUID-VkFramebufferCreateInfo-renderPass-04546# If @renderpass@ is---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', multiview is not---     enabled for @renderPass@, and @flags@ includes+-- -   #VUID-VkFramebufferCreateInfo-renderPass-04546# If multiview is not+--     enabled for @renderPass@ and @flags@ includes --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     the @layerCount@ member of any element of the --     @pAttachmentImageInfos@ member of a@@ -2498,8 +2484,7 @@ --     resolve, or depth\/stencil attachment in @renderPass@ /must/ be --     greater than or equal to @layers@ ----- -   #VUID-VkFramebufferCreateInfo-flags-03201# If @renderpass@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ includes+-- -   #VUID-VkFramebufferCreateInfo-flags-03201# If @flags@ includes --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     the @usage@ member of any element of the @pAttachmentImageInfos@ --     member of a@@ -2509,8 +2494,7 @@ --     /must/ include --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT' ----- -   #VUID-VkFramebufferCreateInfo-flags-03202# If @renderpass@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ includes+-- -   #VUID-VkFramebufferCreateInfo-flags-03202# If @flags@ includes --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     the @usage@ member of any element of the @pAttachmentImageInfos@ --     member of a@@ -2519,8 +2503,7 @@ --     used as a depth\/stencil attachment by @renderPass@ /must/ include --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT' ----- -   #VUID-VkFramebufferCreateInfo-flags-03203# If @renderpass@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ includes+-- -   #VUID-VkFramebufferCreateInfo-flags-03203# If @flags@ includes --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     the @usage@ member of any element of the @pAttachmentImageInfos@ --     member of a@@ -2530,8 +2513,7 @@ --     include --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT' ----- -   #VUID-VkFramebufferCreateInfo-flags-03204# If @renderpass@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ includes+-- -   #VUID-VkFramebufferCreateInfo-flags-03204# If @flags@ includes --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     the @usage@ member of any element of the @pAttachmentImageInfos@ --     member of a@@ -2540,8 +2522,7 @@ --     used as an input attachment by @renderPass@ /must/ include --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT' ----- -   #VUID-VkFramebufferCreateInfo-flags-03205# If @renderpass@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ includes+-- -   #VUID-VkFramebufferCreateInfo-flags-03205# If @flags@ includes --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     at least one element of the @pViewFormats@ member of any element of --     the @pAttachmentImageInfos@ member of a@@ -2557,8 +2538,7 @@ --     'Vulkan.Core10.ImageView.ImageViewCreateInfo'::@viewType@ not equal --     to 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D' ----- -   #VUID-VkFramebufferCreateInfo-flags-04548# If @renderpass@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ does not+-- -   #VUID-VkFramebufferCreateInfo-flags-04548# If @flags@ does not --     include --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     each element of @pAttachments@ that is used as a fragment shading@@ -2566,8 +2546,7 @@ --     @usage@ value including --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' ----- -   #VUID-VkFramebufferCreateInfo-flags-04549# If @renderpass@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE' and @flags@ includes+-- -   #VUID-VkFramebufferCreateInfo-flags-04549# If @flags@ includes --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT', --     the @usage@ member of any element of the @pAttachmentImageInfos@ --     member of a
src/Vulkan/Core10/Pipeline.hs view
@@ -25,5031 +25,5892 @@                                , PipelineDepthStencilStateCreateInfo(..)                                , GraphicsPipelineCreateInfo(..)                                , Pipeline(..)-                               , PipelineLayoutCreateFlags(..)-                               , PipelineDynamicStateCreateFlags(..)-                               , PipelineMultisampleStateCreateFlags(..)-                               , PipelineRasterizationStateCreateFlags(..)-                               , PipelineViewportStateCreateFlags(..)-                               , PipelineTessellationStateCreateFlags(..)-                               , PipelineInputAssemblyStateCreateFlags(..)-                               , PipelineVertexInputStateCreateFlags(..)-                               , PrimitiveTopology(..)-                               , CompareOp(..)-                               , PolygonMode(..)-                               , FrontFace(..)-                               , BlendFactor(..)-                               , BlendOp(..)-                               , StencilOp(..)-                               , LogicOp(..)-                               , VertexInputRate(..)-                               , DynamicState(..)-                               , CullModeFlagBits(..)-                               , CullModeFlags-                               , ShaderStageFlagBits(..)-                               , ShaderStageFlags-                               , PipelineCreateFlagBits(..)-                               , PipelineCreateFlags-                               , PipelineShaderStageCreateFlagBits(..)-                               , PipelineShaderStageCreateFlags-                               , ColorComponentFlagBits(..)-                               , ColorComponentFlags-                               , PipelineColorBlendStateCreateFlagBits(..)-                               , PipelineColorBlendStateCreateFlags-                               , PipelineDepthStencilStateCreateFlagBits(..)-                               , PipelineDepthStencilStateCreateFlags-                               , SampleMask-                               ) where--import Vulkan.CStruct.Utils (FixedArray)-import Vulkan.Internal.Utils (traceAroundEvent)-import Control.Exception.Base (bracket)-import Control.Monad (unless)-import Control.Monad.IO.Class (liftIO)-import Data.Foldable (traverse_)-import Data.Typeable (eqT)-import Foreign.Marshal.Alloc (allocaBytes)-import Foreign.Marshal.Alloc (callocBytes)-import Foreign.Marshal.Alloc (free)-import Foreign.Marshal.Utils (maybePeek)-import GHC.Base (when)-import GHC.IO (throwIO)-import GHC.Ptr (castPtr)-import GHC.Ptr (nullFunPtr)-import Foreign.Ptr (nullPtr)-import qualified Foreign.Ptr (nullPtr)-import Foreign.Ptr (plusPtr)-import Data.ByteString (packCString)-import Data.ByteString (useAsCString)-import Data.Coerce (coerce)-import Control.Monad.Trans.Class (lift)-import Control.Monad.Trans.Cont (evalContT)-import Data.Vector (generateM)-import qualified Data.Vector (imapM_)-import qualified Data.Vector (length)-import qualified Data.Vector (null)-import Vulkan.CStruct (FromCStruct)-import Vulkan.CStruct (FromCStruct(..))-import Vulkan.CStruct (ToCStruct)-import Vulkan.CStruct (ToCStruct(..))-import Vulkan.Zero (Zero(..))-import Control.Monad.IO.Class (MonadIO)-import Data.Type.Equality ((:~:)(Refl))-import Data.Typeable (Typeable)-import Foreign.C.Types (CChar)-import Foreign.C.Types (CFloat)-import Foreign.C.Types (CFloat(..))-import Foreign.C.Types (CFloat(CFloat))-import Foreign.C.Types (CSize)-import Foreign.C.Types (CSize(..))-import Foreign.C.Types (CSize(CSize))-import Foreign.Storable (Storable)-import Foreign.Storable (Storable(peek))-import Foreign.Storable (Storable(poke))-import qualified Foreign.Storable (Storable(..))-import GHC.Generics (Generic)-import GHC.IO.Exception (IOErrorType(..))-import GHC.IO.Exception (IOException(..))-import Data.Int (Int32)-import Foreign.Ptr (FunPtr)-import Foreign.Ptr (Ptr)-import Data.Word (Word32)-import Data.Word (Word64)-import Data.ByteString (ByteString)-import Data.Kind (Type)-import Control.Monad.Trans.Cont (ContT(..))-import Data.Vector (Vector)-import Vulkan.CStruct.Utils (advancePtrBytes)-import Vulkan.Core10.FundamentalTypes (bool32ToBool)-import Vulkan.Core10.FundamentalTypes (boolToBool32)-import Vulkan.CStruct.Extends (forgetExtensions)-import Vulkan.CStruct.Utils (lowerArrayPtr)-import Vulkan.CStruct.Extends (peekSomeCStruct)-import Vulkan.CStruct.Extends (pokeSomeCStruct)-import Vulkan.CStruct.Extends (withSomeCStruct)-import Vulkan.NamedType ((:::))-import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering (AttachmentSampleCountInfoAMD)-import Vulkan.Core10.Enums.BlendFactor (BlendFactor)-import Vulkan.Core10.Enums.BlendOp (BlendOp)-import Vulkan.Core10.FundamentalTypes (Bool32)-import Vulkan.CStruct.Extends (Chain)-import Vulkan.Core10.Enums.ColorComponentFlagBits (ColorComponentFlags)-import Vulkan.Core10.Enums.CompareOp (CompareOp)-import Vulkan.Core10.Enums.CullModeFlagBits (CullModeFlags)-import Vulkan.Core10.Handles (Device)-import Vulkan.Core10.Handles (Device(..))-import Vulkan.Core10.Handles (Device(Device))-import Vulkan.Dynamic (DeviceCmds(pVkCreateComputePipelines))-import Vulkan.Dynamic (DeviceCmds(pVkCreateGraphicsPipelines))-import Vulkan.Dynamic (DeviceCmds(pVkDestroyPipeline))-import Vulkan.Core10.Handles (Device_T)-import Vulkan.Core10.Enums.DynamicState (DynamicState)-import Vulkan.CStruct.Extends (Extends)-import Vulkan.CStruct.Extends (Extendss)-import Vulkan.CStruct.Extends (Extensible(..))-import Vulkan.Core10.Enums.Format (Format)-import Vulkan.Core10.Enums.FrontFace (FrontFace)-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (GraphicsPipelineShaderGroupsCreateInfoNV)-import Vulkan.Core10.Enums.LogicOp (LogicOp)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering (MultiviewPerViewAttributesInfoNVX)-import Vulkan.CStruct.Extends (PeekChain)-import Vulkan.CStruct.Extends (PeekChain(..))-import Vulkan.Core10.Handles (Pipeline)-import Vulkan.Core10.Handles (Pipeline(..))-import Vulkan.Core10.Handles (PipelineCache)-import Vulkan.Core10.Handles (PipelineCache(..))-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_blend_operation_advanced (PipelineColorBlendAdvancedStateCreateInfoEXT)-import Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlagBits (PipelineColorBlendStateCreateFlags)-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_color_write_enable (PipelineColorWriteCreateInfoEXT)-import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_pipeline_compiler_control (PipelineCompilerControlCreateInfoAMD)-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_framebuffer_mixed_samples (PipelineCoverageModulationStateCreateInfoNV)-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_coverage_reduction_mode (PipelineCoverageReductionStateCreateInfoNV)-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_fragment_coverage_to_color (PipelineCoverageToColorStateCreateInfoNV)-import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)-import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback (PipelineCreationFeedbackCreateInfo)-import Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits (PipelineDepthStencilStateCreateFlags)-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_discard_rectangles (PipelineDiscardRectangleStateCreateInfoEXT)-import Vulkan.Core10.Enums.PipelineDynamicStateCreateFlags (PipelineDynamicStateCreateFlags)-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_fragment_shading_rate_enums (PipelineFragmentShadingRateEnumStateCreateInfoNV)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_fragment_shading_rate (PipelineFragmentShadingRateStateCreateInfoKHR)-import Vulkan.Core10.Enums.PipelineInputAssemblyStateCreateFlags (PipelineInputAssemblyStateCreateFlags)-import Vulkan.Core10.Handles (PipelineLayout)-import Vulkan.Core10.Enums.PipelineMultisampleStateCreateFlags (PipelineMultisampleStateCreateFlags)-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_conservative_rasterization (PipelineRasterizationConservativeStateCreateInfoEXT)-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clip_enable (PipelineRasterizationDepthClipStateCreateInfoEXT)-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_line_rasterization (PipelineRasterizationLineStateCreateInfoEXT)-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_provoking_vertex (PipelineRasterizationProvokingVertexStateCreateInfoEXT)-import Vulkan.Core10.Enums.PipelineRasterizationStateCreateFlags (PipelineRasterizationStateCreateFlags)-import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_rasterization_order (PipelineRasterizationStateRasterizationOrderAMD)-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_transform_feedback (PipelineRasterizationStateStreamCreateInfoEXT)-import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering (PipelineRenderingCreateInfo)-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_representative_fragment_test (PipelineRepresentativeFragmentTestStateCreateInfoNV)-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (PipelineSampleLocationsStateCreateInfoEXT)-import Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits (PipelineShaderStageCreateFlags)-import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control (PipelineShaderStageRequiredSubgroupSizeCreateInfo)-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_maintenance2 (PipelineTessellationDomainOriginStateCreateInfo)-import Vulkan.Core10.Enums.PipelineTessellationStateCreateFlags (PipelineTessellationStateCreateFlags)-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_vertex_attribute_divisor (PipelineVertexInputDivisorStateCreateInfoEXT)-import Vulkan.Core10.Enums.PipelineVertexInputStateCreateFlags (PipelineVertexInputStateCreateFlags)-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shading_rate_image (PipelineViewportCoarseSampleOrderStateCreateInfoNV)-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clip_control (PipelineViewportDepthClipControlCreateInfoEXT)-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_scissor_exclusive (PipelineViewportExclusiveScissorStateCreateInfoNV)-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shading_rate_image (PipelineViewportShadingRateImageStateCreateInfoNV)-import Vulkan.Core10.Enums.PipelineViewportStateCreateFlags (PipelineViewportStateCreateFlags)-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_viewport_swizzle (PipelineViewportSwizzleStateCreateInfoNV)-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_clip_space_w_scaling (PipelineViewportWScalingStateCreateInfoNV)-import Vulkan.CStruct.Extends (PokeChain)-import Vulkan.CStruct.Extends (PokeChain(..))-import Vulkan.Core10.Enums.PolygonMode (PolygonMode)-import Vulkan.Core10.Enums.PrimitiveTopology (PrimitiveTopology)-import Vulkan.Core10.FundamentalTypes (Rect2D)-import Vulkan.Core10.Handles (RenderPass)-import Vulkan.Core10.Enums.Result (Result)-import Vulkan.Core10.Enums.Result (Result(..))-import Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits)-import Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits(SampleCountFlagBits))-import Vulkan.Core10.FundamentalTypes (SampleMask)-import Vulkan.Core10.Handles (ShaderModule)-import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits)-import Vulkan.CStruct.Extends (SomeStruct)-import Vulkan.CStruct.Extends (SomeStruct(..))-import Vulkan.Core10.Enums.StencilOp (StencilOp)-import Vulkan.Core10.Enums.StructureType (StructureType)-import {-# SOURCE #-} Vulkan.Extensions.VK_HUAWEI_subpass_shading (SubpassShadingPipelineCreateInfoHUAWEI)-import Vulkan.Core10.Enums.VertexInputRate (VertexInputRate)-import Vulkan.Exception (VulkanException(..))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO))-import Vulkan.Core10.Enums.Result (Result(SUCCESS))-import Vulkan.Core10.Enums.BlendFactor (BlendFactor(..))-import Vulkan.Core10.Enums.BlendOp (BlendOp(..))-import Vulkan.Core10.Enums.ColorComponentFlagBits (ColorComponentFlagBits(..))-import Vulkan.Core10.Enums.ColorComponentFlagBits (ColorComponentFlags)-import Vulkan.Core10.Enums.CompareOp (CompareOp(..))-import Vulkan.Core10.Enums.CullModeFlagBits (CullModeFlagBits(..))-import Vulkan.Core10.Enums.CullModeFlagBits (CullModeFlags)-import Vulkan.Core10.Enums.DynamicState (DynamicState(..))-import Vulkan.Core10.Enums.FrontFace (FrontFace(..))-import Vulkan.Core10.Enums.LogicOp (LogicOp(..))-import Vulkan.Core10.Handles (Pipeline(..))-import Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlagBits (PipelineColorBlendStateCreateFlagBits(..))-import Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlagBits (PipelineColorBlendStateCreateFlags)-import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlagBits(..))-import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)-import Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits (PipelineDepthStencilStateCreateFlagBits(..))-import Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits (PipelineDepthStencilStateCreateFlags)-import Vulkan.Core10.Enums.PipelineDynamicStateCreateFlags (PipelineDynamicStateCreateFlags(..))-import Vulkan.Core10.Enums.PipelineInputAssemblyStateCreateFlags (PipelineInputAssemblyStateCreateFlags(..))-import Vulkan.Core10.Enums.PipelineLayoutCreateFlags (PipelineLayoutCreateFlags(..))-import Vulkan.Core10.Enums.PipelineMultisampleStateCreateFlags (PipelineMultisampleStateCreateFlags(..))-import Vulkan.Core10.Enums.PipelineRasterizationStateCreateFlags (PipelineRasterizationStateCreateFlags(..))-import Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits (PipelineShaderStageCreateFlagBits(..))-import Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits (PipelineShaderStageCreateFlags)-import Vulkan.Core10.Enums.PipelineTessellationStateCreateFlags (PipelineTessellationStateCreateFlags(..))-import Vulkan.Core10.Enums.PipelineVertexInputStateCreateFlags (PipelineVertexInputStateCreateFlags(..))-import Vulkan.Core10.Enums.PipelineViewportStateCreateFlags (PipelineViewportStateCreateFlags(..))-import Vulkan.Core10.Enums.PolygonMode (PolygonMode(..))-import Vulkan.Core10.Enums.PrimitiveTopology (PrimitiveTopology(..))-import Vulkan.Core10.FundamentalTypes (SampleMask)-import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(..))-import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)-import Vulkan.Core10.Enums.StencilOp (StencilOp(..))-import Vulkan.Core10.Enums.VertexInputRate (VertexInputRate(..))-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCreateGraphicsPipelines-  :: FunPtr (Ptr Device_T -> PipelineCache -> Word32 -> Ptr (SomeStruct GraphicsPipelineCreateInfo) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result) -> Ptr Device_T -> PipelineCache -> Word32 -> Ptr (SomeStruct GraphicsPipelineCreateInfo) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result---- | vkCreateGraphicsPipelines - Create graphics pipelines------ = Description------ The 'GraphicsPipelineCreateInfo' structure includes an array of--- 'PipelineShaderStageCreateInfo' structures for each of the desired--- active shader stages, as well as creation information for all relevant--- fixed-function stages, and a pipeline layout.------ == Valid Usage------ -   #VUID-vkCreateGraphicsPipelines-flags-00720# If the @flags@ member---     of any element of @pCreateInfos@ contains the---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'---     flag, and the @basePipelineIndex@ member of that same element is not---     @-1@, @basePipelineIndex@ /must/ be less than the index into---     @pCreateInfos@ that corresponds to that element------ -   #VUID-vkCreateGraphicsPipelines-flags-00721# If the @flags@ member---     of any element of @pCreateInfos@ contains the---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'---     flag, the base pipeline /must/ have been created with the---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT'---     flag set------ -   #VUID-vkCreateGraphicsPipelines-pipelineCache-02876# If---     @pipelineCache@ was created with---     'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT',---     host access to @pipelineCache@ /must/ be---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>------ Note------ An implicit cache may be provided by the implementation or a layer. For--- this reason, it is still valid to set--- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT'--- on @flags@ for any element of @pCreateInfos@ while passing--- 'Vulkan.Core10.APIConstants.NULL_HANDLE' for @pipelineCache@.------ == Valid Usage (Implicit)------ -   #VUID-vkCreateGraphicsPipelines-device-parameter# @device@ /must/ be---     a valid 'Vulkan.Core10.Handles.Device' handle------ -   #VUID-vkCreateGraphicsPipelines-pipelineCache-parameter# If---     @pipelineCache@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',---     @pipelineCache@ /must/ be a valid---     'Vulkan.Core10.Handles.PipelineCache' handle------ -   #VUID-vkCreateGraphicsPipelines-pCreateInfos-parameter#---     @pCreateInfos@ /must/ be a valid pointer to an array of---     @createInfoCount@ valid 'GraphicsPipelineCreateInfo' structures------ -   #VUID-vkCreateGraphicsPipelines-pAllocator-parameter# If---     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer---     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'---     structure------ -   #VUID-vkCreateGraphicsPipelines-pPipelines-parameter# @pPipelines@---     /must/ be a valid pointer to an array of @createInfoCount@---     'Vulkan.Core10.Handles.Pipeline' handles------ -   #VUID-vkCreateGraphicsPipelines-createInfoCount-arraylength#---     @createInfoCount@ /must/ be greater than @0@------ -   #VUID-vkCreateGraphicsPipelines-pipelineCache-parent# If---     @pipelineCache@ is a valid handle, it /must/ have been created,---     allocated, or retrieved from @device@------ == Return Codes------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]------     -   'Vulkan.Core10.Enums.Result.SUCCESS'------     -   'Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control.PIPELINE_COMPILE_REQUIRED_EXT'------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'------     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_SHADER_NV'------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',--- 'Vulkan.Core10.Handles.Device', 'GraphicsPipelineCreateInfo',--- 'Vulkan.Core10.Handles.Pipeline', 'Vulkan.Core10.Handles.PipelineCache'-createGraphicsPipelines :: forall io-                         . (MonadIO io)-                        => -- | @device@ is the logical device that creates the graphics pipelines.-                           Device-                        -> -- | @pipelineCache@ is either 'Vulkan.Core10.APIConstants.NULL_HANDLE',-                           -- indicating that pipeline caching is disabled; or the handle of a valid-                           -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-cache pipeline cache>-                           -- object, in which case use of that cache is enabled for the duration of-                           -- the command.-                           PipelineCache-                        -> -- | @pCreateInfos@ is a pointer to an array of 'GraphicsPipelineCreateInfo'-                           -- structures.-                           ("createInfos" ::: Vector (SomeStruct GraphicsPipelineCreateInfo))-                        -> -- | @pAllocator@ controls host memory allocation as described in the-                           -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>-                           -- chapter.-                           ("allocator" ::: Maybe AllocationCallbacks)-                        -> io (Result, ("pipelines" ::: Vector Pipeline))-createGraphicsPipelines device pipelineCache createInfos allocator = liftIO . evalContT $ do-  let vkCreateGraphicsPipelinesPtr = pVkCreateGraphicsPipelines (case device of Device{deviceCmds} -> deviceCmds)-  lift $ unless (vkCreateGraphicsPipelinesPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateGraphicsPipelines is null" Nothing Nothing-  let vkCreateGraphicsPipelines' = mkVkCreateGraphicsPipelines vkCreateGraphicsPipelinesPtr-  pPCreateInfos <- ContT $ allocaBytes @(GraphicsPipelineCreateInfo _) ((Data.Vector.length (createInfos)) * 144)-  Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPCreateInfos `plusPtr` (144 * (i)) :: Ptr (GraphicsPipelineCreateInfo _))) (e) . ($ ())) (createInfos)-  pAllocator <- case (allocator) of-    Nothing -> pure nullPtr-    Just j -> ContT $ withCStruct (j)-  pPPipelines <- ContT $ bracket (callocBytes @Pipeline ((fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) * 8)) free-  r <- lift $ traceAroundEvent "vkCreateGraphicsPipelines" (vkCreateGraphicsPipelines' (deviceHandle (device)) (pipelineCache) ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32)) (forgetExtensions (pPCreateInfos)) pAllocator (pPPipelines))-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))-  pPipelines <- lift $ generateM (fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) (\i -> peek @Pipeline ((pPPipelines `advancePtrBytes` (8 * (i)) :: Ptr Pipeline)))-  pure $ (r, pPipelines)---- | A convenience wrapper to make a compatible pair of calls to--- 'createGraphicsPipelines' and 'destroyPipeline'------ To ensure that 'destroyPipeline' is always called: pass--- 'Control.Exception.bracket' (or the allocate function from your--- favourite resource management library) as the last argument.--- To just extract the pair pass '(,)' as the last argument.----withGraphicsPipelines :: forall io r . MonadIO io => Device -> PipelineCache -> Vector (SomeStruct GraphicsPipelineCreateInfo) -> Maybe AllocationCallbacks -> (io (Result, Vector Pipeline) -> ((Result, Vector Pipeline) -> io ()) -> r) -> r-withGraphicsPipelines device pipelineCache pCreateInfos pAllocator b =-  b (createGraphicsPipelines device pipelineCache pCreateInfos pAllocator)-    (\(_, o1) -> traverse_ (\o1Elem -> destroyPipeline device o1Elem pAllocator) o1)---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCreateComputePipelines-  :: FunPtr (Ptr Device_T -> PipelineCache -> Word32 -> Ptr (SomeStruct ComputePipelineCreateInfo) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result) -> Ptr Device_T -> PipelineCache -> Word32 -> Ptr (SomeStruct ComputePipelineCreateInfo) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result---- | vkCreateComputePipelines - Creates a new compute pipeline object------ == Valid Usage------ -   #VUID-vkCreateComputePipelines-flags-00695# If the @flags@ member of---     any element of @pCreateInfos@ contains the---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'---     flag, and the @basePipelineIndex@ member of that same element is not---     @-1@, @basePipelineIndex@ /must/ be less than the index into---     @pCreateInfos@ that corresponds to that element------ -   #VUID-vkCreateComputePipelines-flags-00696# If the @flags@ member of---     any element of @pCreateInfos@ contains the---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'---     flag, the base pipeline /must/ have been created with the---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT'---     flag set------ -   #VUID-vkCreateComputePipelines-pipelineCache-02873# If---     @pipelineCache@ was created with---     'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT',---     host access to @pipelineCache@ /must/ be---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>------ == Valid Usage (Implicit)------ -   #VUID-vkCreateComputePipelines-device-parameter# @device@ /must/ be---     a valid 'Vulkan.Core10.Handles.Device' handle------ -   #VUID-vkCreateComputePipelines-pipelineCache-parameter# If---     @pipelineCache@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',---     @pipelineCache@ /must/ be a valid---     'Vulkan.Core10.Handles.PipelineCache' handle------ -   #VUID-vkCreateComputePipelines-pCreateInfos-parameter#---     @pCreateInfos@ /must/ be a valid pointer to an array of---     @createInfoCount@ valid 'ComputePipelineCreateInfo' structures------ -   #VUID-vkCreateComputePipelines-pAllocator-parameter# If @pAllocator@---     is not @NULL@, @pAllocator@ /must/ be a valid pointer to a valid---     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' structure------ -   #VUID-vkCreateComputePipelines-pPipelines-parameter# @pPipelines@---     /must/ be a valid pointer to an array of @createInfoCount@---     'Vulkan.Core10.Handles.Pipeline' handles------ -   #VUID-vkCreateComputePipelines-createInfoCount-arraylength#---     @createInfoCount@ /must/ be greater than @0@------ -   #VUID-vkCreateComputePipelines-pipelineCache-parent# If---     @pipelineCache@ is a valid handle, it /must/ have been created,---     allocated, or retrieved from @device@------ == Return Codes------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]------     -   'Vulkan.Core10.Enums.Result.SUCCESS'------     -   'Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control.PIPELINE_COMPILE_REQUIRED_EXT'------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'------     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_SHADER_NV'------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',--- 'ComputePipelineCreateInfo', 'Vulkan.Core10.Handles.Device',--- 'Vulkan.Core10.Handles.Pipeline', 'Vulkan.Core10.Handles.PipelineCache'-createComputePipelines :: forall io-                        . (MonadIO io)-                       => -- | @device@ is the logical device that creates the compute pipelines.-                          Device-                       -> -- | @pipelineCache@ is either 'Vulkan.Core10.APIConstants.NULL_HANDLE',-                          -- indicating that pipeline caching is disabled; or the handle of a valid-                          -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-cache pipeline cache>-                          -- object, in which case use of that cache is enabled for the duration of-                          -- the command.-                          PipelineCache-                       -> -- | @pCreateInfos@ is a pointer to an array of 'ComputePipelineCreateInfo'-                          -- structures.-                          ("createInfos" ::: Vector (SomeStruct ComputePipelineCreateInfo))-                       -> -- | @pAllocator@ controls host memory allocation as described in the-                          -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>-                          -- chapter.-                          ("allocator" ::: Maybe AllocationCallbacks)-                       -> io (Result, ("pipelines" ::: Vector Pipeline))-createComputePipelines device pipelineCache createInfos allocator = liftIO . evalContT $ do-  let vkCreateComputePipelinesPtr = pVkCreateComputePipelines (case device of Device{deviceCmds} -> deviceCmds)-  lift $ unless (vkCreateComputePipelinesPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateComputePipelines is null" Nothing Nothing-  let vkCreateComputePipelines' = mkVkCreateComputePipelines vkCreateComputePipelinesPtr-  pPCreateInfos <- ContT $ allocaBytes @(ComputePipelineCreateInfo _) ((Data.Vector.length (createInfos)) * 96)-  Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPCreateInfos `plusPtr` (96 * (i)) :: Ptr (ComputePipelineCreateInfo _))) (e) . ($ ())) (createInfos)-  pAllocator <- case (allocator) of-    Nothing -> pure nullPtr-    Just j -> ContT $ withCStruct (j)-  pPPipelines <- ContT $ bracket (callocBytes @Pipeline ((fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) * 8)) free-  r <- lift $ traceAroundEvent "vkCreateComputePipelines" (vkCreateComputePipelines' (deviceHandle (device)) (pipelineCache) ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32)) (forgetExtensions (pPCreateInfos)) pAllocator (pPPipelines))-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))-  pPipelines <- lift $ generateM (fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) (\i -> peek @Pipeline ((pPPipelines `advancePtrBytes` (8 * (i)) :: Ptr Pipeline)))-  pure $ (r, pPipelines)---- | A convenience wrapper to make a compatible pair of calls to--- 'createComputePipelines' and 'destroyPipeline'------ To ensure that 'destroyPipeline' is always called: pass--- 'Control.Exception.bracket' (or the allocate function from your--- favourite resource management library) as the last argument.--- To just extract the pair pass '(,)' as the last argument.----withComputePipelines :: forall io r . MonadIO io => Device -> PipelineCache -> Vector (SomeStruct ComputePipelineCreateInfo) -> Maybe AllocationCallbacks -> (io (Result, Vector Pipeline) -> ((Result, Vector Pipeline) -> io ()) -> r) -> r-withComputePipelines device pipelineCache pCreateInfos pAllocator b =-  b (createComputePipelines device pipelineCache pCreateInfos pAllocator)-    (\(_, o1) -> traverse_ (\o1Elem -> destroyPipeline device o1Elem pAllocator) o1)---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkDestroyPipeline-  :: FunPtr (Ptr Device_T -> Pipeline -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> Pipeline -> Ptr AllocationCallbacks -> IO ()---- | vkDestroyPipeline - Destroy a pipeline object------ == Valid Usage------ -   #VUID-vkDestroyPipeline-pipeline-00765# All submitted commands that---     refer to @pipeline@ /must/ have completed execution------ -   #VUID-vkDestroyPipeline-pipeline-00766# If---     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were---     provided when @pipeline@ was created, a compatible set of callbacks---     /must/ be provided here------ -   #VUID-vkDestroyPipeline-pipeline-00767# If no---     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were---     provided when @pipeline@ was created, @pAllocator@ /must/ be @NULL@------ == Valid Usage (Implicit)------ -   #VUID-vkDestroyPipeline-device-parameter# @device@ /must/ be a valid---     'Vulkan.Core10.Handles.Device' handle------ -   #VUID-vkDestroyPipeline-pipeline-parameter# If @pipeline@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @pipeline@ /must/ be a---     valid 'Vulkan.Core10.Handles.Pipeline' handle------ -   #VUID-vkDestroyPipeline-pAllocator-parameter# If @pAllocator@ is not---     @NULL@, @pAllocator@ /must/ be a valid pointer to a valid---     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' structure------ -   #VUID-vkDestroyPipeline-pipeline-parent# If @pipeline@ is a valid---     handle, it /must/ have been created, allocated, or retrieved from---     @device@------ == Host Synchronization------ -   Host access to @pipeline@ /must/ be externally synchronized------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',--- 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.Pipeline'-destroyPipeline :: forall io-                 . (MonadIO io)-                => -- | @device@ is the logical device that destroys the pipeline.-                   Device-                -> -- | @pipeline@ is the handle of the pipeline to destroy.-                   Pipeline-                -> -- | @pAllocator@ controls host memory allocation as described in the-                   -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>-                   -- chapter.-                   ("allocator" ::: Maybe AllocationCallbacks)-                -> io ()-destroyPipeline device pipeline allocator = liftIO . evalContT $ do-  let vkDestroyPipelinePtr = pVkDestroyPipeline (case device of Device{deviceCmds} -> deviceCmds)-  lift $ unless (vkDestroyPipelinePtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkDestroyPipeline is null" Nothing Nothing-  let vkDestroyPipeline' = mkVkDestroyPipeline vkDestroyPipelinePtr-  pAllocator <- case (allocator) of-    Nothing -> pure nullPtr-    Just j -> ContT $ withCStruct (j)-  lift $ traceAroundEvent "vkDestroyPipeline" (vkDestroyPipeline' (deviceHandle (device)) (pipeline) pAllocator)-  pure $ ()----- | VkViewport - Structure specifying a viewport------ = Description------ Note------ Despite their names, @minDepth@ /can/ be less than, equal to, or greater--- than @maxDepth@.------ The framebuffer depth coordinate @z@f /may/ be represented using either--- a fixed-point or floating-point representation. However, a--- floating-point representation /must/ be used if the depth\/stencil--- attachment has a floating-point depth component. If an m-bit fixed-point--- representation is used, we assume that it represents each value--- \(\frac{k}{2^m - 1}\), where k ∈ { 0, 1, …​, 2m-1 }, as k (e.g. 1.0 is--- represented in binary as a string of all ones).------ The viewport parameters shown in the above equations are found from--- these values as------ -   ox = @x@ + @width@ \/ 2------ -   oy = @y@ + @height@ \/ 2------ -   oz = @minDepth@------ -   px = @width@------ -   py = @height@------ -   pz = @maxDepth@ - @minDepth@.------ If a render pass transform is enabled, the values (px,py) and (ox, oy)--- defining the viewport are transformed as described in--- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#vertexpostproc-renderpass-transform render pass transform>--- before participating in the viewport transform.------ The application /can/ specify a negative term for @height@, which has--- the effect of negating the y coordinate in clip space before performing--- the transform. When using a negative @height@, the application /should/--- also adjust the @y@ value to point to the lower left corner of the--- viewport instead of the upper left corner. Using the negative @height@--- allows the application to avoid having to negate the y component of the--- @Position@ output from the last--- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>.------ The width and height of the--- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxViewportDimensions implementation-dependent maximum viewport dimensions>--- /must/ be greater than or equal to the width and height of the largest--- image which /can/ be created and attached to a framebuffer.------ The floating-point viewport bounds are represented with an--- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-viewportSubPixelBits implementation-dependent precision>.------ == Valid Usage------ -   #VUID-VkViewport-width-01770# @width@ /must/ be greater than @0.0@------ -   #VUID-VkViewport-width-01771# @width@ /must/ be less than or equal---     to---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewportDimensions@[0]------ -   #VUID-VkViewport-height-01773# The absolute value of @height@ /must/---     be less than or equal to---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewportDimensions@[1]------ -   #VUID-VkViewport-x-01774# @x@ /must/ be greater than or equal to---     @viewportBoundsRange@[0]------ -   #VUID-VkViewport-x-01232# (@x@ + @width@) /must/ be less than or---     equal to @viewportBoundsRange@[1]------ -   #VUID-VkViewport-y-01775# @y@ /must/ be greater than or equal to---     @viewportBoundsRange@[0]------ -   #VUID-VkViewport-y-01776# @y@ /must/ be less than or equal to---     @viewportBoundsRange@[1]------ -   #VUID-VkViewport-y-01777# (@y@ + @height@) /must/ be greater than or---     equal to @viewportBoundsRange@[0]------ -   #VUID-VkViewport-y-01233# (@y@ + @height@) /must/ be less than or---     equal to @viewportBoundsRange@[1]------ -   #VUID-VkViewport-minDepth-01234# Unless---     @VK_EXT_depth_range_unrestricted@ extension is enabled @minDepth@---     /must/ be between @0.0@ and @1.0@, inclusive------ -   #VUID-VkViewport-maxDepth-01235# Unless---     @VK_EXT_depth_range_unrestricted@ extension is enabled @maxDepth@---     /must/ be between @0.0@ and @1.0@, inclusive------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',--- 'PipelineViewportStateCreateInfo',--- 'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport',--- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount',--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'-data Viewport = Viewport-  { -- | @x@ and @y@ are the viewport’s upper left corner (x,y).-    x :: Float-  , -- No documentation found for Nested "VkViewport" "y"-    y :: Float-  , -- | @width@ and @height@ are the viewport’s width and height, respectively.-    width :: Float-  , -- No documentation found for Nested "VkViewport" "height"-    height :: Float-  , -- | @minDepth@ and @maxDepth@ are the depth range for the viewport.-    minDepth :: Float-  , -- No documentation found for Nested "VkViewport" "maxDepth"-    maxDepth :: Float-  }-  deriving (Typeable, Eq)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (Viewport)-#endif-deriving instance Show Viewport--instance ToCStruct Viewport where-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p Viewport{..} f = do-    poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (x))-    poke ((p `plusPtr` 4 :: Ptr CFloat)) (CFloat (y))-    poke ((p `plusPtr` 8 :: Ptr CFloat)) (CFloat (width))-    poke ((p `plusPtr` 12 :: Ptr CFloat)) (CFloat (height))-    poke ((p `plusPtr` 16 :: Ptr CFloat)) (CFloat (minDepth))-    poke ((p `plusPtr` 20 :: Ptr CFloat)) (CFloat (maxDepth))-    f-  cStructSize = 24-  cStructAlignment = 4-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (zero))-    poke ((p `plusPtr` 4 :: Ptr CFloat)) (CFloat (zero))-    poke ((p `plusPtr` 8 :: Ptr CFloat)) (CFloat (zero))-    poke ((p `plusPtr` 12 :: Ptr CFloat)) (CFloat (zero))-    poke ((p `plusPtr` 16 :: Ptr CFloat)) (CFloat (zero))-    poke ((p `plusPtr` 20 :: Ptr CFloat)) (CFloat (zero))-    f--instance FromCStruct Viewport where-  peekCStruct p = do-    x <- peek @CFloat ((p `plusPtr` 0 :: Ptr CFloat))-    y <- peek @CFloat ((p `plusPtr` 4 :: Ptr CFloat))-    width <- peek @CFloat ((p `plusPtr` 8 :: Ptr CFloat))-    height <- peek @CFloat ((p `plusPtr` 12 :: Ptr CFloat))-    minDepth <- peek @CFloat ((p `plusPtr` 16 :: Ptr CFloat))-    maxDepth <- peek @CFloat ((p `plusPtr` 20 :: Ptr CFloat))-    pure $ Viewport-             (coerce @CFloat @Float x) (coerce @CFloat @Float y) (coerce @CFloat @Float width) (coerce @CFloat @Float height) (coerce @CFloat @Float minDepth) (coerce @CFloat @Float maxDepth)--instance Storable Viewport where-  sizeOf ~_ = 24-  alignment ~_ = 4-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero Viewport where-  zero = Viewport-           zero-           zero-           zero-           zero-           zero-           zero----- | VkSpecializationMapEntry - Structure specifying a specialization map--- entry------ = Description------ If a @constantID@ value is not a specialization constant ID used in the--- shader, that map entry does not affect the behavior of the pipeline.------ == Valid Usage------ -   #VUID-VkSpecializationMapEntry-constantID-00776# For a @constantID@---     specialization constant declared in a shader, @size@ /must/ match---     the byte size of the @constantID@. If the specialization constant is---     of type @boolean@, @size@ /must/ be the byte size of---     'Vulkan.Core10.FundamentalTypes.Bool32'------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'SpecializationInfo'-data SpecializationMapEntry = SpecializationMapEntry-  { -- | @constantID@ is the ID of the specialization constant in SPIR-V.-    constantID :: Word32-  , -- | @offset@ is the byte offset of the specialization constant value within-    -- the supplied data buffer.-    offset :: Word32-  , -- | @size@ is the byte size of the specialization constant value within the-    -- supplied data buffer.-    size :: Word64-  }-  deriving (Typeable, Eq)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (SpecializationMapEntry)-#endif-deriving instance Show SpecializationMapEntry--instance ToCStruct SpecializationMapEntry where-  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p SpecializationMapEntry{..} f = do-    poke ((p `plusPtr` 0 :: Ptr Word32)) (constantID)-    poke ((p `plusPtr` 4 :: Ptr Word32)) (offset)-    poke ((p `plusPtr` 8 :: Ptr CSize)) (CSize (size))-    f-  cStructSize = 16-  cStructAlignment = 8-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 8 :: Ptr CSize)) (CSize (zero))-    f--instance FromCStruct SpecializationMapEntry where-  peekCStruct p = do-    constantID <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))-    offset <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))-    size <- peek @CSize ((p `plusPtr` 8 :: Ptr CSize))-    pure $ SpecializationMapEntry-             constantID offset (coerce @CSize @Word64 size)--instance Storable SpecializationMapEntry where-  sizeOf ~_ = 16-  alignment ~_ = 8-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero SpecializationMapEntry where-  zero = SpecializationMapEntry-           zero-           zero-           zero----- | VkSpecializationInfo - Structure specifying specialization information------ == Valid Usage------ -   #VUID-VkSpecializationInfo-offset-00773# The @offset@ member of each---     element of @pMapEntries@ /must/ be less than @dataSize@------ -   #VUID-VkSpecializationInfo-pMapEntries-00774# The @size@ member of---     each element of @pMapEntries@ /must/ be less than or equal to---     @dataSize@ minus @offset@------ -   #VUID-VkSpecializationInfo-constantID-04911# The @constantID@ value---     of each element of @pMapEntries@ /must/ be unique within---     @pMapEntries@------ == Valid Usage (Implicit)------ -   #VUID-VkSpecializationInfo-pMapEntries-parameter# If @mapEntryCount@---     is not @0@, @pMapEntries@ /must/ be a valid pointer to an array of---     @mapEntryCount@ valid 'SpecializationMapEntry' structures------ -   #VUID-VkSpecializationInfo-pData-parameter# If @dataSize@ is not---     @0@, @pData@ /must/ be a valid pointer to an array of @dataSize@---     bytes------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'PipelineShaderStageCreateInfo', 'SpecializationMapEntry'-data SpecializationInfo = SpecializationInfo-  { -- | @pMapEntries@ is a pointer to an array of 'SpecializationMapEntry'-    -- structures which map constant IDs to offsets in @pData@.-    mapEntries :: Vector SpecializationMapEntry-  , -- | @dataSize@ is the byte size of the @pData@ buffer.-    dataSize :: Word64-  , -- | @pData@ contains the actual constant values to specialize with.-    data' :: Ptr ()-  }-  deriving (Typeable)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (SpecializationInfo)-#endif-deriving instance Show SpecializationInfo--instance ToCStruct SpecializationInfo where-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p SpecializationInfo{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (mapEntries)) :: Word32))-    pPMapEntries' <- ContT $ allocaBytes @SpecializationMapEntry ((Data.Vector.length (mapEntries)) * 16)-    lift $ Data.Vector.imapM_ (\i e -> poke (pPMapEntries' `plusPtr` (16 * (i)) :: Ptr SpecializationMapEntry) (e)) (mapEntries)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr SpecializationMapEntry))) (pPMapEntries')-    lift $ poke ((p `plusPtr` 16 :: Ptr CSize)) (CSize (dataSize))-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ()))) (data')-    lift $ f-  cStructSize = 32-  cStructAlignment = 8-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 24 :: Ptr (Ptr ()))) (zero)-    f--instance FromCStruct SpecializationInfo where-  peekCStruct p = do-    mapEntryCount <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))-    pMapEntries <- peek @(Ptr SpecializationMapEntry) ((p `plusPtr` 8 :: Ptr (Ptr SpecializationMapEntry)))-    pMapEntries' <- generateM (fromIntegral mapEntryCount) (\i -> peekCStruct @SpecializationMapEntry ((pMapEntries `advancePtrBytes` (16 * (i)) :: Ptr SpecializationMapEntry)))-    dataSize <- peek @CSize ((p `plusPtr` 16 :: Ptr CSize))-    pData <- peek @(Ptr ()) ((p `plusPtr` 24 :: Ptr (Ptr ())))-    pure $ SpecializationInfo-             pMapEntries' (coerce @CSize @Word64 dataSize) pData--instance Zero SpecializationInfo where-  zero = SpecializationInfo-           mempty-           zero-           zero----- | VkPipelineShaderStageCreateInfo - Structure specifying parameters of a--- newly created pipeline shader stage------ == Valid Usage------ -   #VUID-VkPipelineShaderStageCreateInfo-stage-00704# If the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-geometryShader geometry shaders>---     feature is not enabled, @stage@ /must/ not be---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'------ -   #VUID-VkPipelineShaderStageCreateInfo-stage-00705# If the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>---     feature is not enabled, @stage@ /must/ not be---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'---     or---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'------ -   #VUID-VkPipelineShaderStageCreateInfo-stage-02091# If the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-meshShader mesh shader>---     feature is not enabled, @stage@ /must/ not be---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_NV'------ -   #VUID-VkPipelineShaderStageCreateInfo-stage-02092# If the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-taskShader task shader>---     feature is not enabled, @stage@ /must/ not be---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_NV'------ -   #VUID-VkPipelineShaderStageCreateInfo-stage-00706# @stage@ /must/---     not be---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_ALL_GRAPHICS',---     or 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_ALL'------ -   #VUID-VkPipelineShaderStageCreateInfo-pName-00707# @pName@ /must/ be---     the name of an @OpEntryPoint@ in @module@ with an execution model---     that matches @stage@------ -   #VUID-VkPipelineShaderStageCreateInfo-maxClipDistances-00708# If the---     identified entry point includes any variable in its interface that---     is declared with the @ClipDistance@ @BuiltIn@ decoration, that---     variable /must/ not have an array size greater than---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxClipDistances@------ -   #VUID-VkPipelineShaderStageCreateInfo-maxCullDistances-00709# If the---     identified entry point includes any variable in its interface that---     is declared with the @CullDistance@ @BuiltIn@ decoration, that---     variable /must/ not have an array size greater than---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxCullDistances@------ -   #VUID-VkPipelineShaderStageCreateInfo-maxCombinedClipAndCullDistances-00710#---     If the identified entry point includes any variables in its---     interface that are declared with the @ClipDistance@ or---     @CullDistance@ @BuiltIn@ decoration, those variables /must/ not have---     array sizes which sum to more than---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxCombinedClipAndCullDistances@------ -   #VUID-VkPipelineShaderStageCreateInfo-maxSampleMaskWords-00711# If---     the identified entry point includes any variable in its interface---     that is declared with the---     'Vulkan.Core10.FundamentalTypes.SampleMask' @BuiltIn@ decoration,---     that variable /must/ not have an array size greater than---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxSampleMaskWords@------ -   #VUID-VkPipelineShaderStageCreateInfo-stage-00712# If @stage@ is---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',---     the identified entry point /must/ not include any input variable in---     its interface that is decorated with @CullDistance@------ -   #VUID-VkPipelineShaderStageCreateInfo-stage-00713# If @stage@ is---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'---     or---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT',---     and the identified entry point has an @OpExecutionMode@ instruction---     specifying a patch size with @OutputVertices@, the patch size /must/---     be greater than @0@ and less than or equal to---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxTessellationPatchSize@------ -   #VUID-VkPipelineShaderStageCreateInfo-stage-00714# If @stage@ is---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',---     the identified entry point /must/ have an @OpExecutionMode@---     instruction specifying a maximum output vertex count that is greater---     than @0@ and less than or equal to---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxGeometryOutputVertices@------ -   #VUID-VkPipelineShaderStageCreateInfo-stage-00715# If @stage@ is---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',---     the identified entry point /must/ have an @OpExecutionMode@---     instruction specifying an invocation count that is greater than @0@---     and less than or equal to---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxGeometryShaderInvocations@------ -   #VUID-VkPipelineShaderStageCreateInfo-stage-02596# If @stage@ is a---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>,---     and the identified entry point writes to @Layer@ for any primitive,---     it /must/ write the same value to @Layer@ for all vertices of a---     given primitive------ -   #VUID-VkPipelineShaderStageCreateInfo-stage-02597# If @stage@ is a---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>,---     and the identified entry point writes to @ViewportIndex@ for any---     primitive, it /must/ write the same value to @ViewportIndex@ for all---     vertices of a given primitive------ -   #VUID-VkPipelineShaderStageCreateInfo-stage-00718# If @stage@ is---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',---     the identified entry point /must/ not include any output variables---     in its interface decorated with @CullDistance@------ -   #VUID-VkPipelineShaderStageCreateInfo-stage-00719# If @stage@ is---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',---     and the identified entry point writes to @FragDepth@ in any---     execution path, it /must/ write to @FragDepth@ in all execution---     paths------ -   #VUID-VkPipelineShaderStageCreateInfo-stage-01511# If @stage@ is---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',---     and the identified entry point writes to @FragStencilRefEXT@ in any---     execution path, it /must/ write to @FragStencilRefEXT@ in all---     execution paths------ -   #VUID-VkPipelineShaderStageCreateInfo-stage-02093# If @stage@ is---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_NV',---     the identified entry point /must/ have an @OpExecutionMode@---     instruction specifying a maximum output vertex count,---     @OutputVertices@, that is greater than @0@ and less than or equal to---     'Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderPropertiesNV'::@maxMeshOutputVertices@------ -   #VUID-VkPipelineShaderStageCreateInfo-stage-02094# If @stage@ is---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_NV',---     the identified entry point /must/ have an @OpExecutionMode@---     instruction specifying a maximum output primitive count,---     @OutputPrimitivesNV@, that is greater than @0@ and less than or---     equal to---     'Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderPropertiesNV'::@maxMeshOutputPrimitives@------ -   #VUID-VkPipelineShaderStageCreateInfo-flags-02784# If @flags@ has---     the---     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT'---     flag set, the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-subgroupSizeControl subgroupSizeControl>---     feature /must/ be enabled------ -   #VUID-VkPipelineShaderStageCreateInfo-flags-02785# If @flags@ has---     the---     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT'---     flag set, the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-computeFullSubgroups computeFullSubgroups>---     feature /must/ be enabled------ -   #VUID-VkPipelineShaderStageCreateInfo-pNext-02754# If a---     'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfo'---     structure is included in the @pNext@ chain, @flags@ /must/ not have---     the---     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT'---     flag set------ -   #VUID-VkPipelineShaderStageCreateInfo-pNext-02755# If a---     'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfo'---     structure is included in the @pNext@ chain, the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-subgroupSizeControl subgroupSizeControl>---     feature /must/ be enabled, and @stage@ /must/ be a valid bit---     specified in---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-requiredSubgroupSizeStages requiredSubgroupSizeStages>------ -   #VUID-VkPipelineShaderStageCreateInfo-pNext-02756# If a---     'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfo'---     structure is included in the @pNext@ chain and @stage@ is---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT',---     the local workgroup size of the shader /must/ be less than or equal---     to the product of---     'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfo'::@requiredSubgroupSize@---     and---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxComputeWorkgroupSubgroups maxComputeWorkgroupSubgroups>------ -   #VUID-VkPipelineShaderStageCreateInfo-pNext-02757# If a---     'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfo'---     structure is included in the @pNext@ chain, and @flags@ has the---     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT'---     flag set, the local workgroup size in the X dimension of the---     pipeline /must/ be a multiple of---     'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfo'::@requiredSubgroupSize@------ -   #VUID-VkPipelineShaderStageCreateInfo-flags-02758# If @flags@ has---     both the---     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT'---     and---     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT'---     flags set, the local workgroup size in the X dimension of the---     pipeline /must/ be a multiple of---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxSubgroupSize maxSubgroupSize>------ -   #VUID-VkPipelineShaderStageCreateInfo-flags-02759# If @flags@ has---     the---     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT'---     flag set and @flags@ does not have the---     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT'---     flag set and no---     'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfo'---     structure is included in the @pNext@ chain, the local workgroup size---     in the X dimension of the pipeline /must/ be a multiple of---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-subgroup-size subgroupSize>------ -   #VUID-VkPipelineShaderStageCreateInfo-module-04145# The SPIR-V code---     that was used to create @module@ /must/ be valid as described by the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirv-spec Khronos SPIR-V Specification>---     after applying the specializations provided in---     @pSpecializationInfo@, if any, and then converting all---     specialization constants into fixed constants------ == Valid Usage (Implicit)------ -   #VUID-VkPipelineShaderStageCreateInfo-sType-sType# @sType@ /must/ be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO'------ -   #VUID-VkPipelineShaderStageCreateInfo-pNext-pNext# @pNext@ /must/ be---     @NULL@ or a pointer to a valid instance of---     'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfo'------ -   #VUID-VkPipelineShaderStageCreateInfo-sType-unique# The @sType@---     value of each struct in the @pNext@ chain /must/ be unique------ -   #VUID-VkPipelineShaderStageCreateInfo-flags-parameter# @flags@---     /must/ be a valid combination of---     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PipelineShaderStageCreateFlagBits'---     values------ -   #VUID-VkPipelineShaderStageCreateInfo-stage-parameter# @stage@---     /must/ be a valid---     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' value------ -   #VUID-VkPipelineShaderStageCreateInfo-module-parameter# @module@---     /must/ be a valid 'Vulkan.Core10.Handles.ShaderModule' handle------ -   #VUID-VkPipelineShaderStageCreateInfo-pName-parameter# @pName@---     /must/ be a null-terminated UTF-8 string------ -   #VUID-VkPipelineShaderStageCreateInfo-pSpecializationInfo-parameter#---     If @pSpecializationInfo@ is not @NULL@, @pSpecializationInfo@ /must/---     be a valid pointer to a valid 'SpecializationInfo' structure------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'ComputePipelineCreateInfo', 'GraphicsPipelineCreateInfo',--- 'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsShaderGroupCreateInfoNV',--- 'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PipelineShaderStageCreateFlags',--- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR',--- 'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV',--- 'Vulkan.Core10.Handles.ShaderModule',--- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits',--- 'SpecializationInfo', 'Vulkan.Core10.Enums.StructureType.StructureType'-data PipelineShaderStageCreateInfo (es :: [Type]) = PipelineShaderStageCreateInfo-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.-    next :: Chain es-  , -- | @flags@ is a bitmask of-    -- 'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PipelineShaderStageCreateFlagBits'-    -- specifying how the pipeline shader stage will be generated.-    flags :: PipelineShaderStageCreateFlags-  , -- | @stage@ is a-    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' value-    -- specifying a single pipeline stage.-    stage :: ShaderStageFlagBits-  , -- | @module@ is a 'Vulkan.Core10.Handles.ShaderModule' object containing the-    -- shader for this stage.-    module' :: ShaderModule-  , -- | @pName@ is a pointer to a null-terminated UTF-8 string specifying the-    -- entry point name of the shader for this stage.-    name :: ByteString-  , -- | @pSpecializationInfo@ is a pointer to a 'SpecializationInfo' structure,-    -- as described in-    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-specialization-constants Specialization Constants>,-    -- or @NULL@.-    specializationInfo :: Maybe SpecializationInfo-  }-  deriving (Typeable)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (PipelineShaderStageCreateInfo (es :: [Type]))-#endif-deriving instance Show (Chain es) => Show (PipelineShaderStageCreateInfo es)--instance Extensible PipelineShaderStageCreateInfo where-  extensibleTypeName = "PipelineShaderStageCreateInfo"-  setNext PipelineShaderStageCreateInfo{..} next' = PipelineShaderStageCreateInfo{next = next', ..}-  getNext PipelineShaderStageCreateInfo{..} = next-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends PipelineShaderStageCreateInfo e => b) -> Maybe b-  extends _ f-    | Just Refl <- eqT @e @PipelineShaderStageRequiredSubgroupSizeCreateInfo = Just f-    | otherwise = Nothing--instance (Extendss PipelineShaderStageCreateInfo es, PokeChain es) => ToCStruct (PipelineShaderStageCreateInfo es) where-  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p PipelineShaderStageCreateInfo{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO)-    pNext'' <- fmap castPtr . ContT $ withChain (next)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''-    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineShaderStageCreateFlags)) (flags)-    lift $ poke ((p `plusPtr` 20 :: Ptr ShaderStageFlagBits)) (stage)-    lift $ poke ((p `plusPtr` 24 :: Ptr ShaderModule)) (module')-    pName'' <- ContT $ useAsCString (name)-    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr CChar))) pName''-    pSpecializationInfo'' <- case (specializationInfo) of-      Nothing -> pure nullPtr-      Just j -> ContT $ withCStruct (j)-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr SpecializationInfo))) pSpecializationInfo''-    lift $ f-  cStructSize = 48-  cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO)-    pNext' <- fmap castPtr . ContT $ withZeroChain @es-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'-    lift $ poke ((p `plusPtr` 20 :: Ptr ShaderStageFlagBits)) (zero)-    lift $ poke ((p `plusPtr` 24 :: Ptr ShaderModule)) (zero)-    pName'' <- ContT $ useAsCString (mempty)-    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr CChar))) pName''-    lift $ f--instance (Extendss PipelineShaderStageCreateInfo es, PeekChain es) => FromCStruct (PipelineShaderStageCreateInfo es) where-  peekCStruct p = do-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))-    next <- peekChain (castPtr pNext)-    flags <- peek @PipelineShaderStageCreateFlags ((p `plusPtr` 16 :: Ptr PipelineShaderStageCreateFlags))-    stage <- peek @ShaderStageFlagBits ((p `plusPtr` 20 :: Ptr ShaderStageFlagBits))-    module' <- peek @ShaderModule ((p `plusPtr` 24 :: Ptr ShaderModule))-    pName <- packCString =<< peek ((p `plusPtr` 32 :: Ptr (Ptr CChar)))-    pSpecializationInfo <- peek @(Ptr SpecializationInfo) ((p `plusPtr` 40 :: Ptr (Ptr SpecializationInfo)))-    pSpecializationInfo' <- maybePeek (\j -> peekCStruct @SpecializationInfo (j)) pSpecializationInfo-    pure $ PipelineShaderStageCreateInfo-             next flags stage module' pName pSpecializationInfo'--instance es ~ '[] => Zero (PipelineShaderStageCreateInfo es) where-  zero = PipelineShaderStageCreateInfo-           ()-           zero-           zero-           zero-           mempty-           Nothing----- | VkComputePipelineCreateInfo - Structure specifying parameters of a newly--- created compute pipeline------ = Description------ The parameters @basePipelineHandle@ and @basePipelineIndex@ are--- described in more detail in--- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-pipeline-derivatives Pipeline Derivatives>.------ == Valid Usage------ -   #VUID-VkComputePipelineCreateInfo-flags-00697# If @flags@ contains---     the---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'---     flag, and @basePipelineIndex@ is -1, @basePipelineHandle@ /must/ be---     a valid handle to a compute 'Vulkan.Core10.Handles.Pipeline'------ -   #VUID-VkComputePipelineCreateInfo-flags-00698# If @flags@ contains---     the---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'---     flag, and @basePipelineHandle@ is---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @basePipelineIndex@ /must/---     be a valid index into the calling command’s @pCreateInfos@ parameter------ -   #VUID-VkComputePipelineCreateInfo-flags-00699# If @flags@ contains---     the---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'---     flag, and @basePipelineIndex@ is not -1, @basePipelineHandle@ /must/---     be 'Vulkan.Core10.APIConstants.NULL_HANDLE'------ -   #VUID-VkComputePipelineCreateInfo-flags-00700# If @flags@ contains---     the---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'---     flag, and @basePipelineHandle@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @basePipelineIndex@ /must/---     be -1------ -   #VUID-VkComputePipelineCreateInfo-stage-00701# The @stage@ member of---     @stage@ /must/ be---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'------ -   #VUID-VkComputePipelineCreateInfo-stage-00702# The shader code for---     the entry point identified by @stage@ and the rest of the state---     identified by this structure /must/ adhere to the pipeline linking---     rules described in the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces Shader Interfaces>---     chapter------ -   #VUID-VkComputePipelineCreateInfo-layout-00703# @layout@ /must/ be---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency consistent>---     with the layout of the compute shader specified in @stage@------ -   #VUID-VkComputePipelineCreateInfo-layout-01687# The number of---     resources in @layout@ accessible to the compute shader stage /must/---     be less than or equal to---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPerStageResources@------ -   #VUID-VkComputePipelineCreateInfo-flags-03364# @flags@ /must/ not---     include---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'------ -   #VUID-VkComputePipelineCreateInfo-flags-03365# @flags@ /must/ not---     include---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR'------ -   #VUID-VkComputePipelineCreateInfo-flags-03366# @flags@ /must/ not---     include---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR'------ -   #VUID-VkComputePipelineCreateInfo-flags-03367# @flags@ /must/ not---     include---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR'------ -   #VUID-VkComputePipelineCreateInfo-flags-03368# @flags@ /must/ not---     include---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR'------ -   #VUID-VkComputePipelineCreateInfo-flags-03369# @flags@ /must/ not---     include---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR'------ -   #VUID-VkComputePipelineCreateInfo-flags-03370# @flags@ /must/ not---     include---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR'------ -   #VUID-VkComputePipelineCreateInfo-flags-03576# @flags@ /must/ not---     include---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'------ -   #VUID-VkComputePipelineCreateInfo-flags-04945# @flags@ /must/ not---     include---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV'------ -   #VUID-VkComputePipelineCreateInfo-flags-02874# @flags@ /must/ not---     include---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV'------ -   #VUID-VkComputePipelineCreateInfo-pipelineCreationCacheControl-02875#---     If the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineCreationCacheControl pipelineCreationCacheControl>---     feature is not enabled, @flags@ /must/ not include---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT'---     or---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT'------ == Valid Usage (Implicit)------ -   #VUID-VkComputePipelineCreateInfo-sType-sType# @sType@ /must/ be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO'------ -   #VUID-VkComputePipelineCreateInfo-pNext-pNext# Each @pNext@ member---     of any structure (including this one) in the @pNext@ chain /must/ be---     either @NULL@ or a pointer to a valid instance of---     'Vulkan.Extensions.VK_AMD_pipeline_compiler_control.PipelineCompilerControlCreateInfoAMD',---     'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfo',---     or---     'Vulkan.Extensions.VK_HUAWEI_subpass_shading.SubpassShadingPipelineCreateInfoHUAWEI'------ -   #VUID-VkComputePipelineCreateInfo-sType-unique# The @sType@ value of---     each struct in the @pNext@ chain /must/ be unique------ -   #VUID-VkComputePipelineCreateInfo-flags-parameter# @flags@ /must/ be---     a valid combination of---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'---     values------ -   #VUID-VkComputePipelineCreateInfo-stage-parameter# @stage@ /must/ be---     a valid 'PipelineShaderStageCreateInfo' structure------ -   #VUID-VkComputePipelineCreateInfo-layout-parameter# @layout@ /must/---     be a valid 'Vulkan.Core10.Handles.PipelineLayout' handle------ -   #VUID-VkComputePipelineCreateInfo-commonparent# Both of---     @basePipelineHandle@, and @layout@ that are valid handles of---     non-ignored parameters /must/ have been created, allocated, or---     retrieved from the same 'Vulkan.Core10.Handles.Device'------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Handles.Pipeline',--- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlags',--- 'Vulkan.Core10.Handles.PipelineLayout', 'PipelineShaderStageCreateInfo',--- 'Vulkan.Core10.Enums.StructureType.StructureType',--- 'createComputePipelines'-data ComputePipelineCreateInfo (es :: [Type]) = ComputePipelineCreateInfo-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.-    next :: Chain es-  , -- | @flags@ is a bitmask of-    -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'-    -- specifying how the pipeline will be generated.-    flags :: PipelineCreateFlags-  , -- | @stage@ is a 'PipelineShaderStageCreateInfo' structure describing the-    -- compute shader.-    stage :: SomeStruct PipelineShaderStageCreateInfo-  , -- | @layout@ is the description of binding locations used by both the-    -- pipeline and descriptor sets used with the pipeline.-    layout :: PipelineLayout-  , -- | @basePipelineHandle@ is a pipeline to derive from-    basePipelineHandle :: Pipeline-  , -- | @basePipelineIndex@ is an index into the @pCreateInfos@ parameter to use-    -- as a pipeline to derive from-    basePipelineIndex :: Int32-  }-  deriving (Typeable)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (ComputePipelineCreateInfo (es :: [Type]))-#endif-deriving instance Show (Chain es) => Show (ComputePipelineCreateInfo es)--instance Extensible ComputePipelineCreateInfo where-  extensibleTypeName = "ComputePipelineCreateInfo"-  setNext ComputePipelineCreateInfo{..} next' = ComputePipelineCreateInfo{next = next', ..}-  getNext ComputePipelineCreateInfo{..} = next-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends ComputePipelineCreateInfo e => b) -> Maybe b-  extends _ f-    | Just Refl <- eqT @e @PipelineCompilerControlCreateInfoAMD = Just f-    | Just Refl <- eqT @e @SubpassShadingPipelineCreateInfoHUAWEI = Just f-    | Just Refl <- eqT @e @PipelineCreationFeedbackCreateInfo = Just f-    | otherwise = Nothing--instance (Extendss ComputePipelineCreateInfo es, PokeChain es) => ToCStruct (ComputePipelineCreateInfo es) where-  withCStruct x f = allocaBytes 96 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p ComputePipelineCreateInfo{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO)-    pNext'' <- fmap castPtr . ContT $ withChain (next)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''-    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineCreateFlags)) (flags)-    ContT $ pokeSomeCStruct (forgetExtensions ((p `plusPtr` 24 :: Ptr (PipelineShaderStageCreateInfo _)))) (stage) . ($ ())-    lift $ poke ((p `plusPtr` 72 :: Ptr PipelineLayout)) (layout)-    lift $ poke ((p `plusPtr` 80 :: Ptr Pipeline)) (basePipelineHandle)-    lift $ poke ((p `plusPtr` 88 :: Ptr Int32)) (basePipelineIndex)-    lift $ f-  cStructSize = 96-  cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO)-    pNext' <- fmap castPtr . ContT $ withZeroChain @es-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'-    ContT $ pokeSomeCStruct (forgetExtensions ((p `plusPtr` 24 :: Ptr (PipelineShaderStageCreateInfo _)))) ((SomeStruct zero)) . ($ ())-    lift $ poke ((p `plusPtr` 72 :: Ptr PipelineLayout)) (zero)-    lift $ poke ((p `plusPtr` 88 :: Ptr Int32)) (zero)-    lift $ f--instance (Extendss ComputePipelineCreateInfo es, PeekChain es) => FromCStruct (ComputePipelineCreateInfo es) where-  peekCStruct p = do-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))-    next <- peekChain (castPtr pNext)-    flags <- peek @PipelineCreateFlags ((p `plusPtr` 16 :: Ptr PipelineCreateFlags))-    stage <- peekSomeCStruct (forgetExtensions ((p `plusPtr` 24 :: Ptr (PipelineShaderStageCreateInfo _))))-    layout <- peek @PipelineLayout ((p `plusPtr` 72 :: Ptr PipelineLayout))-    basePipelineHandle <- peek @Pipeline ((p `plusPtr` 80 :: Ptr Pipeline))-    basePipelineIndex <- peek @Int32 ((p `plusPtr` 88 :: Ptr Int32))-    pure $ ComputePipelineCreateInfo-             next flags stage layout basePipelineHandle basePipelineIndex--instance es ~ '[] => Zero (ComputePipelineCreateInfo es) where-  zero = ComputePipelineCreateInfo-           ()-           zero-           (SomeStruct zero)-           zero-           zero-           zero----- | VkVertexInputBindingDescription - Structure specifying vertex input--- binding description------ == Valid Usage------ -   #VUID-VkVertexInputBindingDescription-binding-00618# @binding@---     /must/ be less than---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindings@------ -   #VUID-VkVertexInputBindingDescription-stride-00619# @stride@ /must/---     be less than or equal to---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindingStride@------ -   #VUID-VkVertexInputBindingDescription-stride-04456# If the---     @VK_KHR_portability_subset@ extension is enabled, @stride@ /must/ be---     a multiple of, and at least as large as,---     'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetPropertiesKHR'::@minVertexInputBindingStrideAlignment@------ == Valid Usage (Implicit)------ -   #VUID-VkVertexInputBindingDescription-inputRate-parameter#---     @inputRate@ /must/ be a valid---     'Vulkan.Core10.Enums.VertexInputRate.VertexInputRate' value------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'PipelineVertexInputStateCreateInfo',--- 'Vulkan.Core10.Enums.VertexInputRate.VertexInputRate'-data VertexInputBindingDescription = VertexInputBindingDescription-  { -- | @binding@ is the binding number that this structure describes.-    binding :: Word32-  , -- | @stride@ is the byte stride between consecutive elements within the-    -- buffer.-    stride :: Word32-  , -- | @inputRate@ is a 'Vulkan.Core10.Enums.VertexInputRate.VertexInputRate'-    -- value specifying whether vertex attribute addressing is a function of-    -- the vertex index or of the instance index.-    inputRate :: VertexInputRate-  }-  deriving (Typeable, Eq)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (VertexInputBindingDescription)-#endif-deriving instance Show VertexInputBindingDescription--instance ToCStruct VertexInputBindingDescription where-  withCStruct x f = allocaBytes 12 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p VertexInputBindingDescription{..} f = do-    poke ((p `plusPtr` 0 :: Ptr Word32)) (binding)-    poke ((p `plusPtr` 4 :: Ptr Word32)) (stride)-    poke ((p `plusPtr` 8 :: Ptr VertexInputRate)) (inputRate)-    f-  cStructSize = 12-  cStructAlignment = 4-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 8 :: Ptr VertexInputRate)) (zero)-    f--instance FromCStruct VertexInputBindingDescription where-  peekCStruct p = do-    binding <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))-    stride <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))-    inputRate <- peek @VertexInputRate ((p `plusPtr` 8 :: Ptr VertexInputRate))-    pure $ VertexInputBindingDescription-             binding stride inputRate--instance Storable VertexInputBindingDescription where-  sizeOf ~_ = 12-  alignment ~_ = 4-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero VertexInputBindingDescription where-  zero = VertexInputBindingDescription-           zero-           zero-           zero----- | VkVertexInputAttributeDescription - Structure specifying vertex input--- attribute description------ == Valid Usage------ -   #VUID-VkVertexInputAttributeDescription-location-00620# @location@---     /must/ be less than---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputAttributes@------ -   #VUID-VkVertexInputAttributeDescription-binding-00621# @binding@---     /must/ be less than---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindings@------ -   #VUID-VkVertexInputAttributeDescription-offset-00622# @offset@---     /must/ be less than or equal to---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputAttributeOffset@------ -   #VUID-VkVertexInputAttributeDescription-format-00623# @format@---     /must/ be allowed as a vertex buffer format, as specified by the---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_VERTEX_BUFFER_BIT'---     flag in---     'Vulkan.Core10.DeviceInitialization.FormatProperties'::@bufferFeatures@---     returned by---     'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceFormatProperties'------ -   #VUID-VkVertexInputAttributeDescription-vertexAttributeAccessBeyondStride-04457#---     If the @VK_KHR_portability_subset@ extension is enabled, and---     'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR'::@vertexAttributeAccessBeyondStride@---     is 'Vulkan.Core10.FundamentalTypes.FALSE', the sum of @offset@ plus---     the size of the vertex attribute data described by @format@ /must/---     not be greater than @stride@ in the 'VertexInputBindingDescription'---     referenced in @binding@------ == Valid Usage (Implicit)------ -   #VUID-VkVertexInputAttributeDescription-format-parameter# @format@---     /must/ be a valid 'Vulkan.Core10.Enums.Format.Format' value------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Enums.Format.Format',--- 'PipelineVertexInputStateCreateInfo'-data VertexInputAttributeDescription = VertexInputAttributeDescription-  { -- | @location@ is the shader input location number for this attribute.-    location :: Word32-  , -- | @binding@ is the binding number which this attribute takes its data-    -- from.-    binding :: Word32-  , -- | @format@ is the size and type of the vertex attribute data.-    format :: Format-  , -- | @offset@ is a byte offset of this attribute relative to the start of an-    -- element in the vertex input binding.-    offset :: Word32-  }-  deriving (Typeable, Eq)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (VertexInputAttributeDescription)-#endif-deriving instance Show VertexInputAttributeDescription--instance ToCStruct VertexInputAttributeDescription where-  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p VertexInputAttributeDescription{..} f = do-    poke ((p `plusPtr` 0 :: Ptr Word32)) (location)-    poke ((p `plusPtr` 4 :: Ptr Word32)) (binding)-    poke ((p `plusPtr` 8 :: Ptr Format)) (format)-    poke ((p `plusPtr` 12 :: Ptr Word32)) (offset)-    f-  cStructSize = 16-  cStructAlignment = 4-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 8 :: Ptr Format)) (zero)-    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)-    f--instance FromCStruct VertexInputAttributeDescription where-  peekCStruct p = do-    location <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))-    binding <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))-    format <- peek @Format ((p `plusPtr` 8 :: Ptr Format))-    offset <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))-    pure $ VertexInputAttributeDescription-             location binding format offset--instance Storable VertexInputAttributeDescription where-  sizeOf ~_ = 16-  alignment ~_ = 4-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero VertexInputAttributeDescription where-  zero = VertexInputAttributeDescription-           zero-           zero-           zero-           zero----- | VkPipelineVertexInputStateCreateInfo - Structure specifying parameters--- of a newly created pipeline vertex input state------ == Valid Usage------ -   #VUID-VkPipelineVertexInputStateCreateInfo-vertexBindingDescriptionCount-00613#---     @vertexBindingDescriptionCount@ /must/ be less than or equal to---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindings@------ -   #VUID-VkPipelineVertexInputStateCreateInfo-vertexAttributeDescriptionCount-00614#---     @vertexAttributeDescriptionCount@ /must/ be less than or equal to---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputAttributes@------ -   #VUID-VkPipelineVertexInputStateCreateInfo-binding-00615# For every---     @binding@ specified by each element of---     @pVertexAttributeDescriptions@, a 'VertexInputBindingDescription'---     /must/ exist in @pVertexBindingDescriptions@ with the same value of---     @binding@------ -   #VUID-VkPipelineVertexInputStateCreateInfo-pVertexBindingDescriptions-00616#---     All elements of @pVertexBindingDescriptions@ /must/ describe---     distinct binding numbers------ -   #VUID-VkPipelineVertexInputStateCreateInfo-pVertexAttributeDescriptions-00617#---     All elements of @pVertexAttributeDescriptions@ /must/ describe---     distinct attribute locations------ == Valid Usage (Implicit)------ -   #VUID-VkPipelineVertexInputStateCreateInfo-sType-sType# @sType@---     /must/ be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO'------ -   #VUID-VkPipelineVertexInputStateCreateInfo-pNext-pNext# @pNext@---     /must/ be @NULL@ or a pointer to a valid instance of---     'Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.PipelineVertexInputDivisorStateCreateInfoEXT'------ -   #VUID-VkPipelineVertexInputStateCreateInfo-sType-unique# The @sType@---     value of each struct in the @pNext@ chain /must/ be unique------ -   #VUID-VkPipelineVertexInputStateCreateInfo-flags-zerobitmask#---     @flags@ /must/ be @0@------ -   #VUID-VkPipelineVertexInputStateCreateInfo-pVertexBindingDescriptions-parameter#---     If @vertexBindingDescriptionCount@ is not @0@,---     @pVertexBindingDescriptions@ /must/ be a valid pointer to an array---     of @vertexBindingDescriptionCount@ valid---     'VertexInputBindingDescription' structures------ -   #VUID-VkPipelineVertexInputStateCreateInfo-pVertexAttributeDescriptions-parameter#---     If @vertexAttributeDescriptionCount@ is not @0@,---     @pVertexAttributeDescriptions@ /must/ be a valid pointer to an array---     of @vertexAttributeDescriptionCount@ valid---     'VertexInputAttributeDescription' structures------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'GraphicsPipelineCreateInfo',--- 'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsShaderGroupCreateInfoNV',--- 'Vulkan.Core10.Enums.PipelineVertexInputStateCreateFlags.PipelineVertexInputStateCreateFlags',--- 'Vulkan.Core10.Enums.StructureType.StructureType',--- 'VertexInputAttributeDescription', 'VertexInputBindingDescription'-data PipelineVertexInputStateCreateInfo (es :: [Type]) = PipelineVertexInputStateCreateInfo-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.-    next :: Chain es-  , -- | @flags@ is reserved for future use.-    flags :: PipelineVertexInputStateCreateFlags-  , -- | @pVertexBindingDescriptions@ is a pointer to an array of-    -- 'VertexInputBindingDescription' structures.-    vertexBindingDescriptions :: Vector VertexInputBindingDescription-  , -- | @pVertexAttributeDescriptions@ is a pointer to an array of-    -- 'VertexInputAttributeDescription' structures.-    vertexAttributeDescriptions :: Vector VertexInputAttributeDescription-  }-  deriving (Typeable)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (PipelineVertexInputStateCreateInfo (es :: [Type]))-#endif-deriving instance Show (Chain es) => Show (PipelineVertexInputStateCreateInfo es)--instance Extensible PipelineVertexInputStateCreateInfo where-  extensibleTypeName = "PipelineVertexInputStateCreateInfo"-  setNext PipelineVertexInputStateCreateInfo{..} next' = PipelineVertexInputStateCreateInfo{next = next', ..}-  getNext PipelineVertexInputStateCreateInfo{..} = next-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends PipelineVertexInputStateCreateInfo e => b) -> Maybe b-  extends _ f-    | Just Refl <- eqT @e @PipelineVertexInputDivisorStateCreateInfoEXT = Just f-    | otherwise = Nothing--instance (Extendss PipelineVertexInputStateCreateInfo es, PokeChain es) => ToCStruct (PipelineVertexInputStateCreateInfo es) where-  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p PipelineVertexInputStateCreateInfo{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO)-    pNext'' <- fmap castPtr . ContT $ withChain (next)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''-    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineVertexInputStateCreateFlags)) (flags)-    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (vertexBindingDescriptions)) :: Word32))-    pPVertexBindingDescriptions' <- ContT $ allocaBytes @VertexInputBindingDescription ((Data.Vector.length (vertexBindingDescriptions)) * 12)-    lift $ Data.Vector.imapM_ (\i e -> poke (pPVertexBindingDescriptions' `plusPtr` (12 * (i)) :: Ptr VertexInputBindingDescription) (e)) (vertexBindingDescriptions)-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr VertexInputBindingDescription))) (pPVertexBindingDescriptions')-    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (vertexAttributeDescriptions)) :: Word32))-    pPVertexAttributeDescriptions' <- ContT $ allocaBytes @VertexInputAttributeDescription ((Data.Vector.length (vertexAttributeDescriptions)) * 16)-    lift $ Data.Vector.imapM_ (\i e -> poke (pPVertexAttributeDescriptions' `plusPtr` (16 * (i)) :: Ptr VertexInputAttributeDescription) (e)) (vertexAttributeDescriptions)-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr VertexInputAttributeDescription))) (pPVertexAttributeDescriptions')-    lift $ f-  cStructSize = 48-  cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO)-    pNext' <- fmap castPtr . ContT $ withZeroChain @es-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'-    lift $ f--instance (Extendss PipelineVertexInputStateCreateInfo es, PeekChain es) => FromCStruct (PipelineVertexInputStateCreateInfo es) where-  peekCStruct p = do-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))-    next <- peekChain (castPtr pNext)-    flags <- peek @PipelineVertexInputStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineVertexInputStateCreateFlags))-    vertexBindingDescriptionCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))-    pVertexBindingDescriptions <- peek @(Ptr VertexInputBindingDescription) ((p `plusPtr` 24 :: Ptr (Ptr VertexInputBindingDescription)))-    pVertexBindingDescriptions' <- generateM (fromIntegral vertexBindingDescriptionCount) (\i -> peekCStruct @VertexInputBindingDescription ((pVertexBindingDescriptions `advancePtrBytes` (12 * (i)) :: Ptr VertexInputBindingDescription)))-    vertexAttributeDescriptionCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))-    pVertexAttributeDescriptions <- peek @(Ptr VertexInputAttributeDescription) ((p `plusPtr` 40 :: Ptr (Ptr VertexInputAttributeDescription)))-    pVertexAttributeDescriptions' <- generateM (fromIntegral vertexAttributeDescriptionCount) (\i -> peekCStruct @VertexInputAttributeDescription ((pVertexAttributeDescriptions `advancePtrBytes` (16 * (i)) :: Ptr VertexInputAttributeDescription)))-    pure $ PipelineVertexInputStateCreateInfo-             next flags pVertexBindingDescriptions' pVertexAttributeDescriptions'--instance es ~ '[] => Zero (PipelineVertexInputStateCreateInfo es) where-  zero = PipelineVertexInputStateCreateInfo-           ()-           zero-           mempty-           mempty----- | VkPipelineInputAssemblyStateCreateInfo - Structure specifying parameters--- of a newly created pipeline input assembly state------ = Description------ Restarting the assembly of primitives discards the most recent index--- values if those elements formed an incomplete primitive, and restarts--- the primitive assembly using the subsequent indices, but only assembling--- the immediately following element through the end of the originally--- specified elements. The primitive restart index value comparison is--- performed before adding the @vertexOffset@ value to the index value.------ == Valid Usage------ -   #VUID-VkPipelineInputAssemblyStateCreateInfo-topology-06252# If---     @topology@ is---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_POINT_LIST',---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST',---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST',---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY'---     or---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY',---     and @primitiveRestartEnable@ is---     'Vulkan.Core10.FundamentalTypes.TRUE', the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitiveTopologyListRestart primitiveTopologyListRestart>---     feature /must/ be enabled------ -   #VUID-VkPipelineInputAssemblyStateCreateInfo-topology-06253# If---     @topology@ is---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST',---     and @primitiveRestartEnable@ is---     'Vulkan.Core10.FundamentalTypes.TRUE', the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitiveTopologyPatchListRestart primitiveTopologyPatchListRestart>---     feature /must/ be enabled------ -   #VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00429# If the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-geometryShader geometry shaders>---     feature is not enabled, @topology@ /must/ not be any of---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY',---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY',---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY'---     or---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY'------ -   #VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00430# If the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>---     feature is not enabled, @topology@ /must/ not be---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST'------ -   #VUID-VkPipelineInputAssemblyStateCreateInfo-triangleFans-04452# If---     the @VK_KHR_portability_subset@ extension is enabled, and---     'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR'::@triangleFans@---     is 'Vulkan.Core10.FundamentalTypes.FALSE', @topology@ /must/ not be---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_FAN'------ == Valid Usage (Implicit)------ -   #VUID-VkPipelineInputAssemblyStateCreateInfo-sType-sType# @sType@---     /must/ be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO'------ -   #VUID-VkPipelineInputAssemblyStateCreateInfo-pNext-pNext# @pNext@---     /must/ be @NULL@------ -   #VUID-VkPipelineInputAssemblyStateCreateInfo-flags-zerobitmask#---     @flags@ /must/ be @0@------ -   #VUID-VkPipelineInputAssemblyStateCreateInfo-topology-parameter#---     @topology@ /must/ be a valid---     'Vulkan.Core10.Enums.PrimitiveTopology.PrimitiveTopology' value------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.FundamentalTypes.Bool32', 'GraphicsPipelineCreateInfo',--- 'Vulkan.Core10.Enums.PipelineInputAssemblyStateCreateFlags.PipelineInputAssemblyStateCreateFlags',--- 'Vulkan.Core10.Enums.PrimitiveTopology.PrimitiveTopology',--- 'Vulkan.Core10.Enums.StructureType.StructureType'-data PipelineInputAssemblyStateCreateInfo = PipelineInputAssemblyStateCreateInfo-  { -- | @flags@ is reserved for future use.-    flags :: PipelineInputAssemblyStateCreateFlags-  , -- | @topology@ is a-    -- 'Vulkan.Core10.Enums.PrimitiveTopology.PrimitiveTopology' defining the-    -- primitive topology, as described below.-    topology :: PrimitiveTopology-  , -- | @primitiveRestartEnable@ controls whether a special vertex index value-    -- is treated as restarting the assembly of primitives. This enable only-    -- applies to indexed draws-    -- ('Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexed',-    -- 'Vulkan.Extensions.VK_EXT_multi_draw.cmdDrawMultiIndexedEXT', and-    -- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect'), and the-    -- special index value is either 0xFFFFFFFF when the @indexType@ parameter-    -- of 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer' is equal to-    -- 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT32', 0xFF when @indexType@-    -- is equal to 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT8_EXT', or-    -- 0xFFFF when @indexType@ is equal to-    -- 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT16'. Primitive restart is-    -- not allowed for “list” topologies, unless one of the features-    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitiveTopologyPatchListRestart primitiveTopologyPatchListRestart>-    -- (for-    -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST')-    -- or-    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitiveTopologyListRestart primitiveTopologyListRestart>-    -- (for all other list topologies) is enabled.-    primitiveRestartEnable :: Bool-  }-  deriving (Typeable, Eq)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (PipelineInputAssemblyStateCreateInfo)-#endif-deriving instance Show PipelineInputAssemblyStateCreateInfo--instance ToCStruct PipelineInputAssemblyStateCreateInfo where-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p PipelineInputAssemblyStateCreateInfo{..} f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr PipelineInputAssemblyStateCreateFlags)) (flags)-    poke ((p `plusPtr` 20 :: Ptr PrimitiveTopology)) (topology)-    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (primitiveRestartEnable))-    f-  cStructSize = 32-  cStructAlignment = 8-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 20 :: Ptr PrimitiveTopology)) (zero)-    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))-    f--instance FromCStruct PipelineInputAssemblyStateCreateInfo where-  peekCStruct p = do-    flags <- peek @PipelineInputAssemblyStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineInputAssemblyStateCreateFlags))-    topology <- peek @PrimitiveTopology ((p `plusPtr` 20 :: Ptr PrimitiveTopology))-    primitiveRestartEnable <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))-    pure $ PipelineInputAssemblyStateCreateInfo-             flags topology (bool32ToBool primitiveRestartEnable)--instance Storable PipelineInputAssemblyStateCreateInfo where-  sizeOf ~_ = 32-  alignment ~_ = 8-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero PipelineInputAssemblyStateCreateInfo where-  zero = PipelineInputAssemblyStateCreateInfo-           zero-           zero-           zero----- | VkPipelineTessellationStateCreateInfo - Structure specifying parameters--- of a newly created pipeline tessellation state------ == Valid Usage------ -   #VUID-VkPipelineTessellationStateCreateInfo-patchControlPoints-01214#---     @patchControlPoints@ /must/ be greater than zero and less than or---     equal to---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxTessellationPatchSize@------ == Valid Usage (Implicit)------ -   #VUID-VkPipelineTessellationStateCreateInfo-sType-sType# @sType@---     /must/ be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO'------ -   #VUID-VkPipelineTessellationStateCreateInfo-pNext-pNext# @pNext@---     /must/ be @NULL@ or a pointer to a valid instance of---     'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.PipelineTessellationDomainOriginStateCreateInfo'------ -   #VUID-VkPipelineTessellationStateCreateInfo-sType-unique# The---     @sType@ value of each struct in the @pNext@ chain /must/ be unique------ -   #VUID-VkPipelineTessellationStateCreateInfo-flags-zerobitmask#---     @flags@ /must/ be @0@------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'GraphicsPipelineCreateInfo',--- 'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsShaderGroupCreateInfoNV',--- 'Vulkan.Core10.Enums.PipelineTessellationStateCreateFlags.PipelineTessellationStateCreateFlags',--- 'Vulkan.Core10.Enums.StructureType.StructureType'-data PipelineTessellationStateCreateInfo (es :: [Type]) = PipelineTessellationStateCreateInfo-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.-    next :: Chain es-  , -- | @flags@ is reserved for future use.-    flags :: PipelineTessellationStateCreateFlags-  , -- | @patchControlPoints@ is the number of control points per patch.-    patchControlPoints :: Word32-  }-  deriving (Typeable)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (PipelineTessellationStateCreateInfo (es :: [Type]))-#endif-deriving instance Show (Chain es) => Show (PipelineTessellationStateCreateInfo es)--instance Extensible PipelineTessellationStateCreateInfo where-  extensibleTypeName = "PipelineTessellationStateCreateInfo"-  setNext PipelineTessellationStateCreateInfo{..} next' = PipelineTessellationStateCreateInfo{next = next', ..}-  getNext PipelineTessellationStateCreateInfo{..} = next-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends PipelineTessellationStateCreateInfo e => b) -> Maybe b-  extends _ f-    | Just Refl <- eqT @e @PipelineTessellationDomainOriginStateCreateInfo = Just f-    | otherwise = Nothing--instance (Extendss PipelineTessellationStateCreateInfo es, PokeChain es) => ToCStruct (PipelineTessellationStateCreateInfo es) where-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p PipelineTessellationStateCreateInfo{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO)-    pNext'' <- fmap castPtr . ContT $ withChain (next)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''-    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineTessellationStateCreateFlags)) (flags)-    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (patchControlPoints)-    lift $ f-  cStructSize = 24-  cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO)-    pNext' <- fmap castPtr . ContT $ withZeroChain @es-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'-    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)-    lift $ f--instance (Extendss PipelineTessellationStateCreateInfo es, PeekChain es) => FromCStruct (PipelineTessellationStateCreateInfo es) where-  peekCStruct p = do-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))-    next <- peekChain (castPtr pNext)-    flags <- peek @PipelineTessellationStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineTessellationStateCreateFlags))-    patchControlPoints <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))-    pure $ PipelineTessellationStateCreateInfo-             next flags patchControlPoints--instance es ~ '[] => Zero (PipelineTessellationStateCreateInfo es) where-  zero = PipelineTessellationStateCreateInfo-           ()-           zero-           zero----- | VkPipelineViewportStateCreateInfo - Structure specifying parameters of a--- newly created pipeline viewport state------ == Valid Usage------ -   #VUID-VkPipelineViewportStateCreateInfo-viewportCount-01216# If the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiViewport multiple viewports>---     feature is not enabled, @viewportCount@ /must/ not be greater than---     @1@------ -   #VUID-VkPipelineViewportStateCreateInfo-scissorCount-01217# If the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiViewport multiple viewports>---     feature is not enabled, @scissorCount@ /must/ not be greater than---     @1@------ -   #VUID-VkPipelineViewportStateCreateInfo-viewportCount-01218#---     @viewportCount@ /must/ be less than or equal to---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewports@------ -   #VUID-VkPipelineViewportStateCreateInfo-scissorCount-01219#---     @scissorCount@ /must/ be less than or equal to---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewports@------ -   #VUID-VkPipelineViewportStateCreateInfo-x-02821# The @x@ and @y@---     members of @offset@ member of any element of @pScissors@ /must/ be---     greater than or equal to @0@------ -   #VUID-VkPipelineViewportStateCreateInfo-offset-02822# Evaluation of---     (@offset.x@ + @extent.width@) /must/ not cause a signed integer---     addition overflow for any element of @pScissors@------ -   #VUID-VkPipelineViewportStateCreateInfo-offset-02823# Evaluation of---     (@offset.y@ + @extent.height@) /must/ not cause a signed integer---     addition overflow for any element of @pScissors@------ -   #VUID-VkPipelineViewportStateCreateInfo-scissorCount-04134# If the---     graphics pipeline is being created without---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'---     and---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'---     set then @scissorCount@ and @viewportCount@ /must/ be identical------ -   #VUID-VkPipelineViewportStateCreateInfo-viewportCount-04135# If the---     graphics pipeline is being created with---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'---     set then @viewportCount@ /must/ be @0@, otherwise it /must/ be---     greater than @0@------ -   #VUID-VkPipelineViewportStateCreateInfo-scissorCount-04136# If the---     graphics pipeline is being created with---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'---     set then @scissorCount@ /must/ be @0@, otherwise it /must/ be---     greater than @0@------ -   #VUID-VkPipelineViewportStateCreateInfo-viewportWScalingEnable-01726#---     If the @viewportWScalingEnable@ member of a---     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'---     structure included in the @pNext@ chain is---     'Vulkan.Core10.FundamentalTypes.TRUE', the @viewportCount@ member of---     the---     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'---     structure /must/ be greater than or equal to---     'PipelineViewportStateCreateInfo'::@viewportCount@------ == Valid Usage (Implicit)------ -   #VUID-VkPipelineViewportStateCreateInfo-sType-sType# @sType@ /must/---     be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO'------ -   #VUID-VkPipelineViewportStateCreateInfo-pNext-pNext# Each @pNext@---     member of any structure (including this one) in the @pNext@ chain---     /must/ be either @NULL@ or a pointer to a valid instance of---     'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportCoarseSampleOrderStateCreateInfoNV',---     'Vulkan.Extensions.VK_EXT_depth_clip_control.PipelineViewportDepthClipControlCreateInfoEXT',---     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV',---     'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV',---     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV',---     or---     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'------ -   #VUID-VkPipelineViewportStateCreateInfo-sType-unique# The @sType@---     value of each struct in the @pNext@ chain /must/ be unique------ -   #VUID-VkPipelineViewportStateCreateInfo-flags-zerobitmask# @flags@---     /must/ be @0@------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'GraphicsPipelineCreateInfo',--- 'Vulkan.Core10.Enums.PipelineViewportStateCreateFlags.PipelineViewportStateCreateFlags',--- 'Vulkan.Core10.FundamentalTypes.Rect2D',--- 'Vulkan.Core10.Enums.StructureType.StructureType', 'Viewport'-data PipelineViewportStateCreateInfo (es :: [Type]) = PipelineViewportStateCreateInfo-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.-    next :: Chain es-  , -- | @flags@ is reserved for future use.-    flags :: PipelineViewportStateCreateFlags-  , -- | @viewportCount@ is the number of viewports used by the pipeline.-    viewportCount :: Word32-  , -- | @pViewports@ is a pointer to an array of 'Viewport' structures, defining-    -- the viewport transforms. If the viewport state is dynamic, this member-    -- is ignored.-    viewports :: Vector Viewport-  , -- | @scissorCount@ is the number of-    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-scissor scissors>-    -- and /must/ match the number of viewports.-    scissorCount :: Word32-  , -- | @pScissors@ is a pointer to an array of-    -- 'Vulkan.Core10.FundamentalTypes.Rect2D' structures defining the-    -- rectangular bounds of the scissor for the corresponding viewport. If the-    -- scissor state is dynamic, this member is ignored.-    scissors :: Vector Rect2D-  }-  deriving (Typeable)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (PipelineViewportStateCreateInfo (es :: [Type]))-#endif-deriving instance Show (Chain es) => Show (PipelineViewportStateCreateInfo es)--instance Extensible PipelineViewportStateCreateInfo where-  extensibleTypeName = "PipelineViewportStateCreateInfo"-  setNext PipelineViewportStateCreateInfo{..} next' = PipelineViewportStateCreateInfo{next = next', ..}-  getNext PipelineViewportStateCreateInfo{..} = next-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends PipelineViewportStateCreateInfo e => b) -> Maybe b-  extends _ f-    | Just Refl <- eqT @e @PipelineViewportDepthClipControlCreateInfoEXT = Just f-    | Just Refl <- eqT @e @PipelineViewportCoarseSampleOrderStateCreateInfoNV = Just f-    | Just Refl <- eqT @e @PipelineViewportShadingRateImageStateCreateInfoNV = Just f-    | Just Refl <- eqT @e @PipelineViewportExclusiveScissorStateCreateInfoNV = Just f-    | Just Refl <- eqT @e @PipelineViewportSwizzleStateCreateInfoNV = Just f-    | Just Refl <- eqT @e @PipelineViewportWScalingStateCreateInfoNV = Just f-    | otherwise = Nothing--instance (Extendss PipelineViewportStateCreateInfo es, PokeChain es) => ToCStruct (PipelineViewportStateCreateInfo es) where-  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p PipelineViewportStateCreateInfo{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO)-    pNext'' <- fmap castPtr . ContT $ withChain (next)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''-    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineViewportStateCreateFlags)) (flags)-    let pViewportsLength = Data.Vector.length $ (viewports)-    viewportCount'' <- lift $ if (viewportCount) == 0-      then pure $ fromIntegral pViewportsLength-      else do-        unless (fromIntegral pViewportsLength == (viewportCount) || pViewportsLength == 0) $-          throwIO $ IOError Nothing InvalidArgument "" "pViewports must be empty or have 'viewportCount' elements" Nothing Nothing-        pure (viewportCount)-    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (viewportCount'')-    pViewports'' <- if Data.Vector.null (viewports)-      then pure nullPtr-      else do-        pPViewports <- ContT $ allocaBytes @Viewport (((Data.Vector.length (viewports))) * 24)-        lift $ Data.Vector.imapM_ (\i e -> poke (pPViewports `plusPtr` (24 * (i)) :: Ptr Viewport) (e)) ((viewports))-        pure $ pPViewports-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Viewport))) pViewports''-    let pScissorsLength = Data.Vector.length $ (scissors)-    scissorCount'' <- lift $ if (scissorCount) == 0-      then pure $ fromIntegral pScissorsLength-      else do-        unless (fromIntegral pScissorsLength == (scissorCount) || pScissorsLength == 0) $-          throwIO $ IOError Nothing InvalidArgument "" "pScissors must be empty or have 'scissorCount' elements" Nothing Nothing-        pure (scissorCount)-    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (scissorCount'')-    pScissors'' <- if Data.Vector.null (scissors)-      then pure nullPtr-      else do-        pPScissors <- ContT $ allocaBytes @Rect2D (((Data.Vector.length (scissors))) * 16)-        lift $ Data.Vector.imapM_ (\i e -> poke (pPScissors `plusPtr` (16 * (i)) :: Ptr Rect2D) (e)) ((scissors))-        pure $ pPScissors-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr Rect2D))) pScissors''-    lift $ f-  cStructSize = 48-  cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO)-    pNext' <- fmap castPtr . ContT $ withZeroChain @es-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'-    lift $ f--instance (Extendss PipelineViewportStateCreateInfo es, PeekChain es) => FromCStruct (PipelineViewportStateCreateInfo es) where-  peekCStruct p = do-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))-    next <- peekChain (castPtr pNext)-    flags <- peek @PipelineViewportStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineViewportStateCreateFlags))-    viewportCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))-    pViewports <- peek @(Ptr Viewport) ((p `plusPtr` 24 :: Ptr (Ptr Viewport)))-    let pViewportsLength = if pViewports == nullPtr then 0 else (fromIntegral viewportCount)-    pViewports' <- generateM pViewportsLength (\i -> peekCStruct @Viewport ((pViewports `advancePtrBytes` (24 * (i)) :: Ptr Viewport)))-    scissorCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))-    pScissors <- peek @(Ptr Rect2D) ((p `plusPtr` 40 :: Ptr (Ptr Rect2D)))-    let pScissorsLength = if pScissors == nullPtr then 0 else (fromIntegral scissorCount)-    pScissors' <- generateM pScissorsLength (\i -> peekCStruct @Rect2D ((pScissors `advancePtrBytes` (16 * (i)) :: Ptr Rect2D)))-    pure $ PipelineViewportStateCreateInfo-             next flags viewportCount pViewports' scissorCount pScissors'--instance es ~ '[] => Zero (PipelineViewportStateCreateInfo es) where-  zero = PipelineViewportStateCreateInfo-           ()-           zero-           zero-           mempty-           zero-           mempty----- | VkPipelineRasterizationStateCreateInfo - Structure specifying parameters--- of a newly created pipeline rasterization state------ = Description------ The application /can/ also add a--- 'Vulkan.Extensions.VK_AMD_rasterization_order.PipelineRasterizationStateRasterizationOrderAMD'--- structure to the @pNext@ chain of a--- 'PipelineRasterizationStateCreateInfo' structure. This structure enables--- selecting the rasterization order to use when rendering with the--- corresponding graphics pipeline as described in--- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-order Rasterization Order>.------ == Valid Usage------ -   #VUID-VkPipelineRasterizationStateCreateInfo-depthClampEnable-00782#---     If the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-depthClamp depth clamping>---     feature is not enabled, @depthClampEnable@ /must/ be---     'Vulkan.Core10.FundamentalTypes.FALSE'------ -   #VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01507# If---     the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-fillModeNonSolid non-solid fill modes>---     feature is not enabled, @polygonMode@ /must/ be---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_FILL' or---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_FILL_RECTANGLE_NV'------ -   #VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01414# If---     the @VK_NV_fill_rectangle@ extension is not enabled, @polygonMode@---     /must/ not be---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_FILL_RECTANGLE_NV'------ -   #VUID-VkPipelineRasterizationStateCreateInfo-pointPolygons-04458# If---     the @VK_KHR_portability_subset@ extension is enabled, and---     'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR'::@pointPolygons@---     is 'Vulkan.Core10.FundamentalTypes.FALSE', and---     @rasterizerDiscardEnable@ is 'Vulkan.Core10.FundamentalTypes.FALSE',---     @polygonMode@ /must/ not be---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_POINT'------ == Valid Usage (Implicit)------ -   #VUID-VkPipelineRasterizationStateCreateInfo-sType-sType# @sType@---     /must/ be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO'------ -   #VUID-VkPipelineRasterizationStateCreateInfo-pNext-pNext# Each---     @pNext@ member of any structure (including this one) in the @pNext@---     chain /must/ be either @NULL@ or a pointer to a valid instance of---     'Vulkan.Extensions.VK_EXT_conservative_rasterization.PipelineRasterizationConservativeStateCreateInfoEXT',---     'Vulkan.Extensions.VK_EXT_depth_clip_enable.PipelineRasterizationDepthClipStateCreateInfoEXT',---     'Vulkan.Extensions.VK_EXT_line_rasterization.PipelineRasterizationLineStateCreateInfoEXT',---     'Vulkan.Extensions.VK_EXT_provoking_vertex.PipelineRasterizationProvokingVertexStateCreateInfoEXT',---     'Vulkan.Extensions.VK_AMD_rasterization_order.PipelineRasterizationStateRasterizationOrderAMD',---     or---     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'------ -   #VUID-VkPipelineRasterizationStateCreateInfo-sType-unique# The---     @sType@ value of each struct in the @pNext@ chain /must/ be unique------ -   #VUID-VkPipelineRasterizationStateCreateInfo-flags-zerobitmask#---     @flags@ /must/ be @0@------ -   #VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-parameter#---     @polygonMode@ /must/ be a valid---     'Vulkan.Core10.Enums.PolygonMode.PolygonMode' value------ -   #VUID-VkPipelineRasterizationStateCreateInfo-cullMode-parameter#---     @cullMode@ /must/ be a valid combination of---     'Vulkan.Core10.Enums.CullModeFlagBits.CullModeFlagBits' values------ -   #VUID-VkPipelineRasterizationStateCreateInfo-frontFace-parameter#---     @frontFace@ /must/ be a valid---     'Vulkan.Core10.Enums.FrontFace.FrontFace' value------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.FundamentalTypes.Bool32',--- 'Vulkan.Core10.Enums.CullModeFlagBits.CullModeFlags',--- 'Vulkan.Core10.Enums.FrontFace.FrontFace', 'GraphicsPipelineCreateInfo',--- 'Vulkan.Core10.Enums.PipelineRasterizationStateCreateFlags.PipelineRasterizationStateCreateFlags',--- 'Vulkan.Core10.Enums.PolygonMode.PolygonMode',--- 'Vulkan.Core10.Enums.StructureType.StructureType'-data PipelineRasterizationStateCreateInfo (es :: [Type]) = PipelineRasterizationStateCreateInfo-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.-    next :: Chain es-  , -- | @flags@ is reserved for future use.-    flags :: PipelineRasterizationStateCreateFlags-  , -- | @depthClampEnable@ controls whether to clamp the fragment’s depth values-    -- as described in-    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-depth Depth Test>.-    -- If the pipeline is not created with-    -- 'Vulkan.Extensions.VK_EXT_depth_clip_enable.PipelineRasterizationDepthClipStateCreateInfoEXT'-    -- present then enabling depth clamp will also disable clipping primitives-    -- to the z planes of the frustrum as described in-    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#vertexpostproc-clipping Primitive Clipping>.-    -- Otherwise depth clipping is controlled by the state set in-    -- 'Vulkan.Extensions.VK_EXT_depth_clip_enable.PipelineRasterizationDepthClipStateCreateInfoEXT'.-    depthClampEnable :: Bool-  , -- | @rasterizerDiscardEnable@ controls whether primitives are discarded-    -- immediately before the rasterization stage.-    rasterizerDiscardEnable :: Bool-  , -- | @polygonMode@ is the triangle rendering mode. See-    -- 'Vulkan.Core10.Enums.PolygonMode.PolygonMode'.-    polygonMode :: PolygonMode-  , -- | @cullMode@ is the triangle facing direction used for primitive culling.-    -- See 'Vulkan.Core10.Enums.CullModeFlagBits.CullModeFlagBits'.-    cullMode :: CullModeFlags-  , -- | @frontFace@ is a 'Vulkan.Core10.Enums.FrontFace.FrontFace' value-    -- specifying the front-facing triangle orientation to be used for culling.-    frontFace :: FrontFace-  , -- | @depthBiasEnable@ controls whether to bias fragment depth values.-    depthBiasEnable :: Bool-  , -- | @depthBiasConstantFactor@ is a scalar factor controlling the constant-    -- depth value added to each fragment.-    depthBiasConstantFactor :: Float-  , -- | @depthBiasClamp@ is the maximum (or minimum) depth bias of a fragment.-    depthBiasClamp :: Float-  , -- | @depthBiasSlopeFactor@ is a scalar factor applied to a fragment’s slope-    -- in depth bias calculations.-    depthBiasSlopeFactor :: Float-  , -- | @lineWidth@ is the width of rasterized line segments.-    lineWidth :: Float-  }-  deriving (Typeable)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (PipelineRasterizationStateCreateInfo (es :: [Type]))-#endif-deriving instance Show (Chain es) => Show (PipelineRasterizationStateCreateInfo es)--instance Extensible PipelineRasterizationStateCreateInfo where-  extensibleTypeName = "PipelineRasterizationStateCreateInfo"-  setNext PipelineRasterizationStateCreateInfo{..} next' = PipelineRasterizationStateCreateInfo{next = next', ..}-  getNext PipelineRasterizationStateCreateInfo{..} = next-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends PipelineRasterizationStateCreateInfo e => b) -> Maybe b-  extends _ f-    | Just Refl <- eqT @e @PipelineRasterizationProvokingVertexStateCreateInfoEXT = Just f-    | Just Refl <- eqT @e @PipelineRasterizationLineStateCreateInfoEXT = Just f-    | Just Refl <- eqT @e @PipelineRasterizationDepthClipStateCreateInfoEXT = Just f-    | Just Refl <- eqT @e @PipelineRasterizationStateStreamCreateInfoEXT = Just f-    | Just Refl <- eqT @e @PipelineRasterizationConservativeStateCreateInfoEXT = Just f-    | Just Refl <- eqT @e @PipelineRasterizationStateRasterizationOrderAMD = Just f-    | otherwise = Nothing--instance (Extendss PipelineRasterizationStateCreateInfo es, PokeChain es) => ToCStruct (PipelineRasterizationStateCreateInfo es) where-  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p PipelineRasterizationStateCreateInfo{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO)-    pNext'' <- fmap castPtr . ContT $ withChain (next)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''-    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineRasterizationStateCreateFlags)) (flags)-    lift $ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (depthClampEnable))-    lift $ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (rasterizerDiscardEnable))-    lift $ poke ((p `plusPtr` 28 :: Ptr PolygonMode)) (polygonMode)-    lift $ poke ((p `plusPtr` 32 :: Ptr CullModeFlags)) (cullMode)-    lift $ poke ((p `plusPtr` 36 :: Ptr FrontFace)) (frontFace)-    lift $ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (depthBiasEnable))-    lift $ poke ((p `plusPtr` 44 :: Ptr CFloat)) (CFloat (depthBiasConstantFactor))-    lift $ poke ((p `plusPtr` 48 :: Ptr CFloat)) (CFloat (depthBiasClamp))-    lift $ poke ((p `plusPtr` 52 :: Ptr CFloat)) (CFloat (depthBiasSlopeFactor))-    lift $ poke ((p `plusPtr` 56 :: Ptr CFloat)) (CFloat (lineWidth))-    lift $ f-  cStructSize = 64-  cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO)-    pNext' <- fmap castPtr . ContT $ withZeroChain @es-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'-    lift $ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 28 :: Ptr PolygonMode)) (zero)-    lift $ poke ((p `plusPtr` 36 :: Ptr FrontFace)) (zero)-    lift $ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 44 :: Ptr CFloat)) (CFloat (zero))-    lift $ poke ((p `plusPtr` 48 :: Ptr CFloat)) (CFloat (zero))-    lift $ poke ((p `plusPtr` 52 :: Ptr CFloat)) (CFloat (zero))-    lift $ poke ((p `plusPtr` 56 :: Ptr CFloat)) (CFloat (zero))-    lift $ f--instance (Extendss PipelineRasterizationStateCreateInfo es, PeekChain es) => FromCStruct (PipelineRasterizationStateCreateInfo es) where-  peekCStruct p = do-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))-    next <- peekChain (castPtr pNext)-    flags <- peek @PipelineRasterizationStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineRasterizationStateCreateFlags))-    depthClampEnable <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))-    rasterizerDiscardEnable <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))-    polygonMode <- peek @PolygonMode ((p `plusPtr` 28 :: Ptr PolygonMode))-    cullMode <- peek @CullModeFlags ((p `plusPtr` 32 :: Ptr CullModeFlags))-    frontFace <- peek @FrontFace ((p `plusPtr` 36 :: Ptr FrontFace))-    depthBiasEnable <- peek @Bool32 ((p `plusPtr` 40 :: Ptr Bool32))-    depthBiasConstantFactor <- peek @CFloat ((p `plusPtr` 44 :: Ptr CFloat))-    depthBiasClamp <- peek @CFloat ((p `plusPtr` 48 :: Ptr CFloat))-    depthBiasSlopeFactor <- peek @CFloat ((p `plusPtr` 52 :: Ptr CFloat))-    lineWidth <- peek @CFloat ((p `plusPtr` 56 :: Ptr CFloat))-    pure $ PipelineRasterizationStateCreateInfo-             next flags (bool32ToBool depthClampEnable) (bool32ToBool rasterizerDiscardEnable) polygonMode cullMode frontFace (bool32ToBool depthBiasEnable) (coerce @CFloat @Float depthBiasConstantFactor) (coerce @CFloat @Float depthBiasClamp) (coerce @CFloat @Float depthBiasSlopeFactor) (coerce @CFloat @Float lineWidth)--instance es ~ '[] => Zero (PipelineRasterizationStateCreateInfo es) where-  zero = PipelineRasterizationStateCreateInfo-           ()-           zero-           zero-           zero-           zero-           zero-           zero-           zero-           zero-           zero-           zero-           zero----- | VkPipelineMultisampleStateCreateInfo - Structure specifying parameters--- of a newly created pipeline multisample state------ = Description------ Each bit in the sample mask is associated with a unique--- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask sample index>--- as defined for the--- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask coverage mask>.--- Each bit b for mask word w in the sample mask corresponds to sample--- index i, where i = 32 × w + b. @pSampleMask@ has a length equal to ⌈--- @rasterizationSamples@ \/ 32 ⌉ words.------ If @pSampleMask@ is @NULL@, it is treated as if the mask has all bits--- set to @1@.------ == Valid Usage------ -   #VUID-VkPipelineMultisampleStateCreateInfo-sampleShadingEnable-00784#---     If the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-sampleRateShading sample rate shading>---     feature is not enabled, @sampleShadingEnable@ /must/ be---     'Vulkan.Core10.FundamentalTypes.FALSE'------ -   #VUID-VkPipelineMultisampleStateCreateInfo-alphaToOneEnable-00785#---     If the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-alphaToOne alpha to one>---     feature is not enabled, @alphaToOneEnable@ /must/ be---     'Vulkan.Core10.FundamentalTypes.FALSE'------ -   #VUID-VkPipelineMultisampleStateCreateInfo-minSampleShading-00786#---     @minSampleShading@ /must/ be in the range [0,1]------ -   #VUID-VkPipelineMultisampleStateCreateInfo-rasterizationSamples-01415#---     If the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and---     if the subpass has any color attachments and @rasterizationSamples@---     is greater than the number of color samples, then---     @sampleShadingEnable@ /must/ be---     'Vulkan.Core10.FundamentalTypes.FALSE'------ == Valid Usage (Implicit)------ -   #VUID-VkPipelineMultisampleStateCreateInfo-sType-sType# @sType@---     /must/ be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO'------ -   #VUID-VkPipelineMultisampleStateCreateInfo-pNext-pNext# Each @pNext@---     member of any structure (including this one) in the @pNext@ chain---     /must/ be either @NULL@ or a pointer to a valid instance of---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.PipelineCoverageModulationStateCreateInfoNV',---     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.PipelineCoverageReductionStateCreateInfoNV',---     'Vulkan.Extensions.VK_NV_fragment_coverage_to_color.PipelineCoverageToColorStateCreateInfoNV',---     or---     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'------ -   #VUID-VkPipelineMultisampleStateCreateInfo-sType-unique# The @sType@---     value of each struct in the @pNext@ chain /must/ be unique------ -   #VUID-VkPipelineMultisampleStateCreateInfo-flags-zerobitmask#---     @flags@ /must/ be @0@------ -   #VUID-VkPipelineMultisampleStateCreateInfo-rasterizationSamples-parameter#---     @rasterizationSamples@ /must/ be a valid---     'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value------ -   #VUID-VkPipelineMultisampleStateCreateInfo-pSampleMask-parameter# If---     @pSampleMask@ is not @NULL@, @pSampleMask@ /must/ be a valid pointer---     to an array of---     \(\lceil{\mathit{rasterizationSamples} \over 32}\rceil\)---     'Vulkan.Core10.FundamentalTypes.SampleMask' values------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.FundamentalTypes.Bool32', 'GraphicsPipelineCreateInfo',--- 'Vulkan.Core10.Enums.PipelineMultisampleStateCreateFlags.PipelineMultisampleStateCreateFlags',--- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits',--- 'Vulkan.Core10.FundamentalTypes.SampleMask',--- 'Vulkan.Core10.Enums.StructureType.StructureType'-data PipelineMultisampleStateCreateInfo (es :: [Type]) = PipelineMultisampleStateCreateInfo-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.-    next :: Chain es-  , -- | @flags@ is reserved for future use.-    flags :: PipelineMultisampleStateCreateFlags-  , -- | @rasterizationSamples@ is a-    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value-    -- specifying the number of samples used in rasterization.-    rasterizationSamples :: SampleCountFlagBits-  , -- | @sampleShadingEnable@ /can/ be used to enable-    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-sampleshading Sample Shading>.-    sampleShadingEnable :: Bool-  , -- | @minSampleShading@ specifies a minimum fraction of sample shading if-    -- @sampleShadingEnable@ is set to 'Vulkan.Core10.FundamentalTypes.TRUE'.-    minSampleShading :: Float-  , -- | @pSampleMask@ is a pointer to an array of-    -- 'Vulkan.Core10.FundamentalTypes.SampleMask' values used in the-    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-samplemask sample mask test>.-    sampleMask :: Vector SampleMask-  , -- | @alphaToCoverageEnable@ controls whether a temporary coverage value is-    -- generated based on the alpha component of the fragment’s first color-    -- output as specified in the-    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-covg Multisample Coverage>-    -- section.-    alphaToCoverageEnable :: Bool-  , -- | @alphaToOneEnable@ controls whether the alpha component of the-    -- fragment’s first color output is replaced with one as described in-    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-covg Multisample Coverage>.-    alphaToOneEnable :: Bool-  }-  deriving (Typeable)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (PipelineMultisampleStateCreateInfo (es :: [Type]))-#endif-deriving instance Show (Chain es) => Show (PipelineMultisampleStateCreateInfo es)--instance Extensible PipelineMultisampleStateCreateInfo where-  extensibleTypeName = "PipelineMultisampleStateCreateInfo"-  setNext PipelineMultisampleStateCreateInfo{..} next' = PipelineMultisampleStateCreateInfo{next = next', ..}-  getNext PipelineMultisampleStateCreateInfo{..} = next-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends PipelineMultisampleStateCreateInfo e => b) -> Maybe b-  extends _ f-    | Just Refl <- eqT @e @PipelineCoverageReductionStateCreateInfoNV = Just f-    | Just Refl <- eqT @e @PipelineCoverageModulationStateCreateInfoNV = Just f-    | Just Refl <- eqT @e @PipelineSampleLocationsStateCreateInfoEXT = Just f-    | Just Refl <- eqT @e @PipelineCoverageToColorStateCreateInfoNV = Just f-    | otherwise = Nothing--instance (Extendss PipelineMultisampleStateCreateInfo es, PokeChain es) => ToCStruct (PipelineMultisampleStateCreateInfo es) where-  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p PipelineMultisampleStateCreateInfo{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO)-    pNext'' <- fmap castPtr . ContT $ withChain (next)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''-    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineMultisampleStateCreateFlags)) (flags)-    lift $ poke ((p `plusPtr` 20 :: Ptr SampleCountFlagBits)) (rasterizationSamples)-    lift $ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (sampleShadingEnable))-    lift $ poke ((p `plusPtr` 28 :: Ptr CFloat)) (CFloat (minSampleShading))-    pSampleMask'' <- case Data.Vector.length (sampleMask) of-      0      -> pure nullPtr-      vecLen -> do-        let requiredLen = case (rasterizationSamples) of-              SampleCountFlagBits n -> (n + 31) `quot` 32-        lift $ unless (requiredLen == fromIntegral vecLen) $-          throwIO $ IOError Nothing InvalidArgument "" "sampleMask must be either empty or contain enough bits to cover all the sample specified by 'rasterizationSamples'" Nothing Nothing-        do-          pPSampleMask' <- ContT $ allocaBytes @SampleMask ((Data.Vector.length ((sampleMask))) * 4)-          lift $ Data.Vector.imapM_ (\i e -> poke (pPSampleMask' `plusPtr` (4 * (i)) :: Ptr SampleMask) (e)) ((sampleMask))-          pure $ pPSampleMask'-    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr SampleMask))) pSampleMask''-    lift $ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (alphaToCoverageEnable))-    lift $ poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (alphaToOneEnable))-    lift $ f-  cStructSize = 48-  cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO)-    pNext' <- fmap castPtr . ContT $ withZeroChain @es-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'-    lift $ poke ((p `plusPtr` 20 :: Ptr SampleCountFlagBits)) (zero)-    lift $ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 28 :: Ptr CFloat)) (CFloat (zero))-    lift $ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ f--instance (Extendss PipelineMultisampleStateCreateInfo es, PeekChain es) => FromCStruct (PipelineMultisampleStateCreateInfo es) where-  peekCStruct p = do-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))-    next <- peekChain (castPtr pNext)-    flags <- peek @PipelineMultisampleStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineMultisampleStateCreateFlags))-    rasterizationSamples <- peek @SampleCountFlagBits ((p `plusPtr` 20 :: Ptr SampleCountFlagBits))-    sampleShadingEnable <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))-    minSampleShading <- peek @CFloat ((p `plusPtr` 28 :: Ptr CFloat))-    pSampleMask <- peek @(Ptr SampleMask) ((p `plusPtr` 32 :: Ptr (Ptr SampleMask)))-    pSampleMask' <- if pSampleMask == nullPtr-      then pure mempty-      else generateM (case rasterizationSamples of-        SampleCountFlagBits n -> (fromIntegral n + 31) `quot` 32) (\i -> peek @SampleMask (((pSampleMask) `advancePtrBytes` (4 * (i)) :: Ptr SampleMask)))-    alphaToCoverageEnable <- peek @Bool32 ((p `plusPtr` 40 :: Ptr Bool32))-    alphaToOneEnable <- peek @Bool32 ((p `plusPtr` 44 :: Ptr Bool32))-    pure $ PipelineMultisampleStateCreateInfo-             next flags rasterizationSamples (bool32ToBool sampleShadingEnable) (coerce @CFloat @Float minSampleShading) pSampleMask' (bool32ToBool alphaToCoverageEnable) (bool32ToBool alphaToOneEnable)--instance es ~ '[] => Zero (PipelineMultisampleStateCreateInfo es) where-  zero = PipelineMultisampleStateCreateInfo-           ()-           zero-           zero-           zero-           zero-           mempty-           zero-           zero----- | VkPipelineColorBlendAttachmentState - Structure specifying a pipeline--- color blend attachment state------ == Valid Usage------ -   #VUID-VkPipelineColorBlendAttachmentState-srcColorBlendFactor-00608#---     If the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-dualSrcBlend dual source blending>---     feature is not enabled, @srcColorBlendFactor@ /must/ not be---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_COLOR',---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_COLOR',---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_ALPHA', or---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA'------ -   #VUID-VkPipelineColorBlendAttachmentState-dstColorBlendFactor-00609#---     If the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-dualSrcBlend dual source blending>---     feature is not enabled, @dstColorBlendFactor@ /must/ not be---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_COLOR',---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_COLOR',---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_ALPHA', or---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA'------ -   #VUID-VkPipelineColorBlendAttachmentState-srcAlphaBlendFactor-00610#---     If the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-dualSrcBlend dual source blending>---     feature is not enabled, @srcAlphaBlendFactor@ /must/ not be---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_COLOR',---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_COLOR',---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_ALPHA', or---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA'------ -   #VUID-VkPipelineColorBlendAttachmentState-dstAlphaBlendFactor-00611#---     If the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-dualSrcBlend dual source blending>---     feature is not enabled, @dstAlphaBlendFactor@ /must/ not be---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_COLOR',---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_COLOR',---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_ALPHA', or---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA'------ -   #VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-01406# If---     either of @colorBlendOp@ or @alphaBlendOp@ is an---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operation>,---     then @colorBlendOp@ /must/ equal @alphaBlendOp@------ -   #VUID-VkPipelineColorBlendAttachmentState-advancedBlendIndependentBlend-01407#---     If---     'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedPropertiesEXT'::@advancedBlendIndependentBlend@---     is 'Vulkan.Core10.FundamentalTypes.FALSE' and @colorBlendOp@ is an---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operation>,---     then @colorBlendOp@ /must/ be the same for all attachments------ -   #VUID-VkPipelineColorBlendAttachmentState-advancedBlendIndependentBlend-01408#---     If---     'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedPropertiesEXT'::@advancedBlendIndependentBlend@---     is 'Vulkan.Core10.FundamentalTypes.FALSE' and @alphaBlendOp@ is an---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operation>,---     then @alphaBlendOp@ /must/ be the same for all attachments------ -   #VUID-VkPipelineColorBlendAttachmentState-advancedBlendAllOperations-01409#---     If---     'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedPropertiesEXT'::@advancedBlendAllOperations@---     is 'Vulkan.Core10.FundamentalTypes.FALSE', then @colorBlendOp@---     /must/ not be 'Vulkan.Core10.Enums.BlendOp.BLEND_OP_ZERO_EXT',---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_SRC_EXT',---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_DST_EXT',---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_SRC_OVER_EXT',---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_DST_OVER_EXT',---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_SRC_IN_EXT',---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_DST_IN_EXT',---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_SRC_OUT_EXT',---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_DST_OUT_EXT',---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_SRC_ATOP_EXT',---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_DST_ATOP_EXT',---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_XOR_EXT',---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_INVERT_EXT',---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_INVERT_RGB_EXT',---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_LINEARDODGE_EXT',---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_LINEARBURN_EXT',---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_VIVIDLIGHT_EXT',---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_LINEARLIGHT_EXT',---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_PINLIGHT_EXT',---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_HARDMIX_EXT',---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_PLUS_EXT',---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_PLUS_CLAMPED_EXT',---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_PLUS_CLAMPED_ALPHA_EXT',---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_PLUS_DARKER_EXT',---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_MINUS_EXT',---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_MINUS_CLAMPED_EXT',---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_CONTRAST_EXT',---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_INVERT_OVG_EXT',---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_RED_EXT',---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_GREEN_EXT', or---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_BLUE_EXT'------ -   #VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-01410# If---     @colorBlendOp@ or @alphaBlendOp@ is an---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operation>,---     then @colorAttachmentCount@ of the subpass this pipeline is compiled---     against /must/ be less than or equal to---     'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedPropertiesEXT'::@advancedBlendMaxColorAttachments@------ -   #VUID-VkPipelineColorBlendAttachmentState-constantAlphaColorBlendFactors-04454#---     If the @VK_KHR_portability_subset@ extension is enabled, and---     'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR'::@constantAlphaColorBlendFactors@---     is 'Vulkan.Core10.FundamentalTypes.FALSE', @srcColorBlendFactor@---     /must/ not be---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA' or---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA'------ -   #VUID-VkPipelineColorBlendAttachmentState-constantAlphaColorBlendFactors-04455#---     If the @VK_KHR_portability_subset@ extension is enabled, and---     'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR'::@constantAlphaColorBlendFactors@---     is 'Vulkan.Core10.FundamentalTypes.FALSE', @dstColorBlendFactor@---     /must/ not be---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA' or---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA'------ == Valid Usage (Implicit)------ -   #VUID-VkPipelineColorBlendAttachmentState-srcColorBlendFactor-parameter#---     @srcColorBlendFactor@ /must/ be a valid---     'Vulkan.Core10.Enums.BlendFactor.BlendFactor' value------ -   #VUID-VkPipelineColorBlendAttachmentState-dstColorBlendFactor-parameter#---     @dstColorBlendFactor@ /must/ be a valid---     'Vulkan.Core10.Enums.BlendFactor.BlendFactor' value------ -   #VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-parameter#---     @colorBlendOp@ /must/ be a valid---     'Vulkan.Core10.Enums.BlendOp.BlendOp' value------ -   #VUID-VkPipelineColorBlendAttachmentState-srcAlphaBlendFactor-parameter#---     @srcAlphaBlendFactor@ /must/ be a valid---     'Vulkan.Core10.Enums.BlendFactor.BlendFactor' value------ -   #VUID-VkPipelineColorBlendAttachmentState-dstAlphaBlendFactor-parameter#---     @dstAlphaBlendFactor@ /must/ be a valid---     'Vulkan.Core10.Enums.BlendFactor.BlendFactor' value------ -   #VUID-VkPipelineColorBlendAttachmentState-alphaBlendOp-parameter#---     @alphaBlendOp@ /must/ be a valid---     'Vulkan.Core10.Enums.BlendOp.BlendOp' value------ -   #VUID-VkPipelineColorBlendAttachmentState-colorWriteMask-parameter#---     @colorWriteMask@ /must/ be a valid combination of---     'Vulkan.Core10.Enums.ColorComponentFlagBits.ColorComponentFlagBits'---     values------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Enums.BlendFactor.BlendFactor',--- 'Vulkan.Core10.Enums.BlendOp.BlendOp',--- 'Vulkan.Core10.FundamentalTypes.Bool32',--- 'Vulkan.Core10.Enums.ColorComponentFlagBits.ColorComponentFlags',--- 'PipelineColorBlendStateCreateInfo'-data PipelineColorBlendAttachmentState = PipelineColorBlendAttachmentState-  { -- | @blendEnable@ controls whether blending is enabled for the corresponding-    -- color attachment. If blending is not enabled, the source fragment’s-    -- color for that attachment is passed through unmodified.-    blendEnable :: Bool-  , -- | @srcColorBlendFactor@ selects which blend factor is used to determine-    -- the source factors (Sr,Sg,Sb).-    srcColorBlendFactor :: BlendFactor-  , -- | @dstColorBlendFactor@ selects which blend factor is used to determine-    -- the destination factors (Dr,Dg,Db).-    dstColorBlendFactor :: BlendFactor-  , -- | @colorBlendOp@ selects which blend operation is used to calculate the-    -- RGB values to write to the color attachment.-    colorBlendOp :: BlendOp-  , -- | @srcAlphaBlendFactor@ selects which blend factor is used to determine-    -- the source factor Sa.-    srcAlphaBlendFactor :: BlendFactor-  , -- | @dstAlphaBlendFactor@ selects which blend factor is used to determine-    -- the destination factor Da.-    dstAlphaBlendFactor :: BlendFactor-  , -- | @alphaBlendOp@ selects which blend operation is use to calculate the-    -- alpha values to write to the color attachment.-    alphaBlendOp :: BlendOp-  , -- | @colorWriteMask@ is a bitmask of-    -- 'Vulkan.Core10.Enums.ColorComponentFlagBits.ColorComponentFlagBits'-    -- specifying which of the R, G, B, and\/or A components are enabled for-    -- writing, as described for the-    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-color-write-mask Color Write Mask>.-    colorWriteMask :: ColorComponentFlags-  }-  deriving (Typeable, Eq)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (PipelineColorBlendAttachmentState)-#endif-deriving instance Show PipelineColorBlendAttachmentState--instance ToCStruct PipelineColorBlendAttachmentState where-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p PipelineColorBlendAttachmentState{..} f = do-    poke ((p `plusPtr` 0 :: Ptr Bool32)) (boolToBool32 (blendEnable))-    poke ((p `plusPtr` 4 :: Ptr BlendFactor)) (srcColorBlendFactor)-    poke ((p `plusPtr` 8 :: Ptr BlendFactor)) (dstColorBlendFactor)-    poke ((p `plusPtr` 12 :: Ptr BlendOp)) (colorBlendOp)-    poke ((p `plusPtr` 16 :: Ptr BlendFactor)) (srcAlphaBlendFactor)-    poke ((p `plusPtr` 20 :: Ptr BlendFactor)) (dstAlphaBlendFactor)-    poke ((p `plusPtr` 24 :: Ptr BlendOp)) (alphaBlendOp)-    poke ((p `plusPtr` 28 :: Ptr ColorComponentFlags)) (colorWriteMask)-    f-  cStructSize = 32-  cStructAlignment = 4-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr Bool32)) (boolToBool32 (zero))-    poke ((p `plusPtr` 4 :: Ptr BlendFactor)) (zero)-    poke ((p `plusPtr` 8 :: Ptr BlendFactor)) (zero)-    poke ((p `plusPtr` 12 :: Ptr BlendOp)) (zero)-    poke ((p `plusPtr` 16 :: Ptr BlendFactor)) (zero)-    poke ((p `plusPtr` 20 :: Ptr BlendFactor)) (zero)-    poke ((p `plusPtr` 24 :: Ptr BlendOp)) (zero)-    f--instance FromCStruct PipelineColorBlendAttachmentState where-  peekCStruct p = do-    blendEnable <- peek @Bool32 ((p `plusPtr` 0 :: Ptr Bool32))-    srcColorBlendFactor <- peek @BlendFactor ((p `plusPtr` 4 :: Ptr BlendFactor))-    dstColorBlendFactor <- peek @BlendFactor ((p `plusPtr` 8 :: Ptr BlendFactor))-    colorBlendOp <- peek @BlendOp ((p `plusPtr` 12 :: Ptr BlendOp))-    srcAlphaBlendFactor <- peek @BlendFactor ((p `plusPtr` 16 :: Ptr BlendFactor))-    dstAlphaBlendFactor <- peek @BlendFactor ((p `plusPtr` 20 :: Ptr BlendFactor))-    alphaBlendOp <- peek @BlendOp ((p `plusPtr` 24 :: Ptr BlendOp))-    colorWriteMask <- peek @ColorComponentFlags ((p `plusPtr` 28 :: Ptr ColorComponentFlags))-    pure $ PipelineColorBlendAttachmentState-             (bool32ToBool blendEnable) srcColorBlendFactor dstColorBlendFactor colorBlendOp srcAlphaBlendFactor dstAlphaBlendFactor alphaBlendOp colorWriteMask--instance Storable PipelineColorBlendAttachmentState where-  sizeOf ~_ = 32-  alignment ~_ = 4-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero PipelineColorBlendAttachmentState where-  zero = PipelineColorBlendAttachmentState-           zero-           zero-           zero-           zero-           zero-           zero-           zero-           zero----- | VkPipelineColorBlendStateCreateInfo - Structure specifying parameters of--- a newly created pipeline color blend state------ == Valid Usage------ -   #VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-00605# If the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-independentBlend independent blending>---     feature is not enabled, all elements of @pAttachments@ /must/ be---     identical------ -   #VUID-VkPipelineColorBlendStateCreateInfo-logicOpEnable-00606# If---     the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-logicOp logic operations>---     feature is not enabled, @logicOpEnable@ /must/ be---     'Vulkan.Core10.FundamentalTypes.FALSE'------ -   #VUID-VkPipelineColorBlendStateCreateInfo-logicOpEnable-00607# If---     @logicOpEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', @logicOp@---     /must/ be a valid 'Vulkan.Core10.Enums.LogicOp.LogicOp' value------ -   #VUID-VkPipelineColorBlendStateCreateInfo-rasterizationOrderColorAttachmentAccess-06465#---     If the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-rasterizationOrderColorAttachmentAccess rasterizationOrderColorAttachmentAccess>---     feature is not enabled, @flags@ /must/ not include---     'Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlagBits.PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_ARM'------ == Valid Usage (Implicit)------ -   #VUID-VkPipelineColorBlendStateCreateInfo-sType-sType# @sType@---     /must/ be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO'------ -   #VUID-VkPipelineColorBlendStateCreateInfo-pNext-pNext# Each @pNext@---     member of any structure (including this one) in the @pNext@ chain---     /must/ be either @NULL@ or a pointer to a valid instance of---     'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PipelineColorBlendAdvancedStateCreateInfoEXT'---     or---     'Vulkan.Extensions.VK_EXT_color_write_enable.PipelineColorWriteCreateInfoEXT'------ -   #VUID-VkPipelineColorBlendStateCreateInfo-sType-unique# The @sType@---     value of each struct in the @pNext@ chain /must/ be unique------ -   #VUID-VkPipelineColorBlendStateCreateInfo-flags-parameter# @flags@---     /must/ be a valid combination of---     'Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlagBits.PipelineColorBlendStateCreateFlagBits'---     values------ -   #VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-parameter# If---     @attachmentCount@ is not @0@, @pAttachments@ /must/ be a valid---     pointer to an array of @attachmentCount@ valid---     'PipelineColorBlendAttachmentState' structures------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.FundamentalTypes.Bool32', 'GraphicsPipelineCreateInfo',--- 'Vulkan.Core10.Enums.LogicOp.LogicOp',--- 'PipelineColorBlendAttachmentState',--- 'Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlagBits.PipelineColorBlendStateCreateFlags',--- 'Vulkan.Core10.Enums.StructureType.StructureType'-data PipelineColorBlendStateCreateInfo (es :: [Type]) = PipelineColorBlendStateCreateInfo-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.-    next :: Chain es-  , -- | @flags@ is a bitmask of-    -- 'Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlagBits.PipelineColorBlendStateCreateFlagBits'-    -- specifying additional color blending information.-    flags :: PipelineColorBlendStateCreateFlags-  , -- | @logicOpEnable@ controls whether to apply-    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-logicop Logical Operations>.-    logicOpEnable :: Bool-  , -- | @logicOp@ selects which logical operation to apply.-    logicOp :: LogicOp-  , -- | @pAttachments@ is a pointer to an array of-    -- 'PipelineColorBlendAttachmentState' structures defining blend state for-    -- each color attachment.-    attachments :: Vector PipelineColorBlendAttachmentState-  , -- | @blendConstants@ is a pointer to an array of four values used as the R,-    -- G, B, and A components of the blend constant that are used in blending,-    -- depending on the-    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-blendfactors blend factor>.-    blendConstants :: (Float, Float, Float, Float)-  }-  deriving (Typeable)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (PipelineColorBlendStateCreateInfo (es :: [Type]))-#endif-deriving instance Show (Chain es) => Show (PipelineColorBlendStateCreateInfo es)--instance Extensible PipelineColorBlendStateCreateInfo where-  extensibleTypeName = "PipelineColorBlendStateCreateInfo"-  setNext PipelineColorBlendStateCreateInfo{..} next' = PipelineColorBlendStateCreateInfo{next = next', ..}-  getNext PipelineColorBlendStateCreateInfo{..} = next-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends PipelineColorBlendStateCreateInfo e => b) -> Maybe b-  extends _ f-    | Just Refl <- eqT @e @PipelineColorWriteCreateInfoEXT = Just f-    | Just Refl <- eqT @e @PipelineColorBlendAdvancedStateCreateInfoEXT = Just f-    | otherwise = Nothing--instance (Extendss PipelineColorBlendStateCreateInfo es, PokeChain es) => ToCStruct (PipelineColorBlendStateCreateInfo es) where-  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p PipelineColorBlendStateCreateInfo{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO)-    pNext'' <- fmap castPtr . ContT $ withChain (next)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''-    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineColorBlendStateCreateFlags)) (flags)-    lift $ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (logicOpEnable))-    lift $ poke ((p `plusPtr` 24 :: Ptr LogicOp)) (logicOp)-    lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (attachments)) :: Word32))-    pPAttachments' <- ContT $ allocaBytes @PipelineColorBlendAttachmentState ((Data.Vector.length (attachments)) * 32)-    lift $ Data.Vector.imapM_ (\i e -> poke (pPAttachments' `plusPtr` (32 * (i)) :: Ptr PipelineColorBlendAttachmentState) (e)) (attachments)-    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr PipelineColorBlendAttachmentState))) (pPAttachments')-    let pBlendConstants' = lowerArrayPtr ((p `plusPtr` 40 :: Ptr (FixedArray 4 CFloat)))-    lift $ case (blendConstants) of-      (e0, e1, e2, e3) -> do-        poke (pBlendConstants' :: Ptr CFloat) (CFloat (e0))-        poke (pBlendConstants' `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))-        poke (pBlendConstants' `plusPtr` 8 :: Ptr CFloat) (CFloat (e2))-        poke (pBlendConstants' `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))-    lift $ f-  cStructSize = 56-  cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO)-    pNext' <- fmap castPtr . ContT $ withZeroChain @es-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'-    lift $ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 24 :: Ptr LogicOp)) (zero)-    let pBlendConstants' = lowerArrayPtr ((p `plusPtr` 40 :: Ptr (FixedArray 4 CFloat)))-    lift $ case ((zero, zero, zero, zero)) of-      (e0, e1, e2, e3) -> do-        poke (pBlendConstants' :: Ptr CFloat) (CFloat (e0))-        poke (pBlendConstants' `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))-        poke (pBlendConstants' `plusPtr` 8 :: Ptr CFloat) (CFloat (e2))-        poke (pBlendConstants' `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))-    lift $ f--instance (Extendss PipelineColorBlendStateCreateInfo es, PeekChain es) => FromCStruct (PipelineColorBlendStateCreateInfo es) where-  peekCStruct p = do-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))-    next <- peekChain (castPtr pNext)-    flags <- peek @PipelineColorBlendStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineColorBlendStateCreateFlags))-    logicOpEnable <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))-    logicOp <- peek @LogicOp ((p `plusPtr` 24 :: Ptr LogicOp))-    attachmentCount <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))-    pAttachments <- peek @(Ptr PipelineColorBlendAttachmentState) ((p `plusPtr` 32 :: Ptr (Ptr PipelineColorBlendAttachmentState)))-    pAttachments' <- generateM (fromIntegral attachmentCount) (\i -> peekCStruct @PipelineColorBlendAttachmentState ((pAttachments `advancePtrBytes` (32 * (i)) :: Ptr PipelineColorBlendAttachmentState)))-    let pblendConstants = lowerArrayPtr @CFloat ((p `plusPtr` 40 :: Ptr (FixedArray 4 CFloat)))-    blendConstants0 <- peek @CFloat ((pblendConstants `advancePtrBytes` 0 :: Ptr CFloat))-    blendConstants1 <- peek @CFloat ((pblendConstants `advancePtrBytes` 4 :: Ptr CFloat))-    blendConstants2 <- peek @CFloat ((pblendConstants `advancePtrBytes` 8 :: Ptr CFloat))-    blendConstants3 <- peek @CFloat ((pblendConstants `advancePtrBytes` 12 :: Ptr CFloat))-    pure $ PipelineColorBlendStateCreateInfo-             next flags (bool32ToBool logicOpEnable) logicOp pAttachments' (((coerce @CFloat @Float blendConstants0), (coerce @CFloat @Float blendConstants1), (coerce @CFloat @Float blendConstants2), (coerce @CFloat @Float blendConstants3)))--instance es ~ '[] => Zero (PipelineColorBlendStateCreateInfo es) where-  zero = PipelineColorBlendStateCreateInfo-           ()-           zero-           zero-           zero-           mempty-           (zero, zero, zero, zero)----- | VkPipelineDynamicStateCreateInfo - Structure specifying parameters of a--- newly created pipeline dynamic state------ == Valid Usage------ -   #VUID-VkPipelineDynamicStateCreateInfo-pDynamicStates-01442# Each---     element of @pDynamicStates@ /must/ be unique------ == Valid Usage (Implicit)------ -   #VUID-VkPipelineDynamicStateCreateInfo-sType-sType# @sType@ /must/---     be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO'------ -   #VUID-VkPipelineDynamicStateCreateInfo-pNext-pNext# @pNext@ /must/---     be @NULL@------ -   #VUID-VkPipelineDynamicStateCreateInfo-flags-zerobitmask# @flags@---     /must/ be @0@------ -   #VUID-VkPipelineDynamicStateCreateInfo-pDynamicStates-parameter# If---     @dynamicStateCount@ is not @0@, @pDynamicStates@ /must/ be a valid---     pointer to an array of @dynamicStateCount@ valid---     'Vulkan.Core10.Enums.DynamicState.DynamicState' values------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Enums.DynamicState.DynamicState',--- 'GraphicsPipelineCreateInfo',--- 'Vulkan.Core10.Enums.PipelineDynamicStateCreateFlags.PipelineDynamicStateCreateFlags',--- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR',--- 'Vulkan.Core10.Enums.StructureType.StructureType'-data PipelineDynamicStateCreateInfo = PipelineDynamicStateCreateInfo-  { -- | @flags@ is reserved for future use.-    flags :: PipelineDynamicStateCreateFlags-  , -- | @pDynamicStates@ is a pointer to an array of-    -- 'Vulkan.Core10.Enums.DynamicState.DynamicState' values specifying which-    -- pieces of pipeline state will use the values from dynamic state commands-    -- rather than from pipeline state creation information.-    dynamicStates :: Vector DynamicState-  }-  deriving (Typeable)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (PipelineDynamicStateCreateInfo)-#endif-deriving instance Show PipelineDynamicStateCreateInfo--instance ToCStruct PipelineDynamicStateCreateInfo where-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p PipelineDynamicStateCreateInfo{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineDynamicStateCreateFlags)) (flags)-    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (dynamicStates)) :: Word32))-    pPDynamicStates' <- ContT $ allocaBytes @DynamicState ((Data.Vector.length (dynamicStates)) * 4)-    lift $ Data.Vector.imapM_ (\i e -> poke (pPDynamicStates' `plusPtr` (4 * (i)) :: Ptr DynamicState) (e)) (dynamicStates)-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr DynamicState))) (pPDynamicStates')-    lift $ f-  cStructSize = 32-  cStructAlignment = 8-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    f--instance FromCStruct PipelineDynamicStateCreateInfo where-  peekCStruct p = do-    flags <- peek @PipelineDynamicStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineDynamicStateCreateFlags))-    dynamicStateCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))-    pDynamicStates <- peek @(Ptr DynamicState) ((p `plusPtr` 24 :: Ptr (Ptr DynamicState)))-    pDynamicStates' <- generateM (fromIntegral dynamicStateCount) (\i -> peek @DynamicState ((pDynamicStates `advancePtrBytes` (4 * (i)) :: Ptr DynamicState)))-    pure $ PipelineDynamicStateCreateInfo-             flags pDynamicStates'--instance Zero PipelineDynamicStateCreateInfo where-  zero = PipelineDynamicStateCreateInfo-           zero-           mempty----- | VkStencilOpState - Structure specifying stencil operation state------ == Valid Usage (Implicit)------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Enums.CompareOp.CompareOp',--- 'PipelineDepthStencilStateCreateInfo',--- 'Vulkan.Core10.Enums.StencilOp.StencilOp'-data StencilOpState = StencilOpState-  { -- | @failOp@ is a 'Vulkan.Core10.Enums.StencilOp.StencilOp' value specifying-    -- the action performed on samples that fail the stencil test.-    ---    -- #VUID-VkStencilOpState-failOp-parameter# @failOp@ /must/ be a valid-    -- 'Vulkan.Core10.Enums.StencilOp.StencilOp' value-    failOp :: StencilOp-  , -- | @passOp@ is a 'Vulkan.Core10.Enums.StencilOp.StencilOp' value specifying-    -- the action performed on samples that pass both the depth and stencil-    -- tests.-    ---    -- #VUID-VkStencilOpState-passOp-parameter# @passOp@ /must/ be a valid-    -- 'Vulkan.Core10.Enums.StencilOp.StencilOp' value-    passOp :: StencilOp-  , -- | @depthFailOp@ is a 'Vulkan.Core10.Enums.StencilOp.StencilOp' value-    -- specifying the action performed on samples that pass the stencil test-    -- and fail the depth test.-    ---    -- #VUID-VkStencilOpState-depthFailOp-parameter# @depthFailOp@ /must/ be a-    -- valid 'Vulkan.Core10.Enums.StencilOp.StencilOp' value-    depthFailOp :: StencilOp-  , -- | @compareOp@ is a 'Vulkan.Core10.Enums.CompareOp.CompareOp' value-    -- specifying the comparison operator used in the stencil test.-    ---    -- #VUID-VkStencilOpState-compareOp-parameter# @compareOp@ /must/ be a-    -- valid 'Vulkan.Core10.Enums.CompareOp.CompareOp' value-    compareOp :: CompareOp-  , -- | @compareMask@ selects the bits of the unsigned integer stencil values-    -- participating in the stencil test.-    compareMask :: Word32-  , -- | @writeMask@ selects the bits of the unsigned integer stencil values-    -- updated by the stencil test in the stencil framebuffer attachment.-    writeMask :: Word32-  , -- | @reference@ is an integer reference value that is used in the unsigned-    -- stencil comparison.-    reference :: Word32-  }-  deriving (Typeable, Eq)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (StencilOpState)-#endif-deriving instance Show StencilOpState--instance ToCStruct StencilOpState where-  withCStruct x f = allocaBytes 28 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p StencilOpState{..} f = do-    poke ((p `plusPtr` 0 :: Ptr StencilOp)) (failOp)-    poke ((p `plusPtr` 4 :: Ptr StencilOp)) (passOp)-    poke ((p `plusPtr` 8 :: Ptr StencilOp)) (depthFailOp)-    poke ((p `plusPtr` 12 :: Ptr CompareOp)) (compareOp)-    poke ((p `plusPtr` 16 :: Ptr Word32)) (compareMask)-    poke ((p `plusPtr` 20 :: Ptr Word32)) (writeMask)-    poke ((p `plusPtr` 24 :: Ptr Word32)) (reference)-    f-  cStructSize = 28-  cStructAlignment = 4-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr StencilOp)) (zero)-    poke ((p `plusPtr` 4 :: Ptr StencilOp)) (zero)-    poke ((p `plusPtr` 8 :: Ptr StencilOp)) (zero)-    poke ((p `plusPtr` 12 :: Ptr CompareOp)) (zero)-    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)-    f--instance FromCStruct StencilOpState where-  peekCStruct p = do-    failOp <- peek @StencilOp ((p `plusPtr` 0 :: Ptr StencilOp))-    passOp <- peek @StencilOp ((p `plusPtr` 4 :: Ptr StencilOp))-    depthFailOp <- peek @StencilOp ((p `plusPtr` 8 :: Ptr StencilOp))-    compareOp <- peek @CompareOp ((p `plusPtr` 12 :: Ptr CompareOp))-    compareMask <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))-    writeMask <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))-    reference <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))-    pure $ StencilOpState-             failOp passOp depthFailOp compareOp compareMask writeMask reference--instance Storable StencilOpState where-  sizeOf ~_ = 28-  alignment ~_ = 4-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero StencilOpState where-  zero = StencilOpState-           zero-           zero-           zero-           zero-           zero-           zero-           zero----- | VkPipelineDepthStencilStateCreateInfo - Structure specifying parameters--- of a newly created pipeline depth stencil state------ == Valid Usage------ -   #VUID-VkPipelineDepthStencilStateCreateInfo-depthBoundsTestEnable-00598#---     If the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-depthBounds depth bounds testing>---     feature is not enabled, @depthBoundsTestEnable@ /must/ be---     'Vulkan.Core10.FundamentalTypes.FALSE'------ -   #VUID-VkPipelineDepthStencilStateCreateInfo-separateStencilMaskRef-04453#---     If the @VK_KHR_portability_subset@ extension is enabled, and---     'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR'::@separateStencilMaskRef@---     is 'Vulkan.Core10.FundamentalTypes.FALSE', and the value of---     'PipelineDepthStencilStateCreateInfo'::@stencilTestEnable@ is---     'Vulkan.Core10.FundamentalTypes.TRUE', and the value of---     'PipelineRasterizationStateCreateInfo'::@cullMode@ is---     'Vulkan.Core10.Enums.CullModeFlagBits.CULL_MODE_NONE', the value of---     @reference@ in each of the 'StencilOpState' structs in @front@ and---     @back@ /must/ be the same------ -   #VUID-VkPipelineDepthStencilStateCreateInfo-rasterizationOrderDepthAttachmentAccess-06463#---     If the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-rasterizationOrderDepthAttachmentAccess rasterizationOrderDepthAttachmentAccess>---     feature is not enabled, @flags@ /must/ not include---     'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM'------ -   #VUID-VkPipelineDepthStencilStateCreateInfo-rasterizationOrderStencilAttachmentAccess-06464#---     If the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-rasterizationOrderStencilAttachmentAccess rasterizationOrderStencilAttachmentAccess>---     feature is not enabled, @flags@ /must/ not include---     'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM'------ == Valid Usage (Implicit)------ -   #VUID-VkPipelineDepthStencilStateCreateInfo-sType-sType# @sType@---     /must/ be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO'------ -   #VUID-VkPipelineDepthStencilStateCreateInfo-pNext-pNext# @pNext@---     /must/ be @NULL@------ -   #VUID-VkPipelineDepthStencilStateCreateInfo-flags-parameter# @flags@---     /must/ be a valid combination of---     'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PipelineDepthStencilStateCreateFlagBits'---     values------ -   #VUID-VkPipelineDepthStencilStateCreateInfo-depthCompareOp-parameter#---     @depthCompareOp@ /must/ be a valid---     'Vulkan.Core10.Enums.CompareOp.CompareOp' value------ -   #VUID-VkPipelineDepthStencilStateCreateInfo-front-parameter# @front@---     /must/ be a valid 'StencilOpState' structure------ -   #VUID-VkPipelineDepthStencilStateCreateInfo-back-parameter# @back@---     /must/ be a valid 'StencilOpState' structure------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.FundamentalTypes.Bool32',--- 'Vulkan.Core10.Enums.CompareOp.CompareOp', 'GraphicsPipelineCreateInfo',--- 'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PipelineDepthStencilStateCreateFlags',--- 'StencilOpState', 'Vulkan.Core10.Enums.StructureType.StructureType'-data PipelineDepthStencilStateCreateInfo = PipelineDepthStencilStateCreateInfo-  { -- | @flags@ is a bitmask of-    -- 'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PipelineDepthStencilStateCreateFlagBits'-    -- specifying additional depth\/stencil state information.-    flags :: PipelineDepthStencilStateCreateFlags-  , -- | @depthTestEnable@ controls whether-    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-depth depth testing>-    -- is enabled.-    depthTestEnable :: Bool-  , -- | @depthWriteEnable@ controls whether-    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-depth-write depth writes>-    -- are enabled when @depthTestEnable@ is-    -- 'Vulkan.Core10.FundamentalTypes.TRUE'. Depth writes are always disabled-    -- when @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.FALSE'.-    depthWriteEnable :: Bool-  , -- | @depthCompareOp@ is the comparison operator used in the-    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-depth depth test>.-    depthCompareOp :: CompareOp-  , -- | @depthBoundsTestEnable@ controls whether-    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-dbt depth bounds testing>-    -- is enabled.-    depthBoundsTestEnable :: Bool-  , -- | @stencilTestEnable@ controls whether-    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-stencil stencil testing>-    -- is enabled.-    stencilTestEnable :: Bool-  , -- | @front@ and @back@ control the parameters of the-    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-stencil stencil test>.-    front :: StencilOpState-  , -- No documentation found for Nested "VkPipelineDepthStencilStateCreateInfo" "back"-    back :: StencilOpState-  , -- | @minDepthBounds@ is the minimum depth bound used in the-    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-dbt depth bounds test>.-    minDepthBounds :: Float-  , -- | @maxDepthBounds@ is the maximum depth bound used in the-    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-dbt depth bounds test>.-    maxDepthBounds :: Float-  }-  deriving (Typeable)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (PipelineDepthStencilStateCreateInfo)-#endif-deriving instance Show PipelineDepthStencilStateCreateInfo--instance ToCStruct PipelineDepthStencilStateCreateInfo where-  withCStruct x f = allocaBytes 104 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p PipelineDepthStencilStateCreateInfo{..} f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr PipelineDepthStencilStateCreateFlags)) (flags)-    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (depthTestEnable))-    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (depthWriteEnable))-    poke ((p `plusPtr` 28 :: Ptr CompareOp)) (depthCompareOp)-    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (depthBoundsTestEnable))-    poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (stencilTestEnable))-    poke ((p `plusPtr` 40 :: Ptr StencilOpState)) (front)-    poke ((p `plusPtr` 68 :: Ptr StencilOpState)) (back)-    poke ((p `plusPtr` 96 :: Ptr CFloat)) (CFloat (minDepthBounds))-    poke ((p `plusPtr` 100 :: Ptr CFloat)) (CFloat (maxDepthBounds))-    f-  cStructSize = 104-  cStructAlignment = 8-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))-    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))-    poke ((p `plusPtr` 28 :: Ptr CompareOp)) (zero)-    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (zero))-    poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (zero))-    poke ((p `plusPtr` 40 :: Ptr StencilOpState)) (zero)-    poke ((p `plusPtr` 68 :: Ptr StencilOpState)) (zero)-    poke ((p `plusPtr` 96 :: Ptr CFloat)) (CFloat (zero))-    poke ((p `plusPtr` 100 :: Ptr CFloat)) (CFloat (zero))-    f--instance FromCStruct PipelineDepthStencilStateCreateInfo where-  peekCStruct p = do-    flags <- peek @PipelineDepthStencilStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineDepthStencilStateCreateFlags))-    depthTestEnable <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))-    depthWriteEnable <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))-    depthCompareOp <- peek @CompareOp ((p `plusPtr` 28 :: Ptr CompareOp))-    depthBoundsTestEnable <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))-    stencilTestEnable <- peek @Bool32 ((p `plusPtr` 36 :: Ptr Bool32))-    front <- peekCStruct @StencilOpState ((p `plusPtr` 40 :: Ptr StencilOpState))-    back <- peekCStruct @StencilOpState ((p `plusPtr` 68 :: Ptr StencilOpState))-    minDepthBounds <- peek @CFloat ((p `plusPtr` 96 :: Ptr CFloat))-    maxDepthBounds <- peek @CFloat ((p `plusPtr` 100 :: Ptr CFloat))-    pure $ PipelineDepthStencilStateCreateInfo-             flags (bool32ToBool depthTestEnable) (bool32ToBool depthWriteEnable) depthCompareOp (bool32ToBool depthBoundsTestEnable) (bool32ToBool stencilTestEnable) front back (coerce @CFloat @Float minDepthBounds) (coerce @CFloat @Float maxDepthBounds)--instance Storable PipelineDepthStencilStateCreateInfo where-  sizeOf ~_ = 104-  alignment ~_ = 8-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero PipelineDepthStencilStateCreateInfo where-  zero = PipelineDepthStencilStateCreateInfo-           zero-           zero-           zero-           zero-           zero-           zero-           zero-           zero-           zero-           zero----- | VkGraphicsPipelineCreateInfo - Structure specifying parameters of a--- newly created graphics pipeline------ = Description------ The parameters @basePipelineHandle@ and @basePipelineIndex@ are--- described in more detail in--- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-pipeline-derivatives Pipeline Derivatives>.------ If any shader stage fails to compile, the compile log will be reported--- back to the application, and--- 'Vulkan.Core10.Enums.Result.ERROR_INVALID_SHADER_NV' will be generated.------ The state required for a graphics pipeline is divided into--- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-vertex-input vertex input state>,--- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,--- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,--- and--- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output state>.------ Vertex input state is defined by:------ -   'PipelineVertexInputStateCreateInfo'------ -   'PipelineInputAssemblyStateCreateInfo'------ Pre-rasterization shader state is defined by:------ -   'PipelineShaderStageCreateInfo' entries for:------     -   Vertex shaders------     -   Tessellation control shaders------     -   Tessellation evaluation shaders------     -   Geometry shaders------     -   Task shaders------     -   Mesh shaders------ -   Within the 'Vulkan.Core10.Handles.PipelineLayout', all bindings that---     affect the specified shader stages------ -   'PipelineViewportStateCreateInfo'------ -   'PipelineRasterizationStateCreateInfo'------ -   'PipelineTessellationStateCreateInfo' if tessellation stages are---     included.------ -   'Vulkan.Core10.Handles.RenderPass' and @subpass@ parameter------ -   'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'------ -   'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'------ -   'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'------ Fragment shader state is defined by:------ -   A 'PipelineShaderStageCreateInfo' entry for the fragment shader------ -   Within the 'Vulkan.Core10.Handles.PipelineLayout', all bindings that---     affect the fragment shader------ -   'PipelineMultisampleStateCreateInfo'------ -   'PipelineDepthStencilStateCreateInfo'------ -   'Vulkan.Core10.Handles.RenderPass' and @subpass@ parameter------ -   'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'------ -   'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'------ Fragment output state is defined by:------ -   'PipelineColorBlendStateCreateInfo'------ -   The @alphaToCoverageEnable@ and @alphaToOneEnable@ members of---     'PipelineMultisampleStateCreateInfo'.------ -   'Vulkan.Core10.Handles.RenderPass' and @subpass@ parameter------ A complete graphics pipeline always includes--- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,--- with other subsets included depending on that state. If the--- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>--- includes a vertex shader, then--- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-vertex-input vertex input state>--- is included in a complete graphics pipeline. If the value of--- 'PipelineRasterizationStateCreateInfo'::@rasterizerDiscardEnable@ in the--- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>--- is 'Vulkan.Core10.FundamentalTypes.FALSE' or the--- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE'--- dynamic state is enabled--- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>--- and--- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>--- is included in a complete graphics pipeline.------ Pipelines /must/ be created with a complete set of pipeline state.------ == Valid Usage------ -   #VUID-VkGraphicsPipelineCreateInfo-flags-00722# If @flags@ contains---     the---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'---     flag, and @basePipelineIndex@ is -1, @basePipelineHandle@ /must/ be---     a valid handle to a graphics 'Vulkan.Core10.Handles.Pipeline'------ -   #VUID-VkGraphicsPipelineCreateInfo-flags-00723# If @flags@ contains---     the---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'---     flag, and @basePipelineHandle@ is---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @basePipelineIndex@ /must/---     be a valid index into the calling command’s @pCreateInfos@ parameter------ -   #VUID-VkGraphicsPipelineCreateInfo-flags-00724# If @flags@ contains---     the---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'---     flag, and @basePipelineIndex@ is not -1, @basePipelineHandle@ /must/---     be 'Vulkan.Core10.APIConstants.NULL_HANDLE'------ -   #VUID-VkGraphicsPipelineCreateInfo-flags-00725# If @flags@ contains---     the---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'---     flag, and @basePipelineHandle@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @basePipelineIndex@ /must/---     be -1------ -   #VUID-VkGraphicsPipelineCreateInfo-stage-00726# The @stage@ member---     of each element of @pStages@ /must/ be unique------ -   #VUID-VkGraphicsPipelineCreateInfo-pStages-02095# If the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>---     the geometric shader stages provided in @pStages@ /must/ be either---     from the mesh shading pipeline (@stage@ is---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_NV'---     or---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_NV')---     or from the primitive shading pipeline (@stage@ is---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT',---     or---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT')------ -   #VUID-VkGraphicsPipelineCreateInfo-stage-02096# If the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>---     the @stage@ member of one element of @pStages@ /must/ be either---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_NV'------ -   #VUID-VkGraphicsPipelineCreateInfo-stage-00728# The @stage@ member---     of each element of @pStages@ /must/ not be---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'------ -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00729# If the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>---     and @pStages@ includes a tessellation control shader stage, it---     /must/ include a tessellation evaluation shader stage------ -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00730# If the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>---     and @pStages@ includes a tessellation evaluation shader stage, it---     /must/ include a tessellation control shader stage------ -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00731# If the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>---     and @pStages@ includes a tessellation control shader stage and a---     tessellation evaluation shader stage, @pTessellationState@ /must/ be---     a valid pointer to a valid 'PipelineTessellationStateCreateInfo'---     structure------ -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00732# If the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>---     and @pStages@ includes tessellation shader stages, the shader code---     of at least one stage /must/ contain an @OpExecutionMode@---     instruction specifying the type of subdivision in the pipeline------ -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00733# If the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>---     and @pStages@ includes tessellation shader stages, and the shader---     code of both stages contain an @OpExecutionMode@ instruction---     specifying the type of subdivision in the pipeline, they /must/ both---     specify the same subdivision mode------ -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00734# If the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>---     and @pStages@ includes tessellation shader stages, the shader code---     of at least one stage /must/ contain an @OpExecutionMode@---     instruction specifying the output patch size in the pipeline------ -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00735# If the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>---     and @pStages@ includes tessellation shader stages, and the shader---     code of both contain an @OpExecutionMode@ instruction specifying the---     out patch size in the pipeline, they /must/ both specify the same---     patch size------ -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00736# If the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>---     and @pStages@ includes tessellation shader stages, the @topology@---     member of @pInputAssembly@ /must/ be---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST'------ -   #VUID-VkGraphicsPipelineCreateInfo-topology-00737# If the pipeline---     is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>---     and the @topology@ member of @pInputAssembly@ is---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST',---     @pStages@ /must/ include tessellation shader stages------ -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00738# If the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>---     and @pStages@ includes a geometry shader stage, and does not include---     any tessellation shader stages, its shader code /must/ contain an---     @OpExecutionMode@ instruction specifying an input primitive type---     that is---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-geometry-execution compatible>---     with the primitive topology specified in @pInputAssembly@------ -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00739# If the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>---     and @pStages@ includes a geometry shader stage, and also includes---     tessellation shader stages, its shader code /must/ contain an---     @OpExecutionMode@ instruction specifying an input primitive type---     that is---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-geometry-execution compatible>---     with the primitive topology that is output by the tessellation---     stages------ -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00740# If the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>---     and---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,---     it includes both a fragment shader and a geometry shader, and the---     fragment shader code reads from an input variable that is decorated---     with @PrimitiveId@, then the geometry shader code /must/ write to a---     matching output variable, decorated with @PrimitiveId@, in all---     execution paths------ -   #VUID-VkGraphicsPipelineCreateInfo-PrimitiveId-06264# If the---     pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,---     it includes a mesh shader and the fragment shader code reads from an---     input variable that is decorated with @PrimitiveId@, then the mesh---     shader code /must/ write to a matching output variable, decorated---     with @PrimitiveId@, in all execution paths------ -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06038# If @renderPass@---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>---     the fragment shader /must/ not read from any input attachment that---     is defined as 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' in---     @subpass@------ -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00742# If the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>---     and multiple pre-rasterization shader stages are included in---     @pStages@, the shader code for the entry points identified by those---     @pStages@ and the rest of the state identified by this structure---     /must/ adhere to the pipeline linking rules described in the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces Shader Interfaces>---     chapter------ -   #VUID-VkGraphicsPipelineCreateInfo-None-04889# If the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>---     and---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,---     the fragment shader and last---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>---     and any relevant state /must/ adhere to the pipeline linking rules---     described in the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces Shader Interfaces>---     chapter------ -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06039# If @renderPass@---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,---     and @subpass@ uses a depth\/stencil attachment in @renderPass@ with---     a read-only layout for the depth aspect in the---     'Vulkan.Core10.Pass.AttachmentReference' defined by @subpass@, the---     @depthWriteEnable@ member of @pDepthStencilState@ /must/ be---     'Vulkan.Core10.FundamentalTypes.FALSE'------ -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06040# If @renderPass@---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,---     and @subpass@ uses a depth\/stencil attachment in @renderPass@ with---     a read-only layout for the stencil aspect in the---     'Vulkan.Core10.Pass.AttachmentReference' defined by @subpass@, the---     @failOp@, @passOp@ and @depthFailOp@ members of each of the @front@---     and @back@ members of @pDepthStencilState@ /must/ be---     'Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP'------ -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06041# If @renderPass@---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,---     then for each color attachment in the subpass, if the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>---     of the format of the corresponding attachment description do not---     contain---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT',---     then the @blendEnable@ member of the corresponding element of the---     @pAttachments@ member of @pColorBlendState@ /must/ be---     'Vulkan.Core10.FundamentalTypes.FALSE'------ -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06042# If @renderPass@---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,---     and the subpass uses color attachments, the @attachmentCount@ member---     of @pColorBlendState@ /must/ be equal to the @colorAttachmentCount@---     used to create @subpass@------ -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04130# If the---     pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,---     and no element of the @pDynamicStates@ member of @pDynamicState@ is---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' or---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT',---     the @pViewports@ member of @pViewportState@ /must/ be a valid---     pointer to an array of @pViewportState->viewportCount@ valid---     'Viewport' structures------ -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04131# If the---     pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,---     and no element of the @pDynamicStates@ member of @pDynamicState@ is---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' or---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT',---     the @pScissors@ member of @pViewportState@ /must/ be a valid pointer---     to an array of @pViewportState->scissorCount@---     'Vulkan.Core10.FundamentalTypes.Rect2D' structures------ -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00749# If the---     pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,---     and the wide lines feature is not enabled, and no element of the---     @pDynamicStates@ member of @pDynamicState@ is---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH', the---     @lineWidth@ member of @pRasterizationState@ /must/ be @1.0@------ -   #VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00750# If---     the pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,---     and the @rasterizerDiscardEnable@ member of @pRasterizationState@ is---     'Vulkan.Core10.FundamentalTypes.FALSE', @pViewportState@ /must/ be a---     valid pointer to a valid 'PipelineViewportStateCreateInfo' structure------ -   #VUID-VkGraphicsPipelineCreateInfo-pViewportState-04892# If the---     pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,---     and the graphics pipeline state was created with the---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE'---     dynamic state enabled, @pViewportState@ /must/ be a valid pointer to---     a valid 'PipelineViewportStateCreateInfo' structure------ -   #VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00751# If---     the pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,---     @pMultisampleState@ /must/ be a valid pointer to a valid---     'PipelineMultisampleStateCreateInfo' structure------ -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06043# If @renderPass@---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,---     and @subpass@ uses a depth\/stencil attachment, @pDepthStencilState@---     /must/ be a valid pointer to a valid---     'PipelineDepthStencilStateCreateInfo' structure------ -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06044# If @renderPass@---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,---     and @subpass@ uses color attachments, @pColorBlendState@ /must/ be a---     valid pointer to a valid 'PipelineColorBlendStateCreateInfo'---     structure------ -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00754# If the---     pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,---     the depth bias clamping feature is not enabled, no element of the---     @pDynamicStates@ member of @pDynamicState@ is---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS', and the---     @depthBiasEnable@ member of @pRasterizationState@ is---     'Vulkan.Core10.FundamentalTypes.TRUE', the @depthBiasClamp@ member---     of @pRasterizationState@ /must/ be @0.0@------ -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-02510# If the---     pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,---     and the @VK_EXT_depth_range_unrestricted@ extension is not enabled---     and no element of the @pDynamicStates@ member of @pDynamicState@ is---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS', and---     the @depthBoundsTestEnable@ member of @pDepthStencilState@ is---     'Vulkan.Core10.FundamentalTypes.TRUE', the @minDepthBounds@ and---     @maxDepthBounds@ members of @pDepthStencilState@ /must/ be between---     @0.0@ and @1.0@, inclusive------ -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01521# If the---     pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,---     and no element of the @pDynamicStates@ member of @pDynamicState@ is---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT',---     and the @sampleLocationsEnable@ member of a---     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'---     structure included in the @pNext@ chain of @pMultisampleState@ is---     'Vulkan.Core10.FundamentalTypes.TRUE',---     @sampleLocationsInfo.sampleLocationGridSize.width@ /must/ evenly---     divide---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.width@---     as returned by---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'---     with a @samples@ parameter equaling @rasterizationSamples@------ -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01522# If the---     pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,---     and no element of the @pDynamicStates@ member of @pDynamicState@ is---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT',---     and the @sampleLocationsEnable@ member of a---     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'---     structure included in the @pNext@ chain of @pMultisampleState@ is---     'Vulkan.Core10.FundamentalTypes.TRUE',---     @sampleLocationsInfo.sampleLocationGridSize.height@ /must/ evenly---     divide---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.height@---     as returned by---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'---     with a @samples@ parameter equaling @rasterizationSamples@------ -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01523# If the---     pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,---     and no element of the @pDynamicStates@ member of @pDynamicState@ is---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT',---     and the @sampleLocationsEnable@ member of a---     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'---     structure included in the @pNext@ chain of @pMultisampleState@ is---     'Vulkan.Core10.FundamentalTypes.TRUE',---     @sampleLocationsInfo.sampleLocationsPerPixel@ /must/ equal---     @rasterizationSamples@------ -   #VUID-VkGraphicsPipelineCreateInfo-sampleLocationsEnable-01524# If---     the pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,---     and the @sampleLocationsEnable@ member of a---     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'---     structure included in the @pNext@ chain of @pMultisampleState@ is---     'Vulkan.Core10.FundamentalTypes.TRUE', the fragment shader code---     /must/ not statically use the extended instruction---     @InterpolateAtSample@------ -   #VUID-VkGraphicsPipelineCreateInfo-layout-00756# @layout@ /must/ be---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency consistent>---     with all shaders specified in @pStages@------ -   #VUID-VkGraphicsPipelineCreateInfo-subpass-00757# If the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,---     and neither the @VK_AMD_mixed_attachment_samples@ nor the---     @VK_NV_framebuffer_mixed_samples@ extensions are enabled, and if---     @subpass@ uses color and\/or depth\/stencil attachments, then the---     @rasterizationSamples@ member of @pMultisampleState@ /must/ be the---     same as the sample count for those subpass attachments------ -   #VUID-VkGraphicsPipelineCreateInfo-subpass-01505# If the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,---     and the @VK_AMD_mixed_attachment_samples@ extension is enabled, and---     if @subpass@ uses color and\/or depth\/stencil attachments, then the---     @rasterizationSamples@ member of @pMultisampleState@ /must/ equal---     the maximum of the sample counts of those subpass attachments------ -   #VUID-VkGraphicsPipelineCreateInfo-subpass-01411# If the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,---     and the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and---     if @subpass@ has a depth\/stencil attachment and depth test, stencil---     test, or depth bounds test are enabled, then the---     @rasterizationSamples@ member of @pMultisampleState@ /must/ be the---     same as the sample count of the depth\/stencil attachment------ -   #VUID-VkGraphicsPipelineCreateInfo-subpass-01412# If the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,---     and the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and---     if @subpass@ has any color attachments, then the---     @rasterizationSamples@ member of @pMultisampleState@ /must/ be---     greater than or equal to the sample count for those subpass---     attachments------ -   #VUID-VkGraphicsPipelineCreateInfo-coverageReductionMode-02722# If---     the pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,---     and the @VK_NV_coverage_reduction_mode@ extension is enabled, the---     coverage reduction mode specified by---     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.PipelineCoverageReductionStateCreateInfoNV'::@coverageReductionMode@,---     the @rasterizationSamples@ member of @pMultisampleState@ and the---     sample counts for the color and depth\/stencil attachments (if the---     subpass has them) /must/ be a valid combination returned by---     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'------ -   #VUID-VkGraphicsPipelineCreateInfo-subpass-00758# If the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>---     and @subpass@ does not use any color and\/or depth\/stencil---     attachments, then the @rasterizationSamples@ member of---     @pMultisampleState@ /must/ follow the rules for a---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass>------ -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06046# If @renderPass@---     is a valid renderPass, @subpass@ /must/ be a valid subpass within---     @renderPass@------ -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06047# If @renderPass@---     is a valid renderPass, the pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,---     and the @renderPass@ has multiview enabled and @subpass@ has more---     than one bit set in the view mask and @multiviewTessellationShader@---     is not enabled, then @pStages@ /must/ not include tessellation---     shaders------ -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06048# If @renderPass@---     is a valid renderPass, the pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,---     and the @renderPass@ has multiview enabled and @subpass@ has more---     than one bit set in the view mask and @multiviewGeometryShader@ is---     not enabled, then @pStages@ /must/ not include a geometry shader------ -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06049# If @renderPass@---     is a valid renderPass, the pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,---     and the @renderPass@ has multiview enabled and @subpass@ has more---     than one bit set in the view mask, shaders in the pipeline /must/---     not write to the @Layer@ built-in output------ -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06050# If @renderPass@---     is a valid renderPass and the pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,---     and the @renderPass@ has multiview enabled, then all shaders /must/---     not include variables decorated with the @Layer@ built-in decoration---     in their interfaces------ -   #VUID-VkGraphicsPipelineCreateInfo-flags-00764# @flags@ /must/ not---     contain the---     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.PIPELINE_CREATE_DISPATCH_BASE'---     flag------ -   #VUID-VkGraphicsPipelineCreateInfo-pStages-01565# If the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>---     and an input attachment was referenced by an @aspectMask@ at---     @renderPass@ creation time, the fragment shader /must/ only read---     from the aspects that were specified for that input attachment------ -   #VUID-VkGraphicsPipelineCreateInfo-layout-01688# The number of---     resources in @layout@ accessible to each shader stage that is used---     by the pipeline /must/ be less than or equal to---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPerStageResources@------ -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01715# If the---     pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,---     and no element of the @pDynamicStates@ member of @pDynamicState@ is---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV',---     and the @viewportWScalingEnable@ member of a---     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'---     structure, included in the @pNext@ chain of @pViewportState@, is---     'Vulkan.Core10.FundamentalTypes.TRUE', the @pViewportWScalings@---     member of the---     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'---     /must/ be a pointer to an array of---     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'::@viewportCount@---     valid---     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.ViewportWScalingNV'---     structures------ -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04056# If the---     pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,---     and no element of the @pDynamicStates@ member of @pDynamicState@ is---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV',---     and if @pViewportState->pNext@ chain includes a---     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'---     structure, and if its @exclusiveScissorCount@ member is not @0@,---     then its @pExclusiveScissors@ member /must/ be a valid pointer to an---     array of @exclusiveScissorCount@---     'Vulkan.Core10.FundamentalTypes.Rect2D' structures------ -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04057# If the---     pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,---     and no element of the @pDynamicStates@ member of @pDynamicState@ is---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV',---     and if @pViewportState->pNext@ chain includes a---     'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV'---     structure, then its @pShadingRatePalettes@ member /must/ be a valid---     pointer to an array of @viewportCount@ valid---     'Vulkan.Extensions.VK_NV_shading_rate_image.ShadingRatePaletteNV'---     structures------ -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04058# If the---     pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,---     and no element of the @pDynamicStates@ member of @pDynamicState@ is---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT',---     and if @pNext@ chain includes a---     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'---     structure, and if its @discardRectangleCount@ member is not @0@,---     then its @pDiscardRectangles@ member /must/ be a valid pointer to an---     array of @discardRectangleCount@---     'Vulkan.Core10.FundamentalTypes.Rect2D' structures------ -   #VUID-VkGraphicsPipelineCreateInfo-pStages-02098# If the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-vertex-input vertex input state>,---     @pInputAssemblyState@ /must/ be a valid pointer to a valid---     'PipelineInputAssemblyStateCreateInfo' structure------ -   #VUID-VkGraphicsPipelineCreateInfo-pStages-02317# If the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,---     the @Xfb@ execution mode /can/ be specified by no more than one---     shader stage in @pStages@------ -   #VUID-VkGraphicsPipelineCreateInfo-pStages-02318# If the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,---     and any shader stage in @pStages@ specifies @Xfb@ execution mode it---     /must/ be the last---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>------ -   #VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02319# If the---     pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,---     and a---     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@---     value other than zero is specified, all variables in the output---     interface of the entry point being compiled decorated with---     @Position@, @PointSize@, @ClipDistance@, or @CullDistance@ /must/ be---     decorated with identical @Stream@ values that match the---     @rasterizationStream@------ -   #VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02320# If the---     pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,---     and---     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@---     is zero, or not specified, all variables in the output interface of---     the entry point being compiled decorated with @Position@,---     @PointSize@, @ClipDistance@, or @CullDistance@ /must/ be decorated---     with a @Stream@ value of zero, or /must/ not specify the @Stream@---     decoration------ -   #VUID-VkGraphicsPipelineCreateInfo-geometryStreams-02321# If the---     pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,---     and the last---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>---     is a geometry shader, and that geometry shader uses the---     @GeometryStreams@ capability, then---     'Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackFeaturesEXT'::@geometryStreams@---     feature /must/ be enabled------ -   #VUID-VkGraphicsPipelineCreateInfo-None-02322# If the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,---     and there are any mesh shader stages in the pipeline there /must/---     not be any shader stage in the pipeline with a @Xfb@ execution mode------ -   #VUID-VkGraphicsPipelineCreateInfo-lineRasterizationMode-02766# If---     the pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>---     and at least one of---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>---     or---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,---     the @lineRasterizationMode@ member of a---     'Vulkan.Extensions.VK_EXT_line_rasterization.PipelineRasterizationLineStateCreateInfoEXT'---     structure included in the @pNext@ chain of @pRasterizationState@ is---     'Vulkan.Extensions.VK_EXT_line_rasterization.LINE_RASTERIZATION_MODE_BRESENHAM_EXT'---     or---     'Vulkan.Extensions.VK_EXT_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT',---     then the @alphaToCoverageEnable@, @alphaToOneEnable@, and---     @sampleShadingEnable@ members of @pMultisampleState@ /must/ all be---     'Vulkan.Core10.FundamentalTypes.FALSE'------ -   #VUID-VkGraphicsPipelineCreateInfo-stippledLineEnable-02767# If the---     pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,---     the @stippledLineEnable@ member of---     'Vulkan.Extensions.VK_EXT_line_rasterization.PipelineRasterizationLineStateCreateInfoEXT'---     is 'Vulkan.Core10.FundamentalTypes.TRUE', and no element of the---     @pDynamicStates@ member of @pDynamicState@ is---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_EXT',---     then the @lineStippleFactor@ member of---     'Vulkan.Extensions.VK_EXT_line_rasterization.PipelineRasterizationLineStateCreateInfoEXT'---     /must/ be in the range [1,256]------ -   #VUID-VkGraphicsPipelineCreateInfo-flags-03371# @flags@ /must/ not---     include---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'------ -   #VUID-VkGraphicsPipelineCreateInfo-flags-03372# @flags@ /must/ not---     include---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR'------ -   #VUID-VkGraphicsPipelineCreateInfo-flags-03373# @flags@ /must/ not---     include---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR'------ -   #VUID-VkGraphicsPipelineCreateInfo-flags-03374# @flags@ /must/ not---     include---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR'------ -   #VUID-VkGraphicsPipelineCreateInfo-flags-03375# @flags@ /must/ not---     include---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR'------ -   #VUID-VkGraphicsPipelineCreateInfo-flags-03376# @flags@ /must/ not---     include---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR'------ -   #VUID-VkGraphicsPipelineCreateInfo-flags-03377# @flags@ /must/ not---     include---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR'------ -   #VUID-VkGraphicsPipelineCreateInfo-flags-03577# @flags@ /must/ not---     include---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'------ -   #VUID-VkGraphicsPipelineCreateInfo-flags-04947# @flags@ /must/ not---     include---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV'------ -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03378# If the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState extendedDynamicState>---     feature is not enabled, there /must/ be no element of the---     @pDynamicStates@ member of @pDynamicState@ set to---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE',---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE',---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY',---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT',---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT',---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE',---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE',---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE',---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP',---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE',---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE',---     or 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP'------ -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03379# If the---     pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,---     and---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'---     is included in the @pDynamicStates@ array then @viewportCount@---     /must/ be zero------ -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03380# If the---     pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,---     and---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'---     is included in the @pDynamicStates@ array then @scissorCount@ /must/---     be zero------ -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04132# If the---     pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,---     and---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'---     is included in the @pDynamicStates@ array then---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' /must/ not---     be present------ -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04133# If the---     pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,---     and---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'---     is included in the @pDynamicStates@ array then---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' /must/ not---     be present------ -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04868# If the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState2 extendedDynamicState2>---     feature is not enabled, there /must/ be no element of the---     @pDynamicStates@ member of @pDynamicState@ set to---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE',---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE',---     or---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE'------ -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04869# If the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState2LogicOp extendedDynamicState2LogicOp>---     feature is not enabled, there /must/ be no element of the---     @pDynamicStates@ member of @pDynamicState@ set to---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'------ -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04870# If the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState2PatchControlPoints extendedDynamicState2PatchControlPoints>---     feature is not enabled, there /must/ be no element of the---     @pDynamicStates@ member of @pDynamicState@ set to---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'------ -   #VUID-VkGraphicsPipelineCreateInfo-flags-02877# If @flags@ includes---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV',---     then the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-deviceGeneratedCommands ::deviceGeneratedCommands>---     feature /must/ be enabled------ -   #VUID-VkGraphicsPipelineCreateInfo-flags-02966# If the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>---     and @flags@ includes---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV',---     then all stages /must/ not specify @Xfb@ execution mode------ -   #VUID-VkGraphicsPipelineCreateInfo-pipelineCreationCacheControl-02878#---     If the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineCreationCacheControl pipelineCreationCacheControl>---     feature is not enabled, @flags@ /must/ not include---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT'---     or---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT'------ -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04494# If the---     pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>---     or---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>---     and---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'---     is not included in @pDynamicState->pDynamicStates@,---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.width@---     /must/ be greater than or equal to @1@------ -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04495# If the---     pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>---     or---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>---     and---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'---     is not included in @pDynamicState->pDynamicStates@,---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.height@---     /must/ be greater than or equal to @1@------ -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04496# If the---     pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>---     or---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>---     and---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'---     is not included in @pDynamicState->pDynamicStates@,---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.width@---     /must/ be a power-of-two value------ -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04497# If the---     pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>---     or---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>---     and---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'---     is not included in @pDynamicState->pDynamicStates@,---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.height@---     /must/ be a power-of-two value------ -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04498# If the---     pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>---     or---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>---     and---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'---     is not included in @pDynamicState->pDynamicStates@,---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.width@---     /must/ be less than or equal to @4@------ -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04499# If the---     pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>---     or---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>---     and---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'---     is not included in @pDynamicState->pDynamicStates@,---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.height@---     /must/ be less than or equal to @4@------ -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04500# If the---     pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>---     or---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>---     and---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'---     is not included in @pDynamicState->pDynamicStates@, and the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate feature>---     is not enabled,---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.width@---     and---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.height@---     /must/ both be equal to @1@------ -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04501# If the---     pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>---     or---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>---     and---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'---     is not included in @pDynamicState->pDynamicStates@, and the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitiveFragmentShadingRate primitiveFragmentShadingRate feature>---     is not enabled,---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@combinerOps@[0]---     /must/ be---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR'------ -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04502# If the---     pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>---     or---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>---     and---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'---     is not included in @pDynamicState->pDynamicStates@, and the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate feature>---     is not enabled,---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@combinerOps@[1]---     /must/ be---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR'------ -   #VUID-VkGraphicsPipelineCreateInfo-primitiveFragmentShadingRateWithMultipleViewports-04503#---     If the pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>---     and the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>---     limit is not supported,---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'---     is not included in @pDynamicState->pDynamicStates@, and---     'PipelineViewportStateCreateInfo'::@viewportCount@ is greater than---     @1@, entry points specified in @pStages@ /must/ not write to the---     @PrimitiveShadingRateKHR@ built-in------ -   #VUID-VkGraphicsPipelineCreateInfo-primitiveFragmentShadingRateWithMultipleViewports-04504#---     If the pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>---     and the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>---     limit is not supported, and entry points specified in @pStages@---     write to the @ViewportIndex@ built-in, they /must/ not also write to---     the @PrimitiveShadingRateKHR@ built-in------ -   #VUID-VkGraphicsPipelineCreateInfo-primitiveFragmentShadingRateWithMultipleViewports-04505#---     If the pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>---     and the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>---     limit is not supported, and entry points specified in @pStages@---     write to the @ViewportMaskNV@ built-in, they /must/ not also write---     to the @PrimitiveShadingRateKHR@ built-in------ -   #VUID-VkGraphicsPipelineCreateInfo-fragmentShadingRateNonTrivialCombinerOps-04506#---     If the pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>---     or---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,---     the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-fragmentShadingRateNonTrivialCombinerOps fragmentShadingRateNonTrivialCombinerOps>---     limit is not supported, and---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'---     is not included in @pDynamicState->pDynamicStates@, elements of---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@combinerOps@---     /must/ be---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR'---     or---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR'------ -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04569# If the---     pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>---     or---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,---     and---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'---     is not included in @pDynamicState->pDynamicStates@, and the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-fragmentShadingRateEnums fragmentShadingRateEnums feature>---     is not enabled,---     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@shadingRateType@---     /must/ be equal to---     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV'------ -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04570# If the---     pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>---     or---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,---     and---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'---     is not included in @pDynamicState->pDynamicStates@, and the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate feature>---     is not enabled,---     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@shadingRate@---     /must/ be equal to---     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV'------ -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04571# If the---     pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>---     or---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,---     and---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'---     is not included in @pDynamicState->pDynamicStates@, and the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitiveFragmentShadingRate primitiveFragmentShadingRate feature>---     is not enabled,---     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@combinerOps@[0]---     /must/ be---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR'------ -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04572# If the---     pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>---     or---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,---     and---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'---     is not included in @pDynamicState->pDynamicStates@, and the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate feature>---     is not enabled,---     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@combinerOps@[1]---     /must/ be---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR'------ -   #VUID-VkGraphicsPipelineCreateInfo-fragmentShadingRateNonTrivialCombinerOps-04573#---     If the pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>---     or---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,---     and the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-fragmentShadingRateNonTrivialCombinerOps fragmentShadingRateNonTrivialCombinerOps>---     limit is not supported and---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'---     is not included in @pDynamicState->pDynamicStates@, elements of---     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@combinerOps@---     /must/ be---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR'---     or---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR'------ -   #VUID-VkGraphicsPipelineCreateInfo-None-04574# If the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>---     or---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,---     and the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-supersampleFragmentShadingRates supersampleFragmentShadingRates feature>---     is not enabled,---     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@shadingRate@---     /must/ not be equal to---     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV',---     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV',---     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV',---     or---     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV'------ -   #VUID-VkGraphicsPipelineCreateInfo-None-04575# If the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>---     or---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,---     and the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-noInvocationFragmentShadingRates noInvocationFragmentShadingRates feature>---     is not enabled,---     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@shadingRate@---     /must/ not be equal to---     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV'------ -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03578# All---     elements of the @pDynamicStates@ member of @pDynamicState@ /must/---     not be---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR'------ -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04807# If the---     pipeline is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>---     and the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-vertexInputDynamicState vertexInputDynamicState>---     feature is not enabled, there /must/ be no element of the---     @pDynamicStates@ member of @pDynamicState@ set to---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'------ -   #VUID-VkGraphicsPipelineCreateInfo-None-04893# The pipeline /must/---     be created with a---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-complete complete set of state>------ -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04800# If the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>---     feature is not enabled, there /must/ be no element of the---     @pDynamicStates@ member of @pDynamicState@ set to---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'------ -   #VUID-VkGraphicsPipelineCreateInfo-rasterizationSamples-04899# If---     the pipeline is being created with fragment shader state, and the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_render_pass_shader_resolve VK_QCOM_render_pass_shader_resolve>---     extension is enabled, and if subpass has any input attachments, and---     if the subpass description contains---     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM',---     then the sample count of the input attachments /must/ equal---     @rasterizationSamples@------ -   #VUID-VkGraphicsPipelineCreateInfo-sampleShadingEnable-04900# If the---     pipeline is being created with fragment shader state, and the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_render_pass_shader_resolve VK_QCOM_render_pass_shader_resolve>---     extension is enabled, and if the subpass description contains---     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM',---     then @sampleShadingEnable@ /must/ be false------ -   #VUID-VkGraphicsPipelineCreateInfo-flags-04901# If @flags@ includes---     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM',---     then the subpass /must/ be the last subpass in a subpass dependency---     chain------ -   #VUID-VkGraphicsPipelineCreateInfo-flags-04902# If @flags@ includes---     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM',---     and if @pResolveAttachments@ is not @NULL@, then each resolve---     attachment /must/ be 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'------ -   #VUID-VkGraphicsPipelineCreateInfo-dynamicRendering-06052# If the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-dynamicRendering dynamicRendering>---     feature is not enabled, @renderPass@ /must/ not be---     'Vulkan.Core10.APIConstants.NULL_HANDLE'------ -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06053# If @renderPass@---     is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is being---     created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,---     and either of---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::depthAttachmentFormat---     or---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::stencilAttachmentFormat---     are not 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED',---     @pDepthStencilState@ /must/ be a valid pointer to a valid---     'PipelineDepthStencilStateCreateInfo' structure------ -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06054# If @renderPass@---     is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is being---     created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,---     and---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::colorAttachmentCount---     is not equal to @0@, @pColorBlendState@ /must/ be a valid pointer to---     a valid 'PipelineColorBlendStateCreateInfo' structure------ -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06055# If @renderPass@---     is 'Vulkan.Core10.APIConstants.NULL_HANDLE' and the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,---     @pColorBlendState->attachmentCount@ /must/ be equal to---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::colorAttachmentCount------ -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06056# If @renderPass@---     is 'Vulkan.Core10.APIConstants.NULL_HANDLE' and the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>---     the fragment shader /must/ not read from any input attachment------ -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06057# If @renderPass@---     is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is being---     created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,---     the @viewMask@ member of a---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'---     structure included in the @pNext@ chain is not @0@, and the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiview-tess multiviewTessellationShader>---     feature is not enabled, then @pStages@ /must/ not include---     tessellation shaders------ -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06058# If @renderPass@---     is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is being---     created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,---     the @viewMask@ member of a---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'---     structure included in the @pNext@ chain is not @0@, and the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiview-gs multiviewGeometryShader>---     feature is not enabled, then @pStages@ /must/ not include a geometry---     shader------ -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06059# If @renderPass@---     is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is being---     created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,---     and the @viewMask@ member of a---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'---     structure included in the @pNext@ chain is not @0@, shaders in---     @pStages@ /must/ not include variables decorated with the @Layer@---     built-in decoration in their interfaces------ -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06060# If the pipeline---     is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>---     and @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE',---     @pColorBlendState->attachmentCount@ /must/ be equal to the---     @colorAttachmentCount@ member of the---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'---     structure included in the @pNext@ chain------ -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06061# If the pipeline---     is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>---     and @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE',---     fragment shaders in @pStages@ /must/ not include the---     @InputAttachment@ capability------ -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06062# If the pipeline---     is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>---     and @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', for---     each color attachment format defined by the---     @pColorAttachmentFormats@ member of---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo',---     if its---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>---     do not contain---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT',---     then the @blendEnable@ member of the corresponding element of the---     @pAttachments@ member of @pColorBlendState@ /must/ be---     'Vulkan.Core10.FundamentalTypes.FALSE'------ -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06063# If the pipeline---     is being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>---     and @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', if the---     @pNext@ chain includes---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'---     or---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV',---     the @colorAttachmentCount@ member of that structure /must/ be equal---     to the value of---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@------ -   #VUID-VkGraphicsPipelineCreateInfo-pStages-06466# If @pStages@---     includes a fragment shader stage, and the fragment shader code---     enables---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-fragment-earlytest early fragment tests>,---     the @flags@ member of 'PipelineDepthStencilStateCreateInfo' /must/---     not include---     'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM'---     or---     'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM'------ -   #VUID-VkGraphicsPipelineCreateInfo-flags-06482# If the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>---     and the @flags@ member of 'PipelineColorBlendStateCreateInfo'---     includes---     'Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlagBits.PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_ARM',---     @renderpass@ /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'------ -   #VUID-VkGraphicsPipelineCreateInfo-flags-06483# If the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>---     and the @flags@ member of 'PipelineDepthStencilStateCreateInfo'---     includes---     'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM'---     or---     'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM',---     @renderpass@ /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'------ -   #VUID-VkGraphicsPipelineCreateInfo-flags-06484# If the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>---     and the @flags@ member of 'PipelineColorBlendStateCreateInfo'---     includes---     'Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlagBits.PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_ARM'---     @subpass@ /must/ have been created with---     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_ARM'------ -   #VUID-VkGraphicsPipelineCreateInfo-flags-06485# If the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>---     and the @flags@ member of 'PipelineDepthStencilStateCreateInfo'---     includes---     'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM',---     @subpass@ /must/ have been created with---     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM'------ -   #VUID-VkGraphicsPipelineCreateInfo-flags-06486# If the pipeline is---     being created with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>---     and the @flags@ member of 'PipelineDepthStencilStateCreateInfo'---     includes---     'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM',---     @subpass@ /must/ have been created with---     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM'------ == Valid Usage (Implicit)------ -   #VUID-VkGraphicsPipelineCreateInfo-sType-sType# @sType@ /must/ be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO'------ -   #VUID-VkGraphicsPipelineCreateInfo-pNext-pNext# Each @pNext@ member---     of any structure (including this one) in the @pNext@ chain /must/ be---     either @NULL@ or a pointer to a valid instance of---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD',---     'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsPipelineShaderGroupsCreateInfoNV',---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.MultiviewPerViewAttributesInfoNVX',---     'Vulkan.Extensions.VK_AMD_pipeline_compiler_control.PipelineCompilerControlCreateInfoAMD',---     'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfo',---     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT',---     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV',---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR',---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo',---     or---     'Vulkan.Extensions.VK_NV_representative_fragment_test.PipelineRepresentativeFragmentTestStateCreateInfoNV'------ -   #VUID-VkGraphicsPipelineCreateInfo-sType-unique# The @sType@ value---     of each struct in the @pNext@ chain /must/ be unique------ -   #VUID-VkGraphicsPipelineCreateInfo-flags-parameter# @flags@ /must/---     be a valid combination of---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'---     values------ -   #VUID-VkGraphicsPipelineCreateInfo-pStages-parameter# @pStages@---     /must/ be a valid pointer to an array of @stageCount@ valid---     'PipelineShaderStageCreateInfo' structures------ -   #VUID-VkGraphicsPipelineCreateInfo-pRasterizationState-parameter#---     @pRasterizationState@ /must/ be a valid pointer to a valid---     'PipelineRasterizationStateCreateInfo' structure------ -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-parameter# If---     @pDynamicState@ is not @NULL@, @pDynamicState@ /must/ be a valid---     pointer to a valid 'PipelineDynamicStateCreateInfo' structure------ -   #VUID-VkGraphicsPipelineCreateInfo-layout-parameter# @layout@ /must/---     be a valid 'Vulkan.Core10.Handles.PipelineLayout' handle------ -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-parameter# If---     @renderPass@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',---     @renderPass@ /must/ be a valid 'Vulkan.Core10.Handles.RenderPass'---     handle------ -   #VUID-VkGraphicsPipelineCreateInfo-stageCount-arraylength#---     @stageCount@ /must/ be greater than @0@------ -   #VUID-VkGraphicsPipelineCreateInfo-commonparent# Each of---     @basePipelineHandle@, @layout@, and @renderPass@ that are valid---     handles of non-ignored parameters /must/ have been created,---     allocated, or retrieved from the same 'Vulkan.Core10.Handles.Device'------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,--- 'Vulkan.Core10.Handles.Pipeline', 'PipelineColorBlendStateCreateInfo',--- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlags',--- 'PipelineDepthStencilStateCreateInfo', 'PipelineDynamicStateCreateInfo',--- 'PipelineInputAssemblyStateCreateInfo',--- 'Vulkan.Core10.Handles.PipelineLayout',--- 'PipelineMultisampleStateCreateInfo',--- 'PipelineRasterizationStateCreateInfo', 'PipelineShaderStageCreateInfo',--- 'PipelineTessellationStateCreateInfo',--- 'PipelineVertexInputStateCreateInfo', 'PipelineViewportStateCreateInfo',--- 'Vulkan.Core10.Handles.RenderPass',--- 'Vulkan.Core10.Enums.StructureType.StructureType',--- 'createGraphicsPipelines'-data GraphicsPipelineCreateInfo (es :: [Type]) = GraphicsPipelineCreateInfo-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.-    next :: Chain es-  , -- | @flags@ is a bitmask of-    -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'-    -- specifying how the pipeline will be generated.-    flags :: PipelineCreateFlags-  , -- | @pStages@ is a pointer to an array of @stageCount@-    -- 'PipelineShaderStageCreateInfo' structures describing the set of the-    -- shader stages to be included in the graphics pipeline.-    stages :: Vector (SomeStruct PipelineShaderStageCreateInfo)-  , -- | @pVertexInputState@ is a pointer to a-    -- 'PipelineVertexInputStateCreateInfo' structure. It is ignored if the-    -- pipeline includes a mesh shader stage. It is ignored if the pipeline is-    -- created with the-    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'-    -- dynamic state set.-    vertexInputState :: Maybe (SomeStruct PipelineVertexInputStateCreateInfo)-  , -- | @pInputAssemblyState@ is a pointer to a-    -- 'PipelineInputAssemblyStateCreateInfo' structure which determines input-    -- assembly behavior, as described in-    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#drawing Drawing Commands>.-    -- It is ignored if the pipeline includes a mesh shader stage.-    inputAssemblyState :: Maybe PipelineInputAssemblyStateCreateInfo-  , -- | @pTessellationState@ is a pointer to a-    -- 'PipelineTessellationStateCreateInfo' structure, and is ignored if the-    -- pipeline does not include a tessellation control shader stage and-    -- tessellation evaluation shader stage.-    tessellationState :: Maybe (SomeStruct PipelineTessellationStateCreateInfo)-  , -- | @pViewportState@ is a pointer to a 'PipelineViewportStateCreateInfo'-    -- structure, and is ignored if the pipeline has rasterization disabled.-    viewportState :: Maybe (SomeStruct PipelineViewportStateCreateInfo)-  , -- | @pRasterizationState@ is a pointer to a-    -- 'PipelineRasterizationStateCreateInfo' structure.-    rasterizationState :: SomeStruct PipelineRasterizationStateCreateInfo-  , -- | @pMultisampleState@ is a pointer to a-    -- 'PipelineMultisampleStateCreateInfo' structure, and is ignored if the-    -- pipeline has rasterization disabled.-    multisampleState :: Maybe (SomeStruct PipelineMultisampleStateCreateInfo)-  , -- | @pDepthStencilState@ is a pointer to a-    -- 'PipelineDepthStencilStateCreateInfo' structure, and is ignored if the-    -- pipeline has rasterization disabled or if no depth\/stencil attachment-    -- is used.-    depthStencilState :: Maybe PipelineDepthStencilStateCreateInfo-  , -- | @pColorBlendState@ is a pointer to a 'PipelineColorBlendStateCreateInfo'-    -- structure, and is ignored if the pipeline has rasterization disabled or-    -- if no color attachments are used.-    colorBlendState :: Maybe (SomeStruct PipelineColorBlendStateCreateInfo)-  , -- | @pDynamicState@ is a pointer to a 'PipelineDynamicStateCreateInfo'-    -- structure, and is used to indicate which properties of the pipeline-    -- state object are dynamic and /can/ be changed independently of the-    -- pipeline state. This /can/ be @NULL@, which means no state in the-    -- pipeline is considered dynamic.-    dynamicState :: Maybe PipelineDynamicStateCreateInfo-  , -- | @layout@ is the description of binding locations used by both the-    -- pipeline and descriptor sets used with the pipeline.-    layout :: PipelineLayout-  , -- | @renderPass@ is a handle to a render pass object describing the-    -- environment in which the pipeline will be used. The pipeline /must/ only-    -- be used with a render pass instance compatible with the one provided.-    -- See-    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-compatibility Render Pass Compatibility>-    -- for more information.-    renderPass :: RenderPass-  , -- | @subpass@ is the index of the subpass in the render pass where this-    -- pipeline will be used.-    subpass :: Word32-  , -- | @basePipelineHandle@ is a pipeline to derive from.-    basePipelineHandle :: Pipeline-  , -- | @basePipelineIndex@ is an index into the @pCreateInfos@ parameter to use-    -- as a pipeline to derive from.-    basePipelineIndex :: Int32-  }-  deriving (Typeable)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (GraphicsPipelineCreateInfo (es :: [Type]))-#endif-deriving instance Show (Chain es) => Show (GraphicsPipelineCreateInfo es)--instance Extensible GraphicsPipelineCreateInfo where-  extensibleTypeName = "GraphicsPipelineCreateInfo"-  setNext GraphicsPipelineCreateInfo{..} next' = GraphicsPipelineCreateInfo{next = next', ..}-  getNext GraphicsPipelineCreateInfo{..} = next-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends GraphicsPipelineCreateInfo e => b) -> Maybe b-  extends _ f-    | Just Refl <- eqT @e @MultiviewPerViewAttributesInfoNVX = Just f-    | Just Refl <- eqT @e @AttachmentSampleCountInfoAMD = Just f-    | Just Refl <- eqT @e @PipelineRenderingCreateInfo = Just f-    | Just Refl <- eqT @e @PipelineFragmentShadingRateEnumStateCreateInfoNV = Just f-    | Just Refl <- eqT @e @PipelineFragmentShadingRateStateCreateInfoKHR = Just f-    | Just Refl <- eqT @e @PipelineCompilerControlCreateInfoAMD = Just f-    | Just Refl <- eqT @e @PipelineCreationFeedbackCreateInfo = Just f-    | Just Refl <- eqT @e @PipelineRepresentativeFragmentTestStateCreateInfoNV = Just f-    | Just Refl <- eqT @e @PipelineDiscardRectangleStateCreateInfoEXT = Just f-    | Just Refl <- eqT @e @GraphicsPipelineShaderGroupsCreateInfoNV = Just f-    | otherwise = Nothing--instance (Extendss GraphicsPipelineCreateInfo es, PokeChain es) => ToCStruct (GraphicsPipelineCreateInfo es) where-  withCStruct x f = allocaBytes 144 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p GraphicsPipelineCreateInfo{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO)-    pNext'' <- fmap castPtr . ContT $ withChain (next)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''-    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineCreateFlags)) (flags)-    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (stages)) :: Word32))-    pPStages' <- ContT $ allocaBytes @(PipelineShaderStageCreateInfo _) ((Data.Vector.length (stages)) * 48)-    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPStages' `plusPtr` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _))) (e) . ($ ())) (stages)-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _)))) (pPStages')-    pVertexInputState'' <- case (vertexInputState) of-      Nothing -> pure nullPtr-      Just j -> ContT @_ @_ @(Ptr (PipelineVertexInputStateCreateInfo '[])) $ \cont -> withSomeCStruct @PipelineVertexInputStateCreateInfo (j) (cont . castPtr)-    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr (PipelineVertexInputStateCreateInfo _)))) pVertexInputState''-    pInputAssemblyState'' <- case (inputAssemblyState) of-      Nothing -> pure nullPtr-      Just j -> ContT $ withCStruct (j)-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr PipelineInputAssemblyStateCreateInfo))) pInputAssemblyState''-    pTessellationState'' <- case (tessellationState) of-      Nothing -> pure nullPtr-      Just j -> ContT @_ @_ @(Ptr (PipelineTessellationStateCreateInfo '[])) $ \cont -> withSomeCStruct @PipelineTessellationStateCreateInfo (j) (cont . castPtr)-    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr (PipelineTessellationStateCreateInfo _)))) pTessellationState''-    pViewportState'' <- case (viewportState) of-      Nothing -> pure nullPtr-      Just j -> ContT @_ @_ @(Ptr (PipelineViewportStateCreateInfo '[])) $ \cont -> withSomeCStruct @PipelineViewportStateCreateInfo (j) (cont . castPtr)-    lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr (PipelineViewportStateCreateInfo _)))) pViewportState''-    pRasterizationState'' <- ContT @_ @_ @(Ptr (PipelineRasterizationStateCreateInfo '[])) $ \cont -> withSomeCStruct @PipelineRasterizationStateCreateInfo (rasterizationState) (cont . castPtr)-    lift $ poke ((p `plusPtr` 64 :: Ptr (Ptr (PipelineRasterizationStateCreateInfo _)))) pRasterizationState''-    pMultisampleState'' <- case (multisampleState) of-      Nothing -> pure nullPtr-      Just j -> ContT @_ @_ @(Ptr (PipelineMultisampleStateCreateInfo '[])) $ \cont -> withSomeCStruct @PipelineMultisampleStateCreateInfo (j) (cont . castPtr)-    lift $ poke ((p `plusPtr` 72 :: Ptr (Ptr (PipelineMultisampleStateCreateInfo _)))) pMultisampleState''-    pDepthStencilState'' <- case (depthStencilState) of-      Nothing -> pure nullPtr-      Just j -> ContT $ withCStruct (j)-    lift $ poke ((p `plusPtr` 80 :: Ptr (Ptr PipelineDepthStencilStateCreateInfo))) pDepthStencilState''-    pColorBlendState'' <- case (colorBlendState) of-      Nothing -> pure nullPtr-      Just j -> ContT @_ @_ @(Ptr (PipelineColorBlendStateCreateInfo '[])) $ \cont -> withSomeCStruct @PipelineColorBlendStateCreateInfo (j) (cont . castPtr)-    lift $ poke ((p `plusPtr` 88 :: Ptr (Ptr (PipelineColorBlendStateCreateInfo _)))) pColorBlendState''-    pDynamicState'' <- case (dynamicState) of-      Nothing -> pure nullPtr-      Just j -> ContT $ withCStruct (j)-    lift $ poke ((p `plusPtr` 96 :: Ptr (Ptr PipelineDynamicStateCreateInfo))) pDynamicState''-    lift $ poke ((p `plusPtr` 104 :: Ptr PipelineLayout)) (layout)-    lift $ poke ((p `plusPtr` 112 :: Ptr RenderPass)) (renderPass)-    lift $ poke ((p `plusPtr` 120 :: Ptr Word32)) (subpass)-    lift $ poke ((p `plusPtr` 128 :: Ptr Pipeline)) (basePipelineHandle)-    lift $ poke ((p `plusPtr` 136 :: Ptr Int32)) (basePipelineIndex)-    lift $ f-  cStructSize = 144-  cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO)-    pNext' <- fmap castPtr . ContT $ withZeroChain @es-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'-    pRasterizationState'' <- ContT @_ @_ @(Ptr (PipelineRasterizationStateCreateInfo '[])) $ \cont -> withSomeCStruct @PipelineRasterizationStateCreateInfo ((SomeStruct zero)) (cont . castPtr)-    lift $ poke ((p `plusPtr` 64 :: Ptr (Ptr (PipelineRasterizationStateCreateInfo _)))) pRasterizationState''-    lift $ poke ((p `plusPtr` 104 :: Ptr PipelineLayout)) (zero)-    lift $ poke ((p `plusPtr` 120 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 136 :: Ptr Int32)) (zero)-    lift $ f--instance (Extendss GraphicsPipelineCreateInfo es, PeekChain es) => FromCStruct (GraphicsPipelineCreateInfo es) where-  peekCStruct p = do-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))-    next <- peekChain (castPtr pNext)-    flags <- peek @PipelineCreateFlags ((p `plusPtr` 16 :: Ptr PipelineCreateFlags))-    stageCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))-    pStages <- peek @(Ptr (PipelineShaderStageCreateInfo _)) ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _))))-    pStages' <- generateM (fromIntegral stageCount) (\i -> peekSomeCStruct (forgetExtensions ((pStages `advancePtrBytes` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _)))))-    pVertexInputState <- peek @(Ptr (PipelineVertexInputStateCreateInfo _)) ((p `plusPtr` 32 :: Ptr (Ptr (PipelineVertexInputStateCreateInfo _))))-    pVertexInputState' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pVertexInputState-    pInputAssemblyState <- peek @(Ptr PipelineInputAssemblyStateCreateInfo) ((p `plusPtr` 40 :: Ptr (Ptr PipelineInputAssemblyStateCreateInfo)))-    pInputAssemblyState' <- maybePeek (\j -> peekCStruct @PipelineInputAssemblyStateCreateInfo (j)) pInputAssemblyState-    pTessellationState <- peek @(Ptr (PipelineTessellationStateCreateInfo _)) ((p `plusPtr` 48 :: Ptr (Ptr (PipelineTessellationStateCreateInfo _))))-    pTessellationState' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pTessellationState-    pViewportState <- peek @(Ptr (PipelineViewportStateCreateInfo _)) ((p `plusPtr` 56 :: Ptr (Ptr (PipelineViewportStateCreateInfo _))))-    pViewportState' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pViewportState-    pRasterizationState <- peekSomeCStruct . forgetExtensions =<< peek ((p `plusPtr` 64 :: Ptr (Ptr (PipelineRasterizationStateCreateInfo _))))-    pMultisampleState <- peek @(Ptr (PipelineMultisampleStateCreateInfo _)) ((p `plusPtr` 72 :: Ptr (Ptr (PipelineMultisampleStateCreateInfo _))))-    pMultisampleState' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pMultisampleState-    pDepthStencilState <- peek @(Ptr PipelineDepthStencilStateCreateInfo) ((p `plusPtr` 80 :: Ptr (Ptr PipelineDepthStencilStateCreateInfo)))-    pDepthStencilState' <- maybePeek (\j -> peekCStruct @PipelineDepthStencilStateCreateInfo (j)) pDepthStencilState-    pColorBlendState <- peek @(Ptr (PipelineColorBlendStateCreateInfo _)) ((p `plusPtr` 88 :: Ptr (Ptr (PipelineColorBlendStateCreateInfo _))))-    pColorBlendState' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pColorBlendState-    pDynamicState <- peek @(Ptr PipelineDynamicStateCreateInfo) ((p `plusPtr` 96 :: Ptr (Ptr PipelineDynamicStateCreateInfo)))-    pDynamicState' <- maybePeek (\j -> peekCStruct @PipelineDynamicStateCreateInfo (j)) pDynamicState-    layout <- peek @PipelineLayout ((p `plusPtr` 104 :: Ptr PipelineLayout))-    renderPass <- peek @RenderPass ((p `plusPtr` 112 :: Ptr RenderPass))-    subpass <- peek @Word32 ((p `plusPtr` 120 :: Ptr Word32))-    basePipelineHandle <- peek @Pipeline ((p `plusPtr` 128 :: Ptr Pipeline))-    basePipelineIndex <- peek @Int32 ((p `plusPtr` 136 :: Ptr Int32))-    pure $ GraphicsPipelineCreateInfo-             next flags pStages' pVertexInputState' pInputAssemblyState' pTessellationState' pViewportState' pRasterizationState pMultisampleState' pDepthStencilState' pColorBlendState' pDynamicState' layout renderPass subpass basePipelineHandle basePipelineIndex--instance es ~ '[] => Zero (GraphicsPipelineCreateInfo es) where-  zero = GraphicsPipelineCreateInfo-           ()-           zero-           mempty-           Nothing-           Nothing-           Nothing-           Nothing-           (SomeStruct zero)+                               , PipelineDynamicStateCreateFlags(..)+                               , PipelineMultisampleStateCreateFlags(..)+                               , PipelineRasterizationStateCreateFlags(..)+                               , PipelineViewportStateCreateFlags(..)+                               , PipelineTessellationStateCreateFlags(..)+                               , PipelineInputAssemblyStateCreateFlags(..)+                               , PipelineVertexInputStateCreateFlags(..)+                               , PrimitiveTopology(..)+                               , CompareOp(..)+                               , PolygonMode(..)+                               , FrontFace(..)+                               , BlendFactor(..)+                               , BlendOp(..)+                               , StencilOp(..)+                               , LogicOp(..)+                               , VertexInputRate(..)+                               , DynamicState(..)+                               , CullModeFlagBits(..)+                               , CullModeFlags+                               , ShaderStageFlagBits(..)+                               , ShaderStageFlags+                               , PipelineCreateFlagBits(..)+                               , PipelineCreateFlags+                               , PipelineShaderStageCreateFlagBits(..)+                               , PipelineShaderStageCreateFlags+                               , ColorComponentFlagBits(..)+                               , ColorComponentFlags+                               , PipelineLayoutCreateFlagBits(..)+                               , PipelineLayoutCreateFlags+                               , PipelineColorBlendStateCreateFlagBits(..)+                               , PipelineColorBlendStateCreateFlags+                               , PipelineDepthStencilStateCreateFlagBits(..)+                               , PipelineDepthStencilStateCreateFlags+                               , SampleMask+                               ) where++import Vulkan.CStruct.Utils (FixedArray)+import Vulkan.Internal.Utils (traceAroundEvent)+import Control.Exception.Base (bracket)+import Control.Monad (unless)+import Control.Monad.IO.Class (liftIO)+import Data.Foldable (traverse_)+import Data.Typeable (eqT)+import Foreign.Marshal.Alloc (allocaBytes)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import Foreign.Marshal.Utils (maybePeek)+import GHC.Base (when)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import GHC.Ptr (nullFunPtr)+import Foreign.Ptr (nullPtr)+import qualified Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Data.ByteString (packCString)+import Data.ByteString (useAsCString)+import Data.Coerce (coerce)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import qualified Data.Vector (null)+import Vulkan.CStruct (FromCStruct)+import Vulkan.CStruct (FromCStruct(..))+import Vulkan.CStruct (ToCStruct)+import Vulkan.CStruct (ToCStruct(..))+import Vulkan.Zero (Zero(..))+import Control.Monad.IO.Class (MonadIO)+import Data.Type.Equality ((:~:)(Refl))+import Data.Typeable (Typeable)+import Foreign.C.Types (CChar)+import Foreign.C.Types (CFloat)+import Foreign.C.Types (CFloat(..))+import Foreign.C.Types (CFloat(CFloat))+import Foreign.C.Types (CSize)+import Foreign.C.Types (CSize(..))+import Foreign.C.Types (CSize(CSize))+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import GHC.Generics (Generic)+import GHC.IO.Exception (IOErrorType(..))+import GHC.IO.Exception (IOException(..))+import Data.Int (Int32)+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Word (Word64)+import Data.ByteString (ByteString)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Vulkan.CStruct.Utils (advancePtrBytes)+import Vulkan.Core10.FundamentalTypes (bool32ToBool)+import Vulkan.Core10.FundamentalTypes (boolToBool32)+import Vulkan.CStruct.Extends (forgetExtensions)+import Vulkan.CStruct.Utils (lowerArrayPtr)+import Vulkan.CStruct.Extends (peekSomeCStruct)+import Vulkan.CStruct.Extends (pokeSomeCStruct)+import Vulkan.CStruct.Extends (withSomeCStruct)+import Vulkan.NamedType ((:::))+import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering (AttachmentSampleCountInfoAMD)+import Vulkan.Core10.Enums.BlendFactor (BlendFactor)+import Vulkan.Core10.Enums.BlendOp (BlendOp)+import Vulkan.Core10.FundamentalTypes (Bool32)+import Vulkan.CStruct.Extends (Chain)+import Vulkan.Core10.Enums.ColorComponentFlagBits (ColorComponentFlags)+import Vulkan.Core10.Enums.CompareOp (CompareOp)+import Vulkan.Core10.Enums.CullModeFlagBits (CullModeFlags)+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsObjectNameInfoEXT)+import Vulkan.Core10.Handles (Device)+import Vulkan.Core10.Handles (Device(..))+import Vulkan.Core10.Handles (Device(Device))+import Vulkan.Dynamic (DeviceCmds(pVkCreateComputePipelines))+import Vulkan.Dynamic (DeviceCmds(pVkCreateGraphicsPipelines))+import Vulkan.Dynamic (DeviceCmds(pVkDestroyPipeline))+import Vulkan.Core10.Handles (Device_T)+import Vulkan.Core10.Enums.DynamicState (DynamicState)+import Vulkan.CStruct.Extends (Extends)+import Vulkan.CStruct.Extends (Extendss)+import Vulkan.CStruct.Extends (Extensible(..))+import Vulkan.Core10.Enums.Format (Format)+import Vulkan.Core10.Enums.FrontFace (FrontFace)+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_graphics_pipeline_library (GraphicsPipelineLibraryCreateInfoEXT)+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (GraphicsPipelineShaderGroupsCreateInfoNV)+import Vulkan.Core10.Enums.LogicOp (LogicOp)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering (MultiviewPerViewAttributesInfoNVX)+import Vulkan.CStruct.Extends (PeekChain)+import Vulkan.CStruct.Extends (PeekChain(..))+import Vulkan.Core10.Handles (Pipeline)+import Vulkan.Core10.Handles (Pipeline(..))+import Vulkan.Core10.Handles (PipelineCache)+import Vulkan.Core10.Handles (PipelineCache(..))+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_blend_operation_advanced (PipelineColorBlendAdvancedStateCreateInfoEXT)+import Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlagBits (PipelineColorBlendStateCreateFlags)+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_color_write_enable (PipelineColorWriteCreateInfoEXT)+import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_pipeline_compiler_control (PipelineCompilerControlCreateInfoAMD)+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_framebuffer_mixed_samples (PipelineCoverageModulationStateCreateInfoNV)+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_coverage_reduction_mode (PipelineCoverageReductionStateCreateInfoNV)+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_fragment_coverage_to_color (PipelineCoverageToColorStateCreateInfoNV)+import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback (PipelineCreationFeedbackCreateInfo)+import Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits (PipelineDepthStencilStateCreateFlags)+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_discard_rectangles (PipelineDiscardRectangleStateCreateInfoEXT)+import Vulkan.Core10.Enums.PipelineDynamicStateCreateFlags (PipelineDynamicStateCreateFlags)+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_fragment_shading_rate_enums (PipelineFragmentShadingRateEnumStateCreateInfoNV)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_fragment_shading_rate (PipelineFragmentShadingRateStateCreateInfoKHR)+import Vulkan.Core10.Enums.PipelineInputAssemblyStateCreateFlags (PipelineInputAssemblyStateCreateFlags)+import Vulkan.Core10.Handles (PipelineLayout)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_library (PipelineLibraryCreateInfoKHR)+import Vulkan.Core10.Enums.PipelineMultisampleStateCreateFlags (PipelineMultisampleStateCreateFlags)+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_conservative_rasterization (PipelineRasterizationConservativeStateCreateInfoEXT)+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clip_enable (PipelineRasterizationDepthClipStateCreateInfoEXT)+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_line_rasterization (PipelineRasterizationLineStateCreateInfoEXT)+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_provoking_vertex (PipelineRasterizationProvokingVertexStateCreateInfoEXT)+import Vulkan.Core10.Enums.PipelineRasterizationStateCreateFlags (PipelineRasterizationStateCreateFlags)+import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_rasterization_order (PipelineRasterizationStateRasterizationOrderAMD)+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_transform_feedback (PipelineRasterizationStateStreamCreateInfoEXT)+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering (PipelineRenderingCreateInfo)+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_representative_fragment_test (PipelineRepresentativeFragmentTestStateCreateInfoNV)+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (PipelineSampleLocationsStateCreateInfoEXT)+import Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits (PipelineShaderStageCreateFlags)+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control (PipelineShaderStageRequiredSubgroupSizeCreateInfo)+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_maintenance2 (PipelineTessellationDomainOriginStateCreateInfo)+import Vulkan.Core10.Enums.PipelineTessellationStateCreateFlags (PipelineTessellationStateCreateFlags)+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_vertex_attribute_divisor (PipelineVertexInputDivisorStateCreateInfoEXT)+import Vulkan.Core10.Enums.PipelineVertexInputStateCreateFlags (PipelineVertexInputStateCreateFlags)+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shading_rate_image (PipelineViewportCoarseSampleOrderStateCreateInfoNV)+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clip_control (PipelineViewportDepthClipControlCreateInfoEXT)+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_scissor_exclusive (PipelineViewportExclusiveScissorStateCreateInfoNV)+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shading_rate_image (PipelineViewportShadingRateImageStateCreateInfoNV)+import Vulkan.Core10.Enums.PipelineViewportStateCreateFlags (PipelineViewportStateCreateFlags)+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_viewport_swizzle (PipelineViewportSwizzleStateCreateInfoNV)+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_clip_space_w_scaling (PipelineViewportWScalingStateCreateInfoNV)+import Vulkan.CStruct.Extends (PokeChain)+import Vulkan.CStruct.Extends (PokeChain(..))+import Vulkan.Core10.Enums.PolygonMode (PolygonMode)+import Vulkan.Core10.Enums.PrimitiveTopology (PrimitiveTopology)+import Vulkan.Core10.FundamentalTypes (Rect2D)+import Vulkan.Core10.Handles (RenderPass)+import Vulkan.Core10.Enums.Result (Result)+import Vulkan.Core10.Enums.Result (Result(..))+import Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits)+import Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits(SampleCountFlagBits))+import Vulkan.Core10.FundamentalTypes (SampleMask)+import Vulkan.Core10.Handles (ShaderModule)+import {-# SOURCE #-} Vulkan.Core10.Shader (ShaderModuleCreateInfo)+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits)+import Vulkan.CStruct.Extends (SomeStruct)+import Vulkan.CStruct.Extends (SomeStruct(..))+import Vulkan.Core10.Enums.StencilOp (StencilOp)+import Vulkan.Core10.Enums.StructureType (StructureType)+import {-# SOURCE #-} Vulkan.Extensions.VK_HUAWEI_subpass_shading (SubpassShadingPipelineCreateInfoHUAWEI)+import Vulkan.Core10.Enums.VertexInputRate (VertexInputRate)+import Vulkan.Exception (VulkanException(..))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO))+import Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Vulkan.Core10.Enums.BlendFactor (BlendFactor(..))+import Vulkan.Core10.Enums.BlendOp (BlendOp(..))+import Vulkan.Core10.Enums.ColorComponentFlagBits (ColorComponentFlagBits(..))+import Vulkan.Core10.Enums.ColorComponentFlagBits (ColorComponentFlags)+import Vulkan.Core10.Enums.CompareOp (CompareOp(..))+import Vulkan.Core10.Enums.CullModeFlagBits (CullModeFlagBits(..))+import Vulkan.Core10.Enums.CullModeFlagBits (CullModeFlags)+import Vulkan.Core10.Enums.DynamicState (DynamicState(..))+import Vulkan.Core10.Enums.FrontFace (FrontFace(..))+import Vulkan.Core10.Enums.LogicOp (LogicOp(..))+import Vulkan.Core10.Handles (Pipeline(..))+import Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlagBits (PipelineColorBlendStateCreateFlagBits(..))+import Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlagBits (PipelineColorBlendStateCreateFlags)+import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlagBits(..))+import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)+import Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits (PipelineDepthStencilStateCreateFlagBits(..))+import Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits (PipelineDepthStencilStateCreateFlags)+import Vulkan.Core10.Enums.PipelineDynamicStateCreateFlags (PipelineDynamicStateCreateFlags(..))+import Vulkan.Core10.Enums.PipelineInputAssemblyStateCreateFlags (PipelineInputAssemblyStateCreateFlags(..))+import Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits (PipelineLayoutCreateFlagBits(..))+import Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits (PipelineLayoutCreateFlags)+import Vulkan.Core10.Enums.PipelineMultisampleStateCreateFlags (PipelineMultisampleStateCreateFlags(..))+import Vulkan.Core10.Enums.PipelineRasterizationStateCreateFlags (PipelineRasterizationStateCreateFlags(..))+import Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits (PipelineShaderStageCreateFlagBits(..))+import Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits (PipelineShaderStageCreateFlags)+import Vulkan.Core10.Enums.PipelineTessellationStateCreateFlags (PipelineTessellationStateCreateFlags(..))+import Vulkan.Core10.Enums.PipelineVertexInputStateCreateFlags (PipelineVertexInputStateCreateFlags(..))+import Vulkan.Core10.Enums.PipelineViewportStateCreateFlags (PipelineViewportStateCreateFlags(..))+import Vulkan.Core10.Enums.PolygonMode (PolygonMode(..))+import Vulkan.Core10.Enums.PrimitiveTopology (PrimitiveTopology(..))+import Vulkan.Core10.FundamentalTypes (SampleMask)+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(..))+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)+import Vulkan.Core10.Enums.StencilOp (StencilOp(..))+import Vulkan.Core10.Enums.VertexInputRate (VertexInputRate(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCreateGraphicsPipelines+  :: FunPtr (Ptr Device_T -> PipelineCache -> Word32 -> Ptr (SomeStruct GraphicsPipelineCreateInfo) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result) -> Ptr Device_T -> PipelineCache -> Word32 -> Ptr (SomeStruct GraphicsPipelineCreateInfo) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result++-- | vkCreateGraphicsPipelines - Create graphics pipelines+--+-- = Description+--+-- The 'GraphicsPipelineCreateInfo' structure includes an array of+-- 'PipelineShaderStageCreateInfo' structures for each of the desired+-- active shader stages, as well as creation information for all relevant+-- fixed-function stages, and a pipeline layout.+--+-- == Valid Usage+--+-- -   #VUID-vkCreateGraphicsPipelines-flags-00720# If the @flags@ member+--     of any element of @pCreateInfos@ contains the+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+--     flag, and the @basePipelineIndex@ member of that same element is not+--     @-1@, @basePipelineIndex@ /must/ be less than the index into+--     @pCreateInfos@ that corresponds to that element+--+-- -   #VUID-vkCreateGraphicsPipelines-flags-00721# If the @flags@ member+--     of any element of @pCreateInfos@ contains the+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+--     flag, the base pipeline /must/ have been created with the+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT'+--     flag set+--+-- -   #VUID-vkCreateGraphicsPipelines-pipelineCache-02876# If+--     @pipelineCache@ was created with+--     'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT',+--     host access to @pipelineCache@ /must/ be+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>+--+-- Note+--+-- An implicit cache may be provided by the implementation or a layer. For+-- this reason, it is still valid to set+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT'+-- on @flags@ for any element of @pCreateInfos@ while passing+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE' for @pipelineCache@.+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCreateGraphicsPipelines-device-parameter# @device@ /must/ be+--     a valid 'Vulkan.Core10.Handles.Device' handle+--+-- -   #VUID-vkCreateGraphicsPipelines-pipelineCache-parameter# If+--     @pipelineCache@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @pipelineCache@ /must/ be a valid+--     'Vulkan.Core10.Handles.PipelineCache' handle+--+-- -   #VUID-vkCreateGraphicsPipelines-pCreateInfos-parameter#+--     @pCreateInfos@ /must/ be a valid pointer to an array of+--     @createInfoCount@ valid 'GraphicsPipelineCreateInfo' structures+--+-- -   #VUID-vkCreateGraphicsPipelines-pAllocator-parameter# If+--     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer+--     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+--     structure+--+-- -   #VUID-vkCreateGraphicsPipelines-pPipelines-parameter# @pPipelines@+--     /must/ be a valid pointer to an array of @createInfoCount@+--     'Vulkan.Core10.Handles.Pipeline' handles+--+-- -   #VUID-vkCreateGraphicsPipelines-createInfoCount-arraylength#+--     @createInfoCount@ /must/ be greater than @0@+--+-- -   #VUID-vkCreateGraphicsPipelines-pipelineCache-parent# If+--     @pipelineCache@ is a valid handle, it /must/ have been created,+--     allocated, or retrieved from @device@+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'+--+--     -   'Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control.PIPELINE_COMPILE_REQUIRED_EXT'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_SHADER_NV'+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Vulkan.Core10.Handles.Device', 'GraphicsPipelineCreateInfo',+-- 'Vulkan.Core10.Handles.Pipeline', 'Vulkan.Core10.Handles.PipelineCache'+createGraphicsPipelines :: forall io+                         . (MonadIO io)+                        => -- | @device@ is the logical device that creates the graphics pipelines.+                           Device+                        -> -- | @pipelineCache@ is either 'Vulkan.Core10.APIConstants.NULL_HANDLE',+                           -- indicating that pipeline caching is disabled; or the handle of a valid+                           -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-cache pipeline cache>+                           -- object, in which case use of that cache is enabled for the duration of+                           -- the command.+                           PipelineCache+                        -> -- | @pCreateInfos@ is a pointer to an array of 'GraphicsPipelineCreateInfo'+                           -- structures.+                           ("createInfos" ::: Vector (SomeStruct GraphicsPipelineCreateInfo))+                        -> -- | @pAllocator@ controls host memory allocation as described in the+                           -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>+                           -- chapter.+                           ("allocator" ::: Maybe AllocationCallbacks)+                        -> io (Result, ("pipelines" ::: Vector Pipeline))+createGraphicsPipelines device pipelineCache createInfos allocator = liftIO . evalContT $ do+  let vkCreateGraphicsPipelinesPtr = pVkCreateGraphicsPipelines (case device of Device{deviceCmds} -> deviceCmds)+  lift $ unless (vkCreateGraphicsPipelinesPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateGraphicsPipelines is null" Nothing Nothing+  let vkCreateGraphicsPipelines' = mkVkCreateGraphicsPipelines vkCreateGraphicsPipelinesPtr+  pPCreateInfos <- ContT $ allocaBytes @(GraphicsPipelineCreateInfo _) ((Data.Vector.length (createInfos)) * 144)+  Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPCreateInfos `plusPtr` (144 * (i)) :: Ptr (GraphicsPipelineCreateInfo _))) (e) . ($ ())) (createInfos)+  pAllocator <- case (allocator) of+    Nothing -> pure nullPtr+    Just j -> ContT $ withCStruct (j)+  pPPipelines <- ContT $ bracket (callocBytes @Pipeline ((fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) * 8)) free+  r <- lift $ traceAroundEvent "vkCreateGraphicsPipelines" (vkCreateGraphicsPipelines' (deviceHandle (device)) (pipelineCache) ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32)) (forgetExtensions (pPCreateInfos)) pAllocator (pPPipelines))+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))+  pPipelines <- lift $ generateM (fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) (\i -> peek @Pipeline ((pPPipelines `advancePtrBytes` (8 * (i)) :: Ptr Pipeline)))+  pure $ (r, pPipelines)++-- | A convenience wrapper to make a compatible pair of calls to+-- 'createGraphicsPipelines' and 'destroyPipeline'+--+-- To ensure that 'destroyPipeline' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the last argument.+-- To just extract the pair pass '(,)' as the last argument.+--+withGraphicsPipelines :: forall io r . MonadIO io => Device -> PipelineCache -> Vector (SomeStruct GraphicsPipelineCreateInfo) -> Maybe AllocationCallbacks -> (io (Result, Vector Pipeline) -> ((Result, Vector Pipeline) -> io ()) -> r) -> r+withGraphicsPipelines device pipelineCache pCreateInfos pAllocator b =+  b (createGraphicsPipelines device pipelineCache pCreateInfos pAllocator)+    (\(_, o1) -> traverse_ (\o1Elem -> destroyPipeline device o1Elem pAllocator) o1)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCreateComputePipelines+  :: FunPtr (Ptr Device_T -> PipelineCache -> Word32 -> Ptr (SomeStruct ComputePipelineCreateInfo) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result) -> Ptr Device_T -> PipelineCache -> Word32 -> Ptr (SomeStruct ComputePipelineCreateInfo) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result++-- | vkCreateComputePipelines - Creates a new compute pipeline object+--+-- == Valid Usage+--+-- -   #VUID-vkCreateComputePipelines-flags-00695# If the @flags@ member of+--     any element of @pCreateInfos@ contains the+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+--     flag, and the @basePipelineIndex@ member of that same element is not+--     @-1@, @basePipelineIndex@ /must/ be less than the index into+--     @pCreateInfos@ that corresponds to that element+--+-- -   #VUID-vkCreateComputePipelines-flags-00696# If the @flags@ member of+--     any element of @pCreateInfos@ contains the+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+--     flag, the base pipeline /must/ have been created with the+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT'+--     flag set+--+-- -   #VUID-vkCreateComputePipelines-pipelineCache-02873# If+--     @pipelineCache@ was created with+--     'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT',+--     host access to @pipelineCache@ /must/ be+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCreateComputePipelines-device-parameter# @device@ /must/ be+--     a valid 'Vulkan.Core10.Handles.Device' handle+--+-- -   #VUID-vkCreateComputePipelines-pipelineCache-parameter# If+--     @pipelineCache@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @pipelineCache@ /must/ be a valid+--     'Vulkan.Core10.Handles.PipelineCache' handle+--+-- -   #VUID-vkCreateComputePipelines-pCreateInfos-parameter#+--     @pCreateInfos@ /must/ be a valid pointer to an array of+--     @createInfoCount@ valid 'ComputePipelineCreateInfo' structures+--+-- -   #VUID-vkCreateComputePipelines-pAllocator-parameter# If @pAllocator@+--     is not @NULL@, @pAllocator@ /must/ be a valid pointer to a valid+--     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' structure+--+-- -   #VUID-vkCreateComputePipelines-pPipelines-parameter# @pPipelines@+--     /must/ be a valid pointer to an array of @createInfoCount@+--     'Vulkan.Core10.Handles.Pipeline' handles+--+-- -   #VUID-vkCreateComputePipelines-createInfoCount-arraylength#+--     @createInfoCount@ /must/ be greater than @0@+--+-- -   #VUID-vkCreateComputePipelines-pipelineCache-parent# If+--     @pipelineCache@ is a valid handle, it /must/ have been created,+--     allocated, or retrieved from @device@+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'+--+--     -   'Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control.PIPELINE_COMPILE_REQUIRED_EXT'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_SHADER_NV'+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'ComputePipelineCreateInfo', 'Vulkan.Core10.Handles.Device',+-- 'Vulkan.Core10.Handles.Pipeline', 'Vulkan.Core10.Handles.PipelineCache'+createComputePipelines :: forall io+                        . (MonadIO io)+                       => -- | @device@ is the logical device that creates the compute pipelines.+                          Device+                       -> -- | @pipelineCache@ is either 'Vulkan.Core10.APIConstants.NULL_HANDLE',+                          -- indicating that pipeline caching is disabled; or the handle of a valid+                          -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-cache pipeline cache>+                          -- object, in which case use of that cache is enabled for the duration of+                          -- the command.+                          PipelineCache+                       -> -- | @pCreateInfos@ is a pointer to an array of 'ComputePipelineCreateInfo'+                          -- structures.+                          ("createInfos" ::: Vector (SomeStruct ComputePipelineCreateInfo))+                       -> -- | @pAllocator@ controls host memory allocation as described in the+                          -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>+                          -- chapter.+                          ("allocator" ::: Maybe AllocationCallbacks)+                       -> io (Result, ("pipelines" ::: Vector Pipeline))+createComputePipelines device pipelineCache createInfos allocator = liftIO . evalContT $ do+  let vkCreateComputePipelinesPtr = pVkCreateComputePipelines (case device of Device{deviceCmds} -> deviceCmds)+  lift $ unless (vkCreateComputePipelinesPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateComputePipelines is null" Nothing Nothing+  let vkCreateComputePipelines' = mkVkCreateComputePipelines vkCreateComputePipelinesPtr+  pPCreateInfos <- ContT $ allocaBytes @(ComputePipelineCreateInfo _) ((Data.Vector.length (createInfos)) * 96)+  Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPCreateInfos `plusPtr` (96 * (i)) :: Ptr (ComputePipelineCreateInfo _))) (e) . ($ ())) (createInfos)+  pAllocator <- case (allocator) of+    Nothing -> pure nullPtr+    Just j -> ContT $ withCStruct (j)+  pPPipelines <- ContT $ bracket (callocBytes @Pipeline ((fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) * 8)) free+  r <- lift $ traceAroundEvent "vkCreateComputePipelines" (vkCreateComputePipelines' (deviceHandle (device)) (pipelineCache) ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32)) (forgetExtensions (pPCreateInfos)) pAllocator (pPPipelines))+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))+  pPipelines <- lift $ generateM (fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) (\i -> peek @Pipeline ((pPPipelines `advancePtrBytes` (8 * (i)) :: Ptr Pipeline)))+  pure $ (r, pPipelines)++-- | A convenience wrapper to make a compatible pair of calls to+-- 'createComputePipelines' and 'destroyPipeline'+--+-- To ensure that 'destroyPipeline' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the last argument.+-- To just extract the pair pass '(,)' as the last argument.+--+withComputePipelines :: forall io r . MonadIO io => Device -> PipelineCache -> Vector (SomeStruct ComputePipelineCreateInfo) -> Maybe AllocationCallbacks -> (io (Result, Vector Pipeline) -> ((Result, Vector Pipeline) -> io ()) -> r) -> r+withComputePipelines device pipelineCache pCreateInfos pAllocator b =+  b (createComputePipelines device pipelineCache pCreateInfos pAllocator)+    (\(_, o1) -> traverse_ (\o1Elem -> destroyPipeline device o1Elem pAllocator) o1)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkDestroyPipeline+  :: FunPtr (Ptr Device_T -> Pipeline -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> Pipeline -> Ptr AllocationCallbacks -> IO ()++-- | vkDestroyPipeline - Destroy a pipeline object+--+-- == Valid Usage+--+-- -   #VUID-vkDestroyPipeline-pipeline-00765# All submitted commands that+--     refer to @pipeline@ /must/ have completed execution+--+-- -   #VUID-vkDestroyPipeline-pipeline-00766# If+--     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were+--     provided when @pipeline@ was created, a compatible set of callbacks+--     /must/ be provided here+--+-- -   #VUID-vkDestroyPipeline-pipeline-00767# If no+--     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were+--     provided when @pipeline@ was created, @pAllocator@ /must/ be @NULL@+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkDestroyPipeline-device-parameter# @device@ /must/ be a valid+--     'Vulkan.Core10.Handles.Device' handle+--+-- -   #VUID-vkDestroyPipeline-pipeline-parameter# If @pipeline@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @pipeline@ /must/ be a+--     valid 'Vulkan.Core10.Handles.Pipeline' handle+--+-- -   #VUID-vkDestroyPipeline-pAllocator-parameter# If @pAllocator@ is not+--     @NULL@, @pAllocator@ /must/ be a valid pointer to a valid+--     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' structure+--+-- -   #VUID-vkDestroyPipeline-pipeline-parent# If @pipeline@ is a valid+--     handle, it /must/ have been created, allocated, or retrieved from+--     @device@+--+-- == Host Synchronization+--+-- -   Host access to @pipeline@ /must/ be externally synchronized+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.Pipeline'+destroyPipeline :: forall io+                 . (MonadIO io)+                => -- | @device@ is the logical device that destroys the pipeline.+                   Device+                -> -- | @pipeline@ is the handle of the pipeline to destroy.+                   Pipeline+                -> -- | @pAllocator@ controls host memory allocation as described in the+                   -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>+                   -- chapter.+                   ("allocator" ::: Maybe AllocationCallbacks)+                -> io ()+destroyPipeline device pipeline allocator = liftIO . evalContT $ do+  let vkDestroyPipelinePtr = pVkDestroyPipeline (case device of Device{deviceCmds} -> deviceCmds)+  lift $ unless (vkDestroyPipelinePtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkDestroyPipeline is null" Nothing Nothing+  let vkDestroyPipeline' = mkVkDestroyPipeline vkDestroyPipelinePtr+  pAllocator <- case (allocator) of+    Nothing -> pure nullPtr+    Just j -> ContT $ withCStruct (j)+  lift $ traceAroundEvent "vkDestroyPipeline" (vkDestroyPipeline' (deviceHandle (device)) (pipeline) pAllocator)+  pure $ ()+++-- | VkViewport - Structure specifying a viewport+--+-- = Description+--+-- Note+--+-- Despite their names, @minDepth@ /can/ be less than, equal to, or greater+-- than @maxDepth@.+--+-- The framebuffer depth coordinate @z@f /may/ be represented using either+-- a fixed-point or floating-point representation. However, a+-- floating-point representation /must/ be used if the depth\/stencil+-- attachment has a floating-point depth component. If an m-bit fixed-point+-- representation is used, we assume that it represents each value+-- \(\frac{k}{2^m - 1}\), where k ∈ { 0, 1, …​, 2m-1 }, as k (e.g. 1.0 is+-- represented in binary as a string of all ones).+--+-- The viewport parameters shown in the above equations are found from+-- these values as+--+-- -   ox = @x@ + @width@ \/ 2+--+-- -   oy = @y@ + @height@ \/ 2+--+-- -   oz = @minDepth@+--+-- -   px = @width@+--+-- -   py = @height@+--+-- -   pz = @maxDepth@ - @minDepth@.+--+-- If a render pass transform is enabled, the values (px,py) and (ox, oy)+-- defining the viewport are transformed as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#vertexpostproc-renderpass-transform render pass transform>+-- before participating in the viewport transform.+--+-- The application /can/ specify a negative term for @height@, which has+-- the effect of negating the y coordinate in clip space before performing+-- the transform. When using a negative @height@, the application /should/+-- also adjust the @y@ value to point to the lower left corner of the+-- viewport instead of the upper left corner. Using the negative @height@+-- allows the application to avoid having to negate the y component of the+-- @Position@ output from the last+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>.+--+-- The width and height of the+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxViewportDimensions implementation-dependent maximum viewport dimensions>+-- /must/ be greater than or equal to the width and height of the largest+-- image which /can/ be created and attached to a framebuffer.+--+-- The floating-point viewport bounds are represented with an+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-viewportSubPixelBits implementation-dependent precision>.+--+-- == Valid Usage+--+-- -   #VUID-VkViewport-width-01770# @width@ /must/ be greater than @0.0@+--+-- -   #VUID-VkViewport-width-01771# @width@ /must/ be less than or equal+--     to+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewportDimensions@[0]+--+-- -   #VUID-VkViewport-height-01773# The absolute value of @height@ /must/+--     be less than or equal to+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewportDimensions@[1]+--+-- -   #VUID-VkViewport-x-01774# @x@ /must/ be greater than or equal to+--     @viewportBoundsRange@[0]+--+-- -   #VUID-VkViewport-x-01232# (@x@ + @width@) /must/ be less than or+--     equal to @viewportBoundsRange@[1]+--+-- -   #VUID-VkViewport-y-01775# @y@ /must/ be greater than or equal to+--     @viewportBoundsRange@[0]+--+-- -   #VUID-VkViewport-y-01776# @y@ /must/ be less than or equal to+--     @viewportBoundsRange@[1]+--+-- -   #VUID-VkViewport-y-01777# (@y@ + @height@) /must/ be greater than or+--     equal to @viewportBoundsRange@[0]+--+-- -   #VUID-VkViewport-y-01233# (@y@ + @height@) /must/ be less than or+--     equal to @viewportBoundsRange@[1]+--+-- -   #VUID-VkViewport-minDepth-01234# Unless+--     @VK_EXT_depth_range_unrestricted@ extension is enabled @minDepth@+--     /must/ be between @0.0@ and @1.0@, inclusive+--+-- -   #VUID-VkViewport-maxDepth-01235# Unless+--     @VK_EXT_depth_range_unrestricted@ extension is enabled @maxDepth@+--     /must/ be between @0.0@ and @1.0@, inclusive+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',+-- 'PipelineViewportStateCreateInfo',+-- 'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport',+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount',+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+data Viewport = Viewport+  { -- | @x@ and @y@ are the viewport’s upper left corner (x,y).+    x :: Float+  , -- No documentation found for Nested "VkViewport" "y"+    y :: Float+  , -- | @width@ and @height@ are the viewport’s width and height, respectively.+    width :: Float+  , -- No documentation found for Nested "VkViewport" "height"+    height :: Float+  , -- | @minDepth@ and @maxDepth@ are the depth range for the viewport.+    minDepth :: Float+  , -- No documentation found for Nested "VkViewport" "maxDepth"+    maxDepth :: Float+  }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (Viewport)+#endif+deriving instance Show Viewport++instance ToCStruct Viewport where+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p Viewport{..} f = do+    poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (x))+    poke ((p `plusPtr` 4 :: Ptr CFloat)) (CFloat (y))+    poke ((p `plusPtr` 8 :: Ptr CFloat)) (CFloat (width))+    poke ((p `plusPtr` 12 :: Ptr CFloat)) (CFloat (height))+    poke ((p `plusPtr` 16 :: Ptr CFloat)) (CFloat (minDepth))+    poke ((p `plusPtr` 20 :: Ptr CFloat)) (CFloat (maxDepth))+    f+  cStructSize = 24+  cStructAlignment = 4+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (zero))+    poke ((p `plusPtr` 4 :: Ptr CFloat)) (CFloat (zero))+    poke ((p `plusPtr` 8 :: Ptr CFloat)) (CFloat (zero))+    poke ((p `plusPtr` 12 :: Ptr CFloat)) (CFloat (zero))+    poke ((p `plusPtr` 16 :: Ptr CFloat)) (CFloat (zero))+    poke ((p `plusPtr` 20 :: Ptr CFloat)) (CFloat (zero))+    f++instance FromCStruct Viewport where+  peekCStruct p = do+    x <- peek @CFloat ((p `plusPtr` 0 :: Ptr CFloat))+    y <- peek @CFloat ((p `plusPtr` 4 :: Ptr CFloat))+    width <- peek @CFloat ((p `plusPtr` 8 :: Ptr CFloat))+    height <- peek @CFloat ((p `plusPtr` 12 :: Ptr CFloat))+    minDepth <- peek @CFloat ((p `plusPtr` 16 :: Ptr CFloat))+    maxDepth <- peek @CFloat ((p `plusPtr` 20 :: Ptr CFloat))+    pure $ Viewport+             (coerce @CFloat @Float x) (coerce @CFloat @Float y) (coerce @CFloat @Float width) (coerce @CFloat @Float height) (coerce @CFloat @Float minDepth) (coerce @CFloat @Float maxDepth)++instance Storable Viewport where+  sizeOf ~_ = 24+  alignment ~_ = 4+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero Viewport where+  zero = Viewport+           zero+           zero+           zero+           zero+           zero+           zero+++-- | VkSpecializationMapEntry - Structure specifying a specialization map+-- entry+--+-- = Description+--+-- If a @constantID@ value is not a specialization constant ID used in the+-- shader, that map entry does not affect the behavior of the pipeline.+--+-- == Valid Usage+--+-- -   #VUID-VkSpecializationMapEntry-constantID-00776# For a @constantID@+--     specialization constant declared in a shader, @size@ /must/ match+--     the byte size of the @constantID@. If the specialization constant is+--     of type @boolean@, @size@ /must/ be the byte size of+--     'Vulkan.Core10.FundamentalTypes.Bool32'+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'SpecializationInfo'+data SpecializationMapEntry = SpecializationMapEntry+  { -- | @constantID@ is the ID of the specialization constant in SPIR-V.+    constantID :: Word32+  , -- | @offset@ is the byte offset of the specialization constant value within+    -- the supplied data buffer.+    offset :: Word32+  , -- | @size@ is the byte size of the specialization constant value within the+    -- supplied data buffer.+    size :: Word64+  }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (SpecializationMapEntry)+#endif+deriving instance Show SpecializationMapEntry++instance ToCStruct SpecializationMapEntry where+  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p SpecializationMapEntry{..} f = do+    poke ((p `plusPtr` 0 :: Ptr Word32)) (constantID)+    poke ((p `plusPtr` 4 :: Ptr Word32)) (offset)+    poke ((p `plusPtr` 8 :: Ptr CSize)) (CSize (size))+    f+  cStructSize = 16+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 8 :: Ptr CSize)) (CSize (zero))+    f++instance FromCStruct SpecializationMapEntry where+  peekCStruct p = do+    constantID <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+    offset <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))+    size <- peek @CSize ((p `plusPtr` 8 :: Ptr CSize))+    pure $ SpecializationMapEntry+             constantID offset (coerce @CSize @Word64 size)++instance Storable SpecializationMapEntry where+  sizeOf ~_ = 16+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero SpecializationMapEntry where+  zero = SpecializationMapEntry+           zero+           zero+           zero+++-- | VkSpecializationInfo - Structure specifying specialization information+--+-- == Valid Usage+--+-- -   #VUID-VkSpecializationInfo-offset-00773# The @offset@ member of each+--     element of @pMapEntries@ /must/ be less than @dataSize@+--+-- -   #VUID-VkSpecializationInfo-pMapEntries-00774# The @size@ member of+--     each element of @pMapEntries@ /must/ be less than or equal to+--     @dataSize@ minus @offset@+--+-- -   #VUID-VkSpecializationInfo-constantID-04911# The @constantID@ value+--     of each element of @pMapEntries@ /must/ be unique within+--     @pMapEntries@+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkSpecializationInfo-pMapEntries-parameter# If @mapEntryCount@+--     is not @0@, @pMapEntries@ /must/ be a valid pointer to an array of+--     @mapEntryCount@ valid 'SpecializationMapEntry' structures+--+-- -   #VUID-VkSpecializationInfo-pData-parameter# If @dataSize@ is not+--     @0@, @pData@ /must/ be a valid pointer to an array of @dataSize@+--     bytes+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'PipelineShaderStageCreateInfo', 'SpecializationMapEntry'+data SpecializationInfo = SpecializationInfo+  { -- | @pMapEntries@ is a pointer to an array of 'SpecializationMapEntry'+    -- structures which map constant IDs to offsets in @pData@.+    mapEntries :: Vector SpecializationMapEntry+  , -- | @dataSize@ is the byte size of the @pData@ buffer.+    dataSize :: Word64+  , -- | @pData@ contains the actual constant values to specialize with.+    data' :: Ptr ()+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (SpecializationInfo)+#endif+deriving instance Show SpecializationInfo++instance ToCStruct SpecializationInfo where+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p SpecializationInfo{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (mapEntries)) :: Word32))+    pPMapEntries' <- ContT $ allocaBytes @SpecializationMapEntry ((Data.Vector.length (mapEntries)) * 16)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPMapEntries' `plusPtr` (16 * (i)) :: Ptr SpecializationMapEntry) (e)) (mapEntries)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr SpecializationMapEntry))) (pPMapEntries')+    lift $ poke ((p `plusPtr` 16 :: Ptr CSize)) (CSize (dataSize))+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ()))) (data')+    lift $ f+  cStructSize = 32+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 24 :: Ptr (Ptr ()))) (zero)+    f++instance FromCStruct SpecializationInfo where+  peekCStruct p = do+    mapEntryCount <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+    pMapEntries <- peek @(Ptr SpecializationMapEntry) ((p `plusPtr` 8 :: Ptr (Ptr SpecializationMapEntry)))+    pMapEntries' <- generateM (fromIntegral mapEntryCount) (\i -> peekCStruct @SpecializationMapEntry ((pMapEntries `advancePtrBytes` (16 * (i)) :: Ptr SpecializationMapEntry)))+    dataSize <- peek @CSize ((p `plusPtr` 16 :: Ptr CSize))+    pData <- peek @(Ptr ()) ((p `plusPtr` 24 :: Ptr (Ptr ())))+    pure $ SpecializationInfo+             pMapEntries' (coerce @CSize @Word64 dataSize) pData++instance Zero SpecializationInfo where+  zero = SpecializationInfo+           mempty+           zero+           zero+++-- | VkPipelineShaderStageCreateInfo - Structure specifying parameters of a+-- newly created pipeline shader stage+--+-- = Description+--+-- If the+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-graphicsPipelineLibrary graphicsPipelineLibrary>+-- feature is enabled and an instance of+-- 'Vulkan.Core10.Shader.ShaderModuleCreateInfo' is included in the @pNext@+-- chain, @module@ /can/ be 'Vulkan.Core10.APIConstants.NULL_HANDLE'. If+-- @module@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the shader+-- code used by the pipeline is defined by @module@. If @module@ is+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE', the shader code is defined by+-- the chained 'Vulkan.Core10.Shader.ShaderModuleCreateInfo'.+--+-- == Valid Usage+--+-- -   #VUID-VkPipelineShaderStageCreateInfo-stage-00704# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-geometryShader geometry shaders>+--     feature is not enabled, @stage@ /must/ not be+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'+--+-- -   #VUID-VkPipelineShaderStageCreateInfo-stage-00705# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>+--     feature is not enabled, @stage@ /must/ not be+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'+--     or+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'+--+-- -   #VUID-VkPipelineShaderStageCreateInfo-stage-02091# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-meshShader mesh shader>+--     feature is not enabled, @stage@ /must/ not be+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_NV'+--+-- -   #VUID-VkPipelineShaderStageCreateInfo-stage-02092# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-taskShader task shader>+--     feature is not enabled, @stage@ /must/ not be+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_NV'+--+-- -   #VUID-VkPipelineShaderStageCreateInfo-stage-00706# @stage@ /must/+--     not be+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_ALL_GRAPHICS',+--     or 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_ALL'+--+-- -   #VUID-VkPipelineShaderStageCreateInfo-pName-00707# @pName@ /must/ be+--     the name of an @OpEntryPoint@ in @module@ with an execution model+--     that matches @stage@+--+-- -   #VUID-VkPipelineShaderStageCreateInfo-maxClipDistances-00708# If the+--     identified entry point includes any variable in its interface that+--     is declared with the @ClipDistance@ @BuiltIn@ decoration, that+--     variable /must/ not have an array size greater than+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxClipDistances@+--+-- -   #VUID-VkPipelineShaderStageCreateInfo-maxCullDistances-00709# If the+--     identified entry point includes any variable in its interface that+--     is declared with the @CullDistance@ @BuiltIn@ decoration, that+--     variable /must/ not have an array size greater than+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxCullDistances@+--+-- -   #VUID-VkPipelineShaderStageCreateInfo-maxCombinedClipAndCullDistances-00710#+--     If the identified entry point includes any variables in its+--     interface that are declared with the @ClipDistance@ or+--     @CullDistance@ @BuiltIn@ decoration, those variables /must/ not have+--     array sizes which sum to more than+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxCombinedClipAndCullDistances@+--+-- -   #VUID-VkPipelineShaderStageCreateInfo-maxSampleMaskWords-00711# If+--     the identified entry point includes any variable in its interface+--     that is declared with the+--     'Vulkan.Core10.FundamentalTypes.SampleMask' @BuiltIn@ decoration,+--     that variable /must/ not have an array size greater than+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxSampleMaskWords@+--+-- -   #VUID-VkPipelineShaderStageCreateInfo-stage-00712# If @stage@ is+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',+--     the identified entry point /must/ not include any input variable in+--     its interface that is decorated with @CullDistance@+--+-- -   #VUID-VkPipelineShaderStageCreateInfo-stage-00713# If @stage@ is+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'+--     or+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT',+--     and the identified entry point has an @OpExecutionMode@ instruction+--     specifying a patch size with @OutputVertices@, the patch size /must/+--     be greater than @0@ and less than or equal to+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxTessellationPatchSize@+--+-- -   #VUID-VkPipelineShaderStageCreateInfo-stage-00714# If @stage@ is+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',+--     the identified entry point /must/ have an @OpExecutionMode@+--     instruction specifying a maximum output vertex count that is greater+--     than @0@ and less than or equal to+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxGeometryOutputVertices@+--+-- -   #VUID-VkPipelineShaderStageCreateInfo-stage-00715# If @stage@ is+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',+--     the identified entry point /must/ have an @OpExecutionMode@+--     instruction specifying an invocation count that is greater than @0@+--     and less than or equal to+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxGeometryShaderInvocations@+--+-- -   #VUID-VkPipelineShaderStageCreateInfo-stage-02596# If @stage@ is a+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>,+--     and the identified entry point writes to @Layer@ for any primitive,+--     it /must/ write the same value to @Layer@ for all vertices of a+--     given primitive+--+-- -   #VUID-VkPipelineShaderStageCreateInfo-stage-02597# If @stage@ is a+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>,+--     and the identified entry point writes to @ViewportIndex@ for any+--     primitive, it /must/ write the same value to @ViewportIndex@ for all+--     vertices of a given primitive+--+-- -   #VUID-VkPipelineShaderStageCreateInfo-stage-00718# If @stage@ is+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',+--     the identified entry point /must/ not include any output variables+--     in its interface decorated with @CullDistance@+--+-- -   #VUID-VkPipelineShaderStageCreateInfo-stage-06685# If @stage@ is+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',+--     and the identified entry point writes to @FragDepth@ in any+--     execution path, all execution paths that are not exclusive to helper+--     invocations /must/ either discard the fragment, or write or+--     initialize the value of @FragDepth@+--+-- -   #VUID-VkPipelineShaderStageCreateInfo-stage-06686# If @stage@ is+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',+--     and the identified entry point writes to @FragStencilRefEXT@ in any+--     execution path, all execution paths that are not exclusive to helper+--     invocations /must/ either discard the fragment, or write or+--     initialize the value of @FragStencilRefEXT@+--+-- -   #VUID-VkPipelineShaderStageCreateInfo-stage-02093# If @stage@ is+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_NV',+--     the identified entry point /must/ have an @OpExecutionMode@+--     instruction specifying a maximum output vertex count,+--     @OutputVertices@, that is greater than @0@ and less than or equal to+--     'Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderPropertiesNV'::@maxMeshOutputVertices@+--+-- -   #VUID-VkPipelineShaderStageCreateInfo-stage-02094# If @stage@ is+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_NV',+--     the identified entry point /must/ have an @OpExecutionMode@+--     instruction specifying a maximum output primitive count,+--     @OutputPrimitivesNV@, that is greater than @0@ and less than or+--     equal to+--     'Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderPropertiesNV'::@maxMeshOutputPrimitives@+--+-- -   #VUID-VkPipelineShaderStageCreateInfo-flags-02784# If @flags@ has+--     the+--     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT'+--     flag set, the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-subgroupSizeControl subgroupSizeControl>+--     feature /must/ be enabled+--+-- -   #VUID-VkPipelineShaderStageCreateInfo-flags-02785# If @flags@ has+--     the+--     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT'+--     flag set, the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-computeFullSubgroups computeFullSubgroups>+--     feature /must/ be enabled+--+-- -   #VUID-VkPipelineShaderStageCreateInfo-pNext-02754# If a+--     'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfo'+--     structure is included in the @pNext@ chain, @flags@ /must/ not have+--     the+--     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT'+--     flag set+--+-- -   #VUID-VkPipelineShaderStageCreateInfo-pNext-02755# If a+--     'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfo'+--     structure is included in the @pNext@ chain, the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-subgroupSizeControl subgroupSizeControl>+--     feature /must/ be enabled, and @stage@ /must/ be a valid bit+--     specified in+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-requiredSubgroupSizeStages requiredSubgroupSizeStages>+--+-- -   #VUID-VkPipelineShaderStageCreateInfo-pNext-02756# If a+--     'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfo'+--     structure is included in the @pNext@ chain and @stage@ is+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT',+--     the local workgroup size of the shader /must/ be less than or equal+--     to the product of+--     'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfo'::@requiredSubgroupSize@+--     and+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxComputeWorkgroupSubgroups maxComputeWorkgroupSubgroups>+--+-- -   #VUID-VkPipelineShaderStageCreateInfo-pNext-02757# If a+--     'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfo'+--     structure is included in the @pNext@ chain, and @flags@ has the+--     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT'+--     flag set, the local workgroup size in the X dimension of the+--     pipeline /must/ be a multiple of+--     'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfo'::@requiredSubgroupSize@+--+-- -   #VUID-VkPipelineShaderStageCreateInfo-flags-02758# If @flags@ has+--     both the+--     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT'+--     and+--     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT'+--     flags set, the local workgroup size in the X dimension of the+--     pipeline /must/ be a multiple of+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxSubgroupSize maxSubgroupSize>+--+-- -   #VUID-VkPipelineShaderStageCreateInfo-flags-02759# If @flags@ has+--     the+--     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT'+--     flag set and @flags@ does not have the+--     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT'+--     flag set and no+--     'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfo'+--     structure is included in the @pNext@ chain, the local workgroup size+--     in the X dimension of the pipeline /must/ be a multiple of+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-subgroup-size subgroupSize>+--+-- -   #VUID-VkPipelineShaderStageCreateInfo-module-04145# The SPIR-V code+--     that was used to create @module@ /must/ be valid as described by the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirv-spec Khronos SPIR-V Specification>+--     after applying the specializations provided in+--     @pSpecializationInfo@, if any, and then converting all+--     specialization constants into fixed constants+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkPipelineShaderStageCreateInfo-sType-sType# @sType@ /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO'+--+-- -   #VUID-VkPipelineShaderStageCreateInfo-pNext-pNext# Each @pNext@+--     member of any structure (including this one) in the @pNext@ chain+--     /must/ be either @NULL@ or a pointer to a valid instance of+--     'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsObjectNameInfoEXT',+--     'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfo',+--     or 'Vulkan.Core10.Shader.ShaderModuleCreateInfo'+--+-- -   #VUID-VkPipelineShaderStageCreateInfo-sType-unique# The @sType@+--     value of each struct in the @pNext@ chain /must/ be unique+--+-- -   #VUID-VkPipelineShaderStageCreateInfo-flags-parameter# @flags@+--     /must/ be a valid combination of+--     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PipelineShaderStageCreateFlagBits'+--     values+--+-- -   #VUID-VkPipelineShaderStageCreateInfo-stage-parameter# @stage@+--     /must/ be a valid+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' value+--+-- -   #VUID-VkPipelineShaderStageCreateInfo-module-parameter# If @module@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @module@ /must/ be+--     a valid 'Vulkan.Core10.Handles.ShaderModule' handle+--+-- -   #VUID-VkPipelineShaderStageCreateInfo-pName-parameter# @pName@+--     /must/ be a null-terminated UTF-8 string+--+-- -   #VUID-VkPipelineShaderStageCreateInfo-pSpecializationInfo-parameter#+--     If @pSpecializationInfo@ is not @NULL@, @pSpecializationInfo@ /must/+--     be a valid pointer to a valid 'SpecializationInfo' structure+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'ComputePipelineCreateInfo', 'GraphicsPipelineCreateInfo',+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsShaderGroupCreateInfoNV',+-- 'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PipelineShaderStageCreateFlags',+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR',+-- 'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV',+-- 'Vulkan.Core10.Handles.ShaderModule',+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits',+-- 'SpecializationInfo', 'Vulkan.Core10.Enums.StructureType.StructureType'+data PipelineShaderStageCreateInfo (es :: [Type]) = PipelineShaderStageCreateInfo+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.+    next :: Chain es+  , -- | @flags@ is a bitmask of+    -- 'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PipelineShaderStageCreateFlagBits'+    -- specifying how the pipeline shader stage will be generated.+    flags :: PipelineShaderStageCreateFlags+  , -- | @stage@ is a+    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' value+    -- specifying a single pipeline stage.+    stage :: ShaderStageFlagBits+  , -- | @module@ is a 'Vulkan.Core10.Handles.ShaderModule' object containing the+    -- shader for this stage.+    module' :: ShaderModule+  , -- | @pName@ is a pointer to a null-terminated UTF-8 string specifying the+    -- entry point name of the shader for this stage.+    name :: ByteString+  , -- | @pSpecializationInfo@ is a pointer to a 'SpecializationInfo' structure,+    -- as described in+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-specialization-constants Specialization Constants>,+    -- or @NULL@.+    specializationInfo :: Maybe SpecializationInfo+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (PipelineShaderStageCreateInfo (es :: [Type]))+#endif+deriving instance Show (Chain es) => Show (PipelineShaderStageCreateInfo es)++instance Extensible PipelineShaderStageCreateInfo where+  extensibleTypeName = "PipelineShaderStageCreateInfo"+  setNext PipelineShaderStageCreateInfo{..} next' = PipelineShaderStageCreateInfo{next = next', ..}+  getNext PipelineShaderStageCreateInfo{..} = next+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends PipelineShaderStageCreateInfo e => b) -> Maybe b+  extends _ f+    | Just Refl <- eqT @e @PipelineShaderStageRequiredSubgroupSizeCreateInfo = Just f+    | Just Refl <- eqT @e @DebugUtilsObjectNameInfoEXT = Just f+    | Just Refl <- eqT @e @(ShaderModuleCreateInfo '[]) = Just f+    | otherwise = Nothing++instance (Extendss PipelineShaderStageCreateInfo es, PokeChain es) => ToCStruct (PipelineShaderStageCreateInfo es) where+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p PipelineShaderStageCreateInfo{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO)+    pNext'' <- fmap castPtr . ContT $ withChain (next)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineShaderStageCreateFlags)) (flags)+    lift $ poke ((p `plusPtr` 20 :: Ptr ShaderStageFlagBits)) (stage)+    lift $ poke ((p `plusPtr` 24 :: Ptr ShaderModule)) (module')+    pName'' <- ContT $ useAsCString (name)+    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr CChar))) pName''+    pSpecializationInfo'' <- case (specializationInfo) of+      Nothing -> pure nullPtr+      Just j -> ContT $ withCStruct (j)+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr SpecializationInfo))) pSpecializationInfo''+    lift $ f+  cStructSize = 48+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO)+    pNext' <- fmap castPtr . ContT $ withZeroChain @es+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+    lift $ poke ((p `plusPtr` 20 :: Ptr ShaderStageFlagBits)) (zero)+    pName'' <- ContT $ useAsCString (mempty)+    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr CChar))) pName''+    lift $ f++instance (Extendss PipelineShaderStageCreateInfo es, PeekChain es) => FromCStruct (PipelineShaderStageCreateInfo es) where+  peekCStruct p = do+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+    next <- peekChain (castPtr pNext)+    flags <- peek @PipelineShaderStageCreateFlags ((p `plusPtr` 16 :: Ptr PipelineShaderStageCreateFlags))+    stage <- peek @ShaderStageFlagBits ((p `plusPtr` 20 :: Ptr ShaderStageFlagBits))+    module' <- peek @ShaderModule ((p `plusPtr` 24 :: Ptr ShaderModule))+    pName <- packCString =<< peek ((p `plusPtr` 32 :: Ptr (Ptr CChar)))+    pSpecializationInfo <- peek @(Ptr SpecializationInfo) ((p `plusPtr` 40 :: Ptr (Ptr SpecializationInfo)))+    pSpecializationInfo' <- maybePeek (\j -> peekCStruct @SpecializationInfo (j)) pSpecializationInfo+    pure $ PipelineShaderStageCreateInfo+             next flags stage module' pName pSpecializationInfo'++instance es ~ '[] => Zero (PipelineShaderStageCreateInfo es) where+  zero = PipelineShaderStageCreateInfo+           ()+           zero+           zero+           zero+           mempty+           Nothing+++-- | VkComputePipelineCreateInfo - Structure specifying parameters of a newly+-- created compute pipeline+--+-- = Description+--+-- The parameters @basePipelineHandle@ and @basePipelineIndex@ are+-- described in more detail in+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-pipeline-derivatives Pipeline Derivatives>.+--+-- == Valid Usage+--+-- -   #VUID-VkComputePipelineCreateInfo-flags-00697# If @flags@ contains+--     the+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+--     flag, and @basePipelineIndex@ is -1, @basePipelineHandle@ /must/ be+--     a valid handle to a compute 'Vulkan.Core10.Handles.Pipeline'+--+-- -   #VUID-VkComputePipelineCreateInfo-flags-00698# If @flags@ contains+--     the+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+--     flag, and @basePipelineHandle@ is+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @basePipelineIndex@ /must/+--     be a valid index into the calling command’s @pCreateInfos@ parameter+--+-- -   #VUID-VkComputePipelineCreateInfo-flags-00699# If @flags@ contains+--     the+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+--     flag, and @basePipelineIndex@ is not -1, @basePipelineHandle@ /must/+--     be 'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   #VUID-VkComputePipelineCreateInfo-flags-00700# If @flags@ contains+--     the+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+--     flag, and @basePipelineHandle@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @basePipelineIndex@ /must/+--     be -1+--+-- -   #VUID-VkComputePipelineCreateInfo-stage-00701# The @stage@ member of+--     @stage@ /must/ be+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'+--+-- -   #VUID-VkComputePipelineCreateInfo-stage-00702# The shader code for+--     the entry point identified by @stage@ and the rest of the state+--     identified by this structure /must/ adhere to the pipeline linking+--     rules described in the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces Shader Interfaces>+--     chapter+--+-- -   #VUID-VkComputePipelineCreateInfo-layout-00703# @layout@ /must/ be+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency consistent>+--     with the layout of the compute shader specified in @stage@+--+-- -   #VUID-VkComputePipelineCreateInfo-layout-01687# The number of+--     resources in @layout@ accessible to the compute shader stage /must/+--     be less than or equal to+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPerStageResources@+--+-- -   #VUID-VkComputePipelineCreateInfo-flags-03364# @flags@ /must/ not+--     include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'+--+-- -   #VUID-VkComputePipelineCreateInfo-flags-03365# @flags@ /must/ not+--     include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR'+--+-- -   #VUID-VkComputePipelineCreateInfo-flags-03366# @flags@ /must/ not+--     include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR'+--+-- -   #VUID-VkComputePipelineCreateInfo-flags-03367# @flags@ /must/ not+--     include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR'+--+-- -   #VUID-VkComputePipelineCreateInfo-flags-03368# @flags@ /must/ not+--     include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR'+--+-- -   #VUID-VkComputePipelineCreateInfo-flags-03369# @flags@ /must/ not+--     include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR'+--+-- -   #VUID-VkComputePipelineCreateInfo-flags-03370# @flags@ /must/ not+--     include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR'+--+-- -   #VUID-VkComputePipelineCreateInfo-flags-03576# @flags@ /must/ not+--     include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'+--+-- -   #VUID-VkComputePipelineCreateInfo-flags-04945# @flags@ /must/ not+--     include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV'+--+-- -   #VUID-VkComputePipelineCreateInfo-flags-02874# @flags@ /must/ not+--     include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV'+--+-- -   #VUID-VkComputePipelineCreateInfo-pipelineCreationCacheControl-02875#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineCreationCacheControl pipelineCreationCacheControl>+--     feature is not enabled, @flags@ /must/ not include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT'+--     or+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT'+--+-- -   #VUID-VkComputePipelineCreateInfo-pipelineStageCreationFeedbackCount-06566#+--     If+--     'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfo'::@pipelineStageCreationFeedbackCount@+--     is not @0@, it /must/ be @1@+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkComputePipelineCreateInfo-sType-sType# @sType@ /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO'+--+-- -   #VUID-VkComputePipelineCreateInfo-pNext-pNext# Each @pNext@ member+--     of any structure (including this one) in the @pNext@ chain /must/ be+--     either @NULL@ or a pointer to a valid instance of+--     'Vulkan.Extensions.VK_AMD_pipeline_compiler_control.PipelineCompilerControlCreateInfoAMD',+--     'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfo',+--     or+--     'Vulkan.Extensions.VK_HUAWEI_subpass_shading.SubpassShadingPipelineCreateInfoHUAWEI'+--+-- -   #VUID-VkComputePipelineCreateInfo-sType-unique# The @sType@ value of+--     each struct in the @pNext@ chain /must/ be unique+--+-- -   #VUID-VkComputePipelineCreateInfo-flags-parameter# @flags@ /must/ be+--     a valid combination of+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'+--     values+--+-- -   #VUID-VkComputePipelineCreateInfo-stage-parameter# @stage@ /must/ be+--     a valid 'PipelineShaderStageCreateInfo' structure+--+-- -   #VUID-VkComputePipelineCreateInfo-layout-parameter# @layout@ /must/+--     be a valid 'Vulkan.Core10.Handles.PipelineLayout' handle+--+-- -   #VUID-VkComputePipelineCreateInfo-commonparent# Both of+--     @basePipelineHandle@, and @layout@ that are valid handles of+--     non-ignored parameters /must/ have been created, allocated, or+--     retrieved from the same 'Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Handles.Pipeline',+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlags',+-- 'Vulkan.Core10.Handles.PipelineLayout', 'PipelineShaderStageCreateInfo',+-- 'Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createComputePipelines'+data ComputePipelineCreateInfo (es :: [Type]) = ComputePipelineCreateInfo+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.+    next :: Chain es+  , -- | @flags@ is a bitmask of+    -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'+    -- specifying how the pipeline will be generated.+    flags :: PipelineCreateFlags+  , -- | @stage@ is a 'PipelineShaderStageCreateInfo' structure describing the+    -- compute shader.+    stage :: SomeStruct PipelineShaderStageCreateInfo+  , -- | @layout@ is the description of binding locations used by both the+    -- pipeline and descriptor sets used with the pipeline.+    layout :: PipelineLayout+  , -- | @basePipelineHandle@ is a pipeline to derive from+    basePipelineHandle :: Pipeline+  , -- | @basePipelineIndex@ is an index into the @pCreateInfos@ parameter to use+    -- as a pipeline to derive from+    basePipelineIndex :: Int32+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (ComputePipelineCreateInfo (es :: [Type]))+#endif+deriving instance Show (Chain es) => Show (ComputePipelineCreateInfo es)++instance Extensible ComputePipelineCreateInfo where+  extensibleTypeName = "ComputePipelineCreateInfo"+  setNext ComputePipelineCreateInfo{..} next' = ComputePipelineCreateInfo{next = next', ..}+  getNext ComputePipelineCreateInfo{..} = next+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends ComputePipelineCreateInfo e => b) -> Maybe b+  extends _ f+    | Just Refl <- eqT @e @PipelineCompilerControlCreateInfoAMD = Just f+    | Just Refl <- eqT @e @SubpassShadingPipelineCreateInfoHUAWEI = Just f+    | Just Refl <- eqT @e @PipelineCreationFeedbackCreateInfo = Just f+    | otherwise = Nothing++instance (Extendss ComputePipelineCreateInfo es, PokeChain es) => ToCStruct (ComputePipelineCreateInfo es) where+  withCStruct x f = allocaBytes 96 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p ComputePipelineCreateInfo{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO)+    pNext'' <- fmap castPtr . ContT $ withChain (next)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineCreateFlags)) (flags)+    ContT $ pokeSomeCStruct (forgetExtensions ((p `plusPtr` 24 :: Ptr (PipelineShaderStageCreateInfo _)))) (stage) . ($ ())+    lift $ poke ((p `plusPtr` 72 :: Ptr PipelineLayout)) (layout)+    lift $ poke ((p `plusPtr` 80 :: Ptr Pipeline)) (basePipelineHandle)+    lift $ poke ((p `plusPtr` 88 :: Ptr Int32)) (basePipelineIndex)+    lift $ f+  cStructSize = 96+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO)+    pNext' <- fmap castPtr . ContT $ withZeroChain @es+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+    ContT $ pokeSomeCStruct (forgetExtensions ((p `plusPtr` 24 :: Ptr (PipelineShaderStageCreateInfo _)))) ((SomeStruct zero)) . ($ ())+    lift $ poke ((p `plusPtr` 72 :: Ptr PipelineLayout)) (zero)+    lift $ poke ((p `plusPtr` 88 :: Ptr Int32)) (zero)+    lift $ f++instance (Extendss ComputePipelineCreateInfo es, PeekChain es) => FromCStruct (ComputePipelineCreateInfo es) where+  peekCStruct p = do+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+    next <- peekChain (castPtr pNext)+    flags <- peek @PipelineCreateFlags ((p `plusPtr` 16 :: Ptr PipelineCreateFlags))+    stage <- peekSomeCStruct (forgetExtensions ((p `plusPtr` 24 :: Ptr (PipelineShaderStageCreateInfo _))))+    layout <- peek @PipelineLayout ((p `plusPtr` 72 :: Ptr PipelineLayout))+    basePipelineHandle <- peek @Pipeline ((p `plusPtr` 80 :: Ptr Pipeline))+    basePipelineIndex <- peek @Int32 ((p `plusPtr` 88 :: Ptr Int32))+    pure $ ComputePipelineCreateInfo+             next flags stage layout basePipelineHandle basePipelineIndex++instance es ~ '[] => Zero (ComputePipelineCreateInfo es) where+  zero = ComputePipelineCreateInfo+           ()+           zero+           (SomeStruct zero)+           zero+           zero+           zero+++-- | VkVertexInputBindingDescription - Structure specifying vertex input+-- binding description+--+-- == Valid Usage+--+-- -   #VUID-VkVertexInputBindingDescription-binding-00618# @binding@+--     /must/ be less than+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindings@+--+-- -   #VUID-VkVertexInputBindingDescription-stride-00619# @stride@ /must/+--     be less than or equal to+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindingStride@+--+-- -   #VUID-VkVertexInputBindingDescription-stride-04456# If the+--     @VK_KHR_portability_subset@ extension is enabled, @stride@ /must/ be+--     a multiple of, and at least as large as,+--     'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetPropertiesKHR'::@minVertexInputBindingStrideAlignment@+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkVertexInputBindingDescription-inputRate-parameter#+--     @inputRate@ /must/ be a valid+--     'Vulkan.Core10.Enums.VertexInputRate.VertexInputRate' value+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'PipelineVertexInputStateCreateInfo',+-- 'Vulkan.Core10.Enums.VertexInputRate.VertexInputRate'+data VertexInputBindingDescription = VertexInputBindingDescription+  { -- | @binding@ is the binding number that this structure describes.+    binding :: Word32+  , -- | @stride@ is the byte stride between consecutive elements within the+    -- buffer.+    stride :: Word32+  , -- | @inputRate@ is a 'Vulkan.Core10.Enums.VertexInputRate.VertexInputRate'+    -- value specifying whether vertex attribute addressing is a function of+    -- the vertex index or of the instance index.+    inputRate :: VertexInputRate+  }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (VertexInputBindingDescription)+#endif+deriving instance Show VertexInputBindingDescription++instance ToCStruct VertexInputBindingDescription where+  withCStruct x f = allocaBytes 12 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p VertexInputBindingDescription{..} f = do+    poke ((p `plusPtr` 0 :: Ptr Word32)) (binding)+    poke ((p `plusPtr` 4 :: Ptr Word32)) (stride)+    poke ((p `plusPtr` 8 :: Ptr VertexInputRate)) (inputRate)+    f+  cStructSize = 12+  cStructAlignment = 4+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 8 :: Ptr VertexInputRate)) (zero)+    f++instance FromCStruct VertexInputBindingDescription where+  peekCStruct p = do+    binding <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+    stride <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))+    inputRate <- peek @VertexInputRate ((p `plusPtr` 8 :: Ptr VertexInputRate))+    pure $ VertexInputBindingDescription+             binding stride inputRate++instance Storable VertexInputBindingDescription where+  sizeOf ~_ = 12+  alignment ~_ = 4+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero VertexInputBindingDescription where+  zero = VertexInputBindingDescription+           zero+           zero+           zero+++-- | VkVertexInputAttributeDescription - Structure specifying vertex input+-- attribute description+--+-- == Valid Usage+--+-- -   #VUID-VkVertexInputAttributeDescription-location-00620# @location@+--     /must/ be less than+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputAttributes@+--+-- -   #VUID-VkVertexInputAttributeDescription-binding-00621# @binding@+--     /must/ be less than+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindings@+--+-- -   #VUID-VkVertexInputAttributeDescription-offset-00622# @offset@+--     /must/ be less than or equal to+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputAttributeOffset@+--+-- -   #VUID-VkVertexInputAttributeDescription-format-00623# @format@+--     /must/ be allowed as a vertex buffer format, as specified by the+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_VERTEX_BUFFER_BIT'+--     flag in+--     'Vulkan.Core10.DeviceInitialization.FormatProperties'::@bufferFeatures@+--     returned by+--     'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceFormatProperties'+--+-- -   #VUID-VkVertexInputAttributeDescription-vertexAttributeAccessBeyondStride-04457#+--     If the @VK_KHR_portability_subset@ extension is enabled, and+--     'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR'::@vertexAttributeAccessBeyondStride@+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', the sum of @offset@ plus+--     the size of the vertex attribute data described by @format@ /must/+--     not be greater than @stride@ in the 'VertexInputBindingDescription'+--     referenced in @binding@+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkVertexInputAttributeDescription-format-parameter# @format@+--     /must/ be a valid 'Vulkan.Core10.Enums.Format.Format' value+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Enums.Format.Format',+-- 'PipelineVertexInputStateCreateInfo'+data VertexInputAttributeDescription = VertexInputAttributeDescription+  { -- | @location@ is the shader input location number for this attribute.+    location :: Word32+  , -- | @binding@ is the binding number which this attribute takes its data+    -- from.+    binding :: Word32+  , -- | @format@ is the size and type of the vertex attribute data.+    format :: Format+  , -- | @offset@ is a byte offset of this attribute relative to the start of an+    -- element in the vertex input binding.+    offset :: Word32+  }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (VertexInputAttributeDescription)+#endif+deriving instance Show VertexInputAttributeDescription++instance ToCStruct VertexInputAttributeDescription where+  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p VertexInputAttributeDescription{..} f = do+    poke ((p `plusPtr` 0 :: Ptr Word32)) (location)+    poke ((p `plusPtr` 4 :: Ptr Word32)) (binding)+    poke ((p `plusPtr` 8 :: Ptr Format)) (format)+    poke ((p `plusPtr` 12 :: Ptr Word32)) (offset)+    f+  cStructSize = 16+  cStructAlignment = 4+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 8 :: Ptr Format)) (zero)+    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)+    f++instance FromCStruct VertexInputAttributeDescription where+  peekCStruct p = do+    location <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+    binding <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))+    format <- peek @Format ((p `plusPtr` 8 :: Ptr Format))+    offset <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))+    pure $ VertexInputAttributeDescription+             location binding format offset++instance Storable VertexInputAttributeDescription where+  sizeOf ~_ = 16+  alignment ~_ = 4+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero VertexInputAttributeDescription where+  zero = VertexInputAttributeDescription+           zero+           zero+           zero+           zero+++-- | VkPipelineVertexInputStateCreateInfo - Structure specifying parameters+-- of a newly created pipeline vertex input state+--+-- == Valid Usage+--+-- -   #VUID-VkPipelineVertexInputStateCreateInfo-vertexBindingDescriptionCount-00613#+--     @vertexBindingDescriptionCount@ /must/ be less than or equal to+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindings@+--+-- -   #VUID-VkPipelineVertexInputStateCreateInfo-vertexAttributeDescriptionCount-00614#+--     @vertexAttributeDescriptionCount@ /must/ be less than or equal to+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputAttributes@+--+-- -   #VUID-VkPipelineVertexInputStateCreateInfo-binding-00615# For every+--     @binding@ specified by each element of+--     @pVertexAttributeDescriptions@, a 'VertexInputBindingDescription'+--     /must/ exist in @pVertexBindingDescriptions@ with the same value of+--     @binding@+--+-- -   #VUID-VkPipelineVertexInputStateCreateInfo-pVertexBindingDescriptions-00616#+--     All elements of @pVertexBindingDescriptions@ /must/ describe+--     distinct binding numbers+--+-- -   #VUID-VkPipelineVertexInputStateCreateInfo-pVertexAttributeDescriptions-00617#+--     All elements of @pVertexAttributeDescriptions@ /must/ describe+--     distinct attribute locations+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkPipelineVertexInputStateCreateInfo-sType-sType# @sType@+--     /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO'+--+-- -   #VUID-VkPipelineVertexInputStateCreateInfo-pNext-pNext# @pNext@+--     /must/ be @NULL@ or a pointer to a valid instance of+--     'Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.PipelineVertexInputDivisorStateCreateInfoEXT'+--+-- -   #VUID-VkPipelineVertexInputStateCreateInfo-sType-unique# The @sType@+--     value of each struct in the @pNext@ chain /must/ be unique+--+-- -   #VUID-VkPipelineVertexInputStateCreateInfo-flags-zerobitmask#+--     @flags@ /must/ be @0@+--+-- -   #VUID-VkPipelineVertexInputStateCreateInfo-pVertexBindingDescriptions-parameter#+--     If @vertexBindingDescriptionCount@ is not @0@,+--     @pVertexBindingDescriptions@ /must/ be a valid pointer to an array+--     of @vertexBindingDescriptionCount@ valid+--     'VertexInputBindingDescription' structures+--+-- -   #VUID-VkPipelineVertexInputStateCreateInfo-pVertexAttributeDescriptions-parameter#+--     If @vertexAttributeDescriptionCount@ is not @0@,+--     @pVertexAttributeDescriptions@ /must/ be a valid pointer to an array+--     of @vertexAttributeDescriptionCount@ valid+--     'VertexInputAttributeDescription' structures+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'GraphicsPipelineCreateInfo',+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsShaderGroupCreateInfoNV',+-- 'Vulkan.Core10.Enums.PipelineVertexInputStateCreateFlags.PipelineVertexInputStateCreateFlags',+-- 'Vulkan.Core10.Enums.StructureType.StructureType',+-- 'VertexInputAttributeDescription', 'VertexInputBindingDescription'+data PipelineVertexInputStateCreateInfo (es :: [Type]) = PipelineVertexInputStateCreateInfo+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.+    next :: Chain es+  , -- | @flags@ is reserved for future use.+    flags :: PipelineVertexInputStateCreateFlags+  , -- | @pVertexBindingDescriptions@ is a pointer to an array of+    -- 'VertexInputBindingDescription' structures.+    vertexBindingDescriptions :: Vector VertexInputBindingDescription+  , -- | @pVertexAttributeDescriptions@ is a pointer to an array of+    -- 'VertexInputAttributeDescription' structures.+    vertexAttributeDescriptions :: Vector VertexInputAttributeDescription+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (PipelineVertexInputStateCreateInfo (es :: [Type]))+#endif+deriving instance Show (Chain es) => Show (PipelineVertexInputStateCreateInfo es)++instance Extensible PipelineVertexInputStateCreateInfo where+  extensibleTypeName = "PipelineVertexInputStateCreateInfo"+  setNext PipelineVertexInputStateCreateInfo{..} next' = PipelineVertexInputStateCreateInfo{next = next', ..}+  getNext PipelineVertexInputStateCreateInfo{..} = next+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends PipelineVertexInputStateCreateInfo e => b) -> Maybe b+  extends _ f+    | Just Refl <- eqT @e @PipelineVertexInputDivisorStateCreateInfoEXT = Just f+    | otherwise = Nothing++instance (Extendss PipelineVertexInputStateCreateInfo es, PokeChain es) => ToCStruct (PipelineVertexInputStateCreateInfo es) where+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p PipelineVertexInputStateCreateInfo{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO)+    pNext'' <- fmap castPtr . ContT $ withChain (next)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineVertexInputStateCreateFlags)) (flags)+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (vertexBindingDescriptions)) :: Word32))+    pPVertexBindingDescriptions' <- ContT $ allocaBytes @VertexInputBindingDescription ((Data.Vector.length (vertexBindingDescriptions)) * 12)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPVertexBindingDescriptions' `plusPtr` (12 * (i)) :: Ptr VertexInputBindingDescription) (e)) (vertexBindingDescriptions)+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr VertexInputBindingDescription))) (pPVertexBindingDescriptions')+    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (vertexAttributeDescriptions)) :: Word32))+    pPVertexAttributeDescriptions' <- ContT $ allocaBytes @VertexInputAttributeDescription ((Data.Vector.length (vertexAttributeDescriptions)) * 16)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPVertexAttributeDescriptions' `plusPtr` (16 * (i)) :: Ptr VertexInputAttributeDescription) (e)) (vertexAttributeDescriptions)+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr VertexInputAttributeDescription))) (pPVertexAttributeDescriptions')+    lift $ f+  cStructSize = 48+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO)+    pNext' <- fmap castPtr . ContT $ withZeroChain @es+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+    lift $ f++instance (Extendss PipelineVertexInputStateCreateInfo es, PeekChain es) => FromCStruct (PipelineVertexInputStateCreateInfo es) where+  peekCStruct p = do+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+    next <- peekChain (castPtr pNext)+    flags <- peek @PipelineVertexInputStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineVertexInputStateCreateFlags))+    vertexBindingDescriptionCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+    pVertexBindingDescriptions <- peek @(Ptr VertexInputBindingDescription) ((p `plusPtr` 24 :: Ptr (Ptr VertexInputBindingDescription)))+    pVertexBindingDescriptions' <- generateM (fromIntegral vertexBindingDescriptionCount) (\i -> peekCStruct @VertexInputBindingDescription ((pVertexBindingDescriptions `advancePtrBytes` (12 * (i)) :: Ptr VertexInputBindingDescription)))+    vertexAttributeDescriptionCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+    pVertexAttributeDescriptions <- peek @(Ptr VertexInputAttributeDescription) ((p `plusPtr` 40 :: Ptr (Ptr VertexInputAttributeDescription)))+    pVertexAttributeDescriptions' <- generateM (fromIntegral vertexAttributeDescriptionCount) (\i -> peekCStruct @VertexInputAttributeDescription ((pVertexAttributeDescriptions `advancePtrBytes` (16 * (i)) :: Ptr VertexInputAttributeDescription)))+    pure $ PipelineVertexInputStateCreateInfo+             next flags pVertexBindingDescriptions' pVertexAttributeDescriptions'++instance es ~ '[] => Zero (PipelineVertexInputStateCreateInfo es) where+  zero = PipelineVertexInputStateCreateInfo+           ()+           zero+           mempty+           mempty+++-- | VkPipelineInputAssemblyStateCreateInfo - Structure specifying parameters+-- of a newly created pipeline input assembly state+--+-- = Description+--+-- Restarting the assembly of primitives discards the most recent index+-- values if those elements formed an incomplete primitive, and restarts+-- the primitive assembly using the subsequent indices, but only assembling+-- the immediately following element through the end of the originally+-- specified elements. The primitive restart index value comparison is+-- performed before adding the @vertexOffset@ value to the index value.+--+-- == Valid Usage+--+-- -   #VUID-VkPipelineInputAssemblyStateCreateInfo-topology-06252# If+--     @topology@ is+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_POINT_LIST',+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST',+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST',+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY'+--     or+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY',+--     and @primitiveRestartEnable@ is+--     'Vulkan.Core10.FundamentalTypes.TRUE', the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitiveTopologyListRestart primitiveTopologyListRestart>+--     feature /must/ be enabled+--+-- -   #VUID-VkPipelineInputAssemblyStateCreateInfo-topology-06253# If+--     @topology@ is+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST',+--     and @primitiveRestartEnable@ is+--     'Vulkan.Core10.FundamentalTypes.TRUE', the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitiveTopologyPatchListRestart primitiveTopologyPatchListRestart>+--     feature /must/ be enabled+--+-- -   #VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00429# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-geometryShader geometry shaders>+--     feature is not enabled, @topology@ /must/ not be any of+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY',+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY',+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY'+--     or+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY'+--+-- -   #VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00430# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>+--     feature is not enabled, @topology@ /must/ not be+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST'+--+-- -   #VUID-VkPipelineInputAssemblyStateCreateInfo-triangleFans-04452# If+--     the @VK_KHR_portability_subset@ extension is enabled, and+--     'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR'::@triangleFans@+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', @topology@ /must/ not be+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_FAN'+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkPipelineInputAssemblyStateCreateInfo-sType-sType# @sType@+--     /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO'+--+-- -   #VUID-VkPipelineInputAssemblyStateCreateInfo-pNext-pNext# @pNext@+--     /must/ be @NULL@+--+-- -   #VUID-VkPipelineInputAssemblyStateCreateInfo-flags-zerobitmask#+--     @flags@ /must/ be @0@+--+-- -   #VUID-VkPipelineInputAssemblyStateCreateInfo-topology-parameter#+--     @topology@ /must/ be a valid+--     'Vulkan.Core10.Enums.PrimitiveTopology.PrimitiveTopology' value+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.FundamentalTypes.Bool32', 'GraphicsPipelineCreateInfo',+-- 'Vulkan.Core10.Enums.PipelineInputAssemblyStateCreateFlags.PipelineInputAssemblyStateCreateFlags',+-- 'Vulkan.Core10.Enums.PrimitiveTopology.PrimitiveTopology',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data PipelineInputAssemblyStateCreateInfo = PipelineInputAssemblyStateCreateInfo+  { -- | @flags@ is reserved for future use.+    flags :: PipelineInputAssemblyStateCreateFlags+  , -- | @topology@ is a+    -- 'Vulkan.Core10.Enums.PrimitiveTopology.PrimitiveTopology' defining the+    -- primitive topology, as described below.+    topology :: PrimitiveTopology+  , -- | @primitiveRestartEnable@ controls whether a special vertex index value+    -- is treated as restarting the assembly of primitives. This enable only+    -- applies to indexed draws+    -- ('Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexed',+    -- 'Vulkan.Extensions.VK_EXT_multi_draw.cmdDrawMultiIndexedEXT', and+    -- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect'), and the+    -- special index value is either 0xFFFFFFFF when the @indexType@ parameter+    -- of 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer' is equal to+    -- 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT32', 0xFF when @indexType@+    -- is equal to 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT8_EXT', or+    -- 0xFFFF when @indexType@ is equal to+    -- 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT16'. Primitive restart is+    -- not allowed for “list” topologies, unless one of the features+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitiveTopologyPatchListRestart primitiveTopologyPatchListRestart>+    -- (for+    -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST')+    -- or+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitiveTopologyListRestart primitiveTopologyListRestart>+    -- (for all other list topologies) is enabled.+    primitiveRestartEnable :: Bool+  }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (PipelineInputAssemblyStateCreateInfo)+#endif+deriving instance Show PipelineInputAssemblyStateCreateInfo++instance ToCStruct PipelineInputAssemblyStateCreateInfo where+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p PipelineInputAssemblyStateCreateInfo{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr PipelineInputAssemblyStateCreateFlags)) (flags)+    poke ((p `plusPtr` 20 :: Ptr PrimitiveTopology)) (topology)+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (primitiveRestartEnable))+    f+  cStructSize = 32+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 20 :: Ptr PrimitiveTopology)) (zero)+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))+    f++instance FromCStruct PipelineInputAssemblyStateCreateInfo where+  peekCStruct p = do+    flags <- peek @PipelineInputAssemblyStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineInputAssemblyStateCreateFlags))+    topology <- peek @PrimitiveTopology ((p `plusPtr` 20 :: Ptr PrimitiveTopology))+    primitiveRestartEnable <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))+    pure $ PipelineInputAssemblyStateCreateInfo+             flags topology (bool32ToBool primitiveRestartEnable)++instance Storable PipelineInputAssemblyStateCreateInfo where+  sizeOf ~_ = 32+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PipelineInputAssemblyStateCreateInfo where+  zero = PipelineInputAssemblyStateCreateInfo+           zero+           zero+           zero+++-- | VkPipelineTessellationStateCreateInfo - Structure specifying parameters+-- of a newly created pipeline tessellation state+--+-- == Valid Usage+--+-- -   #VUID-VkPipelineTessellationStateCreateInfo-patchControlPoints-01214#+--     @patchControlPoints@ /must/ be greater than zero and less than or+--     equal to+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxTessellationPatchSize@+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkPipelineTessellationStateCreateInfo-sType-sType# @sType@+--     /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO'+--+-- -   #VUID-VkPipelineTessellationStateCreateInfo-pNext-pNext# @pNext@+--     /must/ be @NULL@ or a pointer to a valid instance of+--     'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.PipelineTessellationDomainOriginStateCreateInfo'+--+-- -   #VUID-VkPipelineTessellationStateCreateInfo-sType-unique# The+--     @sType@ value of each struct in the @pNext@ chain /must/ be unique+--+-- -   #VUID-VkPipelineTessellationStateCreateInfo-flags-zerobitmask#+--     @flags@ /must/ be @0@+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'GraphicsPipelineCreateInfo',+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsShaderGroupCreateInfoNV',+-- 'Vulkan.Core10.Enums.PipelineTessellationStateCreateFlags.PipelineTessellationStateCreateFlags',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data PipelineTessellationStateCreateInfo (es :: [Type]) = PipelineTessellationStateCreateInfo+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.+    next :: Chain es+  , -- | @flags@ is reserved for future use.+    flags :: PipelineTessellationStateCreateFlags+  , -- | @patchControlPoints@ is the number of control points per patch.+    patchControlPoints :: Word32+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (PipelineTessellationStateCreateInfo (es :: [Type]))+#endif+deriving instance Show (Chain es) => Show (PipelineTessellationStateCreateInfo es)++instance Extensible PipelineTessellationStateCreateInfo where+  extensibleTypeName = "PipelineTessellationStateCreateInfo"+  setNext PipelineTessellationStateCreateInfo{..} next' = PipelineTessellationStateCreateInfo{next = next', ..}+  getNext PipelineTessellationStateCreateInfo{..} = next+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends PipelineTessellationStateCreateInfo e => b) -> Maybe b+  extends _ f+    | Just Refl <- eqT @e @PipelineTessellationDomainOriginStateCreateInfo = Just f+    | otherwise = Nothing++instance (Extendss PipelineTessellationStateCreateInfo es, PokeChain es) => ToCStruct (PipelineTessellationStateCreateInfo es) where+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p PipelineTessellationStateCreateInfo{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO)+    pNext'' <- fmap castPtr . ContT $ withChain (next)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineTessellationStateCreateFlags)) (flags)+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (patchControlPoints)+    lift $ f+  cStructSize = 24+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO)+    pNext' <- fmap castPtr . ContT $ withZeroChain @es+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+    lift $ f++instance (Extendss PipelineTessellationStateCreateInfo es, PeekChain es) => FromCStruct (PipelineTessellationStateCreateInfo es) where+  peekCStruct p = do+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+    next <- peekChain (castPtr pNext)+    flags <- peek @PipelineTessellationStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineTessellationStateCreateFlags))+    patchControlPoints <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+    pure $ PipelineTessellationStateCreateInfo+             next flags patchControlPoints++instance es ~ '[] => Zero (PipelineTessellationStateCreateInfo es) where+  zero = PipelineTessellationStateCreateInfo+           ()+           zero+           zero+++-- | VkPipelineViewportStateCreateInfo - Structure specifying parameters of a+-- newly created pipeline viewport state+--+-- == Valid Usage+--+-- -   #VUID-VkPipelineViewportStateCreateInfo-viewportCount-01216# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiViewport multiple viewports>+--     feature is not enabled, @viewportCount@ /must/ not be greater than+--     @1@+--+-- -   #VUID-VkPipelineViewportStateCreateInfo-scissorCount-01217# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiViewport multiple viewports>+--     feature is not enabled, @scissorCount@ /must/ not be greater than+--     @1@+--+-- -   #VUID-VkPipelineViewportStateCreateInfo-viewportCount-01218#+--     @viewportCount@ /must/ be less than or equal to+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewports@+--+-- -   #VUID-VkPipelineViewportStateCreateInfo-scissorCount-01219#+--     @scissorCount@ /must/ be less than or equal to+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewports@+--+-- -   #VUID-VkPipelineViewportStateCreateInfo-x-02821# The @x@ and @y@+--     members of @offset@ member of any element of @pScissors@ /must/ be+--     greater than or equal to @0@+--+-- -   #VUID-VkPipelineViewportStateCreateInfo-offset-02822# Evaluation of+--     (@offset.x@ + @extent.width@) /must/ not cause a signed integer+--     addition overflow for any element of @pScissors@+--+-- -   #VUID-VkPipelineViewportStateCreateInfo-offset-02823# Evaluation of+--     (@offset.y@ + @extent.height@) /must/ not cause a signed integer+--     addition overflow for any element of @pScissors@+--+-- -   #VUID-VkPipelineViewportStateCreateInfo-scissorCount-04134# If the+--     graphics pipeline is being created without+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'+--     set then @scissorCount@ and @viewportCount@ /must/ be identical+--+-- -   #VUID-VkPipelineViewportStateCreateInfo-viewportCount-04135# If the+--     graphics pipeline is being created with+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'+--     set then @viewportCount@ /must/ be @0@, otherwise it /must/ be+--     greater than @0@+--+-- -   #VUID-VkPipelineViewportStateCreateInfo-scissorCount-04136# If the+--     graphics pipeline is being created with+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'+--     set then @scissorCount@ /must/ be @0@, otherwise it /must/ be+--     greater than @0@+--+-- -   #VUID-VkPipelineViewportStateCreateInfo-viewportWScalingEnable-01726#+--     If the @viewportWScalingEnable@ member of a+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'+--     structure included in the @pNext@ chain is+--     'Vulkan.Core10.FundamentalTypes.TRUE', the @viewportCount@ member of+--     the+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'+--     structure /must/ be greater than or equal to+--     'PipelineViewportStateCreateInfo'::@viewportCount@+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkPipelineViewportStateCreateInfo-sType-sType# @sType@ /must/+--     be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO'+--+-- -   #VUID-VkPipelineViewportStateCreateInfo-pNext-pNext# Each @pNext@+--     member of any structure (including this one) in the @pNext@ chain+--     /must/ be either @NULL@ or a pointer to a valid instance of+--     'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportCoarseSampleOrderStateCreateInfoNV',+--     'Vulkan.Extensions.VK_EXT_depth_clip_control.PipelineViewportDepthClipControlCreateInfoEXT',+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV',+--     'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV',+--     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV',+--     or+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'+--+-- -   #VUID-VkPipelineViewportStateCreateInfo-sType-unique# The @sType@+--     value of each struct in the @pNext@ chain /must/ be unique+--+-- -   #VUID-VkPipelineViewportStateCreateInfo-flags-zerobitmask# @flags@+--     /must/ be @0@+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'GraphicsPipelineCreateInfo',+-- 'Vulkan.Core10.Enums.PipelineViewportStateCreateFlags.PipelineViewportStateCreateFlags',+-- 'Vulkan.Core10.FundamentalTypes.Rect2D',+-- 'Vulkan.Core10.Enums.StructureType.StructureType', 'Viewport'+data PipelineViewportStateCreateInfo (es :: [Type]) = PipelineViewportStateCreateInfo+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.+    next :: Chain es+  , -- | @flags@ is reserved for future use.+    flags :: PipelineViewportStateCreateFlags+  , -- | @viewportCount@ is the number of viewports used by the pipeline.+    viewportCount :: Word32+  , -- | @pViewports@ is a pointer to an array of 'Viewport' structures, defining+    -- the viewport transforms. If the viewport state is dynamic, this member+    -- is ignored.+    viewports :: Vector Viewport+  , -- | @scissorCount@ is the number of+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-scissor scissors>+    -- and /must/ match the number of viewports.+    scissorCount :: Word32+  , -- | @pScissors@ is a pointer to an array of+    -- 'Vulkan.Core10.FundamentalTypes.Rect2D' structures defining the+    -- rectangular bounds of the scissor for the corresponding viewport. If the+    -- scissor state is dynamic, this member is ignored.+    scissors :: Vector Rect2D+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (PipelineViewportStateCreateInfo (es :: [Type]))+#endif+deriving instance Show (Chain es) => Show (PipelineViewportStateCreateInfo es)++instance Extensible PipelineViewportStateCreateInfo where+  extensibleTypeName = "PipelineViewportStateCreateInfo"+  setNext PipelineViewportStateCreateInfo{..} next' = PipelineViewportStateCreateInfo{next = next', ..}+  getNext PipelineViewportStateCreateInfo{..} = next+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends PipelineViewportStateCreateInfo e => b) -> Maybe b+  extends _ f+    | Just Refl <- eqT @e @PipelineViewportDepthClipControlCreateInfoEXT = Just f+    | Just Refl <- eqT @e @PipelineViewportCoarseSampleOrderStateCreateInfoNV = Just f+    | Just Refl <- eqT @e @PipelineViewportShadingRateImageStateCreateInfoNV = Just f+    | Just Refl <- eqT @e @PipelineViewportExclusiveScissorStateCreateInfoNV = Just f+    | Just Refl <- eqT @e @PipelineViewportSwizzleStateCreateInfoNV = Just f+    | Just Refl <- eqT @e @PipelineViewportWScalingStateCreateInfoNV = Just f+    | otherwise = Nothing++instance (Extendss PipelineViewportStateCreateInfo es, PokeChain es) => ToCStruct (PipelineViewportStateCreateInfo es) where+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p PipelineViewportStateCreateInfo{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO)+    pNext'' <- fmap castPtr . ContT $ withChain (next)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineViewportStateCreateFlags)) (flags)+    let pViewportsLength = Data.Vector.length $ (viewports)+    viewportCount'' <- lift $ if (viewportCount) == 0+      then pure $ fromIntegral pViewportsLength+      else do+        unless (fromIntegral pViewportsLength == (viewportCount) || pViewportsLength == 0) $+          throwIO $ IOError Nothing InvalidArgument "" "pViewports must be empty or have 'viewportCount' elements" Nothing Nothing+        pure (viewportCount)+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (viewportCount'')+    pViewports'' <- if Data.Vector.null (viewports)+      then pure nullPtr+      else do+        pPViewports <- ContT $ allocaBytes @Viewport (((Data.Vector.length (viewports))) * 24)+        lift $ Data.Vector.imapM_ (\i e -> poke (pPViewports `plusPtr` (24 * (i)) :: Ptr Viewport) (e)) ((viewports))+        pure $ pPViewports+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Viewport))) pViewports''+    let pScissorsLength = Data.Vector.length $ (scissors)+    scissorCount'' <- lift $ if (scissorCount) == 0+      then pure $ fromIntegral pScissorsLength+      else do+        unless (fromIntegral pScissorsLength == (scissorCount) || pScissorsLength == 0) $+          throwIO $ IOError Nothing InvalidArgument "" "pScissors must be empty or have 'scissorCount' elements" Nothing Nothing+        pure (scissorCount)+    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (scissorCount'')+    pScissors'' <- if Data.Vector.null (scissors)+      then pure nullPtr+      else do+        pPScissors <- ContT $ allocaBytes @Rect2D (((Data.Vector.length (scissors))) * 16)+        lift $ Data.Vector.imapM_ (\i e -> poke (pPScissors `plusPtr` (16 * (i)) :: Ptr Rect2D) (e)) ((scissors))+        pure $ pPScissors+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr Rect2D))) pScissors''+    lift $ f+  cStructSize = 48+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO)+    pNext' <- fmap castPtr . ContT $ withZeroChain @es+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+    lift $ f++instance (Extendss PipelineViewportStateCreateInfo es, PeekChain es) => FromCStruct (PipelineViewportStateCreateInfo es) where+  peekCStruct p = do+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+    next <- peekChain (castPtr pNext)+    flags <- peek @PipelineViewportStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineViewportStateCreateFlags))+    viewportCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+    pViewports <- peek @(Ptr Viewport) ((p `plusPtr` 24 :: Ptr (Ptr Viewport)))+    let pViewportsLength = if pViewports == nullPtr then 0 else (fromIntegral viewportCount)+    pViewports' <- generateM pViewportsLength (\i -> peekCStruct @Viewport ((pViewports `advancePtrBytes` (24 * (i)) :: Ptr Viewport)))+    scissorCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+    pScissors <- peek @(Ptr Rect2D) ((p `plusPtr` 40 :: Ptr (Ptr Rect2D)))+    let pScissorsLength = if pScissors == nullPtr then 0 else (fromIntegral scissorCount)+    pScissors' <- generateM pScissorsLength (\i -> peekCStruct @Rect2D ((pScissors `advancePtrBytes` (16 * (i)) :: Ptr Rect2D)))+    pure $ PipelineViewportStateCreateInfo+             next flags viewportCount pViewports' scissorCount pScissors'++instance es ~ '[] => Zero (PipelineViewportStateCreateInfo es) where+  zero = PipelineViewportStateCreateInfo+           ()+           zero+           zero+           mempty+           zero+           mempty+++-- | VkPipelineRasterizationStateCreateInfo - Structure specifying parameters+-- of a newly created pipeline rasterization state+--+-- = Description+--+-- The application /can/ also add a+-- 'Vulkan.Extensions.VK_AMD_rasterization_order.PipelineRasterizationStateRasterizationOrderAMD'+-- structure to the @pNext@ chain of a+-- 'PipelineRasterizationStateCreateInfo' structure. This structure enables+-- selecting the rasterization order to use when rendering with the+-- corresponding graphics pipeline as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-order Rasterization Order>.+--+-- == Valid Usage+--+-- -   #VUID-VkPipelineRasterizationStateCreateInfo-depthClampEnable-00782#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-depthClamp depth clamping>+--     feature is not enabled, @depthClampEnable@ /must/ be+--     'Vulkan.Core10.FundamentalTypes.FALSE'+--+-- -   #VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01507# If+--     the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-fillModeNonSolid non-solid fill modes>+--     feature is not enabled, @polygonMode@ /must/ be+--     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_FILL' or+--     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_FILL_RECTANGLE_NV'+--+-- -   #VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01414# If+--     the @VK_NV_fill_rectangle@ extension is not enabled, @polygonMode@+--     /must/ not be+--     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_FILL_RECTANGLE_NV'+--+-- -   #VUID-VkPipelineRasterizationStateCreateInfo-pointPolygons-04458# If+--     the @VK_KHR_portability_subset@ extension is enabled, and+--     'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR'::@pointPolygons@+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', and+--     @rasterizerDiscardEnable@ is 'Vulkan.Core10.FundamentalTypes.FALSE',+--     @polygonMode@ /must/ not be+--     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_POINT'+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkPipelineRasterizationStateCreateInfo-sType-sType# @sType@+--     /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO'+--+-- -   #VUID-VkPipelineRasterizationStateCreateInfo-pNext-pNext# Each+--     @pNext@ member of any structure (including this one) in the @pNext@+--     chain /must/ be either @NULL@ or a pointer to a valid instance of+--     'Vulkan.Extensions.VK_EXT_conservative_rasterization.PipelineRasterizationConservativeStateCreateInfoEXT',+--     'Vulkan.Extensions.VK_EXT_depth_clip_enable.PipelineRasterizationDepthClipStateCreateInfoEXT',+--     'Vulkan.Extensions.VK_EXT_line_rasterization.PipelineRasterizationLineStateCreateInfoEXT',+--     'Vulkan.Extensions.VK_EXT_provoking_vertex.PipelineRasterizationProvokingVertexStateCreateInfoEXT',+--     'Vulkan.Extensions.VK_AMD_rasterization_order.PipelineRasterizationStateRasterizationOrderAMD',+--     or+--     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'+--+-- -   #VUID-VkPipelineRasterizationStateCreateInfo-sType-unique# The+--     @sType@ value of each struct in the @pNext@ chain /must/ be unique+--+-- -   #VUID-VkPipelineRasterizationStateCreateInfo-flags-zerobitmask#+--     @flags@ /must/ be @0@+--+-- -   #VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-parameter#+--     @polygonMode@ /must/ be a valid+--     'Vulkan.Core10.Enums.PolygonMode.PolygonMode' value+--+-- -   #VUID-VkPipelineRasterizationStateCreateInfo-cullMode-parameter#+--     @cullMode@ /must/ be a valid combination of+--     'Vulkan.Core10.Enums.CullModeFlagBits.CullModeFlagBits' values+--+-- -   #VUID-VkPipelineRasterizationStateCreateInfo-frontFace-parameter#+--     @frontFace@ /must/ be a valid+--     'Vulkan.Core10.Enums.FrontFace.FrontFace' value+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.FundamentalTypes.Bool32',+-- 'Vulkan.Core10.Enums.CullModeFlagBits.CullModeFlags',+-- 'Vulkan.Core10.Enums.FrontFace.FrontFace', 'GraphicsPipelineCreateInfo',+-- 'Vulkan.Core10.Enums.PipelineRasterizationStateCreateFlags.PipelineRasterizationStateCreateFlags',+-- 'Vulkan.Core10.Enums.PolygonMode.PolygonMode',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data PipelineRasterizationStateCreateInfo (es :: [Type]) = PipelineRasterizationStateCreateInfo+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.+    next :: Chain es+  , -- | @flags@ is reserved for future use.+    flags :: PipelineRasterizationStateCreateFlags+  , -- | @depthClampEnable@ controls whether to clamp the fragment’s depth values+    -- as described in+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-depth Depth Test>.+    -- If the pipeline is not created with+    -- 'Vulkan.Extensions.VK_EXT_depth_clip_enable.PipelineRasterizationDepthClipStateCreateInfoEXT'+    -- present then enabling depth clamp will also disable clipping primitives+    -- to the z planes of the frustrum as described in+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#vertexpostproc-clipping Primitive Clipping>.+    -- Otherwise depth clipping is controlled by the state set in+    -- 'Vulkan.Extensions.VK_EXT_depth_clip_enable.PipelineRasterizationDepthClipStateCreateInfoEXT'.+    depthClampEnable :: Bool+  , -- | @rasterizerDiscardEnable@ controls whether primitives are discarded+    -- immediately before the rasterization stage.+    rasterizerDiscardEnable :: Bool+  , -- | @polygonMode@ is the triangle rendering mode. See+    -- 'Vulkan.Core10.Enums.PolygonMode.PolygonMode'.+    polygonMode :: PolygonMode+  , -- | @cullMode@ is the triangle facing direction used for primitive culling.+    -- See 'Vulkan.Core10.Enums.CullModeFlagBits.CullModeFlagBits'.+    cullMode :: CullModeFlags+  , -- | @frontFace@ is a 'Vulkan.Core10.Enums.FrontFace.FrontFace' value+    -- specifying the front-facing triangle orientation to be used for culling.+    frontFace :: FrontFace+  , -- | @depthBiasEnable@ controls whether to bias fragment depth values.+    depthBiasEnable :: Bool+  , -- | @depthBiasConstantFactor@ is a scalar factor controlling the constant+    -- depth value added to each fragment.+    depthBiasConstantFactor :: Float+  , -- | @depthBiasClamp@ is the maximum (or minimum) depth bias of a fragment.+    depthBiasClamp :: Float+  , -- | @depthBiasSlopeFactor@ is a scalar factor applied to a fragment’s slope+    -- in depth bias calculations.+    depthBiasSlopeFactor :: Float+  , -- | @lineWidth@ is the width of rasterized line segments.+    lineWidth :: Float+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (PipelineRasterizationStateCreateInfo (es :: [Type]))+#endif+deriving instance Show (Chain es) => Show (PipelineRasterizationStateCreateInfo es)++instance Extensible PipelineRasterizationStateCreateInfo where+  extensibleTypeName = "PipelineRasterizationStateCreateInfo"+  setNext PipelineRasterizationStateCreateInfo{..} next' = PipelineRasterizationStateCreateInfo{next = next', ..}+  getNext PipelineRasterizationStateCreateInfo{..} = next+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends PipelineRasterizationStateCreateInfo e => b) -> Maybe b+  extends _ f+    | Just Refl <- eqT @e @PipelineRasterizationProvokingVertexStateCreateInfoEXT = Just f+    | Just Refl <- eqT @e @PipelineRasterizationLineStateCreateInfoEXT = Just f+    | Just Refl <- eqT @e @PipelineRasterizationDepthClipStateCreateInfoEXT = Just f+    | Just Refl <- eqT @e @PipelineRasterizationStateStreamCreateInfoEXT = Just f+    | Just Refl <- eqT @e @PipelineRasterizationConservativeStateCreateInfoEXT = Just f+    | Just Refl <- eqT @e @PipelineRasterizationStateRasterizationOrderAMD = Just f+    | otherwise = Nothing++instance (Extendss PipelineRasterizationStateCreateInfo es, PokeChain es) => ToCStruct (PipelineRasterizationStateCreateInfo es) where+  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p PipelineRasterizationStateCreateInfo{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO)+    pNext'' <- fmap castPtr . ContT $ withChain (next)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineRasterizationStateCreateFlags)) (flags)+    lift $ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (depthClampEnable))+    lift $ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (rasterizerDiscardEnable))+    lift $ poke ((p `plusPtr` 28 :: Ptr PolygonMode)) (polygonMode)+    lift $ poke ((p `plusPtr` 32 :: Ptr CullModeFlags)) (cullMode)+    lift $ poke ((p `plusPtr` 36 :: Ptr FrontFace)) (frontFace)+    lift $ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (depthBiasEnable))+    lift $ poke ((p `plusPtr` 44 :: Ptr CFloat)) (CFloat (depthBiasConstantFactor))+    lift $ poke ((p `plusPtr` 48 :: Ptr CFloat)) (CFloat (depthBiasClamp))+    lift $ poke ((p `plusPtr` 52 :: Ptr CFloat)) (CFloat (depthBiasSlopeFactor))+    lift $ poke ((p `plusPtr` 56 :: Ptr CFloat)) (CFloat (lineWidth))+    lift $ f+  cStructSize = 64+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO)+    pNext' <- fmap castPtr . ContT $ withZeroChain @es+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+    lift $ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+    lift $ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))+    lift $ poke ((p `plusPtr` 28 :: Ptr PolygonMode)) (zero)+    lift $ poke ((p `plusPtr` 36 :: Ptr FrontFace)) (zero)+    lift $ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (zero))+    lift $ poke ((p `plusPtr` 44 :: Ptr CFloat)) (CFloat (zero))+    lift $ poke ((p `plusPtr` 48 :: Ptr CFloat)) (CFloat (zero))+    lift $ poke ((p `plusPtr` 52 :: Ptr CFloat)) (CFloat (zero))+    lift $ poke ((p `plusPtr` 56 :: Ptr CFloat)) (CFloat (zero))+    lift $ f++instance (Extendss PipelineRasterizationStateCreateInfo es, PeekChain es) => FromCStruct (PipelineRasterizationStateCreateInfo es) where+  peekCStruct p = do+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+    next <- peekChain (castPtr pNext)+    flags <- peek @PipelineRasterizationStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineRasterizationStateCreateFlags))+    depthClampEnable <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+    rasterizerDiscardEnable <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))+    polygonMode <- peek @PolygonMode ((p `plusPtr` 28 :: Ptr PolygonMode))+    cullMode <- peek @CullModeFlags ((p `plusPtr` 32 :: Ptr CullModeFlags))+    frontFace <- peek @FrontFace ((p `plusPtr` 36 :: Ptr FrontFace))+    depthBiasEnable <- peek @Bool32 ((p `plusPtr` 40 :: Ptr Bool32))+    depthBiasConstantFactor <- peek @CFloat ((p `plusPtr` 44 :: Ptr CFloat))+    depthBiasClamp <- peek @CFloat ((p `plusPtr` 48 :: Ptr CFloat))+    depthBiasSlopeFactor <- peek @CFloat ((p `plusPtr` 52 :: Ptr CFloat))+    lineWidth <- peek @CFloat ((p `plusPtr` 56 :: Ptr CFloat))+    pure $ PipelineRasterizationStateCreateInfo+             next flags (bool32ToBool depthClampEnable) (bool32ToBool rasterizerDiscardEnable) polygonMode cullMode frontFace (bool32ToBool depthBiasEnable) (coerce @CFloat @Float depthBiasConstantFactor) (coerce @CFloat @Float depthBiasClamp) (coerce @CFloat @Float depthBiasSlopeFactor) (coerce @CFloat @Float lineWidth)++instance es ~ '[] => Zero (PipelineRasterizationStateCreateInfo es) where+  zero = PipelineRasterizationStateCreateInfo+           ()+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+++-- | VkPipelineMultisampleStateCreateInfo - Structure specifying parameters+-- of a newly created pipeline multisample state+--+-- = Description+--+-- Each bit in the sample mask is associated with a unique+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask sample index>+-- as defined for the+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask coverage mask>.+-- Each bit b for mask word w in the sample mask corresponds to sample+-- index i, where i = 32 × w + b. @pSampleMask@ has a length equal to ⌈+-- @rasterizationSamples@ \/ 32 ⌉ words.+--+-- If @pSampleMask@ is @NULL@, it is treated as if the mask has all bits+-- set to @1@.+--+-- == Valid Usage+--+-- -   #VUID-VkPipelineMultisampleStateCreateInfo-sampleShadingEnable-00784#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-sampleRateShading sample rate shading>+--     feature is not enabled, @sampleShadingEnable@ /must/ be+--     'Vulkan.Core10.FundamentalTypes.FALSE'+--+-- -   #VUID-VkPipelineMultisampleStateCreateInfo-alphaToOneEnable-00785#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-alphaToOne alpha to one>+--     feature is not enabled, @alphaToOneEnable@ /must/ be+--     'Vulkan.Core10.FundamentalTypes.FALSE'+--+-- -   #VUID-VkPipelineMultisampleStateCreateInfo-minSampleShading-00786#+--     @minSampleShading@ /must/ be in the range [0,1]+--+-- -   #VUID-VkPipelineMultisampleStateCreateInfo-rasterizationSamples-01415#+--     If the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and+--     if the subpass has any color attachments and @rasterizationSamples@+--     is greater than the number of color samples, then+--     @sampleShadingEnable@ /must/ be+--     'Vulkan.Core10.FundamentalTypes.FALSE'+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkPipelineMultisampleStateCreateInfo-sType-sType# @sType@+--     /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO'+--+-- -   #VUID-VkPipelineMultisampleStateCreateInfo-pNext-pNext# Each @pNext@+--     member of any structure (including this one) in the @pNext@ chain+--     /must/ be either @NULL@ or a pointer to a valid instance of+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.PipelineCoverageModulationStateCreateInfoNV',+--     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.PipelineCoverageReductionStateCreateInfoNV',+--     'Vulkan.Extensions.VK_NV_fragment_coverage_to_color.PipelineCoverageToColorStateCreateInfoNV',+--     or+--     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'+--+-- -   #VUID-VkPipelineMultisampleStateCreateInfo-sType-unique# The @sType@+--     value of each struct in the @pNext@ chain /must/ be unique+--+-- -   #VUID-VkPipelineMultisampleStateCreateInfo-flags-zerobitmask#+--     @flags@ /must/ be @0@+--+-- -   #VUID-VkPipelineMultisampleStateCreateInfo-rasterizationSamples-parameter#+--     @rasterizationSamples@ /must/ be a valid+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value+--+-- -   #VUID-VkPipelineMultisampleStateCreateInfo-pSampleMask-parameter# If+--     @pSampleMask@ is not @NULL@, @pSampleMask@ /must/ be a valid pointer+--     to an array of+--     \(\lceil{\mathit{rasterizationSamples} \over 32}\rceil\)+--     'Vulkan.Core10.FundamentalTypes.SampleMask' values+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.FundamentalTypes.Bool32', 'GraphicsPipelineCreateInfo',+-- 'Vulkan.Core10.Enums.PipelineMultisampleStateCreateFlags.PipelineMultisampleStateCreateFlags',+-- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits',+-- 'Vulkan.Core10.FundamentalTypes.SampleMask',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data PipelineMultisampleStateCreateInfo (es :: [Type]) = PipelineMultisampleStateCreateInfo+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.+    next :: Chain es+  , -- | @flags@ is reserved for future use.+    flags :: PipelineMultisampleStateCreateFlags+  , -- | @rasterizationSamples@ is a+    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value+    -- specifying the number of samples used in rasterization.+    rasterizationSamples :: SampleCountFlagBits+  , -- | @sampleShadingEnable@ /can/ be used to enable+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-sampleshading Sample Shading>.+    sampleShadingEnable :: Bool+  , -- | @minSampleShading@ specifies a minimum fraction of sample shading if+    -- @sampleShadingEnable@ is set to 'Vulkan.Core10.FundamentalTypes.TRUE'.+    minSampleShading :: Float+  , -- | @pSampleMask@ is a pointer to an array of+    -- 'Vulkan.Core10.FundamentalTypes.SampleMask' values used in the+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-samplemask sample mask test>.+    sampleMask :: Vector SampleMask+  , -- | @alphaToCoverageEnable@ controls whether a temporary coverage value is+    -- generated based on the alpha component of the fragment’s first color+    -- output as specified in the+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-covg Multisample Coverage>+    -- section.+    alphaToCoverageEnable :: Bool+  , -- | @alphaToOneEnable@ controls whether the alpha component of the+    -- fragment’s first color output is replaced with one as described in+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-covg Multisample Coverage>.+    alphaToOneEnable :: Bool+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (PipelineMultisampleStateCreateInfo (es :: [Type]))+#endif+deriving instance Show (Chain es) => Show (PipelineMultisampleStateCreateInfo es)++instance Extensible PipelineMultisampleStateCreateInfo where+  extensibleTypeName = "PipelineMultisampleStateCreateInfo"+  setNext PipelineMultisampleStateCreateInfo{..} next' = PipelineMultisampleStateCreateInfo{next = next', ..}+  getNext PipelineMultisampleStateCreateInfo{..} = next+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends PipelineMultisampleStateCreateInfo e => b) -> Maybe b+  extends _ f+    | Just Refl <- eqT @e @PipelineCoverageReductionStateCreateInfoNV = Just f+    | Just Refl <- eqT @e @PipelineCoverageModulationStateCreateInfoNV = Just f+    | Just Refl <- eqT @e @PipelineSampleLocationsStateCreateInfoEXT = Just f+    | Just Refl <- eqT @e @PipelineCoverageToColorStateCreateInfoNV = Just f+    | otherwise = Nothing++instance (Extendss PipelineMultisampleStateCreateInfo es, PokeChain es) => ToCStruct (PipelineMultisampleStateCreateInfo es) where+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p PipelineMultisampleStateCreateInfo{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO)+    pNext'' <- fmap castPtr . ContT $ withChain (next)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineMultisampleStateCreateFlags)) (flags)+    lift $ poke ((p `plusPtr` 20 :: Ptr SampleCountFlagBits)) (rasterizationSamples)+    lift $ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (sampleShadingEnable))+    lift $ poke ((p `plusPtr` 28 :: Ptr CFloat)) (CFloat (minSampleShading))+    pSampleMask'' <- case Data.Vector.length (sampleMask) of+      0      -> pure nullPtr+      vecLen -> do+        let requiredLen = case (rasterizationSamples) of+              SampleCountFlagBits n -> (n + 31) `quot` 32+        lift $ unless (requiredLen == fromIntegral vecLen) $+          throwIO $ IOError Nothing InvalidArgument "" "sampleMask must be either empty or contain enough bits to cover all the sample specified by 'rasterizationSamples'" Nothing Nothing+        do+          pPSampleMask' <- ContT $ allocaBytes @SampleMask ((Data.Vector.length ((sampleMask))) * 4)+          lift $ Data.Vector.imapM_ (\i e -> poke (pPSampleMask' `plusPtr` (4 * (i)) :: Ptr SampleMask) (e)) ((sampleMask))+          pure $ pPSampleMask'+    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr SampleMask))) pSampleMask''+    lift $ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (alphaToCoverageEnable))+    lift $ poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (alphaToOneEnable))+    lift $ f+  cStructSize = 48+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO)+    pNext' <- fmap castPtr . ContT $ withZeroChain @es+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+    lift $ poke ((p `plusPtr` 20 :: Ptr SampleCountFlagBits)) (zero)+    lift $ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))+    lift $ poke ((p `plusPtr` 28 :: Ptr CFloat)) (CFloat (zero))+    lift $ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (zero))+    lift $ poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (zero))+    lift $ f++instance (Extendss PipelineMultisampleStateCreateInfo es, PeekChain es) => FromCStruct (PipelineMultisampleStateCreateInfo es) where+  peekCStruct p = do+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+    next <- peekChain (castPtr pNext)+    flags <- peek @PipelineMultisampleStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineMultisampleStateCreateFlags))+    rasterizationSamples <- peek @SampleCountFlagBits ((p `plusPtr` 20 :: Ptr SampleCountFlagBits))+    sampleShadingEnable <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))+    minSampleShading <- peek @CFloat ((p `plusPtr` 28 :: Ptr CFloat))+    pSampleMask <- peek @(Ptr SampleMask) ((p `plusPtr` 32 :: Ptr (Ptr SampleMask)))+    pSampleMask' <- if pSampleMask == nullPtr+      then pure mempty+      else generateM (case rasterizationSamples of+        SampleCountFlagBits n -> (fromIntegral n + 31) `quot` 32) (\i -> peek @SampleMask (((pSampleMask) `advancePtrBytes` (4 * (i)) :: Ptr SampleMask)))+    alphaToCoverageEnable <- peek @Bool32 ((p `plusPtr` 40 :: Ptr Bool32))+    alphaToOneEnable <- peek @Bool32 ((p `plusPtr` 44 :: Ptr Bool32))+    pure $ PipelineMultisampleStateCreateInfo+             next flags rasterizationSamples (bool32ToBool sampleShadingEnable) (coerce @CFloat @Float minSampleShading) pSampleMask' (bool32ToBool alphaToCoverageEnable) (bool32ToBool alphaToOneEnable)++instance es ~ '[] => Zero (PipelineMultisampleStateCreateInfo es) where+  zero = PipelineMultisampleStateCreateInfo+           ()+           zero+           zero+           zero+           zero+           mempty+           zero+           zero+++-- | VkPipelineColorBlendAttachmentState - Structure specifying a pipeline+-- color blend attachment state+--+-- == Valid Usage+--+-- -   #VUID-VkPipelineColorBlendAttachmentState-srcColorBlendFactor-00608#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-dualSrcBlend dual source blending>+--     feature is not enabled, @srcColorBlendFactor@ /must/ not be+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_COLOR',+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_COLOR',+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_ALPHA', or+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA'+--+-- -   #VUID-VkPipelineColorBlendAttachmentState-dstColorBlendFactor-00609#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-dualSrcBlend dual source blending>+--     feature is not enabled, @dstColorBlendFactor@ /must/ not be+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_COLOR',+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_COLOR',+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_ALPHA', or+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA'+--+-- -   #VUID-VkPipelineColorBlendAttachmentState-srcAlphaBlendFactor-00610#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-dualSrcBlend dual source blending>+--     feature is not enabled, @srcAlphaBlendFactor@ /must/ not be+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_COLOR',+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_COLOR',+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_ALPHA', or+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA'+--+-- -   #VUID-VkPipelineColorBlendAttachmentState-dstAlphaBlendFactor-00611#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-dualSrcBlend dual source blending>+--     feature is not enabled, @dstAlphaBlendFactor@ /must/ not be+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_COLOR',+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_COLOR',+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_ALPHA', or+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA'+--+-- -   #VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-01406# If+--     either of @colorBlendOp@ or @alphaBlendOp@ is an+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operation>,+--     then @colorBlendOp@ /must/ equal @alphaBlendOp@+--+-- -   #VUID-VkPipelineColorBlendAttachmentState-advancedBlendIndependentBlend-01407#+--     If+--     'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedPropertiesEXT'::@advancedBlendIndependentBlend@+--     is 'Vulkan.Core10.FundamentalTypes.FALSE' and @colorBlendOp@ is an+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operation>,+--     then @colorBlendOp@ /must/ be the same for all attachments+--+-- -   #VUID-VkPipelineColorBlendAttachmentState-advancedBlendIndependentBlend-01408#+--     If+--     'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedPropertiesEXT'::@advancedBlendIndependentBlend@+--     is 'Vulkan.Core10.FundamentalTypes.FALSE' and @alphaBlendOp@ is an+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operation>,+--     then @alphaBlendOp@ /must/ be the same for all attachments+--+-- -   #VUID-VkPipelineColorBlendAttachmentState-advancedBlendAllOperations-01409#+--     If+--     'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedPropertiesEXT'::@advancedBlendAllOperations@+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', then @colorBlendOp@+--     /must/ not be 'Vulkan.Core10.Enums.BlendOp.BLEND_OP_ZERO_EXT',+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_SRC_EXT',+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_DST_EXT',+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_SRC_OVER_EXT',+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_DST_OVER_EXT',+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_SRC_IN_EXT',+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_DST_IN_EXT',+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_SRC_OUT_EXT',+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_DST_OUT_EXT',+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_SRC_ATOP_EXT',+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_DST_ATOP_EXT',+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_XOR_EXT',+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_INVERT_EXT',+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_INVERT_RGB_EXT',+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_LINEARDODGE_EXT',+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_LINEARBURN_EXT',+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_VIVIDLIGHT_EXT',+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_LINEARLIGHT_EXT',+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_PINLIGHT_EXT',+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_HARDMIX_EXT',+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_PLUS_EXT',+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_PLUS_CLAMPED_EXT',+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_PLUS_CLAMPED_ALPHA_EXT',+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_PLUS_DARKER_EXT',+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_MINUS_EXT',+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_MINUS_CLAMPED_EXT',+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_CONTRAST_EXT',+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_INVERT_OVG_EXT',+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_RED_EXT',+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_GREEN_EXT', or+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_BLUE_EXT'+--+-- -   #VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-01410# If+--     @colorBlendOp@ or @alphaBlendOp@ is an+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operation>,+--     then @colorAttachmentCount@ of the subpass this pipeline is compiled+--     against /must/ be less than or equal to+--     'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedPropertiesEXT'::@advancedBlendMaxColorAttachments@+--+-- -   #VUID-VkPipelineColorBlendAttachmentState-constantAlphaColorBlendFactors-04454#+--     If the @VK_KHR_portability_subset@ extension is enabled, and+--     'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR'::@constantAlphaColorBlendFactors@+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', @srcColorBlendFactor@+--     /must/ not be+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA' or+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA'+--+-- -   #VUID-VkPipelineColorBlendAttachmentState-constantAlphaColorBlendFactors-04455#+--     If the @VK_KHR_portability_subset@ extension is enabled, and+--     'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR'::@constantAlphaColorBlendFactors@+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', @dstColorBlendFactor@+--     /must/ not be+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA' or+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA'+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkPipelineColorBlendAttachmentState-srcColorBlendFactor-parameter#+--     @srcColorBlendFactor@ /must/ be a valid+--     'Vulkan.Core10.Enums.BlendFactor.BlendFactor' value+--+-- -   #VUID-VkPipelineColorBlendAttachmentState-dstColorBlendFactor-parameter#+--     @dstColorBlendFactor@ /must/ be a valid+--     'Vulkan.Core10.Enums.BlendFactor.BlendFactor' value+--+-- -   #VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-parameter#+--     @colorBlendOp@ /must/ be a valid+--     'Vulkan.Core10.Enums.BlendOp.BlendOp' value+--+-- -   #VUID-VkPipelineColorBlendAttachmentState-srcAlphaBlendFactor-parameter#+--     @srcAlphaBlendFactor@ /must/ be a valid+--     'Vulkan.Core10.Enums.BlendFactor.BlendFactor' value+--+-- -   #VUID-VkPipelineColorBlendAttachmentState-dstAlphaBlendFactor-parameter#+--     @dstAlphaBlendFactor@ /must/ be a valid+--     'Vulkan.Core10.Enums.BlendFactor.BlendFactor' value+--+-- -   #VUID-VkPipelineColorBlendAttachmentState-alphaBlendOp-parameter#+--     @alphaBlendOp@ /must/ be a valid+--     'Vulkan.Core10.Enums.BlendOp.BlendOp' value+--+-- -   #VUID-VkPipelineColorBlendAttachmentState-colorWriteMask-parameter#+--     @colorWriteMask@ /must/ be a valid combination of+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.ColorComponentFlagBits'+--     values+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Enums.BlendFactor.BlendFactor',+-- 'Vulkan.Core10.Enums.BlendOp.BlendOp',+-- 'Vulkan.Core10.FundamentalTypes.Bool32',+-- 'Vulkan.Core10.Enums.ColorComponentFlagBits.ColorComponentFlags',+-- 'PipelineColorBlendStateCreateInfo'+data PipelineColorBlendAttachmentState = PipelineColorBlendAttachmentState+  { -- | @blendEnable@ controls whether blending is enabled for the corresponding+    -- color attachment. If blending is not enabled, the source fragment’s+    -- color for that attachment is passed through unmodified.+    blendEnable :: Bool+  , -- | @srcColorBlendFactor@ selects which blend factor is used to determine+    -- the source factors (Sr,Sg,Sb).+    srcColorBlendFactor :: BlendFactor+  , -- | @dstColorBlendFactor@ selects which blend factor is used to determine+    -- the destination factors (Dr,Dg,Db).+    dstColorBlendFactor :: BlendFactor+  , -- | @colorBlendOp@ selects which blend operation is used to calculate the+    -- RGB values to write to the color attachment.+    colorBlendOp :: BlendOp+  , -- | @srcAlphaBlendFactor@ selects which blend factor is used to determine+    -- the source factor Sa.+    srcAlphaBlendFactor :: BlendFactor+  , -- | @dstAlphaBlendFactor@ selects which blend factor is used to determine+    -- the destination factor Da.+    dstAlphaBlendFactor :: BlendFactor+  , -- | @alphaBlendOp@ selects which blend operation is use to calculate the+    -- alpha values to write to the color attachment.+    alphaBlendOp :: BlendOp+  , -- | @colorWriteMask@ is a bitmask of+    -- 'Vulkan.Core10.Enums.ColorComponentFlagBits.ColorComponentFlagBits'+    -- specifying which of the R, G, B, and\/or A components are enabled for+    -- writing, as described for the+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-color-write-mask Color Write Mask>.+    colorWriteMask :: ColorComponentFlags+  }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (PipelineColorBlendAttachmentState)+#endif+deriving instance Show PipelineColorBlendAttachmentState++instance ToCStruct PipelineColorBlendAttachmentState where+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p PipelineColorBlendAttachmentState{..} f = do+    poke ((p `plusPtr` 0 :: Ptr Bool32)) (boolToBool32 (blendEnable))+    poke ((p `plusPtr` 4 :: Ptr BlendFactor)) (srcColorBlendFactor)+    poke ((p `plusPtr` 8 :: Ptr BlendFactor)) (dstColorBlendFactor)+    poke ((p `plusPtr` 12 :: Ptr BlendOp)) (colorBlendOp)+    poke ((p `plusPtr` 16 :: Ptr BlendFactor)) (srcAlphaBlendFactor)+    poke ((p `plusPtr` 20 :: Ptr BlendFactor)) (dstAlphaBlendFactor)+    poke ((p `plusPtr` 24 :: Ptr BlendOp)) (alphaBlendOp)+    poke ((p `plusPtr` 28 :: Ptr ColorComponentFlags)) (colorWriteMask)+    f+  cStructSize = 32+  cStructAlignment = 4+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 4 :: Ptr BlendFactor)) (zero)+    poke ((p `plusPtr` 8 :: Ptr BlendFactor)) (zero)+    poke ((p `plusPtr` 12 :: Ptr BlendOp)) (zero)+    poke ((p `plusPtr` 16 :: Ptr BlendFactor)) (zero)+    poke ((p `plusPtr` 20 :: Ptr BlendFactor)) (zero)+    poke ((p `plusPtr` 24 :: Ptr BlendOp)) (zero)+    f++instance FromCStruct PipelineColorBlendAttachmentState where+  peekCStruct p = do+    blendEnable <- peek @Bool32 ((p `plusPtr` 0 :: Ptr Bool32))+    srcColorBlendFactor <- peek @BlendFactor ((p `plusPtr` 4 :: Ptr BlendFactor))+    dstColorBlendFactor <- peek @BlendFactor ((p `plusPtr` 8 :: Ptr BlendFactor))+    colorBlendOp <- peek @BlendOp ((p `plusPtr` 12 :: Ptr BlendOp))+    srcAlphaBlendFactor <- peek @BlendFactor ((p `plusPtr` 16 :: Ptr BlendFactor))+    dstAlphaBlendFactor <- peek @BlendFactor ((p `plusPtr` 20 :: Ptr BlendFactor))+    alphaBlendOp <- peek @BlendOp ((p `plusPtr` 24 :: Ptr BlendOp))+    colorWriteMask <- peek @ColorComponentFlags ((p `plusPtr` 28 :: Ptr ColorComponentFlags))+    pure $ PipelineColorBlendAttachmentState+             (bool32ToBool blendEnable) srcColorBlendFactor dstColorBlendFactor colorBlendOp srcAlphaBlendFactor dstAlphaBlendFactor alphaBlendOp colorWriteMask++instance Storable PipelineColorBlendAttachmentState where+  sizeOf ~_ = 32+  alignment ~_ = 4+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PipelineColorBlendAttachmentState where+  zero = PipelineColorBlendAttachmentState+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+++-- | VkPipelineColorBlendStateCreateInfo - Structure specifying parameters of+-- a newly created pipeline color blend state+--+-- == Valid Usage+--+-- -   #VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-00605# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-independentBlend independent blending>+--     feature is not enabled, all elements of @pAttachments@ /must/ be+--     identical+--+-- -   #VUID-VkPipelineColorBlendStateCreateInfo-logicOpEnable-00606# If+--     the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-logicOp logic operations>+--     feature is not enabled, @logicOpEnable@ /must/ be+--     'Vulkan.Core10.FundamentalTypes.FALSE'+--+-- -   #VUID-VkPipelineColorBlendStateCreateInfo-logicOpEnable-00607# If+--     @logicOpEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', @logicOp@+--     /must/ be a valid 'Vulkan.Core10.Enums.LogicOp.LogicOp' value+--+-- -   #VUID-VkPipelineColorBlendStateCreateInfo-rasterizationOrderColorAttachmentAccess-06465#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-rasterizationOrderColorAttachmentAccess rasterizationOrderColorAttachmentAccess>+--     feature is not enabled, @flags@ /must/ not include+--     'Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlagBits.PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_ARM'+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkPipelineColorBlendStateCreateInfo-sType-sType# @sType@+--     /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO'+--+-- -   #VUID-VkPipelineColorBlendStateCreateInfo-pNext-pNext# Each @pNext@+--     member of any structure (including this one) in the @pNext@ chain+--     /must/ be either @NULL@ or a pointer to a valid instance of+--     'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PipelineColorBlendAdvancedStateCreateInfoEXT'+--     or+--     'Vulkan.Extensions.VK_EXT_color_write_enable.PipelineColorWriteCreateInfoEXT'+--+-- -   #VUID-VkPipelineColorBlendStateCreateInfo-sType-unique# The @sType@+--     value of each struct in the @pNext@ chain /must/ be unique+--+-- -   #VUID-VkPipelineColorBlendStateCreateInfo-flags-parameter# @flags@+--     /must/ be a valid combination of+--     'Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlagBits.PipelineColorBlendStateCreateFlagBits'+--     values+--+-- -   #VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-parameter# If+--     @attachmentCount@ is not @0@, @pAttachments@ /must/ be a valid+--     pointer to an array of @attachmentCount@ valid+--     'PipelineColorBlendAttachmentState' structures+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.FundamentalTypes.Bool32', 'GraphicsPipelineCreateInfo',+-- 'Vulkan.Core10.Enums.LogicOp.LogicOp',+-- 'PipelineColorBlendAttachmentState',+-- 'Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlagBits.PipelineColorBlendStateCreateFlags',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data PipelineColorBlendStateCreateInfo (es :: [Type]) = PipelineColorBlendStateCreateInfo+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.+    next :: Chain es+  , -- | @flags@ is a bitmask of+    -- 'Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlagBits.PipelineColorBlendStateCreateFlagBits'+    -- specifying additional color blending information.+    flags :: PipelineColorBlendStateCreateFlags+  , -- | @logicOpEnable@ controls whether to apply+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-logicop Logical Operations>.+    logicOpEnable :: Bool+  , -- | @logicOp@ selects which logical operation to apply.+    logicOp :: LogicOp+  , -- | @pAttachments@ is a pointer to an array of+    -- 'PipelineColorBlendAttachmentState' structures defining blend state for+    -- each color attachment.+    attachments :: Vector PipelineColorBlendAttachmentState+  , -- | @blendConstants@ is a pointer to an array of four values used as the R,+    -- G, B, and A components of the blend constant that are used in blending,+    -- depending on the+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-blendfactors blend factor>.+    blendConstants :: (Float, Float, Float, Float)+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (PipelineColorBlendStateCreateInfo (es :: [Type]))+#endif+deriving instance Show (Chain es) => Show (PipelineColorBlendStateCreateInfo es)++instance Extensible PipelineColorBlendStateCreateInfo where+  extensibleTypeName = "PipelineColorBlendStateCreateInfo"+  setNext PipelineColorBlendStateCreateInfo{..} next' = PipelineColorBlendStateCreateInfo{next = next', ..}+  getNext PipelineColorBlendStateCreateInfo{..} = next+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends PipelineColorBlendStateCreateInfo e => b) -> Maybe b+  extends _ f+    | Just Refl <- eqT @e @PipelineColorWriteCreateInfoEXT = Just f+    | Just Refl <- eqT @e @PipelineColorBlendAdvancedStateCreateInfoEXT = Just f+    | otherwise = Nothing++instance (Extendss PipelineColorBlendStateCreateInfo es, PokeChain es) => ToCStruct (PipelineColorBlendStateCreateInfo es) where+  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p PipelineColorBlendStateCreateInfo{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO)+    pNext'' <- fmap castPtr . ContT $ withChain (next)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineColorBlendStateCreateFlags)) (flags)+    lift $ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (logicOpEnable))+    lift $ poke ((p `plusPtr` 24 :: Ptr LogicOp)) (logicOp)+    lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (attachments)) :: Word32))+    pPAttachments' <- ContT $ allocaBytes @PipelineColorBlendAttachmentState ((Data.Vector.length (attachments)) * 32)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPAttachments' `plusPtr` (32 * (i)) :: Ptr PipelineColorBlendAttachmentState) (e)) (attachments)+    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr PipelineColorBlendAttachmentState))) (pPAttachments')+    let pBlendConstants' = lowerArrayPtr ((p `plusPtr` 40 :: Ptr (FixedArray 4 CFloat)))+    lift $ case (blendConstants) of+      (e0, e1, e2, e3) -> do+        poke (pBlendConstants' :: Ptr CFloat) (CFloat (e0))+        poke (pBlendConstants' `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))+        poke (pBlendConstants' `plusPtr` 8 :: Ptr CFloat) (CFloat (e2))+        poke (pBlendConstants' `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))+    lift $ f+  cStructSize = 56+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO)+    pNext' <- fmap castPtr . ContT $ withZeroChain @es+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+    lift $ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+    lift $ poke ((p `plusPtr` 24 :: Ptr LogicOp)) (zero)+    let pBlendConstants' = lowerArrayPtr ((p `plusPtr` 40 :: Ptr (FixedArray 4 CFloat)))+    lift $ case ((zero, zero, zero, zero)) of+      (e0, e1, e2, e3) -> do+        poke (pBlendConstants' :: Ptr CFloat) (CFloat (e0))+        poke (pBlendConstants' `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))+        poke (pBlendConstants' `plusPtr` 8 :: Ptr CFloat) (CFloat (e2))+        poke (pBlendConstants' `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))+    lift $ f++instance (Extendss PipelineColorBlendStateCreateInfo es, PeekChain es) => FromCStruct (PipelineColorBlendStateCreateInfo es) where+  peekCStruct p = do+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+    next <- peekChain (castPtr pNext)+    flags <- peek @PipelineColorBlendStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineColorBlendStateCreateFlags))+    logicOpEnable <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+    logicOp <- peek @LogicOp ((p `plusPtr` 24 :: Ptr LogicOp))+    attachmentCount <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))+    pAttachments <- peek @(Ptr PipelineColorBlendAttachmentState) ((p `plusPtr` 32 :: Ptr (Ptr PipelineColorBlendAttachmentState)))+    pAttachments' <- generateM (fromIntegral attachmentCount) (\i -> peekCStruct @PipelineColorBlendAttachmentState ((pAttachments `advancePtrBytes` (32 * (i)) :: Ptr PipelineColorBlendAttachmentState)))+    let pblendConstants = lowerArrayPtr @CFloat ((p `plusPtr` 40 :: Ptr (FixedArray 4 CFloat)))+    blendConstants0 <- peek @CFloat ((pblendConstants `advancePtrBytes` 0 :: Ptr CFloat))+    blendConstants1 <- peek @CFloat ((pblendConstants `advancePtrBytes` 4 :: Ptr CFloat))+    blendConstants2 <- peek @CFloat ((pblendConstants `advancePtrBytes` 8 :: Ptr CFloat))+    blendConstants3 <- peek @CFloat ((pblendConstants `advancePtrBytes` 12 :: Ptr CFloat))+    pure $ PipelineColorBlendStateCreateInfo+             next flags (bool32ToBool logicOpEnable) logicOp pAttachments' (((coerce @CFloat @Float blendConstants0), (coerce @CFloat @Float blendConstants1), (coerce @CFloat @Float blendConstants2), (coerce @CFloat @Float blendConstants3)))++instance es ~ '[] => Zero (PipelineColorBlendStateCreateInfo es) where+  zero = PipelineColorBlendStateCreateInfo+           ()+           zero+           zero+           zero+           mempty+           (zero, zero, zero, zero)+++-- | VkPipelineDynamicStateCreateInfo - Structure specifying parameters of a+-- newly created pipeline dynamic state+--+-- == Valid Usage+--+-- -   #VUID-VkPipelineDynamicStateCreateInfo-pDynamicStates-01442# Each+--     element of @pDynamicStates@ /must/ be unique+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkPipelineDynamicStateCreateInfo-sType-sType# @sType@ /must/+--     be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO'+--+-- -   #VUID-VkPipelineDynamicStateCreateInfo-pNext-pNext# @pNext@ /must/+--     be @NULL@+--+-- -   #VUID-VkPipelineDynamicStateCreateInfo-flags-zerobitmask# @flags@+--     /must/ be @0@+--+-- -   #VUID-VkPipelineDynamicStateCreateInfo-pDynamicStates-parameter# If+--     @dynamicStateCount@ is not @0@, @pDynamicStates@ /must/ be a valid+--     pointer to an array of @dynamicStateCount@ valid+--     'Vulkan.Core10.Enums.DynamicState.DynamicState' values+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Enums.DynamicState.DynamicState',+-- 'GraphicsPipelineCreateInfo',+-- 'Vulkan.Core10.Enums.PipelineDynamicStateCreateFlags.PipelineDynamicStateCreateFlags',+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data PipelineDynamicStateCreateInfo = PipelineDynamicStateCreateInfo+  { -- | @flags@ is reserved for future use.+    flags :: PipelineDynamicStateCreateFlags+  , -- | @pDynamicStates@ is a pointer to an array of+    -- 'Vulkan.Core10.Enums.DynamicState.DynamicState' values specifying which+    -- pieces of pipeline state will use the values from dynamic state commands+    -- rather than from pipeline state creation information.+    dynamicStates :: Vector DynamicState+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (PipelineDynamicStateCreateInfo)+#endif+deriving instance Show PipelineDynamicStateCreateInfo++instance ToCStruct PipelineDynamicStateCreateInfo where+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p PipelineDynamicStateCreateInfo{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineDynamicStateCreateFlags)) (flags)+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (dynamicStates)) :: Word32))+    pPDynamicStates' <- ContT $ allocaBytes @DynamicState ((Data.Vector.length (dynamicStates)) * 4)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPDynamicStates' `plusPtr` (4 * (i)) :: Ptr DynamicState) (e)) (dynamicStates)+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr DynamicState))) (pPDynamicStates')+    lift $ f+  cStructSize = 32+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    f++instance FromCStruct PipelineDynamicStateCreateInfo where+  peekCStruct p = do+    flags <- peek @PipelineDynamicStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineDynamicStateCreateFlags))+    dynamicStateCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+    pDynamicStates <- peek @(Ptr DynamicState) ((p `plusPtr` 24 :: Ptr (Ptr DynamicState)))+    pDynamicStates' <- generateM (fromIntegral dynamicStateCount) (\i -> peek @DynamicState ((pDynamicStates `advancePtrBytes` (4 * (i)) :: Ptr DynamicState)))+    pure $ PipelineDynamicStateCreateInfo+             flags pDynamicStates'++instance Zero PipelineDynamicStateCreateInfo where+  zero = PipelineDynamicStateCreateInfo+           zero+           mempty+++-- | VkStencilOpState - Structure specifying stencil operation state+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Enums.CompareOp.CompareOp',+-- 'PipelineDepthStencilStateCreateInfo',+-- 'Vulkan.Core10.Enums.StencilOp.StencilOp'+data StencilOpState = StencilOpState+  { -- | @failOp@ is a 'Vulkan.Core10.Enums.StencilOp.StencilOp' value specifying+    -- the action performed on samples that fail the stencil test.+    --+    -- #VUID-VkStencilOpState-failOp-parameter# @failOp@ /must/ be a valid+    -- 'Vulkan.Core10.Enums.StencilOp.StencilOp' value+    failOp :: StencilOp+  , -- | @passOp@ is a 'Vulkan.Core10.Enums.StencilOp.StencilOp' value specifying+    -- the action performed on samples that pass both the depth and stencil+    -- tests.+    --+    -- #VUID-VkStencilOpState-passOp-parameter# @passOp@ /must/ be a valid+    -- 'Vulkan.Core10.Enums.StencilOp.StencilOp' value+    passOp :: StencilOp+  , -- | @depthFailOp@ is a 'Vulkan.Core10.Enums.StencilOp.StencilOp' value+    -- specifying the action performed on samples that pass the stencil test+    -- and fail the depth test.+    --+    -- #VUID-VkStencilOpState-depthFailOp-parameter# @depthFailOp@ /must/ be a+    -- valid 'Vulkan.Core10.Enums.StencilOp.StencilOp' value+    depthFailOp :: StencilOp+  , -- | @compareOp@ is a 'Vulkan.Core10.Enums.CompareOp.CompareOp' value+    -- specifying the comparison operator used in the stencil test.+    --+    -- #VUID-VkStencilOpState-compareOp-parameter# @compareOp@ /must/ be a+    -- valid 'Vulkan.Core10.Enums.CompareOp.CompareOp' value+    compareOp :: CompareOp+  , -- | @compareMask@ selects the bits of the unsigned integer stencil values+    -- participating in the stencil test.+    compareMask :: Word32+  , -- | @writeMask@ selects the bits of the unsigned integer stencil values+    -- updated by the stencil test in the stencil framebuffer attachment.+    writeMask :: Word32+  , -- | @reference@ is an integer reference value that is used in the unsigned+    -- stencil comparison.+    reference :: Word32+  }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (StencilOpState)+#endif+deriving instance Show StencilOpState++instance ToCStruct StencilOpState where+  withCStruct x f = allocaBytes 28 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p StencilOpState{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StencilOp)) (failOp)+    poke ((p `plusPtr` 4 :: Ptr StencilOp)) (passOp)+    poke ((p `plusPtr` 8 :: Ptr StencilOp)) (depthFailOp)+    poke ((p `plusPtr` 12 :: Ptr CompareOp)) (compareOp)+    poke ((p `plusPtr` 16 :: Ptr Word32)) (compareMask)+    poke ((p `plusPtr` 20 :: Ptr Word32)) (writeMask)+    poke ((p `plusPtr` 24 :: Ptr Word32)) (reference)+    f+  cStructSize = 28+  cStructAlignment = 4+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StencilOp)) (zero)+    poke ((p `plusPtr` 4 :: Ptr StencilOp)) (zero)+    poke ((p `plusPtr` 8 :: Ptr StencilOp)) (zero)+    poke ((p `plusPtr` 12 :: Ptr CompareOp)) (zero)+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+    f++instance FromCStruct StencilOpState where+  peekCStruct p = do+    failOp <- peek @StencilOp ((p `plusPtr` 0 :: Ptr StencilOp))+    passOp <- peek @StencilOp ((p `plusPtr` 4 :: Ptr StencilOp))+    depthFailOp <- peek @StencilOp ((p `plusPtr` 8 :: Ptr StencilOp))+    compareOp <- peek @CompareOp ((p `plusPtr` 12 :: Ptr CompareOp))+    compareMask <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+    writeMask <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+    reference <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+    pure $ StencilOpState+             failOp passOp depthFailOp compareOp compareMask writeMask reference++instance Storable StencilOpState where+  sizeOf ~_ = 28+  alignment ~_ = 4+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero StencilOpState where+  zero = StencilOpState+           zero+           zero+           zero+           zero+           zero+           zero+           zero+++-- | VkPipelineDepthStencilStateCreateInfo - Structure specifying parameters+-- of a newly created pipeline depth stencil state+--+-- == Valid Usage+--+-- -   #VUID-VkPipelineDepthStencilStateCreateInfo-depthBoundsTestEnable-00598#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-depthBounds depth bounds testing>+--     feature is not enabled, @depthBoundsTestEnable@ /must/ be+--     'Vulkan.Core10.FundamentalTypes.FALSE'+--+-- -   #VUID-VkPipelineDepthStencilStateCreateInfo-separateStencilMaskRef-04453#+--     If the @VK_KHR_portability_subset@ extension is enabled, and+--     'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR'::@separateStencilMaskRef@+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', and the value of+--     'PipelineDepthStencilStateCreateInfo'::@stencilTestEnable@ is+--     'Vulkan.Core10.FundamentalTypes.TRUE', and the value of+--     'PipelineRasterizationStateCreateInfo'::@cullMode@ is+--     'Vulkan.Core10.Enums.CullModeFlagBits.CULL_MODE_NONE', the value of+--     @reference@ in each of the 'StencilOpState' structs in @front@ and+--     @back@ /must/ be the same+--+-- -   #VUID-VkPipelineDepthStencilStateCreateInfo-rasterizationOrderDepthAttachmentAccess-06463#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-rasterizationOrderDepthAttachmentAccess rasterizationOrderDepthAttachmentAccess>+--     feature is not enabled, @flags@ /must/ not include+--     'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM'+--+-- -   #VUID-VkPipelineDepthStencilStateCreateInfo-rasterizationOrderStencilAttachmentAccess-06464#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-rasterizationOrderStencilAttachmentAccess rasterizationOrderStencilAttachmentAccess>+--     feature is not enabled, @flags@ /must/ not include+--     'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM'+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkPipelineDepthStencilStateCreateInfo-sType-sType# @sType@+--     /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO'+--+-- -   #VUID-VkPipelineDepthStencilStateCreateInfo-pNext-pNext# @pNext@+--     /must/ be @NULL@+--+-- -   #VUID-VkPipelineDepthStencilStateCreateInfo-flags-parameter# @flags@+--     /must/ be a valid combination of+--     'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PipelineDepthStencilStateCreateFlagBits'+--     values+--+-- -   #VUID-VkPipelineDepthStencilStateCreateInfo-depthCompareOp-parameter#+--     @depthCompareOp@ /must/ be a valid+--     'Vulkan.Core10.Enums.CompareOp.CompareOp' value+--+-- -   #VUID-VkPipelineDepthStencilStateCreateInfo-front-parameter# @front@+--     /must/ be a valid 'StencilOpState' structure+--+-- -   #VUID-VkPipelineDepthStencilStateCreateInfo-back-parameter# @back@+--     /must/ be a valid 'StencilOpState' structure+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.FundamentalTypes.Bool32',+-- 'Vulkan.Core10.Enums.CompareOp.CompareOp', 'GraphicsPipelineCreateInfo',+-- 'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PipelineDepthStencilStateCreateFlags',+-- 'StencilOpState', 'Vulkan.Core10.Enums.StructureType.StructureType'+data PipelineDepthStencilStateCreateInfo = PipelineDepthStencilStateCreateInfo+  { -- | @flags@ is a bitmask of+    -- 'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PipelineDepthStencilStateCreateFlagBits'+    -- specifying additional depth\/stencil state information.+    flags :: PipelineDepthStencilStateCreateFlags+  , -- | @depthTestEnable@ controls whether+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-depth depth testing>+    -- is enabled.+    depthTestEnable :: Bool+  , -- | @depthWriteEnable@ controls whether+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-depth-write depth writes>+    -- are enabled when @depthTestEnable@ is+    -- 'Vulkan.Core10.FundamentalTypes.TRUE'. Depth writes are always disabled+    -- when @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.FALSE'.+    depthWriteEnable :: Bool+  , -- | @depthCompareOp@ is the comparison operator used in the+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-depth depth test>.+    depthCompareOp :: CompareOp+  , -- | @depthBoundsTestEnable@ controls whether+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-dbt depth bounds testing>+    -- is enabled.+    depthBoundsTestEnable :: Bool+  , -- | @stencilTestEnable@ controls whether+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-stencil stencil testing>+    -- is enabled.+    stencilTestEnable :: Bool+  , -- | @front@ and @back@ control the parameters of the+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-stencil stencil test>.+    front :: StencilOpState+  , -- No documentation found for Nested "VkPipelineDepthStencilStateCreateInfo" "back"+    back :: StencilOpState+  , -- | @minDepthBounds@ is the minimum depth bound used in the+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-dbt depth bounds test>.+    minDepthBounds :: Float+  , -- | @maxDepthBounds@ is the maximum depth bound used in the+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-dbt depth bounds test>.+    maxDepthBounds :: Float+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (PipelineDepthStencilStateCreateInfo)+#endif+deriving instance Show PipelineDepthStencilStateCreateInfo++instance ToCStruct PipelineDepthStencilStateCreateInfo where+  withCStruct x f = allocaBytes 104 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p PipelineDepthStencilStateCreateInfo{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr PipelineDepthStencilStateCreateFlags)) (flags)+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (depthTestEnable))+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (depthWriteEnable))+    poke ((p `plusPtr` 28 :: Ptr CompareOp)) (depthCompareOp)+    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (depthBoundsTestEnable))+    poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (stencilTestEnable))+    poke ((p `plusPtr` 40 :: Ptr StencilOpState)) (front)+    poke ((p `plusPtr` 68 :: Ptr StencilOpState)) (back)+    poke ((p `plusPtr` 96 :: Ptr CFloat)) (CFloat (minDepthBounds))+    poke ((p `plusPtr` 100 :: Ptr CFloat)) (CFloat (maxDepthBounds))+    f+  cStructSize = 104+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 28 :: Ptr CompareOp)) (zero)+    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 40 :: Ptr StencilOpState)) (zero)+    poke ((p `plusPtr` 68 :: Ptr StencilOpState)) (zero)+    poke ((p `plusPtr` 96 :: Ptr CFloat)) (CFloat (zero))+    poke ((p `plusPtr` 100 :: Ptr CFloat)) (CFloat (zero))+    f++instance FromCStruct PipelineDepthStencilStateCreateInfo where+  peekCStruct p = do+    flags <- peek @PipelineDepthStencilStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineDepthStencilStateCreateFlags))+    depthTestEnable <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+    depthWriteEnable <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))+    depthCompareOp <- peek @CompareOp ((p `plusPtr` 28 :: Ptr CompareOp))+    depthBoundsTestEnable <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))+    stencilTestEnable <- peek @Bool32 ((p `plusPtr` 36 :: Ptr Bool32))+    front <- peekCStruct @StencilOpState ((p `plusPtr` 40 :: Ptr StencilOpState))+    back <- peekCStruct @StencilOpState ((p `plusPtr` 68 :: Ptr StencilOpState))+    minDepthBounds <- peek @CFloat ((p `plusPtr` 96 :: Ptr CFloat))+    maxDepthBounds <- peek @CFloat ((p `plusPtr` 100 :: Ptr CFloat))+    pure $ PipelineDepthStencilStateCreateInfo+             flags (bool32ToBool depthTestEnable) (bool32ToBool depthWriteEnable) depthCompareOp (bool32ToBool depthBoundsTestEnable) (bool32ToBool stencilTestEnable) front back (coerce @CFloat @Float minDepthBounds) (coerce @CFloat @Float maxDepthBounds)++instance Storable PipelineDepthStencilStateCreateInfo where+  sizeOf ~_ = 104+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PipelineDepthStencilStateCreateInfo where+  zero = PipelineDepthStencilStateCreateInfo+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+++-- | VkGraphicsPipelineCreateInfo - Structure specifying parameters of a+-- newly created graphics pipeline+--+-- = Description+--+-- The parameters @basePipelineHandle@ and @basePipelineIndex@ are+-- described in more detail in+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-pipeline-derivatives Pipeline Derivatives>.+--+-- If any shader stage fails to compile, the compile log will be reported+-- back to the application, and+-- 'Vulkan.Core10.Enums.Result.ERROR_INVALID_SHADER_NV' will be generated.+--+-- The state required for a graphics pipeline is divided into+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-vertex-input vertex input state>,+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,+-- and+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output state>.+--+-- Vertex input state is defined by:+--+-- -   'PipelineVertexInputStateCreateInfo'+--+-- -   'PipelineInputAssemblyStateCreateInfo'+--+-- Pre-rasterization shader state is defined by:+--+-- -   'PipelineShaderStageCreateInfo' entries for:+--+--     -   Vertex shaders+--+--     -   Tessellation control shaders+--+--     -   Tessellation evaluation shaders+--+--     -   Geometry shaders+--+--     -   Task shaders+--+--     -   Mesh shaders+--+-- -   Within the 'Vulkan.Core10.Handles.PipelineLayout', all descriptor+--     sets with pre-rasterization shader bindings if+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'+--     was specified.+--+--     -   If+--         'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'+--         was not specified, the full pipeline layout must be specified.+--+-- -   'PipelineViewportStateCreateInfo'+--+-- -   'PipelineRasterizationStateCreateInfo'+--+-- -   'PipelineTessellationStateCreateInfo'+--+-- -   'Vulkan.Core10.Handles.RenderPass' and @subpass@ parameter+--+-- -   The @viewMask@ parameter of+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'+--     (formats are ignored)+--+-- -   'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'+--+-- -   'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'+--+-- Fragment shader state is defined by:+--+-- -   A 'PipelineShaderStageCreateInfo' entry for the fragment shader+--+-- -   Within the 'Vulkan.Core10.Handles.PipelineLayout', all descriptor+--     sets with fragment shader bindings if+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'+--     was specified.+--+--     -   If+--         'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'+--         was not specified, the full pipeline layout must be specified.+--+-- -   'PipelineMultisampleStateCreateInfo' if+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-sampleshading sample shading>+--     is enabled or @renderpass@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   'PipelineDepthStencilStateCreateInfo'+--+-- -   'Vulkan.Core10.Handles.RenderPass' and @subpass@ parameter+--+-- -   The @viewMask@ parameter of+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'+--     (formats are ignored)+--+-- -   'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'+--+-- -   'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'+--+-- -   'Vulkan.Extensions.VK_NV_representative_fragment_test.PipelineRepresentativeFragmentTestStateCreateInfoNV'+--+-- -   Inclusion\/omission of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'+--     flag+--+-- -   Inclusion\/omission of the+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'+--     flag+--+-- Fragment output state is defined by:+--+-- -   'PipelineColorBlendStateCreateInfo'+--+-- -   'Vulkan.Core10.Handles.RenderPass' and @subpass@ parameter+--+-- -   'PipelineMultisampleStateCreateInfo'+--+-- -   'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'+--+-- -   'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'+--+-- -   'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'+--+-- A complete graphics pipeline always includes+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,+-- with other subsets included depending on that state. If the+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>+-- includes a vertex shader, then+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-vertex-input vertex input state>+-- is included in a complete graphics pipeline. If the value of+-- 'PipelineRasterizationStateCreateInfo'::@rasterizerDiscardEnable@ in the+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>+-- is 'Vulkan.Core10.FundamentalTypes.FALSE' or the+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE'+-- dynamic state is enabled+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>+-- and+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>+-- is included in a complete graphics pipeline.+--+-- If different subsets are linked together with pipeline layouts created+-- with+-- 'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT',+-- the final effective pipeline layout is effectively the union of the+-- linked pipeline layouts. When binding descriptor sets for this pipeline,+-- the pipeline layout used /must/ be compatible with this union. This+-- pipeline layout /can/ be overridden when linking with+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT';+-- by providing a 'Vulkan.Core10.Handles.PipelineLayout' that is compatible+-- with this union other than+-- 'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'.+--+-- == Valid Usage+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-00722# If @flags@ contains+--     the+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+--     flag, and @basePipelineIndex@ is -1, @basePipelineHandle@ /must/ be+--     a valid handle to a graphics 'Vulkan.Core10.Handles.Pipeline'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-00723# If @flags@ contains+--     the+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+--     flag, and @basePipelineHandle@ is+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @basePipelineIndex@ /must/+--     be a valid index into the calling command’s @pCreateInfos@ parameter+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-00724# If @flags@ contains+--     the+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+--     flag, and @basePipelineIndex@ is not -1, @basePipelineHandle@ /must/+--     be 'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-00725# If @flags@ contains+--     the+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+--     flag, and @basePipelineHandle@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @basePipelineIndex@ /must/+--     be -1+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-stage-00726# The @stage@ member+--     of each element of @pStages@ /must/ be unique+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-02095# If the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>+--     the geometric shader stages provided in @pStages@ /must/ be either+--     from the mesh shading pipeline (@stage@ is+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_NV'+--     or+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_NV')+--     or from the primitive shading pipeline (@stage@ is+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT',+--     or+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT')+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-stage-02096# If the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>+--     the @stage@ member of one element of @pStages@ /must/ be either+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_NV'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-stage-00728# The @stage@ member+--     of each element of @pStages@ /must/ not be+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00729# If the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>+--     and @pStages@ includes a tessellation control shader stage, it+--     /must/ include a tessellation evaluation shader stage+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00730# If the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>+--     and @pStages@ includes a tessellation evaluation shader stage, it+--     /must/ include a tessellation control shader stage+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00731# If the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>+--     and @pStages@ includes a tessellation control shader stage and a+--     tessellation evaluation shader stage, @pTessellationState@ /must/ be+--     a valid pointer to a valid 'PipelineTessellationStateCreateInfo'+--     structure+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00732# If the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>+--     and @pStages@ includes tessellation shader stages, the shader code+--     of at least one stage /must/ contain an @OpExecutionMode@+--     instruction specifying the type of subdivision in the pipeline+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00733# If the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>+--     and @pStages@ includes tessellation shader stages, and the shader+--     code of both stages contain an @OpExecutionMode@ instruction+--     specifying the type of subdivision in the pipeline, they /must/ both+--     specify the same subdivision mode+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00734# If the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>+--     and @pStages@ includes tessellation shader stages, the shader code+--     of at least one stage /must/ contain an @OpExecutionMode@+--     instruction specifying the output patch size in the pipeline+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00735# If the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>+--     and @pStages@ includes tessellation shader stages, and the shader+--     code of both contain an @OpExecutionMode@ instruction specifying the+--     out patch size in the pipeline, they /must/ both specify the same+--     patch size+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00736# If the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>+--     and @pStages@ includes tessellation shader stages, the @topology@+--     member of @pInputAssembly@ /must/ be+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-topology-00737# If the pipeline+--     is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>+--     and the @topology@ member of @pInputAssembly@ is+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST',+--     @pStages@ /must/ include tessellation shader stages+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00738# If the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>+--     and @pStages@ includes a geometry shader stage, and does not include+--     any tessellation shader stages, its shader code /must/ contain an+--     @OpExecutionMode@ instruction specifying an input primitive type+--     that is+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-geometry-execution compatible>+--     with the primitive topology specified in @pInputAssembly@+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00739# If the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>+--     and @pStages@ includes a geometry shader stage, and also includes+--     tessellation shader stages, its shader code /must/ contain an+--     @OpExecutionMode@ instruction specifying an input primitive type+--     that is+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-geometry-execution compatible>+--     with the primitive topology that is output by the tessellation+--     stages+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00740# If the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>+--     and+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,+--     it includes both a fragment shader and a geometry shader, and the+--     fragment shader code reads from an input variable that is decorated+--     with @PrimitiveId@, then the geometry shader code /must/ write to a+--     matching output variable, decorated with @PrimitiveId@, in all+--     execution paths+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-PrimitiveId-06264# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,+--     it includes a mesh shader and the fragment shader code reads from an+--     input variable that is decorated with @PrimitiveId@, then the mesh+--     shader code /must/ write to a matching output variable, decorated+--     with @PrimitiveId@, in all execution paths+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06038# If @renderPass@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>+--     the fragment shader /must/ not read from any input attachment that+--     is defined as 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' in+--     @subpass@+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00742# If the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>+--     and multiple pre-rasterization shader stages are included in+--     @pStages@, the shader code for the entry points identified by those+--     @pStages@ and the rest of the state identified by this structure+--     /must/ adhere to the pipeline linking rules described in the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces Shader Interfaces>+--     chapter+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-None-04889# If the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>+--     and+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,+--     the fragment shader and last+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>+--     and any relevant state /must/ adhere to the pipeline linking rules+--     described in the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces Shader Interfaces>+--     chapter+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06039# If @renderPass@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,+--     and @subpass@ uses a depth\/stencil attachment in @renderPass@ with+--     a read-only layout for the depth aspect in the+--     'Vulkan.Core10.Pass.AttachmentReference' defined by @subpass@, the+--     @depthWriteEnable@ member of @pDepthStencilState@ /must/ be+--     'Vulkan.Core10.FundamentalTypes.FALSE'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06040# If @renderPass@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,+--     and @subpass@ uses a depth\/stencil attachment in @renderPass@ with+--     a read-only layout for the stencil aspect in the+--     'Vulkan.Core10.Pass.AttachmentReference' defined by @subpass@, the+--     @failOp@, @passOp@ and @depthFailOp@ members of each of the @front@+--     and @back@ members of @pDepthStencilState@ /must/ be+--     'Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06041# If @renderPass@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,+--     then for each color attachment in the subpass, if the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>+--     of the format of the corresponding attachment description do not+--     contain+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT',+--     then the @blendEnable@ member of the corresponding element of the+--     @pAttachments@ member of @pColorBlendState@ /must/ be+--     'Vulkan.Core10.FundamentalTypes.FALSE'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06042# If @renderPass@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,+--     and the subpass uses color attachments, the @attachmentCount@ member+--     of @pColorBlendState@ /must/ be equal to the @colorAttachmentCount@+--     used to create @subpass@+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04130# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,+--     and no element of the @pDynamicStates@ member of @pDynamicState@ is+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' or+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT',+--     the @pViewports@ member of @pViewportState@ /must/ be a valid+--     pointer to an array of @pViewportState->viewportCount@ valid+--     'Viewport' structures+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04131# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,+--     and no element of the @pDynamicStates@ member of @pDynamicState@ is+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' or+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT',+--     the @pScissors@ member of @pViewportState@ /must/ be a valid pointer+--     to an array of @pViewportState->scissorCount@+--     'Vulkan.Core10.FundamentalTypes.Rect2D' structures+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00749# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,+--     and the wide lines feature is not enabled, and no element of the+--     @pDynamicStates@ member of @pDynamicState@ is+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH', the+--     @lineWidth@ member of @pRasterizationState@ /must/ be @1.0@+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00750# If+--     the pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,+--     and the @rasterizerDiscardEnable@ member of @pRasterizationState@ is+--     'Vulkan.Core10.FundamentalTypes.FALSE', @pViewportState@ /must/ be a+--     valid pointer to a valid 'PipelineViewportStateCreateInfo' structure+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pViewportState-04892# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,+--     and the graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE'+--     dynamic state enabled, @pViewportState@ /must/ be a valid pointer to+--     a valid 'PipelineViewportStateCreateInfo' structure+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00751# If+--     the pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,+--     @pMultisampleState@ /must/ be a valid pointer to a valid+--     'PipelineMultisampleStateCreateInfo' structure+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06043# If @renderPass@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,+--     and @subpass@ uses a depth\/stencil attachment, @pDepthStencilState@+--     /must/ be a valid pointer to a valid+--     'PipelineDepthStencilStateCreateInfo' structure+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06044# If @renderPass@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,+--     and @subpass@ uses color attachments, @pColorBlendState@ /must/ be a+--     valid pointer to a valid 'PipelineColorBlendStateCreateInfo'+--     structure+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00754# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,+--     the depth bias clamping feature is not enabled, no element of the+--     @pDynamicStates@ member of @pDynamicState@ is+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS', and the+--     @depthBiasEnable@ member of @pRasterizationState@ is+--     'Vulkan.Core10.FundamentalTypes.TRUE', the @depthBiasClamp@ member+--     of @pRasterizationState@ /must/ be @0.0@+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-02510# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,+--     and the @VK_EXT_depth_range_unrestricted@ extension is not enabled+--     and no element of the @pDynamicStates@ member of @pDynamicState@ is+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS', and+--     the @depthBoundsTestEnable@ member of @pDepthStencilState@ is+--     'Vulkan.Core10.FundamentalTypes.TRUE', the @minDepthBounds@ and+--     @maxDepthBounds@ members of @pDepthStencilState@ /must/ be between+--     @0.0@ and @1.0@, inclusive+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01521# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>+--     or+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,+--     and no element of the @pDynamicStates@ member of @pDynamicState@ is+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT',+--     and the @sampleLocationsEnable@ member of a+--     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'+--     structure included in the @pNext@ chain of @pMultisampleState@ is+--     'Vulkan.Core10.FundamentalTypes.TRUE',+--     @sampleLocationsInfo.sampleLocationGridSize.width@ /must/ evenly+--     divide+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.width@+--     as returned by+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'+--     with a @samples@ parameter equaling @rasterizationSamples@+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01522# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>+--     or+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,+--     and no element of the @pDynamicStates@ member of @pDynamicState@ is+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT',+--     and the @sampleLocationsEnable@ member of a+--     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'+--     structure included in the @pNext@ chain of @pMultisampleState@ is+--     'Vulkan.Core10.FundamentalTypes.TRUE',+--     @sampleLocationsInfo.sampleLocationGridSize.height@ /must/ evenly+--     divide+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.height@+--     as returned by+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'+--     with a @samples@ parameter equaling @rasterizationSamples@+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01523# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>+--     or+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,+--     and no element of the @pDynamicStates@ member of @pDynamicState@ is+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT',+--     and the @sampleLocationsEnable@ member of a+--     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'+--     structure included in the @pNext@ chain of @pMultisampleState@ is+--     'Vulkan.Core10.FundamentalTypes.TRUE',+--     @sampleLocationsInfo.sampleLocationsPerPixel@ /must/ equal+--     @rasterizationSamples@+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-sampleLocationsEnable-01524# If+--     the pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,+--     and the @sampleLocationsEnable@ member of a+--     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'+--     structure included in the @pNext@ chain of @pMultisampleState@ is+--     'Vulkan.Core10.FundamentalTypes.TRUE', the fragment shader code+--     /must/ not statically use the extended instruction+--     @InterpolateAtSample@+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-layout-00756# @layout@ /must/ be+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency consistent>+--     with all shaders specified in @pStages@+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-subpass-00757# If the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,+--     and neither the @VK_AMD_mixed_attachment_samples@ nor the+--     @VK_NV_framebuffer_mixed_samples@ extensions are enabled, and if+--     @subpass@ uses color and\/or depth\/stencil attachments, then the+--     @rasterizationSamples@ member of @pMultisampleState@ /must/ be the+--     same as the sample count for those subpass attachments+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-subpass-01505# If the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,+--     and the @VK_AMD_mixed_attachment_samples@ extension is enabled, and+--     if @subpass@ uses color and\/or depth\/stencil attachments, then the+--     @rasterizationSamples@ member of @pMultisampleState@ /must/ equal+--     the maximum of the sample counts of those subpass attachments+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-subpass-01411# If the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,+--     and the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and+--     if @subpass@ has a depth\/stencil attachment and depth test, stencil+--     test, or depth bounds test are enabled, then the+--     @rasterizationSamples@ member of @pMultisampleState@ /must/ be the+--     same as the sample count of the depth\/stencil attachment+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-subpass-01412# If the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,+--     and the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and+--     if @subpass@ has any color attachments, then the+--     @rasterizationSamples@ member of @pMultisampleState@ /must/ be+--     greater than or equal to the sample count for those subpass+--     attachments+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-coverageReductionMode-02722# If+--     the pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,+--     and the @VK_NV_coverage_reduction_mode@ extension is enabled, the+--     coverage reduction mode specified by+--     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.PipelineCoverageReductionStateCreateInfoNV'::@coverageReductionMode@,+--     the @rasterizationSamples@ member of @pMultisampleState@ and the+--     sample counts for the color and depth\/stencil attachments (if the+--     subpass has them) /must/ be a valid combination returned by+--     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-subpass-00758# If the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,+--     and @subpass@ does not use any color and\/or depth\/stencil+--     attachments, then the @rasterizationSamples@ member of+--     @pMultisampleState@ /must/ follow the rules for a+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass>+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06046# If @renderPass@+--     is a valid renderPass, @subpass@ /must/ be a valid subpass within+--     @renderPass@+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06047# If @renderPass@+--     is a valid renderPass, the pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,+--     and the @renderPass@ has multiview enabled and @subpass@ has more+--     than one bit set in the view mask and @multiviewTessellationShader@+--     is not enabled, then @pStages@ /must/ not include tessellation+--     shaders+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06048# If @renderPass@+--     is a valid renderPass, the pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,+--     and the @renderPass@ has multiview enabled and @subpass@ has more+--     than one bit set in the view mask and @multiviewGeometryShader@ is+--     not enabled, then @pStages@ /must/ not include a geometry shader+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06049# If @renderPass@+--     is a valid renderPass, the pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,+--     and the @renderPass@ has multiview enabled and @subpass@ has more+--     than one bit set in the view mask, shaders in the pipeline /must/+--     not write to the @Layer@ built-in output+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06050# If @renderPass@+--     is a valid renderPass and the pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,+--     and the @renderPass@ has multiview enabled, then all shaders /must/+--     not include variables decorated with the @Layer@ built-in decoration+--     in their interfaces+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-00764# @flags@ /must/ not+--     contain the+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.PIPELINE_CREATE_DISPATCH_BASE'+--     flag+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-01565# If the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>+--     and an input attachment was referenced by an @aspectMask@ at+--     @renderPass@ creation time, the fragment shader /must/ only read+--     from the aspects that were specified for that input attachment+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-layout-01688# The number of+--     resources in @layout@ accessible to each shader stage that is used+--     by the pipeline /must/ be less than or equal to+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPerStageResources@+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01715# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,+--     and no element of the @pDynamicStates@ member of @pDynamicState@ is+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV',+--     and the @viewportWScalingEnable@ member of a+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'+--     structure, included in the @pNext@ chain of @pViewportState@, is+--     'Vulkan.Core10.FundamentalTypes.TRUE', the @pViewportWScalings@+--     member of the+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'+--     /must/ be a pointer to an array of+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'::@viewportCount@+--     valid+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.ViewportWScalingNV'+--     structures+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04056# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,+--     and no element of the @pDynamicStates@ member of @pDynamicState@ is+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV',+--     and if @pViewportState->pNext@ chain includes a+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'+--     structure, and if its @exclusiveScissorCount@ member is not @0@,+--     then its @pExclusiveScissors@ member /must/ be a valid pointer to an+--     array of @exclusiveScissorCount@+--     'Vulkan.Core10.FundamentalTypes.Rect2D' structures+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04057# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,+--     and no element of the @pDynamicStates@ member of @pDynamicState@ is+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV',+--     and if @pViewportState->pNext@ chain includes a+--     'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV'+--     structure, then its @pShadingRatePalettes@ member /must/ be a valid+--     pointer to an array of @viewportCount@ valid+--     'Vulkan.Extensions.VK_NV_shading_rate_image.ShadingRatePaletteNV'+--     structures+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04058# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,+--     and no element of the @pDynamicStates@ member of @pDynamicState@ is+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT',+--     and if @pNext@ chain includes a+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'+--     structure, and if its @discardRectangleCount@ member is not @0@,+--     then its @pDiscardRectangles@ member /must/ be a valid pointer to an+--     array of @discardRectangleCount@+--     'Vulkan.Core10.FundamentalTypes.Rect2D' structures+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pVertexInputState-04910# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-vertex-input vertex input state>,+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT' is+--     not set, @pVertexInputState@ /must/ be a valid pointer to a valid+--     'PipelineVertexInputStateCreateInfo' structure+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-02098# If the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-vertex-input vertex input state>,+--     @pInputAssemblyState@ /must/ be a valid pointer to a valid+--     'PipelineInputAssemblyStateCreateInfo' structure+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-02317# If the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,+--     the @Xfb@ execution mode /can/ be specified by no more than one+--     shader stage in @pStages@+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-02318# If the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,+--     and any shader stage in @pStages@ specifies @Xfb@ execution mode it+--     /must/ be the last+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02319# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,+--     and a+--     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@+--     value other than zero is specified, all variables in the output+--     interface of the entry point being compiled decorated with+--     @Position@, @PointSize@, @ClipDistance@, or @CullDistance@ /must/ be+--     decorated with identical @Stream@ values that match the+--     @rasterizationStream@+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02320# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,+--     and+--     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@+--     is zero, or not specified, all variables in the output interface of+--     the entry point being compiled decorated with @Position@,+--     @PointSize@, @ClipDistance@, or @CullDistance@ /must/ be decorated+--     with a @Stream@ value of zero, or /must/ not specify the @Stream@+--     decoration+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-geometryStreams-02321# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,+--     and the last+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>+--     is a geometry shader, and that geometry shader uses the+--     @GeometryStreams@ capability, then+--     'Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackFeaturesEXT'::@geometryStreams@+--     feature /must/ be enabled+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-None-02322# If the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,+--     and there are any mesh shader stages in the pipeline there /must/+--     not be any shader stage in the pipeline with a @Xfb@ execution mode+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-lineRasterizationMode-02766# If+--     the pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>+--     and at least one of+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>+--     or+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,+--     and @pMultisampleState@ is not @NULL@, the @lineRasterizationMode@+--     member of a+--     'Vulkan.Extensions.VK_EXT_line_rasterization.PipelineRasterizationLineStateCreateInfoEXT'+--     structure included in the @pNext@ chain of @pRasterizationState@ is+--     'Vulkan.Extensions.VK_EXT_line_rasterization.LINE_RASTERIZATION_MODE_BRESENHAM_EXT'+--     or+--     'Vulkan.Extensions.VK_EXT_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT',+--     then the @alphaToCoverageEnable@, @alphaToOneEnable@, and+--     @sampleShadingEnable@ members of @pMultisampleState@ /must/ all be+--     'Vulkan.Core10.FundamentalTypes.FALSE'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-stippledLineEnable-02767# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,+--     the @stippledLineEnable@ member of+--     'Vulkan.Extensions.VK_EXT_line_rasterization.PipelineRasterizationLineStateCreateInfoEXT'+--     is 'Vulkan.Core10.FundamentalTypes.TRUE', and no element of the+--     @pDynamicStates@ member of @pDynamicState@ is+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_EXT',+--     then the @lineStippleFactor@ member of+--     'Vulkan.Extensions.VK_EXT_line_rasterization.PipelineRasterizationLineStateCreateInfoEXT'+--     /must/ be in the range [1,256]+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-03372# @flags@ /must/ not+--     include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-03373# @flags@ /must/ not+--     include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-03374# @flags@ /must/ not+--     include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-03375# @flags@ /must/ not+--     include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-03376# @flags@ /must/ not+--     include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-03377# @flags@ /must/ not+--     include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-03577# @flags@ /must/ not+--     include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-04947# @flags@ /must/ not+--     include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03379# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'+--     is included in the @pDynamicStates@ array then @viewportCount@+--     /must/ be zero+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03380# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'+--     is included in the @pDynamicStates@ array then @scissorCount@ /must/+--     be zero+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04132# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'+--     is included in the @pDynamicStates@ array then+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' /must/ not+--     be present+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04133# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'+--     is included in the @pDynamicStates@ array then+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' /must/ not+--     be present+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04869# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState2LogicOp extendedDynamicState2LogicOp>+--     feature is not enabled, there /must/ be no element of the+--     @pDynamicStates@ member of @pDynamicState@ set to+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04870# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState2PatchControlPoints extendedDynamicState2PatchControlPoints>+--     feature is not enabled, there /must/ be no element of the+--     @pDynamicStates@ member of @pDynamicState@ set to+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-02877# If @flags@ includes+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV',+--     then the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-deviceGeneratedCommands ::deviceGeneratedCommands>+--     feature /must/ be enabled+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-02966# If the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>+--     and @flags@ includes+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV',+--     then all stages /must/ not specify @Xfb@ execution mode+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pipelineCreationCacheControl-02878#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineCreationCacheControl pipelineCreationCacheControl>+--     feature is not enabled, @flags@ /must/ not include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT'+--     or+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04494# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>+--     or+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'+--     is not included in @pDynamicState->pDynamicStates@,+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.width@+--     /must/ be greater than or equal to @1@+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04495# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>+--     or+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'+--     is not included in @pDynamicState->pDynamicStates@,+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.height@+--     /must/ be greater than or equal to @1@+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04496# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>+--     or+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'+--     is not included in @pDynamicState->pDynamicStates@,+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.width@+--     /must/ be a power-of-two value+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04497# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>+--     or+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'+--     is not included in @pDynamicState->pDynamicStates@,+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.height@+--     /must/ be a power-of-two value+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04498# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>+--     or+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'+--     is not included in @pDynamicState->pDynamicStates@,+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.width@+--     /must/ be less than or equal to @4@+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04499# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>+--     or+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'+--     is not included in @pDynamicState->pDynamicStates@,+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.height@+--     /must/ be less than or equal to @4@+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04500# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>+--     or+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'+--     is not included in @pDynamicState->pDynamicStates@, and the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate feature>+--     is not enabled,+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.width@+--     and+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.height@+--     /must/ both be equal to @1@+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-06567# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>+--     or+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'+--     is not included in @pDynamicState->pDynamicStates@,+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@combinerOps@[0]+--     /must/ be a valid+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FragmentShadingRateCombinerOpKHR'+--     value+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-06568# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>+--     or+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'+--     is not included in @pDynamicState->pDynamicStates@,+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@combinerOps@[1]+--     /must/ be a valid+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FragmentShadingRateCombinerOpKHR'+--     value+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04501# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>+--     or+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'+--     is not included in @pDynamicState->pDynamicStates@, and the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitiveFragmentShadingRate primitiveFragmentShadingRate feature>+--     is not enabled,+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@combinerOps@[0]+--     /must/ be+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04502# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>+--     or+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'+--     is not included in @pDynamicState->pDynamicStates@, and the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate feature>+--     is not enabled,+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@combinerOps@[1]+--     /must/ be+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-primitiveFragmentShadingRateWithMultipleViewports-04503#+--     If the pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>+--     and the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>+--     limit is not supported,+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'+--     is not included in @pDynamicState->pDynamicStates@, and+--     'PipelineViewportStateCreateInfo'::@viewportCount@ is greater than+--     @1@, entry points specified in @pStages@ /must/ not write to the+--     @PrimitiveShadingRateKHR@ built-in+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-primitiveFragmentShadingRateWithMultipleViewports-04504#+--     If the pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>+--     and the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>+--     limit is not supported, and entry points specified in @pStages@+--     write to the @ViewportIndex@ built-in, they /must/ not also write to+--     the @PrimitiveShadingRateKHR@ built-in+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-primitiveFragmentShadingRateWithMultipleViewports-04505#+--     If the pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>+--     and the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>+--     limit is not supported, and entry points specified in @pStages@+--     write to the @ViewportMaskNV@ built-in, they /must/ not also write+--     to the @PrimitiveShadingRateKHR@ built-in+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-fragmentShadingRateNonTrivialCombinerOps-04506#+--     If the pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>+--     or+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,+--     the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-fragmentShadingRateNonTrivialCombinerOps fragmentShadingRateNonTrivialCombinerOps>+--     limit is not supported, and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'+--     is not included in @pDynamicState->pDynamicStates@, elements of+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@combinerOps@+--     /must/ be+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR'+--     or+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-None-06569# If the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'+--     is not included in @pDynamicState->pDynamicStates@,+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@shadingRateType@+--     /must/ be a valid+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FragmentShadingRateTypeNV'+--     value+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-06570# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'+--     is not included in @pDynamicState->pDynamicStates@,+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@shadingRate@+--     /must/ be a valid+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FragmentShadingRateNV'+--     value+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-06571# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'+--     is not included in @pDynamicState->pDynamicStates@,+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@combinerOps@[0]+--     /must/ be a valid+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FragmentShadingRateCombinerOpKHR'+--     value+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-06572# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'+--     is not included in @pDynamicState->pDynamicStates@,+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@combinerOps@[1]+--     /must/ be a valid+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FragmentShadingRateCombinerOpKHR'+--     value+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04569# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'+--     is not included in @pDynamicState->pDynamicStates@, and the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-fragmentShadingRateEnums fragmentShadingRateEnums feature>+--     is not enabled,+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@shadingRateType@+--     /must/ be equal to+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04570# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'+--     is not included in @pDynamicState->pDynamicStates@, and the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate feature>+--     is not enabled,+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@shadingRate@+--     /must/ be equal to+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04571# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'+--     is not included in @pDynamicState->pDynamicStates@, and the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitiveFragmentShadingRate primitiveFragmentShadingRate feature>+--     is not enabled,+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@combinerOps@[0]+--     /must/ be+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04572# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'+--     is not included in @pDynamicState->pDynamicStates@, and the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>+--     feature is not enabled,+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@combinerOps@[1]+--     /must/ be+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-fragmentShadingRateNonTrivialCombinerOps-04573#+--     If the pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,+--     and the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-fragmentShadingRateNonTrivialCombinerOps fragmentShadingRateNonTrivialCombinerOps>+--     limit is not supported and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'+--     is not included in @pDynamicState->pDynamicStates@, elements of+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@combinerOps@+--     /must/ be+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR'+--     or+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-None-04574# If the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,+--     and the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-supersampleFragmentShadingRates supersampleFragmentShadingRates>+--     feature is not enabled,+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@shadingRate@+--     /must/ not be equal to+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV',+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV',+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV',+--     or+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-None-04575# If the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,+--     and the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-noInvocationFragmentShadingRates noInvocationFragmentShadingRates>+--     feature is not enabled,+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@shadingRate@+--     /must/ not be equal to+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03578# All+--     elements of the @pDynamicStates@ member of @pDynamicState@ /must/+--     not be+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04807# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>+--     and the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-vertexInputDynamicState vertexInputDynamicState>+--     feature is not enabled, there /must/ be no element of the+--     @pDynamicStates@ member of @pDynamicState@ set to+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04800# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>+--     feature is not enabled, there /must/ be no element of the+--     @pDynamicStates@ member of @pDynamicState@ set to+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-rasterizationSamples-04899# If+--     the pipeline is being created with fragment shader state, and the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_render_pass_shader_resolve VK_QCOM_render_pass_shader_resolve>+--     extension is enabled, and if subpass has any input attachments, and+--     if the subpass description contains+--     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM',+--     then the sample count of the input attachments /must/ equal+--     @rasterizationSamples@+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-sampleShadingEnable-04900# If the+--     pipeline is being created with fragment shader state, and the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_render_pass_shader_resolve VK_QCOM_render_pass_shader_resolve>+--     extension is enabled, and if the subpass description contains+--     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM',+--     then @sampleShadingEnable@ /must/ be false+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-04901# If @flags@ includes+--     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM',+--     then the subpass /must/ be the last subpass in a subpass dependency+--     chain+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-04902# If @flags@ includes+--     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM',+--     and if @pResolveAttachments@ is not @NULL@, then each resolve+--     attachment /must/ be 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06575# If the pipeline+--     is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,+--     or+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,+--     @renderPass@ /must/ be 'Vulkan.Core10.APIConstants.NULL_HANDLE' or a+--     valid render pass object+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-dynamicRendering-06576# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-dynamicRendering dynamicRendering>+--     feature is not enabled and the pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,+--     or+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,+--     @renderPass@ /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-multiview-06577# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiview multiview>+--     feature is not enabled, the pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,+--     or+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,+--     and @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@+--     /must/ be @0@+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06578# If the pipeline+--     is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,+--     or+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,+--     and @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the+--     index of the most significant bit in+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@+--     /must/ be less than+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxMultiviewViewCount maxMultiviewViewCount>+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06579# If the pipeline+--     is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,+--     and @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', and+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@+--     is not 0,+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@+--     /must/ be a valid pointer to an array of @colorAttachmentCount@+--     valid 'Vulkan.Core10.Enums.Format.Format' values+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06580# If the pipeline+--     is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,+--     and @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', each+--     element of+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@+--     /must/ be a valid 'Vulkan.Core10.Enums.Format.Format' value+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06582# If the pipeline+--     is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,+--     @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', and any+--     element of+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@+--     is not 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', that format+--     /must/ be a format with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>+--     that include+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'+--     or+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06583# If the pipeline+--     is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,+--     and @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@+--     /must/ be a valid 'Vulkan.Core10.Enums.Format.Format' value+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06584# If the pipeline+--     is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,+--     and @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@+--     /must/ be a valid 'Vulkan.Core10.Enums.Format.Format' value+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06585# If the pipeline+--     is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,+--     @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', and+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@+--     is not 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a+--     format with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>+--     that include+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06586# If the pipeline+--     is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,+--     @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', and+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@+--     is not 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a+--     format with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>+--     that include+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06587# If the pipeline+--     is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,+--     @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', and+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@+--     is not 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a+--     format that includes a depth aspect+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06588# If the pipeline+--     is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,+--     @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', and+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@+--     is not 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a+--     format that includes a stencil aspect+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06589# If the pipeline+--     is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,+--     @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@+--     is not 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', and+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@+--     is not 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED',+--     @depthAttachmentFormat@ /must/ equal @stencilAttachmentFormat@+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06053# If @renderPass@+--     is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is being+--     created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>+--     and+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,+--     and either of+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::depthAttachmentFormat+--     or+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::stencilAttachmentFormat+--     are not 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED',+--     @pDepthStencilState@ /must/ be a valid pointer to a valid+--     'PipelineDepthStencilStateCreateInfo' structure+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06590# If @renderPass@+--     is 'Vulkan.Core10.APIConstants.NULL_HANDLE' and the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>+--     but not+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,+--     @pDepthStencilState@ /must/ be a valid pointer to a valid+--     'PipelineDepthStencilStateCreateInfo' structure+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06054# If @renderPass@+--     is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is being+--     created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,+--     and+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::colorAttachmentCount+--     is not equal to @0@, @pColorBlendState@ /must/ be a valid pointer to+--     a valid 'PipelineColorBlendStateCreateInfo' structure+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06055# If @renderPass@+--     is 'Vulkan.Core10.APIConstants.NULL_HANDLE' and the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,+--     @pColorBlendState->attachmentCount@ /must/ be equal to+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::colorAttachmentCount+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06056# If @renderPass@+--     is 'Vulkan.Core10.APIConstants.NULL_HANDLE' and the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>+--     the fragment shader /must/ not read from any input attachment+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06057# If @renderPass@+--     is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is being+--     created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,+--     the @viewMask@ member of a+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'+--     structure included in the @pNext@ chain is not @0@, and the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiview-tess multiviewTessellationShader>+--     feature is not enabled, then @pStages@ /must/ not include+--     tessellation shaders+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06058# If @renderPass@+--     is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is being+--     created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,+--     the @viewMask@ member of a+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'+--     structure included in the @pNext@ chain is not @0@, and the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiview-gs multiviewGeometryShader>+--     feature is not enabled, then @pStages@ /must/ not include a geometry+--     shader+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06059# If @renderPass@+--     is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is being+--     created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,+--     and the @viewMask@ member of a+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'+--     structure included in the @pNext@ chain is not @0@, shaders in+--     @pStages@ /must/ not include variables decorated with the @Layer@+--     built-in decoration in their interfaces+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06060# If the pipeline+--     is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>+--     and @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @pColorBlendState->attachmentCount@ /must/ be equal to the+--     @colorAttachmentCount@ member of the+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'+--     structure included in the @pNext@ chain+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06061# If the pipeline+--     is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>+--     and @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     fragment shaders in @pStages@ /must/ not include the+--     @InputAttachment@ capability+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06062# If the pipeline+--     is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>+--     and @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', for+--     each color attachment format defined by the+--     @pColorAttachmentFormats@ member of+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo',+--     if its+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>+--     do not contain+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT',+--     then the @blendEnable@ member of the corresponding element of the+--     @pAttachments@ member of @pColorBlendState@ /must/ be+--     'Vulkan.Core10.FundamentalTypes.FALSE'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06063# If the pipeline+--     is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>+--     and @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', if the+--     @pNext@ chain includes+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'+--     or+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV',+--     the @colorAttachmentCount@ member of that structure /must/ be equal+--     to the value of+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06591# If the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,+--     and the fragment shader code enables+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-fragment-earlytest early fragment tests>,+--     the @flags@ member of 'PipelineDepthStencilStateCreateInfo' /must/+--     not include+--     'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM'+--     or+--     'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06482# If the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>+--     and the @flags@ member of 'PipelineColorBlendStateCreateInfo'+--     includes+--     'Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlagBits.PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_ARM',+--     @renderpass@ /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06483# If the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>+--     and the @flags@ member of 'PipelineDepthStencilStateCreateInfo'+--     includes+--     'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM'+--     or+--     'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM',+--     @renderpass@ /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pColorAttachmentSamples-06592# If+--     the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,+--     elements of the @pColorAttachmentSamples@ member of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'+--     or+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'+--     /must/ be valid+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' values+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-depthStencilAttachmentSamples-06593#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>+--     and the @depthStencilAttachmentSamples@ member of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'+--     or+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'+--     is not 0, it /must/ be a valid+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06484# If the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>+--     and the @flags@ member of 'PipelineColorBlendStateCreateInfo'+--     includes+--     'Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlagBits.PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_ARM'+--     @subpass@ /must/ have been created with+--     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_ARM'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06485# If the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>+--     and the @flags@ member of 'PipelineDepthStencilStateCreateInfo'+--     includes+--     'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM',+--     @subpass@ /must/ have been created with+--     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06486# If the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>+--     and the @flags@ member of 'PipelineDepthStencilStateCreateInfo'+--     includes+--     'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM',+--     @subpass@ /must/ have been created with+--     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pipelineStageCreationFeedbackCount-06594#+--     If+--     'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfo'::@pipelineStageCreationFeedbackCount@+--     is not @0@, it /must/ be equal to @stageCount@+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06595# If @renderPass@+--     is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is being+--     created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>+--     or+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,+--     and+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.MultiviewPerViewAttributesInfoNVX'::@perViewAttributesPositionXOnly@+--     is 'Vulkan.Core10.FundamentalTypes.TRUE' then+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.MultiviewPerViewAttributesInfoNVX'::@perViewAttributes@+--     /must/ also be 'Vulkan.Core10.FundamentalTypes.TRUE'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06596# If+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@+--     includes only one of+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'+--     or+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',+--     and an element of+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@+--     includes the other flag, the value of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.MultiviewPerViewAttributesInfoNVX'::@perViewAttributes@+--     specified in both this pipeline and the library /must/ be equal+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06597# If one element+--     of+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@+--     includes+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'+--     and another element includes+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',+--     the value of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.MultiviewPerViewAttributesInfoNVX'::@perViewAttributes@+--     specified in both libraries /must/ be equal+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06598# If+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@+--     includes only one of+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'+--     or+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',+--     and an element of+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@+--     includes the other flag, the value of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.MultiviewPerViewAttributesInfoNVX'::@perViewAttributesPositionXOnly@+--     specified in both this pipeline and the library /must/ be equal+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06599# If one element+--     of+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@+--     includes+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'+--     and another element includes+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',+--     the value of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.MultiviewPerViewAttributesInfoNVX'::@perViewAttributesPositionXOnly@+--     specified in both libraries /must/ be equal+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-graphicsPipelineLibrary-06606# If+--     the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-graphicsPipelineLibrary graphicsPipelineLibrary>+--     feature is not enabled, @flags@ /must/ not include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-graphicsPipelineLibrary-06607# If+--     the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-graphicsPipelineLibrary graphicsPipelineLibrary>+--     feature is not enabled, the pipeline /must/ be created with a+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-complete complete set of state>+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06608# If the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-complete all possible state subsets>,+--     @flags@ /must/ not include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06609# If @flags@ includes+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT',+--     pipeline libraries included via+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'+--     /must/ have been created with+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06610# If @flags@ includes+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT',+--     pipeline libraries included via+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'+--     /must/ have been created with+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06611# Any pipeline+--     libraries included via+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@+--     /must/ not include any+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets state subset>+--     already defined by this structure or defined by any other pipeline+--     library in+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06612# If+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@+--     includes only one of+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'+--     or+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',+--     and an element of+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@+--     includes the other flag, and @layout@ was not created with+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT',+--     then the @layout@ used by this pipeline and the library /must/ be+--     /identically defined/+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06613# If one element+--     of+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@+--     includes+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'+--     and another element includes+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',+--     and the @layout@ specified by either library was not created with+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT',+--     then the @layout@ used by each library /must/ be /identically+--     defined/+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06614# If+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@+--     includes only one of+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'+--     or+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',+--     an element of+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@+--     includes the other subset, and @layout@ was created with+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT',+--     then the @layout@ used by the library /must/ also have been created+--     with+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06615# If one element+--     of+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@+--     includes+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'+--     and another element includes+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',+--     and the @layout@ specified by either library was created with+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT',+--     then the @layout@ used by both libaries /must/ have been created+--     with+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06616# If+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@+--     includes only one of+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'+--     or+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',+--     an element of+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@+--     includes the other subset, and @layout@ was created with+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT',+--     elements of the @pSetLayouts@ array which @layout@ was created with+--     that are not 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ be+--     /identically defined/ to the element at the same index of+--     @pSetLayouts@ used to create the library’s @layout@+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06617# If one element+--     of+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@+--     includes+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'+--     and another element includes+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',+--     and the @layout@ specified by either library was created with+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT',+--     elements of the @pSetLayouts@ array which either @layout@ was+--     created with that are not 'Vulkan.Core10.APIConstants.NULL_HANDLE'+--     /must/ be /identically defined/ to the element at the same index of+--     @pSetLayouts@ used to create the other library’s @layout@+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06618# If+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@+--     includes only one of+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'+--     or+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',+--     and an element of+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@+--     includes the other flag, any descriptor set layout /N/ specified by+--     @layout@ in both this pipeline and the library which include+--     bindings accessed by shader stages in each /must/ be /identically+--     defined/+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06619# If one element+--     of+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@+--     includes+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'+--     and another element includes+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',+--     any descriptor set layout /N/ specified by @layout@ in both+--     libraries which include bindings accessed by shader stages in each+--     /must/ be /identically defined/+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06620# If+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@+--     includes only one of+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'+--     or+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',+--     and an element of+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@+--     includes the other flag, push constants specified in @layout@ in+--     both this pipeline and the library which are available to shader+--     stages in each /must/ be /identically defined/+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06621# If one element+--     of+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@+--     includes+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'+--     and another element includes+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',+--     push constants specified in @layout@ in both this pipeline and the+--     library which are available to shader stages in each /must/ be+--     /identically defined/+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06679# If+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@+--     includes only one of+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'+--     or+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',+--     an element of+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@+--     includes the other subset, and any element of the @pSetLayouts@+--     array which @layout@ was created with was+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', then the corresponding+--     element of the @pSetLayouts@ array used to create the library’s+--     @layout@ /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06680# If+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@+--     includes only one of+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'+--     or+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',+--     an element of+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@+--     includes the other subset, and any element of the @pSetLayouts@+--     array used to create the library’s @layout@ was+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', then the corresponding+--     element of the @pSetLayouts@ array used to create this pipeline’s+--     @layout@ /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06681# If one element+--     of+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@+--     includes+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'+--     and another element includes+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',+--     and any element of the @pSetLayouts@ array used to create each+--     library’s @layout@ was 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     then the corresponding element of the @pSetLayouts@ array used to+--     create the other library’s @layout@ /must/ not be+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06682# If+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@+--     includes both+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'+--     and+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',+--     @layout@ /must/ have been created with no elements of the+--     @pSetLayouts@ array set to 'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06683# If+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@+--     includes+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'+--     and @pRasterizationState@->@rasterizerDiscardEnable@ is+--     'Vulkan.Core10.FundamentalTypes.TRUE', @layout@ /must/ have been+--     created with no elements of the @pSetLayouts@ array set to+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06684# If+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@+--     includes at least one of and no more than two of+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT',+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',+--     or+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT',+--     and an element of+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@+--     includes one of the other flags, the value of @subpass@ /must/ be+--     equal to that used to create the library+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06623# If one element+--     of+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@+--     includes at least one of and no more than two of+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT',+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',+--     or+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT',+--     and another element of+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@+--     includes one of the other flags, the value of @subpass@ used to+--     create each library /must/ be identical+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderpass-06624# If @renderpass@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@+--     includes at least one of and no more than two of+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT',+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',+--     or+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT',+--     and an element of+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@+--     includes one of the other flags, @renderPass@ /must/ be compatible+--     with that used to create the library+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderpass-06625# If @renderpass@+--     is 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@+--     includes at least one of and no more than two of+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT',+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',+--     or+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT',+--     and an element of+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@+--     includes one of the other flags, the value of @renderPass@ used to+--     create that library /must/ also be+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06626# If+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@+--     includes at least one of and no more than two of+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT',+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',+--     or+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT',+--     an element of+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@+--     includes one of the other flags, and @renderPass@ is+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@+--     used by this pipeline and that specified by the library /must/ be+--     identical+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06627# If one element+--     of+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@+--     includes at least one of and no more than two of+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT',+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',+--     or+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT',+--     another element of+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@+--     includes one of the other flags, and @renderPass@ was+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' for both libraries, the+--     value of+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@+--     set by each library /must/ be identical+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06628# If one element+--     of+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@+--     includes at least one of and no more than two of+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT',+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',+--     or+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT',+--     and another element of+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@+--     includes one of the other flags, the @renderPass@ objects used to+--     create each library /must/ be compatible or all equal to+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pMultisampleState-06629# If the+--     pipeline is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>+--     @pMultisampleState@ /must/ be @NULL@ or a valid pointer to a valid+--     'PipelineMultisampleStateCreateInfo' structure+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderpass-06631# If the pipeline+--     is being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>+--     and @renderpass@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     then @pMultisampleState@ /must/ not be @NULL@+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-Input-06632# If the pipeline is+--     being created with+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>+--     with a fragment shader that either enables+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-sampleshading sample shading>+--     or decorates any variable in the @Input@ storage class with+--     @Sample@, then @pMultisampleState@ /must/ not be @NULL@+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06633# If+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@+--     includes+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT'+--     with a @pMultisampleState@ that was not @NULL@, and an element of+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@+--     was created with+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT',+--     @pMultisampleState@ /must/ be /identically defined/ to that used to+--     create the library+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06634# If an element+--     of+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@+--     was created with+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT'+--     with a @pMultisampleState@ that was not @NULL@, and if+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@+--     includes+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT',+--     @pMultisampleState@ /must/ be /identically defined/ to that used to+--     create the library+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06635# If one element+--     of+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@+--     was created with+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT'+--     with a @pMultisampleState@ that was not @NULL@, and if a different+--     element of+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@+--     was created with+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT',+--     the @pMultisampleState@ used to create each library /must/ be+--     /identically defined/+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06636# If one element+--     of+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@+--     was created with+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT'+--     and a value of @pMultisampleState->sampleShading@ equal+--     'Vulkan.Core10.FundamentalTypes.TRUE', and if a different element of+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@+--     was created with+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',+--     the @pMultisampleState@ used to create each library /must/ be+--     /identically defined/+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06637# If+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@+--     includes+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT',+--     @pMultisampleState->sampleShading@ is+--     'Vulkan.Core10.FundamentalTypes.TRUE', and an element of+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@+--     was created with+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',+--     the @pMultisampleState@ used to create that library /must/ be+--     /identically defined/ @pMultisampleState@+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06638# If+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@+--     includes only one of+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'+--     or+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',+--     and an element of+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@+--     includes the other flag, values specified in+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'+--     for both this pipeline and that library /must/ be identical+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06639# If one element+--     of+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@+--     includes+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'+--     and another element includes+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',+--     values specified in+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'+--     for both this pipeline and that library /must/ be identical+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06640# If+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@+--     includes+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'+--     or+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',+--     @pStages@ /must/ be a valid pointer to an array of @stageCount@+--     valid 'PipelineShaderStageCreateInfo' structures+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06641# If+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@+--     includes+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT',+--     @pRasterizationState@ /must/ be a valid pointer to a valid+--     'PipelineRasterizationStateCreateInfo' structure+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06642# If+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@+--     includes+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'+--     or+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',+--     @layout@ /must/ be a valid 'Vulkan.Core10.Handles.PipelineLayout'+--     handle+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06643# If+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@+--     includes+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT',+--     or+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT',+--     and @renderPass@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @renderPass@ /must/ be a valid 'Vulkan.Core10.Handles.RenderPass'+--     handle+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06644# If+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@+--     includes+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'+--     or+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',+--     @stageCount@ /must/ be greater than @0@+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06645# If+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@+--     is non-zero, if @flags@ includes+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR',+--     any libraries /must/ have also been created with+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06646# If+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@+--     includes more than one library, and any library was created with+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR',+--     all libraries /must/ have also been created with+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06647# If+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@+--     includes at least one library,+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@+--     is non-zero, and any library was created with+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR',+--     @flags@ /must/ include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-libraryCount-06648# If the+--     pipeline is not created with a+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-complete complete set of state>,+--     or+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@libraryCount@+--     is not @0@,+--     'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsPipelineShaderGroupsCreateInfoNV'::@groupCount@+--     and+--     'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsPipelineShaderGroupsCreateInfoNV'::@pipelineCount@+--     /must/ be @0@+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-libraryCount-06649# If the+--     pipeline is created with a+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-complete complete set of state>,+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@libraryCount@+--     is @0@, and the @pNext@ chain includes an instance of+--     'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsPipelineShaderGroupsCreateInfoNV',+--     'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsPipelineShaderGroupsCreateInfoNV'::@groupCount@+--     /must/ be greater than @0@+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06650# If @flags@ includes+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT'+--     and the pipeline includes a+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-complete complete set of state>+--     specified entirely by libraries, @pipelineLayout@ /must/ be either+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', or a+--     'Vulkan.Core10.Handles.PipelineLayout' that was created without+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'+--     but would be compatible with the union of the pipeline layouts used+--     in the libraries if it had included+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-sType-sType# @sType@ /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pNext-pNext# Each @pNext@ member+--     of any structure (including this one) in the @pNext@ chain /must/ be+--     either @NULL@ or a pointer to a valid instance of+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD',+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT',+--     'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsPipelineShaderGroupsCreateInfoNV',+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.MultiviewPerViewAttributesInfoNVX',+--     'Vulkan.Extensions.VK_AMD_pipeline_compiler_control.PipelineCompilerControlCreateInfoAMD',+--     'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfo',+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT',+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV',+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR',+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR',+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo',+--     or+--     'Vulkan.Extensions.VK_NV_representative_fragment_test.PipelineRepresentativeFragmentTestStateCreateInfoNV'+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-sType-unique# The @sType@ value+--     of each struct in the @pNext@ chain /must/ be unique+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-parameter# @flags@ /must/+--     be a valid combination of+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'+--     values+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-parameter# If+--     @pDynamicState@ is not @NULL@, @pDynamicState@ /must/ be a valid+--     pointer to a valid 'PipelineDynamicStateCreateInfo' structure+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-commonparent# Each of+--     @basePipelineHandle@, @layout@, and @renderPass@ that are valid+--     handles of non-ignored parameters /must/ have been created,+--     allocated, or retrieved from the same 'Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,+-- 'Vulkan.Core10.Handles.Pipeline', 'PipelineColorBlendStateCreateInfo',+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlags',+-- 'PipelineDepthStencilStateCreateInfo', 'PipelineDynamicStateCreateInfo',+-- 'PipelineInputAssemblyStateCreateInfo',+-- 'Vulkan.Core10.Handles.PipelineLayout',+-- 'PipelineMultisampleStateCreateInfo',+-- 'PipelineRasterizationStateCreateInfo', 'PipelineShaderStageCreateInfo',+-- 'PipelineTessellationStateCreateInfo',+-- 'PipelineVertexInputStateCreateInfo', 'PipelineViewportStateCreateInfo',+-- 'Vulkan.Core10.Handles.RenderPass',+-- 'Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createGraphicsPipelines'+data GraphicsPipelineCreateInfo (es :: [Type]) = GraphicsPipelineCreateInfo+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.+    next :: Chain es+  , -- | @flags@ is a bitmask of+    -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'+    -- specifying how the pipeline will be generated.+    flags :: PipelineCreateFlags+  , -- | @stageCount@ is the number of entries in the @pStages@ array.+    stageCount :: Word32+  , -- | @pStages@ is a pointer to an array of @stageCount@+    -- 'PipelineShaderStageCreateInfo' structures describing the set of the+    -- shader stages to be included in the graphics pipeline.+    stages :: Vector (SomeStruct PipelineShaderStageCreateInfo)+  , -- | @pVertexInputState@ is a pointer to a+    -- 'PipelineVertexInputStateCreateInfo' structure defining vertex input+    -- state for use with vertex shading.+    vertexInputState :: Maybe (SomeStruct PipelineVertexInputStateCreateInfo)+  , -- | @pInputAssemblyState@ is a pointer to a+    -- 'PipelineInputAssemblyStateCreateInfo' structure which determines input+    -- assembly behavior for vertex shading, as described in+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#drawing Drawing Commands>.+    inputAssemblyState :: Maybe PipelineInputAssemblyStateCreateInfo+  , -- | @pTessellationState@ is a pointer to a+    -- 'PipelineTessellationStateCreateInfo' structure defining tessellation+    -- state used by tessellation shaders.+    tessellationState :: Maybe (SomeStruct PipelineTessellationStateCreateInfo)+  , -- | @pViewportState@ is a pointer to a 'PipelineViewportStateCreateInfo'+    -- structure defining viewport state used when rasterization is enabled.+    viewportState :: Maybe (SomeStruct PipelineViewportStateCreateInfo)+  , -- | @pRasterizationState@ is a pointer to a+    -- 'PipelineRasterizationStateCreateInfo' structure defining rasterization+    -- state.+    rasterizationState :: Maybe (SomeStruct PipelineRasterizationStateCreateInfo)+  , -- | @pMultisampleState@ is a pointer to a+    -- 'PipelineMultisampleStateCreateInfo' structure defining multisample+    -- state used when rasterization is enabled.+    multisampleState :: Maybe (SomeStruct PipelineMultisampleStateCreateInfo)+  , -- | @pDepthStencilState@ is a pointer to a+    -- 'PipelineDepthStencilStateCreateInfo' structure defining depth\/stencil+    -- state used when rasterization is enabled for depth or stencil+    -- attachments accessed during rendering.+    depthStencilState :: Maybe PipelineDepthStencilStateCreateInfo+  , -- | @pColorBlendState@ is a pointer to a 'PipelineColorBlendStateCreateInfo'+    -- structure defining color blend state used when rasterization is enabled+    -- for any color attachments accessed during rendering.+    colorBlendState :: Maybe (SomeStruct PipelineColorBlendStateCreateInfo)+  , -- | @pDynamicState@ is a pointer to a 'PipelineDynamicStateCreateInfo'+    -- structure defining which properties of the pipeline state object are+    -- dynamic and /can/ be changed independently of the pipeline state. This+    -- /can/ be @NULL@, which means no state in the pipeline is considered+    -- dynamic.+    dynamicState :: Maybe PipelineDynamicStateCreateInfo+  , -- | @layout@ is the description of binding locations used by both the+    -- pipeline and descriptor sets used with the pipeline.+    layout :: PipelineLayout+  , -- | @renderPass@ is a handle to a render pass object describing the+    -- environment in which the pipeline will be used. The pipeline /must/ only+    -- be used with a render pass instance compatible with the one provided.+    -- See+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-compatibility Render Pass Compatibility>+    -- for more information.+    renderPass :: RenderPass+  , -- | @subpass@ is the index of the subpass in the render pass where this+    -- pipeline will be used.+    subpass :: Word32+  , -- | @basePipelineHandle@ is a pipeline to derive from.+    basePipelineHandle :: Pipeline+  , -- | @basePipelineIndex@ is an index into the @pCreateInfos@ parameter to use+    -- as a pipeline to derive from.+    basePipelineIndex :: Int32+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (GraphicsPipelineCreateInfo (es :: [Type]))+#endif+deriving instance Show (Chain es) => Show (GraphicsPipelineCreateInfo es)++instance Extensible GraphicsPipelineCreateInfo where+  extensibleTypeName = "GraphicsPipelineCreateInfo"+  setNext GraphicsPipelineCreateInfo{..} next' = GraphicsPipelineCreateInfo{next = next', ..}+  getNext GraphicsPipelineCreateInfo{..} = next+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends GraphicsPipelineCreateInfo e => b) -> Maybe b+  extends _ f+    | Just Refl <- eqT @e @GraphicsPipelineLibraryCreateInfoEXT = Just f+    | Just Refl <- eqT @e @MultiviewPerViewAttributesInfoNVX = Just f+    | Just Refl <- eqT @e @AttachmentSampleCountInfoAMD = Just f+    | Just Refl <- eqT @e @PipelineRenderingCreateInfo = Just f+    | Just Refl <- eqT @e @PipelineFragmentShadingRateEnumStateCreateInfoNV = Just f+    | Just Refl <- eqT @e @PipelineFragmentShadingRateStateCreateInfoKHR = Just f+    | Just Refl <- eqT @e @PipelineLibraryCreateInfoKHR = Just f+    | Just Refl <- eqT @e @PipelineCompilerControlCreateInfoAMD = Just f+    | Just Refl <- eqT @e @PipelineCreationFeedbackCreateInfo = Just f+    | Just Refl <- eqT @e @PipelineRepresentativeFragmentTestStateCreateInfoNV = Just f+    | Just Refl <- eqT @e @PipelineDiscardRectangleStateCreateInfoEXT = Just f+    | Just Refl <- eqT @e @GraphicsPipelineShaderGroupsCreateInfoNV = Just f+    | otherwise = Nothing++instance (Extendss GraphicsPipelineCreateInfo es, PokeChain es) => ToCStruct (GraphicsPipelineCreateInfo es) where+  withCStruct x f = allocaBytes 144 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p GraphicsPipelineCreateInfo{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO)+    pNext'' <- fmap castPtr . ContT $ withChain (next)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineCreateFlags)) (flags)+    let pStagesLength = Data.Vector.length $ (stages)+    stageCount'' <- lift $ if (stageCount) == 0+      then pure $ fromIntegral pStagesLength+      else do+        unless (fromIntegral pStagesLength == (stageCount) || pStagesLength == 0) $+          throwIO $ IOError Nothing InvalidArgument "" "pStages must be empty or have 'stageCount' elements" Nothing Nothing+        pure (stageCount)+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (stageCount'')+    pStages'' <- if Data.Vector.null (stages)+      then pure nullPtr+      else do+        pPStages <- ContT $ allocaBytes @(PipelineShaderStageCreateInfo _) (((Data.Vector.length (stages))) * 48)+        Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPStages `plusPtr` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _))) (e) . ($ ())) ((stages))+        pure $ pPStages+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _)))) pStages''+    pVertexInputState'' <- case (vertexInputState) of+      Nothing -> pure nullPtr+      Just j -> ContT @_ @_ @(Ptr (PipelineVertexInputStateCreateInfo '[])) $ \cont -> withSomeCStruct @PipelineVertexInputStateCreateInfo (j) (cont . castPtr)+    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr (PipelineVertexInputStateCreateInfo _)))) pVertexInputState''+    pInputAssemblyState'' <- case (inputAssemblyState) of+      Nothing -> pure nullPtr+      Just j -> ContT $ withCStruct (j)+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr PipelineInputAssemblyStateCreateInfo))) pInputAssemblyState''+    pTessellationState'' <- case (tessellationState) of+      Nothing -> pure nullPtr+      Just j -> ContT @_ @_ @(Ptr (PipelineTessellationStateCreateInfo '[])) $ \cont -> withSomeCStruct @PipelineTessellationStateCreateInfo (j) (cont . castPtr)+    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr (PipelineTessellationStateCreateInfo _)))) pTessellationState''+    pViewportState'' <- case (viewportState) of+      Nothing -> pure nullPtr+      Just j -> ContT @_ @_ @(Ptr (PipelineViewportStateCreateInfo '[])) $ \cont -> withSomeCStruct @PipelineViewportStateCreateInfo (j) (cont . castPtr)+    lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr (PipelineViewportStateCreateInfo _)))) pViewportState''+    pRasterizationState'' <- case (rasterizationState) of+      Nothing -> pure nullPtr+      Just j -> ContT @_ @_ @(Ptr (PipelineRasterizationStateCreateInfo '[])) $ \cont -> withSomeCStruct @PipelineRasterizationStateCreateInfo (j) (cont . castPtr)+    lift $ poke ((p `plusPtr` 64 :: Ptr (Ptr (PipelineRasterizationStateCreateInfo _)))) pRasterizationState''+    pMultisampleState'' <- case (multisampleState) of+      Nothing -> pure nullPtr+      Just j -> ContT @_ @_ @(Ptr (PipelineMultisampleStateCreateInfo '[])) $ \cont -> withSomeCStruct @PipelineMultisampleStateCreateInfo (j) (cont . castPtr)+    lift $ poke ((p `plusPtr` 72 :: Ptr (Ptr (PipelineMultisampleStateCreateInfo _)))) pMultisampleState''+    pDepthStencilState'' <- case (depthStencilState) of+      Nothing -> pure nullPtr+      Just j -> ContT $ withCStruct (j)+    lift $ poke ((p `plusPtr` 80 :: Ptr (Ptr PipelineDepthStencilStateCreateInfo))) pDepthStencilState''+    pColorBlendState'' <- case (colorBlendState) of+      Nothing -> pure nullPtr+      Just j -> ContT @_ @_ @(Ptr (PipelineColorBlendStateCreateInfo '[])) $ \cont -> withSomeCStruct @PipelineColorBlendStateCreateInfo (j) (cont . castPtr)+    lift $ poke ((p `plusPtr` 88 :: Ptr (Ptr (PipelineColorBlendStateCreateInfo _)))) pColorBlendState''+    pDynamicState'' <- case (dynamicState) of+      Nothing -> pure nullPtr+      Just j -> ContT $ withCStruct (j)+    lift $ poke ((p `plusPtr` 96 :: Ptr (Ptr PipelineDynamicStateCreateInfo))) pDynamicState''+    lift $ poke ((p `plusPtr` 104 :: Ptr PipelineLayout)) (layout)+    lift $ poke ((p `plusPtr` 112 :: Ptr RenderPass)) (renderPass)+    lift $ poke ((p `plusPtr` 120 :: Ptr Word32)) (subpass)+    lift $ poke ((p `plusPtr` 128 :: Ptr Pipeline)) (basePipelineHandle)+    lift $ poke ((p `plusPtr` 136 :: Ptr Int32)) (basePipelineIndex)+    lift $ f+  cStructSize = 144+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO)+    pNext' <- fmap castPtr . ContT $ withZeroChain @es+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+    lift $ poke ((p `plusPtr` 120 :: Ptr Word32)) (zero)+    lift $ poke ((p `plusPtr` 136 :: Ptr Int32)) (zero)+    lift $ f++instance (Extendss GraphicsPipelineCreateInfo es, PeekChain es) => FromCStruct (GraphicsPipelineCreateInfo es) where+  peekCStruct p = do+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+    next <- peekChain (castPtr pNext)+    flags <- peek @PipelineCreateFlags ((p `plusPtr` 16 :: Ptr PipelineCreateFlags))+    stageCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+    pStages <- peek @(Ptr (PipelineShaderStageCreateInfo _)) ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _))))+    let pStagesLength = if pStages == nullPtr then 0 else (fromIntegral stageCount)+    pStages' <- generateM pStagesLength (\i -> peekSomeCStruct (forgetExtensions ((pStages `advancePtrBytes` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _)))))+    pVertexInputState <- peek @(Ptr (PipelineVertexInputStateCreateInfo _)) ((p `plusPtr` 32 :: Ptr (Ptr (PipelineVertexInputStateCreateInfo _))))+    pVertexInputState' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pVertexInputState+    pInputAssemblyState <- peek @(Ptr PipelineInputAssemblyStateCreateInfo) ((p `plusPtr` 40 :: Ptr (Ptr PipelineInputAssemblyStateCreateInfo)))+    pInputAssemblyState' <- maybePeek (\j -> peekCStruct @PipelineInputAssemblyStateCreateInfo (j)) pInputAssemblyState+    pTessellationState <- peek @(Ptr (PipelineTessellationStateCreateInfo _)) ((p `plusPtr` 48 :: Ptr (Ptr (PipelineTessellationStateCreateInfo _))))+    pTessellationState' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pTessellationState+    pViewportState <- peek @(Ptr (PipelineViewportStateCreateInfo _)) ((p `plusPtr` 56 :: Ptr (Ptr (PipelineViewportStateCreateInfo _))))+    pViewportState' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pViewportState+    pRasterizationState <- peek @(Ptr (PipelineRasterizationStateCreateInfo _)) ((p `plusPtr` 64 :: Ptr (Ptr (PipelineRasterizationStateCreateInfo _))))+    pRasterizationState' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pRasterizationState+    pMultisampleState <- peek @(Ptr (PipelineMultisampleStateCreateInfo _)) ((p `plusPtr` 72 :: Ptr (Ptr (PipelineMultisampleStateCreateInfo _))))+    pMultisampleState' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pMultisampleState+    pDepthStencilState <- peek @(Ptr PipelineDepthStencilStateCreateInfo) ((p `plusPtr` 80 :: Ptr (Ptr PipelineDepthStencilStateCreateInfo)))+    pDepthStencilState' <- maybePeek (\j -> peekCStruct @PipelineDepthStencilStateCreateInfo (j)) pDepthStencilState+    pColorBlendState <- peek @(Ptr (PipelineColorBlendStateCreateInfo _)) ((p `plusPtr` 88 :: Ptr (Ptr (PipelineColorBlendStateCreateInfo _))))+    pColorBlendState' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pColorBlendState+    pDynamicState <- peek @(Ptr PipelineDynamicStateCreateInfo) ((p `plusPtr` 96 :: Ptr (Ptr PipelineDynamicStateCreateInfo)))+    pDynamicState' <- maybePeek (\j -> peekCStruct @PipelineDynamicStateCreateInfo (j)) pDynamicState+    layout <- peek @PipelineLayout ((p `plusPtr` 104 :: Ptr PipelineLayout))+    renderPass <- peek @RenderPass ((p `plusPtr` 112 :: Ptr RenderPass))+    subpass <- peek @Word32 ((p `plusPtr` 120 :: Ptr Word32))+    basePipelineHandle <- peek @Pipeline ((p `plusPtr` 128 :: Ptr Pipeline))+    basePipelineIndex <- peek @Int32 ((p `plusPtr` 136 :: Ptr Int32))+    pure $ GraphicsPipelineCreateInfo+             next flags stageCount pStages' pVertexInputState' pInputAssemblyState' pTessellationState' pViewportState' pRasterizationState' pMultisampleState' pDepthStencilState' pColorBlendState' pDynamicState' layout renderPass subpass basePipelineHandle basePipelineIndex++instance es ~ '[] => Zero (GraphicsPipelineCreateInfo es) where+  zero = GraphicsPipelineCreateInfo+           ()+           zero+           zero+           mempty+           Nothing+           Nothing+           Nothing+           Nothing+           Nothing            Nothing            Nothing            Nothing
src/Vulkan/Core10/PipelineLayout.hs view
@@ -57,7 +57,7 @@ import Vulkan.Core10.Handles (Device_T) import Vulkan.Core10.Handles (PipelineLayout) import Vulkan.Core10.Handles (PipelineLayout(..))-import Vulkan.Core10.Enums.PipelineLayoutCreateFlags (PipelineLayoutCreateFlags)+import Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits (PipelineLayoutCreateFlags) import Vulkan.Core10.Enums.Result (Result) import Vulkan.Core10.Enums.Result (Result(..)) import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)@@ -674,6 +674,12 @@ --     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE' --     bit set --+-- -   #VUID-VkPipelineLayoutCreateInfo-flags-06562# If @flags@: does not+--     include+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT',+--     elements of @pSetLayouts@ /must/ be valid+--     'Vulkan.Core10.Handles.DescriptorSetLayout' objects+-- -- == Valid Usage (Implicit) -- -- -   #VUID-VkPipelineLayoutCreateInfo-sType-sType# @sType@ /must/ be@@ -682,12 +688,15 @@ -- -   #VUID-VkPipelineLayoutCreateInfo-pNext-pNext# @pNext@ /must/ be --     @NULL@ ----- -   #VUID-VkPipelineLayoutCreateInfo-flags-zerobitmask# @flags@ /must/---     be @0@+-- -   #VUID-VkPipelineLayoutCreateInfo-flags-parameter# @flags@ /must/ be+--     a valid combination of+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PipelineLayoutCreateFlagBits'+--     values -- -- -   #VUID-VkPipelineLayoutCreateInfo-pSetLayouts-parameter# If --     @setLayoutCount@ is not @0@, @pSetLayouts@ /must/ be a valid pointer---     to an array of @setLayoutCount@ valid+--     to an array of @setLayoutCount@ valid or+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' --     'Vulkan.Core10.Handles.DescriptorSetLayout' handles -- -- -   #VUID-VkPipelineLayoutCreateInfo-pPushConstantRanges-parameter# If@@ -699,7 +708,7 @@ -- -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>, -- 'Vulkan.Core10.Handles.DescriptorSetLayout',--- 'Vulkan.Core10.Enums.PipelineLayoutCreateFlags.PipelineLayoutCreateFlags',+-- 'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PipelineLayoutCreateFlags', -- 'PushConstantRange', 'Vulkan.Core10.Enums.StructureType.StructureType', -- 'createPipelineLayout' data PipelineLayoutCreateInfo = PipelineLayoutCreateInfo
src/Vulkan/Core10/Shader.hs view
@@ -317,13 +317,6 @@ -- -   #VUID-VkShaderModuleCreateInfo-sType-sType# @sType@ /must/ be --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO' ----- -   #VUID-VkShaderModuleCreateInfo-pNext-pNext# @pNext@ /must/ be @NULL@---     or a pointer to a valid instance of---     'Vulkan.Extensions.VK_EXT_validation_cache.ShaderModuleValidationCacheCreateInfoEXT'------ -   #VUID-VkShaderModuleCreateInfo-sType-unique# The @sType@ value of---     each struct in the @pNext@ chain /must/ be unique--- -- -   #VUID-VkShaderModuleCreateInfo-flags-zerobitmask# @flags@ /must/ be --     @0@ --
src/Vulkan/Core11/Promoted_From_VK_KHR_device_group.hs view
@@ -340,16 +340,16 @@ --     'Vulkan.Core10.Handles.ImageView' or --     'Vulkan.Core10.Handles.BufferView' being written as a storage image --     or storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support+--     @OpTypeImage@ is @Unknown@ then the view’s format feature /must/+--     contain --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' -- -- -   #VUID-vkCmdDispatchBase-OpTypeImage-06424# Any --     'Vulkan.Core10.Handles.ImageView' or --     'Vulkan.Core10.Handles.BufferView' being read as a storage image or --     storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support+--     @OpTypeImage@ is @Unknown@ then the view’s format feature /must/+--     contain --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT' -- -- -   #VUID-vkCmdDispatchBase-None-02697# For each set /n/ that is@@ -448,6 +448,23 @@ --     is not supported, any resource accessed by the --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind --     point used by this command /must/ not be a protected resource+--+-- -   #VUID-vkCmdDispatchBase-None-06550# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+--     object that enables+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+--     that object /must/ only be used with @OpImageSample*@ or+--     @OpImageSparseSample*@ instructions+--+-- -   #VUID-vkCmdDispatchBase-ConstOffset-06551# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+--     object that enables+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+--     that object /must/ not use the @ConstOffset@ and @Offset@ operands -- -- -   #VUID-vkCmdDispatchBase-None-04115# If a --     'Vulkan.Core10.Handles.ImageView' is accessed using @OpImageWrite@
src/Vulkan/Core11/Promoted_From_VK_KHR_get_physical_device_properties2.hs view
@@ -120,6 +120,7 @@ import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve (PhysicalDeviceDepthStencilResolveProperties) import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (PhysicalDeviceDescriptorIndexingFeatures) import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (PhysicalDeviceDescriptorIndexingProperties)+import {-# SOURCE #-} Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping (PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (PhysicalDeviceDeviceGeneratedCommandsFeaturesNV) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (PhysicalDeviceDeviceGeneratedCommandsPropertiesNV) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_memory_report (PhysicalDeviceDeviceMemoryReportFeaturesEXT)@@ -149,6 +150,8 @@ import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_fragment_shading_rate (PhysicalDeviceFragmentShadingRateFeaturesKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_fragment_shading_rate (PhysicalDeviceFragmentShadingRatePropertiesKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_global_priority (PhysicalDeviceGlobalPriorityQueryFeaturesKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_graphics_pipeline_library (PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT)+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_graphics_pipeline_library (PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT) import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset (PhysicalDeviceHostQueryResetFeatures) import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (PhysicalDeviceIDProperties) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_drm_format_modifier (PhysicalDeviceImageDrmFormatModifierInfoEXT)@@ -190,6 +193,7 @@ import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_present_id (PhysicalDevicePresentIdFeaturesKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_present_wait (PhysicalDevicePresentWaitFeaturesKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_primitive_topology_list_restart (PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT)+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_primitives_generated_query (PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT) import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_private_data (PhysicalDevicePrivateDataFeatures) import Vulkan.Core10.DeviceInitialization (PhysicalDeviceProperties) import {-# SOURCE #-} Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (PhysicalDeviceProtectedMemoryFeatures)@@ -721,6 +725,8 @@   getNext PhysicalDeviceFeatures2{..} = next   extends :: forall e b proxy. Typeable e => proxy e -> (Extends PhysicalDeviceFeatures2 e => b) -> Maybe b   extends _ f+    | Just Refl <- eqT @e @PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE = Just f+    | Just Refl <- eqT @e @PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT = Just f     | Just Refl <- eqT @e @PhysicalDeviceLinearColorAttachmentFeaturesNV = Just f     | Just Refl <- eqT @e @PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = Just f     | Just Refl <- eqT @e @PhysicalDeviceImageViewMinLodFeaturesEXT = Just f@@ -731,6 +737,7 @@     | Just Refl <- eqT @e @PhysicalDeviceProvokingVertexFeaturesEXT = Just f     | Just Refl <- eqT @e @PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT = Just f     | Just Refl <- eqT @e @PhysicalDeviceInheritedViewportScissorFeaturesNV = Just f+    | Just Refl <- eqT @e @PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT = Just f     | Just Refl <- eqT @e @PhysicalDeviceSynchronization2Features = Just f     | Just Refl <- eqT @e @PhysicalDeviceColorWriteEnableFeaturesEXT = Just f     | Just Refl <- eqT @e @PhysicalDeviceExternalMemoryRDMAFeaturesNV = Just f@@ -897,6 +904,7 @@ --     'Vulkan.Extensions.VK_EXT_fragment_density_map.PhysicalDeviceFragmentDensityMapPropertiesEXT', --     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PhysicalDeviceFragmentShadingRateEnumsPropertiesNV', --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PhysicalDeviceFragmentShadingRatePropertiesKHR',+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT', --     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceIDProperties', --     'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockProperties', --     'Vulkan.Extensions.VK_EXT_line_rasterization.PhysicalDeviceLineRasterizationPropertiesEXT',@@ -966,6 +974,7 @@   getNext PhysicalDeviceProperties2{..} = next   extends :: forall e b proxy. Typeable e => proxy e -> (Extends PhysicalDeviceProperties2 e => b) -> Maybe b   extends _ f+    | Just Refl <- eqT @e @PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT = Just f     | Just Refl <- eqT @e @PhysicalDeviceDrmPropertiesEXT = Just f     | Just Refl <- eqT @e @PhysicalDeviceShaderIntegerDotProductProperties = Just f     | Just Refl <- eqT @e @PhysicalDeviceProvokingVertexPropertiesEXT = Just f
src/Vulkan/Core11/Promoted_From_VK_KHR_multiview.hs view
@@ -330,6 +330,15 @@ --     view index /must/ not be set in more than one element of --     @pCorrelationMasks@ --+-- -   #VUID-VkRenderPassMultiviewCreateInfo-multiview-06555# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiview multiview>+--     feature is not enabled, each element of @pViewMasks@ /must/ be @0@+--+-- -   #VUID-VkRenderPassMultiviewCreateInfo-pViewMasks-06697# The index of+--     the most significant bit in each element of @pViewMasks@ /must/ be+--     less than+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxMultiviewViewCount maxMultiviewViewCount>+-- -- == Valid Usage (Implicit) -- -- -   #VUID-VkRenderPassMultiviewCreateInfo-sType-sType# @sType@ /must/ be
src/Vulkan/Core12/Enums/DescriptorBindingFlagBits.hs view
@@ -75,11 +75,13 @@ -- this binding that are not /dynamically used/ need not contain valid -- descriptors at the time the descriptors are consumed. A descriptor is -- dynamically used if any shader invocation executes an instruction that--- performs any memory access using the descriptor.+-- performs any memory access using the descriptor. If a descriptor is not+-- dynamically used, any resource referenced by the descriptor is not+-- considered to be referenced during command execution. pattern DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT             = DescriptorBindingFlagBits 0x00000004 -- | 'DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT' indicates that this--- descriptor binding has a variable size that will be specified when a--- descriptor set is allocated using this layout. The value of+-- is a /variable-sized descriptor binding/ whose size will be specified+-- when a descriptor set is allocated using this layout. The value of -- @descriptorCount@ is treated as an upper bound on the size of the -- binding. This /must/ only be used for the last binding in the descriptor -- set layout (i.e. the binding with the largest value of @binding@). For
src/Vulkan/Core12/Promoted_From_VK_EXT_descriptor_indexing.hs view
@@ -924,14 +924,14 @@ -- If @descriptorSetCount@ is zero or this structure is not included in the -- @pNext@ chain, then the variable lengths are considered to be zero. -- Otherwise, @pDescriptorCounts@[i] is the number of descriptors in the--- variable count descriptor binding in the corresponding descriptor set--- layout. If the variable count descriptor binding in the corresponding+-- variable-sized descriptor binding in the corresponding descriptor set+-- layout. If the variable-sized descriptor binding in the corresponding -- descriptor set layout has a descriptor type of -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK' -- then @pDescriptorCounts@[i] specifies the binding’s capacity in bytes. -- If -- 'Vulkan.Core10.DescriptorSet.DescriptorSetAllocateInfo'::@pSetLayouts@[i]--- does not include a variable count descriptor binding, then+-- does not include a variable-sized descriptor binding, then -- @pDescriptorCounts@[i] is ignored. -- -- == Valid Usage@@ -944,7 +944,7 @@ -- -   #VUID-VkDescriptorSetVariableDescriptorCountAllocateInfo-pSetLayouts-03046# --     If --     'Vulkan.Core10.DescriptorSet.DescriptorSetAllocateInfo'::@pSetLayouts@[i]---     has a variable descriptor count binding, then @pDescriptorCounts@[i]+--     has a variable-sized descriptor binding, then @pDescriptorCounts@[i] --     /must/ be less than or equal to the descriptor count specified for --     that binding when the descriptor set layout was created --@@ -965,9 +965,8 @@ -- 'Vulkan.Core10.Enums.StructureType.StructureType' data DescriptorSetVariableDescriptorCountAllocateInfo = DescriptorSetVariableDescriptorCountAllocateInfo   { -- | @pDescriptorCounts@ is a pointer to an array of descriptor counts, with-    -- each member specifying the number of descriptors in a variable-    -- descriptor count binding in the corresponding descriptor set being-    -- allocated.+    -- each member specifying the number of descriptors in a variable-sized+    -- descriptor binding in the corresponding descriptor set being allocated.     descriptorCounts :: Vector Word32 }   deriving (Typeable) #if defined(GENERIC_INSTANCES)
src/Vulkan/Core12/Promoted_From_VK_KHR_create_renderpass2.hs view
@@ -665,11 +665,38 @@ -- -- == Valid Usage --+-- -   #VUID-VkAttachmentDescription2-format-06701# @format@ /must/ not be+--     VK_FORMAT_UNDEFINED+-- -- -   #VUID-VkAttachmentDescription2-finalLayout-03061# @finalLayout@ --     /must/ not be --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED' or --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED' --+-- -   #VUID-VkAttachmentDescription2-format-06702# If @format@ includes a+--     color or depth aspect and @loadOp@ is+--     'Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_LOAD', then+--     @initialLayout@ /must/ not be+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED'+--+-- -   #VUID-VkAttachmentDescription2-pNext-06704# If the @pNext@ chain+--     does not include a+--     'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentDescriptionStencilLayout'+--     structure, @format@ includes a stencil aspect, and @stencilLoadOp@+--     is 'Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_LOAD',+--     then @initialLayout@ /must/ not be+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED'+--+-- -   #VUID-VkAttachmentDescription2-pNext-06705# If the @pNext@ chain+--     does includes a+--     'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentDescriptionStencilLayout'+--     structure, @format@ includes a stencil aspect, and @stencilLoadOp@+--     is 'Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_LOAD',+--     then+--     'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentDescriptionStencilLayout'::stencilInitialLayout+--     /must/ not be+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED'+-- -- -   #VUID-VkAttachmentDescription2-format-03294# If @format@ is a color --     format, @initialLayout@ /must/ not be --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL',@@ -778,6 +805,28 @@ --     or --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL' --+-- -   #VUID-VkAttachmentDescription2-separateDepthStencilLayouts-06556# If+--     the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>+--     feature is enabled and @format@ is a depth\/stencil format that+--     includes a depth aspect and the @pNext@ chain includes a+--     'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentDescriptionStencilLayout'+--     structure, @initialLayout@ /must/ not be+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL'+--     or+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'+--+-- -   #VUID-VkAttachmentDescription2-separateDepthStencilLayouts-06557# If+--     the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>+--     feature is enabled and @format@ is a depth\/stencil format that+--     includes a depth aspect and the @pNext@ chain includes a+--     'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentDescriptionStencilLayout'+--     structure, @finalLayout@ /must/ not be+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL'+--     or+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'+-- -- == Valid Usage (Implicit) -- -- -   #VUID-VkAttachmentDescription2-sType-sType# @sType@ /must/ be@@ -1328,6 +1377,14 @@ -- -   #VUID-VkSubpassDescription2-pDepthStencilAttachment-04440# An --     attachment /must/ not be used in both @pDepthStencilAttachment@ and --     @pColorAttachments@+--+-- -   #VUID-VkSubpassDescription2-multiview-06558# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiview multiview>+--     feature is not enabled, @viewMask@ /must/ be @0@+--+-- -   #VUID-VkSubpassDescription2-viewMask-06706# The index of the most+--     significant bit in @viewMask@ /must/ be less than+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxMultiviewViewCount maxMultiviewViewCount> -- -- == Valid Usage (Implicit) --
src/Vulkan/Core12/Promoted_From_VK_KHR_draw_indirect_count.hs view
@@ -125,16 +125,16 @@ --     'Vulkan.Core10.Handles.ImageView' or --     'Vulkan.Core10.Handles.BufferView' being written as a storage image --     or storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support+--     @OpTypeImage@ is @Unknown@ then the view’s format feature /must/+--     contain --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' -- -- -   #VUID-vkCmdDrawIndirectCount-OpTypeImage-06424# Any --     'Vulkan.Core10.Handles.ImageView' or --     'Vulkan.Core10.Handles.BufferView' being read as a storage image or --     storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support+--     @OpTypeImage@ is @Unknown@ then the view’s format feature /must/+--     contain --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT' -- -- -   #VUID-vkCmdDrawIndirectCount-None-02697# For each set /n/ that is@@ -234,6 +234,23 @@ --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind --     point used by this command /must/ not be a protected resource --+-- -   #VUID-vkCmdDrawIndirectCount-None-06550# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+--     object that enables+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+--     that object /must/ only be used with @OpImageSample*@ or+--     @OpImageSparseSample*@ instructions+--+-- -   #VUID-vkCmdDrawIndirectCount-ConstOffset-06551# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+--     object that enables+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+--     that object /must/ not use the @ConstOffset@ and @Offset@ operands+-- -- -   #VUID-vkCmdDrawIndirectCount-None-04115# If a --     'Vulkan.Core10.Handles.ImageView' is accessed using @OpImageWrite@ --     as a result of this command, then the @Type@ of the @Texel@ operand@@ -341,6 +358,14 @@ --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT' --     bit set --+-- -   #VUID-vkCmdDrawIndirectCount-None-06666# If the bound graphics+--     pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command+-- -- -   #VUID-vkCmdDrawIndirectCount-viewportCount-03417# If the bound --     graphics pipeline state was created with the --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'@@ -600,6 +625,18 @@ --     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@ --     used to create the currently bound graphics pipeline --+-- -   #VUID-vkCmdDrawIndirectCount-attachmentCount-06667# If the bound+--     graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @attachmentCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'+--     /must/ be equal to the+--     'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'::@attachmentCount@+--     of the currently bound graphics pipeline+-- -- -   #VUID-vkCmdDrawIndirectCount-pDepthAttachment-06181# If the current --     render pass instance was begun with --     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'@@ -750,6 +787,24 @@ --     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@ --     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE' --+-- -   #VUID-vkCmdDrawIndirectCount-primitivesGeneratedQueryWithRasterizerDiscard-06708#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>+--     feature is not enabled and the+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+--     query is active,+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>+--     /must/ not be enabled.+--+-- -   #VUID-vkCmdDrawIndirectCount-primitivesGeneratedQueryWithNonZeroStreams-06709#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>+--     feature is not enabled and the+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+--     query is active, the bound graphics pipeline /must/ not have been+--     created with a non-zero value in+--     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@.+-- -- -   #VUID-vkCmdDrawIndirectCount-None-04007# All vertex input bindings --     accessed via vertex input variables declared in the vertex shader --     entry point’s interface /must/ have either valid or@@ -1076,16 +1131,16 @@ --     'Vulkan.Core10.Handles.ImageView' or --     'Vulkan.Core10.Handles.BufferView' being written as a storage image --     or storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support+--     @OpTypeImage@ is @Unknown@ then the view’s format feature /must/+--     contain --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' -- -- -   #VUID-vkCmdDrawIndexedIndirectCount-OpTypeImage-06424# Any --     'Vulkan.Core10.Handles.ImageView' or --     'Vulkan.Core10.Handles.BufferView' being read as a storage image or --     storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support+--     @OpTypeImage@ is @Unknown@ then the view’s format feature /must/+--     contain --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT' -- -- -   #VUID-vkCmdDrawIndexedIndirectCount-None-02697# For each set /n/@@ -1185,6 +1240,23 @@ --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind --     point used by this command /must/ not be a protected resource --+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-06550# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+--     object that enables+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+--     that object /must/ only be used with @OpImageSample*@ or+--     @OpImageSparseSample*@ instructions+--+-- -   #VUID-vkCmdDrawIndexedIndirectCount-ConstOffset-06551# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+--     object that enables+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+--     that object /must/ not use the @ConstOffset@ and @Offset@ operands+-- -- -   #VUID-vkCmdDrawIndexedIndirectCount-None-04115# If a --     'Vulkan.Core10.Handles.ImageView' is accessed using @OpImageWrite@ --     as a result of this command, then the @Type@ of the @Texel@ operand@@ -1294,6 +1366,14 @@ --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT' --     bit set --+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-06666# If the bound+--     graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command+-- -- -   #VUID-vkCmdDrawIndexedIndirectCount-viewportCount-03417# If the --     bound graphics pipeline state was created with the --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'@@ -1554,6 +1634,18 @@ --     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@ --     used to create the currently bound graphics pipeline --+-- -   #VUID-vkCmdDrawIndexedIndirectCount-attachmentCount-06667# If the+--     bound graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @attachmentCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'+--     /must/ be equal to the+--     'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'::@attachmentCount@+--     of the currently bound graphics pipeline+-- -- -   #VUID-vkCmdDrawIndexedIndirectCount-pDepthAttachment-06181# If the --     current render pass instance was begun with --     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'@@ -1703,6 +1795,24 @@ --     the currently bound pipeline /must/ have been created with a --     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@ --     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   #VUID-vkCmdDrawIndexedIndirectCount-primitivesGeneratedQueryWithRasterizerDiscard-06708#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>+--     feature is not enabled and the+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+--     query is active,+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>+--     /must/ not be enabled.+--+-- -   #VUID-vkCmdDrawIndexedIndirectCount-primitivesGeneratedQueryWithNonZeroStreams-06709#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>+--     feature is not enabled and the+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+--     query is active, the bound graphics pipeline /must/ not have been+--     created with a non-zero value in+--     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@. -- -- -   #VUID-vkCmdDrawIndexedIndirectCount-None-04007# All vertex input --     bindings accessed via vertex input variables declared in the vertex
src/Vulkan/Core13/Enums.hs view
@@ -4,7 +4,7 @@                             , module Vulkan.Core13.Enums.FormatFeatureFlags2                             , module Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits                             , module Vulkan.Core13.Enums.PipelineStageFlags2-                            , module Vulkan.Core13.Enums.PrivateDataSlotCreateFlagBits+                            , module Vulkan.Core13.Enums.PrivateDataSlotCreateFlags                             , module Vulkan.Core13.Enums.RenderingFlagBits                             , module Vulkan.Core13.Enums.SubmitFlagBits                             , module Vulkan.Core13.Enums.ToolPurposeFlagBits@@ -13,7 +13,7 @@ import Vulkan.Core13.Enums.FormatFeatureFlags2 import Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits import Vulkan.Core13.Enums.PipelineStageFlags2-import Vulkan.Core13.Enums.PrivateDataSlotCreateFlagBits+import Vulkan.Core13.Enums.PrivateDataSlotCreateFlags import Vulkan.Core13.Enums.RenderingFlagBits import Vulkan.Core13.Enums.SubmitFlagBits import Vulkan.Core13.Enums.ToolPurposeFlagBits
src/Vulkan/Core13/Enums/FormatFeatureFlags2.hs view
@@ -367,7 +367,7 @@ -- -- -   'FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT' specifies that --     image views created with this format /can/ be used for depth---     comparison performed by @OpImage*Dref@ instructions.+--     comparison performed by @OpImage*Dref*@ instructions. -- -- -   'FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV' specifies that the --     format is supported as a renderable@@ -598,7 +598,7 @@ pattern FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT         = FormatFeatureFlagBits2 0x0000000100000000 -- | 'FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT' specifies that -- image views created with this format /can/ be used for depth comparison--- performed by @OpImage*Dref@ instructions.+-- performed by @OpImage*Dref*@ instructions. pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT       = FormatFeatureFlagBits2 0x0000000200000000 -- | 'FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV' specifies that the -- format is supported as a renderable
− src/Vulkan/Core13/Enums/PrivateDataSlotCreateFlagBits.hs
@@ -1,54 +0,0 @@-{-# language CPP #-}--- No documentation found for Chapter "PrivateDataSlotCreateFlagBits"-module Vulkan.Core13.Enums.PrivateDataSlotCreateFlagBits  ( PrivateDataSlotCreateFlags-                                                          , PrivateDataSlotCreateFlagBits(..)-                                                          ) where--import Vulkan.Internal.Utils (enumReadPrec)-import Vulkan.Internal.Utils (enumShowsPrec)-import GHC.Show (showString)-import Numeric (showHex)-import Vulkan.Zero (Zero)-import Data.Bits (Bits)-import Data.Bits (FiniteBits)-import Foreign.Storable (Storable)-import GHC.Read (Read(readPrec))-import GHC.Show (Show(showsPrec))-import Vulkan.Core10.FundamentalTypes (Flags)-type PrivateDataSlotCreateFlags = PrivateDataSlotCreateFlagBits---- | VkPrivateDataSlotCreateFlagBits - Bitmask specifying additional--- parameters for private data slot creation------ = See Also------ <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_private_data VK_EXT_private_data>,--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,--- 'PrivateDataSlotCreateFlags'-newtype PrivateDataSlotCreateFlagBits = PrivateDataSlotCreateFlagBits Flags-  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)----conNamePrivateDataSlotCreateFlagBits :: String-conNamePrivateDataSlotCreateFlagBits = "PrivateDataSlotCreateFlagBits"--enumPrefixPrivateDataSlotCreateFlagBits :: String-enumPrefixPrivateDataSlotCreateFlagBits = ""--showTablePrivateDataSlotCreateFlagBits :: [(PrivateDataSlotCreateFlagBits, String)]-showTablePrivateDataSlotCreateFlagBits = []--instance Show PrivateDataSlotCreateFlagBits where-  showsPrec = enumShowsPrec enumPrefixPrivateDataSlotCreateFlagBits-                            showTablePrivateDataSlotCreateFlagBits-                            conNamePrivateDataSlotCreateFlagBits-                            (\(PrivateDataSlotCreateFlagBits x) -> x)-                            (\x -> showString "0x" . showHex x)--instance Read PrivateDataSlotCreateFlagBits where-  readPrec = enumReadPrec enumPrefixPrivateDataSlotCreateFlagBits-                          showTablePrivateDataSlotCreateFlagBits-                          conNamePrivateDataSlotCreateFlagBits-                          PrivateDataSlotCreateFlagBits-
− src/Vulkan/Core13/Enums/PrivateDataSlotCreateFlagBits.hs-boot
@@ -1,12 +0,0 @@-{-# language CPP #-}--- No documentation found for Chapter "PrivateDataSlotCreateFlagBits"-module Vulkan.Core13.Enums.PrivateDataSlotCreateFlagBits  ( PrivateDataSlotCreateFlags-                                                          , PrivateDataSlotCreateFlagBits-                                                          ) where----type PrivateDataSlotCreateFlags = PrivateDataSlotCreateFlagBits--data PrivateDataSlotCreateFlagBits-
+ src/Vulkan/Core13/Enums/PrivateDataSlotCreateFlags.hs view
@@ -0,0 +1,54 @@+{-# language CPP #-}+-- No documentation found for Chapter "PrivateDataSlotCreateFlags"+module Vulkan.Core13.Enums.PrivateDataSlotCreateFlags  (PrivateDataSlotCreateFlags(..)) where++import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec)+import GHC.Show (showString)+import Numeric (showHex)+import Vulkan.Zero (Zero)+import Data.Bits (Bits)+import Data.Bits (FiniteBits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec))+import Vulkan.Core10.FundamentalTypes (Flags)+-- | VkPrivateDataSlotCreateFlags - Reserved for future use+--+-- = Description+--+-- 'PrivateDataSlotCreateFlags' is a bitmask type for setting a mask, but+-- is currently reserved for future use.+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_private_data VK_EXT_private_data>,+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,+-- 'Vulkan.Core13.Promoted_From_VK_EXT_private_data.PrivateDataSlotCreateInfo'+newtype PrivateDataSlotCreateFlags = PrivateDataSlotCreateFlags Flags+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)++++conNamePrivateDataSlotCreateFlags :: String+conNamePrivateDataSlotCreateFlags = "PrivateDataSlotCreateFlags"++enumPrefixPrivateDataSlotCreateFlags :: String+enumPrefixPrivateDataSlotCreateFlags = ""++showTablePrivateDataSlotCreateFlags :: [(PrivateDataSlotCreateFlags, String)]+showTablePrivateDataSlotCreateFlags = []++instance Show PrivateDataSlotCreateFlags where+  showsPrec = enumShowsPrec enumPrefixPrivateDataSlotCreateFlags+                            showTablePrivateDataSlotCreateFlags+                            conNamePrivateDataSlotCreateFlags+                            (\(PrivateDataSlotCreateFlags x) -> x)+                            (\x -> showString "0x" . showHex x)++instance Read PrivateDataSlotCreateFlags where+  readPrec = enumReadPrec enumPrefixPrivateDataSlotCreateFlags+                          showTablePrivateDataSlotCreateFlags+                          conNamePrivateDataSlotCreateFlags+                          PrivateDataSlotCreateFlags+
+ src/Vulkan/Core13/Enums/PrivateDataSlotCreateFlags.hs-boot view
@@ -0,0 +1,8 @@+{-# language CPP #-}+-- No documentation found for Chapter "PrivateDataSlotCreateFlags"+module Vulkan.Core13.Enums.PrivateDataSlotCreateFlags  (PrivateDataSlotCreateFlags) where++++data PrivateDataSlotCreateFlags+
src/Vulkan/Core13/Promoted_From_VK_EXT_extended_dynamic_state.hs view
@@ -94,12 +94,6 @@ -- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'::@cullMode@ -- value used to create the currently active pipeline. ----- == Valid Usage------ -   #VUID-vkCmdSetCullMode-None-03384# The---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState extendedDynamicState>---     feature /must/ be enabled--- -- == Valid Usage (Implicit) -- -- -   #VUID-vkCmdSetCullMode-commandBuffer-parameter# @commandBuffer@@@ -178,12 +172,6 @@ -- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'::@frontFace@ -- value used to create the currently active pipeline. ----- == Valid Usage------ -   #VUID-vkCmdSetFrontFace-None-03383# The---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState extendedDynamicState>---     feature /must/ be enabled--- -- == Valid Usage (Implicit) -- -- -   #VUID-vkCmdSetFrontFace-commandBuffer-parameter# @commandBuffer@@@ -263,12 +251,6 @@ -- 'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@topology@ -- value used to create the currently active pipeline. ----- == Valid Usage------ -   #VUID-vkCmdSetPrimitiveTopology-None-03347# The---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState extendedDynamicState>---     feature /must/ be enabled--- -- == Valid Usage (Implicit) -- -- -   #VUID-vkCmdSetPrimitiveTopology-commandBuffer-parameter#@@ -351,10 +333,6 @@ -- -- == Valid Usage ----- -   #VUID-vkCmdSetViewportWithCount-None-03393# The---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState extendedDynamicState>---     feature /must/ be enabled--- -- -   #VUID-vkCmdSetViewportWithCount-viewportCount-03394# @viewportCount@ --     /must/ be between @1@ and --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewports@,@@ -455,10 +433,6 @@ -- -- == Valid Usage ----- -   #VUID-vkCmdSetScissorWithCount-None-03396# The---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState extendedDynamicState>---     feature /must/ be enabled--- -- -   #VUID-vkCmdSetScissorWithCount-scissorCount-03397# @scissorCount@ --     /must/ be between @1@ and --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewports@,@@ -784,12 +758,6 @@ -- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@depthTestEnable@ -- value used to create the currently active pipeline. ----- == Valid Usage------ -   #VUID-vkCmdSetDepthTestEnable-None-03352# The---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState extendedDynamicState>---     feature /must/ be enabled--- -- == Valid Usage (Implicit) -- -- -   #VUID-vkCmdSetDepthTestEnable-commandBuffer-parameter#@@ -866,12 +834,6 @@ -- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@depthWriteEnable@ -- value used to create the currently active pipeline. ----- == Valid Usage------ -   #VUID-vkCmdSetDepthWriteEnable-None-03354# The---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState extendedDynamicState>---     feature /must/ be enabled--- -- == Valid Usage (Implicit) -- -- -   #VUID-vkCmdSetDepthWriteEnable-commandBuffer-parameter#@@ -947,12 +909,6 @@ -- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@depthCompareOp@ -- value used to create the currently active pipeline. ----- == Valid Usage------ -   #VUID-vkCmdSetDepthCompareOp-None-03353# The---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState extendedDynamicState>---     feature /must/ be enabled--- -- == Valid Usage (Implicit) -- -- -   #VUID-vkCmdSetDepthCompareOp-commandBuffer-parameter#@@ -1033,12 +989,6 @@ -- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@depthBoundsTestEnable@ -- value used to create the currently active pipeline. ----- == Valid Usage------ -   #VUID-vkCmdSetDepthBoundsTestEnable-None-03349# The---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState extendedDynamicState>---     feature /must/ be enabled--- -- == Valid Usage (Implicit) -- -- -   #VUID-vkCmdSetDepthBoundsTestEnable-commandBuffer-parameter#@@ -1115,12 +1065,6 @@ -- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@stencilTestEnable@ -- value used to create the currently active pipeline. ----- == Valid Usage------ -   #VUID-vkCmdSetStencilTestEnable-None-03350# The---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState extendedDynamicState>---     feature /must/ be enabled--- -- == Valid Usage (Implicit) -- -- -   #VUID-vkCmdSetStencilTestEnable-commandBuffer-parameter#@@ -1196,12 +1140,6 @@ -- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@failOp@, -- @passOp@, @depthFailOp@, and @compareOp@ values used to create the -- currently active pipeline, for both front and back faces.------ == Valid Usage------ -   #VUID-vkCmdSetStencilOp-None-03351# The---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState extendedDynamicState>---     feature /must/ be enabled -- -- == Valid Usage (Implicit) --
src/Vulkan/Core13/Promoted_From_VK_EXT_extended_dynamic_state2.hs view
@@ -50,12 +50,6 @@ -- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'::@rasterizerDiscardEnable@ -- value used to create the currently active pipeline. ----- == Valid Usage------ -   #VUID-vkCmdSetRasterizerDiscardEnable-None-04871# The---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState2 extendedDynamicState2>---     feature /must/ be enabled--- -- == Valid Usage (Implicit) -- -- -   #VUID-vkCmdSetRasterizerDiscardEnable-commandBuffer-parameter#@@ -133,12 +127,6 @@ -- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'::@depthBiasEnable@ -- value used to create the currently active pipeline. ----- == Valid Usage------ -   #VUID-vkCmdSetDepthBiasEnable-None-04872# The---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState2 extendedDynamicState2>---     feature /must/ be enabled--- -- == Valid Usage (Implicit) -- -- -   #VUID-vkCmdSetDepthBiasEnable-commandBuffer-parameter#@@ -214,12 +202,6 @@ -- Otherwise, this state is specified by the -- 'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@primitiveRestartEnable@ -- value used to create the currently active pipeline.------ == Valid Usage------ -   #VUID-vkCmdSetPrimitiveRestartEnable-None-04866# The---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState2 extendedDynamicState2>---     feature /must/ be enabled -- -- == Valid Usage (Implicit) --
src/Vulkan/Core13/Promoted_From_VK_EXT_pipeline_creation_feedback.hs view
@@ -129,33 +129,6 @@ -- element of @pPipelineStageCreationFeedbacks@ corresponds to -- 'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo'::@stage@. ----- == Valid Usage------ -   #VUID-VkPipelineCreationFeedbackCreateInfo-pipelineStageCreationFeedbackCount-02668#---     When chained to 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',---     'PipelineCreationFeedback'::@pipelineStageCreationFeedbackCount@---     /must/ equal---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@stageCount@------ -   #VUID-VkPipelineCreationFeedbackCreateInfo-pipelineStageCreationFeedbackCount-02669#---     When chained to 'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo',---     'PipelineCreationFeedback'::@pipelineStageCreationFeedbackCount@---     /must/ equal 1------ -   #VUID-VkPipelineCreationFeedbackCreateInfo-pipelineStageCreationFeedbackCount-02670#---     When chained to---     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR',---     'PipelineCreationFeedback'::@pipelineStageCreationFeedbackCount@---     /must/ equal---     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR'::@stageCount@------ -   #VUID-VkPipelineCreationFeedbackCreateInfo-pipelineStageCreationFeedbackCount-02969#---     When chained to---     'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV',---     'PipelineCreationFeedback'::@pipelineStageCreationFeedbackCount@---     /must/ equal---     'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV'::@stageCount@--- -- == Valid Usage (Implicit) -- -- -   #VUID-VkPipelineCreationFeedbackCreateInfo-sType-sType# @sType@@@ -167,13 +140,11 @@ --     'PipelineCreationFeedback' structure -- -- -   #VUID-VkPipelineCreationFeedbackCreateInfo-pPipelineStageCreationFeedbacks-parameter#+--     If @pipelineStageCreationFeedbackCount@ is not @0@, --     @pPipelineStageCreationFeedbacks@ /must/ be a valid pointer to an --     array of @pipelineStageCreationFeedbackCount@ --     'PipelineCreationFeedback' structures ----- -   #VUID-VkPipelineCreationFeedbackCreateInfo-pipelineStageCreationFeedbackCount-arraylength#---     @pipelineStageCreationFeedbackCount@ /must/ be greater than @0@--- -- = See Also -- -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pipeline_creation_feedback VK_EXT_pipeline_creation_feedback>,@@ -217,7 +188,6 @@     poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO)     poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)     poke ((p `plusPtr` 16 :: Ptr (Ptr PipelineCreationFeedback))) (zero)-    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)     poke ((p `plusPtr` 32 :: Ptr (Ptr PipelineCreationFeedback))) (zero)     f 
src/Vulkan/Core13/Promoted_From_VK_EXT_private_data.hs view
@@ -9,10 +9,9 @@                                                         , PrivateDataSlotCreateInfo(..)                                                         , PhysicalDevicePrivateDataFeatures(..)                                                         , PrivateDataSlot(..)+                                                        , PrivateDataSlotCreateFlags(..)                                                         , StructureType(..)                                                         , ObjectType(..)-                                                        , PrivateDataSlotCreateFlagBits(..)-                                                        , PrivateDataSlotCreateFlags                                                         ) where  import Vulkan.Internal.Utils (traceAroundEvent)@@ -66,7 +65,7 @@ import Vulkan.Core10.Enums.ObjectType (ObjectType(..)) import Vulkan.Core13.Handles (PrivateDataSlot) import Vulkan.Core13.Handles (PrivateDataSlot(..))-import Vulkan.Core13.Enums.PrivateDataSlotCreateFlagBits (PrivateDataSlotCreateFlags)+import Vulkan.Core13.Enums.PrivateDataSlotCreateFlags (PrivateDataSlotCreateFlags) import Vulkan.Core10.Enums.Result (Result) import Vulkan.Core10.Enums.Result (Result(..)) import Vulkan.Core10.Enums.StructureType (StructureType)@@ -77,8 +76,7 @@ import Vulkan.Core10.Enums.Result (Result(SUCCESS)) import Vulkan.Core10.Enums.ObjectType (ObjectType(..)) import Vulkan.Core13.Handles (PrivateDataSlot(..))-import Vulkan.Core13.Enums.PrivateDataSlotCreateFlagBits (PrivateDataSlotCreateFlagBits(..))-import Vulkan.Core13.Enums.PrivateDataSlotCreateFlagBits (PrivateDataSlotCreateFlags)+import Vulkan.Core13.Enums.PrivateDataSlotCreateFlags (PrivateDataSlotCreateFlags(..)) import Vulkan.Core10.Enums.StructureType (StructureType(..)) foreign import ccall #if !defined(SAFE_FOREIGN_CALLS)@@ -442,14 +440,12 @@ -- -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_private_data VK_EXT_private_data>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,--- 'Vulkan.Core13.Enums.PrivateDataSlotCreateFlagBits.PrivateDataSlotCreateFlags',+-- 'Vulkan.Core13.Enums.PrivateDataSlotCreateFlags.PrivateDataSlotCreateFlags', -- 'Vulkan.Core10.Enums.StructureType.StructureType', -- 'createPrivateDataSlot', -- 'Vulkan.Extensions.VK_EXT_private_data.createPrivateDataSlotEXT' data PrivateDataSlotCreateInfo = PrivateDataSlotCreateInfo-  { -- | @flags@ is a bitmask of-    -- 'Vulkan.Core13.Enums.PrivateDataSlotCreateFlagBits.PrivateDataSlotCreateFlags'-    -- specifying additional parameters of the new private data slot+  { -- | @flags@ is reserved for future use.     --     -- #VUID-VkPrivateDataSlotCreateInfo-flags-zerobitmask# @flags@ /must/ be     -- @0@
src/Vulkan/Core13/Promoted_From_VK_KHR_copy_commands2.hs view
@@ -766,6 +766,12 @@ --     /must/ match the number of slices of the @extent@ (for 3D) or layers --     of the @dstSubresource@ (for non-3D) --+-- -   #VUID-VkImageCopy2-extent-06668# @extent.width@ /must/ not be 0+--+-- -   #VUID-VkImageCopy2-extent-06669# @extent.height@ /must/ not be 0+--+-- -   #VUID-VkImageCopy2-extent-06670# @extent.depth@ /must/ not be 0+-- -- == Valid Usage (Implicit) -- -- -   #VUID-VkImageCopy2-sType-sType# @sType@ /must/ be@@ -1022,6 +1028,15 @@ -- -   #VUID-VkBufferImageCopy2-aspectMask-00212# The @aspectMask@ member --     of @imageSubresource@ /must/ only have a single bit set --+-- -   #VUID-VkBufferImageCopy2-imageExtent-06659# @imageExtent.width@+--     /must/ not be 0+--+-- -   #VUID-VkBufferImageCopy2-imageExtent-06660# @imageExtent.height@+--     /must/ not be 0+--+-- -   #VUID-VkBufferImageCopy2-imageExtent-06661# @imageExtent.depth@+--     /must/ not be 0+-- -- == Valid Usage (Implicit) -- -- -   #VUID-VkBufferImageCopy2-sType-sType# @sType@ /must/ be@@ -1398,11 +1413,6 @@ --     of @srcImage@ /must/ contain --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_SRC_BIT' ----- -   #VUID-VkCopyImageInfo2-srcImage-00126# @srcImage@ /must/ have been---     created with---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'---     usage flag--- -- -   #VUID-VkCopyImageInfo2-srcImage-01546# If @srcImage@ is non-sparse --     then the image or /disjoint/ plane to be copied /must/ be bound --     completely and contiguously to a single@@ -1424,11 +1434,6 @@ --     of @dstImage@ /must/ contain --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_DST_BIT' ----- -   #VUID-VkCopyImageInfo2-dstImage-00131# @dstImage@ /must/ have been---     created with---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'---     usage flag--- -- -   #VUID-VkCopyImageInfo2-dstImage-01547# If @dstImage@ is non-sparse --     then the image or /disjoint/ plane that is the destination of the --     copy /must/ be bound completely and contiguously to a single@@ -1703,6 +1708,46 @@ --     @dstOffset.z@) /must/ equal the depth of the specified --     @dstSubresource@ of @dstImage@ --+-- -   #VUID-VkCopyImageInfo2-aspect-06662# If the @aspect@ member of any+--     element of @pRegions@ includes any flag other than+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'+--     or @srcImage@ was not created with+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageStencilUsageCreateInfo separate stencil usage>,+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'+--     /must/ have been included in the+--     'Vulkan.Core10.Image.ImageCreateInfo'::@usage@ used to create+--     @srcImage@+--+-- -   #VUID-VkCopyImageInfo2-aspect-06663# If the @aspect@ member of any+--     element of @pRegions@ includes any flag other than+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'+--     or @dstImage@ was not created with+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageStencilUsageCreateInfo separate stencil usage>,+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'+--     /must/ have been included in the+--     'Vulkan.Core10.Image.ImageCreateInfo'::@usage@ used to create+--     @dstImage@+--+-- -   #VUID-VkCopyImageInfo2-aspect-06664# If the @aspect@ member of any+--     element of @pRegions@ includes+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',+--     and @srcImage@ was created with+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageStencilUsageCreateInfo separate stencil usage>,+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'+--     /must/ have been included in the+--     'Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo'::@stencilUsage@+--     used to create @srcImage@+--+-- -   #VUID-VkCopyImageInfo2-aspect-06665# If the @aspect@ member of any+--     element of @pRegions@ includes+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',+--     and @dstImage@ was created with+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageStencilUsageCreateInfo separate stencil usage>,+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'+--     /must/ have been included in the+--     'Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo'::@stencilUsage@+--     used to create @dstImage@+-- -- == Valid Usage (Implicit) -- -- -   #VUID-VkCopyImageInfo2-sType-sType# @sType@ /must/ be@@ -1832,7 +1877,7 @@ --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_BLIT_SRC_BIT' -- -- -   #VUID-VkBlitImageInfo2-srcImage-06421# @srcImage@ /must/ not use a---     <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>+--     <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> -- -- -   #VUID-VkBlitImageInfo2-srcImage-00219# @srcImage@ /must/ have been --     created with@@ -1860,7 +1905,7 @@ --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_BLIT_DST_BIT' -- -- -   #VUID-VkBlitImageInfo2-dstImage-06422# @dstImage@ /must/ not use a---     <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>+--     <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> -- -- -   #VUID-VkBlitImageInfo2-dstImage-00224# @dstImage@ /must/ have been --     created with
src/Vulkan/Core13/Promoted_From_VK_KHR_dynamic_rendering.hs view
@@ -294,67 +294,8 @@ -- indicate that an attachment /can/ be used - but it is still valid to set -- the attachment to @NULL@ when beginning rendering. ----- == Valid Usage------ -   #VUID-VkPipelineRenderingCreateInfoKHR-pColorAttachmentFormats-06495#---     If any element of @pColorAttachmentFormats@ is not---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format---     with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>---     that includes either---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'---     or---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'------ -   #VUID-VkPipelineRenderingCreateInfo-depthAttachmentFormat-06065# If---     @depthAttachmentFormat@ is not---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format---     with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>---     that include---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'------ -   #VUID-VkPipelineRenderingCreateInfo-stencilAttachmentFormat-06164#---     If @stencilAttachmentFormat@ is not---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format---     with---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>---     that include---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'------ -   #VUID-VkPipelineRenderingCreateInfo-depthAttachmentFormat-06165# If---     @depthAttachmentFormat@ is not---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' and---     @stencilAttachmentFormat@ is not---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED',---     @depthAttachmentFormat@ /must/ equal @stencilAttachmentFormat@------ -   #VUID-VkPipelineRenderingCreateInfo-multiview-06066# If the---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiview multiview>---     feature is not enabled, @viewMask@ /must/ be @0@------ -   #VUID-VkPipelineRenderingCreateInfo-viewMask-06067# The index of the---     most significant bit in @viewMask@ /must/ be less than---     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxMultiviewViewCount maxMultiviewViewCount>--- -- == Valid Usage (Implicit) ----- -   #VUID-VkPipelineRenderingCreateInfo-sType-sType# @sType@ /must/ be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO'------ -   #VUID-VkPipelineRenderingCreateInfo-pColorAttachmentFormats-parameter#---     If @colorAttachmentCount@ is not @0@, @pColorAttachmentFormats@---     /must/ be a valid pointer to an array of @colorAttachmentCount@---     valid 'Vulkan.Core10.Enums.Format.Format' values------ -   #VUID-VkPipelineRenderingCreateInfo-depthAttachmentFormat-parameter#---     @depthAttachmentFormat@ /must/ be a valid---     'Vulkan.Core10.Enums.Format.Format' value------ -   #VUID-VkPipelineRenderingCreateInfo-stencilAttachmentFormat-parameter#---     @stencilAttachmentFormat@ /must/ be a valid---     'Vulkan.Core10.Enums.Format.Format' value--- -- = See Also -- -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,@@ -522,12 +463,25 @@ --     have been created with --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT' --+-- -   #VUID-VkRenderingInfo-pDepthAttachment-06547# If @pDepthAttachment@+--     is not @NULL@ and @pDepthAttachment->imageView@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @pDepthAttachment->imageView@ /must/ have been created with a format+--     that includes a depth aspect+-- -- -   #VUID-VkRenderingInfo-pDepthAttachment-06088# If @pDepthAttachment@ --     is not @NULL@ and @pDepthAttachment->imageView@ is not --     'Vulkan.Core10.APIConstants.NULL_HANDLE', --     @pDepthAttachment->imageView@ /must/ have been created with --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT' --+-- -   #VUID-VkRenderingInfo-pStencilAttachment-06548# If+--     @pStencilAttachment@ is not @NULL@ and+--     @pStencilAttachment->imageView@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @pStencilAttachment->imageView@ /must/ have been created with a+--     format that includes a stencil aspect+-- -- -   #VUID-VkRenderingInfo-pStencilAttachment-06089# If --     @pStencilAttachment@ is not @NULL@ and --     @pStencilAttachment->imageView@ is not@@ -1369,6 +1323,11 @@ --     that include --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT' --+-- -   #VUID-VkCommandBufferInheritanceRenderingInfo-depthAttachmentFormat-06540#+--     If @depthAttachmentFormat@ is not+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format+--     that includes a depth aspect+-- -- -   #VUID-VkCommandBufferInheritanceRenderingInfo-depthAttachmentFormat-06007# --     If @depthAttachmentFormat@ is not --     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format@@ -1386,6 +1345,11 @@ --     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features> --     that include --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'+--+-- -   #VUID-VkCommandBufferInheritanceRenderingInfo-stencilAttachmentFormat-06541#+--     If @stencilAttachmentFormat@ is not+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format+--     that includes a stencil aspect -- -- -   #VUID-VkCommandBufferInheritanceRenderingInfo-stencilAttachmentFormat-06199# --     If @stencilAttachmentFormat@ is not
src/Vulkan/Core13/Promoted_From_VK_KHR_maintenance4.hs view
@@ -343,8 +343,8 @@ --     @pCreateInfo@ /must/ be a valid pointer to a valid --     'Vulkan.Core10.Image.ImageCreateInfo' structure ----- -   #VUID-VkDeviceImageMemoryRequirements-planeAspect-parameter#---     @planeAspect@ /must/ be a valid+-- -   #VUID-VkDeviceImageMemoryRequirements-planeAspect-parameter# If+--     @planeAspect@ is not @0@, @planeAspect@ /must/ be a valid --     'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits' value -- -- = See Also@@ -394,7 +394,6 @@     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)     pCreateInfo'' <- ContT @_ @_ @(Ptr (ImageCreateInfo '[])) $ \cont -> withSomeCStruct @ImageCreateInfo ((SomeStruct zero)) (cont . castPtr)     lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr (ImageCreateInfo _)))) pCreateInfo''-    lift $ poke ((p `plusPtr` 24 :: Ptr ImageAspectFlagBits)) (zero)     lift $ f  instance FromCStruct DeviceImageMemoryRequirements where
src/Vulkan/Dynamic.hs view
@@ -122,8 +122,10 @@ import {-# SOURCE #-} Vulkan.Core10.Enums.DescriptorPoolResetFlags (DescriptorPoolResetFlags) import {-# SOURCE #-} Vulkan.Core10.Handles (DescriptorSet) import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (DescriptorSetAllocateInfo)+import {-# SOURCE #-} Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping (DescriptorSetBindingReferenceVALVE) import {-# SOURCE #-} Vulkan.Core10.Handles (DescriptorSetLayout) import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (DescriptorSetLayoutCreateInfo)+import {-# SOURCE #-} Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping (DescriptorSetLayoutHostMappingInfoVALVE) import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_maintenance3 (DescriptorSetLayoutSupport) import {-# SOURCE #-} Vulkan.Core11.Handles (DescriptorUpdateTemplate) import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template (DescriptorUpdateTemplateCreateInfo)@@ -1039,6 +1041,8 @@   , pVkGetBufferCollectionPropertiesFUCHSIA :: FunPtr (Ptr Device_T -> BufferCollectionFUCHSIA -> ("pProperties" ::: Ptr BufferCollectionPropertiesFUCHSIA) -> IO Result)   , pVkCmdBeginRendering :: FunPtr (Ptr CommandBuffer_T -> ("pRenderingInfo" ::: Ptr (SomeStruct RenderingInfo)) -> IO ())   , pVkCmdEndRendering :: FunPtr (Ptr CommandBuffer_T -> IO ())+  , pVkGetDescriptorSetLayoutHostMappingInfoVALVE :: FunPtr (Ptr Device_T -> ("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE) -> ("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE) -> IO ())+  , pVkGetDescriptorSetHostMappingVALVE :: FunPtr (Ptr Device_T -> DescriptorSet -> ("ppData" ::: Ptr (Ptr ())) -> IO ())   }  deriving instance Eq DeviceCmds@@ -1089,7 +1093,8 @@     nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr     nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr     nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr-    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr+    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr+    nullFunPtr  foreign import ccall #if !defined(SAFE_FOREIGN_CALLS)@@ -1468,6 +1473,8 @@   vkGetBufferCollectionPropertiesFUCHSIA <- getDeviceProcAddr' handle (Ptr "vkGetBufferCollectionPropertiesFUCHSIA"#)   vkCmdBeginRendering <- getFirstDeviceProcAddr [(Ptr "vkCmdBeginRenderingKHR"#), (Ptr "vkCmdBeginRendering"#)]   vkCmdEndRendering <- getFirstDeviceProcAddr [(Ptr "vkCmdEndRenderingKHR"#), (Ptr "vkCmdEndRendering"#)]+  vkGetDescriptorSetLayoutHostMappingInfoVALVE <- getDeviceProcAddr' handle (Ptr "vkGetDescriptorSetLayoutHostMappingInfoVALVE"#)+  vkGetDescriptorSetHostMappingVALVE <- getDeviceProcAddr' handle (Ptr "vkGetDescriptorSetHostMappingVALVE"#)   pure $ DeviceCmds handle     (castFunPtr @_ @(Ptr Device_T -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction) vkGetDeviceProcAddr)     (castFunPtr @_ @(Ptr Device_T -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyDevice)@@ -1827,4 +1834,6 @@     (castFunPtr @_ @(Ptr Device_T -> BufferCollectionFUCHSIA -> ("pProperties" ::: Ptr BufferCollectionPropertiesFUCHSIA) -> IO Result) vkGetBufferCollectionPropertiesFUCHSIA)     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pRenderingInfo" ::: Ptr (SomeStruct RenderingInfo)) -> IO ()) vkCmdBeginRendering)     (castFunPtr @_ @(Ptr CommandBuffer_T -> IO ()) vkCmdEndRendering)+    (castFunPtr @_ @(Ptr Device_T -> ("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE) -> ("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE) -> IO ()) vkGetDescriptorSetLayoutHostMappingInfoVALVE)+    (castFunPtr @_ @(Ptr Device_T -> DescriptorSet -> ("ppData" ::: Ptr (Ptr ())) -> IO ()) vkGetDescriptorSetHostMappingVALVE) 
src/Vulkan/Extensions.hs view
@@ -61,6 +61,7 @@                           , module Vulkan.Extensions.VK_EXT_full_screen_exclusive                           , module Vulkan.Extensions.VK_EXT_global_priority                           , module Vulkan.Extensions.VK_EXT_global_priority_query+                          , module Vulkan.Extensions.VK_EXT_graphics_pipeline_library                           , module Vulkan.Extensions.VK_EXT_hdr_metadata                           , module Vulkan.Extensions.VK_EXT_headless_surface                           , module Vulkan.Extensions.VK_EXT_host_query_reset@@ -82,6 +83,7 @@                           , module Vulkan.Extensions.VK_EXT_pipeline_creation_feedback                           , module Vulkan.Extensions.VK_EXT_post_depth_coverage                           , module Vulkan.Extensions.VK_EXT_primitive_topology_list_restart+                          , module Vulkan.Extensions.VK_EXT_primitives_generated_query                           , module Vulkan.Extensions.VK_EXT_private_data                           , module Vulkan.Extensions.VK_EXT_provoking_vertex                           , module Vulkan.Extensions.VK_EXT_queue_family_foreign@@ -178,6 +180,7 @@                           , module Vulkan.Extensions.VK_KHR_performance_query                           , module Vulkan.Extensions.VK_KHR_pipeline_executable_properties                           , module Vulkan.Extensions.VK_KHR_pipeline_library+                          , module Vulkan.Extensions.VK_KHR_portability_enumeration                           , module Vulkan.Extensions.VK_KHR_portability_subset                           , module Vulkan.Extensions.VK_KHR_present_id                           , module Vulkan.Extensions.VK_KHR_present_wait@@ -266,6 +269,7 @@                           , module Vulkan.Extensions.VK_QCOM_render_pass_transform                           , module Vulkan.Extensions.VK_QCOM_rotated_copy_commands                           , module Vulkan.Extensions.VK_QNX_screen_surface+                          , module Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping                           , module Vulkan.Extensions.VK_VALVE_mutable_descriptor_type                           ) where import Vulkan.Extensions.Dependencies@@ -329,6 +333,7 @@ import Vulkan.Extensions.VK_EXT_full_screen_exclusive import Vulkan.Extensions.VK_EXT_global_priority import Vulkan.Extensions.VK_EXT_global_priority_query+import Vulkan.Extensions.VK_EXT_graphics_pipeline_library import Vulkan.Extensions.VK_EXT_hdr_metadata import Vulkan.Extensions.VK_EXT_headless_surface import Vulkan.Extensions.VK_EXT_host_query_reset@@ -350,6 +355,7 @@ import Vulkan.Extensions.VK_EXT_pipeline_creation_feedback import Vulkan.Extensions.VK_EXT_post_depth_coverage import Vulkan.Extensions.VK_EXT_primitive_topology_list_restart+import Vulkan.Extensions.VK_EXT_primitives_generated_query import Vulkan.Extensions.VK_EXT_private_data import Vulkan.Extensions.VK_EXT_provoking_vertex import Vulkan.Extensions.VK_EXT_queue_family_foreign@@ -446,6 +452,7 @@ import Vulkan.Extensions.VK_KHR_performance_query import Vulkan.Extensions.VK_KHR_pipeline_executable_properties import Vulkan.Extensions.VK_KHR_pipeline_library+import Vulkan.Extensions.VK_KHR_portability_enumeration import Vulkan.Extensions.VK_KHR_portability_subset import Vulkan.Extensions.VK_KHR_present_id import Vulkan.Extensions.VK_KHR_present_wait@@ -534,5 +541,6 @@ import Vulkan.Extensions.VK_QCOM_render_pass_transform import Vulkan.Extensions.VK_QCOM_rotated_copy_commands import Vulkan.Extensions.VK_QNX_screen_surface+import Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping import Vulkan.Extensions.VK_VALVE_mutable_descriptor_type 
src/Vulkan/Extensions/Dependencies.hs view
@@ -44,6 +44,7 @@ import Vulkan.Extensions.VK_EXT_full_screen_exclusive (pattern EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME) import Vulkan.Extensions.VK_EXT_global_priority (pattern EXT_GLOBAL_PRIORITY_EXTENSION_NAME) import Vulkan.Extensions.VK_EXT_global_priority_query (pattern EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_graphics_pipeline_library (pattern EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME) import Vulkan.Extensions.VK_EXT_hdr_metadata (pattern EXT_HDR_METADATA_EXTENSION_NAME) import Vulkan.Extensions.VK_EXT_headless_surface (pattern EXT_HEADLESS_SURFACE_EXTENSION_NAME) import Vulkan.Extensions.VK_EXT_host_query_reset (pattern EXT_HOST_QUERY_RESET_EXTENSION_NAME)@@ -58,6 +59,7 @@ import Vulkan.Extensions.VK_EXT_pageable_device_local_memory (pattern EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_EXTENSION_NAME) import Vulkan.Extensions.VK_EXT_pci_bus_info (pattern EXT_PCI_BUS_INFO_EXTENSION_NAME) import Vulkan.Extensions.VK_EXT_physical_device_drm (pattern EXT_PHYSICAL_DEVICE_DRM_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_primitives_generated_query (pattern EXT_PRIMITIVES_GENERATED_QUERY_EXTENSION_NAME) import Vulkan.Extensions.VK_EXT_provoking_vertex (pattern EXT_PROVOKING_VERTEX_EXTENSION_NAME) import Vulkan.Extensions.VK_EXT_queue_family_foreign (pattern EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME) import Vulkan.Extensions.VK_EXT_rgba10x6_formats (pattern EXT_RGBA10X6_FORMATS_EXTENSION_NAME)@@ -133,6 +135,7 @@ import Vulkan.Extensions.VK_KHR_multiview (pattern KHR_MULTIVIEW_EXTENSION_NAME) import Vulkan.Extensions.VK_KHR_performance_query (pattern KHR_PERFORMANCE_QUERY_EXTENSION_NAME) import Vulkan.Extensions.VK_KHR_pipeline_executable_properties (pattern KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_pipeline_library (pattern KHR_PIPELINE_LIBRARY_EXTENSION_NAME) import Vulkan.Extensions.VK_KHR_portability_subset (pattern KHR_PORTABILITY_SUBSET_EXTENSION_NAME) import Vulkan.Extensions.VK_KHR_present_id (pattern KHR_PRESENT_ID_EXTENSION_NAME) import Vulkan.Extensions.VK_KHR_present_wait (pattern KHR_PRESENT_WAIT_EXTENSION_NAME)@@ -504,9 +507,11 @@   EXT_DEVICE_MEMORY_REPORT_EXTENSION_NAME       -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]   EXT_ACQUIRE_DRM_DISPLAY_EXTENSION_NAME ->     [EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME, KHR_DISPLAY_EXTENSION_NAME, KHR_SURFACE_EXTENSION_NAME]-  KHR_PRESENT_ID_EXTENSION_NAME                       -> [KHR_SWAPCHAIN_EXTENSION_NAME, KHR_SURFACE_EXTENSION_NAME]-  NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME         -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]-  KHR_SYNCHRONIZATION_2_EXTENSION_NAME                -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  KHR_PRESENT_ID_EXTENSION_NAME               -> [KHR_SWAPCHAIN_EXTENSION_NAME, KHR_SURFACE_EXTENSION_NAME]+  NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  KHR_SYNCHRONIZATION_2_EXTENSION_NAME        -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME ->+    [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, KHR_PIPELINE_LIBRARY_EXTENSION_NAME]   KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]   NV_FRAGMENT_SHADING_RATE_ENUMS_EXTENSION_NAME ->     [ KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME@@ -604,6 +609,8 @@   EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]   QNX_SCREEN_SURFACE_EXTENSION_NAME           -> [KHR_SURFACE_EXTENSION_NAME]   EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME       -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  EXT_PRIMITIVES_GENERATED_QUERY_EXTENSION_NAME ->+    [EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME, KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]   EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME ->     [EXT_GLOBAL_PRIORITY_EXTENSION_NAME, KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]   EXT_IMAGE_VIEW_MIN_LOD_EXTENSION_NAME   -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]
src/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs view
@@ -15,7 +15,7 @@ --     130 -- -- [__Revision__]---     4+--     5 -- -- [__Extension and Version Dependencies__] --@@ -229,7 +229,7 @@ -- new AHB formats\/usages and existing Vulkan features. No new Vulkan -- features or implementation requirements can be added. The extension -- version number will be incremented when this additional documentation is--- added, but the version number does not indicate that an implementaiton+-- added, but the version number does not indicate that an implementation -- supports Vulkan memory or resources that map to the new -- 'AHardwareBuffer' features: support for that must be queried with -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'@@ -242,6 +242,10 @@ -- -- == Version History --+-- -   Revision 5, 2022-02-04 (Chris Forbes)+--+--     -   Describe mapping of flags for storage image support+-- -- -   Revision 4, 2021-09-30 (Jon Leech) -- --     -   Add interaction with @VK_KHR_format_feature_flags2@ to @vk.xml@@@ -1180,11 +1184,11 @@            zero  -type ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION = 4+type ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION = 5  -- No documentation found for TopLevel "VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION" pattern ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION :: forall a . Integral a => a-pattern ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION = 4+pattern ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION = 5   type ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME = "VK_ANDROID_external_memory_android_hardware_buffer"
src/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs-boot view
@@ -15,7 +15,7 @@ --     130 -- -- [__Revision__]---     4+--     5 -- -- [__Extension and Version Dependencies__] --@@ -229,7 +229,7 @@ -- new AHB formats\/usages and existing Vulkan features. No new Vulkan -- features or implementation requirements can be added. The extension -- version number will be incremented when this additional documentation is--- added, but the version number does not indicate that an implementaiton+-- added, but the version number does not indicate that an implementation -- supports Vulkan memory or resources that map to the new -- 'AHardwareBuffer' features: support for that must be queried with -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'@@ -241,6 +241,10 @@ -- existing Vulkan features map to that new Android feature. -- -- == Version History+--+-- -   Revision 5, 2022-02-04 (Chris Forbes)+--+--     -   Describe mapping of flags for storage image support -- -- -   Revision 4, 2021-09-30 (Jon Leech) --
src/Vulkan/Extensions/VK_EXT_color_write_enable.hs view
@@ -195,10 +195,10 @@ --     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable> --     feature /must/ be enabled ----- -   #VUID-vkCmdSetColorWriteEnableEXT-attachmentCount-04804#---     @attachmentCount@ /must/ be equal to the @attachmentCount@ member of---     the 'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'---     structure specified during pipeline creation+-- -   #VUID-vkCmdSetColorWriteEnableEXT-attachmentCount-06656#+--     @attachmentCount@ /must/ be less than or equal to the+--     @maxColorAttachments@ member of+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits' -- -- == Valid Usage (Implicit) --@@ -379,6 +379,11 @@ --     @attachmentCount@ /must/ be equal to the @attachmentCount@ member of --     the 'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo' --     structure specified during pipeline creation+--+-- -   #VUID-VkPipelineColorWriteCreateInfoEXT-attachmentCount-06655#+--     @attachmentCount@ /must/ be less than or equal to the+--     @maxColorAttachments@ member of+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits' -- -- == Valid Usage (Implicit) --
src/Vulkan/Extensions/VK_EXT_debug_utils.hs view
@@ -151,14 +151,16 @@ -- -- -   'DebugUtilsMessengerCallbackDataEXT' ----- -   'DebugUtilsObjectNameInfoEXT'--- -- -   'DebugUtilsObjectTagInfoEXT' -- -- -   Extending 'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo': -- --     -   'DebugUtilsMessengerCreateInfoEXT' --+-- -   Extending 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo':+--+--     -   'DebugUtilsObjectNameInfoEXT'+-- -- == New Function Pointers -- -- -   'PFN_vkDebugUtilsMessengerCallbackEXT'@@ -1393,6 +1395,15 @@ -- @pObjectName@ is either @NULL@ or an empty string, then any previously -- set name is removed. --+-- The+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-graphicsPipelineLibrary graphicsPipelineLibrary>+-- feature allows the specification of pipelines without the creation of+-- 'Vulkan.Core10.Handles.ShaderModule' objects beforehand. In order to+-- continue to allow naming these shaders independently,+-- 'DebugUtilsObjectNameInfoEXT' /can/ be included in the @pNext@ chain of+-- 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo', which associates+-- a static name with that particular shader.+-- -- == Valid Usage -- -- -   #VUID-VkDebugUtilsObjectNameInfoEXT-objectType-02589# If@@ -1412,9 +1423,6 @@ -- -- -   #VUID-VkDebugUtilsObjectNameInfoEXT-sType-sType# @sType@ /must/ be --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT'------ -   #VUID-VkDebugUtilsObjectNameInfoEXT-pNext-pNext# @pNext@ /must/ be---     @NULL@ -- -- -   #VUID-VkDebugUtilsObjectNameInfoEXT-objectType-parameter# --     @objectType@ /must/ be a valid
src/Vulkan/Extensions/VK_EXT_debug_utils.hs-boot view
@@ -151,13 +151,15 @@ -- -- -   'DebugUtilsMessengerCallbackDataEXT' ----- -   'DebugUtilsObjectNameInfoEXT'--- -- -   'DebugUtilsObjectTagInfoEXT' -- -- -   Extending 'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo': -- --     -   'DebugUtilsMessengerCreateInfoEXT'+--+-- -   Extending 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo':+--+--     -   'DebugUtilsObjectNameInfoEXT' -- -- == New Function Pointers --
src/Vulkan/Extensions/VK_EXT_depth_clip_control.hs view
@@ -95,10 +95,10 @@ -- 1) Should this extension include an origin control option to match -- GL_LOWER_LEFT found in ARB_clip_control? ----- __RESOLVED__: Yes. The fix for porting over the origin is a simple--- y-axis flip. The depth clip control is a much harder problem to solve--- than what this extension is aimed to solve. Adding an equivalent to--- GL_LOWER_LEFT would require more testing.+-- __RESOLVED__: No. The fix for porting over the origin is a simple y-axis+-- flip. The depth clip control is a much harder problem to solve than what+-- this extension is aimed to solve. Adding an equivalent to GL_LOWER_LEFT+-- would require more testing. -- -- 2) Should this pipeline state be dynamic? --@@ -110,7 +110,7 @@ -- 3) Should the control provided in this extension be an enum that could -- be extended in the future? ----- __RESOLVED__: Yes. It is highly unlikely that the depth range is changed+-- __RESOLVED__: No. It is highly unlikely that the depth range is changed -- to anything other than [0, 1] in the future. Should that happen a new -- extension will be required to extend such an enum, and that extension -- might as well add a new struct to chain to
src/Vulkan/Extensions/VK_EXT_depth_clip_control.hs-boot view
@@ -95,10 +95,10 @@ -- 1) Should this extension include an origin control option to match -- GL_LOWER_LEFT found in ARB_clip_control? ----- __RESOLVED__: Yes. The fix for porting over the origin is a simple--- y-axis flip. The depth clip control is a much harder problem to solve--- than what this extension is aimed to solve. Adding an equivalent to--- GL_LOWER_LEFT would require more testing.+-- __RESOLVED__: No. The fix for porting over the origin is a simple y-axis+-- flip. The depth clip control is a much harder problem to solve than what+-- this extension is aimed to solve. Adding an equivalent to GL_LOWER_LEFT+-- would require more testing. -- -- 2) Should this pipeline state be dynamic? --@@ -110,7 +110,7 @@ -- 3) Should the control provided in this extension be an enum that could -- be extended in the future? ----- __RESOLVED__: Yes. It is highly unlikely that the depth range is changed+-- __RESOLVED__: No. It is highly unlikely that the depth range is changed -- to anything other than [0, 1] in the future. Should that happen a new -- extension will be required to extend such an enum, and that extension -- might as well add a new struct to chain to
+ src/Vulkan/Extensions/VK_EXT_graphics_pipeline_library.hs view
@@ -0,0 +1,500 @@+{-# language CPP #-}+-- | = Name+--+-- VK_EXT_graphics_pipeline_library - device extension+--+-- == VK_EXT_graphics_pipeline_library+--+-- [__Name String__]+--     @VK_EXT_graphics_pipeline_library@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     321+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+--     -   Requires @VK_KHR_pipeline_library@+--+-- [__Contact__]+--+--     -   Tobias Hector+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_graphics_pipeline_library] @tobski%0A<<Here describe the issue or question you have about the VK_EXT_graphics_pipeline_library extension>> >+--+-- [__Extension Proposal__]+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_graphics_pipeline_library.asciidoc VK_EXT_graphics_pipeline_library>+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2021-08-17+--+-- [__Contributors__]+--+--     -   Tobias Hector, AMD+--+--     -   Chris Glover, Google+--+--     -   Jeff Leger, Qualcomm+--+--     -   Jan-Harald Fredriksen, Arm+--+--     -   Piers Daniell, NVidia+--+--     -   Boris Zanin, Mobica+--+--     -   Krzysztof Niski, NVidia+--+--     -   Dan Ginsburg, Valve+--+--     -   Sebastian Aaltonen, Unity+--+--     -   Arseny Kapoulkine, Roblox+--+--     -   Calle Lejdfors, Ubisoft+--+--     -   Tiago Rodrigues, Ubisoft+--+--     -   Francois Duranleau, Gameloft+--+-- == Description+--+-- This extension allows the separate compilation of four distinct parts of+-- graphics pipelines, with the intent of allowing faster pipeline loading+-- for applications reusing the same shaders or state in multiple+-- pipelines. Each part can be independently compiled into a graphics+-- pipeline library, with a final link step required to create an+-- executable pipeline that can be bound to a command buffer.+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':+--+--     -   'GraphicsPipelineLibraryCreateInfoEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT'+--+-- == New Enums+--+-- -   'GraphicsPipelineLibraryFlagBitsEXT'+--+-- -   'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PipelineLayoutCreateFlagBits'+--+-- == New Bitmasks+--+-- -   'GraphicsPipelineLibraryFlagsEXT'+--+-- == New Enum Constants+--+-- -   'EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME'+--+-- -   'EXT_GRAPHICS_PIPELINE_LIBRARY_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT'+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PipelineLayoutCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT'+--+-- == Version History+--+-- -   Revision 1, 2021-08-17 (Tobias Hector)+--+--     -   Initial draft.+--+-- == See Also+--+-- 'GraphicsPipelineLibraryCreateInfoEXT',+-- 'GraphicsPipelineLibraryFlagBitsEXT', 'GraphicsPipelineLibraryFlagsEXT',+-- 'PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT',+-- 'PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT',+-- 'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PipelineLayoutCreateFlagBits'+--+-- == Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_graphics_pipeline_library Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly.+module Vulkan.Extensions.VK_EXT_graphics_pipeline_library  ( PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT(..)+                                                           , PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT(..)+                                                           , GraphicsPipelineLibraryCreateInfoEXT(..)+                                                           , GraphicsPipelineLibraryFlagsEXT+                                                           , GraphicsPipelineLibraryFlagBitsEXT( GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT+                                                                                               , GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT+                                                                                               , GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT+                                                                                               , GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT+                                                                                               , ..+                                                                                               )+                                                           , EXT_GRAPHICS_PIPELINE_LIBRARY_SPEC_VERSION+                                                           , pattern EXT_GRAPHICS_PIPELINE_LIBRARY_SPEC_VERSION+                                                           , EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME+                                                           , pattern EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME+                                                           ) where++import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec)+import Foreign.Marshal.Alloc (allocaBytes)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Show (showString)+import Numeric (showHex)+import Vulkan.CStruct (FromCStruct)+import Vulkan.CStruct (FromCStruct(..))+import Vulkan.CStruct (ToCStruct)+import Vulkan.CStruct (ToCStruct(..))+import Vulkan.Zero (Zero)+import Vulkan.Zero (Zero(..))+import Data.Bits (Bits)+import Data.Bits (FiniteBits)+import Data.String (IsString)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import GHC.Generics (Generic)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec))+import Data.Kind (Type)+import Vulkan.Core10.FundamentalTypes (bool32ToBool)+import Vulkan.Core10.FundamentalTypes (boolToBool32)+import Vulkan.Core10.FundamentalTypes (Bool32)+import Vulkan.Core10.FundamentalTypes (Flags)+import Vulkan.Core10.Enums.StructureType (StructureType)+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT))+-- | VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT - Structure+-- describing support for graphics pipeline libraries+--+-- = Members+--+-- This structure describes the following feature:+--+-- = Description+--+-- If the 'PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT' structure is+-- included in the @pNext@ chain of the+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'+-- structure passed to+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',+-- it is filled in to indicate whether each corresponding feature is+-- supported. 'PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT' /can/ also+-- be used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'+-- to selectively enable these features.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_graphics_pipeline_library VK_EXT_graphics_pipeline_library>,+-- 'Vulkan.Core10.FundamentalTypes.Bool32',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT = PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT+  { -- | #features-graphicsPipelineLibrary# @graphicsPipelineLibrary@ indicates+    -- that the implementation supports+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-library graphics pipeline libraries>.+    graphicsPipelineLibrary :: Bool }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT)+#endif+deriving instance Show PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT++instance ToCStruct PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT where+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (graphicsPipelineLibrary))+    f+  cStructSize = 24+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+    f++instance FromCStruct PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT where+  peekCStruct p = do+    graphicsPipelineLibrary <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+    pure $ PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT+             (bool32ToBool graphicsPipelineLibrary)++instance Storable PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT where+  sizeOf ~_ = 24+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT where+  zero = PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT+           zero+++-- | VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT - Structure+-- describing additional properties of graphics pipeline libraries+--+-- = Description+--+-- If the 'PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT' structure is+-- included in the @pNext@ chain of the+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'+-- structure passed to+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceProperties2',+-- it is filled in with each corresponding implementation-dependent+-- property.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_graphics_pipeline_library VK_EXT_graphics_pipeline_library>,+-- 'Vulkan.Core10.FundamentalTypes.Bool32',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT = PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT+  { -- | #limits-graphicsPipelineLibraryFastLinking#+    -- @graphicsPipelineLibraryFastLinking@ indicates whether fast linking of+    -- graphics pipelines is supported. If it is+    -- 'Vulkan.Core10.FundamentalTypes.TRUE', creating a graphics pipeline+    -- entirely from pipeline libraries without+    -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT'+    -- is comparable in cost to recording a command in a command buffer.+    graphicsPipelineLibraryFastLinking :: Bool+  , -- | #limits-graphicsPipelineLibraryIndependentInterpolationDecoration#+    -- @graphicsPipelineLibraryIndependentInterpolationDecoration@ indicates+    -- whether @NoPerspective@ and @Flat@ interpolation decorations in the last+    -- vertex processing stage and the fragment shader are required to match+    -- when using graphics pipeline libraries. If it is+    -- 'Vulkan.Core10.FundamentalTypes.TRUE', the interpolation decorations do+    -- not need to match. If it is 'Vulkan.Core10.FundamentalTypes.FALSE',+    -- these decorations /must/ either be present in both stages or neither+    -- stage in order for a given interface variable to match.+    graphicsPipelineLibraryIndependentInterpolationDecoration :: Bool+  }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT)+#endif+deriving instance Show PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT++instance ToCStruct PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT where+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (graphicsPipelineLibraryFastLinking))+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (graphicsPipelineLibraryIndependentInterpolationDecoration))+    f+  cStructSize = 24+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+    f++instance FromCStruct PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT where+  peekCStruct p = do+    graphicsPipelineLibraryFastLinking <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+    graphicsPipelineLibraryIndependentInterpolationDecoration <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+    pure $ PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT+             (bool32ToBool graphicsPipelineLibraryFastLinking) (bool32ToBool graphicsPipelineLibraryIndependentInterpolationDecoration)++instance Storable PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT where+  sizeOf ~_ = 24+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT where+  zero = PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT+           zero+           zero+++-- | VkGraphicsPipelineLibraryCreateInfoEXT - Structure specifying the+-- subsets of the graphics pipeline being compiled+--+-- = Description+--+-- If a 'GraphicsPipelineLibraryCreateInfoEXT' structure is included in the+-- @pNext@ chain of 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo', it+-- specifies the+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets subsets of the graphics pipeline>+-- being created.+--+-- If this structure is omitted, and either+-- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@flags@ includes+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'+-- or the 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pNext@+-- chain includes a+-- 'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'+-- structure with a @libraryCount@ greater than @0@, it is as if @flags@ is+-- @0@. Otherwise if this structure is omitted, it is as if @flags@+-- includes all possible subsets of the graphics pipeline (i.e. a+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-complete complete graphics pipeline>).+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_graphics_pipeline_library VK_EXT_graphics_pipeline_library>,+-- 'GraphicsPipelineLibraryFlagsEXT',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data GraphicsPipelineLibraryCreateInfoEXT = GraphicsPipelineLibraryCreateInfoEXT+  { -- | @flags@ is a bitmask of 'GraphicsPipelineLibraryFlagBitsEXT' specifying+    -- the subsets of the graphics pipeline that are being compiled.+    --+    -- #VUID-VkGraphicsPipelineLibraryCreateInfoEXT-flags-parameter# @flags@+    -- /must/ be a valid combination of 'GraphicsPipelineLibraryFlagBitsEXT'+    -- values+    --+    -- #VUID-VkGraphicsPipelineLibraryCreateInfoEXT-flags-requiredbitmask#+    -- @flags@ /must/ not be @0@+    flags :: GraphicsPipelineLibraryFlagsEXT }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (GraphicsPipelineLibraryCreateInfoEXT)+#endif+deriving instance Show GraphicsPipelineLibraryCreateInfoEXT++instance ToCStruct GraphicsPipelineLibraryCreateInfoEXT where+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p GraphicsPipelineLibraryCreateInfoEXT{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr GraphicsPipelineLibraryFlagsEXT)) (flags)+    f+  cStructSize = 24+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr GraphicsPipelineLibraryFlagsEXT)) (zero)+    f++instance FromCStruct GraphicsPipelineLibraryCreateInfoEXT where+  peekCStruct p = do+    flags <- peek @GraphicsPipelineLibraryFlagsEXT ((p `plusPtr` 16 :: Ptr GraphicsPipelineLibraryFlagsEXT))+    pure $ GraphicsPipelineLibraryCreateInfoEXT+             flags++instance Storable GraphicsPipelineLibraryCreateInfoEXT where+  sizeOf ~_ = 24+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero GraphicsPipelineLibraryCreateInfoEXT where+  zero = GraphicsPipelineLibraryCreateInfoEXT+           zero+++type GraphicsPipelineLibraryFlagsEXT = GraphicsPipelineLibraryFlagBitsEXT++-- | VkGraphicsPipelineLibraryFlagBitsEXT - Bitmask specifying the subset of+-- a graphics pipeline to compile+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_graphics_pipeline_library VK_EXT_graphics_pipeline_library>,+-- 'GraphicsPipelineLibraryFlagsEXT'+newtype GraphicsPipelineLibraryFlagBitsEXT = GraphicsPipelineLibraryFlagBitsEXT Flags+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)++-- | 'GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT' specifies+-- that a pipeline will include+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-vertex-input vertex input interface state>.+pattern GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT    = GraphicsPipelineLibraryFlagBitsEXT 0x00000001+-- | 'GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT' specifies+-- that a pipeline will include+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>.+pattern GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT = GraphicsPipelineLibraryFlagBitsEXT 0x00000002+-- | 'GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT' specifies that a+-- pipeline will include+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>.+pattern GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT           = GraphicsPipelineLibraryFlagBitsEXT 0x00000004+-- | 'GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT' specifies+-- that a pipeline will include+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>.+pattern GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT = GraphicsPipelineLibraryFlagBitsEXT 0x00000008++conNameGraphicsPipelineLibraryFlagBitsEXT :: String+conNameGraphicsPipelineLibraryFlagBitsEXT = "GraphicsPipelineLibraryFlagBitsEXT"++enumPrefixGraphicsPipelineLibraryFlagBitsEXT :: String+enumPrefixGraphicsPipelineLibraryFlagBitsEXT = "GRAPHICS_PIPELINE_LIBRARY_"++showTableGraphicsPipelineLibraryFlagBitsEXT :: [(GraphicsPipelineLibraryFlagBitsEXT, String)]+showTableGraphicsPipelineLibraryFlagBitsEXT =+  [ (GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT   , "VERTEX_INPUT_INTERFACE_BIT_EXT")+  , (GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT, "PRE_RASTERIZATION_SHADERS_BIT_EXT")+  , (GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT          , "FRAGMENT_SHADER_BIT_EXT")+  , (GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT, "FRAGMENT_OUTPUT_INTERFACE_BIT_EXT")+  ]++instance Show GraphicsPipelineLibraryFlagBitsEXT where+  showsPrec = enumShowsPrec enumPrefixGraphicsPipelineLibraryFlagBitsEXT+                            showTableGraphicsPipelineLibraryFlagBitsEXT+                            conNameGraphicsPipelineLibraryFlagBitsEXT+                            (\(GraphicsPipelineLibraryFlagBitsEXT x) -> x)+                            (\x -> showString "0x" . showHex x)++instance Read GraphicsPipelineLibraryFlagBitsEXT where+  readPrec = enumReadPrec enumPrefixGraphicsPipelineLibraryFlagBitsEXT+                          showTableGraphicsPipelineLibraryFlagBitsEXT+                          conNameGraphicsPipelineLibraryFlagBitsEXT+                          GraphicsPipelineLibraryFlagBitsEXT+++type EXT_GRAPHICS_PIPELINE_LIBRARY_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_EXT_GRAPHICS_PIPELINE_LIBRARY_SPEC_VERSION"+pattern EXT_GRAPHICS_PIPELINE_LIBRARY_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_GRAPHICS_PIPELINE_LIBRARY_SPEC_VERSION = 1+++type EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME = "VK_EXT_graphics_pipeline_library"++-- No documentation found for TopLevel "VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME"+pattern EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME = "VK_EXT_graphics_pipeline_library"+
+ src/Vulkan/Extensions/VK_EXT_graphics_pipeline_library.hs-boot view
@@ -0,0 +1,183 @@+{-# language CPP #-}+-- | = Name+--+-- VK_EXT_graphics_pipeline_library - device extension+--+-- == VK_EXT_graphics_pipeline_library+--+-- [__Name String__]+--     @VK_EXT_graphics_pipeline_library@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     321+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+--     -   Requires @VK_KHR_pipeline_library@+--+-- [__Contact__]+--+--     -   Tobias Hector+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_graphics_pipeline_library] @tobski%0A<<Here describe the issue or question you have about the VK_EXT_graphics_pipeline_library extension>> >+--+-- [__Extension Proposal__]+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_graphics_pipeline_library.asciidoc VK_EXT_graphics_pipeline_library>+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2021-08-17+--+-- [__Contributors__]+--+--     -   Tobias Hector, AMD+--+--     -   Chris Glover, Google+--+--     -   Jeff Leger, Qualcomm+--+--     -   Jan-Harald Fredriksen, Arm+--+--     -   Piers Daniell, NVidia+--+--     -   Boris Zanin, Mobica+--+--     -   Krzysztof Niski, NVidia+--+--     -   Dan Ginsburg, Valve+--+--     -   Sebastian Aaltonen, Unity+--+--     -   Arseny Kapoulkine, Roblox+--+--     -   Calle Lejdfors, Ubisoft+--+--     -   Tiago Rodrigues, Ubisoft+--+--     -   Francois Duranleau, Gameloft+--+-- == Description+--+-- This extension allows the separate compilation of four distinct parts of+-- graphics pipelines, with the intent of allowing faster pipeline loading+-- for applications reusing the same shaders or state in multiple+-- pipelines. Each part can be independently compiled into a graphics+-- pipeline library, with a final link step required to create an+-- executable pipeline that can be bound to a command buffer.+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':+--+--     -   'GraphicsPipelineLibraryCreateInfoEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT'+--+-- == New Enums+--+-- -   'GraphicsPipelineLibraryFlagBitsEXT'+--+-- -   'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PipelineLayoutCreateFlagBits'+--+-- == New Bitmasks+--+-- -   'GraphicsPipelineLibraryFlagsEXT'+--+-- == New Enum Constants+--+-- -   'EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME'+--+-- -   'EXT_GRAPHICS_PIPELINE_LIBRARY_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT'+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PipelineLayoutCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT'+--+-- == Version History+--+-- -   Revision 1, 2021-08-17 (Tobias Hector)+--+--     -   Initial draft.+--+-- == See Also+--+-- 'GraphicsPipelineLibraryCreateInfoEXT',+-- 'GraphicsPipelineLibraryFlagBitsEXT', 'GraphicsPipelineLibraryFlagsEXT',+-- 'PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT',+-- 'PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT',+-- 'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PipelineLayoutCreateFlagBits'+--+-- == Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_graphics_pipeline_library Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly.+module Vulkan.Extensions.VK_EXT_graphics_pipeline_library  ( GraphicsPipelineLibraryCreateInfoEXT+                                                           , PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT+                                                           , PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT+                                                           ) where++import Vulkan.CStruct (FromCStruct)+import Vulkan.CStruct (ToCStruct)+import Data.Kind (Type)++data GraphicsPipelineLibraryCreateInfoEXT++instance ToCStruct GraphicsPipelineLibraryCreateInfoEXT+instance Show GraphicsPipelineLibraryCreateInfoEXT++instance FromCStruct GraphicsPipelineLibraryCreateInfoEXT+++data PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT++instance ToCStruct PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT+instance Show PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT++instance FromCStruct PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT+++data PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT++instance ToCStruct PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT+instance Show PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT++instance FromCStruct PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT+
src/Vulkan/Extensions/VK_EXT_multi_draw.hs view
@@ -279,16 +279,16 @@ --     'Vulkan.Core10.Handles.ImageView' or --     'Vulkan.Core10.Handles.BufferView' being written as a storage image --     or storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support+--     @OpTypeImage@ is @Unknown@ then the view’s format feature /must/+--     contain --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' -- -- -   #VUID-vkCmdDrawMultiEXT-OpTypeImage-06424# Any --     'Vulkan.Core10.Handles.ImageView' or --     'Vulkan.Core10.Handles.BufferView' being read as a storage image or --     storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support+--     @OpTypeImage@ is @Unknown@ then the view’s format feature /must/+--     contain --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT' -- -- -   #VUID-vkCmdDrawMultiEXT-None-02697# For each set /n/ that is@@ -388,6 +388,23 @@ --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind --     point used by this command /must/ not be a protected resource --+-- -   #VUID-vkCmdDrawMultiEXT-None-06550# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+--     object that enables+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+--     that object /must/ only be used with @OpImageSample*@ or+--     @OpImageSparseSample*@ instructions+--+-- -   #VUID-vkCmdDrawMultiEXT-ConstOffset-06551# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+--     object that enables+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+--     that object /must/ not use the @ConstOffset@ and @Offset@ operands+-- -- -   #VUID-vkCmdDrawMultiEXT-None-04115# If a --     'Vulkan.Core10.Handles.ImageView' is accessed using @OpImageWrite@ --     as a result of this command, then the @Type@ of the @Texel@ operand@@ -495,6 +512,14 @@ --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT' --     bit set --+-- -   #VUID-vkCmdDrawMultiEXT-None-06666# If the bound graphics pipeline+--     state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command+-- -- -   #VUID-vkCmdDrawMultiEXT-viewportCount-03417# If the bound graphics --     pipeline state was created with the --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'@@ -754,6 +779,18 @@ --     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@ --     used to create the currently bound graphics pipeline --+-- -   #VUID-vkCmdDrawMultiEXT-attachmentCount-06667# If the bound graphics+--     pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @attachmentCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'+--     /must/ be equal to the+--     'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'::@attachmentCount@+--     of the currently bound graphics pipeline+-- -- -   #VUID-vkCmdDrawMultiEXT-pDepthAttachment-06181# If the current --     render pass instance was begun with --     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'@@ -904,6 +941,24 @@ --     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@ --     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE' --+-- -   #VUID-vkCmdDrawMultiEXT-primitivesGeneratedQueryWithRasterizerDiscard-06708#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>+--     feature is not enabled and the+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+--     query is active,+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>+--     /must/ not be enabled.+--+-- -   #VUID-vkCmdDrawMultiEXT-primitivesGeneratedQueryWithNonZeroStreams-06709#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>+--     feature is not enabled and the+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+--     query is active, the bound graphics pipeline /must/ not have been+--     created with a non-zero value in+--     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@.+-- -- -   #VUID-vkCmdDrawMultiEXT-commandBuffer-02712# If @commandBuffer@ is a --     protected command buffer and --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>@@ -1192,16 +1247,16 @@ --     'Vulkan.Core10.Handles.ImageView' or --     'Vulkan.Core10.Handles.BufferView' being written as a storage image --     or storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support+--     @OpTypeImage@ is @Unknown@ then the view’s format feature /must/+--     contain --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' -- -- -   #VUID-vkCmdDrawMultiIndexedEXT-OpTypeImage-06424# Any --     'Vulkan.Core10.Handles.ImageView' or --     'Vulkan.Core10.Handles.BufferView' being read as a storage image or --     storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support+--     @OpTypeImage@ is @Unknown@ then the view’s format feature /must/+--     contain --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT' -- -- -   #VUID-vkCmdDrawMultiIndexedEXT-None-02697# For each set /n/ that is@@ -1301,6 +1356,23 @@ --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind --     point used by this command /must/ not be a protected resource --+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-06550# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+--     object that enables+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+--     that object /must/ only be used with @OpImageSample*@ or+--     @OpImageSparseSample*@ instructions+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-ConstOffset-06551# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+--     object that enables+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+--     that object /must/ not use the @ConstOffset@ and @Offset@ operands+-- -- -   #VUID-vkCmdDrawMultiIndexedEXT-None-04115# If a --     'Vulkan.Core10.Handles.ImageView' is accessed using @OpImageWrite@ --     as a result of this command, then the @Type@ of the @Texel@ operand@@ -1408,6 +1480,14 @@ --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT' --     bit set --+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-06666# If the bound graphics+--     pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command+-- -- -   #VUID-vkCmdDrawMultiIndexedEXT-viewportCount-03417# If the bound --     graphics pipeline state was created with the --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'@@ -1667,6 +1747,18 @@ --     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@ --     used to create the currently bound graphics pipeline --+-- -   #VUID-vkCmdDrawMultiIndexedEXT-attachmentCount-06667# If the bound+--     graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @attachmentCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'+--     /must/ be equal to the+--     'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'::@attachmentCount@+--     of the currently bound graphics pipeline+-- -- -   #VUID-vkCmdDrawMultiIndexedEXT-pDepthAttachment-06181# If the --     current render pass instance was begun with --     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'@@ -1817,6 +1909,24 @@ --     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@ --     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE' --+-- -   #VUID-vkCmdDrawMultiIndexedEXT-primitivesGeneratedQueryWithRasterizerDiscard-06708#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>+--     feature is not enabled and the+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+--     query is active,+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>+--     /must/ not be enabled.+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-primitivesGeneratedQueryWithNonZeroStreams-06709#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>+--     feature is not enabled and the+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+--     query is active, the bound graphics pipeline /must/ not have been+--     created with a non-zero value in+--     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@.+-- -- -   #VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-02712# If --     @commandBuffer@ is a protected command buffer and --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>@@ -2155,8 +2265,8 @@ -- -- = Description ----- If the @VkPhysicalDeviceMultiDrawPropertiesPropertiesEXT@ structure is--- included in the @pNext@ chain of the+-- If the 'PhysicalDeviceMultiDrawPropertiesEXT' 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',
+ src/Vulkan/Extensions/VK_EXT_primitives_generated_query.hs view
@@ -0,0 +1,274 @@+{-# language CPP #-}+-- | = Name+--+-- VK_EXT_primitives_generated_query - device extension+--+-- == VK_EXT_primitives_generated_query+--+-- [__Name String__]+--     @VK_EXT_primitives_generated_query@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     383+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_EXT_transform_feedback@+--+-- [__Special Use__]+--+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse OpenGL \/ ES support>+--+-- [__Contact__]+--+--     -   Shahbaz Youssefi+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_primitives_generated_query] @syoussefi%0A<<Here describe the issue or question you have about the VK_EXT_primitives_generated_query extension>> >+--+-- [__Extension Proposal__]+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_primitives_generated_query.asciidoc VK_EXT_primitives_generated_query>+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2022-01-24+--+-- [__Contributors__]+--+--     -   Shahbaz Youssefi, Google+--+--     -   Piers Daniell, NVIDIA+--+--     -   Jason Ekstrand, Collabora+--+--     -   Jan-Harald Fredriksen, Arm+--+-- == Description+--+-- This extension adds support for a new query type to match OpenGL’s+-- @GL_PRIMITIVES_GENERATED@ to support layering.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_PRIMITIVES_GENERATED_QUERY_EXTENSION_NAME'+--+-- -   'EXT_PRIMITIVES_GENERATED_QUERY_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.QueryType.QueryType':+--+--     -   'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT'+--+-- == Version History+--+-- -   Revision 1, 2021-06-23 (Shahbaz Youssefi)+--+--     -   Internal revisions+--+-- == Issues+--+-- 1) Can the query from @VK_EXT_transform_feedback@ be used instead?+--+-- __RESOLVED__: No. While the query from VK_EXT_transform_feedback can+-- produce the same results as in this extension, it is only available+-- while transform feedback is active. The OpenGL @GL_PRIMITIVES_GENERATED@+-- query is independent from transform feedback. Emulation through+-- artificial transform feedback is unnecessarily inefficient.+--+-- 2) Can+-- 'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT'+-- be used instead?+--+-- __RESOLVED__: It could, but we prefer the extension for simplicity.+-- Vulkan requires that only one query be active at a time. If both the+-- @GL_PRIMITIVES_GENERATED@ and the @GL_CLIPPING_INPUT_PRIMITIVES_ARB@+-- queries need to be simultaneously enabled, emulation of both through+-- 'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT'+-- is inconvenient.+--+-- 3) On some hardware, this query cannot be implemented if+-- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'::@rasterizerDiscardEnable@+-- is enabled. How will this be handled?+--+-- __RESOLVED__: A feature flag is exposed by this extension for this. On+-- said hardware, the GL implementation disables rasterizer-discard and+-- achieves the same effect through other means. It will not be able to do+-- the same in Vulkan due to lack of state information. A feature flag is+-- exposed by this extension so the OpenGL implementation on top of Vulkan+-- would be able to implement a similar workaround.+--+-- 4) On some hardware, this query cannot be implemented for non-zero query+-- indices. How will this be handled?+--+-- __RESOLVED__: A feature flag is exposed by this extension for this. If+-- this feature is not present, the query from @VK_EXT_transform_feedback@+-- can be used to the same effect.+--+-- 5) How is the interaction of this extension with+-- @transformFeedbackRasterizationStreamSelect@ handled?+--+-- __RESOLVED__: Disallowed for non-zero streams. In OpenGL, the+-- rasterization stream is always stream zero.+--+-- == See Also+--+-- 'PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT'+--+-- == Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_primitives_generated_query Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly.+module Vulkan.Extensions.VK_EXT_primitives_generated_query  ( PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT(..)+                                                            , EXT_PRIMITIVES_GENERATED_QUERY_SPEC_VERSION+                                                            , pattern EXT_PRIMITIVES_GENERATED_QUERY_SPEC_VERSION+                                                            , EXT_PRIMITIVES_GENERATED_QUERY_EXTENSION_NAME+                                                            , pattern EXT_PRIMITIVES_GENERATED_QUERY_EXTENSION_NAME+                                                            ) where++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.String (IsString)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import GHC.Generics (Generic)+import Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Vulkan.Core10.FundamentalTypes (bool32ToBool)+import Vulkan.Core10.FundamentalTypes (boolToBool32)+import Vulkan.Core10.FundamentalTypes (Bool32)+import Vulkan.Core10.Enums.StructureType (StructureType)+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT))+-- | VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT - Structure+-- describing support for primitives generated query+--+-- = Members+--+-- This structure describes the following feature:+--+-- = Description+--+-- If the 'PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT' 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. 'PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT' /can/+-- also be used in the @pNext@ chain of+-- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these+-- features.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_primitives_generated_query VK_EXT_primitives_generated_query>,+-- 'Vulkan.Core10.FundamentalTypes.Bool32',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT = PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT+  { -- | #features-primitivesGeneratedQuery# @primitivesGeneratedQuery@ indicates+    -- whether the implementation supports the+    -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+    -- query type.+    primitivesGeneratedQuery :: Bool+  , -- | #features-primitivesGeneratedQueryWithRasterizerDiscard#+    -- @primitivesGeneratedQueryWithRasterizerDiscard@ indicates whether the+    -- implementation supports this query when+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-discard rasterization discard>+    -- is enabled.+    primitivesGeneratedQueryWithRasterizerDiscard :: Bool+  , -- | #features-primitivesGeneratedQueryWithNonZeroStreams#+    -- @primitivesGeneratedQueryWithNonZeroStreams@ indicates whether the+    -- implementation supports this query with a non-zero index in+    -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginQueryIndexedEXT'.+    primitivesGeneratedQueryWithNonZeroStreams :: Bool+  }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT)+#endif+deriving instance Show PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT++instance ToCStruct PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT where+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (primitivesGeneratedQuery))+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (primitivesGeneratedQueryWithRasterizerDiscard))+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (primitivesGeneratedQueryWithNonZeroStreams))+    f+  cStructSize = 32+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))+    f++instance FromCStruct PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT where+  peekCStruct p = do+    primitivesGeneratedQuery <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+    primitivesGeneratedQueryWithRasterizerDiscard <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+    primitivesGeneratedQueryWithNonZeroStreams <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))+    pure $ PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT+             (bool32ToBool primitivesGeneratedQuery) (bool32ToBool primitivesGeneratedQueryWithRasterizerDiscard) (bool32ToBool primitivesGeneratedQueryWithNonZeroStreams)++instance Storable PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT where+  sizeOf ~_ = 32+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT where+  zero = PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT+           zero+           zero+           zero+++type EXT_PRIMITIVES_GENERATED_QUERY_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_EXT_PRIMITIVES_GENERATED_QUERY_SPEC_VERSION"+pattern EXT_PRIMITIVES_GENERATED_QUERY_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_PRIMITIVES_GENERATED_QUERY_SPEC_VERSION = 1+++type EXT_PRIMITIVES_GENERATED_QUERY_EXTENSION_NAME = "VK_EXT_primitives_generated_query"++-- No documentation found for TopLevel "VK_EXT_PRIMITIVES_GENERATED_QUERY_EXTENSION_NAME"+pattern EXT_PRIMITIVES_GENERATED_QUERY_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_PRIMITIVES_GENERATED_QUERY_EXTENSION_NAME = "VK_EXT_primitives_generated_query"+
+ src/Vulkan/Extensions/VK_EXT_primitives_generated_query.hs-boot view
@@ -0,0 +1,154 @@+{-# language CPP #-}+-- | = Name+--+-- VK_EXT_primitives_generated_query - device extension+--+-- == VK_EXT_primitives_generated_query+--+-- [__Name String__]+--     @VK_EXT_primitives_generated_query@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     383+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_EXT_transform_feedback@+--+-- [__Special Use__]+--+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse OpenGL \/ ES support>+--+-- [__Contact__]+--+--     -   Shahbaz Youssefi+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_primitives_generated_query] @syoussefi%0A<<Here describe the issue or question you have about the VK_EXT_primitives_generated_query extension>> >+--+-- [__Extension Proposal__]+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_primitives_generated_query.asciidoc VK_EXT_primitives_generated_query>+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2022-01-24+--+-- [__Contributors__]+--+--     -   Shahbaz Youssefi, Google+--+--     -   Piers Daniell, NVIDIA+--+--     -   Jason Ekstrand, Collabora+--+--     -   Jan-Harald Fredriksen, Arm+--+-- == Description+--+-- This extension adds support for a new query type to match OpenGL’s+-- @GL_PRIMITIVES_GENERATED@ to support layering.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_PRIMITIVES_GENERATED_QUERY_EXTENSION_NAME'+--+-- -   'EXT_PRIMITIVES_GENERATED_QUERY_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.QueryType.QueryType':+--+--     -   'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT'+--+-- == Version History+--+-- -   Revision 1, 2021-06-23 (Shahbaz Youssefi)+--+--     -   Internal revisions+--+-- == Issues+--+-- 1) Can the query from @VK_EXT_transform_feedback@ be used instead?+--+-- __RESOLVED__: No. While the query from VK_EXT_transform_feedback can+-- produce the same results as in this extension, it is only available+-- while transform feedback is active. The OpenGL @GL_PRIMITIVES_GENERATED@+-- query is independent from transform feedback. Emulation through+-- artificial transform feedback is unnecessarily inefficient.+--+-- 2) Can+-- 'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT'+-- be used instead?+--+-- __RESOLVED__: It could, but we prefer the extension for simplicity.+-- Vulkan requires that only one query be active at a time. If both the+-- @GL_PRIMITIVES_GENERATED@ and the @GL_CLIPPING_INPUT_PRIMITIVES_ARB@+-- queries need to be simultaneously enabled, emulation of both through+-- 'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT'+-- is inconvenient.+--+-- 3) On some hardware, this query cannot be implemented if+-- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'::@rasterizerDiscardEnable@+-- is enabled. How will this be handled?+--+-- __RESOLVED__: A feature flag is exposed by this extension for this. On+-- said hardware, the GL implementation disables rasterizer-discard and+-- achieves the same effect through other means. It will not be able to do+-- the same in Vulkan due to lack of state information. A feature flag is+-- exposed by this extension so the OpenGL implementation on top of Vulkan+-- would be able to implement a similar workaround.+--+-- 4) On some hardware, this query cannot be implemented for non-zero query+-- indices. How will this be handled?+--+-- __RESOLVED__: A feature flag is exposed by this extension for this. If+-- this feature is not present, the query from @VK_EXT_transform_feedback@+-- can be used to the same effect.+--+-- 5) How is the interaction of this extension with+-- @transformFeedbackRasterizationStreamSelect@ handled?+--+-- __RESOLVED__: Disallowed for non-zero streams. In OpenGL, the+-- rasterization stream is always stream zero.+--+-- == See Also+--+-- 'PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT'+--+-- == Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_primitives_generated_query Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly.+module Vulkan.Extensions.VK_EXT_primitives_generated_query  (PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT) where++import Vulkan.CStruct (FromCStruct)+import Vulkan.CStruct (ToCStruct)+import Data.Kind (Type)++data PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT++instance ToCStruct PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT+instance Show PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT++instance FromCStruct PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT+
src/Vulkan/Extensions/VK_EXT_private_data.hs view
@@ -91,10 +91,6 @@ -- --     -   'PhysicalDevicePrivateDataFeaturesEXT' ----- == New Enums------ -   'PrivateDataSlotCreateFlagBitsEXT'--- -- == New Bitmasks -- -- -   'PrivateDataSlotCreateFlagsEXT'@@ -136,8 +132,7 @@ -- == See Also -- -- 'DevicePrivateDataCreateInfoEXT',--- 'PhysicalDevicePrivateDataFeaturesEXT',--- 'PrivateDataSlotCreateFlagBitsEXT', 'PrivateDataSlotCreateFlagsEXT',+-- 'PhysicalDevicePrivateDataFeaturesEXT', 'PrivateDataSlotCreateFlagsEXT', -- 'PrivateDataSlotCreateInfoEXT', 'PrivateDataSlotEXT', -- 'createPrivateDataSlotEXT', 'destroyPrivateDataSlotEXT', -- 'getPrivateDataEXT', 'setPrivateDataEXT'@@ -159,7 +154,6 @@                                               , getPrivateDataEXT                                               , PrivateDataSlotCreateFlagsEXT                                               , PrivateDataSlotEXT-                                              , PrivateDataSlotCreateFlagBitsEXT                                               , DevicePrivateDataCreateInfoEXT                                               , PrivateDataSlotCreateInfoEXT                                               , PhysicalDevicePrivateDataFeaturesEXT@@ -177,8 +171,7 @@ import Vulkan.Core13.Promoted_From_VK_EXT_private_data (DevicePrivateDataCreateInfo) import Vulkan.Core13.Promoted_From_VK_EXT_private_data (PhysicalDevicePrivateDataFeatures) import Vulkan.Core13.Handles (PrivateDataSlot)-import Vulkan.Core13.Enums.PrivateDataSlotCreateFlagBits (PrivateDataSlotCreateFlagBits)-import Vulkan.Core13.Enums.PrivateDataSlotCreateFlagBits (PrivateDataSlotCreateFlags)+import Vulkan.Core13.Enums.PrivateDataSlotCreateFlags (PrivateDataSlotCreateFlags) import Vulkan.Core13.Promoted_From_VK_EXT_private_data (PrivateDataSlotCreateInfo) import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_PRIVATE_DATA_SLOT)) import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO))@@ -222,10 +215,6 @@  -- No documentation found for TopLevel "VkPrivateDataSlotEXT" type PrivateDataSlotEXT = PrivateDataSlot----- No documentation found for TopLevel "VkPrivateDataSlotCreateFlagBitsEXT"-type PrivateDataSlotCreateFlagBitsEXT = PrivateDataSlotCreateFlagBits   -- No documentation found for TopLevel "VkDevicePrivateDataCreateInfoEXT"
src/Vulkan/Extensions/VK_EXT_transform_feedback.hs view
@@ -914,11 +914,39 @@ --     the @index@ parameter /must/ be less than --     'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackStreams@ ----- -   #VUID-vkCmdBeginQueryIndexedEXT-queryType-02340# If the @queryType@+-- -   #VUID-vkCmdBeginQueryIndexedEXT-queryType-06689# If the @queryType@+--     used to create @queryPool@ was+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+--     the 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics operations+--+-- -   #VUID-vkCmdBeginQueryIndexedEXT-queryType-06690# If the @queryType@+--     used to create @queryPool@ was+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+--     the @index@ parameter /must/ be less than+--     'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackStreams@+--+-- -   #VUID-vkCmdBeginQueryIndexedEXT-queryType-06691# If the @queryType@+--     used to create @queryPool@ was+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+--     and the+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>+--     feature is not enabled, the @index@ parameter /must/ be zero.+--+-- -   #VUID-vkCmdBeginQueryIndexedEXT-queryType-06692# If the @queryType@ --     used to create @queryPool@ was not --     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'+--     and not+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT', --     the @index@ /must/ be zero --+-- -   #VUID-vkCmdBeginQueryIndexedEXT-queryType-06693# If the @queryType@+--     used to create @queryPool@ was+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+--     then+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitivesGeneratedQuery primitivesGeneratedQuery>+--     /must/ be enabled+-- -- -   #VUID-vkCmdBeginQueryIndexedEXT-queryType-02341# If the @queryType@ --     used to create @queryPool@ was --     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'@@ -1036,6 +1064,7 @@                            QueryControlFlags                         -> -- | @index@ is the query type specific index. When the query type is                            -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'+                           -- or 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT',                            -- the index represents the vertex stream.                            ("index" ::: Word32)                         -> io ()@@ -1090,20 +1119,26 @@ --     view mask /must/ be less than or equal to the number of queries in --     @queryPool@ ----- -   #VUID-vkCmdEndQueryIndexedEXT-queryType-02346# If the @queryType@+-- -   #VUID-vkCmdEndQueryIndexedEXT-queryType-06694# If the @queryType@ --     used to create @queryPool@ was --     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'+--     or+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT', --     the @index@ parameter /must/ be less than --     'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackStreams@ ----- -   #VUID-vkCmdEndQueryIndexedEXT-queryType-02347# If the @queryType@+-- -   #VUID-vkCmdEndQueryIndexedEXT-queryType-06695# If the @queryType@ --     used to create @queryPool@ was not --     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'+--     and not+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT', --     the @index@ /must/ be zero ----- -   #VUID-vkCmdEndQueryIndexedEXT-queryType-02723# If the @queryType@+-- -   #VUID-vkCmdEndQueryIndexedEXT-queryType-06696# If the @queryType@ --     used to create @queryPool@ was --     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'+--     or+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT', --     @index@ /must/ equal the @index@ used to begin the query -- -- == Valid Usage (Implicit)@@ -1279,16 +1314,16 @@ --     'Vulkan.Core10.Handles.ImageView' or --     'Vulkan.Core10.Handles.BufferView' being written as a storage image --     or storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support+--     @OpTypeImage@ is @Unknown@ then the view’s format feature /must/+--     contain --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' -- -- -   #VUID-vkCmdDrawIndirectByteCountEXT-OpTypeImage-06424# Any --     'Vulkan.Core10.Handles.ImageView' or --     'Vulkan.Core10.Handles.BufferView' being read as a storage image or --     storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support+--     @OpTypeImage@ is @Unknown@ then the view’s format feature /must/+--     contain --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT' -- -- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-02697# For each set /n/@@ -1388,6 +1423,23 @@ --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind --     point used by this command /must/ not be a protected resource --+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-06550# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+--     object that enables+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+--     that object /must/ only be used with @OpImageSample*@ or+--     @OpImageSparseSample*@ instructions+--+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-ConstOffset-06551# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+--     object that enables+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+--     that object /must/ not use the @ConstOffset@ and @Offset@ operands+-- -- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-04115# If a --     'Vulkan.Core10.Handles.ImageView' is accessed using @OpImageWrite@ --     as a result of this command, then the @Type@ of the @Texel@ operand@@ -1497,6 +1549,14 @@ --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT' --     bit set --+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-06666# If the bound+--     graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command+-- -- -   #VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-03417# If the --     bound graphics pipeline state was created with the --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'@@ -1757,6 +1817,18 @@ --     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@ --     used to create the currently bound graphics pipeline --+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-attachmentCount-06667# If the+--     bound graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @attachmentCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'+--     /must/ be equal to the+--     'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'::@attachmentCount@+--     of the currently bound graphics pipeline+-- -- -   #VUID-vkCmdDrawIndirectByteCountEXT-pDepthAttachment-06181# If the --     current render pass instance was begun with --     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'@@ -1906,6 +1978,24 @@ --     the currently bound pipeline /must/ have been created with a --     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@ --     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-primitivesGeneratedQueryWithRasterizerDiscard-06708#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>+--     feature is not enabled and the+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+--     query is active,+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>+--     /must/ not be enabled.+--+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-primitivesGeneratedQueryWithNonZeroStreams-06709#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>+--     feature is not enabled and the+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+--     query is active, the bound graphics pipeline /must/ not have been+--     created with a non-zero value in+--     'PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@. -- -- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-04007# All vertex input --     bindings accessed via vertex input variables declared in the vertex
src/Vulkan/Extensions/VK_HUAWEI_subpass_shading.hs view
@@ -563,16 +563,16 @@ --     'Vulkan.Core10.Handles.ImageView' or --     'Vulkan.Core10.Handles.BufferView' being written as a storage image --     or storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support+--     @OpTypeImage@ is @Unknown@ then the view’s format feature /must/+--     contain --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' -- -- -   #VUID-vkCmdSubpassShadingHUAWEI-OpTypeImage-06424# Any --     'Vulkan.Core10.Handles.ImageView' or --     'Vulkan.Core10.Handles.BufferView' being read as a storage image or --     storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support+--     @OpTypeImage@ is @Unknown@ then the view’s format feature /must/+--     contain --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT' -- -- -   #VUID-vkCmdSubpassShadingHUAWEI-None-02697# For each set /n/ that is@@ -671,6 +671,23 @@ --     is not supported, any resource accessed by the --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind --     point used by this command /must/ not be a protected resource+--+-- -   #VUID-vkCmdSubpassShadingHUAWEI-None-06550# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+--     object that enables+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+--     that object /must/ only be used with @OpImageSample*@ or+--     @OpImageSparseSample*@ instructions+--+-- -   #VUID-vkCmdSubpassShadingHUAWEI-ConstOffset-06551# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+--     object that enables+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+--     that object /must/ not use the @ConstOffset@ and @Offset@ operands -- -- -   #VUID-vkCmdSubpassShadingHUAWEI-None-04115# If a --     'Vulkan.Core10.Handles.ImageView' is accessed using @OpImageWrite@
src/Vulkan/Extensions/VK_KHR_acceleration_structure.hs view
@@ -3180,13 +3180,13 @@ --     non-sparse buffer then it /must/ be bound completely and --     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object ----- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03815# For any+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-06707# For any --     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@ --     with a @geometryType@ of 'GEOMETRY_TYPE_INSTANCES_KHR', each --     'AccelerationStructureInstanceKHR'::@accelerationStructureReference@ --     value in @geometry.instances.data.deviceAddress@ /must/ be a valid --     device address containing a value obtained from---     'getAccelerationStructureDeviceAddressKHR'+--     'getAccelerationStructureDeviceAddressKHR' or @0@ -- -- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03675# For each --     @pInfos@[i], @dstAccelerationStructure@ /must/ have been created@@ -3762,14 +3762,14 @@ --     non-sparse buffer then it /must/ be bound completely and --     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object ----- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03815# For+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-06707# For --     any element of @pInfos@[i].@pGeometries@ or --     @pInfos@[i].@ppGeometries@ with a @geometryType@ of --     'GEOMETRY_TYPE_INSTANCES_KHR', each --     'AccelerationStructureInstanceKHR'::@accelerationStructureReference@ --     value in @geometry.instances.data.deviceAddress@ /must/ be a valid --     device address containing a value obtained from---     'getAccelerationStructureDeviceAddressKHR'+--     'getAccelerationStructureDeviceAddressKHR' or @0@ -- -- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03645# --     For any element of @pIndirectDeviceAddresses@, if the buffer from
src/Vulkan/Extensions/VK_KHR_deferred_host_operations.hs view
@@ -106,9 +106,7 @@ -- -- The following examples will illustrate the concept of deferrable -- operations using a hypothetical example. The command--- @vkDoSomethingExpensiveEXT@ denotes a deferrable command. The structure--- @VkExpensiveOperationArgsEXT@ represents the arguments which it would--- normally accept.+-- @vkDoSomethingExpensive@ denotes a deferrable command. -- -- The following example illustrates how a vulkan application might request -- deferral of an expensive operation:@@ -159,7 +157,7 @@ -- >                 // in a job system, a return of VK_THREAD_IDLE_KHR should queue another -- >                 // job, but it is not functionally required -- >     }--- >   );+-- >   )); -- > } -- > -- > for (auto &f : joins) {
src/Vulkan/Extensions/VK_KHR_dynamic_rendering.hs view
@@ -696,20 +696,6 @@ -- -- == Valid Usage (Implicit) ----- -   #VUID-VkAttachmentSampleCountInfoAMD-sType-sType# @sType@ /must/ be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD'------ -   #VUID-VkAttachmentSampleCountInfoAMD-pColorAttachmentSamples-parameter#---     If @colorAttachmentCount@ is not @0@, @pColorAttachmentSamples@---     /must/ be a valid pointer to an array of @colorAttachmentCount@---     valid 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits'---     values------ -   #VUID-VkAttachmentSampleCountInfoAMD-depthStencilAttachmentSamples-parameter#---     If @depthStencilAttachmentSamples@ is not @0@,---     @depthStencilAttachmentSamples@ /must/ be a valid---     'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value--- -- = See Also -- -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_mixed_attachment_samples VK_AMD_mixed_attachment_samples>,@@ -787,18 +773,7 @@ -- specifying the dynamic render pass instance parameters for secondary -- command buffers. ----- == Valid Usage------ -   #VUID-VkMultiviewPerViewAttributesInfoNVX-perViewAttributesPositionXOnly-06163#---     If @perViewAttributesPositionXOnly@ is---     'Vulkan.Core10.FundamentalTypes.TRUE' then @perViewAttributes@---     /must/ also be 'Vulkan.Core10.FundamentalTypes.TRUE'--- -- == Valid Usage (Implicit)------ -   #VUID-VkMultiviewPerViewAttributesInfoNVX-sType-sType# @sType@---     /must/ be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX' -- -- = See Also --
src/Vulkan/Extensions/VK_KHR_format_feature_flags2.hs view
@@ -88,7 +88,7 @@ -- -- -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR' --     indicates that an implementation supports depth comparison performed---     by @OpImage*Dref@ instructions on a given+--     by @OpImage*Dref*@ instructions on a given --     'Vulkan.Core10.Enums.Format.Format'. Previously the result of --     executing a @OpImage*Dref*@ instruction on an image view, where the --     @format@ was not one of the depth\/stencil formats with a depth
src/Vulkan/Extensions/VK_KHR_fragment_shading_rate.hs view
@@ -812,14 +812,6 @@ -- -- == Valid Usage (Implicit) ----- -   #VUID-VkPipelineFragmentShadingRateStateCreateInfoKHR-sType-sType#---     @sType@ /must/ be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR'------ -   #VUID-VkPipelineFragmentShadingRateStateCreateInfoKHR-combinerOps-parameter#---     Any given element of @combinerOps@ /must/ be a valid---     'FragmentShadingRateCombinerOpKHR' value--- -- = See Also -- -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_fragment_shading_rate VK_KHR_fragment_shading_rate>,
src/Vulkan/Extensions/VK_KHR_pipeline_library.hs view
@@ -48,8 +48,10 @@ -- -- == New Structures ----- -   'PipelineLibraryCreateInfoKHR'+-- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo': --+--     -   'PipelineLibraryCreateInfoKHR'+-- -- == New Enum Constants -- -- -   'KHR_PIPELINE_LIBRARY_EXTENSION_NAME'@@ -129,9 +131,6 @@ -- -- -   #VUID-VkPipelineLibraryCreateInfoKHR-sType-sType# @sType@ /must/ be --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR'------ -   #VUID-VkPipelineLibraryCreateInfoKHR-pNext-pNext# @pNext@ /must/ be---     @NULL@ -- -- -   #VUID-VkPipelineLibraryCreateInfoKHR-pLibraries-parameter# If --     @libraryCount@ is not @0@, @pLibraries@ /must/ be a valid pointer to
src/Vulkan/Extensions/VK_KHR_pipeline_library.hs-boot view
@@ -48,7 +48,9 @@ -- -- == New Structures ----- -   'PipelineLibraryCreateInfoKHR'+-- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':+--+--     -   'PipelineLibraryCreateInfoKHR' -- -- == New Enum Constants --
+ src/Vulkan/Extensions/VK_KHR_portability_enumeration.hs view
@@ -0,0 +1,110 @@+{-# language CPP #-}+-- | = Name+--+-- VK_KHR_portability_enumeration - instance extension+--+-- == VK_KHR_portability_enumeration+--+-- [__Name String__]+--     @VK_KHR_portability_enumeration@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     395+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Charles Giessen+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_portability_enumeration] @charles-lunarg%0A<<Here describe the issue or question you have about the VK_KHR_portability_enumeration extension>> >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2021-06-02+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   Interacts with @VK_KHR_portability_subset@+--+-- [__Contributors__]+--+--     -   Lenny Komow, LunarG+--+--     -   Charles Giessen, LunarG+--+-- == Description+--+-- This extension allows applications to control whether devices that+-- expose the @VK_KHR_portability_subset@ extension are included in the+-- results of physical device enumeration. Since devices which support the+-- @VK_KHR_portability_subset@ extension are not fully conformant Vulkan+-- implementations, the Vulkan loader does not report those devices unless+-- the application explicitly asks for them. This prevents applications+-- which may not be aware of non-conformant devices from accidentally using+-- them, as any device which supports the @VK_KHR_portability_subset@+-- extension mandates that the extension must be enabled if that device is+-- used.+--+-- This extension is implemented in the loader.+--+-- == New Enum Constants+--+-- -   'KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME'+--+-- -   'KHR_PORTABILITY_ENUMERATION_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core10.Enums.InstanceCreateFlagBits.InstanceCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.InstanceCreateFlagBits.INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR'+--+-- == Version History+--+-- -   Revision 1, 2021-06-02 (Lenny Komow)+--+--     -   Initial version+--+-- == See Also+--+-- No cross-references are available+--+-- == Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_portability_enumeration Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly.+module Vulkan.Extensions.VK_KHR_portability_enumeration  ( KHR_PORTABILITY_ENUMERATION_SPEC_VERSION+                                                         , pattern KHR_PORTABILITY_ENUMERATION_SPEC_VERSION+                                                         , KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME+                                                         , pattern KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME+                                                         ) where++import Data.String (IsString)++type KHR_PORTABILITY_ENUMERATION_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION"+pattern KHR_PORTABILITY_ENUMERATION_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_PORTABILITY_ENUMERATION_SPEC_VERSION = 1+++type KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME = "VK_KHR_portability_enumeration"++-- No documentation found for TopLevel "VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME"+pattern KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME = "VK_KHR_portability_enumeration"+
src/Vulkan/Extensions/VK_KHR_ray_tracing_pipeline.hs view
@@ -958,16 +958,16 @@ --     'Vulkan.Core10.Handles.ImageView' or --     'Vulkan.Core10.Handles.BufferView' being written as a storage image --     or storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support+--     @OpTypeImage@ is @Unknown@ then the view’s format feature /must/+--     contain --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' -- -- -   #VUID-vkCmdTraceRaysKHR-OpTypeImage-06424# Any --     'Vulkan.Core10.Handles.ImageView' or --     'Vulkan.Core10.Handles.BufferView' being read as a storage image or --     storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support+--     @OpTypeImage@ is @Unknown@ then the view’s format feature /must/+--     contain --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT' -- -- -   #VUID-vkCmdTraceRaysKHR-None-02697# For each set /n/ that is@@ -1067,6 +1067,23 @@ --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind --     point used by this command /must/ not be a protected resource --+-- -   #VUID-vkCmdTraceRaysKHR-None-06550# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+--     object that enables+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+--     that object /must/ only be used with @OpImageSample*@ or+--     @OpImageSparseSample*@ instructions+--+-- -   #VUID-vkCmdTraceRaysKHR-ConstOffset-06551# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+--     object that enables+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+--     that object /must/ not use the @ConstOffset@ and @Offset@ operands+-- -- -   #VUID-vkCmdTraceRaysKHR-None-04115# If a --     'Vulkan.Core10.Handles.ImageView' is accessed using @OpImageWrite@ --     as a result of this command, then the @Type@ of the @Texel@ operand@@ -1864,16 +1881,16 @@ --     'Vulkan.Core10.Handles.ImageView' or --     'Vulkan.Core10.Handles.BufferView' being written as a storage image --     or storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support+--     @OpTypeImage@ is @Unknown@ then the view’s format feature /must/+--     contain --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' -- -- -   #VUID-vkCmdTraceRaysIndirectKHR-OpTypeImage-06424# Any --     'Vulkan.Core10.Handles.ImageView' or --     'Vulkan.Core10.Handles.BufferView' being read as a storage image or --     storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support+--     @OpTypeImage@ is @Unknown@ then the view’s format feature /must/+--     contain --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT' -- -- -   #VUID-vkCmdTraceRaysIndirectKHR-None-02697# For each set /n/ that is@@ -1973,6 +1990,23 @@ --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind --     point used by this command /must/ not be a protected resource --+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-06550# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+--     object that enables+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+--     that object /must/ only be used with @OpImageSample*@ or+--     @OpImageSparseSample*@ instructions+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-ConstOffset-06551# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+--     object that enables+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+--     that object /must/ not use the @ConstOffset@ and @Offset@ operands+-- -- -   #VUID-vkCmdTraceRaysIndirectKHR-None-04115# If a --     'Vulkan.Core10.Handles.ImageView' is accessed using @OpImageWrite@ --     as a result of this command, then the @Type@ of the @Texel@ operand@@ -2855,6 +2889,12 @@ --     feature is not enabled, @flags@ /must/ not include --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR' --+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-06546# @flags@ /must/+--     not include both+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR'+--     and+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR'+-- -- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-03598# If @flags@ --     includes --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR',@@ -2880,6 +2920,11 @@ -- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pDynamicStates-03602# Any --     element of the @pDynamicStates@ member of @pDynamicState@ /must/ be --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR'+--+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pipelineStageCreationFeedbackCount-06652#+--     If+--     'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfo'::@pipelineStageCreationFeedbackCount@+--     is not @0@, it /must/ be equal to @stageCount@ -- -- == Valid Usage (Implicit) --
src/Vulkan/Extensions/VK_KHR_shader_subgroup_uniform_control_flow.hs view
@@ -137,15 +137,13 @@ -- -- = Description ----- If the--- 'Vulkan.Extensions.VK_EXT_private_data.PhysicalDevicePrivateDataFeaturesEXT'+-- If the 'PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR' -- 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.--- 'Vulkan.Extensions.VK_EXT_private_data.PhysicalDevicePrivateDataFeaturesEXT'+-- supported. 'PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR' -- /can/ also be used in the @pNext@ chain of -- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these -- features.
src/Vulkan/Extensions/VK_KHR_swapchain.hs view
@@ -1274,11 +1274,90 @@ -- -- = Description --+-- As mentioned above, if 'createSwapchainKHR' succeeds, it will return a+-- handle to a swapchain containing an array of at least+-- @pCreateInfo->minImageCount@ presentable images.+--+-- While acquired by the application, presentable images /can/ be used in+-- any way that equivalent non-presentable images /can/ be used. A+-- presentable image is equivalent to a non-presentable image created with+-- the following 'Vulkan.Core10.Image.ImageCreateInfo' parameters:+--+-- +---------------------------------------+----------------------------------------------------------------------------------------++-- | 'Vulkan.Core10.Image.ImageCreateInfo' | Value                                                                                  |+-- | Field                                 |                                                                                        |+-- +=======================================+========================================================================================++-- | @flags@                               | 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT' |+-- |                                       | is set if 'SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR' is set                |+-- |                                       |                                                                                        |+-- |                                       | 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_PROTECTED_BIT' is set if         |+-- |                                       | 'SWAPCHAIN_CREATE_PROTECTED_BIT_KHR' is set                                            |+-- |                                       |                                                                                        |+-- |                                       | 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT' and          |+-- |                                       | 'Vulkan.Extensions.VK_KHR_maintenance2.IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR' are both   |+-- |                                       | set if 'SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR' is set                                |+-- |                                       |                                                                                        |+-- |                                       | all other bits are unset                                                               |+-- +---------------------------------------+----------------------------------------------------------------------------------------++-- | @imageType@                           | 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'                                          |+-- +---------------------------------------+----------------------------------------------------------------------------------------++-- | @format@                              | @pCreateInfo->imageFormat@                                                             |+-- +---------------------------------------+----------------------------------------------------------------------------------------++-- | @extent@                              | {@pCreateInfo->imageExtent.width@, @pCreateInfo->imageExtent.height@, @1@}             |+-- +---------------------------------------+----------------------------------------------------------------------------------------++-- | @mipLevels@                           | 1                                                                                      |+-- +---------------------------------------+----------------------------------------------------------------------------------------++-- | @arrayLayers@                         | @pCreateInfo->imageArrayLayers@                                                        |+-- +---------------------------------------+----------------------------------------------------------------------------------------++-- | @samples@                             | 'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'                           |+-- +---------------------------------------+----------------------------------------------------------------------------------------++-- | @tiling@                              | 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL'                                 |+-- +---------------------------------------+----------------------------------------------------------------------------------------++-- | @usage@                               | @pCreateInfo->imageUsage@                                                              |+-- +---------------------------------------+----------------------------------------------------------------------------------------++-- | @sharingMode@                         | @pCreateInfo->imageSharingMode@                                                        |+-- +---------------------------------------+----------------------------------------------------------------------------------------++-- | @queueFamilyIndexCount@               | @pCreateInfo->queueFamilyIndexCount@                                                   |+-- +---------------------------------------+----------------------------------------------------------------------------------------++-- | @pQueueFamilyIndices@                 | @pCreateInfo->pQueueFamilyIndices@                                                     |+-- +---------------------------------------+----------------------------------------------------------------------------------------++-- | @initialLayout@                       | 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED'                               |+-- +---------------------------------------+----------------------------------------------------------------------------------------++--+-- The @pCreateInfo->surface@ /must/ not be destroyed until after the+-- swapchain is destroyed.+--+-- If @pCreateInfo->oldSwapchain@ is+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the native window referred+-- to by @pCreateInfo->surface@ is already associated with a Vulkan+-- swapchain, 'Vulkan.Core10.Enums.Result.ERROR_NATIVE_WINDOW_IN_USE_KHR'+-- /must/ be returned.+--+-- If the native window referred to by @pCreateInfo->surface@ is already+-- associated with a non-Vulkan graphics API surface,+-- 'Vulkan.Core10.Enums.Result.ERROR_NATIVE_WINDOW_IN_USE_KHR' /must/ be+-- returned.+--+-- The native window referred to by @pCreateInfo->surface@ /must/ not+-- become associated with a non-Vulkan graphics API surface before all+-- associated Vulkan swapchains have been destroyed.+--+-- 'createSwapchainKHR' will return+-- 'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST' if the logical device was+-- lost. The 'Vulkan.Extensions.Handles.SwapchainKHR' is a child of the+-- @device@, and /must/ not be destroyed before the @device@. However,+-- 'Vulkan.Extensions.Handles.SurfaceKHR' is not a child of any+-- 'Vulkan.Core10.Handles.Device' and is not affected by the lost device.+-- After successfully recreating a 'Vulkan.Core10.Handles.Device', the same+-- 'Vulkan.Extensions.Handles.SurfaceKHR' /can/ be used to create a new+-- 'Vulkan.Extensions.Handles.SwapchainKHR', provided the previous one was+-- destroyed.+-- -- If the @oldSwapchain@ parameter of @pCreateInfo@ is a valid swapchain, -- which has exclusive full-screen access, that access is released from--- @oldSwapchain@. If the command succeeds in this case, the newly created--- swapchain will automatically acquire exclusive full-screen access from--- @oldSwapchain@.+-- @pCreateInfo->oldSwapchain@. If the command succeeds in this case, the+-- newly created swapchain will automatically acquire exclusive full-screen+-- access from @pCreateInfo->oldSwapchain@. -- -- Note --
src/Vulkan/Extensions/VK_NV_device_generated_commands.hs view
@@ -794,16 +794,16 @@ --     'Vulkan.Core10.Handles.ImageView' or --     'Vulkan.Core10.Handles.BufferView' being written as a storage image --     or storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support+--     @OpTypeImage@ is @Unknown@ then the view’s format feature /must/+--     contain --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' -- -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-OpTypeImage-06424# Any --     'Vulkan.Core10.Handles.ImageView' or --     'Vulkan.Core10.Handles.BufferView' being read as a storage image or --     storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support+--     @OpTypeImage@ is @Unknown@ then the view’s format feature /must/+--     contain --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT' -- -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-02697# For each set /n/@@ -903,6 +903,23 @@ --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind --     point used by this command /must/ not be a protected resource --+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-06550# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+--     object that enables+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+--     that object /must/ only be used with @OpImageSample*@ or+--     @OpImageSparseSample*@ instructions+--+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-ConstOffset-06551# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+--     object that enables+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+--     that object /must/ not use the @ConstOffset@ and @Offset@ operands+-- -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-04115# If a --     'Vulkan.Core10.Handles.ImageView' is accessed using @OpImageWrite@ --     as a result of this command, then the @Type@ of the @Texel@ operand@@ -1012,6 +1029,14 @@ --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT' --     bit set --+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-06666# If the bound+--     graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command+-- -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-03417# If the --     bound graphics pipeline state was created with the --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'@@ -1272,6 +1297,18 @@ --     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@ --     used to create the currently bound graphics pipeline --+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-attachmentCount-06667# If the+--     bound graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @attachmentCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'+--     /must/ be equal to the+--     'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'::@attachmentCount@+--     of the currently bound graphics pipeline+-- -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pDepthAttachment-06181# If the --     current render pass instance was begun with --     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'@@ -1422,6 +1459,24 @@ --     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@ --     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE' --+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-primitivesGeneratedQueryWithRasterizerDiscard-06708#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>+--     feature is not enabled and the+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+--     query is active,+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>+--     /must/ not be enabled.+--+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-primitivesGeneratedQueryWithNonZeroStreams-06709#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>+--     feature is not enabled and the+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+--     query is active, the bound graphics pipeline /must/ not have been+--     created with a non-zero value in+--     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@.+-- -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-04007# All vertex input --     bindings accessed via vertex input variables declared in the vertex --     shader entry point’s interface /must/ have either valid or@@ -2392,16 +2447,14 @@ --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV' -- -- -   #VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-parameter#---     @pGroups@ /must/ be a valid pointer to an array of @groupCount@---     valid 'GraphicsShaderGroupCreateInfoNV' structures+--     If @groupCount@ is not @0@, @pGroups@ /must/ be a valid pointer to+--     an array of @groupCount@ valid 'GraphicsShaderGroupCreateInfoNV'+--     structures -- -- -   #VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pPipelines-parameter# --     If @pipelineCount@ is not @0@, @pPipelines@ /must/ be a valid --     pointer to an array of @pipelineCount@ valid --     'Vulkan.Core10.Handles.Pipeline' handles------ -   #VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-groupCount-arraylength#---     @groupCount@ /must/ be greater than @0@ -- -- = See Also --
src/Vulkan/Extensions/VK_NV_fragment_shading_rate_enums.hs view
@@ -608,22 +608,6 @@ -- -- == Valid Usage (Implicit) ----- -   #VUID-VkPipelineFragmentShadingRateEnumStateCreateInfoNV-sType-sType#---     @sType@ /must/ be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV'------ -   #VUID-VkPipelineFragmentShadingRateEnumStateCreateInfoNV-shadingRateType-parameter#---     @shadingRateType@ /must/ be a valid 'FragmentShadingRateTypeNV'---     value------ -   #VUID-VkPipelineFragmentShadingRateEnumStateCreateInfoNV-shadingRate-parameter#---     @shadingRate@ /must/ be a valid 'FragmentShadingRateNV' value------ -   #VUID-VkPipelineFragmentShadingRateEnumStateCreateInfoNV-combinerOps-parameter#---     Any given element of @combinerOps@ /must/ be a valid---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FragmentShadingRateCombinerOpKHR'---     value--- -- = See Also -- -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_fragment_shading_rate_enums VK_NV_fragment_shading_rate_enums>,
src/Vulkan/Extensions/VK_NV_mesh_shader.hs view
@@ -411,16 +411,16 @@ --     'Vulkan.Core10.Handles.ImageView' or --     'Vulkan.Core10.Handles.BufferView' being written as a storage image --     or storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support+--     @OpTypeImage@ is @Unknown@ then the view’s format feature /must/+--     contain --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' -- -- -   #VUID-vkCmdDrawMeshTasksNV-OpTypeImage-06424# Any --     'Vulkan.Core10.Handles.ImageView' or --     'Vulkan.Core10.Handles.BufferView' being read as a storage image or --     storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support+--     @OpTypeImage@ is @Unknown@ then the view’s format feature /must/+--     contain --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT' -- -- -   #VUID-vkCmdDrawMeshTasksNV-None-02697# For each set /n/ that is@@ -520,6 +520,23 @@ --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind --     point used by this command /must/ not be a protected resource --+-- -   #VUID-vkCmdDrawMeshTasksNV-None-06550# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+--     object that enables+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+--     that object /must/ only be used with @OpImageSample*@ or+--     @OpImageSparseSample*@ instructions+--+-- -   #VUID-vkCmdDrawMeshTasksNV-ConstOffset-06551# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+--     object that enables+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+--     that object /must/ not use the @ConstOffset@ and @Offset@ operands+-- -- -   #VUID-vkCmdDrawMeshTasksNV-None-04115# If a --     'Vulkan.Core10.Handles.ImageView' is accessed using @OpImageWrite@ --     as a result of this command, then the @Type@ of the @Texel@ operand@@ -627,6 +644,14 @@ --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT' --     bit set --+-- -   #VUID-vkCmdDrawMeshTasksNV-None-06666# If the bound graphics+--     pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command+-- -- -   #VUID-vkCmdDrawMeshTasksNV-viewportCount-03417# If the bound --     graphics pipeline state was created with the --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'@@ -886,6 +911,18 @@ --     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@ --     used to create the currently bound graphics pipeline --+-- -   #VUID-vkCmdDrawMeshTasksNV-attachmentCount-06667# If the bound+--     graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @attachmentCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'+--     /must/ be equal to the+--     'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'::@attachmentCount@+--     of the currently bound graphics pipeline+-- -- -   #VUID-vkCmdDrawMeshTasksNV-pDepthAttachment-06181# If the current --     render pass instance was begun with --     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'@@ -1036,6 +1073,24 @@ --     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@ --     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE' --+-- -   #VUID-vkCmdDrawMeshTasksNV-primitivesGeneratedQueryWithRasterizerDiscard-06708#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>+--     feature is not enabled and the+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+--     query is active,+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>+--     /must/ not be enabled.+--+-- -   #VUID-vkCmdDrawMeshTasksNV-primitivesGeneratedQueryWithNonZeroStreams-06709#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>+--     feature is not enabled and the+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+--     query is active, the bound graphics pipeline /must/ not have been+--     created with a non-zero value in+--     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@.+-- -- -   #VUID-vkCmdDrawMeshTasksNV-stage-06480# The bound graphics pipeline --     /must/ not have been created with the --     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'::@stage@@@ -1212,16 +1267,16 @@ --     'Vulkan.Core10.Handles.ImageView' or --     'Vulkan.Core10.Handles.BufferView' being written as a storage image --     or storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support+--     @OpTypeImage@ is @Unknown@ then the view’s format feature /must/+--     contain --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' -- -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-OpTypeImage-06424# Any --     'Vulkan.Core10.Handles.ImageView' or --     'Vulkan.Core10.Handles.BufferView' being read as a storage image or --     storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support+--     @OpTypeImage@ is @Unknown@ then the view’s format feature /must/+--     contain --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT' -- -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-02697# For each set /n/ that@@ -1321,6 +1376,23 @@ --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind --     point used by this command /must/ not be a protected resource --+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-06550# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+--     object that enables+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+--     that object /must/ only be used with @OpImageSample*@ or+--     @OpImageSparseSample*@ instructions+--+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-ConstOffset-06551# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+--     object that enables+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+--     that object /must/ not use the @ConstOffset@ and @Offset@ operands+-- -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-04115# If a --     'Vulkan.Core10.Handles.ImageView' is accessed using @OpImageWrite@ --     as a result of this command, then the @Type@ of the @Texel@ operand@@ -1430,6 +1502,14 @@ --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT' --     bit set --+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-06666# If the bound graphics+--     pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command+-- -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-03417# If the bound --     graphics pipeline state was created with the --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'@@ -1690,6 +1770,18 @@ --     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@ --     used to create the currently bound graphics pipeline --+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-attachmentCount-06667# If the+--     bound graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @attachmentCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'+--     /must/ be equal to the+--     'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'::@attachmentCount@+--     of the currently bound graphics pipeline+-- -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pDepthAttachment-06181# If the --     current render pass instance was begun with --     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'@@ -1840,6 +1932,24 @@ --     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@ --     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE' --+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-primitivesGeneratedQueryWithRasterizerDiscard-06708#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>+--     feature is not enabled and the+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+--     query is active,+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>+--     /must/ not be enabled.+--+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-primitivesGeneratedQueryWithNonZeroStreams-06709#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>+--     feature is not enabled and the+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+--     query is active, the bound graphics pipeline /must/ not have been+--     created with a non-zero value in+--     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@.+-- -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-stage-06480# The bound graphics --     pipeline /must/ not have been created with the --     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'::@stage@@@ -2060,16 +2170,16 @@ --     'Vulkan.Core10.Handles.ImageView' or --     'Vulkan.Core10.Handles.BufferView' being written as a storage image --     or storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support+--     @OpTypeImage@ is @Unknown@ then the view’s format feature /must/+--     contain --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' -- -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-OpTypeImage-06424# Any --     'Vulkan.Core10.Handles.ImageView' or --     'Vulkan.Core10.Handles.BufferView' being read as a storage image or --     storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support+--     @OpTypeImage@ is @Unknown@ then the view’s format feature /must/+--     contain --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT' -- -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02697# For each set /n/@@ -2169,6 +2279,23 @@ --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind --     point used by this command /must/ not be a protected resource --+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-06550# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+--     object that enables+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+--     that object /must/ only be used with @OpImageSample*@ or+--     @OpImageSparseSample*@ instructions+--+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-ConstOffset-06551# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+--     object that enables+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+--     that object /must/ not use the @ConstOffset@ and @Offset@ operands+-- -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04115# If a --     'Vulkan.Core10.Handles.ImageView' is accessed using @OpImageWrite@ --     as a result of this command, then the @Type@ of the @Texel@ operand@@ -2278,6 +2405,14 @@ --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT' --     bit set --+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-06666# If the bound+--     graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command+-- -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-03417# If the --     bound graphics pipeline state was created with the --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'@@ -2538,6 +2673,18 @@ --     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@ --     used to create the currently bound graphics pipeline --+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-attachmentCount-06667# If+--     the bound graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @attachmentCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'+--     /must/ be equal to the+--     'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'::@attachmentCount@+--     of the currently bound graphics pipeline+-- -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pDepthAttachment-06181# If --     the current render pass instance was begun with --     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'@@ -2687,6 +2834,24 @@ --     the currently bound pipeline /must/ have been created with a --     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@ --     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-primitivesGeneratedQueryWithRasterizerDiscard-06708#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>+--     feature is not enabled and the+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+--     query is active,+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>+--     /must/ not be enabled.+--+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-primitivesGeneratedQueryWithNonZeroStreams-06709#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>+--     feature is not enabled and the+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'+--     query is active, the bound graphics pipeline /must/ not have been+--     created with a non-zero value in+--     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@. -- -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-stage-06480# The bound --     graphics pipeline /must/ not have been created with the
src/Vulkan/Extensions/VK_NV_ray_tracing.hs view
@@ -1709,16 +1709,16 @@ --     'Vulkan.Core10.Handles.ImageView' or --     'Vulkan.Core10.Handles.BufferView' being written as a storage image --     or storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support+--     @OpTypeImage@ is @Unknown@ then the view’s format feature /must/+--     contain --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' -- -- -   #VUID-vkCmdTraceRaysNV-OpTypeImage-06424# Any --     'Vulkan.Core10.Handles.ImageView' or --     'Vulkan.Core10.Handles.BufferView' being read as a storage image or --     storage texel buffer where the image format field of the---     @OpTypeImage@ is @Unknown@ /must/ have image format features that---     support+--     @OpTypeImage@ is @Unknown@ then the view’s format feature /must/+--     contain --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT' -- -- -   #VUID-vkCmdTraceRaysNV-None-02697# For each set /n/ that is@@ -1818,6 +1818,23 @@ --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind --     point used by this command /must/ not be a protected resource --+-- -   #VUID-vkCmdTraceRaysNV-None-06550# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+--     object that enables+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+--     that object /must/ only be used with @OpImageSample*@ or+--     @OpImageSparseSample*@ instructions+--+-- -   #VUID-vkCmdTraceRaysNV-ConstOffset-06551# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'+--     object that enables+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+--     that object /must/ not use the @ConstOffset@ and @Offset@ operands+-- -- -   #VUID-vkCmdTraceRaysNV-None-04115# If a --     'Vulkan.Core10.Handles.ImageView' is accessed using @OpImageWrite@ --     as a result of this command, then the @Type@ of the @Texel@ operand@@ -2715,6 +2732,11 @@ --     and --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT' --     at the same time+--+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-pipelineStageCreationFeedbackCount-06651#+--     If+--     'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfo'::@pipelineStageCreationFeedbackCount@+--     is not @0@, it /must/ be equal to @stageCount@ -- -- == Valid Usage (Implicit) --
+ src/Vulkan/Extensions/VK_VALVE_descriptor_set_host_mapping.hs view
@@ -0,0 +1,554 @@+{-# language CPP #-}+-- | = Name+--+-- VK_VALVE_descriptor_set_host_mapping - device extension+--+-- == VK_VALVE_descriptor_set_host_mapping+--+-- [__Name String__]+--     @VK_VALVE_descriptor_set_host_mapping@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     421+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Special Use__]+--+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse D3D support>+--+-- [__Contact__]+--+--     -   Hans-Kristian Arntzen+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_VALVE_descriptor_set_host_mapping] @HansKristian-Work%0A<<Here describe the issue or question you have about the VK_VALVE_descriptor_set_host_mapping extension>> >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2022-02-22+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Hans-Kristian Arntzen, Valve+--+-- == Description+--+-- This extension allows applications to directly query a host pointer for+-- a 'Vulkan.Core10.Handles.DescriptorSet' which /can/ be used to copy+-- descriptors between descriptor sets without the use of an API command.+-- Memory offsets and sizes for descriptors /can/ be queried from a+-- 'Vulkan.Core10.Handles.DescriptorSetLayout' as well.+--+-- Note+--+-- There is currently no specification language written for this extension.+-- The links to APIs defined by the extension are to stubs that only+-- include generated content such as API declarations and implicit valid+-- usage statements.+--+-- Note+--+-- This extension is only intended for use in specific embedded+-- environments with known implementation details, and is therefore+-- undocumented.+--+-- == New Commands+--+-- -   'getDescriptorSetHostMappingVALVE'+--+-- -   'getDescriptorSetLayoutHostMappingInfoVALVE'+--+-- == New Structures+--+-- -   'DescriptorSetBindingReferenceVALVE'+--+-- -   'DescriptorSetLayoutHostMappingInfoVALVE'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE'+--+-- == New Enum Constants+--+-- -   'VALVE_DESCRIPTOR_SET_HOST_MAPPING_EXTENSION_NAME'+--+-- -   'VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE'+--+-- == Stub API References+--+-- There is currently no specification language written for this command.+-- This section acts only as placeholder and to avoid dead links in the+-- specification and reference pages.+--+-- > // Provided by VK_VALVE_descriptor_set_host_mapping+-- > void vkGetDescriptorSetLayoutHostMappingInfoVALVE(+-- >     VkDevice                                    device,+-- >     const VkDescriptorSetBindingReferenceVALVE* pBindingReference,+-- >     VkDescriptorSetLayoutHostMappingInfoVALVE*  pHostMapping);+--+-- === Valid Usage (Implicit)+--+-- -   #VUID-vkGetDescriptorSetLayoutHostMappingInfoVALVE-device-parameter#+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle+--+-- -   #VUID-vkGetDescriptorSetLayoutHostMappingInfoVALVE-pBindingReference-parameter#+--     @pBindingReference@ /must/ be a valid pointer to a valid+--     'DescriptorSetBindingReferenceVALVE' structure+--+-- -   #VUID-vkGetDescriptorSetLayoutHostMappingInfoVALVE-pHostMapping-parameter#+--     @pHostMapping@ /must/ be a valid pointer to a+--     'DescriptorSetLayoutHostMappingInfoVALVE' structure+--+-- There is currently no specification language written for this command.+-- This section acts only as placeholder and to avoid dead links in the+-- specification and reference pages.+--+-- > // Provided by VK_VALVE_descriptor_set_host_mapping+-- > void vkGetDescriptorSetHostMappingVALVE(+-- >     VkDevice                                    device,+-- >     VkDescriptorSet                             descriptorSet,+-- >     void**                                      ppData);+--+-- === Valid Usage (Implicit)+--+-- -   #VUID-vkGetDescriptorSetHostMappingVALVE-device-parameter# @device@+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle+--+-- -   #VUID-vkGetDescriptorSetHostMappingVALVE-descriptorSet-parameter#+--     @descriptorSet@ /must/ be a valid+--     'Vulkan.Core10.Handles.DescriptorSet' handle+--+-- -   #VUID-vkGetDescriptorSetHostMappingVALVE-ppData-parameter# @ppData@+--     /must/ be a valid pointer to a pointer value+--+-- There is currently no specification language written for this type. This+-- section acts only as placeholder and to avoid dead links in the+-- specification and reference pages.+--+-- > // Provided by VK_VALVE_descriptor_set_host_mapping+-- > typedef struct VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE {+-- >     VkStructureType    sType;+-- >     void*              pNext;+-- >     VkBool32           descriptorSetHostMapping;+-- > } VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE;+--+-- === Valid Usage (Implicit)+--+-- -   #VUID-VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE-sType-sType#+--     @sType@ /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE'+--+-- There is currently no specification language written for this type. This+-- section acts only as placeholder and to avoid dead links in the+-- specification and reference pages.+--+-- > // Provided by VK_VALVE_descriptor_set_host_mapping+-- > typedef struct VkDescriptorSetBindingReferenceVALVE {+-- >     VkStructureType          sType;+-- >     const void*              pNext;+-- >     VkDescriptorSetLayout    descriptorSetLayout;+-- >     uint32_t                 binding;+-- > } VkDescriptorSetBindingReferenceVALVE;+--+-- === Valid Usage (Implicit)+--+-- -   #VUID-VkDescriptorSetBindingReferenceVALVE-sType-sType# @sType@+--     /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE'+--+-- -   #VUID-VkDescriptorSetBindingReferenceVALVE-pNext-pNext# @pNext@+--     /must/ be @NULL@+--+-- -   #VUID-VkDescriptorSetBindingReferenceVALVE-descriptorSetLayout-parameter#+--     @descriptorSetLayout@ /must/ be a valid+--     'Vulkan.Core10.Handles.DescriptorSetLayout' handle+--+-- There is currently no specification language written for this type. This+-- section acts only as placeholder and to avoid dead links in the+-- specification and reference pages.+--+-- > // Provided by VK_VALVE_descriptor_set_host_mapping+-- > typedef struct VkDescriptorSetLayoutHostMappingInfoVALVE {+-- >     VkStructureType    sType;+-- >     void*              pNext;+-- >     size_t             descriptorOffset;+-- >     uint32_t           descriptorSize;+-- > } VkDescriptorSetLayoutHostMappingInfoVALVE;+--+-- === Valid Usage (Implicit)+--+-- -   #VUID-VkDescriptorSetLayoutHostMappingInfoVALVE-sType-sType# @sType@+--     /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE'+--+-- -   #VUID-VkDescriptorSetLayoutHostMappingInfoVALVE-pNext-pNext# @pNext@+--     /must/ be @NULL@+--+-- == Version History+--+-- -   Revision 1, 2022-02-22 (Hans-Kristian Arntzen)+--+--     -   Initial specification+--+-- == See Also+--+-- 'DescriptorSetBindingReferenceVALVE',+-- 'DescriptorSetLayoutHostMappingInfoVALVE',+-- 'PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE',+-- 'getDescriptorSetHostMappingVALVE',+-- 'getDescriptorSetLayoutHostMappingInfoVALVE'+--+-- == Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_VALVE_descriptor_set_host_mapping Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly.+module Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping  ( getDescriptorSetLayoutHostMappingInfoVALVE+                                                               , getDescriptorSetHostMappingVALVE+                                                               , PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE(..)+                                                               , DescriptorSetBindingReferenceVALVE(..)+                                                               , DescriptorSetLayoutHostMappingInfoVALVE(..)+                                                               , VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION+                                                               , pattern VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION+                                                               , VALVE_DESCRIPTOR_SET_HOST_MAPPING_EXTENSION_NAME+                                                               , pattern VALVE_DESCRIPTOR_SET_HOST_MAPPING_EXTENSION_NAME+                                                               ) where++import Vulkan.Internal.Utils (traceAroundEvent)+import Control.Exception.Base (bracket)+import Control.Monad (unless)+import Control.Monad.IO.Class (liftIO)+import Foreign.Marshal.Alloc (allocaBytes)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.IO (throwIO)+import GHC.Ptr (nullFunPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Data.Coerce (coerce)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Vulkan.CStruct (FromCStruct)+import Vulkan.CStruct (FromCStruct(..))+import Vulkan.CStruct (ToCStruct)+import Vulkan.CStruct (ToCStruct(..))+import Vulkan.Zero (Zero(..))+import Control.Monad.IO.Class (MonadIO)+import Data.String (IsString)+import Data.Typeable (Typeable)+import Foreign.C.Types (CSize)+import Foreign.C.Types (CSize(..))+import Foreign.C.Types (CSize(CSize))+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import GHC.Generics (Generic)+import GHC.IO.Exception (IOErrorType(..))+import GHC.IO.Exception (IOException(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Word (Word64)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Vulkan.Core10.FundamentalTypes (bool32ToBool)+import Vulkan.Core10.FundamentalTypes (boolToBool32)+import Vulkan.NamedType ((:::))+import Vulkan.Core10.FundamentalTypes (Bool32)+import Vulkan.Core10.Handles (DescriptorSet)+import Vulkan.Core10.Handles (DescriptorSet(..))+import Vulkan.Core10.Handles (DescriptorSetLayout)+import Vulkan.Core10.Handles (Device)+import Vulkan.Core10.Handles (Device(..))+import Vulkan.Core10.Handles (Device(Device))+import Vulkan.Dynamic (DeviceCmds(pVkGetDescriptorSetHostMappingVALVE))+import Vulkan.Dynamic (DeviceCmds(pVkGetDescriptorSetLayoutHostMappingInfoVALVE))+import Vulkan.Core10.Handles (Device_T)+import Vulkan.Core10.Enums.StructureType (StructureType)+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkGetDescriptorSetLayoutHostMappingInfoVALVE+  :: FunPtr (Ptr Device_T -> Ptr DescriptorSetBindingReferenceVALVE -> Ptr DescriptorSetLayoutHostMappingInfoVALVE -> IO ()) -> Ptr Device_T -> Ptr DescriptorSetBindingReferenceVALVE -> Ptr DescriptorSetLayoutHostMappingInfoVALVE -> IO ()++-- | vkGetDescriptorSetLayoutHostMappingInfoVALVE - Stub description of+-- vkGetDescriptorSetLayoutHostMappingInfoVALVE+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VALVE_descriptor_set_host_mapping VK_VALVE_descriptor_set_host_mapping>,+-- 'DescriptorSetBindingReferenceVALVE',+-- 'DescriptorSetLayoutHostMappingInfoVALVE',+-- 'Vulkan.Core10.Handles.Device'+getDescriptorSetLayoutHostMappingInfoVALVE :: forall io+                                            . (MonadIO io)+                                           => -- | #VUID-vkGetDescriptorSetLayoutHostMappingInfoVALVE-device-parameter#+                                              -- @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle+                                              Device+                                           -> -- | #VUID-vkGetDescriptorSetLayoutHostMappingInfoVALVE-pBindingReference-parameter#+                                              -- @pBindingReference@ /must/ be a valid pointer to a valid+                                              -- 'DescriptorSetBindingReferenceVALVE' structure+                                              DescriptorSetBindingReferenceVALVE+                                           -> io (DescriptorSetLayoutHostMappingInfoVALVE)+getDescriptorSetLayoutHostMappingInfoVALVE device bindingReference = liftIO . evalContT $ do+  let vkGetDescriptorSetLayoutHostMappingInfoVALVEPtr = pVkGetDescriptorSetLayoutHostMappingInfoVALVE (case device of Device{deviceCmds} -> deviceCmds)+  lift $ unless (vkGetDescriptorSetLayoutHostMappingInfoVALVEPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetDescriptorSetLayoutHostMappingInfoVALVE is null" Nothing Nothing+  let vkGetDescriptorSetLayoutHostMappingInfoVALVE' = mkVkGetDescriptorSetLayoutHostMappingInfoVALVE vkGetDescriptorSetLayoutHostMappingInfoVALVEPtr+  pBindingReference <- ContT $ withCStruct (bindingReference)+  pPHostMapping <- ContT (withZeroCStruct @DescriptorSetLayoutHostMappingInfoVALVE)+  lift $ traceAroundEvent "vkGetDescriptorSetLayoutHostMappingInfoVALVE" (vkGetDescriptorSetLayoutHostMappingInfoVALVE' (deviceHandle (device)) pBindingReference (pPHostMapping))+  pHostMapping <- lift $ peekCStruct @DescriptorSetLayoutHostMappingInfoVALVE pPHostMapping+  pure $ (pHostMapping)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkGetDescriptorSetHostMappingVALVE+  :: FunPtr (Ptr Device_T -> DescriptorSet -> Ptr (Ptr ()) -> IO ()) -> Ptr Device_T -> DescriptorSet -> Ptr (Ptr ()) -> IO ()++-- | vkGetDescriptorSetHostMappingVALVE - Stub description of+-- vkGetDescriptorSetHostMappingVALVE+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VALVE_descriptor_set_host_mapping VK_VALVE_descriptor_set_host_mapping>,+-- 'Vulkan.Core10.Handles.DescriptorSet', 'Vulkan.Core10.Handles.Device'+getDescriptorSetHostMappingVALVE :: forall io+                                  . (MonadIO io)+                                 => -- | #VUID-vkGetDescriptorSetHostMappingVALVE-device-parameter# @device@+                                    -- /must/ be a valid 'Vulkan.Core10.Handles.Device' handle+                                    Device+                                 -> -- | #VUID-vkGetDescriptorSetHostMappingVALVE-descriptorSet-parameter#+                                    -- @descriptorSet@ /must/ be a valid 'Vulkan.Core10.Handles.DescriptorSet'+                                    -- handle+                                    DescriptorSet+                                 -> io (("data" ::: Ptr ()))+getDescriptorSetHostMappingVALVE device descriptorSet = liftIO . evalContT $ do+  let vkGetDescriptorSetHostMappingVALVEPtr = pVkGetDescriptorSetHostMappingVALVE (case device of Device{deviceCmds} -> deviceCmds)+  lift $ unless (vkGetDescriptorSetHostMappingVALVEPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetDescriptorSetHostMappingVALVE is null" Nothing Nothing+  let vkGetDescriptorSetHostMappingVALVE' = mkVkGetDescriptorSetHostMappingVALVE vkGetDescriptorSetHostMappingVALVEPtr+  pPpData <- ContT $ bracket (callocBytes @(Ptr ()) 8) free+  lift $ traceAroundEvent "vkGetDescriptorSetHostMappingVALVE" (vkGetDescriptorSetHostMappingVALVE' (deviceHandle (device)) (descriptorSet) (pPpData))+  ppData <- lift $ peek @(Ptr ()) pPpData+  pure $ (ppData)+++-- | VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE - Stub description+-- of VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VALVE_descriptor_set_host_mapping VK_VALVE_descriptor_set_host_mapping>,+-- 'Vulkan.Core10.FundamentalTypes.Bool32',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE = PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE+  { -- No documentation found for Nested "VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE" "descriptorSetHostMapping"+    descriptorSetHostMapping :: Bool }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE)+#endif+deriving instance Show PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE++instance ToCStruct PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE where+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (descriptorSetHostMapping))+    f+  cStructSize = 24+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+    f++instance FromCStruct PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE where+  peekCStruct p = do+    descriptorSetHostMapping <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+    pure $ PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE+             (bool32ToBool descriptorSetHostMapping)++instance Storable PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE where+  sizeOf ~_ = 24+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE where+  zero = PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE+           zero+++-- | VkDescriptorSetBindingReferenceVALVE - Stub description of+-- VkDescriptorSetBindingReferenceVALVE+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VALVE_descriptor_set_host_mapping VK_VALVE_descriptor_set_host_mapping>,+-- 'Vulkan.Core10.Handles.DescriptorSetLayout',+-- 'Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getDescriptorSetLayoutHostMappingInfoVALVE'+data DescriptorSetBindingReferenceVALVE = DescriptorSetBindingReferenceVALVE+  { -- | #VUID-VkDescriptorSetBindingReferenceVALVE-descriptorSetLayout-parameter#+    -- @descriptorSetLayout@ /must/ be a valid+    -- 'Vulkan.Core10.Handles.DescriptorSetLayout' handle+    descriptorSetLayout :: DescriptorSetLayout+  , -- No documentation found for Nested "VkDescriptorSetBindingReferenceVALVE" "binding"+    binding :: Word32+  }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (DescriptorSetBindingReferenceVALVE)+#endif+deriving instance Show DescriptorSetBindingReferenceVALVE++instance ToCStruct DescriptorSetBindingReferenceVALVE where+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p DescriptorSetBindingReferenceVALVE{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr DescriptorSetLayout)) (descriptorSetLayout)+    poke ((p `plusPtr` 24 :: Ptr Word32)) (binding)+    f+  cStructSize = 32+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr DescriptorSetLayout)) (zero)+    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+    f++instance FromCStruct DescriptorSetBindingReferenceVALVE where+  peekCStruct p = do+    descriptorSetLayout <- peek @DescriptorSetLayout ((p `plusPtr` 16 :: Ptr DescriptorSetLayout))+    binding <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+    pure $ DescriptorSetBindingReferenceVALVE+             descriptorSetLayout binding++instance Storable DescriptorSetBindingReferenceVALVE where+  sizeOf ~_ = 32+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero DescriptorSetBindingReferenceVALVE where+  zero = DescriptorSetBindingReferenceVALVE+           zero+           zero+++-- | VkDescriptorSetLayoutHostMappingInfoVALVE - Stub description of+-- VkDescriptorSetLayoutHostMappingInfoVALVE+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VALVE_descriptor_set_host_mapping VK_VALVE_descriptor_set_host_mapping>,+-- 'Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getDescriptorSetLayoutHostMappingInfoVALVE'+data DescriptorSetLayoutHostMappingInfoVALVE = DescriptorSetLayoutHostMappingInfoVALVE+  { -- No documentation found for Nested "VkDescriptorSetLayoutHostMappingInfoVALVE" "descriptorOffset"+    descriptorOffset :: Word64+  , -- No documentation found for Nested "VkDescriptorSetLayoutHostMappingInfoVALVE" "descriptorSize"+    descriptorSize :: Word32+  }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (DescriptorSetLayoutHostMappingInfoVALVE)+#endif+deriving instance Show DescriptorSetLayoutHostMappingInfoVALVE++instance ToCStruct DescriptorSetLayoutHostMappingInfoVALVE where+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p DescriptorSetLayoutHostMappingInfoVALVE{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr CSize)) (CSize (descriptorOffset))+    poke ((p `plusPtr` 24 :: Ptr Word32)) (descriptorSize)+    f+  cStructSize = 32+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr CSize)) (CSize (zero))+    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+    f++instance FromCStruct DescriptorSetLayoutHostMappingInfoVALVE where+  peekCStruct p = do+    descriptorOffset <- peek @CSize ((p `plusPtr` 16 :: Ptr CSize))+    descriptorSize <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+    pure $ DescriptorSetLayoutHostMappingInfoVALVE+             (coerce @CSize @Word64 descriptorOffset) descriptorSize++instance Storable DescriptorSetLayoutHostMappingInfoVALVE where+  sizeOf ~_ = 32+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero DescriptorSetLayoutHostMappingInfoVALVE where+  zero = DescriptorSetLayoutHostMappingInfoVALVE+           zero+           zero+++type VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION"+pattern VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION :: forall a . Integral a => a+pattern VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION = 1+++type VALVE_DESCRIPTOR_SET_HOST_MAPPING_EXTENSION_NAME = "VK_VALVE_descriptor_set_host_mapping"++-- No documentation found for TopLevel "VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_EXTENSION_NAME"+pattern VALVE_DESCRIPTOR_SET_HOST_MAPPING_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern VALVE_DESCRIPTOR_SET_HOST_MAPPING_EXTENSION_NAME = "VK_VALVE_descriptor_set_host_mapping"+
+ src/Vulkan/Extensions/VK_VALVE_descriptor_set_host_mapping.hs-boot view
@@ -0,0 +1,260 @@+{-# language CPP #-}+-- | = Name+--+-- VK_VALVE_descriptor_set_host_mapping - device extension+--+-- == VK_VALVE_descriptor_set_host_mapping+--+-- [__Name String__]+--     @VK_VALVE_descriptor_set_host_mapping@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     421+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Special Use__]+--+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse D3D support>+--+-- [__Contact__]+--+--     -   Hans-Kristian Arntzen+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_VALVE_descriptor_set_host_mapping] @HansKristian-Work%0A<<Here describe the issue or question you have about the VK_VALVE_descriptor_set_host_mapping extension>> >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2022-02-22+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Hans-Kristian Arntzen, Valve+--+-- == Description+--+-- This extension allows applications to directly query a host pointer for+-- a 'Vulkan.Core10.Handles.DescriptorSet' which /can/ be used to copy+-- descriptors between descriptor sets without the use of an API command.+-- Memory offsets and sizes for descriptors /can/ be queried from a+-- 'Vulkan.Core10.Handles.DescriptorSetLayout' as well.+--+-- Note+--+-- There is currently no specification language written for this extension.+-- The links to APIs defined by the extension are to stubs that only+-- include generated content such as API declarations and implicit valid+-- usage statements.+--+-- Note+--+-- This extension is only intended for use in specific embedded+-- environments with known implementation details, and is therefore+-- undocumented.+--+-- == New Commands+--+-- -   'getDescriptorSetHostMappingVALVE'+--+-- -   'getDescriptorSetLayoutHostMappingInfoVALVE'+--+-- == New Structures+--+-- -   'DescriptorSetBindingReferenceVALVE'+--+-- -   'DescriptorSetLayoutHostMappingInfoVALVE'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE'+--+-- == New Enum Constants+--+-- -   'VALVE_DESCRIPTOR_SET_HOST_MAPPING_EXTENSION_NAME'+--+-- -   'VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE'+--+-- == Stub API References+--+-- There is currently no specification language written for this command.+-- This section acts only as placeholder and to avoid dead links in the+-- specification and reference pages.+--+-- > // Provided by VK_VALVE_descriptor_set_host_mapping+-- > void vkGetDescriptorSetLayoutHostMappingInfoVALVE(+-- >     VkDevice                                    device,+-- >     const VkDescriptorSetBindingReferenceVALVE* pBindingReference,+-- >     VkDescriptorSetLayoutHostMappingInfoVALVE*  pHostMapping);+--+-- === Valid Usage (Implicit)+--+-- -   #VUID-vkGetDescriptorSetLayoutHostMappingInfoVALVE-device-parameter#+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle+--+-- -   #VUID-vkGetDescriptorSetLayoutHostMappingInfoVALVE-pBindingReference-parameter#+--     @pBindingReference@ /must/ be a valid pointer to a valid+--     'DescriptorSetBindingReferenceVALVE' structure+--+-- -   #VUID-vkGetDescriptorSetLayoutHostMappingInfoVALVE-pHostMapping-parameter#+--     @pHostMapping@ /must/ be a valid pointer to a+--     'DescriptorSetLayoutHostMappingInfoVALVE' structure+--+-- There is currently no specification language written for this command.+-- This section acts only as placeholder and to avoid dead links in the+-- specification and reference pages.+--+-- > // Provided by VK_VALVE_descriptor_set_host_mapping+-- > void vkGetDescriptorSetHostMappingVALVE(+-- >     VkDevice                                    device,+-- >     VkDescriptorSet                             descriptorSet,+-- >     void**                                      ppData);+--+-- === Valid Usage (Implicit)+--+-- -   #VUID-vkGetDescriptorSetHostMappingVALVE-device-parameter# @device@+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle+--+-- -   #VUID-vkGetDescriptorSetHostMappingVALVE-descriptorSet-parameter#+--     @descriptorSet@ /must/ be a valid+--     'Vulkan.Core10.Handles.DescriptorSet' handle+--+-- -   #VUID-vkGetDescriptorSetHostMappingVALVE-ppData-parameter# @ppData@+--     /must/ be a valid pointer to a pointer value+--+-- There is currently no specification language written for this type. This+-- section acts only as placeholder and to avoid dead links in the+-- specification and reference pages.+--+-- > // Provided by VK_VALVE_descriptor_set_host_mapping+-- > typedef struct VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE {+-- >     VkStructureType    sType;+-- >     void*              pNext;+-- >     VkBool32           descriptorSetHostMapping;+-- > } VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE;+--+-- === Valid Usage (Implicit)+--+-- -   #VUID-VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE-sType-sType#+--     @sType@ /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE'+--+-- There is currently no specification language written for this type. This+-- section acts only as placeholder and to avoid dead links in the+-- specification and reference pages.+--+-- > // Provided by VK_VALVE_descriptor_set_host_mapping+-- > typedef struct VkDescriptorSetBindingReferenceVALVE {+-- >     VkStructureType          sType;+-- >     const void*              pNext;+-- >     VkDescriptorSetLayout    descriptorSetLayout;+-- >     uint32_t                 binding;+-- > } VkDescriptorSetBindingReferenceVALVE;+--+-- === Valid Usage (Implicit)+--+-- -   #VUID-VkDescriptorSetBindingReferenceVALVE-sType-sType# @sType@+--     /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE'+--+-- -   #VUID-VkDescriptorSetBindingReferenceVALVE-pNext-pNext# @pNext@+--     /must/ be @NULL@+--+-- -   #VUID-VkDescriptorSetBindingReferenceVALVE-descriptorSetLayout-parameter#+--     @descriptorSetLayout@ /must/ be a valid+--     'Vulkan.Core10.Handles.DescriptorSetLayout' handle+--+-- There is currently no specification language written for this type. This+-- section acts only as placeholder and to avoid dead links in the+-- specification and reference pages.+--+-- > // Provided by VK_VALVE_descriptor_set_host_mapping+-- > typedef struct VkDescriptorSetLayoutHostMappingInfoVALVE {+-- >     VkStructureType    sType;+-- >     void*              pNext;+-- >     size_t             descriptorOffset;+-- >     uint32_t           descriptorSize;+-- > } VkDescriptorSetLayoutHostMappingInfoVALVE;+--+-- === Valid Usage (Implicit)+--+-- -   #VUID-VkDescriptorSetLayoutHostMappingInfoVALVE-sType-sType# @sType@+--     /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE'+--+-- -   #VUID-VkDescriptorSetLayoutHostMappingInfoVALVE-pNext-pNext# @pNext@+--     /must/ be @NULL@+--+-- == Version History+--+-- -   Revision 1, 2022-02-22 (Hans-Kristian Arntzen)+--+--     -   Initial specification+--+-- == See Also+--+-- 'DescriptorSetBindingReferenceVALVE',+-- 'DescriptorSetLayoutHostMappingInfoVALVE',+-- 'PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE',+-- 'getDescriptorSetHostMappingVALVE',+-- 'getDescriptorSetLayoutHostMappingInfoVALVE'+--+-- == Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_VALVE_descriptor_set_host_mapping Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly.+module Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping  ( DescriptorSetBindingReferenceVALVE+                                                               , DescriptorSetLayoutHostMappingInfoVALVE+                                                               , PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE+                                                               ) where++import Vulkan.CStruct (FromCStruct)+import Vulkan.CStruct (ToCStruct)+import Data.Kind (Type)++data DescriptorSetBindingReferenceVALVE++instance ToCStruct DescriptorSetBindingReferenceVALVE+instance Show DescriptorSetBindingReferenceVALVE++instance FromCStruct DescriptorSetBindingReferenceVALVE+++data DescriptorSetLayoutHostMappingInfoVALVE++instance ToCStruct DescriptorSetLayoutHostMappingInfoVALVE+instance Show DescriptorSetLayoutHostMappingInfoVALVE++instance FromCStruct DescriptorSetLayoutHostMappingInfoVALVE+++data PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE++instance ToCStruct PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE+instance Show PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE++instance FromCStruct PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE+
src/Vulkan/SPIRVRequirements.hs view
@@ -633,6 +633,17 @@     ]   "SPV_KHR_integer_dot_product" ->     (,) [RequireInstanceVersion $ MAKE_API_VERSION 1 3 0] [RequireDeviceVersion $ MAKE_API_VERSION 1 3 0]+  "SPV_INTEL_shader_integer_functions" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = 0+                               }+    ]+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME+                             , deviceExtensionMinVersion = 0+                             }+    ]   "SPV_KHR_device_group" ->     (,) [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0] [RequireDeviceVersion $ MAKE_API_VERSION 1 1 0]   _ -> ([], [])
src/Vulkan/Version.hs view
@@ -19,11 +19,11 @@ import Data.Word (Word32)  pattern HEADER_VERSION :: Word32-pattern HEADER_VERSION = 205+pattern HEADER_VERSION = 210   pattern HEADER_VERSION_COMPLETE :: Word32-pattern HEADER_VERSION_COMPLETE = MAKE_API_VERSION 1 3 205+pattern HEADER_VERSION_COMPLETE = MAKE_API_VERSION 1 3 210   pattern MAKE_API_VERSION :: Word32 -> Word32 -> Word32 -> Word32
vulkan.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack  name:           vulkan-version:        3.16.2+version:        3.17 synopsis:       Bindings to the Vulkan graphics API. description:    Please see [the readme](https://github.com/expipiplus1/vulkan/#readme) category:       Graphics@@ -96,7 +96,7 @@       Vulkan.Core10.Enums.ImageViewCreateFlagBits       Vulkan.Core10.Enums.ImageViewType       Vulkan.Core10.Enums.IndexType-      Vulkan.Core10.Enums.InstanceCreateFlags+      Vulkan.Core10.Enums.InstanceCreateFlagBits       Vulkan.Core10.Enums.InternalAllocationType       Vulkan.Core10.Enums.LogicOp       Vulkan.Core10.Enums.MemoryHeapFlagBits@@ -112,7 +112,7 @@       Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits       Vulkan.Core10.Enums.PipelineDynamicStateCreateFlags       Vulkan.Core10.Enums.PipelineInputAssemblyStateCreateFlags-      Vulkan.Core10.Enums.PipelineLayoutCreateFlags+      Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits       Vulkan.Core10.Enums.PipelineMultisampleStateCreateFlags       Vulkan.Core10.Enums.PipelineRasterizationStateCreateFlags       Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits@@ -253,7 +253,7 @@       Vulkan.Core13.Enums.FormatFeatureFlags2       Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits       Vulkan.Core13.Enums.PipelineStageFlags2-      Vulkan.Core13.Enums.PrivateDataSlotCreateFlagBits+      Vulkan.Core13.Enums.PrivateDataSlotCreateFlags       Vulkan.Core13.Enums.RenderingFlagBits       Vulkan.Core13.Enums.SubmitFlagBits       Vulkan.Core13.Enums.ToolPurposeFlagBits@@ -344,6 +344,7 @@       Vulkan.Extensions.VK_EXT_full_screen_exclusive       Vulkan.Extensions.VK_EXT_global_priority       Vulkan.Extensions.VK_EXT_global_priority_query+      Vulkan.Extensions.VK_EXT_graphics_pipeline_library       Vulkan.Extensions.VK_EXT_hdr_metadata       Vulkan.Extensions.VK_EXT_headless_surface       Vulkan.Extensions.VK_EXT_host_query_reset@@ -365,6 +366,7 @@       Vulkan.Extensions.VK_EXT_pipeline_creation_feedback       Vulkan.Extensions.VK_EXT_post_depth_coverage       Vulkan.Extensions.VK_EXT_primitive_topology_list_restart+      Vulkan.Extensions.VK_EXT_primitives_generated_query       Vulkan.Extensions.VK_EXT_private_data       Vulkan.Extensions.VK_EXT_provoking_vertex       Vulkan.Extensions.VK_EXT_queue_family_foreign@@ -461,6 +463,7 @@       Vulkan.Extensions.VK_KHR_performance_query       Vulkan.Extensions.VK_KHR_pipeline_executable_properties       Vulkan.Extensions.VK_KHR_pipeline_library+      Vulkan.Extensions.VK_KHR_portability_enumeration       Vulkan.Extensions.VK_KHR_portability_subset       Vulkan.Extensions.VK_KHR_present_id       Vulkan.Extensions.VK_KHR_present_wait@@ -549,6 +552,7 @@       Vulkan.Extensions.VK_QCOM_render_pass_transform       Vulkan.Extensions.VK_QCOM_rotated_copy_commands       Vulkan.Extensions.VK_QNX_screen_surface+      Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping       Vulkan.Extensions.VK_VALVE_mutable_descriptor_type       Vulkan.NamedType       Vulkan.SPIRVRequirements