packages feed

vulkan 3.10.4 → 3.11

raw patch · 32 files changed

+4418/−174 lines, 32 files

Files

changelog.md view
@@ -2,6 +2,9 @@  ## WIP +## [3.11] - 2021-06-21+- Bump API version to v1.2.182+ ## [3.10.4] - 2021-06-14 - Bump API version to v1.2.181 
package.yaml view
@@ -1,5 +1,5 @@ name: vulkan-version: "3.10.4"+version: "3.11" synopsis: Bindings to the Vulkan graphics API. category: Graphics maintainer: Joe Hermaszewski <live.long.and.prosper@monoid.al>
src/Vulkan/CStruct/Extends.hs view
@@ -59,10 +59,15 @@ import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureGeometryAabbsDataKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureGeometryInstancesDataKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureGeometryKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (AccelerationStructureGeometryMotionTrianglesDataNV) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureGeometryTrianglesDataKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (AccelerationStructureInfoNV) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureInstanceKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (AccelerationStructureMatrixMotionInstanceNV) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (AccelerationStructureMemoryRequirementsInfoNV)+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (AccelerationStructureMotionInfoNV)+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (AccelerationStructureMotionInstanceNV)+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (AccelerationStructureSRTMotionInstanceNV) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureVersionInfoKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain (AcquireNextImageInfoKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_performance_query (AcquireProfilingLockInfoKHR)@@ -321,6 +326,8 @@ import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_memory_win32 (MemoryWin32HandlePropertiesKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_external_memory (MemoryZirconHandlePropertiesFUCHSIA) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_metal_surface (MetalSurfaceCreateInfoEXT)+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_multi_draw (MultiDrawIndexedInfoEXT)+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_multi_draw (MultiDrawInfoEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (MultisamplePropertiesEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_VALVE_mutable_descriptor_type (MutableDescriptorTypeCreateInfoVALVE) import {-# SOURCE #-} Vulkan.Extensions.VK_VALVE_mutable_descriptor_type (MutableDescriptorTypeListVALVE)@@ -367,6 +374,7 @@ import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_diagnostics_config (PhysicalDeviceDiagnosticsConfigFeaturesNV) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_discard_rectangles (PhysicalDeviceDiscardRectanglePropertiesEXT) import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_driver_properties (PhysicalDeviceDriverProperties)+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_physical_device_drm (PhysicalDeviceDrmPropertiesEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_scissor_exclusive (PhysicalDeviceExclusiveScissorFeaturesNV) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_extended_dynamic_state2 (PhysicalDeviceExtendedDynamicState2FeaturesEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_extended_dynamic_state (PhysicalDeviceExtendedDynamicStateFeaturesEXT)@@ -412,6 +420,8 @@ import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceMemoryProperties2) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_mesh_shader (PhysicalDeviceMeshShaderFeaturesNV) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_mesh_shader (PhysicalDeviceMeshShaderPropertiesNV)+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_multi_draw (PhysicalDeviceMultiDrawFeaturesEXT)+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_multi_draw (PhysicalDeviceMultiDrawPropertiesEXT) import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_multiview (PhysicalDeviceMultiviewFeatures) import {-# SOURCE #-} Vulkan.Extensions.VK_NVX_multiview_per_view_attributes (PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX) import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_multiview (PhysicalDeviceMultiviewProperties)@@ -433,6 +443,7 @@ import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_provoking_vertex (PhysicalDeviceProvokingVertexPropertiesEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_push_descriptor (PhysicalDevicePushDescriptorPropertiesKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_query (PhysicalDeviceRayQueryFeaturesKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (PhysicalDeviceRayTracingMotionBlurFeaturesNV) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (PhysicalDeviceRayTracingPipelineFeaturesKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (PhysicalDeviceRayTracingPipelinePropertiesKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (PhysicalDeviceRayTracingPropertiesNV)@@ -572,6 +583,7 @@ import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (RenderPassSampleLocationsBeginInfoEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_render_pass_transform (RenderPassTransformBeginInfoQCOM) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_commands2 (ResolveImageInfo2KHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (SRTDataNV) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (SampleLocationEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (SampleLocationsInfoEXT) import {-# SOURCE #-} Vulkan.Core10.Sampler (SamplerCreateInfo)@@ -771,6 +783,8 @@   type family Extends (a :: [Type] -> Type) (b :: Type) :: Constraint where+  Extends AccelerationStructureCreateInfoKHR AccelerationStructureMotionInfoNV = ()+  Extends AccelerationStructureGeometryTrianglesDataKHR AccelerationStructureGeometryMotionTrianglesDataNV = ()   Extends AndroidHardwareBufferPropertiesANDROID AndroidHardwareBufferFormatPropertiesANDROID = ()   Extends AttachmentDescription2 AttachmentDescriptionStencilLayout = ()   Extends AttachmentReference2 AttachmentReferenceStencilLayout = ()@@ -809,6 +823,7 @@   Extends DeviceCreateInfo PhysicalDeviceSamplerYcbcrConversionFeatures = ()   Extends DeviceCreateInfo PhysicalDeviceProtectedMemoryFeatures = ()   Extends DeviceCreateInfo PhysicalDeviceBlendOperationAdvancedFeaturesEXT = ()+  Extends DeviceCreateInfo PhysicalDeviceMultiDrawFeaturesEXT = ()   Extends DeviceCreateInfo PhysicalDeviceInlineUniformBlockFeaturesEXT = ()   Extends DeviceCreateInfo PhysicalDeviceShaderDrawParametersFeatures = ()   Extends DeviceCreateInfo PhysicalDeviceShaderFloat16Int8Features = ()@@ -890,6 +905,7 @@   Extends DeviceCreateInfo PhysicalDeviceInheritedViewportScissorFeaturesNV = ()   Extends DeviceCreateInfo PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT = ()   Extends DeviceCreateInfo PhysicalDeviceProvokingVertexFeaturesEXT = ()+  Extends DeviceCreateInfo PhysicalDeviceRayTracingMotionBlurFeaturesNV = ()   Extends DeviceQueueCreateInfo DeviceQueueGlobalPriorityCreateInfoEXT = ()   Extends FenceCreateInfo ExportFenceCreateInfo = ()   Extends FenceCreateInfo ExportFenceWin32HandleInfoKHR = ()@@ -953,6 +969,7 @@   Extends PhysicalDeviceFeatures2 PhysicalDeviceSamplerYcbcrConversionFeatures = ()   Extends PhysicalDeviceFeatures2 PhysicalDeviceProtectedMemoryFeatures = ()   Extends PhysicalDeviceFeatures2 PhysicalDeviceBlendOperationAdvancedFeaturesEXT = ()+  Extends PhysicalDeviceFeatures2 PhysicalDeviceMultiDrawFeaturesEXT = ()   Extends PhysicalDeviceFeatures2 PhysicalDeviceInlineUniformBlockFeaturesEXT = ()   Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderDrawParametersFeatures = ()   Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderFloat16Int8Features = ()@@ -1039,6 +1056,7 @@   Extends PhysicalDeviceImageFormatInfo2 PhysicalDeviceImageViewImageFormatInfoEXT = ()   Extends PhysicalDeviceMemoryProperties2 PhysicalDeviceMemoryBudgetPropertiesEXT = ()   Extends PhysicalDeviceProperties2 PhysicalDeviceDeviceGeneratedCommandsPropertiesNV = ()+  Extends PhysicalDeviceProperties2 PhysicalDeviceMultiDrawPropertiesEXT = ()   Extends PhysicalDeviceProperties2 PhysicalDevicePushDescriptorPropertiesKHR = ()   Extends PhysicalDeviceProperties2 PhysicalDeviceDriverProperties = ()   Extends PhysicalDeviceProperties2 PhysicalDeviceIDProperties = ()@@ -1085,6 +1103,8 @@   Extends PhysicalDeviceProperties2 PhysicalDeviceFragmentShadingRatePropertiesKHR = ()   Extends PhysicalDeviceProperties2 PhysicalDeviceFragmentShadingRateEnumsPropertiesNV = ()   Extends PhysicalDeviceProperties2 PhysicalDeviceProvokingVertexPropertiesEXT = ()+  Extends PhysicalDeviceProperties2 PhysicalDeviceDrmPropertiesEXT = ()+  Extends PhysicalDeviceProperties2 PhysicalDeviceRayTracingMotionBlurFeaturesNV = ()   Extends PhysicalDeviceSurfaceInfo2KHR SurfaceFullScreenExclusiveInfoEXT = ()   Extends PhysicalDeviceSurfaceInfo2KHR SurfaceFullScreenExclusiveWin32InfoEXT = ()   Extends PipelineColorBlendStateCreateInfo PipelineColorBlendAdvancedStateCreateInfoEXT = ()@@ -1280,6 +1300,7 @@   STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT -> go @DevicePrivateDataCreateInfoEXT   STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT -> go @PhysicalDevicePrivateDataFeaturesEXT   STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV -> go @PhysicalDeviceDeviceGeneratedCommandsPropertiesNV+  STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT -> go @PhysicalDeviceMultiDrawPropertiesEXT   STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV -> go @GraphicsPipelineShaderGroupsCreateInfoNV   STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 -> go @(PhysicalDeviceFeatures2 '[])   STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR -> go @PhysicalDevicePushDescriptorPropertiesKHR@@ -1353,6 +1374,7 @@   STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT -> go @PhysicalDeviceSampleLocationsPropertiesEXT   STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO -> go @SamplerReductionModeCreateInfo   STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT -> go @PhysicalDeviceBlendOperationAdvancedFeaturesEXT+  STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT -> go @PhysicalDeviceMultiDrawFeaturesEXT   STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT -> go @PhysicalDeviceBlendOperationAdvancedPropertiesEXT   STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT -> go @PipelineColorBlendAdvancedStateCreateInfoEXT   STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT -> go @PhysicalDeviceInlineUniformBlockFeaturesEXT@@ -1546,6 +1568,10 @@   STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT -> go @PhysicalDeviceProvokingVertexFeaturesEXT   STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT -> go @PhysicalDeviceProvokingVertexPropertiesEXT   STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT -> go @PipelineRasterizationProvokingVertexStateCreateInfoEXT+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT -> go @PhysicalDeviceDrmPropertiesEXT+  STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV -> go @PhysicalDeviceRayTracingMotionBlurFeaturesNV+  STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV -> throwIO $ IOError Nothing InvalidArgument "peekChainHead" ("struct type STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV contains an undiscriminated union (DeviceOrHostAddressConstKHR) and can't be safely peeked") Nothing Nothing+  STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV -> go @AccelerationStructureMotionInfoNV   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@@ -1616,6 +1642,7 @@ {-# complete (::&) :: DevicePrivateDataCreateInfoEXT #-} {-# complete (::&) :: PhysicalDevicePrivateDataFeaturesEXT #-} {-# complete (::&) :: PhysicalDeviceDeviceGeneratedCommandsPropertiesNV #-}+{-# complete (::&) :: PhysicalDeviceMultiDrawPropertiesEXT #-} {-# complete (::&) :: GraphicsPipelineShaderGroupsCreateInfoNV #-} {-# complete (::&) :: PhysicalDeviceFeatures2 #-} {-# complete (::&) :: PhysicalDevicePushDescriptorPropertiesKHR #-}@@ -1689,6 +1716,7 @@ {-# complete (::&) :: PhysicalDeviceSampleLocationsPropertiesEXT #-} {-# complete (::&) :: SamplerReductionModeCreateInfo #-} {-# complete (::&) :: PhysicalDeviceBlendOperationAdvancedFeaturesEXT #-}+{-# complete (::&) :: PhysicalDeviceMultiDrawFeaturesEXT #-} {-# complete (::&) :: PhysicalDeviceBlendOperationAdvancedPropertiesEXT #-} {-# complete (::&) :: PipelineColorBlendAdvancedStateCreateInfoEXT #-} {-# complete (::&) :: PhysicalDeviceInlineUniformBlockFeaturesEXT #-}@@ -1882,6 +1910,10 @@ {-# complete (::&) :: PhysicalDeviceProvokingVertexFeaturesEXT #-} {-# complete (::&) :: PhysicalDeviceProvokingVertexPropertiesEXT #-} {-# complete (::&) :: PipelineRasterizationProvokingVertexStateCreateInfoEXT #-}+{-# complete (::&) :: PhysicalDeviceDrmPropertiesEXT #-}+{-# complete (::&) :: PhysicalDeviceRayTracingMotionBlurFeaturesNV #-}+{-# complete (::&) :: AccelerationStructureGeometryMotionTrianglesDataNV #-}+{-# complete (::&) :: AccelerationStructureMotionInfoNV #-}  -- | View the head and tail of a 'Chain', see '::&' --
src/Vulkan/Core10/CommandBufferBuilding.hs view
@@ -2894,11 +2894,11 @@ --     within the corresponding vertex buffer binding, as described in --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input ???> ----- -   #VUID-vkCmdDrawIndexed-indexSize-00463# (@indexSize@ × (@firstIndex@---     + @indexCount@) + @offset@) /must/ be less than or equal to the size---     of the bound index buffer, with @indexSize@ being based on the type---     specified by @indexType@, where the index buffer, @indexType@, and---     @offset@ are specified via 'cmdBindIndexBuffer'+-- -   #VUID-vkCmdDrawIndexed-firstIndex-04932# (@indexSize@ ×+--     (@firstIndex@ + @indexCount@) + @offset@) /must/ be less than or+--     equal to the size of the bound index buffer, with @indexSize@ being+--     based on the type specified by @indexType@, where the index buffer,+--     @indexType@, and @offset@ are specified via 'cmdBindIndexBuffer' -- -- == Valid Usage (Implicit) --@@ -9535,13 +9535,13 @@ -- at any specific stage of the pipeline, it /may/ instead do so at any -- logically later stage. ----- Timestamps /may/ only be meaningfully compared if they are written by--- commands submitted to the same queue.+-- Comparisons between timestamps are not meaningful if the timestamps are+-- written by commands submitted to different queues. -- -- Note ----- An example of such a comparison is determining the execution time of a--- sequence of commands.+-- An example of such a comparison is subtracting an older timestamp from a+-- newer one to determine the execution time of a sequence of commands. -- -- If 'cmdWriteTimestamp' is called while executing a render pass instance -- that has multiview enabled, the timestamp uses N consecutive query
src/Vulkan/Core10/Device.hs view
@@ -129,6 +129,7 @@ import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_line_rasterization (PhysicalDeviceLineRasterizationFeaturesEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_memory_priority (PhysicalDeviceMemoryPriorityFeaturesEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_mesh_shader (PhysicalDeviceMeshShaderFeaturesNV)+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_multi_draw (PhysicalDeviceMultiDrawFeaturesEXT) import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_multiview (PhysicalDeviceMultiviewFeatures) import {-# SOURCE #-} Vulkan.Extensions.VK_VALVE_mutable_descriptor_type (PhysicalDeviceMutableDescriptorTypeFeaturesVALVE) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_performance_query (PhysicalDevicePerformanceQueryFeaturesKHR)@@ -139,6 +140,7 @@ import {-# SOURCE #-} Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (PhysicalDeviceProtectedMemoryFeatures) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_provoking_vertex (PhysicalDeviceProvokingVertexFeaturesEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_query (PhysicalDeviceRayQueryFeaturesKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (PhysicalDeviceRayTracingMotionBlurFeaturesNV) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (PhysicalDeviceRayTracingPipelineFeaturesKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_representative_fragment_test (PhysicalDeviceRepresentativeFragmentTestFeaturesNV) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_robustness2 (PhysicalDeviceRobustness2FeaturesEXT)@@ -752,6 +754,7 @@ --     'Vulkan.Extensions.VK_EXT_line_rasterization.PhysicalDeviceLineRasterizationFeaturesEXT', --     'Vulkan.Extensions.VK_EXT_memory_priority.PhysicalDeviceMemoryPriorityFeaturesEXT', --     'Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderFeaturesNV',+--     'Vulkan.Extensions.VK_EXT_multi_draw.PhysicalDeviceMultiDrawFeaturesEXT', --     'Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewFeatures', --     'Vulkan.Extensions.VK_VALVE_mutable_descriptor_type.PhysicalDeviceMutableDescriptorTypeFeaturesVALVE', --     'Vulkan.Extensions.VK_KHR_performance_query.PhysicalDevicePerformanceQueryFeaturesKHR',@@ -762,6 +765,7 @@ --     'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryFeatures', --     'Vulkan.Extensions.VK_EXT_provoking_vertex.PhysicalDeviceProvokingVertexFeaturesEXT', --     'Vulkan.Extensions.VK_KHR_ray_query.PhysicalDeviceRayQueryFeaturesKHR',+--     'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.PhysicalDeviceRayTracingMotionBlurFeaturesNV', --     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.PhysicalDeviceRayTracingPipelineFeaturesKHR', --     'Vulkan.Extensions.VK_NV_representative_fragment_test.PhysicalDeviceRepresentativeFragmentTestFeaturesNV', --     'Vulkan.Extensions.VK_EXT_robustness2.PhysicalDeviceRobustness2FeaturesEXT',@@ -783,6 +787,7 @@ --     'Vulkan.Extensions.VK_KHR_shader_terminate_invocation.PhysicalDeviceShaderTerminateInvocationFeaturesKHR', --     'Vulkan.Extensions.VK_NV_shading_rate_image.PhysicalDeviceShadingRateImageFeaturesNV', --     'Vulkan.Extensions.VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlFeaturesEXT',+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceSubpassShadingFeaturesHUAWEI VkPhysicalDeviceSubpassShadingFeaturesHUAWEI>, --     'Vulkan.Extensions.VK_KHR_synchronization2.PhysicalDeviceSynchronization2FeaturesKHR', --     'Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentFeaturesEXT', --     'Vulkan.Extensions.VK_EXT_texture_compression_astc_hdr.PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT',@@ -879,6 +884,7 @@   getNext DeviceCreateInfo{..} = next   extends :: forall e b proxy. Typeable e => proxy e -> (Extends DeviceCreateInfo e => b) -> Maybe b   extends _ f+    | Just Refl <- eqT @e @PhysicalDeviceRayTracingMotionBlurFeaturesNV = Just f     | Just Refl <- eqT @e @PhysicalDeviceProvokingVertexFeaturesEXT = Just f     | Just Refl <- eqT @e @PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT = Just f     | Just Refl <- eqT @e @PhysicalDeviceInheritedViewportScissorFeaturesNV = Just f@@ -960,6 +966,7 @@     | Just Refl <- eqT @e @PhysicalDeviceShaderFloat16Int8Features = Just f     | Just Refl <- eqT @e @PhysicalDeviceShaderDrawParametersFeatures = Just f     | Just Refl <- eqT @e @PhysicalDeviceInlineUniformBlockFeaturesEXT = Just f+    | Just Refl <- eqT @e @PhysicalDeviceMultiDrawFeaturesEXT = Just f     | Just Refl <- eqT @e @PhysicalDeviceBlendOperationAdvancedFeaturesEXT = Just f     | Just Refl <- eqT @e @PhysicalDeviceProtectedMemoryFeatures = Just f     | Just Refl <- eqT @e @PhysicalDeviceSamplerYcbcrConversionFeatures = Just f
src/Vulkan/Core10/Enums/PipelineCreateFlagBits.hs view
@@ -4,6 +4,7 @@                                                    , PipelineCreateFlagBits( PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT                                                                            , PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT                                                                            , PIPELINE_CREATE_DERIVATIVE_BIT+                                                                           , PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV                                                                            , PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT                                                                            , PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT                                                                            , PIPELINE_CREATE_LIBRARY_BIT_KHR@@ -147,6 +148,9 @@ --     corresponding pipeline rather than continuing to create additional --     pipelines. --+-- -   'PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV' specifies that the+--     pipeline is allowed to use OpTraceRaysMotionNV.+-- -- 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@@ -165,6 +169,8 @@ pattern PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT                       = PipelineCreateFlagBits 0x00000002 -- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_DERIVATIVE_BIT" 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_EARLY_RETURN_ON_FAILURE_BIT_EXT" pattern PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT             = PipelineCreateFlagBits 0x00000200 -- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT"@@ -209,6 +215,7 @@   [ (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_EARLY_RETURN_ON_FAILURE_BIT_EXT          , "EARLY_RETURN_ON_FAILURE_BIT_EXT")   , (PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT, "FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT")   , (PIPELINE_CREATE_LIBRARY_BIT_KHR                          , "LIBRARY_BIT_KHR")
src/Vulkan/Core10/Enums/StructureType.hs view
@@ -49,6 +49,8 @@                                                         , STRUCTURE_TYPE_MEMORY_BARRIER                                                         , STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO                                                         , STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT                                                         , STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT                                                         , STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT@@ -60,6 +62,7 @@                                                         , STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA                                                         , STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA                                                         , STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT                                                         , STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT                                                         , STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT@@ -84,6 +87,9 @@                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT+                                                        , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV+                                                        , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV                                                         , STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV@@ -533,9 +539,11 @@ -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryAabbsDataKHR', -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryInstancesDataKHR', -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryKHR',+-- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureGeometryMotionTrianglesDataNV', -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryTrianglesDataKHR', -- 'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureInfoNV', -- 'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureMemoryRequirementsInfoNV',+-- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMotionInfoNV', -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureVersionInfoKHR', -- 'Vulkan.Extensions.VK_KHR_swapchain.AcquireNextImageInfoKHR', -- 'Vulkan.Extensions.VK_KHR_performance_query.AcquireProfilingLockInfoKHR',@@ -786,6 +794,7 @@ -- 'Vulkan.Extensions.VK_NV_device_diagnostics_config.PhysicalDeviceDiagnosticsConfigFeaturesNV', -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PhysicalDeviceDiscardRectanglePropertiesEXT', -- 'Vulkan.Core12.Promoted_From_VK_KHR_driver_properties.PhysicalDeviceDriverProperties',+-- 'Vulkan.Extensions.VK_EXT_physical_device_drm.PhysicalDeviceDrmPropertiesEXT', -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PhysicalDeviceExclusiveScissorFeaturesNV', -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.PhysicalDeviceExtendedDynamicState2FeaturesEXT', -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.PhysicalDeviceExtendedDynamicStateFeaturesEXT',@@ -828,6 +837,8 @@ -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceMemoryProperties2', -- 'Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderFeaturesNV', -- 'Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderPropertiesNV',+-- 'Vulkan.Extensions.VK_EXT_multi_draw.PhysicalDeviceMultiDrawFeaturesEXT',+-- 'Vulkan.Extensions.VK_EXT_multi_draw.PhysicalDeviceMultiDrawPropertiesEXT', -- 'Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewFeatures', -- 'Vulkan.Extensions.VK_NVX_multiview_per_view_attributes.PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX', -- 'Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties',@@ -848,6 +859,7 @@ -- 'Vulkan.Extensions.VK_EXT_provoking_vertex.PhysicalDeviceProvokingVertexPropertiesEXT', -- 'Vulkan.Extensions.VK_KHR_push_descriptor.PhysicalDevicePushDescriptorPropertiesKHR', -- 'Vulkan.Extensions.VK_KHR_ray_query.PhysicalDeviceRayQueryFeaturesKHR',+-- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.PhysicalDeviceRayTracingMotionBlurFeaturesNV', -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.PhysicalDeviceRayTracingPipelineFeaturesKHR', -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.PhysicalDeviceRayTracingPipelinePropertiesKHR', -- 'Vulkan.Extensions.VK_NV_ray_tracing.PhysicalDeviceRayTracingPropertiesNV',@@ -881,6 +893,8 @@ -- 'Vulkan.Core11.Originally_Based_On_VK_KHR_subgroup.PhysicalDeviceSubgroupProperties', -- 'Vulkan.Extensions.VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlFeaturesEXT', -- 'Vulkan.Extensions.VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlPropertiesEXT',+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceSubpassShadingFeaturesHUAWEI VkPhysicalDeviceSubpassShadingFeaturesHUAWEI>,+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceSubpassShadingPropertiesHUAWEI VkPhysicalDeviceSubpassShadingPropertiesHUAWEI>, -- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.PhysicalDeviceSurfaceInfo2KHR', -- 'Vulkan.Extensions.VK_KHR_synchronization2.PhysicalDeviceSynchronization2FeaturesKHR', -- 'Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentFeaturesEXT',@@ -1007,6 +1021,7 @@ -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDescription2', -- 'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.SubpassDescriptionDepthStencilResolve', -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassEndInfo',+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkSubpassShadingPipelineCreateInfoHUAWEI VkSubpassShadingPipelineCreateInfoHUAWEI>, -- 'Vulkan.Extensions.VK_EXT_display_surface_counter.SurfaceCapabilities2EXT', -- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR', -- 'Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceCapabilitiesFullScreenExclusiveEXT',@@ -1178,6 +1193,10 @@ pattern STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO               = StructureType 47 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO" pattern STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO                 = StructureType 48+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT = StructureType 1000392001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT   = StructureType 1000392000 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT" pattern STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT = StructureType 1000388001 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT"@@ -1200,6 +1219,8 @@ pattern STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA   = StructureType 1000364001 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA" pattern STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA  = StructureType 1000364000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT        = StructureType 1000353000 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT" pattern STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT  = StructureType 1000352002 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT"@@ -1248,6 +1269,12 @@ pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = StructureType 1000332000 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT" pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT = StructureType 1000330000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV"+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV     = StructureType 1000327002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV = StructureType 1000327001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV"+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV = StructureType 1000327000 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV" pattern STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV = StructureType 1000326002 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV"@@ -2147,6 +2174,8 @@              STRUCTURE_TYPE_MEMORY_BARRIER,              STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO,              STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT,              STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT,              STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT,              STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT,@@ -2158,6 +2187,7 @@              STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA,              STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA,              STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT,              STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT,              STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT,              STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT,@@ -2182,6 +2212,9 @@              STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT,              STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT,              STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT,+             STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV,+             STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV,              STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV,              STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV,              STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV,@@ -2665,6 +2698,8 @@   , (STRUCTURE_TYPE_MEMORY_BARRIER                           , "MEMORY_BARRIER")   , (STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO              , "LOADER_INSTANCE_CREATE_INFO")   , (STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO                , "LOADER_DEVICE_CREATE_INFO")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT, "PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT  , "PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT")   , (STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT, "QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT")   , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT     , "PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT"@@ -2680,6 +2715,7 @@   , (STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA      , "MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA")   , (STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA    , "MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA")   , (STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA   , "IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT         , "PHYSICAL_DEVICE_DRM_PROPERTIES_EXT")   , (STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT   , "VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT")   , (STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT     , "VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT")   , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT@@ -2715,6 +2751,13 @@     )   , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT     , "PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT"+    )+  , (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV, "ACCELERATION_STRUCTURE_MOTION_INFO_NV")+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV+    , "PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV"+    )+  , ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV+    , "ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV"     )   , ( STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV     , "PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV"
src/Vulkan/Core10/FundamentalTypes.hs view
@@ -201,7 +201,8 @@ -- <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>, -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR',--- 'Vulkan.Core10.Pass.getRenderAreaGranularity'+-- 'Vulkan.Core10.Pass.getRenderAreaGranularity',+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetSubpassShadingMaxWorkgroupSizeHUAWEI vkGetSubpassShadingMaxWorkgroupSizeHUAWEI> data Extent2D = Extent2D   { -- | @width@ is the width of the extent.     width :: Word32@@ -431,6 +432,7 @@ -- 'Vulkan.Extensions.VK_NV_device_generated_commands.PhysicalDeviceDeviceGeneratedCommandsFeaturesNV', -- 'Vulkan.Extensions.VK_EXT_device_memory_report.PhysicalDeviceDeviceMemoryReportFeaturesEXT', -- 'Vulkan.Extensions.VK_NV_device_diagnostics_config.PhysicalDeviceDiagnosticsConfigFeaturesNV',+-- 'Vulkan.Extensions.VK_EXT_physical_device_drm.PhysicalDeviceDrmPropertiesEXT', -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PhysicalDeviceExclusiveScissorFeaturesNV', -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.PhysicalDeviceExtendedDynamicState2FeaturesEXT', -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.PhysicalDeviceExtendedDynamicStateFeaturesEXT',@@ -458,6 +460,7 @@ -- 'Vulkan.Extensions.VK_EXT_line_rasterization.PhysicalDeviceLineRasterizationFeaturesEXT', -- 'Vulkan.Extensions.VK_EXT_memory_priority.PhysicalDeviceMemoryPriorityFeaturesEXT', -- 'Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderFeaturesNV',+-- 'Vulkan.Extensions.VK_EXT_multi_draw.PhysicalDeviceMultiDrawFeaturesEXT', -- 'Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewFeatures', -- 'Vulkan.Extensions.VK_NVX_multiview_per_view_attributes.PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX', -- 'Vulkan.Extensions.VK_VALVE_mutable_descriptor_type.PhysicalDeviceMutableDescriptorTypeFeaturesVALVE',@@ -472,6 +475,7 @@ -- 'Vulkan.Extensions.VK_EXT_provoking_vertex.PhysicalDeviceProvokingVertexFeaturesEXT', -- 'Vulkan.Extensions.VK_EXT_provoking_vertex.PhysicalDeviceProvokingVertexPropertiesEXT', -- 'Vulkan.Extensions.VK_KHR_ray_query.PhysicalDeviceRayQueryFeaturesKHR',+-- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.PhysicalDeviceRayTracingMotionBlurFeaturesNV', -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.PhysicalDeviceRayTracingPipelineFeaturesKHR', -- 'Vulkan.Extensions.VK_NV_representative_fragment_test.PhysicalDeviceRepresentativeFragmentTestFeaturesNV', -- 'Vulkan.Extensions.VK_EXT_robustness2.PhysicalDeviceRobustness2FeaturesEXT',@@ -497,6 +501,7 @@ -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceSparseProperties', -- 'Vulkan.Core11.Originally_Based_On_VK_KHR_subgroup.PhysicalDeviceSubgroupProperties', -- 'Vulkan.Extensions.VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlFeaturesEXT',+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceSubpassShadingFeaturesHUAWEI VkPhysicalDeviceSubpassShadingFeaturesHUAWEI>, -- 'Vulkan.Extensions.VK_KHR_synchronization2.PhysicalDeviceSynchronization2FeaturesKHR', -- 'Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentFeaturesEXT', -- 'Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentPropertiesEXT',
src/Vulkan/Core10/Handles.hs view
@@ -124,6 +124,7 @@ -- -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation.DeviceGroupDeviceCreateInfo', -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation.PhysicalDeviceGroupProperties',+-- 'Vulkan.Extensions.VK_EXT_acquire_drm_display.acquireDrmDisplayEXT', -- 'Vulkan.Extensions.VK_NV_acquire_winrt_display.acquireWinrtDisplayNV', -- 'Vulkan.Extensions.VK_EXT_acquire_xlib_display.acquireXlibDisplayEXT', -- 'Vulkan.Core10.Device.createDevice',@@ -137,6 +138,7 @@ -- 'Vulkan.Extensions.VK_KHR_get_display_properties2.getDisplayPlaneCapabilities2KHR', -- 'Vulkan.Extensions.VK_KHR_display.getDisplayPlaneCapabilitiesKHR', -- 'Vulkan.Extensions.VK_KHR_display.getDisplayPlaneSupportedDisplaysKHR',+-- 'Vulkan.Extensions.VK_EXT_acquire_drm_display.getDrmDisplayEXT', -- 'Vulkan.Extensions.VK_EXT_calibrated_timestamps.getPhysicalDeviceCalibrateableTimeDomainsEXT', -- 'Vulkan.Extensions.VK_NV_cooperative_matrix.getPhysicalDeviceCooperativeMatrixPropertiesNV', -- 'Vulkan.Extensions.VK_EXT_directfb_surface.getPhysicalDeviceDirectFBPresentationSupportEXT',@@ -550,6 +552,8 @@ -- 'Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectCountNV', -- 'Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectNV', -- 'Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksNV',+-- 'Vulkan.Extensions.VK_EXT_multi_draw.cmdDrawMultiEXT',+-- 'Vulkan.Extensions.VK_EXT_multi_draw.cmdDrawMultiIndexedEXT', -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdEncodeVideoKHR vkCmdEncodeVideoKHR>, -- 'Vulkan.Extensions.VK_EXT_conditional_rendering.cmdEndConditionalRenderingEXT', -- 'Vulkan.Extensions.VK_EXT_debug_utils.cmdEndDebugUtilsLabelEXT',@@ -623,6 +627,7 @@ -- 'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV', -- 'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV', -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT',+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdSubpassShadingHUAWEI vkCmdSubpassShadingHUAWEI>, -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.cmdTraceRaysIndirectKHR', -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.cmdTraceRaysKHR', -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdTraceRaysNV',@@ -1134,11 +1139,13 @@ -- 'Vulkan.Core10.Pass.FramebufferCreateInfo', -- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo', -- 'Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo',+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkSubpassShadingPipelineCreateInfoHUAWEI VkSubpassShadingPipelineCreateInfoHUAWEI>, -- 'Vulkan.Core10.Pass.createRenderPass', -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.createRenderPass2', -- 'Vulkan.Extensions.VK_KHR_create_renderpass2.createRenderPass2KHR', -- 'Vulkan.Core10.Pass.destroyRenderPass',--- 'Vulkan.Core10.Pass.getRenderAreaGranularity'+-- 'Vulkan.Core10.Pass.getRenderAreaGranularity',+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetSubpassShadingMaxWorkgroupSizeHUAWEI vkGetSubpassShadingMaxWorkgroupSizeHUAWEI> newtype RenderPass = RenderPass Word64   deriving newtype (Eq, Ord, Storable, Zero)   deriving anyclass (IsHandle)
src/Vulkan/Core10/Image.hs view
@@ -540,15 +540,18 @@ -- --     -   If @tiling@ is --         'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR', then---         @imageCreateMaybeLinear@ is @true@.+--         @imageCreateMaybeLinear@ is+--         'Vulkan.Core10.FundamentalTypes.TRUE'. -- --     -   If @tiling@ is --         'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', then---         @imageCreateMaybeLinear@ is @false@.+--         @imageCreateMaybeLinear@ is+--         'Vulkan.Core10.FundamentalTypes.FALSE'. -- --     -   If @tiling@ is --         'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT',---         then @imageCreateMaybeLinear_@ is @true@ if and only if+--         then @imageCreateMaybeLinear@ is+--         'Vulkan.Core10.FundamentalTypes.TRUE' if and only if --         @imageCreateDrmFormatModifiers@ contains --         @DRM_FORMAT_MOD_LINEAR@. --@@ -843,7 +846,7 @@ --     @mipLevels@ /must/ be equal to @1@, and @imageCreateMaybeLinear@ (as --     defined in --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)---     /must/ be @false@,+--     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE', -- -- -   #VUID-VkImageCreateInfo-samples-02558# If @samples@ is not --     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT',@@ -1045,7 +1048,7 @@ --     @imageType@ /must/ be 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'. --     and @imageCreateMaybeLinear@ (as defined in --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)---     /must/ be @false@+--     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE' -- -- -   #VUID-VkImageCreateInfo-flags-01572# If @flags@ contains --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT',
src/Vulkan/Core10/Pipeline.hs view
@@ -1338,6 +1338,10 @@ --     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'@@ -1358,9 +1362,10 @@ -- -   #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.Extensions.VK_AMD_pipeline_compiler_control.PipelineCompilerControlCreateInfoAMD',+--     'Vulkan.Extensions.VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfoEXT', --     or---     'Vulkan.Extensions.VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfoEXT'+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkSubpassShadingPipelineCreateInfoHUAWEI VkSubpassShadingPipelineCreateInfoHUAWEI> -- -- -   #VUID-VkComputePipelineCreateInfo-sType-unique# The @sType@ value of --     each struct in the @pNext@ chain /must/ be unique@@ -1862,7 +1867,8 @@   , -- | @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' and+    -- ('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@@ -4111,6 +4117,10 @@ -- -   #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.2-extensions/html/vkspec.html#features-extendedDynamicState extendedDynamicState>
src/Vulkan/Core11/Promoted_From_VK_KHR_get_physical_device_properties2.hs view
@@ -121,6 +121,7 @@ import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_diagnostics_config (PhysicalDeviceDiagnosticsConfigFeaturesNV) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_discard_rectangles (PhysicalDeviceDiscardRectanglePropertiesEXT) import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_driver_properties (PhysicalDeviceDriverProperties)+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_physical_device_drm (PhysicalDeviceDrmPropertiesEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_scissor_exclusive (PhysicalDeviceExclusiveScissorFeaturesNV) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_extended_dynamic_state2 (PhysicalDeviceExtendedDynamicState2FeaturesEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_extended_dynamic_state (PhysicalDeviceExtendedDynamicStateFeaturesEXT)@@ -157,6 +158,8 @@ import Vulkan.Core10.DeviceInitialization (PhysicalDeviceMemoryProperties) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_mesh_shader (PhysicalDeviceMeshShaderFeaturesNV) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_mesh_shader (PhysicalDeviceMeshShaderPropertiesNV)+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_multi_draw (PhysicalDeviceMultiDrawFeaturesEXT)+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_multi_draw (PhysicalDeviceMultiDrawPropertiesEXT) import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_multiview (PhysicalDeviceMultiviewFeatures) import {-# SOURCE #-} Vulkan.Extensions.VK_NVX_multiview_per_view_attributes (PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX) import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_multiview (PhysicalDeviceMultiviewProperties)@@ -177,6 +180,7 @@ import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_provoking_vertex (PhysicalDeviceProvokingVertexPropertiesEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_push_descriptor (PhysicalDevicePushDescriptorPropertiesKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_query (PhysicalDeviceRayQueryFeaturesKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (PhysicalDeviceRayTracingMotionBlurFeaturesNV) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (PhysicalDeviceRayTracingPipelineFeaturesKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (PhysicalDeviceRayTracingPipelinePropertiesKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (PhysicalDeviceRayTracingPropertiesNV)@@ -761,6 +765,7 @@     | Just Refl <- eqT @e @PhysicalDeviceShaderFloat16Int8Features = Just f     | Just Refl <- eqT @e @PhysicalDeviceShaderDrawParametersFeatures = Just f     | Just Refl <- eqT @e @PhysicalDeviceInlineUniformBlockFeaturesEXT = Just f+    | Just Refl <- eqT @e @PhysicalDeviceMultiDrawFeaturesEXT = Just f     | Just Refl <- eqT @e @PhysicalDeviceBlendOperationAdvancedFeaturesEXT = Just f     | Just Refl <- eqT @e @PhysicalDeviceProtectedMemoryFeatures = Just f     | Just Refl <- eqT @e @PhysicalDeviceSamplerYcbcrConversionFeatures = Just f@@ -829,6 +834,7 @@ --     'Vulkan.Extensions.VK_NV_device_generated_commands.PhysicalDeviceDeviceGeneratedCommandsPropertiesNV', --     'Vulkan.Extensions.VK_EXT_discard_rectangles.PhysicalDeviceDiscardRectanglePropertiesEXT', --     'Vulkan.Core12.Promoted_From_VK_KHR_driver_properties.PhysicalDeviceDriverProperties',+--     'Vulkan.Extensions.VK_EXT_physical_device_drm.PhysicalDeviceDrmPropertiesEXT', --     'Vulkan.Extensions.VK_EXT_external_memory_host.PhysicalDeviceExternalMemoryHostPropertiesEXT', --     'Vulkan.Core12.Promoted_From_VK_KHR_shader_float_controls.PhysicalDeviceFloatControlsProperties', --     'Vulkan.Extensions.VK_EXT_fragment_density_map2.PhysicalDeviceFragmentDensityMap2PropertiesEXT',@@ -840,6 +846,7 @@ --     'Vulkan.Extensions.VK_EXT_line_rasterization.PhysicalDeviceLineRasterizationPropertiesEXT', --     'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.PhysicalDeviceMaintenance3Properties', --     'Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderPropertiesNV',+--     'Vulkan.Extensions.VK_EXT_multi_draw.PhysicalDeviceMultiDrawPropertiesEXT', --     'Vulkan.Extensions.VK_NVX_multiview_per_view_attributes.PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX', --     'Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties', --     'Vulkan.Extensions.VK_EXT_pci_bus_info.PhysicalDevicePCIBusInfoPropertiesEXT',@@ -849,6 +856,7 @@ --     'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryProperties', --     'Vulkan.Extensions.VK_EXT_provoking_vertex.PhysicalDeviceProvokingVertexPropertiesEXT', --     'Vulkan.Extensions.VK_KHR_push_descriptor.PhysicalDevicePushDescriptorPropertiesKHR',+--     'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.PhysicalDeviceRayTracingMotionBlurFeaturesNV', --     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.PhysicalDeviceRayTracingPipelinePropertiesKHR', --     'Vulkan.Extensions.VK_NV_ray_tracing.PhysicalDeviceRayTracingPropertiesNV', --     'Vulkan.Extensions.VK_EXT_robustness2.PhysicalDeviceRobustness2PropertiesEXT',@@ -860,6 +868,7 @@ --     'Vulkan.Extensions.VK_NV_shading_rate_image.PhysicalDeviceShadingRateImagePropertiesNV', --     'Vulkan.Core11.Originally_Based_On_VK_KHR_subgroup.PhysicalDeviceSubgroupProperties', --     'Vulkan.Extensions.VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlPropertiesEXT',+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceSubpassShadingPropertiesHUAWEI VkPhysicalDeviceSubpassShadingPropertiesHUAWEI>, --     'Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentPropertiesEXT', --     'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.PhysicalDeviceTimelineSemaphoreProperties', --     'Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackPropertiesEXT',@@ -898,6 +907,8 @@   getNext PhysicalDeviceProperties2{..} = next   extends :: forall e b proxy. Typeable e => proxy e -> (Extends PhysicalDeviceProperties2 e => b) -> Maybe b   extends _ f+    | Just Refl <- eqT @e @PhysicalDeviceRayTracingMotionBlurFeaturesNV = Just f+    | Just Refl <- eqT @e @PhysicalDeviceDrmPropertiesEXT = Just f     | Just Refl <- eqT @e @PhysicalDeviceProvokingVertexPropertiesEXT = Just f     | Just Refl <- eqT @e @PhysicalDeviceFragmentShadingRateEnumsPropertiesNV = Just f     | Just Refl <- eqT @e @PhysicalDeviceFragmentShadingRatePropertiesKHR = Just f@@ -944,6 +955,7 @@     | Just Refl <- eqT @e @PhysicalDeviceIDProperties = Just f     | Just Refl <- eqT @e @PhysicalDeviceDriverProperties = Just f     | Just Refl <- eqT @e @PhysicalDevicePushDescriptorPropertiesKHR = Just f+    | Just Refl <- eqT @e @PhysicalDeviceMultiDrawPropertiesEXT = Just f     | Just Refl <- eqT @e @PhysicalDeviceDeviceGeneratedCommandsPropertiesNV = Just f     | otherwise = Nothing 
src/Vulkan/Dynamic.hs view
@@ -234,6 +234,8 @@ import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_memory_win32 (MemoryWin32HandlePropertiesKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_external_memory (MemoryZirconHandlePropertiesFUCHSIA) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_metal_surface (MetalSurfaceCreateInfoEXT)+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_multi_draw (MultiDrawIndexedInfoEXT)+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_multi_draw (MultiDrawInfoEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (MultisamplePropertiesEXT) import {-# SOURCE #-} Vulkan.Core10.Enums.ObjectType (ObjectType) import {-# SOURCE #-} Vulkan.Core10.FuncPointers (PFN_vkVoidFunction)@@ -454,6 +456,8 @@   , pVkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV :: FunPtr (Ptr PhysicalDevice_T -> ("pCombinationCount" ::: Ptr Word32) -> ("pCombinations" ::: Ptr FramebufferMixedSamplesCombinationNV) -> IO Result)   , pVkGetPhysicalDeviceToolPropertiesEXT :: FunPtr (Ptr PhysicalDevice_T -> ("pToolCount" ::: Ptr Word32) -> ("pToolProperties" ::: Ptr PhysicalDeviceToolPropertiesEXT) -> IO Result)   , pVkGetPhysicalDeviceFragmentShadingRatesKHR :: FunPtr (Ptr PhysicalDevice_T -> ("pFragmentShadingRateCount" ::: Ptr Word32) -> ("pFragmentShadingRates" ::: Ptr PhysicalDeviceFragmentShadingRateKHR) -> IO Result)+  , pVkAcquireDrmDisplayEXT :: FunPtr (Ptr PhysicalDevice_T -> ("drmFd" ::: Int32) -> DisplayKHR -> IO Result)+  , pVkGetDrmDisplayEXT :: FunPtr (Ptr PhysicalDevice_T -> ("drmFd" ::: Int32) -> ("connectorId" ::: Word32) -> Ptr DisplayKHR -> IO Result)   }  deriving instance Eq InstanceCmds@@ -470,7 +474,7 @@     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  -- | A version of 'getInstanceProcAddr' which can be called -- with a null pointer for the instance.@@ -574,6 +578,8 @@   vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"#)   vkGetPhysicalDeviceToolPropertiesEXT <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceToolPropertiesEXT"#)   vkGetPhysicalDeviceFragmentShadingRatesKHR <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceFragmentShadingRatesKHR"#)+  vkAcquireDrmDisplayEXT <- getInstanceProcAddr' handle (Ptr "vkAcquireDrmDisplayEXT"#)+  vkGetDrmDisplayEXT <- getInstanceProcAddr' handle (Ptr "vkGetDrmDisplayEXT"#)   pure $ InstanceCmds handle     (castFunPtr @_ @(Ptr Instance_T -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyInstance)     (castFunPtr @_ @(Ptr Instance_T -> ("pPhysicalDeviceCount" ::: Ptr Word32) -> ("pPhysicalDevices" ::: Ptr (Ptr PhysicalDevice_T)) -> IO Result) vkEnumeratePhysicalDevices)@@ -660,6 +666,8 @@     (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pCombinationCount" ::: Ptr Word32) -> ("pCombinations" ::: Ptr FramebufferMixedSamplesCombinationNV) -> IO Result) vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV)     (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pToolCount" ::: Ptr Word32) -> ("pToolProperties" ::: Ptr PhysicalDeviceToolPropertiesEXT) -> IO Result) vkGetPhysicalDeviceToolPropertiesEXT)     (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pFragmentShadingRateCount" ::: Ptr Word32) -> ("pFragmentShadingRates" ::: Ptr PhysicalDeviceFragmentShadingRateKHR) -> IO Result) vkGetPhysicalDeviceFragmentShadingRatesKHR)+    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("drmFd" ::: Int32) -> DisplayKHR -> IO Result) vkAcquireDrmDisplayEXT)+    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("drmFd" ::: Int32) -> ("connectorId" ::: Word32) -> Ptr DisplayKHR -> IO Result) vkGetDrmDisplayEXT)  data DeviceCmds = DeviceCmds   { deviceCmdsHandle :: Ptr Device_T@@ -756,6 +764,8 @@   , pVkCmdBindVertexBuffers :: FunPtr (Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("bindingCount" ::: Word32) -> ("pBuffers" ::: Ptr Buffer) -> ("pOffsets" ::: Ptr DeviceSize) -> IO ())   , pVkCmdDraw :: FunPtr (Ptr CommandBuffer_T -> ("vertexCount" ::: Word32) -> ("instanceCount" ::: Word32) -> ("firstVertex" ::: Word32) -> ("firstInstance" ::: Word32) -> IO ())   , pVkCmdDrawIndexed :: FunPtr (Ptr CommandBuffer_T -> ("indexCount" ::: Word32) -> ("instanceCount" ::: Word32) -> ("firstIndex" ::: Word32) -> ("vertexOffset" ::: Int32) -> ("firstInstance" ::: Word32) -> IO ())+  , pVkCmdDrawMultiEXT :: FunPtr (Ptr CommandBuffer_T -> ("drawCount" ::: Word32) -> ("pVertexInfo" ::: Ptr MultiDrawInfoEXT) -> ("instanceCount" ::: Word32) -> ("firstInstance" ::: Word32) -> ("stride" ::: Word32) -> IO ())+  , pVkCmdDrawMultiIndexedEXT :: FunPtr (Ptr CommandBuffer_T -> ("drawCount" ::: Word32) -> ("pIndexInfo" ::: Ptr MultiDrawIndexedInfoEXT) -> ("instanceCount" ::: Word32) -> ("firstInstance" ::: Word32) -> ("stride" ::: Word32) -> ("pVertexOffset" ::: Ptr Int32) -> IO ())   , pVkCmdDrawIndirect :: FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())   , pVkCmdDrawIndexedIndirect :: FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())   , pVkCmdDispatch :: FunPtr (Ptr CommandBuffer_T -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ())@@ -948,7 +958,7 @@   , pVkGetPipelineExecutableStatisticsKHR :: FunPtr (Ptr Device_T -> ("pExecutableInfo" ::: Ptr PipelineExecutableInfoKHR) -> ("pStatisticCount" ::: Ptr Word32) -> ("pStatistics" ::: Ptr PipelineExecutableStatisticKHR) -> IO Result)   , pVkGetPipelineExecutableInternalRepresentationsKHR :: FunPtr (Ptr Device_T -> ("pExecutableInfo" ::: Ptr PipelineExecutableInfoKHR) -> ("pInternalRepresentationCount" ::: Ptr Word32) -> ("pInternalRepresentations" ::: Ptr PipelineExecutableInternalRepresentationKHR) -> IO Result)   , pVkCmdSetLineStippleEXT :: FunPtr (Ptr CommandBuffer_T -> ("lineStippleFactor" ::: Word32) -> ("lineStipplePattern" ::: Word16) -> IO ())-  , pVkCreateAccelerationStructureKHR :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoKHR) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pAccelerationStructure" ::: Ptr AccelerationStructureKHR) -> IO Result)+  , pVkCreateAccelerationStructureKHR :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (SomeStruct AccelerationStructureCreateInfoKHR)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pAccelerationStructure" ::: Ptr AccelerationStructureKHR) -> IO Result)   , pVkCmdBuildAccelerationStructuresKHR :: FunPtr (Ptr CommandBuffer_T -> ("infoCount" ::: Word32) -> ("pInfos" ::: Ptr AccelerationStructureBuildGeometryInfoKHR) -> ("ppBuildRangeInfos" ::: Ptr (Ptr AccelerationStructureBuildRangeInfoKHR)) -> IO ())   , pVkCmdBuildAccelerationStructuresIndirectKHR :: FunPtr (Ptr CommandBuffer_T -> ("infoCount" ::: Word32) -> ("pInfos" ::: Ptr AccelerationStructureBuildGeometryInfoKHR) -> ("pIndirectDeviceAddresses" ::: Ptr DeviceAddress) -> ("pIndirectStrides" ::: Ptr Word32) -> ("ppMaxPrimitiveCounts" ::: Ptr (Ptr Word32)) -> IO ())   , pVkBuildAccelerationStructuresKHR :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> ("infoCount" ::: Word32) -> ("pInfos" ::: Ptr AccelerationStructureBuildGeometryInfoKHR) -> ("ppBuildRangeInfos" ::: Ptr (Ptr AccelerationStructureBuildRangeInfoKHR)) -> IO Result)@@ -1051,7 +1061,7 @@     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)@@ -1165,6 +1175,8 @@   vkCmdBindVertexBuffers <- getDeviceProcAddr' handle (Ptr "vkCmdBindVertexBuffers"#)   vkCmdDraw <- getDeviceProcAddr' handle (Ptr "vkCmdDraw"#)   vkCmdDrawIndexed <- getDeviceProcAddr' handle (Ptr "vkCmdDrawIndexed"#)+  vkCmdDrawMultiEXT <- getDeviceProcAddr' handle (Ptr "vkCmdDrawMultiEXT"#)+  vkCmdDrawMultiIndexedEXT <- getDeviceProcAddr' handle (Ptr "vkCmdDrawMultiIndexedEXT"#)   vkCmdDrawIndirect <- getDeviceProcAddr' handle (Ptr "vkCmdDrawIndirect"#)   vkCmdDrawIndexedIndirect <- getDeviceProcAddr' handle (Ptr "vkCmdDrawIndexedIndirect"#)   vkCmdDispatch <- getDeviceProcAddr' handle (Ptr "vkCmdDispatch"#)@@ -1506,6 +1518,8 @@     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("bindingCount" ::: Word32) -> ("pBuffers" ::: Ptr Buffer) -> ("pOffsets" ::: Ptr DeviceSize) -> IO ()) vkCmdBindVertexBuffers)     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("vertexCount" ::: Word32) -> ("instanceCount" ::: Word32) -> ("firstVertex" ::: Word32) -> ("firstInstance" ::: Word32) -> IO ()) vkCmdDraw)     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("indexCount" ::: Word32) -> ("instanceCount" ::: Word32) -> ("firstIndex" ::: Word32) -> ("vertexOffset" ::: Int32) -> ("firstInstance" ::: Word32) -> IO ()) vkCmdDrawIndexed)+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("drawCount" ::: Word32) -> ("pVertexInfo" ::: Ptr MultiDrawInfoEXT) -> ("instanceCount" ::: Word32) -> ("firstInstance" ::: Word32) -> ("stride" ::: Word32) -> IO ()) vkCmdDrawMultiEXT)+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("drawCount" ::: Word32) -> ("pIndexInfo" ::: Ptr MultiDrawIndexedInfoEXT) -> ("instanceCount" ::: Word32) -> ("firstInstance" ::: Word32) -> ("stride" ::: Word32) -> ("pVertexOffset" ::: Ptr Int32) -> IO ()) vkCmdDrawMultiIndexedEXT)     (castFunPtr @_ @(Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()) vkCmdDrawIndirect)     (castFunPtr @_ @(Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()) vkCmdDrawIndexedIndirect)     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ()) vkCmdDispatch)@@ -1698,7 +1712,7 @@     (castFunPtr @_ @(Ptr Device_T -> ("pExecutableInfo" ::: Ptr PipelineExecutableInfoKHR) -> ("pStatisticCount" ::: Ptr Word32) -> ("pStatistics" ::: Ptr PipelineExecutableStatisticKHR) -> IO Result) vkGetPipelineExecutableStatisticsKHR)     (castFunPtr @_ @(Ptr Device_T -> ("pExecutableInfo" ::: Ptr PipelineExecutableInfoKHR) -> ("pInternalRepresentationCount" ::: Ptr Word32) -> ("pInternalRepresentations" ::: Ptr PipelineExecutableInternalRepresentationKHR) -> IO Result) vkGetPipelineExecutableInternalRepresentationsKHR)     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("lineStippleFactor" ::: Word32) -> ("lineStipplePattern" ::: Word16) -> IO ()) vkCmdSetLineStippleEXT)-    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoKHR) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pAccelerationStructure" ::: Ptr AccelerationStructureKHR) -> IO Result) vkCreateAccelerationStructureKHR)+    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (SomeStruct AccelerationStructureCreateInfoKHR)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pAccelerationStructure" ::: Ptr AccelerationStructureKHR) -> IO Result) vkCreateAccelerationStructureKHR)     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("infoCount" ::: Word32) -> ("pInfos" ::: Ptr AccelerationStructureBuildGeometryInfoKHR) -> ("ppBuildRangeInfos" ::: Ptr (Ptr AccelerationStructureBuildRangeInfoKHR)) -> IO ()) vkCmdBuildAccelerationStructuresKHR)     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("infoCount" ::: Word32) -> ("pInfos" ::: Ptr AccelerationStructureBuildGeometryInfoKHR) -> ("pIndirectDeviceAddresses" ::: Ptr DeviceAddress) -> ("pIndirectStrides" ::: Ptr Word32) -> ("ppMaxPrimitiveCounts" ::: Ptr (Ptr Word32)) -> IO ()) vkCmdBuildAccelerationStructuresIndirectKHR)     (castFunPtr @_ @(Ptr Device_T -> DeferredOperationKHR -> ("infoCount" ::: Word32) -> ("pInfos" ::: Ptr AccelerationStructureBuildGeometryInfoKHR) -> ("ppBuildRangeInfos" ::: Ptr (Ptr AccelerationStructureBuildRangeInfoKHR)) -> IO Result) vkBuildAccelerationStructuresKHR)
src/Vulkan/Extensions.hs view
@@ -25,6 +25,7 @@                           , module Vulkan.Extensions.VK_AMD_texture_gather_bias_lod                           , module Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer                           , module Vulkan.Extensions.VK_EXT_4444_formats+                          , module Vulkan.Extensions.VK_EXT_acquire_drm_display                           , module Vulkan.Extensions.VK_EXT_acquire_xlib_display                           , module Vulkan.Extensions.VK_EXT_astc_decode_mode                           , module Vulkan.Extensions.VK_EXT_blend_operation_advanced@@ -68,7 +69,9 @@                           , module Vulkan.Extensions.VK_EXT_memory_budget                           , module Vulkan.Extensions.VK_EXT_memory_priority                           , module Vulkan.Extensions.VK_EXT_metal_surface+                          , module Vulkan.Extensions.VK_EXT_multi_draw                           , module Vulkan.Extensions.VK_EXT_pci_bus_info+                          , module Vulkan.Extensions.VK_EXT_physical_device_drm                           , module Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control                           , module Vulkan.Extensions.VK_EXT_pipeline_creation_feedback                           , module Vulkan.Extensions.VK_EXT_post_depth_coverage@@ -224,6 +227,7 @@                           , module Vulkan.Extensions.VK_NV_inherited_viewport_scissor                           , module Vulkan.Extensions.VK_NV_mesh_shader                           , module Vulkan.Extensions.VK_NV_ray_tracing+                          , module Vulkan.Extensions.VK_NV_ray_tracing_motion_blur                           , module Vulkan.Extensions.VK_NV_representative_fragment_test                           , module Vulkan.Extensions.VK_NV_sample_mask_override_coverage                           , module Vulkan.Extensions.VK_NV_scissor_exclusive@@ -266,6 +270,7 @@ import Vulkan.Extensions.VK_AMD_texture_gather_bias_lod import Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer import Vulkan.Extensions.VK_EXT_4444_formats+import Vulkan.Extensions.VK_EXT_acquire_drm_display import Vulkan.Extensions.VK_EXT_acquire_xlib_display import Vulkan.Extensions.VK_EXT_astc_decode_mode import Vulkan.Extensions.VK_EXT_blend_operation_advanced@@ -309,7 +314,9 @@ import Vulkan.Extensions.VK_EXT_memory_budget import Vulkan.Extensions.VK_EXT_memory_priority import Vulkan.Extensions.VK_EXT_metal_surface+import Vulkan.Extensions.VK_EXT_multi_draw import Vulkan.Extensions.VK_EXT_pci_bus_info+import Vulkan.Extensions.VK_EXT_physical_device_drm import Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control import Vulkan.Extensions.VK_EXT_pipeline_creation_feedback import Vulkan.Extensions.VK_EXT_post_depth_coverage@@ -465,6 +472,7 @@ import Vulkan.Extensions.VK_NV_inherited_viewport_scissor import Vulkan.Extensions.VK_NV_mesh_shader import Vulkan.Extensions.VK_NV_ray_tracing+import Vulkan.Extensions.VK_NV_ray_tracing_motion_blur import Vulkan.Extensions.VK_NV_representative_fragment_test import Vulkan.Extensions.VK_NV_sample_mask_override_coverage import Vulkan.Extensions.VK_NV_scissor_exclusive
src/Vulkan/Extensions/Dependencies.hs view
@@ -14,6 +14,7 @@ import Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (pattern ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME) import Vulkan.Core10 (pattern API_VERSION_1_0) import Vulkan.Extensions.VK_EXT_4444_formats (pattern EXT_4444_FORMATS_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_acquire_drm_display (pattern EXT_ACQUIRE_DRM_DISPLAY_EXTENSION_NAME) import Vulkan.Extensions.VK_EXT_acquire_xlib_display (pattern EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME) import Vulkan.Extensions.VK_EXT_astc_decode_mode (pattern EXT_ASTC_DECODE_MODE_EXTENSION_NAME) import Vulkan.Extensions.VK_EXT_buffer_device_address (pattern EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME)@@ -49,6 +50,7 @@ import Vulkan.Extensions.VK_EXT_memory_priority (pattern EXT_MEMORY_PRIORITY_EXTENSION_NAME) import Vulkan.Extensions.VK_EXT_metal_surface (pattern EXT_METAL_SURFACE_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_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_sampler_filter_minmax (pattern EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME)@@ -168,6 +170,7 @@ import Vulkan.Extensions.VK_NV_framebuffer_mixed_samples (pattern NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME) import Vulkan.Extensions.VK_NV_mesh_shader (pattern NV_MESH_SHADER_EXTENSION_NAME) import Vulkan.Extensions.VK_NV_ray_tracing (pattern NV_RAY_TRACING_EXTENSION_NAME)+import Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (pattern NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME) import Vulkan.Extensions.VK_NV_scissor_exclusive (pattern NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME) import Vulkan.Extensions.VK_NV_shader_image_footprint (pattern NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME) import Vulkan.Extensions.VK_NV_shader_sm_builtins (pattern NV_SHADER_SM_BUILTINS_EXTENSION_NAME)@@ -466,9 +469,11 @@   EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME             -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]   QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME             -> [KHR_SWAPCHAIN_EXTENSION_NAME, KHR_SURFACE_EXTENSION_NAME]   EXT_DEVICE_MEMORY_REPORT_EXTENSION_NAME               -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_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_ZERO_INITIALIZE_WORKGROUP_MEMORY_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]+  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_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     , KHR_CREATE_RENDERPASS_2_EXTENSION_NAME@@ -476,6 +481,17 @@     , KHR_MULTIVIEW_EXTENSION_NAME     , KHR_MAINTENANCE2_EXTENSION_NAME     ]+  NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME ->+    [ KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME+    , KHR_SPIRV_1_4_EXTENSION_NAME+    , KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME+    , KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME+    , KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+    , EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME+    , KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME+    , KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME+    , KHR_MAINTENANCE3_EXTENSION_NAME+    ]   EXT_YCBCR_2PLANE_444_FORMATS_EXTENSION_NAME ->     [ KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME     , KHR_MAINTENANCE1_EXTENSION_NAME@@ -496,6 +512,7 @@   VALVE_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME ->     [KHR_MAINTENANCE3_EXTENSION_NAME, KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]   EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  EXT_PHYSICAL_DEVICE_DRM_EXTENSION_NAME        -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]   FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME ->     [ KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME     , KHR_EXTERNAL_MEMORY_EXTENSION_NAME
src/Vulkan/Extensions/Handles.hs view
@@ -262,6 +262,7 @@ -- -- 'Vulkan.Extensions.VK_KHR_display.DisplayPlanePropertiesKHR', -- 'Vulkan.Extensions.VK_KHR_display.DisplayPropertiesKHR',+-- 'Vulkan.Extensions.VK_EXT_acquire_drm_display.acquireDrmDisplayEXT', -- 'Vulkan.Extensions.VK_NV_acquire_winrt_display.acquireWinrtDisplayNV', -- 'Vulkan.Extensions.VK_EXT_acquire_xlib_display.acquireXlibDisplayEXT', -- 'Vulkan.Extensions.VK_KHR_display.createDisplayModeKHR',@@ -269,6 +270,7 @@ -- 'Vulkan.Extensions.VK_KHR_get_display_properties2.getDisplayModeProperties2KHR', -- 'Vulkan.Extensions.VK_KHR_display.getDisplayModePropertiesKHR', -- 'Vulkan.Extensions.VK_KHR_display.getDisplayPlaneSupportedDisplaysKHR',+-- 'Vulkan.Extensions.VK_EXT_acquire_drm_display.getDrmDisplayEXT', -- 'Vulkan.Extensions.VK_EXT_acquire_xlib_display.getRandROutputDisplayEXT', -- 'Vulkan.Extensions.VK_NV_acquire_winrt_display.getWinrtDisplayNV', -- 'Vulkan.Extensions.VK_EXT_display_control.registerDisplayEventEXT',
+ src/Vulkan/Extensions/VK_EXT_acquire_drm_display.hs view
@@ -0,0 +1,266 @@+{-# language CPP #-}+-- | = Name+--+-- VK_EXT_acquire_drm_display - instance extension+--+-- == VK_EXT_acquire_drm_display+--+-- [__Name String__]+--     @VK_EXT_acquire_drm_display@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     286+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_EXT_direct_mode_display@+--+-- [__Contact__]+--+--     -   Drew DeVault <mailto:sir@cmpwn.com sir\@cmpwn.com>+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2021-06-09+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Simon Zeni, Status Holdings, Ltd.+--+-- == Description+--+-- This extension allows an application to take exclusive control of a+-- display using the Direct Rendering Manager (DRM) interface. When+-- acquired, the display will be under full control of the application+-- until the display is either released or the connector is unplugged.+--+-- == New Commands+--+-- -   'acquireDrmDisplayEXT'+--+-- -   'getDrmDisplayEXT'+--+-- == New Enum Constants+--+-- -   'EXT_ACQUIRE_DRM_DISPLAY_EXTENSION_NAME'+--+-- -   'EXT_ACQUIRE_DRM_DISPLAY_SPEC_VERSION'+--+-- == Issues+--+-- None.+--+-- == Version History+--+-- -   Revision 1, 2021-05-11 (Simon Zeni)+--+--     -   Initial draft+--+-- = See Also+--+-- 'acquireDrmDisplayEXT', 'getDrmDisplayEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_acquire_drm_display 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_acquire_drm_display  ( acquireDrmDisplayEXT+                                                     , getDrmDisplayEXT+                                                     , EXT_ACQUIRE_DRM_DISPLAY_SPEC_VERSION+                                                     , pattern EXT_ACQUIRE_DRM_DISPLAY_SPEC_VERSION+                                                     , EXT_ACQUIRE_DRM_DISPLAY_EXTENSION_NAME+                                                     , pattern EXT_ACQUIRE_DRM_DISPLAY_EXTENSION_NAME+                                                     , DisplayKHR(..)+                                                     ) 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 (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import GHC.Ptr (nullFunPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Control.Monad.IO.Class (MonadIO)+import Data.String (IsString)+import Foreign.Storable (Storable(peek))+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 Control.Monad.Trans.Cont (ContT(..))+import Vulkan.NamedType ((:::))+import Vulkan.Extensions.Handles (DisplayKHR)+import Vulkan.Extensions.Handles (DisplayKHR(..))+import Vulkan.Dynamic (InstanceCmds(pVkAcquireDrmDisplayEXT))+import Vulkan.Dynamic (InstanceCmds(pVkGetDrmDisplayEXT))+import Vulkan.Core10.Handles (PhysicalDevice)+import Vulkan.Core10.Handles (PhysicalDevice(..))+import Vulkan.Core10.Handles (PhysicalDevice_T)+import Vulkan.Core10.Enums.Result (Result)+import Vulkan.Core10.Enums.Result (Result(..))+import Vulkan.Exception (VulkanException(..))+import Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Vulkan.Extensions.Handles (DisplayKHR(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkAcquireDrmDisplayEXT+  :: FunPtr (Ptr PhysicalDevice_T -> Int32 -> DisplayKHR -> IO Result) -> Ptr PhysicalDevice_T -> Int32 -> DisplayKHR -> IO Result++-- | vkAcquireDrmDisplayEXT - Acquire access to a VkDisplayKHR using DRM+--+-- = Description+--+-- All permissions necessary to control the display are granted to the+-- Vulkan instance associated with the provided @physicalDevice@ until the+-- display is either released or the connector is unplugged. The provided+-- @drmFd@ must correspond to the one owned by the @physicalDevice@. If+-- not, the error code 'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN' must be+-- returned. The DRM FD must have DRM master permissions. If any error is+-- encountered during the acquisition of the display, the call must return+-- the error code 'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'.+--+-- The provided DRM fd should not be closed before the display is released,+-- attempting to do it may result in undefined behaviour.+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'+--+-- = See Also+--+-- 'Vulkan.Extensions.Handles.DisplayKHR',+-- 'Vulkan.Core10.Handles.PhysicalDevice'+acquireDrmDisplayEXT :: forall io+                      . (MonadIO io)+                     => -- | @physicalDevice@ The physical device the display is on.+                        --+                        -- #VUID-vkAcquireDrmDisplayEXT-physicalDevice-parameter# @physicalDevice@+                        -- /must/ be a valid 'Vulkan.Core10.Handles.PhysicalDevice' handle+                        PhysicalDevice+                     -> -- | @drmFd@ DRM primary file descriptor.+                        ("drmFd" ::: Int32)+                     -> -- | @display@ The display the caller wishes Vulkan to control.+                        --+                        -- #VUID-vkAcquireDrmDisplayEXT-display-parameter# @display@ /must/ be a+                        -- valid 'Vulkan.Extensions.Handles.DisplayKHR' handle+                        --+                        -- #VUID-vkAcquireDrmDisplayEXT-display-parent# @display@ /must/ have been+                        -- created, allocated, or retrieved from @physicalDevice@+                        DisplayKHR+                     -> io ()+acquireDrmDisplayEXT physicalDevice drmFd display = liftIO $ do+  let vkAcquireDrmDisplayEXTPtr = pVkAcquireDrmDisplayEXT (instanceCmds (physicalDevice :: PhysicalDevice))+  unless (vkAcquireDrmDisplayEXTPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkAcquireDrmDisplayEXT is null" Nothing Nothing+  let vkAcquireDrmDisplayEXT' = mkVkAcquireDrmDisplayEXT vkAcquireDrmDisplayEXTPtr+  r <- traceAroundEvent "vkAcquireDrmDisplayEXT" (vkAcquireDrmDisplayEXT' (physicalDeviceHandle (physicalDevice)) (drmFd) (display))+  when (r < SUCCESS) (throwIO (VulkanException r))+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkGetDrmDisplayEXT+  :: FunPtr (Ptr PhysicalDevice_T -> Int32 -> Word32 -> Ptr DisplayKHR -> IO Result) -> Ptr PhysicalDevice_T -> Int32 -> Word32 -> Ptr DisplayKHR -> IO Result++-- | vkGetDrmDisplayEXT - Query the VkDisplayKHR corresponding to a DRM+-- connector ID+--+-- = Description+--+-- If there is no 'Vulkan.Extensions.Handles.DisplayKHR' corresponding to+-- the @connectorId@ on the @physicalDevice@, the returning @display@ must+-- be set to 'Vulkan.Core10.APIConstants.NULL_HANDLE'. The provided @drmFd@+-- must correspond to the one owned by the @physicalDevice@. If not, the+-- error code 'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN' must be returned.+-- Master permissions are not required, because the file descriptor is just+-- used for information gathering purposes. The given @connectorId@ must be+-- a resource owned by the provided @drmFd@. If not, the error code+-- 'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN' must be returned. If any+-- error is encountered during the identification of the display, the call+-- must return the error code+-- 'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'.+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- = See Also+--+-- 'Vulkan.Extensions.Handles.DisplayKHR',+-- 'Vulkan.Core10.Handles.PhysicalDevice'+getDrmDisplayEXT :: forall io+                  . (MonadIO io)+                 => -- | @physicalDevice@ The physical device to query the display from.+                    --+                    -- #VUID-vkGetDrmDisplayEXT-physicalDevice-parameter# @physicalDevice@+                    -- /must/ be a valid 'Vulkan.Core10.Handles.PhysicalDevice' handle+                    PhysicalDevice+                 -> -- | @drmFd@ DRM primary file descriptor.+                    ("drmFd" ::: Int32)+                 -> -- | @connectorId@ Identifier of the specified DRM connector.+                    ("connectorId" ::: Word32)+                 -> io (DisplayKHR)+getDrmDisplayEXT physicalDevice drmFd connectorId = liftIO . evalContT $ do+  let vkGetDrmDisplayEXTPtr = pVkGetDrmDisplayEXT (instanceCmds (physicalDevice :: PhysicalDevice))+  lift $ unless (vkGetDrmDisplayEXTPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetDrmDisplayEXT is null" Nothing Nothing+  let vkGetDrmDisplayEXT' = mkVkGetDrmDisplayEXT vkGetDrmDisplayEXTPtr+  pDisplay <- ContT $ bracket (callocBytes @DisplayKHR 8) free+  r <- lift $ traceAroundEvent "vkGetDrmDisplayEXT" (vkGetDrmDisplayEXT' (physicalDeviceHandle (physicalDevice)) (drmFd) (connectorId) (pDisplay))+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))+  display <- lift $ peek @DisplayKHR pDisplay+  pure $ (display)+++type EXT_ACQUIRE_DRM_DISPLAY_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_EXT_ACQUIRE_DRM_DISPLAY_SPEC_VERSION"+pattern EXT_ACQUIRE_DRM_DISPLAY_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_ACQUIRE_DRM_DISPLAY_SPEC_VERSION = 1+++type EXT_ACQUIRE_DRM_DISPLAY_EXTENSION_NAME = "VK_EXT_acquire_drm_display"++-- No documentation found for TopLevel "VK_EXT_ACQUIRE_DRM_DISPLAY_EXTENSION_NAME"+pattern EXT_ACQUIRE_DRM_DISPLAY_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_ACQUIRE_DRM_DISPLAY_EXTENSION_NAME = "VK_EXT_acquire_drm_display"+
src/Vulkan/Extensions/VK_EXT_conservative_rasterization.hs view
@@ -250,8 +250,8 @@     -- means the implementation can use the smallest representable non-zero     -- value in the screen space pixel fixed-point grid.     extraPrimitiveOverestimationSizeGranularity :: Float-  , -- | #limits-primitiveUnderestimation# @primitiveUnderestimation@ is true if-    -- the implementation supports the+  , -- | #limits-primitiveUnderestimation# @primitiveUnderestimation@ is+    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the implementation supports the     -- 'CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT' conservative     -- rasterization mode in addition to     -- 'CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT'. Otherwise the@@ -259,38 +259,41 @@     -- 'CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT'.     primitiveUnderestimation :: Bool   , -- | #limits-conservativePointAndLineRasterization#-    -- @conservativePointAndLineRasterization@ is true if the implementation-    -- supports conservative rasterization of point and line primitives as well-    -- as triangle primitives. Otherwise the implementation only supports-    -- triangle primitives.+    -- @conservativePointAndLineRasterization@ is+    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the implementation supports+    -- conservative rasterization of point and line primitives as well as+    -- triangle primitives. Otherwise the implementation only supports triangle+    -- primitives.     conservativePointAndLineRasterization :: Bool   , -- | #limits-degenerateTrianglesRasterized# @degenerateTrianglesRasterized@     -- is false if the implementation culls primitives generated from triangles     -- that become zero area after they are quantized to the fixed-point-    -- rasterization pixel grid. @degenerateTrianglesRasterized@ is true if-    -- these primitives are not culled and the provoking vertex attributes and-    -- depth value are used for the fragments. The primitive area calculation-    -- is done on the primitive generated from the clipped triangle if-    -- applicable. Zero area primitives are backfacing and the application-    -- /can/ enable backface culling if desired.+    -- rasterization pixel grid. @degenerateTrianglesRasterized@ is+    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if these primitives are not culled+    -- and the provoking vertex attributes and depth value are used for the+    -- fragments. The primitive area calculation is done on the primitive+    -- generated from the clipped triangle if applicable. Zero area primitives+    -- are backfacing and the application /can/ enable backface culling if+    -- desired.     degenerateTrianglesRasterized :: Bool   , -- | #limits-degenerateLinesRasterized# @degenerateLinesRasterized@ is false     -- if the implementation culls lines that become zero length after they are     -- quantized to the fixed-point rasterization pixel grid.-    -- @degenerateLinesRasterized@ is true if zero length lines are not culled-    -- and the provoking vertex attributes and depth value are used for the-    -- fragments.+    -- @degenerateLinesRasterized@ is 'Vulkan.Core10.FundamentalTypes.TRUE' if+    -- zero length lines are not culled and the provoking vertex attributes and+    -- depth value are used for the fragments.     degenerateLinesRasterized :: Bool   , -- | #limits-fullyCoveredFragmentShaderInputVariable#-    -- @fullyCoveredFragmentShaderInputVariable@ is true if the implementation-    -- supports the SPIR-V builtin fragment shader input variable-    -- @FullyCoveredEXT@ which specifies that conservative rasterization is-    -- enabled and the fragment area is fully covered by the generating-    -- primitive.+    -- @fullyCoveredFragmentShaderInputVariable@ is+    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the implementation supports the+    -- SPIR-V builtin fragment shader input variable @FullyCoveredEXT@ which+    -- specifies that conservative rasterization is enabled and the fragment+    -- area is fully covered by the generating primitive.     fullyCoveredFragmentShaderInputVariable :: Bool   , -- | #limits-conservativeRasterizationPostDepthCoverage#-    -- @conservativeRasterizationPostDepthCoverage@ is true if the-    -- implementation supports conservative rasterization with the+    -- @conservativeRasterizationPostDepthCoverage@ is+    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the implementation supports+    -- conservative rasterization with the     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-fragment-earlytest-postdepthcoverage PostDepthCoverage>     -- execution mode enabled. When supported the     -- 'Vulkan.Core10.FundamentalTypes.SampleMask' built-in input variable will
+ src/Vulkan/Extensions/VK_EXT_multi_draw.hs view
@@ -0,0 +1,1719 @@+{-# language CPP #-}+-- | = Name+--+-- VK_EXT_multi_draw - device extension+--+-- == VK_EXT_multi_draw+--+-- [__Name String__]+--     @VK_EXT_multi_draw@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     393+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Mike Blumenkrantz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_multi_draw:%20&body=@zmike%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2021-05-19+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Mike Blumenkrantz, VALVE+--+--     -   Piers Daniell, NVIDIA+--+--     -   Jason Ekstrand, INTEL+--+--     -   Spencer Fricke, SAMSUNG+--+--     -   Ricardo Garcia, IGALIA+--+--     -   Jon Leech, KHRONOS+--+--     -   Stu Smith, AMD+--+-- == Description+--+-- Processing multiple draw commands in sequence incurs measurable overhead+-- within drivers due to repeated state checks and updates during dispatch.+-- This extension enables passing the entire sequence of draws directly to+-- the driver in order to avoid any such overhead, using an array of+-- 'MultiDrawInfoEXT' or 'MultiDrawIndexedInfoEXT' structs with+-- 'cmdDrawMultiEXT' or 'cmdDrawMultiIndexedEXT', respectively. These+-- functions could be used any time multiple draw commands are being+-- recorded without any state changes between them in order to maximize+-- performance.+--+-- == New Commands+--+-- -   'cmdDrawMultiEXT'+--+-- -   'cmdDrawMultiIndexedEXT'+--+-- == New Structures+--+-- -   'MultiDrawIndexedInfoEXT'+--+-- -   'MultiDrawInfoEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceMultiDrawFeaturesEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceMultiDrawPropertiesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_MULTI_DRAW_EXTENSION_NAME'+--+-- -   'EXT_MULTI_DRAW_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT'+--+-- == New or Modified Built-In Variables+--+-- -   (modified)@DrawIndex@+--+-- == Version History+--+-- -   Version 1, 2021-01-20 (Mike Blumenkrantz)+--+--     -   Initial version+--+-- = See Also+--+-- 'MultiDrawIndexedInfoEXT', 'MultiDrawInfoEXT',+-- 'PhysicalDeviceMultiDrawFeaturesEXT',+-- 'PhysicalDeviceMultiDrawPropertiesEXT', 'cmdDrawMultiEXT',+-- 'cmdDrawMultiIndexedEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_multi_draw 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_multi_draw  ( cmdDrawMultiEXT+                                            , cmdDrawMultiIndexedEXT+                                            , MultiDrawInfoEXT(..)+                                            , MultiDrawIndexedInfoEXT(..)+                                            , PhysicalDeviceMultiDrawPropertiesEXT(..)+                                            , PhysicalDeviceMultiDrawFeaturesEXT(..)+                                            , EXT_MULTI_DRAW_SPEC_VERSION+                                            , pattern EXT_MULTI_DRAW_SPEC_VERSION+                                            , EXT_MULTI_DRAW_EXTENSION_NAME+                                            , pattern EXT_MULTI_DRAW_EXTENSION_NAME+                                            ) where++import Vulkan.Internal.Utils (traceAroundEvent)+import Control.Monad (unless)+import Control.Monad.IO.Class (liftIO)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Utils (with)+import GHC.IO (throwIO)+import GHC.Ptr (nullFunPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+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.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.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Vulkan.Core10.FundamentalTypes (bool32ToBool)+import Vulkan.Core10.FundamentalTypes (boolToBool32)+import Vulkan.NamedType ((:::))+import Vulkan.Core10.FundamentalTypes (Bool32)+import Vulkan.Core10.Handles (CommandBuffer)+import Vulkan.Core10.Handles (CommandBuffer(..))+import Vulkan.Core10.Handles (CommandBuffer_T)+import Vulkan.Dynamic (DeviceCmds(pVkCmdDrawMultiEXT))+import Vulkan.Dynamic (DeviceCmds(pVkCmdDrawMultiIndexedEXT))+import Vulkan.Core10.Enums.StructureType (StructureType)+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdDrawMultiEXT+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr MultiDrawInfoEXT -> Word32 -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr MultiDrawInfoEXT -> Word32 -> Word32 -> Word32 -> IO ()++-- | vkCmdDrawMultiEXT - Draw primitives+--+-- = Description+--+-- This command is equivalent to calling+-- 'Vulkan.Core10.CommandBufferBuilding.cmdDraw' @drawCount@ times. The+-- number of draw commands recorded is @drawCount@, with each command+-- reading, sequentially, a @firstVertex@ and a @vertexCount@ from+-- @pVertexInfo@.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdDrawMultiEXT-magFilter-04553# If a+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and+--     @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE' is+--     used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of+--     this command, then the image view’s+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+--     /must/ contain+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'+--+-- -   #VUID-vkCmdDrawMultiEXT-mipmapMode-04770# If a+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'+--     and @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE'+--     is used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of+--     this command, then the image view’s+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+--     /must/ contain+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'+--+-- -   #VUID-vkCmdDrawMultiEXT-None-02691# If a+--     'Vulkan.Core10.Handles.ImageView' is accessed using atomic+--     operations as a result of this command, then the image view’s+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+--     /must/ contain+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'+--+-- -   #VUID-vkCmdDrawMultiEXT-None-02692# If a+--     'Vulkan.Core10.Handles.ImageView' is sampled with+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as a result+--     of this command, then the image view’s+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+--     /must/ contain+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'+--+-- -   #VUID-vkCmdDrawMultiEXT-filterCubic-02694# Any+--     'Vulkan.Core10.Handles.ImageView' being sampled with+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as a result+--     of this command /must/ have a+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that+--     supports cubic filtering, as specified by+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@+--     returned by+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- -   #VUID-vkCmdDrawMultiEXT-filterCubicMinmax-02695# Any+--     'Vulkan.Core10.Handles.ImageView' being sampled with+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' with a+--     reduction mode of either+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'+--     or+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'+--     as a result of this command /must/ have a+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that+--     supports cubic filtering together with minmax filtering, as+--     specified by+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@+--     returned by+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- -   #VUID-vkCmdDrawMultiEXT-flags-02696# Any+--     'Vulkan.Core10.Handles.Image' created with a+--     'Vulkan.Core10.Image.ImageCreateInfo'::@flags@ containing+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'+--     sampled as a result of this command /must/ only be sampled using a+--     'Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode' of+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'+--+-- -   #VUID-vkCmdDrawMultiEXT-None-02697# For each set /n/ that is+--     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the+--     pipeline bind point used by this command, a descriptor set /must/+--     have been bound to /n/ at the same pipeline bind point, with a+--     'Vulkan.Core10.Handles.PipelineLayout' that is compatible for set+--     /n/, with the 'Vulkan.Core10.Handles.PipelineLayout' used to create+--     the current 'Vulkan.Core10.Handles.Pipeline', as described in+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- -   #VUID-vkCmdDrawMultiEXT-None-02698# For each push constant that is+--     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the+--     pipeline bind point used by this command, a push constant value+--     /must/ have been set for the same pipeline bind point, with a+--     'Vulkan.Core10.Handles.PipelineLayout' that is compatible for push+--     constants, with the 'Vulkan.Core10.Handles.PipelineLayout' used to+--     create the current 'Vulkan.Core10.Handles.Pipeline', as described in+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- -   #VUID-vkCmdDrawMultiEXT-None-02699# Descriptors in each bound+--     descriptor set, specified via+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/+--     be valid if they are statically used by the+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point+--     used by this command+--+-- -   #VUID-vkCmdDrawMultiEXT-None-02700# A valid pipeline /must/ be bound+--     to the pipeline bind point used by this command+--+-- -   #VUID-vkCmdDrawMultiEXT-commandBuffer-02701# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command requires any dynamic state, that state+--     /must/ have been set or inherited for @commandBuffer@, and done so+--     after any previously bound pipeline with the corresponding state not+--     specified as dynamic+--+-- -   #VUID-vkCmdDrawMultiEXT-None-02859# There /must/ not have been any+--     calls to dynamic state setting commands for any state not specified+--     as dynamic in the 'Vulkan.Core10.Handles.Pipeline' object bound to+--     the pipeline bind point used by this command, since that pipeline+--     was bound+--+-- -   #VUID-vkCmdDrawMultiEXT-None-02702# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized+--     coordinates, that sampler /must/ not be used to sample from any+--     'Vulkan.Core10.Handles.Image' with a+--     'Vulkan.Core10.Handles.ImageView' of the type+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY' or+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY', in+--     any shader stage+--+-- -   #VUID-vkCmdDrawMultiEXT-None-02703# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized+--     coordinates, that sampler /must/ not be used with any of the SPIR-V+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions with+--     @ImplicitLod@, @Dref@ or @Proj@ in their name, in any shader stage+--+-- -   #VUID-vkCmdDrawMultiEXT-None-02704# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized+--     coordinates, that sampler /must/ not be used with any of the SPIR-V+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions that+--     includes a LOD bias or any offset values, in any shader stage+--+-- -   #VUID-vkCmdDrawMultiEXT-None-02705# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+--     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'+--     object bound to the pipeline bind point used by this command+--     accesses a uniform buffer, it /must/ not access values outside of+--     the range of the buffer as specified in the descriptor set bound to+--     the same pipeline bind point+--+-- -   #VUID-vkCmdDrawMultiEXT-None-02706# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+--     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'+--     object bound to the pipeline bind point used by this command+--     accesses a storage buffer, it /must/ not access values outside of+--     the range of the buffer as specified in the descriptor set bound to+--     the same pipeline bind point+--+-- -   #VUID-vkCmdDrawMultiEXT-commandBuffer-02707# If @commandBuffer@ is+--     an unprotected command buffer, 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-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+--     of that instruction /must/ have at least as many components as the+--     image view’s format.+--+-- -   #VUID-vkCmdDrawMultiEXT-OpImageWrite-04469# If a+--     'Vulkan.Core10.Handles.BufferView' is accessed using @OpImageWrite@+--     as a result of this command, then the @Type@ of the @Texel@ operand+--     of that instruction /must/ have at least as many components as the+--     buffer view’s format.+--+-- -   #VUID-vkCmdDrawMultiEXT-SampledType-04470# If a+--     'Vulkan.Core10.Handles.ImageView' with a+--     'Vulkan.Core10.Enums.Format.Format' that has a 64-bit channel width+--     is accessed as a result of this command, the @SampledType@ of the+--     @OpTypeImage@ operand of that instruction /must/ have a @Width@ of+--     64.+--+-- -   #VUID-vkCmdDrawMultiEXT-SampledType-04471# If a+--     'Vulkan.Core10.Handles.ImageView' with a+--     'Vulkan.Core10.Enums.Format.Format' that has a channel width less+--     than 64-bit is accessed as a result of this command, the+--     @SampledType@ of the @OpTypeImage@ operand of that instruction+--     /must/ have a @Width@ of 32.+--+-- -   #VUID-vkCmdDrawMultiEXT-SampledType-04472# If a+--     'Vulkan.Core10.Handles.BufferView' with a+--     'Vulkan.Core10.Enums.Format.Format' that has a 64-bit channel width+--     is accessed as a result of this command, the @SampledType@ of the+--     @OpTypeImage@ operand of that instruction /must/ have a @Width@ of+--     64.+--+-- -   #VUID-vkCmdDrawMultiEXT-SampledType-04473# If a+--     'Vulkan.Core10.Handles.BufferView' with a+--     'Vulkan.Core10.Enums.Format.Format' that has a channel width less+--     than 64-bit is accessed as a result of this command, the+--     @SampledType@ of the @OpTypeImage@ operand of that instruction+--     /must/ have a @Width@ of 32.+--+-- -   #VUID-vkCmdDrawMultiEXT-sparseImageInt64Atomics-04474# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>+--     feature is not enabled, 'Vulkan.Core10.Handles.Image' objects+--     created with the+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'+--     flag /must/ not be accessed by atomic instructions through an+--     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this+--     command.+--+-- -   #VUID-vkCmdDrawMultiEXT-sparseImageInt64Atomics-04475# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>+--     feature is not enabled, 'Vulkan.Core10.Handles.Buffer' objects+--     created with the+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_RESIDENCY_BIT'+--     flag /must/ not be accessed by atomic instructions through an+--     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this+--     command.+--+-- -   #VUID-vkCmdDrawMultiEXT-renderPass-02684# The current render pass+--     /must/ be+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible>+--     with the @renderPass@ member of the+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' structure+--     specified when creating the 'Vulkan.Core10.Handles.Pipeline' bound+--     to+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'+--+-- -   #VUID-vkCmdDrawMultiEXT-subpass-02685# The subpass index of the+--     current render pass /must/ be equal to the @subpass@ member of the+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' structure+--     specified when creating the 'Vulkan.Core10.Handles.Pipeline' bound+--     to+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'+--+-- -   #VUID-vkCmdDrawMultiEXT-None-02686# Every input attachment used by+--     the current subpass /must/ be bound to the pipeline via a descriptor+--     set+--+-- -   #VUID-vkCmdDrawMultiEXT-None-04584# Image subresources used as+--     attachments in the current render pass /must/ not be accessed in any+--     way other than as an attachment by this command, except for cases+--     involving read-only access to depth\/stencil attachments as+--     described in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass>+--     chapter+--+-- -   #VUID-vkCmdDrawMultiEXT-maxMultiviewInstanceIndex-02688# If the draw+--     is recorded in a render pass instance with multiview enabled, the+--     maximum instance index /must/ be less than or equal to+--     'Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@+--+-- -   #VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-02689# If the bound+--     graphics pipeline was created with+--     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@+--     set to 'Vulkan.Core10.FundamentalTypes.TRUE' and the current subpass+--     has a depth\/stencil attachment, then that attachment /must/ have+--     been created with the+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'+--     bit set+--+-- -   #VUID-vkCmdDrawMultiEXT-viewportCount-03417# If the bound graphics+--     pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     dynamic state enabled, but not the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'+--     dynamic state enabled, then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @viewportCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--     /must/ match the+--     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@+--     of the pipeline+--+-- -   #VUID-vkCmdDrawMultiEXT-scissorCount-03418# If the bound graphics+--     pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'+--     dynamic state enabled, but not the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     dynamic state enabled, then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @scissorCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'+--     /must/ match the+--     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@+--     of the pipeline+--+-- -   #VUID-vkCmdDrawMultiEXT-viewportCount-03419# If the bound graphics+--     pipeline state was created with both the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     dynamic states enabled then both+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--     and+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @viewportCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--     /must/ match the @scissorCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'+--+-- -   #VUID-vkCmdDrawMultiEXT-viewportCount-04137# If the bound graphics+--     pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     dynamic state enabled, but not the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'+--     dynamic state enabled, then the bound graphics pipeline /must/ have+--     been created with+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'::@viewportCount@+--     greater or equal to the @viewportCount@ parameter in the last call+--     to+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--+-- -   #VUID-vkCmdDrawMultiEXT-viewportCount-04138# If the bound graphics+--     pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'+--     dynamic states enabled then the @viewportCount@ parameter in the+--     last call to+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'+--     /must/ be greater than or equal to the @viewportCount@ parameter in+--     the last call to+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--+-- -   #VUID-vkCmdDrawMultiEXT-viewportCount-04139# If the bound graphics+--     pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     dynamic state enabled, but not the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'+--     dynamic state enabled, then the bound graphics pipeline /must/ have+--     been created with+--     'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV'::@viewportCount@+--     greater or equal to the @viewportCount@ parameter in the last call+--     to+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--+-- -   #VUID-vkCmdDrawMultiEXT-viewportCount-04140# If the bound graphics+--     pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'+--     dynamic states enabled then the @viewportCount@ parameter in the+--     last call to+--     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'+--     /must/ be greater than or equal to the @viewportCount@ parameter in+--     the last call to+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--+-- -   #VUID-vkCmdDrawMultiEXT-VkPipelineVieportCreateInfo-04141# If the+--     bound graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     dynamic state enabled and an instance of+--     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'+--     chained from @VkPipelineVieportCreateInfo@, then the bound graphics+--     pipeline /must/ have been created with+--     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'::@viewportCount@+--     greater or equal to the @viewportCount@ parameter in the last call+--     to+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--+-- -   #VUID-vkCmdDrawMultiEXT-VkPipelineVieportCreateInfo-04142# If the+--     bound graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     dynamic state enabled and an instance of+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'+--     chained from @VkPipelineVieportCreateInfo@, then the bound graphics+--     pipeline /must/ have been created with+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'::@exclusiveScissorCount@+--     greater or equal to the @viewportCount@ parameter in the last call+--     to+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--+-- -   #VUID-vkCmdDrawMultiEXT-primitiveTopology-03420# If the bound+--     graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @primitiveTopology@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'+--     /must/ be of the same+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>+--     as the pipeline+--     'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@topology@+--     state+--+-- -   #VUID-vkCmdDrawMultiEXT-None-04875# If the bound graphics pipeline+--     state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command+--+-- -   #VUID-vkCmdDrawMultiEXT-None-04876# If the bound graphics pipeline+--     state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnableEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command+--+-- -   #VUID-vkCmdDrawMultiEXT-None-04877# If the bound graphics pipeline+--     state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnableEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command+--+-- -   #VUID-vkCmdDrawMultiEXT-logicOp-04878# If the bound graphics+--     pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command and the @logicOp@ /must/ be a valid+--     'Vulkan.Core10.Enums.LogicOp.LogicOp' value+--+-- -   #VUID-vkCmdDrawMultiEXT-None-04879# If the bound graphics pipeline+--     state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command+--+-- -   #VUID-vkCmdDrawMultiEXT-primitiveFragmentShadingRateWithMultipleViewports-04552#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>+--     limit is not supported, the bound graphics pipeline was created with+--     the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     dynamic state enabled, and any of the shader stages of the bound+--     graphics pipeline write to the @PrimitiveShadingRateKHR@ built-in,+--     then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @viewportCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--     /must/ be @1@+--+-- -   #VUID-vkCmdDrawMultiEXT-blendEnable-04727# If rasterization is not+--     disabled in the bound graphics pipeline, then for each color+--     attachment in the subpass, if the corresponding image view’s+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features 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-vkCmdDrawMultiEXT-rasterizationSamples-04740# If rasterization+--     is not disabled in the bound graphics pipeline, and neither the @@+--     nor the @@ extensions are enabled, then+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@+--     /must/ be the same as the current subpass color and\/or+--     depth\/stencil attachments+--+-- -   #VUID-vkCmdDrawMultiEXT-None-04912# If the bound graphics pipeline+--     was created with both the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'+--     dynamic states enabled, then+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'+--     /must/ have been called in the current command buffer prior to this+--     draw command+--+-- -   #VUID-vkCmdDrawMultiEXT-pStrides-04913# If the bound graphics+--     pipeline was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'+--     dynamic state enabled, but not the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'+--     dynamic state enabled, then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'+--     /must/ have been called in the current command buffer prior to this+--     draw command, and the @pStrides@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'+--     /must/ not be @NULL@+--+-- -   #VUID-vkCmdDrawMultiEXT-None-04914# If the bound graphics pipeline+--     state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'+--     dynamic state enabled, then+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'+--     /must/ have been called in the current command buffer prior to this+--     draw command+--+-- -   #VUID-vkCmdDrawMultiEXT-commandBuffer-02712# If @commandBuffer@ is a+--     protected command buffer, any resource written to by the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command /must/ not be an unprotected resource+--+-- -   #VUID-vkCmdDrawMultiEXT-commandBuffer-02713# If @commandBuffer@ is a+--     protected command buffer, pipeline stages other than the+--     framebuffer-space and compute stages in the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command /must/ not write to any resource+--+-- -   #VUID-vkCmdDrawMultiEXT-commandBuffer-04617# If any of the shader+--     stages of the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline+--     bind point used by this command uses the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-RayQueryKHR RayQueryKHR>+--     capability, then @commandBuffer@ /must/ not be a protected command+--     buffer+--+-- -   #VUID-vkCmdDrawMultiEXT-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+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' buffers bound+--+-- -   #VUID-vkCmdDrawMultiEXT-None-04008# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>+--     feature is not enabled, all vertex input bindings accessed via+--     vertex input variables declared in the vertex shader entry point’s+--     interface /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   #VUID-vkCmdDrawMultiEXT-None-02721# For a given vertex buffer+--     binding, any attribute data fetched /must/ be entirely contained+--     within the corresponding vertex buffer binding, as described in+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input ???>+--+-- -   #VUID-vkCmdDrawMultiEXT-None-04933# The+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiDraw multiDraw>+--     feature /must/ be enabled+--+-- -   #VUID-vkCmdDrawMultiEXT-drawCount-04934# @drawCount@ /must/ be less+--     than 'PhysicalDeviceMultiDrawPropertiesEXT'::@maxMultiDrawCount@+--+-- -   #VUID-vkCmdDrawMultiEXT-drawCount-04935# If @drawCount@ is greater+--     than zero, @pVertexInfo@ /must/ be a valid pointer to memory+--     containing one or more valid instances of 'MultiDrawInfoEXT'+--     structures+--+-- -   #VUID-vkCmdDrawMultiEXT-stride-04936# @stride@ must be a multiple of+--     4+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdDrawMultiEXT-commandBuffer-parameter# @commandBuffer@+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdDrawMultiEXT-commandBuffer-recording# @commandBuffer@+--     /must/ be in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- -   #VUID-vkCmdDrawMultiEXT-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics operations+--+-- -   #VUID-vkCmdDrawMultiEXT-renderpass# This command /must/ only be+--     called inside of a render pass instance+--+-- == Host Synchronization+--+-- -   Host access to @commandBuffer@ /must/ be externally synchronized+--+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Inside                                                                                                                 | Graphics                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Vulkan.Core10.Handles.CommandBuffer', 'MultiDrawInfoEXT'+cmdDrawMultiEXT :: forall io+                 . (MonadIO io)+                => -- | @commandBuffer@ is the command buffer into which the command is+                   -- recorded.+                   CommandBuffer+                -> -- | @pVertexInfo@ is a pointer to an array of 'MultiDrawInfoEXT' with vertex+                   -- info to be drawn.+                   ("vertexInfo" ::: Vector MultiDrawInfoEXT)+                -> -- | @instanceCount@ is the number of instances to draw.+                   ("instanceCount" ::: Word32)+                -> -- | @firstInstance@ is the instance ID of the first instance to draw.+                   ("firstInstance" ::: Word32)+                -> -- | @stride@ is the byte stride between consecutive elements of+                   -- @pVertexInfo@.+                   ("stride" ::: Word32)+                -> io ()+cmdDrawMultiEXT commandBuffer vertexInfo instanceCount firstInstance stride = liftIO . evalContT $ do+  let vkCmdDrawMultiEXTPtr = pVkCmdDrawMultiEXT (deviceCmds (commandBuffer :: CommandBuffer))+  lift $ unless (vkCmdDrawMultiEXTPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDrawMultiEXT is null" Nothing Nothing+  let vkCmdDrawMultiEXT' = mkVkCmdDrawMultiEXT vkCmdDrawMultiEXTPtr+  pPVertexInfo <- ContT $ allocaBytesAligned @MultiDrawInfoEXT ((Data.Vector.length (vertexInfo)) * 8) 4+  lift $ Data.Vector.imapM_ (\i e -> poke (pPVertexInfo `plusPtr` (8 * (i)) :: Ptr MultiDrawInfoEXT) (e)) (vertexInfo)+  lift $ traceAroundEvent "vkCmdDrawMultiEXT" (vkCmdDrawMultiEXT' (commandBufferHandle (commandBuffer)) ((fromIntegral (Data.Vector.length $ (vertexInfo)) :: Word32)) (pPVertexInfo) (instanceCount) (firstInstance) (stride))+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdDrawMultiIndexedEXT+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr MultiDrawIndexedInfoEXT -> Word32 -> Word32 -> Word32 -> Ptr Int32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr MultiDrawIndexedInfoEXT -> Word32 -> Word32 -> Word32 -> Ptr Int32 -> IO ()++-- | vkCmdDrawMultiIndexedEXT - Draw primitives+--+-- = Description+--+-- This command is equivalent to calling+-- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexed' @drawCount@ times.+-- The number of draw commands recorded is @drawCount@, with each command+-- reading, sequentially, a @firstIndex@ and an @indexCount@ from+-- @pIndexInfo@. If @pVertexOffset@ is @NULL@, a @vertexOffset@ is also+-- read from @pIndexInfo@, otherwise the value from dereferencing+-- @pVertexOffset@ is used.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-magFilter-04553# If a+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and+--     @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE' is+--     used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of+--     this command, then the image view’s+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+--     /must/ contain+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-mipmapMode-04770# If a+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'+--     and @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE'+--     is used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of+--     this command, then the image view’s+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+--     /must/ contain+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-02691# If a+--     'Vulkan.Core10.Handles.ImageView' is accessed using atomic+--     operations as a result of this command, then the image view’s+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+--     /must/ contain+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-02692# If a+--     'Vulkan.Core10.Handles.ImageView' is sampled with+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as a result+--     of this command, then the image view’s+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+--     /must/ contain+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-filterCubic-02694# Any+--     'Vulkan.Core10.Handles.ImageView' being sampled with+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as a result+--     of this command /must/ have a+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that+--     supports cubic filtering, as specified by+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@+--     returned by+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-filterCubicMinmax-02695# Any+--     'Vulkan.Core10.Handles.ImageView' being sampled with+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' with a+--     reduction mode of either+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'+--     or+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'+--     as a result of this command /must/ have a+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that+--     supports cubic filtering together with minmax filtering, as+--     specified by+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@+--     returned by+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-flags-02696# Any+--     'Vulkan.Core10.Handles.Image' created with a+--     'Vulkan.Core10.Image.ImageCreateInfo'::@flags@ containing+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'+--     sampled as a result of this command /must/ only be sampled using a+--     'Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode' of+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-02697# For each set /n/ that is+--     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the+--     pipeline bind point used by this command, a descriptor set /must/+--     have been bound to /n/ at the same pipeline bind point, with a+--     'Vulkan.Core10.Handles.PipelineLayout' that is compatible for set+--     /n/, with the 'Vulkan.Core10.Handles.PipelineLayout' used to create+--     the current 'Vulkan.Core10.Handles.Pipeline', as described in+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-02698# For each push constant+--     that is statically used by the 'Vulkan.Core10.Handles.Pipeline'+--     bound to the pipeline bind point used by this command, a push+--     constant value /must/ have been set for the same pipeline bind+--     point, with a 'Vulkan.Core10.Handles.PipelineLayout' that is+--     compatible for push constants, with the+--     'Vulkan.Core10.Handles.PipelineLayout' used to create the current+--     'Vulkan.Core10.Handles.Pipeline', as described in+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-02699# Descriptors in each bound+--     descriptor set, specified via+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/+--     be valid if they are statically used by the+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point+--     used by this command+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-02700# A valid pipeline /must/+--     be bound to the pipeline bind point used by this command+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-02701# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command requires any dynamic state, that state+--     /must/ have been set or inherited for @commandBuffer@, and done so+--     after any previously bound pipeline with the corresponding state not+--     specified as dynamic+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-02859# There /must/ not have+--     been any calls to dynamic state setting commands for any state not+--     specified as dynamic in the 'Vulkan.Core10.Handles.Pipeline' object+--     bound to the pipeline bind point used by this command, since that+--     pipeline was bound+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-02702# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized+--     coordinates, that sampler /must/ not be used to sample from any+--     'Vulkan.Core10.Handles.Image' with a+--     'Vulkan.Core10.Handles.ImageView' of the type+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY' or+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY', in+--     any shader stage+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-02703# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized+--     coordinates, that sampler /must/ not be used with any of the SPIR-V+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions with+--     @ImplicitLod@, @Dref@ or @Proj@ in their name, in any shader stage+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-02704# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized+--     coordinates, that sampler /must/ not be used with any of the SPIR-V+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions that+--     includes a LOD bias or any offset values, in any shader stage+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-02705# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+--     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'+--     object bound to the pipeline bind point used by this command+--     accesses a uniform buffer, it /must/ not access values outside of+--     the range of the buffer as specified in the descriptor set bound to+--     the same pipeline bind point+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-02706# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+--     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'+--     object bound to the pipeline bind point used by this command+--     accesses a storage buffer, it /must/ not access values outside of+--     the range of the buffer as specified in the descriptor set bound to+--     the same pipeline bind point+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-02707# If+--     @commandBuffer@ is an unprotected command buffer, 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-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+--     of that instruction /must/ have at least as many components as the+--     image view’s format.+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-OpImageWrite-04469# If a+--     'Vulkan.Core10.Handles.BufferView' is accessed using @OpImageWrite@+--     as a result of this command, then the @Type@ of the @Texel@ operand+--     of that instruction /must/ have at least as many components as the+--     buffer view’s format.+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-SampledType-04470# If a+--     'Vulkan.Core10.Handles.ImageView' with a+--     'Vulkan.Core10.Enums.Format.Format' that has a 64-bit channel width+--     is accessed as a result of this command, the @SampledType@ of the+--     @OpTypeImage@ operand of that instruction /must/ have a @Width@ of+--     64.+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-SampledType-04471# If a+--     'Vulkan.Core10.Handles.ImageView' with a+--     'Vulkan.Core10.Enums.Format.Format' that has a channel width less+--     than 64-bit is accessed as a result of this command, the+--     @SampledType@ of the @OpTypeImage@ operand of that instruction+--     /must/ have a @Width@ of 32.+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-SampledType-04472# If a+--     'Vulkan.Core10.Handles.BufferView' with a+--     'Vulkan.Core10.Enums.Format.Format' that has a 64-bit channel width+--     is accessed as a result of this command, the @SampledType@ of the+--     @OpTypeImage@ operand of that instruction /must/ have a @Width@ of+--     64.+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-SampledType-04473# If a+--     'Vulkan.Core10.Handles.BufferView' with a+--     'Vulkan.Core10.Enums.Format.Format' that has a channel width less+--     than 64-bit is accessed as a result of this command, the+--     @SampledType@ of the @OpTypeImage@ operand of that instruction+--     /must/ have a @Width@ of 32.+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-sparseImageInt64Atomics-04474# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>+--     feature is not enabled, 'Vulkan.Core10.Handles.Image' objects+--     created with the+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'+--     flag /must/ not be accessed by atomic instructions through an+--     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this+--     command.+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-sparseImageInt64Atomics-04475# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>+--     feature is not enabled, 'Vulkan.Core10.Handles.Buffer' objects+--     created with the+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_RESIDENCY_BIT'+--     flag /must/ not be accessed by atomic instructions through an+--     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this+--     command.+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-renderPass-02684# The current render+--     pass /must/ be+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible>+--     with the @renderPass@ member of the+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' structure+--     specified when creating the 'Vulkan.Core10.Handles.Pipeline' bound+--     to+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-subpass-02685# The subpass index of+--     the current render pass /must/ be equal to the @subpass@ member of+--     the 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' structure+--     specified when creating the 'Vulkan.Core10.Handles.Pipeline' bound+--     to+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-02686# Every input attachment+--     used by the current subpass /must/ be bound to the pipeline via a+--     descriptor set+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-04584# Image subresources used+--     as attachments in the current render pass /must/ not be accessed in+--     any way other than as an attachment by this command, except for+--     cases involving read-only access to depth\/stencil attachments as+--     described in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass>+--     chapter+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-maxMultiviewInstanceIndex-02688# If+--     the draw is recorded in a render pass instance with multiview+--     enabled, the maximum instance index /must/ be less than or equal to+--     'Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-02689# If the+--     bound graphics pipeline was created with+--     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@+--     set to 'Vulkan.Core10.FundamentalTypes.TRUE' and the current subpass+--     has a depth\/stencil attachment, then that attachment /must/ have+--     been created with the+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'+--     bit set+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-viewportCount-03417# If the bound+--     graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     dynamic state enabled, but not the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'+--     dynamic state enabled, then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @viewportCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--     /must/ match the+--     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@+--     of the pipeline+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-scissorCount-03418# If the bound+--     graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'+--     dynamic state enabled, but not the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     dynamic state enabled, then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @scissorCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'+--     /must/ match the+--     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@+--     of the pipeline+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-viewportCount-03419# If the bound+--     graphics pipeline state was created with both the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     dynamic states enabled then both+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--     and+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @viewportCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--     /must/ match the @scissorCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-viewportCount-04137# If the bound+--     graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     dynamic state enabled, but not the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'+--     dynamic state enabled, then the bound graphics pipeline /must/ have+--     been created with+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'::@viewportCount@+--     greater or equal to the @viewportCount@ parameter in the last call+--     to+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-viewportCount-04138# If the bound+--     graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'+--     dynamic states enabled then the @viewportCount@ parameter in the+--     last call to+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'+--     /must/ be greater than or equal to the @viewportCount@ parameter in+--     the last call to+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-viewportCount-04139# If the bound+--     graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     dynamic state enabled, but not the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'+--     dynamic state enabled, then the bound graphics pipeline /must/ have+--     been created with+--     'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV'::@viewportCount@+--     greater or equal to the @viewportCount@ parameter in the last call+--     to+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-viewportCount-04140# If the bound+--     graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'+--     dynamic states enabled then the @viewportCount@ parameter in the+--     last call to+--     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'+--     /must/ be greater than or equal to the @viewportCount@ parameter in+--     the last call to+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-VkPipelineVieportCreateInfo-04141# If+--     the bound graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     dynamic state enabled and an instance of+--     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'+--     chained from @VkPipelineVieportCreateInfo@, then the bound graphics+--     pipeline /must/ have been created with+--     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'::@viewportCount@+--     greater or equal to the @viewportCount@ parameter in the last call+--     to+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-VkPipelineVieportCreateInfo-04142# If+--     the bound graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     dynamic state enabled and an instance of+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'+--     chained from @VkPipelineVieportCreateInfo@, then the bound graphics+--     pipeline /must/ have been created with+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'::@exclusiveScissorCount@+--     greater or equal to the @viewportCount@ parameter in the last call+--     to+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-primitiveTopology-03420# If the bound+--     graphics pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @primitiveTopology@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'+--     /must/ be of the same+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>+--     as the pipeline+--     'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@topology@+--     state+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-04875# If the bound graphics+--     pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-04876# If the bound graphics+--     pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnableEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-04877# If the bound graphics+--     pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnableEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-logicOp-04878# If the bound graphics+--     pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command and the @logicOp@ /must/ be a valid+--     'Vulkan.Core10.Enums.LogicOp.LogicOp' value+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-04879# If the bound graphics+--     pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'+--     dynamic state enabled then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-primitiveFragmentShadingRateWithMultipleViewports-04552#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>+--     limit is not supported, the bound graphics pipeline was created with+--     the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--     dynamic state enabled, and any of the shader stages of the bound+--     graphics pipeline write to the @PrimitiveShadingRateKHR@ built-in,+--     then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--     /must/ have been called in the current command buffer prior to this+--     drawing command, and the @viewportCount@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'+--     /must/ be @1@+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-blendEnable-04727# If rasterization+--     is not disabled in the bound graphics pipeline, then for each color+--     attachment in the subpass, if the corresponding image view’s+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features 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-vkCmdDrawMultiIndexedEXT-rasterizationSamples-04740# If+--     rasterization is not disabled in the bound graphics pipeline, and+--     neither the @@ nor the @@ extensions are enabled, then+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@+--     /must/ be the same as the current subpass color and\/or+--     depth\/stencil attachments+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-04912# If the bound graphics+--     pipeline was created with both the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'+--     and+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'+--     dynamic states enabled, then+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'+--     /must/ have been called in the current command buffer prior to this+--     draw command+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-pStrides-04913# If the bound graphics+--     pipeline was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'+--     dynamic state enabled, but not the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'+--     dynamic state enabled, then+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'+--     /must/ have been called in the current command buffer prior to this+--     draw command, and the @pStrides@ parameter of+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'+--     /must/ not be @NULL@+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-04914# If the bound graphics+--     pipeline state was created with the+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'+--     dynamic state enabled, then+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'+--     /must/ have been called in the current command buffer prior to this+--     draw command+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-02712# If+--     @commandBuffer@ is a protected command buffer, any resource written+--     to by the 'Vulkan.Core10.Handles.Pipeline' object bound to the+--     pipeline bind point used by this command /must/ not be an+--     unprotected resource+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-02713# If+--     @commandBuffer@ is a protected command buffer, pipeline stages other+--     than the framebuffer-space and compute stages in the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command /must/ not write to any resource+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-04617# If any of the+--     shader stages of the 'Vulkan.Core10.Handles.Pipeline' bound to the+--     pipeline bind point used by this command uses the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-RayQueryKHR RayQueryKHR>+--     capability, then @commandBuffer@ /must/ not be a protected command+--     buffer+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-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+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' buffers bound+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-04008# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>+--     feature is not enabled, all vertex input bindings accessed via+--     vertex input variables declared in the vertex shader entry point’s+--     interface /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-02721# For a given vertex buffer+--     binding, any attribute data fetched /must/ be entirely contained+--     within the corresponding vertex buffer binding, as described in+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input ???>+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-04937# The+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiDraw multiDraw>+--     feature /must/ be enabled+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-firstIndex-04938# (@indexSize@ ×+--     (@firstIndex@ + @indexCount@) + @offset@) /must/ be less than or+--     equal to the size of the bound index buffer, with @indexSize@ being+--     based on the type specified by @indexType@, where the index buffer,+--     @indexType@, and @offset@ are specified via+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer'+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-drawCount-04939# @drawCount@ /must/+--     be less than+--     'PhysicalDeviceMultiDrawPropertiesEXT'::@maxMultiDrawCount@+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-drawCount-04940# If @drawCount@ is+--     greater than zero, @pIndexInfo@ /must/ be a valid pointer to memory+--     containing one or more valid instances of 'MultiDrawIndexedInfoEXT'+--     structures+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-stride-04941# @stride@ must be a+--     multiple of 4+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-parameter#+--     @commandBuffer@ /must/ be a valid+--     'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-pVertexOffset-parameter# If+--     @pVertexOffset@ is not @NULL@, @pVertexOffset@ /must/ be a valid+--     pointer to a valid @int32_t@ value+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-recording#+--     @commandBuffer@ /must/ be in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support graphics operations+--+-- -   #VUID-vkCmdDrawMultiIndexedEXT-renderpass# This command /must/ only+--     be called inside of a render pass instance+--+-- == Host Synchronization+--+-- -   Host access to @commandBuffer@ /must/ be externally synchronized+--+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================++-- | Primary                                                                                                                    | Inside                                                                                                                 | Graphics                                                                                                              |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Vulkan.Core10.Handles.CommandBuffer', 'MultiDrawIndexedInfoEXT'+cmdDrawMultiIndexedEXT :: forall io+                        . (MonadIO io)+                       => -- | @commandBuffer@ is the command buffer into which the command is+                          -- recorded.+                          CommandBuffer+                       -> -- | @pIndexInfo@ is a pointer to an array of 'MultiDrawIndexedInfoEXT' with+                          -- index info to be drawn.+                          ("indexInfo" ::: Vector MultiDrawIndexedInfoEXT)+                       -> -- | @instanceCount@ is the number of instances to draw.+                          ("instanceCount" ::: Word32)+                       -> -- | @firstInstance@ is the instance ID of the first instance to draw.+                          ("firstInstance" ::: Word32)+                       -> -- | @stride@ is the byte stride between consecutive elements of+                          -- @pIndexInfo@.+                          ("stride" ::: Word32)+                       -> -- | @pVertexOffset@ is @NULL@ or a pointer to the value added to the vertex+                          -- index before indexing into the vertex buffer. When specified,+                          -- 'MultiDrawIndexedInfoEXT'::@offset@ is ignored.+                          ("vertexOffset" ::: Maybe Int32)+                       -> io ()+cmdDrawMultiIndexedEXT commandBuffer indexInfo instanceCount firstInstance stride vertexOffset = liftIO . evalContT $ do+  let vkCmdDrawMultiIndexedEXTPtr = pVkCmdDrawMultiIndexedEXT (deviceCmds (commandBuffer :: CommandBuffer))+  lift $ unless (vkCmdDrawMultiIndexedEXTPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDrawMultiIndexedEXT is null" Nothing Nothing+  let vkCmdDrawMultiIndexedEXT' = mkVkCmdDrawMultiIndexedEXT vkCmdDrawMultiIndexedEXTPtr+  pPIndexInfo <- ContT $ allocaBytesAligned @MultiDrawIndexedInfoEXT ((Data.Vector.length (indexInfo)) * 12) 4+  lift $ Data.Vector.imapM_ (\i e -> poke (pPIndexInfo `plusPtr` (12 * (i)) :: Ptr MultiDrawIndexedInfoEXT) (e)) (indexInfo)+  pVertexOffset <- case (vertexOffset) of+    Nothing -> pure nullPtr+    Just j -> ContT $ with (j)+  lift $ traceAroundEvent "vkCmdDrawMultiIndexedEXT" (vkCmdDrawMultiIndexedEXT' (commandBufferHandle (commandBuffer)) ((fromIntegral (Data.Vector.length $ (indexInfo)) :: Word32)) (pPIndexInfo) (instanceCount) (firstInstance) (stride) pVertexOffset)+  pure $ ()+++-- | VkMultiDrawInfoEXT - Structure specifying a multi-draw command+--+-- = Description+--+-- The members of 'MultiDrawInfoEXT' have the same meaning as the+-- @firstVertex@ and @vertexCount@ parameters in+-- 'Vulkan.Core10.CommandBufferBuilding.cmdDraw'.+--+-- = See Also+--+-- 'cmdDrawMultiEXT'+data MultiDrawInfoEXT = MultiDrawInfoEXT+  { -- | @firstVertex@ is the first vertex to draw.+    firstVertex :: Word32+  , -- | @vertexCount@ is the number of vertices to draw.+    vertexCount :: Word32+  }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (MultiDrawInfoEXT)+#endif+deriving instance Show MultiDrawInfoEXT++instance ToCStruct MultiDrawInfoEXT where+  withCStruct x f = allocaBytesAligned 8 4 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p MultiDrawInfoEXT{..} f = do+    poke ((p `plusPtr` 0 :: Ptr Word32)) (firstVertex)+    poke ((p `plusPtr` 4 :: Ptr Word32)) (vertexCount)+    f+  cStructSize = 8+  cStructAlignment = 4+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)+    f++instance FromCStruct MultiDrawInfoEXT where+  peekCStruct p = do+    firstVertex <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+    vertexCount <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))+    pure $ MultiDrawInfoEXT+             firstVertex vertexCount++instance Storable MultiDrawInfoEXT where+  sizeOf ~_ = 8+  alignment ~_ = 4+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero MultiDrawInfoEXT where+  zero = MultiDrawInfoEXT+           zero+           zero+++-- | VkMultiDrawIndexedInfoEXT - Structure specifying a multi-draw command+--+-- = Description+--+-- The @firstIndex@, @indexCount@, and @vertexOffset@ members of+-- 'MultiDrawIndexedInfoEXT' have the same meaning as the @firstIndex@,+-- @indexCount@, and @vertexOffset@ parameters, respectively, of+-- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexed'.+--+-- = See Also+--+-- 'cmdDrawMultiIndexedEXT'+data MultiDrawIndexedInfoEXT = MultiDrawIndexedInfoEXT+  { -- | @firstIndex@ is the first index to draw.+    firstIndex :: Word32+  , -- | @indexCount@ is the number of vertices to draw.+    indexCount :: Word32+  , -- | @vertexOffset@ is the value added to the vertex index before indexing+    -- into the vertex buffer for indexed multidraws.+    vertexOffset :: Int32+  }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (MultiDrawIndexedInfoEXT)+#endif+deriving instance Show MultiDrawIndexedInfoEXT++instance ToCStruct MultiDrawIndexedInfoEXT where+  withCStruct x f = allocaBytesAligned 12 4 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p MultiDrawIndexedInfoEXT{..} f = do+    poke ((p `plusPtr` 0 :: Ptr Word32)) (firstIndex)+    poke ((p `plusPtr` 4 :: Ptr Word32)) (indexCount)+    poke ((p `plusPtr` 8 :: Ptr Int32)) (vertexOffset)+    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 Int32)) (zero)+    f++instance FromCStruct MultiDrawIndexedInfoEXT where+  peekCStruct p = do+    firstIndex <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+    indexCount <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))+    vertexOffset <- peek @Int32 ((p `plusPtr` 8 :: Ptr Int32))+    pure $ MultiDrawIndexedInfoEXT+             firstIndex indexCount vertexOffset++instance Storable MultiDrawIndexedInfoEXT where+  sizeOf ~_ = 12+  alignment ~_ = 4+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero MultiDrawIndexedInfoEXT where+  zero = MultiDrawIndexedInfoEXT+           zero+           zero+           zero+++-- | VkPhysicalDeviceMultiDrawPropertiesEXT - Structure describing multidraw+-- limits of an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceMultiDrawPropertiesEXT' structure+-- describe the following features:+--+-- = Description+--+-- If the @VkPhysicalDeviceMultiDrawPropertiesPropertiesEXT@ 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+--+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceMultiDrawPropertiesEXT = PhysicalDeviceMultiDrawPropertiesEXT+  { -- | #limits-maxMultiDrawCount# @maxMultiDrawCount@ indicates the maximum+    -- number of draw calls which /can/ be batched into a single multidraw.+    maxMultiDrawCount :: Word32 }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (PhysicalDeviceMultiDrawPropertiesEXT)+#endif+deriving instance Show PhysicalDeviceMultiDrawPropertiesEXT++instance ToCStruct PhysicalDeviceMultiDrawPropertiesEXT where+  withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p PhysicalDeviceMultiDrawPropertiesEXT{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxMultiDrawCount)+    f+  cStructSize = 24+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+    f++instance FromCStruct PhysicalDeviceMultiDrawPropertiesEXT where+  peekCStruct p = do+    maxMultiDrawCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+    pure $ PhysicalDeviceMultiDrawPropertiesEXT+             maxMultiDrawCount++instance Storable PhysicalDeviceMultiDrawPropertiesEXT where+  sizeOf ~_ = 24+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceMultiDrawPropertiesEXT where+  zero = PhysicalDeviceMultiDrawPropertiesEXT+           zero+++-- | VkPhysicalDeviceMultiDrawFeaturesEXT - Structure describing whether the+-- implementation supports multi draw functionality+--+-- = Members+--+-- The members of the 'PhysicalDeviceMultiDrawFeaturesEXT' structure+-- describe the following features:+--+-- = Description+--+-- If the 'PhysicalDeviceMultiDrawFeaturesEXT' 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. 'PhysicalDeviceMultiDrawFeaturesEXT' /can/ also be used in+-- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to+-- selectively enable these features.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Vulkan.Core10.FundamentalTypes.Bool32',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceMultiDrawFeaturesEXT = PhysicalDeviceMultiDrawFeaturesEXT+  { -- | #features-multiDraw# @multiDraw@ indicates that the implementation+    -- supports 'cmdDrawMultiEXT' and 'cmdDrawMultiIndexedEXT'.+    multiDraw :: Bool }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (PhysicalDeviceMultiDrawFeaturesEXT)+#endif+deriving instance Show PhysicalDeviceMultiDrawFeaturesEXT++instance ToCStruct PhysicalDeviceMultiDrawFeaturesEXT where+  withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p PhysicalDeviceMultiDrawFeaturesEXT{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (multiDraw))+    f+  cStructSize = 24+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+    f++instance FromCStruct PhysicalDeviceMultiDrawFeaturesEXT where+  peekCStruct p = do+    multiDraw <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+    pure $ PhysicalDeviceMultiDrawFeaturesEXT+             (bool32ToBool multiDraw)++instance Storable PhysicalDeviceMultiDrawFeaturesEXT where+  sizeOf ~_ = 24+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceMultiDrawFeaturesEXT where+  zero = PhysicalDeviceMultiDrawFeaturesEXT+           zero+++type EXT_MULTI_DRAW_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_EXT_MULTI_DRAW_SPEC_VERSION"+pattern EXT_MULTI_DRAW_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_MULTI_DRAW_SPEC_VERSION = 1+++type EXT_MULTI_DRAW_EXTENSION_NAME = "VK_EXT_multi_draw"++-- No documentation found for TopLevel "VK_EXT_MULTI_DRAW_EXTENSION_NAME"+pattern EXT_MULTI_DRAW_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_MULTI_DRAW_EXTENSION_NAME = "VK_EXT_multi_draw"+
+ src/Vulkan/Extensions/VK_EXT_multi_draw.hs-boot view
@@ -0,0 +1,164 @@+{-# language CPP #-}+-- | = Name+--+-- VK_EXT_multi_draw - device extension+--+-- == VK_EXT_multi_draw+--+-- [__Name String__]+--     @VK_EXT_multi_draw@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     393+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Mike Blumenkrantz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_multi_draw:%20&body=@zmike%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2021-05-19+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Mike Blumenkrantz, VALVE+--+--     -   Piers Daniell, NVIDIA+--+--     -   Jason Ekstrand, INTEL+--+--     -   Spencer Fricke, SAMSUNG+--+--     -   Ricardo Garcia, IGALIA+--+--     -   Jon Leech, KHRONOS+--+--     -   Stu Smith, AMD+--+-- == Description+--+-- Processing multiple draw commands in sequence incurs measurable overhead+-- within drivers due to repeated state checks and updates during dispatch.+-- This extension enables passing the entire sequence of draws directly to+-- the driver in order to avoid any such overhead, using an array of+-- 'MultiDrawInfoEXT' or 'MultiDrawIndexedInfoEXT' structs with+-- 'cmdDrawMultiEXT' or 'cmdDrawMultiIndexedEXT', respectively. These+-- functions could be used any time multiple draw commands are being+-- recorded without any state changes between them in order to maximize+-- performance.+--+-- == New Commands+--+-- -   'cmdDrawMultiEXT'+--+-- -   'cmdDrawMultiIndexedEXT'+--+-- == New Structures+--+-- -   'MultiDrawIndexedInfoEXT'+--+-- -   'MultiDrawInfoEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceMultiDrawFeaturesEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceMultiDrawPropertiesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_MULTI_DRAW_EXTENSION_NAME'+--+-- -   'EXT_MULTI_DRAW_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT'+--+-- == New or Modified Built-In Variables+--+-- -   (modified)@DrawIndex@+--+-- == Version History+--+-- -   Version 1, 2021-01-20 (Mike Blumenkrantz)+--+--     -   Initial version+--+-- = See Also+--+-- 'MultiDrawIndexedInfoEXT', 'MultiDrawInfoEXT',+-- 'PhysicalDeviceMultiDrawFeaturesEXT',+-- 'PhysicalDeviceMultiDrawPropertiesEXT', 'cmdDrawMultiEXT',+-- 'cmdDrawMultiIndexedEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_multi_draw 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_multi_draw  ( MultiDrawIndexedInfoEXT+                                            , MultiDrawInfoEXT+                                            , PhysicalDeviceMultiDrawFeaturesEXT+                                            , PhysicalDeviceMultiDrawPropertiesEXT+                                            ) where++import Vulkan.CStruct (FromCStruct)+import Vulkan.CStruct (ToCStruct)+import Data.Kind (Type)++data MultiDrawIndexedInfoEXT++instance ToCStruct MultiDrawIndexedInfoEXT+instance Show MultiDrawIndexedInfoEXT++instance FromCStruct MultiDrawIndexedInfoEXT+++data MultiDrawInfoEXT++instance ToCStruct MultiDrawInfoEXT+instance Show MultiDrawInfoEXT++instance FromCStruct MultiDrawInfoEXT+++data PhysicalDeviceMultiDrawFeaturesEXT++instance ToCStruct PhysicalDeviceMultiDrawFeaturesEXT+instance Show PhysicalDeviceMultiDrawFeaturesEXT++instance FromCStruct PhysicalDeviceMultiDrawFeaturesEXT+++data PhysicalDeviceMultiDrawPropertiesEXT++instance ToCStruct PhysicalDeviceMultiDrawPropertiesEXT+instance Show PhysicalDeviceMultiDrawPropertiesEXT++instance FromCStruct PhysicalDeviceMultiDrawPropertiesEXT+
+ src/Vulkan/Extensions/VK_EXT_physical_device_drm.hs view
@@ -0,0 +1,241 @@+{-# language CPP #-}+-- | = Name+--+-- VK_EXT_physical_device_drm - device extension+--+-- == VK_EXT_physical_device_drm+--+-- [__Name String__]+--     @VK_EXT_physical_device_drm@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     354+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Simon Ser+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_physical_device_drm:%20&body=@emersion%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2021-06-09+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Simon Ser+--+-- == Description+--+-- This extension provides new facilities to query DRM properties for+-- physical devices, enabling users to match Vulkan physical devices with+-- DRM nodes on Linux.+--+-- Its functionality closely overlaps with+-- @EGL_EXT_device_drm@<VK_EXT_physical_device_drm-fn1.html 1>^. Unlike the+-- EGL extension, this extension does not expose a string containing the+-- name of the device file and instead exposes device minor numbers.+--+-- DRM defines multiple device node types. Each physical device may have+-- one primary node and one render node associated. Physical devices may+-- have no primary node (e.g. if the device doesn’t have a display+-- subsystem), may have no render node (e.g. if it’s a software rendering+-- engine), or may have neither (e.g. if it’s a software rendering engine+-- without a display subsystem).+--+-- To query DRM properties for a physical device, chain+-- 'PhysicalDeviceDrmPropertiesEXT' to+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceDrmPropertiesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_PHYSICAL_DEVICE_DRM_EXTENSION_NAME'+--+-- -   'EXT_PHYSICAL_DEVICE_DRM_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT'+--+-- == References+--+-- 1.  #VK_EXT_physical_device_drm-fn1#+--     <https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_device_drm.txt EGL_EXT_device_drm>+--+-- == Version History+--+-- -   Revision 1, 2021-06-09+--+--     -   First stable revision+--+-- = See Also+--+-- 'PhysicalDeviceDrmPropertiesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_physical_device_drm 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_physical_device_drm  ( PhysicalDeviceDrmPropertiesEXT(..)+                                                     , EXT_PHYSICAL_DEVICE_DRM_SPEC_VERSION+                                                     , pattern EXT_PHYSICAL_DEVICE_DRM_SPEC_VERSION+                                                     , EXT_PHYSICAL_DEVICE_DRM_EXTENSION_NAME+                                                     , pattern EXT_PHYSICAL_DEVICE_DRM_EXTENSION_NAME+                                                     ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+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 Data.Int (Int64)+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_DRM_PROPERTIES_EXT))+-- | VkPhysicalDeviceDrmPropertiesEXT - Structure containing DRM information+-- of a physical device+--+-- = Description+--+-- If the 'PhysicalDeviceDrmPropertiesEXT' structure is included in the+-- @pNext@ chain of the+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'+-- structure passed to+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceProperties2',+-- it is filled in with each corresponding implementation-dependent+-- property.+--+-- These are properties of the DRM information of a physical device.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Vulkan.Core10.FundamentalTypes.Bool32',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceDrmPropertiesEXT = PhysicalDeviceDrmPropertiesEXT+  { -- | @hasPrimary@ is a boolean indicating whether the physical device has a+    -- DRM primary node.+    hasPrimary :: Bool+  , -- | @hasRender@ is a boolean indicating whether the physical device has a+    -- DRM render node.+    hasRender :: Bool+  , -- | @primaryMajor@ is the DRM primary node major number, if any.+    primaryMajor :: Int64+  , -- | @primaryMinor@ is the DRM primary node minor number, if any.+    primaryMinor :: Int64+  , -- | @renderMajor@ is the DRM render node major number, if any.+    renderMajor :: Int64+  , -- | @renderMinor@ is the DRM render node minor number, if any.+    renderMinor :: Int64+  }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (PhysicalDeviceDrmPropertiesEXT)+#endif+deriving instance Show PhysicalDeviceDrmPropertiesEXT++instance ToCStruct PhysicalDeviceDrmPropertiesEXT where+  withCStruct x f = allocaBytesAligned 56 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p PhysicalDeviceDrmPropertiesEXT{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (hasPrimary))+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (hasRender))+    poke ((p `plusPtr` 24 :: Ptr Int64)) (primaryMajor)+    poke ((p `plusPtr` 32 :: Ptr Int64)) (primaryMinor)+    poke ((p `plusPtr` 40 :: Ptr Int64)) (renderMajor)+    poke ((p `plusPtr` 48 :: Ptr Int64)) (renderMinor)+    f+  cStructSize = 56+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_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))+    poke ((p `plusPtr` 24 :: Ptr Int64)) (zero)+    poke ((p `plusPtr` 32 :: Ptr Int64)) (zero)+    poke ((p `plusPtr` 40 :: Ptr Int64)) (zero)+    poke ((p `plusPtr` 48 :: Ptr Int64)) (zero)+    f++instance FromCStruct PhysicalDeviceDrmPropertiesEXT where+  peekCStruct p = do+    hasPrimary <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+    hasRender <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+    primaryMajor <- peek @Int64 ((p `plusPtr` 24 :: Ptr Int64))+    primaryMinor <- peek @Int64 ((p `plusPtr` 32 :: Ptr Int64))+    renderMajor <- peek @Int64 ((p `plusPtr` 40 :: Ptr Int64))+    renderMinor <- peek @Int64 ((p `plusPtr` 48 :: Ptr Int64))+    pure $ PhysicalDeviceDrmPropertiesEXT+             (bool32ToBool hasPrimary) (bool32ToBool hasRender) primaryMajor primaryMinor renderMajor renderMinor++instance Storable PhysicalDeviceDrmPropertiesEXT where+  sizeOf ~_ = 56+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceDrmPropertiesEXT where+  zero = PhysicalDeviceDrmPropertiesEXT+           zero+           zero+           zero+           zero+           zero+           zero+++type EXT_PHYSICAL_DEVICE_DRM_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_EXT_PHYSICAL_DEVICE_DRM_SPEC_VERSION"+pattern EXT_PHYSICAL_DEVICE_DRM_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_PHYSICAL_DEVICE_DRM_SPEC_VERSION = 1+++type EXT_PHYSICAL_DEVICE_DRM_EXTENSION_NAME = "VK_EXT_physical_device_drm"++-- No documentation found for TopLevel "VK_EXT_PHYSICAL_DEVICE_DRM_EXTENSION_NAME"+pattern EXT_PHYSICAL_DEVICE_DRM_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_PHYSICAL_DEVICE_DRM_EXTENSION_NAME = "VK_EXT_physical_device_drm"+
+ src/Vulkan/Extensions/VK_EXT_physical_device_drm.hs-boot view
@@ -0,0 +1,116 @@+{-# language CPP #-}+-- | = Name+--+-- VK_EXT_physical_device_drm - device extension+--+-- == VK_EXT_physical_device_drm+--+-- [__Name String__]+--     @VK_EXT_physical_device_drm@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     354+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Simon Ser+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_physical_device_drm:%20&body=@emersion%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2021-06-09+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Simon Ser+--+-- == Description+--+-- This extension provides new facilities to query DRM properties for+-- physical devices, enabling users to match Vulkan physical devices with+-- DRM nodes on Linux.+--+-- Its functionality closely overlaps with+-- @EGL_EXT_device_drm@<VK_EXT_physical_device_drm-fn1.html 1>^. Unlike the+-- EGL extension, this extension does not expose a string containing the+-- name of the device file and instead exposes device minor numbers.+--+-- DRM defines multiple device node types. Each physical device may have+-- one primary node and one render node associated. Physical devices may+-- have no primary node (e.g. if the device doesn’t have a display+-- subsystem), may have no render node (e.g. if it’s a software rendering+-- engine), or may have neither (e.g. if it’s a software rendering engine+-- without a display subsystem).+--+-- To query DRM properties for a physical device, chain+-- 'PhysicalDeviceDrmPropertiesEXT' to+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceDrmPropertiesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_PHYSICAL_DEVICE_DRM_EXTENSION_NAME'+--+-- -   'EXT_PHYSICAL_DEVICE_DRM_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT'+--+-- == References+--+-- 1.  #VK_EXT_physical_device_drm-fn1#+--     <https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_device_drm.txt EGL_EXT_device_drm>+--+-- == Version History+--+-- -   Revision 1, 2021-06-09+--+--     -   First stable revision+--+-- = See Also+--+-- 'PhysicalDeviceDrmPropertiesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_physical_device_drm 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_physical_device_drm  (PhysicalDeviceDrmPropertiesEXT) where++import Vulkan.CStruct (FromCStruct)+import Vulkan.CStruct (ToCStruct)+import Data.Kind (Type)++data PhysicalDeviceDrmPropertiesEXT++instance ToCStruct PhysicalDeviceDrmPropertiesEXT+instance Show PhysicalDeviceDrmPropertiesEXT++instance FromCStruct PhysicalDeviceDrmPropertiesEXT+
src/Vulkan/Extensions/VK_EXT_transform_feedback.hs view
@@ -1934,15 +1934,16 @@     -- @maxTransformFeedbackBufferDataStride@ is the maximum stride between     -- each capture of vertex data to the buffer.     maxTransformFeedbackBufferDataStride :: Word32-  , -- | #limits-transformFeedbackQueries# @transformFeedbackQueries@ is true if-    -- the implementation supports the+  , -- | #limits-transformFeedbackQueries# @transformFeedbackQueries@ is+    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the implementation supports the     -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'     -- query type. @transformFeedbackQueries@ is false if queries of this type     -- /cannot/ be created.     transformFeedbackQueries :: Bool   , -- | #limits-transformFeedbackStreamsLinesTriangles#-    -- @transformFeedbackStreamsLinesTriangles@ is true if the implementation-    -- supports the geometry shader @OpExecutionMode@ of @OutputLineStrip@ and+    -- @transformFeedbackStreamsLinesTriangles@ is+    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the implementation supports the+    -- geometry shader @OpExecutionMode@ of @OutputLineStrip@ and     -- @OutputTriangleStrip@ in addition to @OutputPoints@ when more than one     -- vertex stream is output. If @transformFeedbackStreamsLinesTriangles@ is     -- false the implementation only supports an @OpExecutionMode@ of@@ -1950,15 +1951,17 @@     -- geometry shader.     transformFeedbackStreamsLinesTriangles :: Bool   , -- | #limits-transformFeedbackRasterizationStreamSelect#-    -- @transformFeedbackRasterizationStreamSelect@ is true if the-    -- implementation supports the @GeometryStreams@ SPIR-V capability and the-    -- application can use 'PipelineRasterizationStateStreamCreateInfoEXT' to-    -- modify which vertex stream output is used for rasterization. Otherwise-    -- vertex stream @0@ /must/ always be used for rasterization.+    -- @transformFeedbackRasterizationStreamSelect@ is+    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the implementation supports the+    -- @GeometryStreams@ SPIR-V capability and the application can use+    -- 'PipelineRasterizationStateStreamCreateInfoEXT' to modify which vertex+    -- stream output is used for rasterization. Otherwise vertex stream @0@+    -- /must/ always be used for rasterization.     transformFeedbackRasterizationStreamSelect :: Bool-  , -- | #limits-transformFeedbackDraw# @transformFeedbackDraw@ is true if the-    -- implementation supports the 'cmdDrawIndirectByteCountEXT' function-    -- otherwise the function /must/ not be called.+  , -- | #limits-transformFeedbackDraw# @transformFeedbackDraw@ is+    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the implementation supports the+    -- 'cmdDrawIndirectByteCountEXT' function otherwise the function /must/ not+    -- be called.     transformFeedbackDraw :: Bool   }   deriving (Typeable, Eq)
src/Vulkan/Extensions/VK_KHR_acceleration_structure.hs view
@@ -1189,10 +1189,12 @@                                                                                                , BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR                                                                                                , BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR                                                                                                , BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR+                                                                                               , BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV                                                                                                , ..                                                                                                )                                                         , AccelerationStructureCreateFlagsKHR                                                         , AccelerationStructureCreateFlagBitsKHR( ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR+                                                                                                , ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV                                                                                                 , ..                                                                                                 )                                                         , CopyAccelerationStructureModeKHR( COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR@@ -1244,6 +1246,7 @@ import Data.Bits ((.|.)) import Data.Bits (shiftL) import Data.Bits (shiftR)+import Data.Typeable (eqT) import Foreign.Marshal.Alloc (allocaBytesAligned) import Foreign.Marshal.Alloc (callocBytes) import Foreign.Marshal.Alloc (free)@@ -1278,6 +1281,7 @@ import Data.Bits (Bits) import Data.Bits (FiniteBits) import Data.String (IsString)+import Data.Type.Equality ((:~:)(Refl)) import Data.Typeable (Typeable) import Foreign.C.Types (CChar) import Foreign.C.Types (CFloat)@@ -1307,13 +1311,18 @@ 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 (pokeSomeCStruct) import Vulkan.NamedType ((:::))+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (AccelerationStructureGeometryMotionTrianglesDataNV) import Vulkan.Extensions.Handles (AccelerationStructureKHR) import Vulkan.Extensions.Handles (AccelerationStructureKHR(..))+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (AccelerationStructureMotionInfoNV) import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks) import Vulkan.Core10.FundamentalTypes (Bool32) import Vulkan.Core10.Handles (Buffer)+import Vulkan.CStruct.Extends (Chain) import Vulkan.Core10.Handles (CommandBuffer) import Vulkan.Core10.Handles (CommandBuffer(..)) import Vulkan.Core10.Handles (CommandBuffer_T)@@ -1340,15 +1349,24 @@ import Vulkan.Dynamic (DeviceCmds(pVkWriteAccelerationStructuresPropertiesKHR)) import Vulkan.Core10.FundamentalTypes (DeviceSize) import Vulkan.Core10.Handles (Device_T)+import Vulkan.CStruct.Extends (Extends)+import Vulkan.CStruct.Extends (Extendss)+import Vulkan.CStruct.Extends (Extensible(..)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Core10.Enums.Format (Format) import Vulkan.Core10.Enums.IndexType (IndexType)+import Vulkan.CStruct.Extends (PeekChain)+import Vulkan.CStruct.Extends (PeekChain(..))+import Vulkan.CStruct.Extends (PokeChain)+import Vulkan.CStruct.Extends (PokeChain(..)) import Vulkan.Core10.Handles (QueryPool) import Vulkan.Core10.Handles (QueryPool(..)) import Vulkan.Core10.Enums.QueryType (QueryType) import Vulkan.Core10.Enums.QueryType (QueryType(..)) import Vulkan.Core10.Enums.Result (Result) import Vulkan.Core10.Enums.Result (Result(..))+import Vulkan.CStruct.Extends (SomeStruct)+import Vulkan.CStruct.Extends (SomeStruct(..)) import Vulkan.Core10.Enums.StructureType (StructureType) import Vulkan.Exception (VulkanException(..)) import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR))@@ -2500,7 +2518,7 @@   unsafe #endif   "dynamic" mkVkCreateAccelerationStructureKHR-  :: FunPtr (Ptr Device_T -> Ptr AccelerationStructureCreateInfoKHR -> Ptr AllocationCallbacks -> Ptr AccelerationStructureKHR -> IO Result) -> Ptr Device_T -> Ptr AccelerationStructureCreateInfoKHR -> Ptr AllocationCallbacks -> Ptr AccelerationStructureKHR -> IO Result+  :: FunPtr (Ptr Device_T -> Ptr (SomeStruct AccelerationStructureCreateInfoKHR) -> Ptr AllocationCallbacks -> Ptr AccelerationStructureKHR -> IO Result) -> Ptr Device_T -> Ptr (SomeStruct AccelerationStructureCreateInfoKHR) -> Ptr AllocationCallbacks -> Ptr AccelerationStructureKHR -> IO Result  -- | vkCreateAccelerationStructureKHR - Create a new acceleration structure -- object@@ -2580,15 +2598,15 @@ -- 'Vulkan.Extensions.Handles.AccelerationStructureKHR', -- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks', -- 'Vulkan.Core10.Handles.Device'-createAccelerationStructureKHR :: forall io-                                . (MonadIO io)+createAccelerationStructureKHR :: forall a io+                                . (Extendss AccelerationStructureCreateInfoKHR a, PokeChain a, MonadIO io)                                => -- | @device@ is the logical device that creates the acceleration structure                                   -- object.                                   Device                                -> -- | @pCreateInfo@ is a pointer to a 'AccelerationStructureCreateInfoKHR'                                   -- structure containing parameters affecting creation of the acceleration                                   -- structure.-                                  AccelerationStructureCreateInfoKHR+                                  (AccelerationStructureCreateInfoKHR a)                                -> -- | @pAllocator@ controls host memory allocation as described in the                                   -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>                                   -- chapter.@@ -2604,7 +2622,7 @@     Nothing -> pure nullPtr     Just j -> ContT $ withCStruct (j)   pPAccelerationStructure <- ContT $ bracket (callocBytes @AccelerationStructureKHR 8) free-  r <- lift $ traceAroundEvent "vkCreateAccelerationStructureKHR" (vkCreateAccelerationStructureKHR' (deviceHandle (device)) pCreateInfo pAllocator (pPAccelerationStructure))+  r <- lift $ traceAroundEvent "vkCreateAccelerationStructureKHR" (vkCreateAccelerationStructureKHR' (deviceHandle (device)) (forgetExtensions pCreateInfo) pAllocator (pPAccelerationStructure))   lift $ when (r < SUCCESS) (throwIO (VulkanException r))   pAccelerationStructure <- lift $ peek @AccelerationStructureKHR pPAccelerationStructure   pure $ (pAccelerationStructure)@@ -2617,7 +2635,7 @@ -- favourite resource management library) as the last argument. -- To just extract the pair pass '(,)' as the last argument. ---withAccelerationStructureKHR :: forall io r . MonadIO io => Device -> AccelerationStructureCreateInfoKHR -> Maybe AllocationCallbacks -> (io AccelerationStructureKHR -> (AccelerationStructureKHR -> io ()) -> r) -> r+withAccelerationStructureKHR :: forall a io r . (Extendss AccelerationStructureCreateInfoKHR a, PokeChain a, MonadIO io) => Device -> AccelerationStructureCreateInfoKHR a -> Maybe AllocationCallbacks -> (io AccelerationStructureKHR -> (AccelerationStructureKHR -> io ()) -> r) -> r withAccelerationStructureKHR device pCreateInfo pAllocator b =   b (createAccelerationStructureKHR device pCreateInfo pAllocator)     (\(o0) -> destroyAccelerationStructureKHR device o0 pAllocator)@@ -2667,6 +2685,7 @@ -- 'AccelerationStructureBuildGeometryInfoKHR'::@dstAccelerationStructure@. -- -- Accesses to other input buffers as identified by any used values of+-- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureGeometryMotionTrianglesDataNV'::@vertexData@, -- 'AccelerationStructureGeometryTrianglesDataKHR'::@vertexData@, -- 'AccelerationStructureGeometryTrianglesDataKHR'::@indexData@, -- 'AccelerationStructureGeometryTrianglesDataKHR'::@transformData@,@@ -4249,6 +4268,15 @@ --     value in @geometry.instances.data.hostAddress@ must be a valid --     'Vulkan.Extensions.Handles.AccelerationStructureKHR' object --+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-04930# For any element+--     of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@ with a+--     @geometryType@ of 'GEOMETRY_TYPE_INSTANCES_KHR' with+--     'BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV' set, each+--     @accelerationStructureReference@ in any structure in+--     'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMotionInstanceNV'+--     value in @geometry.instances.data.hostAddress@ must be a valid+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' object+-- -- == Valid Usage (Implicit) -- -- -   #VUID-vkBuildAccelerationStructuresKHR-device-parameter# @device@@@ -4925,8 +4953,51 @@ -- @vertexStride@ for acceleration structure geometry is instead restricted -- to being a 32-bit value. --+-- == Valid Usage+--+-- -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexStride-03735#+--     @vertexStride@ /must/ be a multiple of the size in bytes of the+--     smallest component of @vertexFormat@+--+-- -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexStride-03819#+--     @vertexStride@ /must/ be less than or equal to 232-1+--+-- -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexFormat-03797#+--     @vertexFormat@ /must/ support the+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR'+--     in+--     'Vulkan.Core10.DeviceInitialization.FormatProperties'::@bufferFeatures@+--     as returned by+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2'+--+-- -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-indexType-03798#+--     @indexType@ /must/ be+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT16',+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT32', or+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR'+-- -- == Valid Usage (Implicit) --+-- -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-sType-sType#+--     @sType@ /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR'+--+-- -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-pNext-pNext#+--     @pNext@ /must/ be @NULL@ or a pointer to a valid instance of+--     'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureGeometryMotionTrianglesDataNV'+--+-- -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-sType-unique#+--     The @sType@ value of each struct in the @pNext@ chain /must/ be+--     unique+--+-- -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexFormat-parameter#+--     @vertexFormat@ /must/ be a valid 'Vulkan.Core10.Enums.Format.Format'+--     value+--+-- -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-indexType-parameter#+--     @indexType@ /must/ be a valid+--     'Vulkan.Core10.Enums.IndexType.IndexType' value+-- -- = See Also -- -- 'AccelerationStructureGeometryDataKHR', 'DeviceOrHostAddressConstKHR',@@ -4934,48 +5005,22 @@ -- 'Vulkan.Core10.Enums.Format.Format', -- 'Vulkan.Core10.Enums.IndexType.IndexType', -- 'Vulkan.Core10.Enums.StructureType.StructureType'-data AccelerationStructureGeometryTrianglesDataKHR = AccelerationStructureGeometryTrianglesDataKHR-  { -- | @vertexFormat@ is the 'Vulkan.Core10.Enums.Format.Format' of each vertex+data AccelerationStructureGeometryTrianglesDataKHR (es :: [Type]) = AccelerationStructureGeometryTrianglesDataKHR+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.+    next :: Chain es+  , -- | @vertexFormat@ is the 'Vulkan.Core10.Enums.Format.Format' of each vertex     -- element.-    ---    -- #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexFormat-03797#-    -- @vertexFormat@ /must/ support the-    -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR'-    -- in-    -- 'Vulkan.Core10.DeviceInitialization.FormatProperties'::@bufferFeatures@-    -- as returned by-    -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2'-    ---    -- #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexFormat-parameter#-    -- @vertexFormat@ /must/ be a valid 'Vulkan.Core10.Enums.Format.Format'-    -- value     vertexFormat :: Format   , -- | @vertexData@ is a device or host address to memory containing vertex     -- data for this geometry.     vertexData :: DeviceOrHostAddressConstKHR   , -- | @vertexStride@ is the stride in bytes between each vertex.-    ---    -- #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexStride-03735#-    -- @vertexStride@ /must/ be a multiple of the size in bytes of the smallest-    -- component of @vertexFormat@-    ---    -- #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexStride-03819#-    -- @vertexStride@ /must/ be less than or equal to 232-1     vertexStride :: DeviceSize   , -- | @maxVertex@ is the highest index of a vertex that will be addressed by a     -- build command using this structure.     maxVertex :: Word32   , -- | @indexType@ is the 'Vulkan.Core10.Enums.IndexType.IndexType' of each     -- index element.-    ---    -- #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-indexType-03798#-    -- @indexType@ /must/ be 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT16',-    -- 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT32', or-    -- 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR'-    ---    -- #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-indexType-parameter#-    -- @indexType@ /must/ be a valid 'Vulkan.Core10.Enums.IndexType.IndexType'-    -- value     indexType :: IndexType   , -- | @indexData@ is a device or host address to memory containing index data     -- for this geometry.@@ -4987,15 +5032,25 @@   }   deriving (Typeable) #if defined(GENERIC_INSTANCES)-deriving instance Generic (AccelerationStructureGeometryTrianglesDataKHR)+deriving instance Generic (AccelerationStructureGeometryTrianglesDataKHR (es :: [Type])) #endif-deriving instance Show AccelerationStructureGeometryTrianglesDataKHR+deriving instance Show (Chain es) => Show (AccelerationStructureGeometryTrianglesDataKHR es) -instance ToCStruct AccelerationStructureGeometryTrianglesDataKHR where+instance Extensible AccelerationStructureGeometryTrianglesDataKHR where+  extensibleTypeName = "AccelerationStructureGeometryTrianglesDataKHR"+  setNext x next = x{next = next}+  getNext AccelerationStructureGeometryTrianglesDataKHR{..} = next+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends AccelerationStructureGeometryTrianglesDataKHR e => b) -> Maybe b+  extends _ f+    | Just Refl <- eqT @e @AccelerationStructureGeometryMotionTrianglesDataNV = Just f+    | otherwise = Nothing++instance (Extendss AccelerationStructureGeometryTrianglesDataKHR es, PokeChain es) => ToCStruct (AccelerationStructureGeometryTrianglesDataKHR es) where   withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)   pokeCStruct p AccelerationStructureGeometryTrianglesDataKHR{..} f = evalContT $ do     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    pNext'' <- fmap castPtr . ContT $ withChain (next)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''     lift $ poke ((p `plusPtr` 16 :: Ptr Format)) (vertexFormat)     ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressConstKHR)) (vertexData) . ($ ())     lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (vertexStride)@@ -5008,7 +5063,8 @@   cStructAlignment = 8   pokeZeroCStruct p f = evalContT $ do     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    pNext' <- fmap castPtr . ContT $ withZeroChain @es+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'     lift $ poke ((p `plusPtr` 16 :: Ptr Format)) (zero)     ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())     lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)@@ -5018,8 +5074,9 @@     ContT $ pokeCStruct ((p `plusPtr` 56 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())     lift $ f -instance Zero AccelerationStructureGeometryTrianglesDataKHR where+instance es ~ '[] => Zero (AccelerationStructureGeometryTrianglesDataKHR es) where   zero = AccelerationStructureGeometryTrianglesDataKHR+           ()            zero            zero            zero@@ -5099,9 +5156,16 @@     -- addresses or just an array.     arrayOfPointers :: Bool   , -- | @data@ is either the address of an array of device or host addresses-    -- referencing individual 'AccelerationStructureInstanceKHR' structures if-    -- @arrayOfPointers@ is 'Vulkan.Core10.FundamentalTypes.TRUE', or the-    -- address of an array of 'AccelerationStructureInstanceKHR' structures.+    -- referencing individual 'AccelerationStructureInstanceKHR' structures or+    -- packed motion instance information as described in+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-motion-instances motion instances>+    -- if @arrayOfPointers@ is 'Vulkan.Core10.FundamentalTypes.TRUE', or the+    -- address of an array of 'AccelerationStructureInstanceKHR' or+    -- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMotionInstanceNV'+    -- structures. Addresses and 'AccelerationStructureInstanceKHR' structures+    -- are tightly packed.+    -- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMotionInstanceNV'+    -- have a stride of 160 bytes.     data' :: DeviceOrHostAddressConstKHR   }   deriving (Typeable)@@ -5232,6 +5296,30 @@ -- The geometry index is available to ray queries via the -- @OpRayQueryGetIntersectionGeometryIndexKHR@ instruction. --+-- Setting 'BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV' in @flags@+-- indicates that this build is a motion top level acceleration structure.+-- A motion top level uses instances of format+-- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMotionInstanceNV'+-- if 'AccelerationStructureGeometryInstancesDataKHR'::@arrayOfPointers@ is+-- 'Vulkan.Core10.FundamentalTypes.FALSE'.+--+-- If 'AccelerationStructureGeometryInstancesDataKHR'::@arrayOfPointers@ is+-- 'Vulkan.Core10.FundamentalTypes.TRUE', the pointer for any given element+-- of the array of instance pointers consists of 4 bits of+-- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMotionInstanceTypeNV'+-- in the low 4 bits of the pointer identifying the type of structure at+-- the pointer. The device address accessed is the value in the array with+-- the low 4 bits set to zero. The structure at the pointer is one of+-- 'AccelerationStructureInstanceKHR',+-- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMatrixMotionInstanceNV'+-- or+-- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureSRTMotionInstanceNV',+-- depending on the type value encoded in the low 4 bits.+--+-- A top level acceleration structure with either motion instances or+-- vertex motion in its instances /must/ set+-- 'BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV' in @flags@.+-- -- == Valid Usage -- -- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03654# @type@@@ -5285,6 +5373,23 @@ --     then it /must/ not have the --     'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR' bit set --+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-dstAccelerationStructure-04927#+--     If @dstAccelerationStructure@ was created with+--     'ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV' set in+--     'AccelerationStructureCreateInfoKHR'::@flags@,+--     'BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV' /must/ be set in+--     @flags@+--+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-flags-04928# If+--     'BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV' is set in @flags@,+--     @dstAccelerationStructure@ /must/ have been created with+--     'ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV' set in+--     'AccelerationStructureCreateInfoKHR'::@flags@+--+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-flags-04929# If+--     'BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV' is set in @flags@,+--     @type@ /must/ not be 'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR'+-- -- == Valid Usage (Implicit) -- -- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-sType-sType#@@ -5437,8 +5542,9 @@ -- -- -   For geometries of type 'GEOMETRY_TYPE_INSTANCES_KHR', --     @primitiveCount@ is the number of acceleration structures.---     @primitiveCount@ 'AccelerationStructureInstanceKHR' structures are---     consumed from+--     @primitiveCount@ 'AccelerationStructureInstanceKHR' or+--     'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMotionInstanceNV'+--     structures are consumed from --     'AccelerationStructureGeometryInstancesDataKHR'::@data@, starting at --     an offset of @primitiveOffset@. --@@ -5591,6 +5697,13 @@ -- 'writeAccelerationStructuresPropertiesKHR' /can/ be used to obtain the -- compacted size required. --+-- If the acceleration structure will be the target of a build operation+-- with 'BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV' it /must/ include+-- 'ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV' in @flags@ and include+-- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMotionInfoNV'+-- as an extension structure in @pNext@ with the number of instances as+-- metadata for the object.+-- -- == Valid Usage -- -- -   #VUID-VkAccelerationStructureCreateInfoKHR-deviceAddress-03612# If@@ -5617,6 +5730,18 @@ -- -   #VUID-VkAccelerationStructureCreateInfoKHR-offset-03734# @offset@ --     /must/ be a multiple of @256@ bytes --+-- -   #VUID-VkAccelerationStructureCreateInfoKHR-flags-04954# If+--     'ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV' is set in @flags@ and+--     @type@ is 'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR', one member of+--     the @pNext@ chain /must/ be a pointer to a valid instance of+--     'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMotionInfoNV'+--+-- -   #VUID-VkAccelerationStructureCreateInfoKHR-flags-04955# If any+--     geometry includes+--     'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureGeometryMotionTrianglesDataNV'+--     then @flags@ /must/ contain+--     'ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV'+-- -- == Valid Usage (Implicit) -- -- -   #VUID-VkAccelerationStructureCreateInfoKHR-sType-sType# @sType@@@ -5624,8 +5749,12 @@ --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR' -- -- -   #VUID-VkAccelerationStructureCreateInfoKHR-pNext-pNext# @pNext@---     /must/ be @NULL@+--     /must/ be @NULL@ or a pointer to a valid instance of+--     'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMotionInfoNV' --+-- -   #VUID-VkAccelerationStructureCreateInfoKHR-sType-unique# The @sType@+--     value of each struct in the @pNext@ chain /must/ be unique+-- -- -   #VUID-VkAccelerationStructureCreateInfoKHR-createFlags-parameter# --     @createFlags@ /must/ be a valid combination of --     'AccelerationStructureCreateFlagBitsKHR' values@@ -5644,8 +5773,10 @@ -- 'Vulkan.Core10.FundamentalTypes.DeviceSize', -- 'Vulkan.Core10.Enums.StructureType.StructureType', -- 'createAccelerationStructureKHR'-data AccelerationStructureCreateInfoKHR = AccelerationStructureCreateInfoKHR-  { -- | @createFlags@ is a bitmask of 'AccelerationStructureCreateFlagBitsKHR'+data AccelerationStructureCreateInfoKHR (es :: [Type]) = AccelerationStructureCreateInfoKHR+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.+    next :: Chain es+  , -- | @createFlags@ is a bitmask of 'AccelerationStructureCreateFlagBitsKHR'     -- specifying additional creation parameters of the acceleration structure.     createFlags :: AccelerationStructureCreateFlagsKHR   , -- | @buffer@ is the buffer on which the acceleration structure will be@@ -5666,37 +5797,50 @@     -- feature is being used.     deviceAddress :: DeviceAddress   }-  deriving (Typeable, Eq)+  deriving (Typeable) #if defined(GENERIC_INSTANCES)-deriving instance Generic (AccelerationStructureCreateInfoKHR)+deriving instance Generic (AccelerationStructureCreateInfoKHR (es :: [Type])) #endif-deriving instance Show AccelerationStructureCreateInfoKHR+deriving instance Show (Chain es) => Show (AccelerationStructureCreateInfoKHR es) -instance ToCStruct AccelerationStructureCreateInfoKHR where+instance Extensible AccelerationStructureCreateInfoKHR where+  extensibleTypeName = "AccelerationStructureCreateInfoKHR"+  setNext x next = x{next = next}+  getNext AccelerationStructureCreateInfoKHR{..} = next+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends AccelerationStructureCreateInfoKHR e => b) -> Maybe b+  extends _ f+    | Just Refl <- eqT @e @AccelerationStructureMotionInfoNV = Just f+    | otherwise = Nothing++instance (Extendss AccelerationStructureCreateInfoKHR es, PokeChain es) => ToCStruct (AccelerationStructureCreateInfoKHR es) where   withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p AccelerationStructureCreateInfoKHR{..} f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr AccelerationStructureCreateFlagsKHR)) (createFlags)-    poke ((p `plusPtr` 24 :: Ptr Buffer)) (buffer)-    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (offset)-    poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (size)-    poke ((p `plusPtr` 48 :: Ptr AccelerationStructureTypeKHR)) (type')-    poke ((p `plusPtr` 56 :: Ptr DeviceAddress)) (deviceAddress)-    f+  pokeCStruct p AccelerationStructureCreateInfoKHR{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR)+    pNext'' <- fmap castPtr . ContT $ withChain (next)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureCreateFlagsKHR)) (createFlags)+    lift $ poke ((p `plusPtr` 24 :: Ptr Buffer)) (buffer)+    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (offset)+    lift $ poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (size)+    lift $ poke ((p `plusPtr` 48 :: Ptr AccelerationStructureTypeKHR)) (type')+    lift $ poke ((p `plusPtr` 56 :: Ptr DeviceAddress)) (deviceAddress)+    lift $ f   cStructSize = 64   cStructAlignment = 8-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 24 :: Ptr Buffer)) (zero)-    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)-    poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (zero)-    poke ((p `plusPtr` 48 :: Ptr AccelerationStructureTypeKHR)) (zero)-    f+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR)+    pNext' <- fmap castPtr . ContT $ withZeroChain @es+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+    lift $ poke ((p `plusPtr` 24 :: Ptr Buffer)) (zero)+    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)+    lift $ poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (zero)+    lift $ poke ((p `plusPtr` 48 :: Ptr AccelerationStructureTypeKHR)) (zero)+    lift $ f -instance FromCStruct AccelerationStructureCreateInfoKHR where+instance (Extendss AccelerationStructureCreateInfoKHR es, PeekChain es) => FromCStruct (AccelerationStructureCreateInfoKHR es) where   peekCStruct p = do+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+    next <- peekChain (castPtr pNext)     createFlags <- peek @AccelerationStructureCreateFlagsKHR ((p `plusPtr` 16 :: Ptr AccelerationStructureCreateFlagsKHR))     buffer <- peek @Buffer ((p `plusPtr` 24 :: Ptr Buffer))     offset <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))@@ -5704,16 +5848,11 @@     type' <- peek @AccelerationStructureTypeKHR ((p `plusPtr` 48 :: Ptr AccelerationStructureTypeKHR))     deviceAddress <- peek @DeviceAddress ((p `plusPtr` 56 :: Ptr DeviceAddress))     pure $ AccelerationStructureCreateInfoKHR-             createFlags buffer offset size type' deviceAddress--instance Storable AccelerationStructureCreateInfoKHR where-  sizeOf ~_ = 64-  alignment ~_ = 8-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())+             next createFlags buffer offset size type' deviceAddress -instance Zero AccelerationStructureCreateInfoKHR where+instance es ~ '[] => Zero (AccelerationStructureCreateInfoKHR es) where   zero = AccelerationStructureCreateInfoKHR+           ()            zero            zero            zero@@ -5817,7 +5956,8 @@ -- -- = See Also ----- 'AccelerationStructureInstanceKHR'+-- 'AccelerationStructureInstanceKHR',+-- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMatrixMotionInstanceNV' data TransformMatrixKHR = TransformMatrixKHR   { -- No documentation found for Nested "VkTransformMatrixKHR" "matrixRow0"     matrixRow0 :: (Float, Float, Float, Float)@@ -5916,6 +6056,7 @@ -- -- = See Also --+-- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMotionInstanceDataNV', -- 'GeometryInstanceFlagsKHR', 'TransformMatrixKHR' data AccelerationStructureInstanceKHR = AccelerationStructureInstanceKHR   { -- | @transform@ is a 'TransformMatrixKHR' structure describing a@@ -6513,7 +6654,7 @@   data AccelerationStructureGeometryDataKHR-  = Triangles AccelerationStructureGeometryTrianglesDataKHR+  = Triangles (SomeStruct AccelerationStructureGeometryTrianglesDataKHR)   | Aabbs AccelerationStructureGeometryAabbsDataKHR   | Instances AccelerationStructureGeometryInstancesDataKHR   deriving (Show)@@ -6522,7 +6663,7 @@   withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)   pokeCStruct :: Ptr AccelerationStructureGeometryDataKHR -> AccelerationStructureGeometryDataKHR -> IO a -> IO a   pokeCStruct p = (. const) . runContT .  \case-    Triangles v -> ContT $ pokeCStruct (castPtr @_ @AccelerationStructureGeometryTrianglesDataKHR p) (v) . ($ ())+    Triangles v -> ContT $ pokeSomeCStruct (forgetExtensions (castPtr @_ @(AccelerationStructureGeometryTrianglesDataKHR _) p)) (v) . ($ ())     Aabbs v -> ContT $ pokeCStruct (castPtr @_ @AccelerationStructureGeometryAabbsDataKHR p) (v) . ($ ())     Instances v -> ContT $ pokeCStruct (castPtr @_ @AccelerationStructureGeometryInstancesDataKHR p) (v) . ($ ())   pokeZeroCStruct :: Ptr AccelerationStructureGeometryDataKHR -> IO b -> IO b@@ -6531,7 +6672,7 @@   cStructAlignment = 8  instance Zero AccelerationStructureGeometryDataKHR where-  zero = Triangles zero+  zero = Triangles (SomeStruct zero)   type GeometryInstanceFlagsKHR = GeometryInstanceFlagBitsKHR@@ -6689,6 +6830,8 @@ -- and the final result acceleration structure, potentially at the expense -- of build time or trace performance. pattern BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR        = BuildAccelerationStructureFlagBitsKHR 0x00000010+-- No documentation found for Nested "VkBuildAccelerationStructureFlagBitsKHR" "VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV"+pattern BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV             = BuildAccelerationStructureFlagBitsKHR 0x00000020  conNameBuildAccelerationStructureFlagBitsKHR :: String conNameBuildAccelerationStructureFlagBitsKHR = "BuildAccelerationStructureFlagBitsKHR"@@ -6703,6 +6846,7 @@   , (BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR, "PREFER_FAST_TRACE_BIT_KHR")   , (BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR, "PREFER_FAST_BUILD_BIT_KHR")   , (BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR       , "LOW_MEMORY_BIT_KHR")+  , (BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV            , "MOTION_BIT_NV")   ]  instance Show BuildAccelerationStructureFlagBitsKHR where@@ -6735,17 +6879,20 @@ -- reused on a subsequent run. pattern ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR =   AccelerationStructureCreateFlagBitsKHR 0x00000001+-- No documentation found for Nested "VkAccelerationStructureCreateFlagBitsKHR" "VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV"+pattern ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = AccelerationStructureCreateFlagBitsKHR 0x00000004  conNameAccelerationStructureCreateFlagBitsKHR :: String conNameAccelerationStructureCreateFlagBitsKHR = "AccelerationStructureCreateFlagBitsKHR"  enumPrefixAccelerationStructureCreateFlagBitsKHR :: String-enumPrefixAccelerationStructureCreateFlagBitsKHR =-  "ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR"+enumPrefixAccelerationStructureCreateFlagBitsKHR = "ACCELERATION_STRUCTURE_CREATE_"  showTableAccelerationStructureCreateFlagBitsKHR :: [(AccelerationStructureCreateFlagBitsKHR, String)] showTableAccelerationStructureCreateFlagBitsKHR =-  [(ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR, "")]+  [ (ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR, "DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR")+  , (ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV                        , "MOTION_BIT_NV")+  ]  instance Show AccelerationStructureCreateFlagBitsKHR where   showsPrec = enumShowsPrec enumPrefixAccelerationStructureCreateFlagBitsKHR
src/Vulkan/Extensions/VK_KHR_acceleration_structure.hs-boot view
@@ -1167,7 +1167,10 @@ import Vulkan.CStruct (FromCStruct) import Vulkan.CStruct (ToCStruct) import Data.Kind (Type)-+import {-# SOURCE #-} Vulkan.CStruct.Extends (Chain)+import {-# SOURCE #-} Vulkan.CStruct.Extends (Extendss)+import {-# SOURCE #-} Vulkan.CStruct.Extends (PeekChain)+import {-# SOURCE #-} Vulkan.CStruct.Extends (PokeChain) data AabbPositionsKHR  instance ToCStruct AabbPositionsKHR@@ -1198,12 +1201,13 @@ instance FromCStruct AccelerationStructureBuildSizesInfoKHR  -data AccelerationStructureCreateInfoKHR+type role AccelerationStructureCreateInfoKHR nominal+data AccelerationStructureCreateInfoKHR (es :: [Type]) -instance ToCStruct AccelerationStructureCreateInfoKHR-instance Show AccelerationStructureCreateInfoKHR+instance (Extendss AccelerationStructureCreateInfoKHR es, PokeChain es) => ToCStruct (AccelerationStructureCreateInfoKHR es)+instance Show (Chain es) => Show (AccelerationStructureCreateInfoKHR es) -instance FromCStruct AccelerationStructureCreateInfoKHR+instance (Extendss AccelerationStructureCreateInfoKHR es, PeekChain es) => FromCStruct (AccelerationStructureCreateInfoKHR es)   data AccelerationStructureDeviceAddressInfoKHR@@ -1232,10 +1236,11 @@ instance Show AccelerationStructureGeometryKHR  -data AccelerationStructureGeometryTrianglesDataKHR+type role AccelerationStructureGeometryTrianglesDataKHR nominal+data AccelerationStructureGeometryTrianglesDataKHR (es :: [Type]) -instance ToCStruct AccelerationStructureGeometryTrianglesDataKHR-instance Show AccelerationStructureGeometryTrianglesDataKHR+instance (Extendss AccelerationStructureGeometryTrianglesDataKHR es, PokeChain es) => ToCStruct (AccelerationStructureGeometryTrianglesDataKHR es)+instance Show (Chain es) => Show (AccelerationStructureGeometryTrianglesDataKHR es)   data AccelerationStructureInstanceKHR
src/Vulkan/Extensions/VK_KHR_ray_tracing_pipeline.hs view
@@ -2160,6 +2160,12 @@ --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipelineTraceRaysIndirect ::rayTracingPipelineTraceRaysIndirect> --     feature /must/ be enabled --+-- -   #VUID-vkCmdTraceRaysIndirectKHR-rayTracingMotionBlurPipelineTraceRaysIndirect-04951#+--     If the bound ray tracing pipeline was created with+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV'+--     'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.PhysicalDeviceRayTracingMotionBlurFeaturesNV'::@rayTracingMotionBlurPipelineTraceRaysIndirect@+--     feature /must/ be enabled+-- -- == Valid Usage (Implicit) -- -- -   #VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-parameter#
src/Vulkan/Extensions/VK_KHR_synchronization2.hs view
@@ -880,7 +880,7 @@ --     feature is not enabled, @stageMask@ /must/ not contain --     'PIPELINE_STAGE_2_TASK_SHADER_BIT_NV' ----- -   #VUID-vkCmdResetEvent2KHR-stageMask-03936# If the+-- -   #VUID-vkCmdResetEvent2KHR-stageMask-04956# If the --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image> --     feature is not enabled, @stageMask@ /must/ not contain --     'PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV'@@ -1651,13 +1651,13 @@ -- at any specific stage of the pipeline, it /may/ instead do so at any -- logically later stage. ----- Timestamps /may/ only be meaningfully compared if they are written by--- commands submitted to the same queue.+-- Comparisons between timestamps are not meaningful if the timestamps are+-- written by commands submitted to different queues. -- -- Note ----- An example of such a comparison is determining the execution time of a--- sequence of commands.+-- An example of such a comparison is subtracting an older timestamp from a+-- newer one to determine the execution time of a sequence of commands. -- -- If 'cmdWriteTimestamp2KHR' is called while executing a render pass -- instance that has multiview enabled, the timestamp uses N consecutive@@ -1719,7 +1719,7 @@ --     feature is not enabled, @stage@ /must/ not contain --     'PIPELINE_STAGE_2_TASK_SHADER_BIT_NV' ----- -   #VUID-vkCmdWriteTimestamp2KHR-stage-03936# If the+-- -   #VUID-vkCmdWriteTimestamp2KHR-stage-04956# If the --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image> --     feature is not enabled, @stage@ /must/ not contain --     'PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV'@@ -1909,7 +1909,7 @@ --     feature is not enabled, @stage@ /must/ not contain --     'PIPELINE_STAGE_2_TASK_SHADER_BIT_NV' ----- -   #VUID-vkCmdWriteBufferMarker2AMD-stage-03936# If the+-- -   #VUID-vkCmdWriteBufferMarker2AMD-stage-04956# If the --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image> --     feature is not enabled, @stage@ /must/ not contain --     'PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV'@@ -2171,7 +2171,7 @@ --     feature is not enabled, @srcStageMask@ /must/ not contain --     'PIPELINE_STAGE_2_TASK_SHADER_BIT_NV' ----- -   #VUID-VkMemoryBarrier2KHR-srcStageMask-03936# If the+-- -   #VUID-VkMemoryBarrier2KHR-srcStageMask-04956# If the --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image> --     feature is not enabled, @srcStageMask@ /must/ not contain --     'PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV'@@ -2400,7 +2400,7 @@ --     feature is not enabled, @dstStageMask@ /must/ not contain --     'PIPELINE_STAGE_2_TASK_SHADER_BIT_NV' ----- -   #VUID-VkMemoryBarrier2KHR-dstStageMask-03936# If the+-- -   #VUID-VkMemoryBarrier2KHR-dstStageMask-04956# If the --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image> --     feature is not enabled, @dstStageMask@ /must/ not contain --     'PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV'@@ -2796,7 +2796,7 @@ --     feature is not enabled, @srcStageMask@ /must/ not contain --     'PIPELINE_STAGE_2_TASK_SHADER_BIT_NV' ----- -   #VUID-VkImageMemoryBarrier2KHR-srcStageMask-03936# If the+-- -   #VUID-VkImageMemoryBarrier2KHR-srcStageMask-04956# If the --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image> --     feature is not enabled, @srcStageMask@ /must/ not contain --     'PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV'@@ -3043,7 +3043,7 @@ --     feature is not enabled, @dstStageMask@ /must/ not contain --     'PIPELINE_STAGE_2_TASK_SHADER_BIT_NV' ----- -   #VUID-VkImageMemoryBarrier2KHR-dstStageMask-03936# If the+-- -   #VUID-VkImageMemoryBarrier2KHR-dstStageMask-04956# If the --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image> --     feature is not enabled, @dstStageMask@ /must/ not contain --     'PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV'@@ -3798,7 +3798,7 @@ --     feature is not enabled, @srcStageMask@ /must/ not contain --     'PIPELINE_STAGE_2_TASK_SHADER_BIT_NV' ----- -   #VUID-VkBufferMemoryBarrier2KHR-srcStageMask-03936# If the+-- -   #VUID-VkBufferMemoryBarrier2KHR-srcStageMask-04956# If the --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image> --     feature is not enabled, @srcStageMask@ /must/ not contain --     'PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV'@@ -4045,7 +4045,7 @@ --     feature is not enabled, @dstStageMask@ /must/ not contain --     'PIPELINE_STAGE_2_TASK_SHADER_BIT_NV' ----- -   #VUID-VkBufferMemoryBarrier2KHR-dstStageMask-03936# If the+-- -   #VUID-VkBufferMemoryBarrier2KHR-dstStageMask-04956# If the --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image> --     feature is not enabled, @dstStageMask@ /must/ not contain --     'PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV'@@ -4598,7 +4598,7 @@ --     feature is not enabled, @stageMask@ /must/ not contain --     'PIPELINE_STAGE_2_TASK_SHADER_BIT_NV' ----- -   #VUID-VkSemaphoreSubmitInfoKHR-stageMask-03936# If the+-- -   #VUID-VkSemaphoreSubmitInfoKHR-stageMask-04956# If the --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image> --     feature is not enabled, @stageMask@ /must/ not contain --     'PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV'
src/Vulkan/Extensions/VK_NV_ray_tracing.hs view
@@ -2651,6 +2651,10 @@ --     not include --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR' --+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-04948# @flags@ /must/+--     not include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV'+-- -- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-02957# @flags@ /must/ --     not include both --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEFER_COMPILE_BIT_NV'
+ src/Vulkan/Extensions/VK_NV_ray_tracing_motion_blur.hs view
@@ -0,0 +1,1152 @@+{-# language CPP #-}+-- | = Name+--+-- VK_NV_ray_tracing_motion_blur - device extension+--+-- == VK_NV_ray_tracing_motion_blur+--+-- [__Name String__]+--     @VK_NV_ray_tracing_motion_blur@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     328+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_ray_tracing_pipeline@+--+-- [__Contact__]+--+--     -   Eric Werness+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2021-06-16+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_ray_tracing_motion_blur.html SPV_NV_ray_tracing_motion_blur>+--+--     -   This extension provides API support for+--         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/nv/GLSL_NV_ray_tracing_motion_blur.txt GL_NV_ray_tracing_motion_blur>+--+-- [__Contributors__]+--+--     -   Eric Werness, NVIDIA+--+--     -   Ashwin Lele, NVIDIA+--+-- == Description+--+-- Ray tracing support in the API provides an efficient mechanism to+-- intersect rays against static geometry, but rendering algorithms often+-- want to support motion, which is more efficiently supported with+-- motion-specific algorithms. This extension adds a set of mechanisms to+-- support fast tracing of moving geometry:+--+-- -   A ray pipeline trace call which takes a time parameter+--+-- -   Flags to enable motion support in an acceleration structure+--+-- -   Support for time-varying vertex positions in a geometry+--+-- -   Motion instances to move existing instances over time+--+-- The motion represented here is parameterized across a normalized+-- timestep between 0.0 and 1.0. A motion trace using OpTraceRaysMotionNV+-- provides a time within that normalized range to be used when+-- intersecting that ray with geometry. The geometry can be provided with+-- motion by a combination of adding a second vertex position for time of+-- 1.0 using 'AccelerationStructureGeometryMotionTrianglesDataNV' and+-- providing multiple transforms in the instance using+-- 'AccelerationStructureMotionInstanceNV'.+--+-- == New Structures+--+-- -   'AccelerationStructureMatrixMotionInstanceNV'+--+-- -   'AccelerationStructureMotionInstanceNV'+--+-- -   'AccelerationStructureSRTMotionInstanceNV'+--+-- -   'SRTDataNV'+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureCreateInfoKHR':+--+--     -   'AccelerationStructureMotionInfoNV'+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryTrianglesDataKHR':+--+--     -   'AccelerationStructureGeometryMotionTrianglesDataNV'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceRayTracingMotionBlurFeaturesNV'+--+-- == New Unions+--+-- -   'AccelerationStructureMotionInstanceDataNV'+--+-- == New Enums+--+-- -   'AccelerationStructureMotionInstanceTypeNV'+--+-- == New Bitmasks+--+-- -   'AccelerationStructureMotionInfoFlagsNV'+--+-- -   'AccelerationStructureMotionInstanceFlagsNV'+--+-- == New Enum Constants+--+-- -   'NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME'+--+-- -   'NV_RAY_TRACING_MOTION_BLUR_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureCreateFlagBitsKHR':+--+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV'+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.BuildAccelerationStructureFlagBitsKHR':+--+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV'+--+-- == Issues+--+-- (1) What size is VkAccelerationStructureMotionInstanceNV?+--+-- -   Added a note on the structure size and made the stride explicit in+--     the language.+--+-- (2) Allow arrayOfPointers for motion TLAS?+--+-- -   Yes, with a packed encoding to minimize the amount of data sent for+--     metadata.+--+-- == Version History+--+-- -   Revision 1, 2020-06-16 (Eric Werness, Ashwin Lele)+--+--     -   Initial external release+--+-- = See Also+--+-- 'AccelerationStructureGeometryMotionTrianglesDataNV',+-- 'AccelerationStructureMatrixMotionInstanceNV',+-- 'AccelerationStructureMotionInfoFlagsNV',+-- 'AccelerationStructureMotionInfoNV',+-- 'AccelerationStructureMotionInstanceDataNV',+-- 'AccelerationStructureMotionInstanceFlagsNV',+-- 'AccelerationStructureMotionInstanceNV',+-- 'AccelerationStructureMotionInstanceTypeNV',+-- 'AccelerationStructureSRTMotionInstanceNV',+-- 'PhysicalDeviceRayTracingMotionBlurFeaturesNV', 'SRTDataNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing_motion_blur Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly.+module Vulkan.Extensions.VK_NV_ray_tracing_motion_blur  ( PhysicalDeviceRayTracingMotionBlurFeaturesNV(..)+                                                        , AccelerationStructureGeometryMotionTrianglesDataNV(..)+                                                        , AccelerationStructureMotionInfoNV(..)+                                                        , SRTDataNV(..)+                                                        , AccelerationStructureSRTMotionInstanceNV(..)+                                                        , AccelerationStructureMatrixMotionInstanceNV(..)+                                                        , AccelerationStructureMotionInstanceNV(..)+                                                        , AccelerationStructureMotionInstanceDataNV(..)+                                                        , AccelerationStructureMotionInfoFlagsNV(..)+                                                        , AccelerationStructureMotionInstanceFlagsNV(..)+                                                        , AccelerationStructureMotionInstanceTypeNV( ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV+                                                                                                   , ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV+                                                                                                   , ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV+                                                                                                   , ..+                                                                                                   )+                                                        , NV_RAY_TRACING_MOTION_BLUR_SPEC_VERSION+                                                        , pattern NV_RAY_TRACING_MOTION_BLUR_SPEC_VERSION+                                                        , NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME+                                                        , pattern NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME+                                                        , TransformMatrixKHR(..)+                                                        , AccelerationStructureInstanceKHR(..)+                                                        , DeviceOrHostAddressConstKHR(..)+                                                        , GeometryInstanceFlagBitsKHR(..)+                                                        , GeometryInstanceFlagsKHR+                                                        , BuildAccelerationStructureFlagBitsKHR(..)+                                                        , BuildAccelerationStructureFlagsKHR+                                                        , AccelerationStructureCreateFlagBitsKHR(..)+                                                        , AccelerationStructureCreateFlagsKHR+                                                        ) where++import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec)+import Control.Exception.Base (bracket)+import Data.Bits ((.&.))+import Data.Bits ((.|.))+import Data.Bits (shiftL)+import Data.Bits (shiftR)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Ptr (castPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Numeric (showHex)+import Data.Coerce (coerce)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Control.Monad.Trans.Cont (runContT)+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.C.Types (CFloat)+import Foreign.C.Types (CFloat(..))+import Foreign.C.Types (CFloat(CFloat))+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import GHC.Generics (Generic)+import Data.Int (Int32)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec))+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.Extensions.VK_KHR_acceleration_structure (AccelerationStructureInstanceKHR)+import Vulkan.Core10.FundamentalTypes (Bool32)+import Vulkan.Extensions.VK_KHR_acceleration_structure (DeviceOrHostAddressConstKHR)+import Vulkan.Core10.FundamentalTypes (Flags)+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagsKHR)+import Vulkan.Core10.Enums.StructureType (StructureType)+import Vulkan.Extensions.VK_KHR_acceleration_structure (TransformMatrixKHR)+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV))+import Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureCreateFlagBitsKHR(..))+import Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureCreateFlagsKHR)+import Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureInstanceKHR(..))+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagBitsKHR(..))+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagsKHR)+import Vulkan.Extensions.VK_KHR_acceleration_structure (DeviceOrHostAddressConstKHR(..))+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagBitsKHR(..))+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagsKHR)+import Vulkan.Extensions.VK_KHR_acceleration_structure (TransformMatrixKHR(..))+-- | VkPhysicalDeviceRayTracingMotionBlurFeaturesNV - Structure describing+-- the ray tracing motion blur features that can be supported by an+-- implementation+--+-- = Members+--+-- This structure describes the following feature: * @sType@ is the type of+-- this structure. * @pNext@ is @NULL@ or a pointer to a structure+-- extending this structure. * #features-rayTracingMotionBlur#+-- @rayTracingMotionBlur@ indicates whether the implementation supports the+-- motion blur feature. *+-- #features-rayTracingMotionBlurPipelineTraceRaysIndirect#+-- @rayTracingMotionBlurPipelineTraceRaysIndirect@ indicates whether the+-- implementation supports indirect trace ray commands with the motion blur+-- feature enabled.+--+-- = Description+--+-- If the 'PhysicalDeviceRayTracingMotionBlurFeaturesNV' 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. 'PhysicalDeviceRayTracingMotionBlurFeaturesNV' /can/ also be+-- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to+-- selectively enable these features.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Vulkan.Core10.FundamentalTypes.Bool32',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceRayTracingMotionBlurFeaturesNV = PhysicalDeviceRayTracingMotionBlurFeaturesNV+  { -- No documentation found for Nested "VkPhysicalDeviceRayTracingMotionBlurFeaturesNV" "rayTracingMotionBlur"+    rayTracingMotionBlur :: Bool+  , -- No documentation found for Nested "VkPhysicalDeviceRayTracingMotionBlurFeaturesNV" "rayTracingMotionBlurPipelineTraceRaysIndirect"+    rayTracingMotionBlurPipelineTraceRaysIndirect :: Bool+  }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (PhysicalDeviceRayTracingMotionBlurFeaturesNV)+#endif+deriving instance Show PhysicalDeviceRayTracingMotionBlurFeaturesNV++instance ToCStruct PhysicalDeviceRayTracingMotionBlurFeaturesNV where+  withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p PhysicalDeviceRayTracingMotionBlurFeaturesNV{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (rayTracingMotionBlur))+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (rayTracingMotionBlurPipelineTraceRaysIndirect))+    f+  cStructSize = 24+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV)+    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 PhysicalDeviceRayTracingMotionBlurFeaturesNV where+  peekCStruct p = do+    rayTracingMotionBlur <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+    rayTracingMotionBlurPipelineTraceRaysIndirect <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+    pure $ PhysicalDeviceRayTracingMotionBlurFeaturesNV+             (bool32ToBool rayTracingMotionBlur) (bool32ToBool rayTracingMotionBlurPipelineTraceRaysIndirect)++instance Storable PhysicalDeviceRayTracingMotionBlurFeaturesNV where+  sizeOf ~_ = 24+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceRayTracingMotionBlurFeaturesNV where+  zero = PhysicalDeviceRayTracingMotionBlurFeaturesNV+           zero+           zero+++-- | VkAccelerationStructureGeometryMotionTrianglesDataNV - Structure+-- specifying vertex motion in a bottom-level acceleration structure+--+-- = Description+--+-- If 'AccelerationStructureGeometryMotionTrianglesDataNV' is present in a+-- geometry, the basic vertex positions are used for the position of the+-- triangles in the geometry at time 0.0 and the @vertexData@ in+-- 'AccelerationStructureGeometryMotionTrianglesDataNV' is used for the+-- vertex positions at time 1.0, with positions linearly interpolated at+-- intermediate times.+--+-- Indexing for 'AccelerationStructureGeometryMotionTrianglesDataNV'+-- @vertexData@ is equivalent to the basic vertex position data.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data AccelerationStructureGeometryMotionTrianglesDataNV = AccelerationStructureGeometryMotionTrianglesDataNV+  { -- | @vertexData@ is a pointer to vertex data for this geometry at time 1.0+    vertexData :: DeviceOrHostAddressConstKHR }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (AccelerationStructureGeometryMotionTrianglesDataNV)+#endif+deriving instance Show AccelerationStructureGeometryMotionTrianglesDataNV++instance ToCStruct AccelerationStructureGeometryMotionTrianglesDataNV where+  withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p AccelerationStructureGeometryMotionTrianglesDataNV{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DeviceOrHostAddressConstKHR)) (vertexData) . ($ ())+    lift $ f+  cStructSize = 24+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())+    lift $ f++instance Zero AccelerationStructureGeometryMotionTrianglesDataNV where+  zero = AccelerationStructureGeometryMotionTrianglesDataNV+           zero+++-- | VkAccelerationStructureMotionInfoNV - Structure specifying the+-- parameters of a newly created acceleration structure object+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'AccelerationStructureMotionInfoFlagsNV',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data AccelerationStructureMotionInfoNV = AccelerationStructureMotionInfoNV+  { -- | @maxInstances@ is the maximum number of instances that /may/ be used in+    -- the motion top-level acceleration structure.+    maxInstances :: Word32+  , -- | @flags@ is 0 and reserved for future use.+    --+    -- #VUID-VkAccelerationStructureMotionInfoNV-flags-zerobitmask# @flags@+    -- /must/ be @0@+    flags :: AccelerationStructureMotionInfoFlagsNV+  }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (AccelerationStructureMotionInfoNV)+#endif+deriving instance Show AccelerationStructureMotionInfoNV++instance ToCStruct AccelerationStructureMotionInfoNV where+  withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p AccelerationStructureMotionInfoNV{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxInstances)+    poke ((p `plusPtr` 20 :: Ptr AccelerationStructureMotionInfoFlagsNV)) (flags)+    f+  cStructSize = 24+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+    f++instance FromCStruct AccelerationStructureMotionInfoNV where+  peekCStruct p = do+    maxInstances <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+    flags <- peek @AccelerationStructureMotionInfoFlagsNV ((p `plusPtr` 20 :: Ptr AccelerationStructureMotionInfoFlagsNV))+    pure $ AccelerationStructureMotionInfoNV+             maxInstances flags++instance Storable AccelerationStructureMotionInfoNV where+  sizeOf ~_ = 24+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero AccelerationStructureMotionInfoNV where+  zero = AccelerationStructureMotionInfoNV+           zero+           zero+++-- | VkSRTDataNV - Structure specifying a transform in SRT decomposition+--+-- = Description+--+-- This transform decomposition consists of three elements. The first is a+-- matrix S, consisting of a scale, shear, and translation, usually used to+-- define the pivot point of the following rotation. This matrix is+-- constructed from the parameters above by:+--+-- \[S =+-- \left(+--     \begin{matrix}+--         sx & a  & b  & pvx \\+--         0  & sy & c  & pvy \\+--         0  & 0  & sz & pvz+--     \end{matrix}+-- \right)\]+--+-- The rotation quaternion is defined as:+--+-- -   @R@ = [ @qx@, @qy@, @qz@, @qw@ ]+--+-- This is a rotation around a conceptual normalized axis [ ax, ay, az ] of+-- amount @theta@ such that:+--+-- -   [ @qx@, @qy@, @qz@ ] = sin(@theta@\/2) × [ @ax@, @ay@, @az@ ]+--+-- and+--+-- -   @qw@ = cos(@theta@\/2)+--+-- Finally, the transform has a translation T constructed from the+-- parameters above by:+--+-- \[T =+-- \left(+--     \begin{matrix}+--         1 & 0 & 0 & tx \\+--         0 & 1 & 0 & ty \\+--         0 & 0 & 1 & tz+--     \end{matrix}+-- \right)\]+--+-- The effective derived transform is then given by+--+-- -   @T@ × @R@ × @S@+--+-- = See Also+--+-- 'AccelerationStructureSRTMotionInstanceNV'+data SRTDataNV = SRTDataNV+  { -- | @sx@ is the x component of the scale of the transform+    sx :: Float+  , -- | @a@ is one component of the shear for the transform+    a :: Float+  , -- | @b@ is one component of the shear for the transform+    b :: Float+  , -- | @pvx@ is the x component of the pivot point of the transform+    pvx :: Float+  , -- | @sy@ is the y component of the scale of the transform+    sy :: Float+  , -- | @c@ is one component of the shear for the transform+    c :: Float+  , -- | @pvy@ is the y component of the pivot point of the transform+    pvy :: Float+  , -- | @sz@ is the z component of the scale of the transform+    sz :: Float+  , -- | @pvz@ is the z component of the pivot point of the transform+    pvz :: Float+  , -- | @qx@ is the x component of the rotation quaternion+    qx :: Float+  , -- | @qy@ is the y component of the rotation quaternion+    qy :: Float+  , -- | @qz@ is the z component of the rotation quaternion+    qz :: Float+  , -- | @qw@ is the w component of the rotation quaternion+    qw :: Float+  , -- | @tx@ is the x component of the post-rotation translation+    tx :: Float+  , -- | @ty@ is the y component of the post-rotation translation+    ty :: Float+  , -- | @tz@ is the z component of the post-rotation translation+    tz :: Float+  }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (SRTDataNV)+#endif+deriving instance Show SRTDataNV++instance ToCStruct SRTDataNV where+  withCStruct x f = allocaBytesAligned 64 4 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p SRTDataNV{..} f = do+    poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (sx))+    poke ((p `plusPtr` 4 :: Ptr CFloat)) (CFloat (a))+    poke ((p `plusPtr` 8 :: Ptr CFloat)) (CFloat (b))+    poke ((p `plusPtr` 12 :: Ptr CFloat)) (CFloat (pvx))+    poke ((p `plusPtr` 16 :: Ptr CFloat)) (CFloat (sy))+    poke ((p `plusPtr` 20 :: Ptr CFloat)) (CFloat (c))+    poke ((p `plusPtr` 24 :: Ptr CFloat)) (CFloat (pvy))+    poke ((p `plusPtr` 28 :: Ptr CFloat)) (CFloat (sz))+    poke ((p `plusPtr` 32 :: Ptr CFloat)) (CFloat (pvz))+    poke ((p `plusPtr` 36 :: Ptr CFloat)) (CFloat (qx))+    poke ((p `plusPtr` 40 :: Ptr CFloat)) (CFloat (qy))+    poke ((p `plusPtr` 44 :: Ptr CFloat)) (CFloat (qz))+    poke ((p `plusPtr` 48 :: Ptr CFloat)) (CFloat (qw))+    poke ((p `plusPtr` 52 :: Ptr CFloat)) (CFloat (tx))+    poke ((p `plusPtr` 56 :: Ptr CFloat)) (CFloat (ty))+    poke ((p `plusPtr` 60 :: Ptr CFloat)) (CFloat (tz))+    f+  cStructSize = 64+  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))+    poke ((p `plusPtr` 24 :: Ptr CFloat)) (CFloat (zero))+    poke ((p `plusPtr` 28 :: Ptr CFloat)) (CFloat (zero))+    poke ((p `plusPtr` 32 :: Ptr CFloat)) (CFloat (zero))+    poke ((p `plusPtr` 36 :: Ptr CFloat)) (CFloat (zero))+    poke ((p `plusPtr` 40 :: Ptr CFloat)) (CFloat (zero))+    poke ((p `plusPtr` 44 :: Ptr CFloat)) (CFloat (zero))+    poke ((p `plusPtr` 48 :: Ptr CFloat)) (CFloat (zero))+    poke ((p `plusPtr` 52 :: Ptr CFloat)) (CFloat (zero))+    poke ((p `plusPtr` 56 :: Ptr CFloat)) (CFloat (zero))+    poke ((p `plusPtr` 60 :: Ptr CFloat)) (CFloat (zero))+    f++instance FromCStruct SRTDataNV where+  peekCStruct p = do+    sx <- peek @CFloat ((p `plusPtr` 0 :: Ptr CFloat))+    a <- peek @CFloat ((p `plusPtr` 4 :: Ptr CFloat))+    b <- peek @CFloat ((p `plusPtr` 8 :: Ptr CFloat))+    pvx <- peek @CFloat ((p `plusPtr` 12 :: Ptr CFloat))+    sy <- peek @CFloat ((p `plusPtr` 16 :: Ptr CFloat))+    c <- peek @CFloat ((p `plusPtr` 20 :: Ptr CFloat))+    pvy <- peek @CFloat ((p `plusPtr` 24 :: Ptr CFloat))+    sz <- peek @CFloat ((p `plusPtr` 28 :: Ptr CFloat))+    pvz <- peek @CFloat ((p `plusPtr` 32 :: Ptr CFloat))+    qx <- peek @CFloat ((p `plusPtr` 36 :: Ptr CFloat))+    qy <- peek @CFloat ((p `plusPtr` 40 :: Ptr CFloat))+    qz <- peek @CFloat ((p `plusPtr` 44 :: Ptr CFloat))+    qw <- peek @CFloat ((p `plusPtr` 48 :: Ptr CFloat))+    tx <- peek @CFloat ((p `plusPtr` 52 :: Ptr CFloat))+    ty <- peek @CFloat ((p `plusPtr` 56 :: Ptr CFloat))+    tz <- peek @CFloat ((p `plusPtr` 60 :: Ptr CFloat))+    pure $ SRTDataNV+             (coerce @CFloat @Float sx) (coerce @CFloat @Float a) (coerce @CFloat @Float b) (coerce @CFloat @Float pvx) (coerce @CFloat @Float sy) (coerce @CFloat @Float c) (coerce @CFloat @Float pvy) (coerce @CFloat @Float sz) (coerce @CFloat @Float pvz) (coerce @CFloat @Float qx) (coerce @CFloat @Float qy) (coerce @CFloat @Float qz) (coerce @CFloat @Float qw) (coerce @CFloat @Float tx) (coerce @CFloat @Float ty) (coerce @CFloat @Float tz)++instance Storable SRTDataNV where+  sizeOf ~_ = 64+  alignment ~_ = 4+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero SRTDataNV where+  zero = SRTDataNV+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+++-- | VkAccelerationStructureSRTMotionInstanceNV - Structure specifying a+-- single acceleration structure SRT motion instance for building into an+-- acceleration structure geometry+--+-- = Description+--+-- The C language spec does not define the ordering of bit-fields, but in+-- practice, this struct produces the correct layout with existing+-- compilers. The intended bit pattern is for the following:+--+-- If a compiler produces code that diverges from that pattern,+-- applications /must/ employ another method to set values according to the+-- correct bit pattern.+--+-- The transform for a SRT motion instance at a point in time is derived+-- from component-wise linear interpolation of the two SRT transforms. That+-- is, for a @time@ in [0,1] the resulting transform is+--+-- -   @transformT0@ × (1 - @time@) + @transformT1@ × @time@+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'AccelerationStructureMotionInstanceDataNV',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryInstanceFlagsKHR',+-- 'SRTDataNV'+data AccelerationStructureSRTMotionInstanceNV = AccelerationStructureSRTMotionInstanceNV+  { -- | @transformT0@ is a 'SRTDataNV' structure describing a transformation to+    -- be applied to the acceleration structure at time 0.+    transformT0 :: SRTDataNV+  , -- | @transformT1@ is a 'SRTDataNV' structure describing a transformation to+    -- be applied to the acceleration structure at time 1.+    transformT1 :: SRTDataNV+  , -- | @instanceCustomIndex@ is a 24-bit user-specified index value accessible+    -- to ray shaders in the @InstanceCustomIndexKHR@ built-in.+    --+    -- @instanceCustomIndex@ and @mask@ occupy the same memory as if a single+    -- @uint32_t@ was specified in their place+    --+    -- -   @instanceCustomIndex@ occupies the 24 least significant bits of that+    --     memory+    --+    -- -   @mask@ occupies the 8 most significant bits of that memory+    instanceCustomIndex :: Word32+  , -- | @mask@ is an 8-bit visibility mask for the geometry. The instance /may/+    -- only be hit if @rayMask & instance.mask != 0@+    mask :: Word32+  , -- | @instanceShaderBindingTableRecordOffset@ is a 24-bit offset used in+    -- calculating the hit shader binding table index.+    --+    -- @instanceShaderBindingTableRecordOffset@ and @flags@ occupy the same+    -- memory as if a single @uint32_t@ was specified in their place+    --+    -- -   @instanceShaderBindingTableRecordOffset@ occupies the 24 least+    --     significant bits of that memory+    --+    -- -   @flags@ occupies the 8 most significant bits of that memory+    instanceShaderBindingTableRecordOffset :: Word32+  , -- | @flags@ is an 8-bit mask of+    -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryInstanceFlagBitsKHR'+    -- values to apply to this instance.+    --+    -- #VUID-VkAccelerationStructureSRTMotionInstanceNV-flags-parameter#+    -- @flags@ /must/ be a valid combination of+    -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryInstanceFlagBitsKHR'+    -- values+    flags :: GeometryInstanceFlagsKHR+  , -- | @accelerationStructureReference@ is either:+    --+    -- -   a device address containing the value obtained from+    --     'Vulkan.Extensions.VK_KHR_acceleration_structure.getAccelerationStructureDeviceAddressKHR'+    --     or+    --     'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'+    --     (used by device operations which reference acceleration structures)+    --     or,+    --+    -- -   a 'Vulkan.Extensions.Handles.AccelerationStructureKHR' object (used+    --     by host operations which reference acceleration structures).+    accelerationStructureReference :: Word64+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (AccelerationStructureSRTMotionInstanceNV)+#endif+deriving instance Show AccelerationStructureSRTMotionInstanceNV++instance ToCStruct AccelerationStructureSRTMotionInstanceNV where+  withCStruct x f = allocaBytesAligned 144 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p AccelerationStructureSRTMotionInstanceNV{..} f = do+    poke ((p `plusPtr` 0 :: Ptr SRTDataNV)) (transformT0)+    poke ((p `plusPtr` 64 :: Ptr SRTDataNV)) (transformT1)+    poke ((p `plusPtr` 128 :: Ptr Word32)) (((coerce @_ @Word32 (mask)) `shiftL` 24) .|. (instanceCustomIndex))+    poke ((p `plusPtr` 132 :: Ptr Word32)) (((coerce @_ @Word32 (flags)) `shiftL` 24) .|. (instanceShaderBindingTableRecordOffset))+    poke ((p `plusPtr` 136 :: Ptr Word64)) (accelerationStructureReference)+    f+  cStructSize = 144+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr SRTDataNV)) (zero)+    poke ((p `plusPtr` 64 :: Ptr SRTDataNV)) (zero)+    poke ((p `plusPtr` 136 :: Ptr Word64)) (zero)+    f++instance FromCStruct AccelerationStructureSRTMotionInstanceNV where+  peekCStruct p = do+    transformT0 <- peekCStruct @SRTDataNV ((p `plusPtr` 0 :: Ptr SRTDataNV))+    transformT1 <- peekCStruct @SRTDataNV ((p `plusPtr` 64 :: Ptr SRTDataNV))+    instanceCustomIndex <- peek @Word32 ((p `plusPtr` 128 :: Ptr Word32))+    let instanceCustomIndex' = ((instanceCustomIndex .&. coerce @Word32 0xffffff))+    mask <- peek @Word32 ((p `plusPtr` 128 :: Ptr Word32))+    let mask' = ((((mask `shiftR` 24)) .&. coerce @Word32 0xff))+    instanceShaderBindingTableRecordOffset <- peek @Word32 ((p `plusPtr` 132 :: Ptr Word32))+    let instanceShaderBindingTableRecordOffset' = ((instanceShaderBindingTableRecordOffset .&. coerce @Word32 0xffffff))+    flags <- peek @GeometryInstanceFlagsKHR ((p `plusPtr` 132 :: Ptr GeometryInstanceFlagsKHR))+    let flags' = ((((flags `shiftR` 24)) .&. coerce @Word32 0xff))+    accelerationStructureReference <- peek @Word64 ((p `plusPtr` 136 :: Ptr Word64))+    pure $ AccelerationStructureSRTMotionInstanceNV+             transformT0 transformT1 instanceCustomIndex' mask' instanceShaderBindingTableRecordOffset' flags' accelerationStructureReference++instance Storable AccelerationStructureSRTMotionInstanceNV where+  sizeOf ~_ = 144+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero AccelerationStructureSRTMotionInstanceNV where+  zero = AccelerationStructureSRTMotionInstanceNV+           zero+           zero+           zero+           zero+           zero+           zero+           zero+++-- | VkAccelerationStructureMatrixMotionInstanceNV - Structure specifying a+-- single acceleration structure matrix motion instance for building into+-- an acceleration structure geometry+--+-- = Description+--+-- The C language spec does not define the ordering of bit-fields, but in+-- practice, this struct produces the correct layout with existing+-- compilers. The intended bit pattern is for the following:+--+-- If a compiler produces code that diverges from that pattern,+-- applications /must/ employ another method to set values according to the+-- correct bit pattern.+--+-- The transform for a matrix motion instance at a point in time is derived+-- by component-wise linear interpolation of the two transforms. That is,+-- for a @time@ in [0,1] the resulting transform is+--+-- -   @transformT0@ × (1 - @time@) + @transformT1@ × @time@+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'AccelerationStructureMotionInstanceDataNV',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryInstanceFlagsKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.TransformMatrixKHR'+data AccelerationStructureMatrixMotionInstanceNV = AccelerationStructureMatrixMotionInstanceNV+  { -- | @transformT0@ is a+    -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.TransformMatrixKHR'+    -- structure describing a transformation to be applied to the acceleration+    -- structure at time 0.+    transformT0 :: TransformMatrixKHR+  , -- | @transformT1@ is a+    -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.TransformMatrixKHR'+    -- structure describing a transformation to be applied to the acceleration+    -- structure at time 1.+    transformT1 :: TransformMatrixKHR+  , -- | @instanceCustomIndex@ is a 24-bit user-specified index value accessible+    -- to ray shaders in the @InstanceCustomIndexKHR@ built-in.+    --+    -- @instanceCustomIndex@ and @mask@ occupy the same memory as if a single+    -- @uint32_t@ was specified in their place+    --+    -- -   @instanceCustomIndex@ occupies the 24 least significant bits of that+    --     memory+    --+    -- -   @mask@ occupies the 8 most significant bits of that memory+    instanceCustomIndex :: Word32+  , -- | @mask@ is an 8-bit visibility mask for the geometry. The instance /may/+    -- only be hit if @rayMask & instance.mask != 0@+    mask :: Word32+  , -- | @instanceShaderBindingTableRecordOffset@ is a 24-bit offset used in+    -- calculating the hit shader binding table index.+    --+    -- @instanceShaderBindingTableRecordOffset@ and @flags@ occupy the same+    -- memory as if a single @uint32_t@ was specified in their place+    --+    -- -   @instanceShaderBindingTableRecordOffset@ occupies the 24 least+    --     significant bits of that memory+    --+    -- -   @flags@ occupies the 8 most significant bits of that memory+    instanceShaderBindingTableRecordOffset :: Word32+  , -- | @flags@ is an 8-bit mask of+    -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryInstanceFlagBitsKHR'+    -- values to apply to this instance.+    --+    -- #VUID-VkAccelerationStructureMatrixMotionInstanceNV-flags-parameter#+    -- @flags@ /must/ be a valid combination of+    -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryInstanceFlagBitsKHR'+    -- values+    flags :: GeometryInstanceFlagsKHR+  , -- | @accelerationStructureReference@ is either:+    --+    -- -   a device address containing the value obtained from+    --     'Vulkan.Extensions.VK_KHR_acceleration_structure.getAccelerationStructureDeviceAddressKHR'+    --     or+    --     'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'+    --     (used by device operations which reference acceleration structures)+    --     or,+    --+    -- -   a 'Vulkan.Extensions.Handles.AccelerationStructureKHR' object (used+    --     by host operations which reference acceleration structures).+    accelerationStructureReference :: Word64+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (AccelerationStructureMatrixMotionInstanceNV)+#endif+deriving instance Show AccelerationStructureMatrixMotionInstanceNV++instance ToCStruct AccelerationStructureMatrixMotionInstanceNV where+  withCStruct x f = allocaBytesAligned 112 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p AccelerationStructureMatrixMotionInstanceNV{..} f = do+    poke ((p `plusPtr` 0 :: Ptr TransformMatrixKHR)) (transformT0)+    poke ((p `plusPtr` 48 :: Ptr TransformMatrixKHR)) (transformT1)+    poke ((p `plusPtr` 96 :: Ptr Word32)) (((coerce @_ @Word32 (mask)) `shiftL` 24) .|. (instanceCustomIndex))+    poke ((p `plusPtr` 100 :: Ptr Word32)) (((coerce @_ @Word32 (flags)) `shiftL` 24) .|. (instanceShaderBindingTableRecordOffset))+    poke ((p `plusPtr` 104 :: Ptr Word64)) (accelerationStructureReference)+    f+  cStructSize = 112+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr TransformMatrixKHR)) (zero)+    poke ((p `plusPtr` 48 :: Ptr TransformMatrixKHR)) (zero)+    poke ((p `plusPtr` 104 :: Ptr Word64)) (zero)+    f++instance FromCStruct AccelerationStructureMatrixMotionInstanceNV where+  peekCStruct p = do+    transformT0 <- peekCStruct @TransformMatrixKHR ((p `plusPtr` 0 :: Ptr TransformMatrixKHR))+    transformT1 <- peekCStruct @TransformMatrixKHR ((p `plusPtr` 48 :: Ptr TransformMatrixKHR))+    instanceCustomIndex <- peek @Word32 ((p `plusPtr` 96 :: Ptr Word32))+    let instanceCustomIndex' = ((instanceCustomIndex .&. coerce @Word32 0xffffff))+    mask <- peek @Word32 ((p `plusPtr` 96 :: Ptr Word32))+    let mask' = ((((mask `shiftR` 24)) .&. coerce @Word32 0xff))+    instanceShaderBindingTableRecordOffset <- peek @Word32 ((p `plusPtr` 100 :: Ptr Word32))+    let instanceShaderBindingTableRecordOffset' = ((instanceShaderBindingTableRecordOffset .&. coerce @Word32 0xffffff))+    flags <- peek @GeometryInstanceFlagsKHR ((p `plusPtr` 100 :: Ptr GeometryInstanceFlagsKHR))+    let flags' = ((((flags `shiftR` 24)) .&. coerce @Word32 0xff))+    accelerationStructureReference <- peek @Word64 ((p `plusPtr` 104 :: Ptr Word64))+    pure $ AccelerationStructureMatrixMotionInstanceNV+             transformT0 transformT1 instanceCustomIndex' mask' instanceShaderBindingTableRecordOffset' flags' accelerationStructureReference++instance Storable AccelerationStructureMatrixMotionInstanceNV where+  sizeOf ~_ = 112+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero AccelerationStructureMatrixMotionInstanceNV where+  zero = AccelerationStructureMatrixMotionInstanceNV+           zero+           zero+           zero+           zero+           zero+           zero+           zero+++-- | VkAccelerationStructureMotionInstanceNV - Structure specifying a single+-- acceleration structure motion instance for building into an acceleration+-- structure geometry+--+-- = Description+--+-- Note+--+-- If writing this other than with a standard C compiler, note that the+-- final structure should be 152 bytes in size.+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkAccelerationStructureMotionInstanceNV-type-parameter# @type@+--     /must/ be a valid 'AccelerationStructureMotionInstanceTypeNV' value+--+-- -   #VUID-VkAccelerationStructureMotionInstanceNV-flags-zerobitmask#+--     @flags@ /must/ be @0@+--+-- -   #VUID-VkAccelerationStructureMotionInstanceNV-staticInstance-parameter#+--     If @type@ is+--     'ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV', the+--     @staticInstance@ member of @data@ /must/ be a valid+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureInstanceKHR'+--     structure+--+-- -   #VUID-VkAccelerationStructureMotionInstanceNV-matrixMotionInstance-parameter#+--     If @type@ is+--     'ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV', the+--     @matrixMotionInstance@ member of @data@ /must/ be a valid+--     'AccelerationStructureMatrixMotionInstanceNV' structure+--+-- -   #VUID-VkAccelerationStructureMotionInstanceNV-srtMotionInstance-parameter#+--     If @type@ is+--     'ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV', the+--     @srtMotionInstance@ member of @data@ /must/ be a valid+--     'AccelerationStructureSRTMotionInstanceNV' structure+--+-- = See Also+--+-- 'AccelerationStructureMotionInstanceDataNV',+-- 'AccelerationStructureMotionInstanceFlagsNV',+-- 'AccelerationStructureMotionInstanceTypeNV'+data AccelerationStructureMotionInstanceNV = AccelerationStructureMotionInstanceNV+  { -- | @type@ is a 'AccelerationStructureMotionInstanceTypeNV' enumerant+    -- identifying which type of motion instance this is and which type of the+    -- union is valid.+    type' :: AccelerationStructureMotionInstanceTypeNV+  , -- | @flags@ is currently unused, but is required to keep natural alignment+    -- of @data@.+    flags :: AccelerationStructureMotionInstanceFlagsNV+  , -- | @data@ is a 'AccelerationStructureMotionInstanceDataNV' containing+    -- motion instance data for this instance.+    data' :: AccelerationStructureMotionInstanceDataNV+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (AccelerationStructureMotionInstanceNV)+#endif+deriving instance Show AccelerationStructureMotionInstanceNV++instance ToCStruct AccelerationStructureMotionInstanceNV where+  withCStruct x f = allocaBytesAligned 152 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p AccelerationStructureMotionInstanceNV{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr AccelerationStructureMotionInstanceTypeNV)) (type')+    lift $ poke ((p `plusPtr` 4 :: Ptr AccelerationStructureMotionInstanceFlagsNV)) (flags)+    ContT $ pokeCStruct ((p `plusPtr` 8 :: Ptr AccelerationStructureMotionInstanceDataNV)) (data') . ($ ())+    lift $ f+  cStructSize = 152+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr AccelerationStructureMotionInstanceTypeNV)) (zero)+    ContT $ pokeCStruct ((p `plusPtr` 8 :: Ptr AccelerationStructureMotionInstanceDataNV)) (zero) . ($ ())+    lift $ f++instance Zero AccelerationStructureMotionInstanceNV where+  zero = AccelerationStructureMotionInstanceNV+           zero+           zero+           zero+++data AccelerationStructureMotionInstanceDataNV+  = StaticInstance AccelerationStructureInstanceKHR+  | MatrixMotionInstance AccelerationStructureMatrixMotionInstanceNV+  | SrtMotionInstance AccelerationStructureSRTMotionInstanceNV+  deriving (Show)++instance ToCStruct AccelerationStructureMotionInstanceDataNV where+  withCStruct x f = allocaBytesAligned 144 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct :: Ptr AccelerationStructureMotionInstanceDataNV -> AccelerationStructureMotionInstanceDataNV -> IO a -> IO a+  pokeCStruct p = (. const) . runContT .  \case+    StaticInstance v -> lift $ poke (castPtr @_ @AccelerationStructureInstanceKHR p) (v)+    MatrixMotionInstance v -> lift $ poke (castPtr @_ @AccelerationStructureMatrixMotionInstanceNV p) (v)+    SrtMotionInstance v -> lift $ poke (castPtr @_ @AccelerationStructureSRTMotionInstanceNV p) (v)+  pokeZeroCStruct :: Ptr AccelerationStructureMotionInstanceDataNV -> IO b -> IO b+  pokeZeroCStruct _ f = f+  cStructSize = 144+  cStructAlignment = 8++instance Zero AccelerationStructureMotionInstanceDataNV where+  zero = SrtMotionInstance zero+++-- No documentation found for TopLevel "VkAccelerationStructureMotionInfoFlagsNV"+newtype AccelerationStructureMotionInfoFlagsNV = AccelerationStructureMotionInfoFlagsNV Flags+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)++++conNameAccelerationStructureMotionInfoFlagsNV :: String+conNameAccelerationStructureMotionInfoFlagsNV = "AccelerationStructureMotionInfoFlagsNV"++enumPrefixAccelerationStructureMotionInfoFlagsNV :: String+enumPrefixAccelerationStructureMotionInfoFlagsNV = ""++showTableAccelerationStructureMotionInfoFlagsNV :: [(AccelerationStructureMotionInfoFlagsNV, String)]+showTableAccelerationStructureMotionInfoFlagsNV = []++instance Show AccelerationStructureMotionInfoFlagsNV where+  showsPrec = enumShowsPrec enumPrefixAccelerationStructureMotionInfoFlagsNV+                            showTableAccelerationStructureMotionInfoFlagsNV+                            conNameAccelerationStructureMotionInfoFlagsNV+                            (\(AccelerationStructureMotionInfoFlagsNV x) -> x)+                            (\x -> showString "0x" . showHex x)++instance Read AccelerationStructureMotionInfoFlagsNV where+  readPrec = enumReadPrec enumPrefixAccelerationStructureMotionInfoFlagsNV+                          showTableAccelerationStructureMotionInfoFlagsNV+                          conNameAccelerationStructureMotionInfoFlagsNV+                          AccelerationStructureMotionInfoFlagsNV+++-- No documentation found for TopLevel "VkAccelerationStructureMotionInstanceFlagsNV"+newtype AccelerationStructureMotionInstanceFlagsNV = AccelerationStructureMotionInstanceFlagsNV Flags+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)++++conNameAccelerationStructureMotionInstanceFlagsNV :: String+conNameAccelerationStructureMotionInstanceFlagsNV = "AccelerationStructureMotionInstanceFlagsNV"++enumPrefixAccelerationStructureMotionInstanceFlagsNV :: String+enumPrefixAccelerationStructureMotionInstanceFlagsNV = ""++showTableAccelerationStructureMotionInstanceFlagsNV :: [(AccelerationStructureMotionInstanceFlagsNV, String)]+showTableAccelerationStructureMotionInstanceFlagsNV = []++instance Show AccelerationStructureMotionInstanceFlagsNV where+  showsPrec = enumShowsPrec enumPrefixAccelerationStructureMotionInstanceFlagsNV+                            showTableAccelerationStructureMotionInstanceFlagsNV+                            conNameAccelerationStructureMotionInstanceFlagsNV+                            (\(AccelerationStructureMotionInstanceFlagsNV x) -> x)+                            (\x -> showString "0x" . showHex x)++instance Read AccelerationStructureMotionInstanceFlagsNV where+  readPrec = enumReadPrec enumPrefixAccelerationStructureMotionInstanceFlagsNV+                          showTableAccelerationStructureMotionInstanceFlagsNV+                          conNameAccelerationStructureMotionInstanceFlagsNV+                          AccelerationStructureMotionInstanceFlagsNV+++-- | VkAccelerationStructureMotionInstanceTypeNV - Enum specifying a type of+-- acceleration structure motion instance data for building into an+-- acceleration structure geometry+--+-- = See Also+--+-- 'AccelerationStructureMotionInstanceNV'+newtype AccelerationStructureMotionInstanceTypeNV = AccelerationStructureMotionInstanceTypeNV Int32+  deriving newtype (Eq, Ord, Storable, Zero)++-- | 'ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV' specifies that+-- the instance is a static instance with no instance motion.+pattern ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV        = AccelerationStructureMotionInstanceTypeNV 0+-- | 'ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV' specifies+-- that the instance is a motion instance with motion specified by+-- interpolation between two matrices.+pattern ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV = AccelerationStructureMotionInstanceTypeNV 1+-- | 'ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV' specifies+-- that the instance is a motion instance with motion specified by+-- interpolation in the SRT decomposition.+pattern ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV    = AccelerationStructureMotionInstanceTypeNV 2+{-# complete ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV,+             ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV,+             ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV :: AccelerationStructureMotionInstanceTypeNV #-}++conNameAccelerationStructureMotionInstanceTypeNV :: String+conNameAccelerationStructureMotionInstanceTypeNV = "AccelerationStructureMotionInstanceTypeNV"++enumPrefixAccelerationStructureMotionInstanceTypeNV :: String+enumPrefixAccelerationStructureMotionInstanceTypeNV = "ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_"++showTableAccelerationStructureMotionInstanceTypeNV :: [(AccelerationStructureMotionInstanceTypeNV, String)]+showTableAccelerationStructureMotionInstanceTypeNV =+  [ (ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV       , "STATIC_NV")+  , (ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV, "MATRIX_MOTION_NV")+  , (ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV   , "SRT_MOTION_NV")+  ]++instance Show AccelerationStructureMotionInstanceTypeNV where+  showsPrec = enumShowsPrec enumPrefixAccelerationStructureMotionInstanceTypeNV+                            showTableAccelerationStructureMotionInstanceTypeNV+                            conNameAccelerationStructureMotionInstanceTypeNV+                            (\(AccelerationStructureMotionInstanceTypeNV x) -> x)+                            (showsPrec 11)++instance Read AccelerationStructureMotionInstanceTypeNV where+  readPrec = enumReadPrec enumPrefixAccelerationStructureMotionInstanceTypeNV+                          showTableAccelerationStructureMotionInstanceTypeNV+                          conNameAccelerationStructureMotionInstanceTypeNV+                          AccelerationStructureMotionInstanceTypeNV+++type NV_RAY_TRACING_MOTION_BLUR_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_NV_RAY_TRACING_MOTION_BLUR_SPEC_VERSION"+pattern NV_RAY_TRACING_MOTION_BLUR_SPEC_VERSION :: forall a . Integral a => a+pattern NV_RAY_TRACING_MOTION_BLUR_SPEC_VERSION = 1+++type NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME = "VK_NV_ray_tracing_motion_blur"++-- No documentation found for TopLevel "VK_NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME"+pattern NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME = "VK_NV_ray_tracing_motion_blur"+
+ src/Vulkan/Extensions/VK_NV_ray_tracing_motion_blur.hs-boot view
@@ -0,0 +1,244 @@+{-# language CPP #-}+-- | = Name+--+-- VK_NV_ray_tracing_motion_blur - device extension+--+-- == VK_NV_ray_tracing_motion_blur+--+-- [__Name String__]+--     @VK_NV_ray_tracing_motion_blur@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     328+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_ray_tracing_pipeline@+--+-- [__Contact__]+--+--     -   Eric Werness+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2021-06-16+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_ray_tracing_motion_blur.html SPV_NV_ray_tracing_motion_blur>+--+--     -   This extension provides API support for+--         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/nv/GLSL_NV_ray_tracing_motion_blur.txt GL_NV_ray_tracing_motion_blur>+--+-- [__Contributors__]+--+--     -   Eric Werness, NVIDIA+--+--     -   Ashwin Lele, NVIDIA+--+-- == Description+--+-- Ray tracing support in the API provides an efficient mechanism to+-- intersect rays against static geometry, but rendering algorithms often+-- want to support motion, which is more efficiently supported with+-- motion-specific algorithms. This extension adds a set of mechanisms to+-- support fast tracing of moving geometry:+--+-- -   A ray pipeline trace call which takes a time parameter+--+-- -   Flags to enable motion support in an acceleration structure+--+-- -   Support for time-varying vertex positions in a geometry+--+-- -   Motion instances to move existing instances over time+--+-- The motion represented here is parameterized across a normalized+-- timestep between 0.0 and 1.0. A motion trace using OpTraceRaysMotionNV+-- provides a time within that normalized range to be used when+-- intersecting that ray with geometry. The geometry can be provided with+-- motion by a combination of adding a second vertex position for time of+-- 1.0 using 'AccelerationStructureGeometryMotionTrianglesDataNV' and+-- providing multiple transforms in the instance using+-- 'AccelerationStructureMotionInstanceNV'.+--+-- == New Structures+--+-- -   'AccelerationStructureMatrixMotionInstanceNV'+--+-- -   'AccelerationStructureMotionInstanceNV'+--+-- -   'AccelerationStructureSRTMotionInstanceNV'+--+-- -   'SRTDataNV'+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureCreateInfoKHR':+--+--     -   'AccelerationStructureMotionInfoNV'+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryTrianglesDataKHR':+--+--     -   'AccelerationStructureGeometryMotionTrianglesDataNV'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceRayTracingMotionBlurFeaturesNV'+--+-- == New Unions+--+-- -   'AccelerationStructureMotionInstanceDataNV'+--+-- == New Enums+--+-- -   'AccelerationStructureMotionInstanceTypeNV'+--+-- == New Bitmasks+--+-- -   'AccelerationStructureMotionInfoFlagsNV'+--+-- -   'AccelerationStructureMotionInstanceFlagsNV'+--+-- == New Enum Constants+--+-- -   'NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME'+--+-- -   'NV_RAY_TRACING_MOTION_BLUR_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureCreateFlagBitsKHR':+--+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV'+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.BuildAccelerationStructureFlagBitsKHR':+--+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV'+--+-- == Issues+--+-- (1) What size is VkAccelerationStructureMotionInstanceNV?+--+-- -   Added a note on the structure size and made the stride explicit in+--     the language.+--+-- (2) Allow arrayOfPointers for motion TLAS?+--+-- -   Yes, with a packed encoding to minimize the amount of data sent for+--     metadata.+--+-- == Version History+--+-- -   Revision 1, 2020-06-16 (Eric Werness, Ashwin Lele)+--+--     -   Initial external release+--+-- = See Also+--+-- 'AccelerationStructureGeometryMotionTrianglesDataNV',+-- 'AccelerationStructureMatrixMotionInstanceNV',+-- 'AccelerationStructureMotionInfoFlagsNV',+-- 'AccelerationStructureMotionInfoNV',+-- 'AccelerationStructureMotionInstanceDataNV',+-- 'AccelerationStructureMotionInstanceFlagsNV',+-- 'AccelerationStructureMotionInstanceNV',+-- 'AccelerationStructureMotionInstanceTypeNV',+-- 'AccelerationStructureSRTMotionInstanceNV',+-- 'PhysicalDeviceRayTracingMotionBlurFeaturesNV', 'SRTDataNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing_motion_blur Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly.+module Vulkan.Extensions.VK_NV_ray_tracing_motion_blur  ( AccelerationStructureGeometryMotionTrianglesDataNV+                                                        , AccelerationStructureMatrixMotionInstanceNV+                                                        , AccelerationStructureMotionInfoNV+                                                        , AccelerationStructureMotionInstanceNV+                                                        , AccelerationStructureSRTMotionInstanceNV+                                                        , PhysicalDeviceRayTracingMotionBlurFeaturesNV+                                                        , SRTDataNV+                                                        ) where++import Vulkan.CStruct (FromCStruct)+import Vulkan.CStruct (ToCStruct)+import Data.Kind (Type)++data AccelerationStructureGeometryMotionTrianglesDataNV++instance ToCStruct AccelerationStructureGeometryMotionTrianglesDataNV+instance Show AccelerationStructureGeometryMotionTrianglesDataNV+++data AccelerationStructureMatrixMotionInstanceNV++instance ToCStruct AccelerationStructureMatrixMotionInstanceNV+instance Show AccelerationStructureMatrixMotionInstanceNV++instance FromCStruct AccelerationStructureMatrixMotionInstanceNV+++data AccelerationStructureMotionInfoNV++instance ToCStruct AccelerationStructureMotionInfoNV+instance Show AccelerationStructureMotionInfoNV++instance FromCStruct AccelerationStructureMotionInfoNV+++data AccelerationStructureMotionInstanceNV++instance ToCStruct AccelerationStructureMotionInstanceNV+instance Show AccelerationStructureMotionInstanceNV+++data AccelerationStructureSRTMotionInstanceNV++instance ToCStruct AccelerationStructureSRTMotionInstanceNV+instance Show AccelerationStructureSRTMotionInstanceNV++instance FromCStruct AccelerationStructureSRTMotionInstanceNV+++data PhysicalDeviceRayTracingMotionBlurFeaturesNV++instance ToCStruct PhysicalDeviceRayTracingMotionBlurFeaturesNV+instance Show PhysicalDeviceRayTracingMotionBlurFeaturesNV++instance FromCStruct PhysicalDeviceRayTracingMotionBlurFeaturesNV+++data SRTDataNV++instance ToCStruct SRTDataNV+instance Show SRTDataNV++instance FromCStruct SRTDataNV+
src/Vulkan/Version.hs view
@@ -19,11 +19,11 @@ import Data.Word (Word32)  pattern HEADER_VERSION :: Word32-pattern HEADER_VERSION = 181+pattern HEADER_VERSION = 182   pattern HEADER_VERSION_COMPLETE :: Word32-pattern HEADER_VERSION_COMPLETE = MAKE_API_VERSION 1 2 181+pattern HEADER_VERSION_COMPLETE = MAKE_API_VERSION 1 2 182   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.10.4+version:        3.11 synopsis:       Bindings to the Vulkan graphics API. category:       Graphics homepage:       https://github.com/expipiplus1/vulkan#readme@@ -276,6 +276,7 @@       Vulkan.Extensions.VK_AMD_texture_gather_bias_lod       Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer       Vulkan.Extensions.VK_EXT_4444_formats+      Vulkan.Extensions.VK_EXT_acquire_drm_display       Vulkan.Extensions.VK_EXT_acquire_xlib_display       Vulkan.Extensions.VK_EXT_astc_decode_mode       Vulkan.Extensions.VK_EXT_blend_operation_advanced@@ -319,7 +320,9 @@       Vulkan.Extensions.VK_EXT_memory_budget       Vulkan.Extensions.VK_EXT_memory_priority       Vulkan.Extensions.VK_EXT_metal_surface+      Vulkan.Extensions.VK_EXT_multi_draw       Vulkan.Extensions.VK_EXT_pci_bus_info+      Vulkan.Extensions.VK_EXT_physical_device_drm       Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control       Vulkan.Extensions.VK_EXT_pipeline_creation_feedback       Vulkan.Extensions.VK_EXT_post_depth_coverage@@ -472,6 +475,7 @@       Vulkan.Extensions.VK_NV_inherited_viewport_scissor       Vulkan.Extensions.VK_NV_mesh_shader       Vulkan.Extensions.VK_NV_ray_tracing+      Vulkan.Extensions.VK_NV_ray_tracing_motion_blur       Vulkan.Extensions.VK_NV_representative_fragment_test       Vulkan.Extensions.VK_NV_sample_mask_override_coverage       Vulkan.Extensions.VK_NV_scissor_exclusive