vulkan 3.16.2 → 3.17
raw patch · 82 files changed
+9870/−5799 lines, 82 files
Files
- changelog.md +7/−0
- package.yaml +1/−1
- src/Vulkan/CStruct/Extends.hs +34/−0
- src/Vulkan/Core10/CommandBufferBuilding.hs +371/−47
- src/Vulkan/Core10/Device.hs +16/−0
- src/Vulkan/Core10/DeviceInitialization.hs +23/−9
- src/Vulkan/Core10/Enums.hs +4/−4
- src/Vulkan/Core10/Enums/InstanceCreateFlagBits.hs +58/−0
- src/Vulkan/Core10/Enums/InstanceCreateFlags.hs +0/−53
- src/Vulkan/Core10/Enums/PipelineCreateFlagBits.hs +52/−10
- src/Vulkan/Core10/Enums/PipelineLayoutCreateFlagBits.hs +64/−0
- src/Vulkan/Core10/Enums/PipelineLayoutCreateFlags.hs +0/−53
- src/Vulkan/Core10/Enums/QueryType.hs +6/−0
- src/Vulkan/Core10/Enums/StructureType.hs +53/−4
- src/Vulkan/Core10/ExtensionDiscovery.hs +2/−8
- src/Vulkan/Core10/FundamentalTypes.hs +6/−3
- src/Vulkan/Core10/Handles.hs +4/−0
- src/Vulkan/Core10/Image.hs +5/−5
- src/Vulkan/Core10/ImageView.hs +12/−5
- src/Vulkan/Core10/Memory.hs +7/−2
- src/Vulkan/Core10/Pass.hs +76/−97
- src/Vulkan/Core10/Pipeline.hs +5886/−5025
- src/Vulkan/Core10/PipelineLayout.hs +14/−5
- src/Vulkan/Core10/Shader.hs +0/−7
- src/Vulkan/Core11/Promoted_From_VK_KHR_device_group.hs +21/−4
- src/Vulkan/Core11/Promoted_From_VK_KHR_get_physical_device_properties2.hs +9/−0
- src/Vulkan/Core11/Promoted_From_VK_KHR_multiview.hs +9/−0
- src/Vulkan/Core12/Enums/DescriptorBindingFlagBits.hs +5/−3
- src/Vulkan/Core12/Promoted_From_VK_EXT_descriptor_indexing.hs +6/−7
- src/Vulkan/Core12/Promoted_From_VK_KHR_create_renderpass2.hs +57/−0
- src/Vulkan/Core12/Promoted_From_VK_KHR_draw_indirect_count.hs +118/−8
- src/Vulkan/Core13/Enums.hs +2/−2
- src/Vulkan/Core13/Enums/FormatFeatureFlags2.hs +2/−2
- src/Vulkan/Core13/Enums/PrivateDataSlotCreateFlagBits.hs +0/−54
- src/Vulkan/Core13/Enums/PrivateDataSlotCreateFlagBits.hs-boot +0/−12
- src/Vulkan/Core13/Enums/PrivateDataSlotCreateFlags.hs +54/−0
- src/Vulkan/Core13/Enums/PrivateDataSlotCreateFlags.hs-boot +8/−0
- src/Vulkan/Core13/Promoted_From_VK_EXT_extended_dynamic_state.hs +0/−62
- src/Vulkan/Core13/Promoted_From_VK_EXT_extended_dynamic_state2.hs +0/−18
- src/Vulkan/Core13/Promoted_From_VK_EXT_pipeline_creation_feedback.hs +1/−31
- src/Vulkan/Core13/Promoted_From_VK_EXT_private_data.hs +5/−9
- src/Vulkan/Core13/Promoted_From_VK_KHR_copy_commands2.hs +57/−12
- src/Vulkan/Core13/Promoted_From_VK_KHR_dynamic_rendering.hs +23/−59
- src/Vulkan/Core13/Promoted_From_VK_KHR_maintenance4.hs +2/−3
- src/Vulkan/Dynamic.hs +10/−1
- src/Vulkan/Extensions.hs +8/−0
- src/Vulkan/Extensions/Dependencies.hs +10/−3
- src/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs +8/−4
- src/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs-boot +6/−2
- src/Vulkan/Extensions/VK_EXT_color_write_enable.hs +9/−4
- src/Vulkan/Extensions/VK_EXT_debug_utils.hs +13/−5
- src/Vulkan/Extensions/VK_EXT_debug_utils.hs-boot +4/−2
- src/Vulkan/Extensions/VK_EXT_depth_clip_control.hs +5/−5
- src/Vulkan/Extensions/VK_EXT_depth_clip_control.hs-boot +5/−5
- src/Vulkan/Extensions/VK_EXT_graphics_pipeline_library.hs +500/−0
- src/Vulkan/Extensions/VK_EXT_graphics_pipeline_library.hs-boot +183/−0
- src/Vulkan/Extensions/VK_EXT_multi_draw.hs +120/−10
- src/Vulkan/Extensions/VK_EXT_primitives_generated_query.hs +274/−0
- src/Vulkan/Extensions/VK_EXT_primitives_generated_query.hs-boot +154/−0
- src/Vulkan/Extensions/VK_EXT_private_data.hs +2/−13
- src/Vulkan/Extensions/VK_EXT_transform_feedback.hs +98/−8
- src/Vulkan/Extensions/VK_HUAWEI_subpass_shading.hs +21/−4
- src/Vulkan/Extensions/VK_KHR_acceleration_structure.hs +4/−4
- src/Vulkan/Extensions/VK_KHR_deferred_host_operations.hs +2/−4
- src/Vulkan/Extensions/VK_KHR_dynamic_rendering.hs +0/−25
- src/Vulkan/Extensions/VK_KHR_format_feature_flags2.hs +1/−1
- src/Vulkan/Extensions/VK_KHR_fragment_shading_rate.hs +0/−8
- src/Vulkan/Extensions/VK_KHR_pipeline_library.hs +3/−4
- src/Vulkan/Extensions/VK_KHR_pipeline_library.hs-boot +3/−1
- src/Vulkan/Extensions/VK_KHR_portability_enumeration.hs +110/−0
- src/Vulkan/Extensions/VK_KHR_ray_tracing_pipeline.hs +53/−8
- src/Vulkan/Extensions/VK_KHR_shader_subgroup_uniform_control_flow.hs +2/−4
- src/Vulkan/Extensions/VK_KHR_swapchain.hs +82/−3
- src/Vulkan/Extensions/VK_NV_device_generated_commands.hs +62/−9
- src/Vulkan/Extensions/VK_NV_fragment_shading_rate_enums.hs +0/−16
- src/Vulkan/Extensions/VK_NV_mesh_shader.hs +177/−12
- src/Vulkan/Extensions/VK_NV_ray_tracing.hs +26/−4
- src/Vulkan/Extensions/VK_VALVE_descriptor_set_host_mapping.hs +554/−0
- src/Vulkan/Extensions/VK_VALVE_descriptor_set_host_mapping.hs-boot +260/−0
- src/Vulkan/SPIRVRequirements.hs +11/−0
- src/Vulkan/Version.hs +2/−2
- vulkan.cabal +8/−4
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