{-# language CPP #-}
-- | = Name
--
-- VK_KHR_maintenance5 - device extension
--
-- == VK_KHR_maintenance5
--
-- [__Name String__]
--     @VK_KHR_maintenance5@
--
-- [__Extension Type__]
--     Device extension
--
-- [__Registered Extension Number__]
--     471
--
-- [__Revision__]
--     1
--
-- [__Ratification Status__]
--     Ratified
--
-- [__Extension and Version Dependencies__]
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Version 1.1>
--     and
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>
--
-- [__Contact__]
--
--     -   Stu Smith
--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_maintenance5] @stu-s%0A*Here describe the issue or question you have about the VK_KHR_maintenance5 extension* >
--
-- [__Extension Proposal__]
--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_maintenance5.adoc VK_KHR_maintenance5>
--
-- == Other Extension Metadata
--
-- [__Last Modified Date__]
--     2023-05-02
--
-- [__Interactions and External Dependencies__; __Contributors__]
--
--     -   Stu Smith, AMD
--
--     -   Tobias Hector, AMD
--
--     -   Shahbaz Youssefi, Google
--
--     -   Slawomir Cygan, Intel
--
--     -   Lionel Landwerlin, Intel
--
--     -   James Fitzpatrick, Imagination Technologies
--
--     -   Andrew Garrard, Imagination Technologies
--
--     -   Ralph Potter, Samsung
--
--     -   Pan Gao, Huawei
--
--     -   Jan-Harald Fredriksen, ARM
--
--     -   Jon Leech, Khronos
--
--     -   Mike Blumenkrantz, Valve
--
-- == Description
--
-- @VK_KHR_maintenance5@ adds a collection of minor features, none of which
-- would warrant an entire extension of their own.
--
-- The new features are as follows:
--
-- -   A new 'Vulkan.Core10.Enums.Format.FORMAT_A1B5G5R5_UNORM_PACK16_KHR'
--     format
--
-- -   A new 'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' format
--
-- -   A property to indicate that multisample coverage operations are
--     performed after sample counting in EarlyFragmentTests mode
--
-- -   Relax VkBufferView creation requirements by allowing subsets of the
--     associated VkBuffer usage using 'BufferUsageFlags2CreateInfoKHR'
--
-- -   A new entry point 'cmdBindIndexBuffer2KHR', allowing a range of
--     memory to be bound as an index buffer
--
-- -   'Vulkan.Core10.DeviceInitialization.getDeviceProcAddr' must return
--     @NULL@ for supported core functions beyond the version requested by
--     the application.
--
-- -   A property to indicate that the sample mask test is performed after
--     sample counting in EarlyFragmentTests mode
--
-- -   'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2'
--     now supports using 'Vulkan.Core10.APIConstants.WHOLE_SIZE' in the
--     @pSizes@ parameter.
--
-- -   A default size of 1.0 is used if @PointSize@ is not written
--
-- -   Shader modules are deprecated - applications can now pass
--     'Vulkan.Core10.Shader.ShaderModuleCreateInfo' as a chained struct to
--     pipeline creation via
--     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'
--
-- -   A function 'getRenderingAreaGranularityKHR' to query the optimal
--     render area for a dynamic rendering instance.
--
-- -   A property to indicate that depth\/stencil texturing operations with
--     'Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_ONE' have
--     defined behavior
--
-- -   Add 'getImageSubresourceLayout2KHR' and a new function
--     'getDeviceImageSubresourceLayoutKHR' to allow the application to
--     query the image memory layout without having to create an image
--     object and query it.
--
-- -   Allow 'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS' as the
--     @layerCount@ member of
--     'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers'
--
-- -   Adds stronger guarantees for propagation of
--     'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST' return values
--
-- -   A property to indicate whether @PointSize@ controls the final
--     rasterization of polygons if
--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-polygonmode polygon mode>
--     is 'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_POINT'
--
-- -   Two properties to indicate the non-strict line rasterization
--     algorithm used
--
-- -   Two new flags words 'PipelineCreateFlagBits2KHR' and
--     'Vulkan.Extensions.VK_AMDX_shader_enqueue.BufferUsageFlagBits2KHR'
--
-- -   Physical-device-level functions can now be called with any value in
--     the valid range for a type beyond the defined enumerants, such that
--     applications can avoid checking individual features, extensions, or
--     versions before querying supported properties of a particular
--     enumerant.
--
-- -   Clarification that copies between images of any type are allowed,
--     treating 1D images as 2D images with a height of 1.
--
-- == New Commands
--
-- -   'cmdBindIndexBuffer2KHR'
--
-- -   'getDeviceImageSubresourceLayoutKHR'
--
-- -   'getImageSubresourceLayout2KHR'
--
-- -   'getRenderingAreaGranularityKHR'
--
-- == New Structures
--
-- -   'DeviceImageSubresourceInfoKHR'
--
-- -   'ImageSubresource2KHR'
--
-- -   'RenderingAreaInfoKHR'
--
-- -   'SubresourceLayout2KHR'
--
-- -   Extending 'Vulkan.Core10.BufferView.BufferViewCreateInfo',
--     'Vulkan.Core10.Buffer.BufferCreateInfo',
--     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalBufferInfo',
--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorBufferBindingInfoEXT':
--
--     -   'BufferUsageFlags2CreateInfoKHR'
--
-- -   Extending 'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo',
--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',
--     'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV',
--     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR':
--
--     -   'PipelineCreateFlags2CreateInfoKHR'
--
-- -   Extending
--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--     'Vulkan.Core10.Device.DeviceCreateInfo':
--
--     -   'PhysicalDeviceMaintenance5FeaturesKHR'
--
-- -   Extending
--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
--
--     -   'PhysicalDeviceMaintenance5PropertiesKHR'
--
-- == New Enums
--
-- -   'Vulkan.Extensions.VK_AMDX_shader_enqueue.BufferUsageFlagBits2KHR'
--
-- -   'PipelineCreateFlagBits2KHR'
--
-- == New Bitmasks
--
-- -   'Vulkan.Extensions.VK_AMDX_shader_enqueue.BufferUsageFlags2KHR'
--
-- -   'PipelineCreateFlags2KHR'
--
-- == New Enum Constants
--
-- -   'KHR_MAINTENANCE_5_EXTENSION_NAME'
--
-- -   'KHR_MAINTENANCE_5_SPEC_VERSION'
--
-- -   Extending 'Vulkan.Core10.Enums.Format.Format':
--
--     -   'Vulkan.Core10.Enums.Format.FORMAT_A1B5G5R5_UNORM_PACK16_KHR'
--
--     -   'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR'
--
-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR'
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR'
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR'
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR'
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR'
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR'
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR'
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR'
--
-- If
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_attachment_feedback_loop_layout VK_EXT_attachment_feedback_loop_layout>
-- is supported:
--
-- -   Extending 'PipelineCreateFlagBits2KHR':
--
--     -   'PIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
--
--     -   'PIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
--
-- If
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_conditional_rendering VK_EXT_conditional_rendering>
-- is supported:
--
-- -   Extending
--     'Vulkan.Extensions.VK_AMDX_shader_enqueue.BufferUsageFlagBits2KHR':
--
--     -   'Vulkan.Extensions.VK_AMDX_shader_enqueue.BUFFER_USAGE_2_CONDITIONAL_RENDERING_BIT_EXT'
--
-- If
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>
-- is supported:
--
-- -   Extending
--     'Vulkan.Extensions.VK_AMDX_shader_enqueue.BufferUsageFlagBits2KHR':
--
--     -   'Vulkan.Extensions.VK_AMDX_shader_enqueue.BUFFER_USAGE_2_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT'
--
--     -   'Vulkan.Extensions.VK_AMDX_shader_enqueue.BUFFER_USAGE_2_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT'
--
--     -   'Vulkan.Extensions.VK_AMDX_shader_enqueue.BUFFER_USAGE_2_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT'
--
-- -   Extending 'PipelineCreateFlagBits2KHR':
--
--     -   'PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT'
--
-- If
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_graphics_pipeline_library VK_EXT_graphics_pipeline_library>
-- is supported:
--
-- -   Extending 'PipelineCreateFlagBits2KHR':
--
--     -   'PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT'
--
--     -   'PIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT'
--
-- If
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>
-- is supported:
--
-- -   Extending
--     'Vulkan.Extensions.VK_AMDX_shader_enqueue.BufferUsageFlagBits2KHR':
--
--     -   'Vulkan.Extensions.VK_AMDX_shader_enqueue.BUFFER_USAGE_2_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT'
--
--     -   'Vulkan.Extensions.VK_AMDX_shader_enqueue.BUFFER_USAGE_2_MICROMAP_STORAGE_BIT_EXT'
--
-- -   Extending 'PipelineCreateFlagBits2KHR':
--
--     -   'PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT'
--
-- If
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pipeline_protected_access VK_EXT_pipeline_protected_access>
-- is supported:
--
-- -   Extending 'PipelineCreateFlagBits2KHR':
--
--     -   'PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT'
--
--     -   'PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT'
--
-- If
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_transform_feedback VK_EXT_transform_feedback>
-- is supported:
--
-- -   Extending
--     'Vulkan.Extensions.VK_AMDX_shader_enqueue.BufferUsageFlagBits2KHR':
--
--     -   'Vulkan.Extensions.VK_AMDX_shader_enqueue.BUFFER_USAGE_2_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT'
--
--     -   'Vulkan.Extensions.VK_AMDX_shader_enqueue.BUFFER_USAGE_2_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT'
--
-- If
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>
-- is supported:
--
-- -   Extending
--     'Vulkan.Extensions.VK_AMDX_shader_enqueue.BufferUsageFlagBits2KHR':
--
--     -   'Vulkan.Extensions.VK_AMDX_shader_enqueue.BUFFER_USAGE_2_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR'
--
--     -   'Vulkan.Extensions.VK_AMDX_shader_enqueue.BUFFER_USAGE_2_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR'
--
-- If
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>
-- and
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map VK_EXT_fragment_density_map>
-- is supported:
--
-- -   Extending 'PipelineCreateFlagBits2KHR':
--
--     -   'PIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
--
-- If
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>
-- and
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_fragment_shading_rate VK_KHR_fragment_shading_rate>
-- is supported:
--
-- -   Extending 'PipelineCreateFlagBits2KHR':
--
--     -   'PIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
--
-- If
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_pipeline_executable_properties VK_KHR_pipeline_executable_properties>
-- is supported:
--
-- -   Extending 'PipelineCreateFlagBits2KHR':
--
--     -   'PIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR'
--
--     -   'PIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHR'
--
-- If
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_pipeline_library VK_KHR_pipeline_library>
-- is supported:
--
-- -   Extending 'PipelineCreateFlagBits2KHR':
--
--     -   'PIPELINE_CREATE_2_LIBRARY_BIT_KHR'
--
-- If
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>
-- is supported:
--
-- -   Extending
--     'Vulkan.Extensions.VK_AMDX_shader_enqueue.BufferUsageFlagBits2KHR':
--
--     -   'Vulkan.Extensions.VK_AMDX_shader_enqueue.BUFFER_USAGE_2_SHADER_BINDING_TABLE_BIT_KHR'
--
-- -   Extending 'PipelineCreateFlagBits2KHR':
--
--     -   'PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR'
--
--     -   'PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR'
--
--     -   'PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR'
--
--     -   'PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR'
--
--     -   'PIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'
--
--     -   'PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHR'
--
--     -   'PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR'
--
-- If
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_video_decode_queue VK_KHR_video_decode_queue>
-- is supported:
--
-- -   Extending
--     'Vulkan.Extensions.VK_AMDX_shader_enqueue.BufferUsageFlagBits2KHR':
--
--     -   'Vulkan.Extensions.VK_AMDX_shader_enqueue.BUFFER_USAGE_2_VIDEO_DECODE_DST_BIT_KHR'
--
--     -   'Vulkan.Extensions.VK_AMDX_shader_enqueue.BUFFER_USAGE_2_VIDEO_DECODE_SRC_BIT_KHR'
--
-- If
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_video_encode_queue VK_KHR_video_encode_queue>
-- is supported:
--
-- -   Extending
--     'Vulkan.Extensions.VK_AMDX_shader_enqueue.BufferUsageFlagBits2KHR':
--
--     -   'Vulkan.Extensions.VK_AMDX_shader_enqueue.BUFFER_USAGE_2_VIDEO_ENCODE_DST_BIT_KHR'
--
--     -   'Vulkan.Extensions.VK_AMDX_shader_enqueue.BUFFER_USAGE_2_VIDEO_ENCODE_SRC_BIT_KHR'
--
-- If
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>
-- is supported:
--
-- -   Extending 'PipelineCreateFlagBits2KHR':
--
--     -   'PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NV'
--
-- If
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_displacement_micromap VK_NV_displacement_micromap>
-- is supported:
--
-- -   Extending 'PipelineCreateFlagBits2KHR':
--
--     -   'PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV'
--
-- If
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>
-- is supported:
--
-- -   Extending
--     'Vulkan.Extensions.VK_AMDX_shader_enqueue.BufferUsageFlagBits2KHR':
--
--     -   'BUFFER_USAGE_2_RAY_TRACING_BIT_NV'
--
-- -   Extending 'PipelineCreateFlagBits2KHR':
--
--     -   'PIPELINE_CREATE_2_DEFER_COMPILE_BIT_NV'
--
-- If
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing_motion_blur VK_NV_ray_tracing_motion_blur>
-- is supported:
--
-- -   Extending 'PipelineCreateFlagBits2KHR':
--
--     -   'PIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NV'
--
-- If
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Version 1.1>
-- or
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_group VK_KHR_device_group>
-- is supported:
--
-- -   Extending 'PipelineCreateFlagBits2KHR':
--
--     -   'PIPELINE_CREATE_2_DISPATCH_BASE_BIT_KHR'
--
--     -   'PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR'
--
-- If
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2 Version 1.2>
-- or
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_buffer_device_address VK_KHR_buffer_device_address>
-- or
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_buffer_device_address VK_EXT_buffer_device_address>
-- is supported:
--
-- -   Extending
--     'Vulkan.Extensions.VK_AMDX_shader_enqueue.BufferUsageFlagBits2KHR':
--
--     -   'Vulkan.Extensions.VK_AMDX_shader_enqueue.BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT_KHR'
--
-- If
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Version 1.3>
-- or
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pipeline_creation_cache_control VK_EXT_pipeline_creation_cache_control>
-- is supported:
--
-- -   Extending 'PipelineCreateFlagBits2KHR':
--
--     -   'PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR'
--
--     -   'PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR'
--
-- == Issues
--
-- None.
--
-- == Version History
--
-- -   Revision 1, 2022-12-12 (Stu Smith)
--
--     -   Initial revision
--
-- == See Also
--
-- 'DeviceImageSubresourceInfoKHR', 'ImageSubresource2KHR',
-- 'PhysicalDeviceMaintenance5FeaturesKHR',
-- 'PhysicalDeviceMaintenance5PropertiesKHR', 'RenderingAreaInfoKHR',
-- 'SubresourceLayout2KHR', 'cmdBindIndexBuffer2KHR',
-- 'getDeviceImageSubresourceLayoutKHR', 'getImageSubresourceLayout2KHR',
-- 'getRenderingAreaGranularityKHR'
--
-- == Document Notes
--
-- For more information, see the
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_maintenance5 Vulkan Specification>
--
-- This page is a generated document. Fixes and changes should be made to
-- the generator scripts, not directly.
module Vulkan.Extensions.VK_KHR_maintenance5  ( getRenderingAreaGranularityKHR
                                              , cmdBindIndexBuffer2KHR
                                              , getImageSubresourceLayout2KHR
                                              , getDeviceImageSubresourceLayoutKHR
                                              , pattern BUFFER_USAGE_2_RAY_TRACING_BIT_NV
                                              , BufferUsageFlags2CreateInfoKHR(..)
                                              , PipelineCreateFlags2CreateInfoKHR(..)
                                              , PhysicalDeviceMaintenance5FeaturesKHR(..)
                                              , PhysicalDeviceMaintenance5PropertiesKHR(..)
                                              , RenderingAreaInfoKHR(..)
                                              , ImageSubresource2KHR(..)
                                              , SubresourceLayout2KHR(..)
                                              , DeviceImageSubresourceInfoKHR(..)
                                              , PipelineCreateFlags2KHR
                                              , PipelineCreateFlagBits2KHR( PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT_KHR
                                                                          , PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHR
                                                                          , PIPELINE_CREATE_2_DERIVATIVE_BIT_KHR
                                                                          , PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT
                                                                          , PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV
                                                                          , PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT
                                                                          , PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT
                                                                          , PIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT
                                                                          , PIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT
                                                                          , PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT
                                                                          , PIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
                                                                          , PIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
                                                                          , PIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NV
                                                                          , PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NV
                                                                          , PIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR
                                                                          , PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR
                                                                          , PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR
                                                                          , PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR
                                                                          , PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR
                                                                          , PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHR
                                                                          , PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR
                                                                          , PIPELINE_CREATE_2_LIBRARY_BIT_KHR
                                                                          , PIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT
                                                                          , PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT
                                                                          , PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR
                                                                          , PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR
                                                                          , PIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR
                                                                          , PIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHR
                                                                          , PIPELINE_CREATE_2_DEFER_COMPILE_BIT_NV
                                                                          , PIPELINE_CREATE_2_DISPATCH_BASE_BIT_KHR
                                                                          , PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR
                                                                          , ..
                                                                          )
                                              , KHR_MAINTENANCE_5_SPEC_VERSION
                                              , pattern KHR_MAINTENANCE_5_SPEC_VERSION
                                              , KHR_MAINTENANCE_5_EXTENSION_NAME
                                              , pattern KHR_MAINTENANCE_5_EXTENSION_NAME
                                              , BufferUsageFlagBits2KHR(..)
                                              , BufferUsageFlags2KHR
                                              ) where

import Data.Bits (Bits)
import Data.Bits (FiniteBits)
import Vulkan.Internal.Utils (enumReadPrec)
import Vulkan.Internal.Utils (enumShowsPrec)
import Vulkan.Internal.Utils (traceAroundEvent)
import Control.Monad (unless)
import Control.Monad.IO.Class (liftIO)
import Data.Typeable (eqT)
import Foreign.Marshal.Alloc (allocaBytes)
import GHC.IO (throwIO)
import GHC.Ptr (castPtr)
import GHC.Ptr (nullFunPtr)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
import GHC.Show (showString)
import Numeric (showHex)
import Control.Monad.Trans.Class (lift)
import Control.Monad.Trans.Cont (evalContT)
import Data.Vector (generateM)
import qualified Data.Vector (imapM_)
import qualified Data.Vector (length)
import Vulkan.CStruct (FromCStruct)
import Vulkan.CStruct (FromCStruct(..))
import Vulkan.CStruct (ToCStruct)
import Vulkan.CStruct (ToCStruct(..))
import Vulkan.Zero (Zero)
import Vulkan.Zero (Zero(..))
import Control.Monad.IO.Class (MonadIO)
import Data.String (IsString)
import Data.Type.Equality ((:~:)(Refl))
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 Foreign.Ptr (FunPtr)
import Foreign.Ptr (Ptr)
import GHC.Read (Read(readPrec))
import GHC.Show (Show(showsPrec))
import Data.Word (Word32)
import Data.Kind (Type)
import Control.Monad.Trans.Cont (ContT(..))
import Data.Vector (Vector)
import Vulkan.CStruct.Utils (advancePtrBytes)
import Vulkan.Core10.FundamentalTypes (bool32ToBool)
import Vulkan.Core10.FundamentalTypes (boolToBool32)
import Vulkan.CStruct.Extends (forgetExtensions)
import Vulkan.CStruct.Extends (peekSomeCStruct)
import Vulkan.CStruct.Extends (withSomeCStruct)
import Vulkan.NamedType ((:::))
import Vulkan.Core10.FundamentalTypes (Bool32)
import Vulkan.Core10.Handles (Buffer)
import Vulkan.Core10.Handles (Buffer(..))
import Vulkan.Extensions.VK_AMDX_shader_enqueue (BufferUsageFlags2KHR)
import Vulkan.CStruct.Extends (Chain)
import Vulkan.Core10.Handles (CommandBuffer)
import Vulkan.Core10.Handles (CommandBuffer(..))
import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer))
import Vulkan.Core10.Handles (CommandBuffer_T)
import Vulkan.Core10.Handles (Device)
import Vulkan.Core10.Handles (Device(..))
import Vulkan.Core10.Handles (Device(Device))
import Vulkan.Dynamic (DeviceCmds(pVkCmdBindIndexBuffer2KHR))
import Vulkan.Dynamic (DeviceCmds(pVkGetDeviceImageSubresourceLayoutKHR))
import Vulkan.Dynamic (DeviceCmds(pVkGetImageSubresourceLayout2KHR))
import Vulkan.Dynamic (DeviceCmds(pVkGetRenderingAreaGranularityKHR))
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 (Extent2D)
import Vulkan.Core10.FundamentalTypes (Flags64)
import Vulkan.Core10.Enums.Format (Format)
import Vulkan.Core10.Handles (Image)
import Vulkan.Core10.Handles (Image(..))
import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_compression_control (ImageCompressionPropertiesEXT)
import Vulkan.Core10.Image (ImageCreateInfo)
import Vulkan.Core10.SparseResourceMemoryManagement (ImageSubresource)
import Vulkan.Core10.Enums.IndexType (IndexType)
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.CStruct.Extends (SomeStruct)
import Vulkan.CStruct.Extends (SomeStruct(..))
import Vulkan.Core10.Enums.StructureType (StructureType)
import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_host_image_copy (SubresourceHostMemcpySizeEXT)
import Vulkan.Core10.Image (SubresourceLayout)
import Vulkan.Extensions.VK_AMDX_shader_enqueue (BufferUsageFlags2KHR)
import Vulkan.Extensions.VK_AMDX_shader_enqueue (BufferUsageFlagBits2KHR(BUFFER_USAGE_2_SHADER_BINDING_TABLE_BIT_KHR))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR))
import Vulkan.Extensions.VK_AMDX_shader_enqueue (BufferUsageFlagBits2KHR(..))
import Vulkan.Extensions.VK_AMDX_shader_enqueue (BufferUsageFlags2KHR)
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
  unsafe
#endif
  "dynamic" mkVkGetRenderingAreaGranularityKHR
  :: FunPtr (Ptr Device_T -> Ptr RenderingAreaInfoKHR -> Ptr Extent2D -> IO ()) -> Ptr Device_T -> Ptr RenderingAreaInfoKHR -> Ptr Extent2D -> IO ()

-- | vkGetRenderingAreaGranularityKHR - Returns the granularity for dynamic
-- rendering optimal render area
--
-- = Description
--
-- The conditions leading to an optimal @renderArea@ are:
--
-- -   the @offset.x@ member in @renderArea@ is a multiple of the @width@
--     member of the returned 'Vulkan.Core10.FundamentalTypes.Extent2D'
--     (the horizontal granularity).
--
-- -   the @offset.y@ member in @renderArea@ is a multiple of the @height@
--     member of the returned 'Vulkan.Core10.FundamentalTypes.Extent2D'
--     (the vertical granularity).
--
-- -   either the @extent.width@ member in @renderArea@ is a multiple of
--     the horizontal granularity or @offset.x@+@extent.width@ is equal to
--     the @width@ of the @framebuffer@ in the
--     'Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo'.
--
-- -   either the @extent.height@ member in @renderArea@ is a multiple of
--     the vertical granularity or @offset.y@+@extent.height@ is equal to
--     the @height@ of the @framebuffer@ in the
--     'Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo'.
--
-- == Valid Usage (Implicit)
--
-- -   #VUID-vkGetRenderingAreaGranularityKHR-device-parameter# @device@
--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
--
-- -   #VUID-vkGetRenderingAreaGranularityKHR-pRenderingAreaInfo-parameter#
--     @pRenderingAreaInfo@ /must/ be a valid pointer to a valid
--     'RenderingAreaInfoKHR' structure
--
-- -   #VUID-vkGetRenderingAreaGranularityKHR-pGranularity-parameter#
--     @pGranularity@ /must/ be a valid pointer to a
--     'Vulkan.Core10.FundamentalTypes.Extent2D' structure
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>,
-- 'Vulkan.Core10.Handles.Device',
-- 'Vulkan.Core10.FundamentalTypes.Extent2D', 'RenderingAreaInfoKHR'
getRenderingAreaGranularityKHR :: forall io
                                . (MonadIO io)
                               => -- | @device@ is the logical device that owns the render pass instance.
                                  Device
                               -> -- | @pRenderingAreaInfo@ is a pointer to a 'RenderingAreaInfoKHR' structure
                                  -- specifying details of the render pass instance to query the render area
                                  -- granularity for.
                                  RenderingAreaInfoKHR
                               -> io (("granularity" ::: Extent2D))
getRenderingAreaGranularityKHR :: forall (io :: * -> *).
MonadIO io =>
Device -> RenderingAreaInfoKHR -> io ("granularity" ::: Extent2D)
getRenderingAreaGranularityKHR Device
device
                                 RenderingAreaInfoKHR
renderingAreaInfo = forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT forall a b. (a -> b) -> a -> b
$ do
  let vkGetRenderingAreaGranularityKHRPtr :: FunPtr
  (Ptr Device_T
   -> ("pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR)
   -> ("pGranularity" ::: Ptr ("granularity" ::: Extent2D))
   -> IO ())
vkGetRenderingAreaGranularityKHRPtr = DeviceCmds
-> FunPtr
     (Ptr Device_T
      -> ("pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR)
      -> ("pGranularity" ::: Ptr ("granularity" ::: Extent2D))
      -> IO ())
pVkGetRenderingAreaGranularityKHR (case Device
device of Device{DeviceCmds
$sel:deviceCmds:Device :: Device -> DeviceCmds
deviceCmds :: DeviceCmds
deviceCmds} -> DeviceCmds
deviceCmds)
  forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
  (Ptr Device_T
   -> ("pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR)
   -> ("pGranularity" ::: Ptr ("granularity" ::: Extent2D))
   -> IO ())
vkGetRenderingAreaGranularityKHRPtr forall a. Eq a => a -> a -> Bool
/= forall a. FunPtr a
nullFunPtr) forall a b. (a -> b) -> a -> b
$
    forall e a. Exception e => e -> IO a
throwIO forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError forall a. Maybe a
Nothing IOErrorType
InvalidArgument String
"" String
"The function pointer for vkGetRenderingAreaGranularityKHR is null" forall a. Maybe a
Nothing forall a. Maybe a
Nothing
  let vkGetRenderingAreaGranularityKHR' :: Ptr Device_T
-> ("pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR)
-> ("pGranularity" ::: Ptr ("granularity" ::: Extent2D))
-> IO ()
vkGetRenderingAreaGranularityKHR' = FunPtr
  (Ptr Device_T
   -> ("pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR)
   -> ("pGranularity" ::: Ptr ("granularity" ::: Extent2D))
   -> IO ())
-> Ptr Device_T
-> ("pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR)
-> ("pGranularity" ::: Ptr ("granularity" ::: Extent2D))
-> IO ()
mkVkGetRenderingAreaGranularityKHR FunPtr
  (Ptr Device_T
   -> ("pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR)
   -> ("pGranularity" ::: Ptr ("granularity" ::: Extent2D))
   -> IO ())
vkGetRenderingAreaGranularityKHRPtr
  "pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR
pRenderingAreaInfo <- forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT forall a b. (a -> b) -> a -> b
$ forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
withCStruct (RenderingAreaInfoKHR
renderingAreaInfo)
  "pGranularity" ::: Ptr ("granularity" ::: Extent2D)
pPGranularity <- forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (forall a b. ToCStruct a => (Ptr a -> IO b) -> IO b
withZeroCStruct @Extent2D)
  forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall a. String -> IO a -> IO a
traceAroundEvent String
"vkGetRenderingAreaGranularityKHR" (Ptr Device_T
-> ("pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR)
-> ("pGranularity" ::: Ptr ("granularity" ::: Extent2D))
-> IO ()
vkGetRenderingAreaGranularityKHR'
                                                                (Device -> Ptr Device_T
deviceHandle (Device
device))
                                                                "pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR
pRenderingAreaInfo
                                                                ("pGranularity" ::: Ptr ("granularity" ::: Extent2D)
pPGranularity))
  "granularity" ::: Extent2D
pGranularity <- forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @Extent2D "pGranularity" ::: Ptr ("granularity" ::: Extent2D)
pPGranularity
  forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ ("granularity" ::: Extent2D
pGranularity)


foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
  unsafe
#endif
  "dynamic" mkVkCmdBindIndexBuffer2KHR
  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> DeviceSize -> IndexType -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> DeviceSize -> IndexType -> IO ()

-- | vkCmdBindIndexBuffer2KHR - Bind an index buffer to a command buffer
--
-- = Description
--
-- @size@ specifies the bound size of the index buffer starting from
-- @offset@. If @size@ is 'Vulkan.Core10.APIConstants.WHOLE_SIZE' then the
-- bound size is from @offset@ to the end of the @buffer@.
--
-- == Valid Usage
--
-- -   #VUID-vkCmdBindIndexBuffer2KHR-offset-08782# @offset@ /must/ be less
--     than the size of @buffer@
--
-- -   #VUID-vkCmdBindIndexBuffer2KHR-offset-08783# The sum of @offset@ and
--     the base address of the range of
--     'Vulkan.Core10.Handles.DeviceMemory' object that is backing
--     @buffer@, /must/ be a multiple of the size of the type indicated by
--     @indexType@
--
-- -   #VUID-vkCmdBindIndexBuffer2KHR-buffer-08784# @buffer@ /must/ have
--     been created with the
--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDEX_BUFFER_BIT'
--     flag
--
-- -   #VUID-vkCmdBindIndexBuffer2KHR-buffer-08785# If @buffer@ is
--     non-sparse then it /must/ be bound completely and contiguously to a
--     single 'Vulkan.Core10.Handles.DeviceMemory' object
--
-- -   #VUID-vkCmdBindIndexBuffer2KHR-indexType-08786# @indexType@ /must/
--     not be 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR'
--
-- -   #VUID-vkCmdBindIndexBuffer2KHR-indexType-08787# If @indexType@ is
--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT8_EXT', the
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-indexTypeUint8 indexTypeUint8>
--     feature /must/ be enabled
--
-- -   #VUID-vkCmdBindIndexBuffer2KHR-size-08767# If @size@ is not
--     'Vulkan.Core10.APIConstants.WHOLE_SIZE', @size@ /must/ be a multiple
--     of the size of the type indicated by @indexType@
--
-- -   #VUID-vkCmdBindIndexBuffer2KHR-size-08768# If @size@ is not
--     'Vulkan.Core10.APIConstants.WHOLE_SIZE', the sum of @offset@ and
--     @size@ /must/ be less than or equal to the size of @buffer@
--
-- == Valid Usage (Implicit)
--
-- -   #VUID-vkCmdBindIndexBuffer2KHR-commandBuffer-parameter#
--     @commandBuffer@ /must/ be a valid
--     'Vulkan.Core10.Handles.CommandBuffer' handle
--
-- -   #VUID-vkCmdBindIndexBuffer2KHR-buffer-parameter# @buffer@ /must/ be
--     a valid 'Vulkan.Core10.Handles.Buffer' handle
--
-- -   #VUID-vkCmdBindIndexBuffer2KHR-indexType-parameter# @indexType@
--     /must/ be a valid 'Vulkan.Core10.Enums.IndexType.IndexType' value
--
-- -   #VUID-vkCmdBindIndexBuffer2KHR-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-vkCmdBindIndexBuffer2KHR-commandBuffer-cmdpool# The
--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
--     allocated from /must/ support graphics operations
--
-- -   #VUID-vkCmdBindIndexBuffer2KHR-videocoding# This command /must/ only
--     be called outside of a video coding scope
--
-- -   #VUID-vkCmdBindIndexBuffer2KHR-commonparent# Both of @buffer@, and
--     @commandBuffer@ /must/ have been created, allocated, or retrieved
--     from the same 'Vulkan.Core10.Handles.Device'
--
-- == 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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>,
-- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
-- 'Vulkan.Core10.Enums.IndexType.IndexType'
cmdBindIndexBuffer2KHR :: forall io
                        . (MonadIO io)
                       => -- | @commandBuffer@ is the command buffer into which the command is
                          -- recorded.
                          CommandBuffer
                       -> -- | @buffer@ is the buffer being bound.
                          Buffer
                       -> -- | @offset@ is the starting offset in bytes within @buffer@ used in index
                          -- buffer address calculations.
                          ("offset" ::: DeviceSize)
                       -> -- | @size@ is the size in bytes of index data bound from @buffer@.
                          DeviceSize
                       -> -- | @indexType@ is a 'Vulkan.Core10.Enums.IndexType.IndexType' value
                          -- specifying the size of the indices.
                          IndexType
                       -> io ()
cmdBindIndexBuffer2KHR :: forall (io :: * -> *).
MonadIO io =>
CommandBuffer -> Buffer -> Flags64 -> Flags64 -> IndexType -> io ()
cmdBindIndexBuffer2KHR CommandBuffer
commandBuffer Buffer
buffer Flags64
offset Flags64
size IndexType
indexType = forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO forall a b. (a -> b) -> a -> b
$ do
  let vkCmdBindIndexBuffer2KHRPtr :: FunPtr
  (Ptr CommandBuffer_T
   -> Buffer -> Flags64 -> Flags64 -> IndexType -> IO ())
vkCmdBindIndexBuffer2KHRPtr = DeviceCmds
-> FunPtr
     (Ptr CommandBuffer_T
      -> Buffer -> Flags64 -> Flags64 -> IndexType -> IO ())
pVkCmdBindIndexBuffer2KHR (case CommandBuffer
commandBuffer of CommandBuffer{DeviceCmds
$sel:deviceCmds:CommandBuffer :: CommandBuffer -> DeviceCmds
deviceCmds :: DeviceCmds
deviceCmds} -> DeviceCmds
deviceCmds)
  forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
  (Ptr CommandBuffer_T
   -> Buffer -> Flags64 -> Flags64 -> IndexType -> IO ())
vkCmdBindIndexBuffer2KHRPtr forall a. Eq a => a -> a -> Bool
/= forall a. FunPtr a
nullFunPtr) forall a b. (a -> b) -> a -> b
$
    forall e a. Exception e => e -> IO a
throwIO forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError forall a. Maybe a
Nothing IOErrorType
InvalidArgument String
"" String
"The function pointer for vkCmdBindIndexBuffer2KHR is null" forall a. Maybe a
Nothing forall a. Maybe a
Nothing
  let vkCmdBindIndexBuffer2KHR' :: Ptr CommandBuffer_T
-> Buffer -> Flags64 -> Flags64 -> IndexType -> IO ()
vkCmdBindIndexBuffer2KHR' = FunPtr
  (Ptr CommandBuffer_T
   -> Buffer -> Flags64 -> Flags64 -> IndexType -> IO ())
-> Ptr CommandBuffer_T
-> Buffer
-> Flags64
-> Flags64
-> IndexType
-> IO ()
mkVkCmdBindIndexBuffer2KHR FunPtr
  (Ptr CommandBuffer_T
   -> Buffer -> Flags64 -> Flags64 -> IndexType -> IO ())
vkCmdBindIndexBuffer2KHRPtr
  forall a. String -> IO a -> IO a
traceAroundEvent String
"vkCmdBindIndexBuffer2KHR" (Ptr CommandBuffer_T
-> Buffer -> Flags64 -> Flags64 -> IndexType -> IO ()
vkCmdBindIndexBuffer2KHR'
                                                 (CommandBuffer -> Ptr CommandBuffer_T
commandBufferHandle (CommandBuffer
commandBuffer))
                                                 (Buffer
buffer)
                                                 (Flags64
offset)
                                                 (Flags64
size)
                                                 (IndexType
indexType))
  forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ ()


foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
  unsafe
#endif
  "dynamic" mkVkGetImageSubresourceLayout2KHR
  :: FunPtr (Ptr Device_T -> Image -> Ptr ImageSubresource2KHR -> Ptr (SomeStruct SubresourceLayout2KHR) -> IO ()) -> Ptr Device_T -> Image -> Ptr ImageSubresource2KHR -> Ptr (SomeStruct SubresourceLayout2KHR) -> IO ()

-- | vkGetImageSubresourceLayout2KHR - Retrieve information about an image
-- subresource
--
-- = Description
--
-- 'getImageSubresourceLayout2KHR' behaves similarly to
-- 'Vulkan.Core10.Image.getImageSubresourceLayout', with the ability to
-- specify extended inputs via chained input structures, and to return
-- extended information via chained output structures.
--
-- It is legal to call 'getImageSubresourceLayout2KHR' with a @image@
-- created with @tiling@ equal to
-- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', but the members
-- of 'SubresourceLayout2KHR'::@subresourceLayout@ will have undefined
-- values in this case.
--
-- Note
--
-- Structures chained from 'ImageSubresource2KHR'::@pNext@ will also be
-- updated when @tiling@ is equal to
-- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL'.
--
-- == Valid Usage
--
-- -   #VUID-vkGetImageSubresourceLayout2KHR-aspectMask-00997# The
--     @aspectMask@ member of @pSubresource@ /must/ only have a single bit
--     set
--
-- -   #VUID-vkGetImageSubresourceLayout2KHR-mipLevel-01716# The @mipLevel@
--     member of @pSubresource@ /must/ be less than the @mipLevels@
--     specified in 'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was
--     created
--
-- -   #VUID-vkGetImageSubresourceLayout2KHR-arrayLayer-01717# The
--     @arrayLayer@ member of @pSubresource@ /must/ be less than the
--     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
--     when @image@ was created
--
-- -   #VUID-vkGetImageSubresourceLayout2KHR-format-08886# If @format@ of
--     the @image@ is a color format, @tiling@ of the @image@ is
--     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' or
--     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', and does not
--     have a
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image format>,
--     the @aspectMask@ member of @pSubresource@ /must/ be
--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
--
-- -   #VUID-vkGetImageSubresourceLayout2KHR-format-04462# If @format@ of
--     the @image@ has a depth component, the @aspectMask@ member of
--     @pSubresource@ /must/ contain
--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT'
--
-- -   #VUID-vkGetImageSubresourceLayout2KHR-format-04463# If @format@ of
--     the @image@ has a stencil component, the @aspectMask@ member of
--     @pSubresource@ /must/ contain
--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
--
-- -   #VUID-vkGetImageSubresourceLayout2KHR-format-04464# If @format@ of
--     the @image@ does not contain a stencil or depth component, the
--     @aspectMask@ member of @pSubresource@ /must/ not contain
--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or
--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
--
-- -   #VUID-vkGetImageSubresourceLayout2KHR-tiling-08717# If the @tiling@
--     of the @image@ is
--     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' and has a
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image format>,
--     then the @aspectMask@ member of @pSubresource@ /must/ be a single
--     valid
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-planes-image-aspect multi-planar aspect mask>
--     bit
--
-- -   #VUID-vkGetImageSubresourceLayout2KHR-image-01895# If @image@ was
--     created with the
--     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID'
--     external memory handle type, then @image@ /must/ be bound to memory
--
-- -   #VUID-vkGetImageSubresourceLayout2KHR-tiling-02271# If the @tiling@
--     of the @image@ is
--     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT',
--     then the @aspectMask@ member of @pSubresource@ /must/ be
--     @VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT@ and the index /i/ /must/ be
--     less than the
--     'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.DrmFormatModifierPropertiesEXT'::@drmFormatModifierPlaneCount@
--     associated with the image’s @format@ and
--     'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierPropertiesEXT'::@drmFormatModifier@
--
-- == Valid Usage (Implicit)
--
-- -   #VUID-vkGetImageSubresourceLayout2KHR-device-parameter# @device@
--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
--
-- -   #VUID-vkGetImageSubresourceLayout2KHR-image-parameter# @image@
--     /must/ be a valid 'Vulkan.Core10.Handles.Image' handle
--
-- -   #VUID-vkGetImageSubresourceLayout2KHR-pSubresource-parameter#
--     @pSubresource@ /must/ be a valid pointer to a valid
--     'ImageSubresource2KHR' structure
--
-- -   #VUID-vkGetImageSubresourceLayout2KHR-pLayout-parameter# @pLayout@
--     /must/ be a valid pointer to a 'SubresourceLayout2KHR' structure
--
-- -   #VUID-vkGetImageSubresourceLayout2KHR-image-parent# @image@ /must/
--     have been created, allocated, or retrieved from @device@
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>,
-- 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.Image',
-- 'ImageSubresource2KHR', 'SubresourceLayout2KHR'
getImageSubresourceLayout2KHR :: forall a io
                               . ( Extendss SubresourceLayout2KHR a
                                 , PokeChain a
                                 , PeekChain a
                                 , MonadIO io )
                              => -- | @device@ is the logical device that owns the image.
                                 Device
                              -> -- | @image@ is the image whose layout is being queried.
                                 Image
                              -> -- | @pSubresource@ is a pointer to a 'ImageSubresource2KHR' structure
                                 -- selecting a specific image for the image subresource.
                                 ImageSubresource2KHR
                              -> io (SubresourceLayout2KHR a)
getImageSubresourceLayout2KHR :: forall (a :: [*]) (io :: * -> *).
(Extendss SubresourceLayout2KHR a, PokeChain a, PeekChain a,
 MonadIO io) =>
Device
-> Image -> ImageSubresource2KHR -> io (SubresourceLayout2KHR a)
getImageSubresourceLayout2KHR Device
device Image
image ImageSubresource2KHR
subresource = forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT forall a b. (a -> b) -> a -> b
$ do
  let vkGetImageSubresourceLayout2KHRPtr :: FunPtr
  (Ptr Device_T
   -> Image
   -> ("pSubresource" ::: Ptr ImageSubresource2KHR)
   -> ("pLayout" ::: Ptr (SomeStruct SubresourceLayout2KHR))
   -> IO ())
vkGetImageSubresourceLayout2KHRPtr = DeviceCmds
-> FunPtr
     (Ptr Device_T
      -> Image
      -> ("pSubresource" ::: Ptr ImageSubresource2KHR)
      -> ("pLayout" ::: Ptr (SomeStruct SubresourceLayout2KHR))
      -> IO ())
pVkGetImageSubresourceLayout2KHR (case Device
device of Device{DeviceCmds
deviceCmds :: DeviceCmds
$sel:deviceCmds:Device :: Device -> DeviceCmds
deviceCmds} -> DeviceCmds
deviceCmds)
  forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
  (Ptr Device_T
   -> Image
   -> ("pSubresource" ::: Ptr ImageSubresource2KHR)
   -> ("pLayout" ::: Ptr (SomeStruct SubresourceLayout2KHR))
   -> IO ())
vkGetImageSubresourceLayout2KHRPtr forall a. Eq a => a -> a -> Bool
/= forall a. FunPtr a
nullFunPtr) forall a b. (a -> b) -> a -> b
$
    forall e a. Exception e => e -> IO a
throwIO forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError forall a. Maybe a
Nothing IOErrorType
InvalidArgument String
"" String
"The function pointer for vkGetImageSubresourceLayout2KHR is null" forall a. Maybe a
Nothing forall a. Maybe a
Nothing
  let vkGetImageSubresourceLayout2KHR' :: Ptr Device_T
-> Image
-> ("pSubresource" ::: Ptr ImageSubresource2KHR)
-> ("pLayout" ::: Ptr (SomeStruct SubresourceLayout2KHR))
-> IO ()
vkGetImageSubresourceLayout2KHR' = FunPtr
  (Ptr Device_T
   -> Image
   -> ("pSubresource" ::: Ptr ImageSubresource2KHR)
   -> ("pLayout" ::: Ptr (SomeStruct SubresourceLayout2KHR))
   -> IO ())
-> Ptr Device_T
-> Image
-> ("pSubresource" ::: Ptr ImageSubresource2KHR)
-> ("pLayout" ::: Ptr (SomeStruct SubresourceLayout2KHR))
-> IO ()
mkVkGetImageSubresourceLayout2KHR FunPtr
  (Ptr Device_T
   -> Image
   -> ("pSubresource" ::: Ptr ImageSubresource2KHR)
   -> ("pLayout" ::: Ptr (SomeStruct SubresourceLayout2KHR))
   -> IO ())
vkGetImageSubresourceLayout2KHRPtr
  "pSubresource" ::: Ptr ImageSubresource2KHR
pSubresource <- forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT forall a b. (a -> b) -> a -> b
$ forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
withCStruct (ImageSubresource2KHR
subresource)
  Ptr (SubresourceLayout2KHR a)
pPLayout <- forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (forall a b. ToCStruct a => (Ptr a -> IO b) -> IO b
withZeroCStruct @(SubresourceLayout2KHR _))
  forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall a. String -> IO a -> IO a
traceAroundEvent String
"vkGetImageSubresourceLayout2KHR" (Ptr Device_T
-> Image
-> ("pSubresource" ::: Ptr ImageSubresource2KHR)
-> ("pLayout" ::: Ptr (SomeStruct SubresourceLayout2KHR))
-> IO ()
vkGetImageSubresourceLayout2KHR'
                                                               (Device -> Ptr Device_T
deviceHandle (Device
device))
                                                               (Image
image)
                                                               "pSubresource" ::: Ptr ImageSubresource2KHR
pSubresource
                                                               (forall (a :: [*] -> *) (es :: [*]).
Ptr (a es) -> Ptr (SomeStruct a)
forgetExtensions (Ptr (SubresourceLayout2KHR a)
pPLayout)))
  SubresourceLayout2KHR a
pLayout <- forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @(SubresourceLayout2KHR _) Ptr (SubresourceLayout2KHR a)
pPLayout
  forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ (SubresourceLayout2KHR a
pLayout)


foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
  unsafe
#endif
  "dynamic" mkVkGetDeviceImageSubresourceLayoutKHR
  :: FunPtr (Ptr Device_T -> Ptr DeviceImageSubresourceInfoKHR -> Ptr (SomeStruct SubresourceLayout2KHR) -> IO ()) -> Ptr Device_T -> Ptr DeviceImageSubresourceInfoKHR -> Ptr (SomeStruct SubresourceLayout2KHR) -> IO ()

-- | vkGetDeviceImageSubresourceLayoutKHR - Retrieve information about an
-- image subresource without an image object
--
-- = Description
--
-- 'getDeviceImageSubresourceLayoutKHR' behaves similarly to
-- 'getImageSubresourceLayout2KHR', but uses a
-- 'Vulkan.Core10.Image.ImageCreateInfo' structure to specify the image
-- rather than a 'Vulkan.Core10.Handles.Image' object.
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>,
-- 'Vulkan.Core10.Handles.Device', 'DeviceImageSubresourceInfoKHR',
-- 'SubresourceLayout2KHR'
getDeviceImageSubresourceLayoutKHR :: forall a io
                                    . ( Extendss SubresourceLayout2KHR a
                                      , PokeChain a
                                      , PeekChain a
                                      , MonadIO io )
                                   => -- | @device@ is the logical device that owns the image.
                                      --
                                      -- #VUID-vkGetDeviceImageSubresourceLayoutKHR-device-parameter# @device@
                                      -- /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
                                      Device
                                   -> -- | @pInfo@ is a pointer to a 'DeviceImageSubresourceInfoKHR' structure
                                      -- containing parameters required for the subresource layout query.
                                      --
                                      -- #VUID-vkGetDeviceImageSubresourceLayoutKHR-pInfo-parameter# @pInfo@
                                      -- /must/ be a valid pointer to a valid 'DeviceImageSubresourceInfoKHR'
                                      -- structure
                                      DeviceImageSubresourceInfoKHR
                                   -> io (SubresourceLayout2KHR a)
getDeviceImageSubresourceLayoutKHR :: forall (a :: [*]) (io :: * -> *).
(Extendss SubresourceLayout2KHR a, PokeChain a, PeekChain a,
 MonadIO io) =>
Device
-> DeviceImageSubresourceInfoKHR -> io (SubresourceLayout2KHR a)
getDeviceImageSubresourceLayoutKHR Device
device DeviceImageSubresourceInfoKHR
info = forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT forall a b. (a -> b) -> a -> b
$ do
  let vkGetDeviceImageSubresourceLayoutKHRPtr :: FunPtr
  (Ptr Device_T
   -> ("pInfo" ::: Ptr DeviceImageSubresourceInfoKHR)
   -> ("pLayout" ::: Ptr (SomeStruct SubresourceLayout2KHR))
   -> IO ())
vkGetDeviceImageSubresourceLayoutKHRPtr = DeviceCmds
-> FunPtr
     (Ptr Device_T
      -> ("pInfo" ::: Ptr DeviceImageSubresourceInfoKHR)
      -> ("pLayout" ::: Ptr (SomeStruct SubresourceLayout2KHR))
      -> IO ())
pVkGetDeviceImageSubresourceLayoutKHR (case Device
device of Device{DeviceCmds
deviceCmds :: DeviceCmds
$sel:deviceCmds:Device :: Device -> DeviceCmds
deviceCmds} -> DeviceCmds
deviceCmds)
  forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
  (Ptr Device_T
   -> ("pInfo" ::: Ptr DeviceImageSubresourceInfoKHR)
   -> ("pLayout" ::: Ptr (SomeStruct SubresourceLayout2KHR))
   -> IO ())
vkGetDeviceImageSubresourceLayoutKHRPtr forall a. Eq a => a -> a -> Bool
/= forall a. FunPtr a
nullFunPtr) forall a b. (a -> b) -> a -> b
$
    forall e a. Exception e => e -> IO a
throwIO forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError forall a. Maybe a
Nothing IOErrorType
InvalidArgument String
"" String
"The function pointer for vkGetDeviceImageSubresourceLayoutKHR is null" forall a. Maybe a
Nothing forall a. Maybe a
Nothing
  let vkGetDeviceImageSubresourceLayoutKHR' :: Ptr Device_T
-> ("pInfo" ::: Ptr DeviceImageSubresourceInfoKHR)
-> ("pLayout" ::: Ptr (SomeStruct SubresourceLayout2KHR))
-> IO ()
vkGetDeviceImageSubresourceLayoutKHR' = FunPtr
  (Ptr Device_T
   -> ("pInfo" ::: Ptr DeviceImageSubresourceInfoKHR)
   -> ("pLayout" ::: Ptr (SomeStruct SubresourceLayout2KHR))
   -> IO ())
-> Ptr Device_T
-> ("pInfo" ::: Ptr DeviceImageSubresourceInfoKHR)
-> ("pLayout" ::: Ptr (SomeStruct SubresourceLayout2KHR))
-> IO ()
mkVkGetDeviceImageSubresourceLayoutKHR FunPtr
  (Ptr Device_T
   -> ("pInfo" ::: Ptr DeviceImageSubresourceInfoKHR)
   -> ("pLayout" ::: Ptr (SomeStruct SubresourceLayout2KHR))
   -> IO ())
vkGetDeviceImageSubresourceLayoutKHRPtr
  "pInfo" ::: Ptr DeviceImageSubresourceInfoKHR
pInfo <- forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT forall a b. (a -> b) -> a -> b
$ forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
withCStruct (DeviceImageSubresourceInfoKHR
info)
  Ptr (SubresourceLayout2KHR a)
pPLayout <- forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (forall a b. ToCStruct a => (Ptr a -> IO b) -> IO b
withZeroCStruct @(SubresourceLayout2KHR _))
  forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall a. String -> IO a -> IO a
traceAroundEvent String
"vkGetDeviceImageSubresourceLayoutKHR" (Ptr Device_T
-> ("pInfo" ::: Ptr DeviceImageSubresourceInfoKHR)
-> ("pLayout" ::: Ptr (SomeStruct SubresourceLayout2KHR))
-> IO ()
vkGetDeviceImageSubresourceLayoutKHR'
                                                                    (Device -> Ptr Device_T
deviceHandle (Device
device))
                                                                    "pInfo" ::: Ptr DeviceImageSubresourceInfoKHR
pInfo
                                                                    (forall (a :: [*] -> *) (es :: [*]).
Ptr (a es) -> Ptr (SomeStruct a)
forgetExtensions (Ptr (SubresourceLayout2KHR a)
pPLayout)))
  SubresourceLayout2KHR a
pLayout <- forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @(SubresourceLayout2KHR _) Ptr (SubresourceLayout2KHR a)
pPLayout
  forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ (SubresourceLayout2KHR a
pLayout)


-- No documentation found for TopLevel "VK_BUFFER_USAGE_2_RAY_TRACING_BIT_NV"
pattern $bBUFFER_USAGE_2_RAY_TRACING_BIT_NV :: BufferUsageFlagBits2KHR
$mBUFFER_USAGE_2_RAY_TRACING_BIT_NV :: forall {r}.
BufferUsageFlagBits2KHR -> ((# #) -> r) -> ((# #) -> r) -> r
BUFFER_USAGE_2_RAY_TRACING_BIT_NV = BUFFER_USAGE_2_SHADER_BINDING_TABLE_BIT_KHR


-- | VkBufferUsageFlags2CreateInfoKHR - Extended buffer usage flags
--
-- = Description
--
-- If this structure is included in the @pNext@ chain of a buffer creation
-- structure, @usage@ is used instead of the corresponding @usage@ value
-- passed in that creation structure, allowing additional usage flags to be
-- specified. If this structure is included in the @pNext@ chain of a
-- buffer query structure, the usage flags of the buffer are returned in
-- @usage@ of this structure, and the usage flags representable in @usage@
-- of the buffer query structure are also returned in that field.
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>,
-- 'Vulkan.Extensions.VK_AMDX_shader_enqueue.BufferUsageFlags2KHR',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data BufferUsageFlags2CreateInfoKHR = BufferUsageFlags2CreateInfoKHR
  { -- | @usage@ is a bitmask of
    -- 'Vulkan.Extensions.VK_AMDX_shader_enqueue.BufferUsageFlagBits2KHR'
    -- specifying allowed usages of the buffer.
    --
    -- #VUID-VkBufferUsageFlags2CreateInfoKHR-usage-parameter# @usage@ /must/
    -- be a valid combination of
    -- 'Vulkan.Extensions.VK_AMDX_shader_enqueue.BufferUsageFlagBits2KHR'
    -- values
    --
    -- #VUID-VkBufferUsageFlags2CreateInfoKHR-usage-requiredbitmask# @usage@
    -- /must/ not be @0@
    BufferUsageFlags2CreateInfoKHR -> BufferUsageFlagBits2KHR
usage :: BufferUsageFlags2KHR }
  deriving (Typeable, BufferUsageFlags2CreateInfoKHR
-> BufferUsageFlags2CreateInfoKHR -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: BufferUsageFlags2CreateInfoKHR
-> BufferUsageFlags2CreateInfoKHR -> Bool
$c/= :: BufferUsageFlags2CreateInfoKHR
-> BufferUsageFlags2CreateInfoKHR -> Bool
== :: BufferUsageFlags2CreateInfoKHR
-> BufferUsageFlags2CreateInfoKHR -> Bool
$c== :: BufferUsageFlags2CreateInfoKHR
-> BufferUsageFlags2CreateInfoKHR -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (BufferUsageFlags2CreateInfoKHR)
#endif
deriving instance Show BufferUsageFlags2CreateInfoKHR

instance ToCStruct BufferUsageFlags2CreateInfoKHR where
  withCStruct :: forall b.
BufferUsageFlags2CreateInfoKHR
-> (Ptr BufferUsageFlags2CreateInfoKHR -> IO b) -> IO b
withCStruct BufferUsageFlags2CreateInfoKHR
x Ptr BufferUsageFlags2CreateInfoKHR -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 forall a b. (a -> b) -> a -> b
$ \Ptr BufferUsageFlags2CreateInfoKHR
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr BufferUsageFlags2CreateInfoKHR
p BufferUsageFlags2CreateInfoKHR
x (Ptr BufferUsageFlags2CreateInfoKHR -> IO b
f Ptr BufferUsageFlags2CreateInfoKHR
p)
  pokeCStruct :: forall b.
Ptr BufferUsageFlags2CreateInfoKHR
-> BufferUsageFlags2CreateInfoKHR -> IO b -> IO b
pokeCStruct Ptr BufferUsageFlags2CreateInfoKHR
p BufferUsageFlags2CreateInfoKHR{BufferUsageFlagBits2KHR
usage :: BufferUsageFlagBits2KHR
$sel:usage:BufferUsageFlags2CreateInfoKHR :: BufferUsageFlags2CreateInfoKHR -> BufferUsageFlagBits2KHR
..} IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr BufferUsageFlags2CreateInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr BufferUsageFlags2CreateInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr BufferUsageFlags2CreateInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr BufferUsageFlags2KHR)) (BufferUsageFlagBits2KHR
usage)
    IO b
f
  cStructSize :: Int
cStructSize = Int
24
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b. Ptr BufferUsageFlags2CreateInfoKHR -> IO b -> IO b
pokeZeroCStruct Ptr BufferUsageFlags2CreateInfoKHR
p IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr BufferUsageFlags2CreateInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr BufferUsageFlags2CreateInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr BufferUsageFlags2CreateInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr BufferUsageFlags2KHR)) (forall a. Zero a => a
zero)
    IO b
f

instance FromCStruct BufferUsageFlags2CreateInfoKHR where
  peekCStruct :: Ptr BufferUsageFlags2CreateInfoKHR
-> IO BufferUsageFlags2CreateInfoKHR
peekCStruct Ptr BufferUsageFlags2CreateInfoKHR
p = do
    BufferUsageFlagBits2KHR
usage <- forall a. Storable a => Ptr a -> IO a
peek @BufferUsageFlags2KHR ((Ptr BufferUsageFlags2CreateInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr BufferUsageFlags2KHR))
    forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ BufferUsageFlagBits2KHR -> BufferUsageFlags2CreateInfoKHR
BufferUsageFlags2CreateInfoKHR
             BufferUsageFlagBits2KHR
usage

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

instance Zero BufferUsageFlags2CreateInfoKHR where
  zero :: BufferUsageFlags2CreateInfoKHR
zero = BufferUsageFlagBits2KHR -> BufferUsageFlags2CreateInfoKHR
BufferUsageFlags2CreateInfoKHR
           forall a. Zero a => a
zero


-- | VkPipelineCreateFlags2CreateInfoKHR - Extended pipeline create flags
--
-- = Description
--
-- If this structure is included in the @pNext@ chain of a pipeline
-- creation structure, @flags@ is used instead of the corresponding @flags@
-- value passed in that creation structure, allowing additional creation
-- flags to be specified.
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>,
-- 'PipelineCreateFlags2KHR',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data PipelineCreateFlags2CreateInfoKHR = PipelineCreateFlags2CreateInfoKHR
  { -- | @flags@ is a bitmask of 'PipelineCreateFlagBits2KHR' specifying how a
    -- pipeline will be generated.
    --
    -- #VUID-VkPipelineCreateFlags2CreateInfoKHR-flags-parameter# @flags@
    -- /must/ be a valid combination of 'PipelineCreateFlagBits2KHR' values
    --
    -- #VUID-VkPipelineCreateFlags2CreateInfoKHR-flags-requiredbitmask# @flags@
    -- /must/ not be @0@
    PipelineCreateFlags2CreateInfoKHR -> PipelineCreateFlagBits2KHR
flags :: PipelineCreateFlags2KHR }
  deriving (Typeable, PipelineCreateFlags2CreateInfoKHR
-> PipelineCreateFlags2CreateInfoKHR -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PipelineCreateFlags2CreateInfoKHR
-> PipelineCreateFlags2CreateInfoKHR -> Bool
$c/= :: PipelineCreateFlags2CreateInfoKHR
-> PipelineCreateFlags2CreateInfoKHR -> Bool
== :: PipelineCreateFlags2CreateInfoKHR
-> PipelineCreateFlags2CreateInfoKHR -> Bool
$c== :: PipelineCreateFlags2CreateInfoKHR
-> PipelineCreateFlags2CreateInfoKHR -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PipelineCreateFlags2CreateInfoKHR)
#endif
deriving instance Show PipelineCreateFlags2CreateInfoKHR

instance ToCStruct PipelineCreateFlags2CreateInfoKHR where
  withCStruct :: forall b.
PipelineCreateFlags2CreateInfoKHR
-> (Ptr PipelineCreateFlags2CreateInfoKHR -> IO b) -> IO b
withCStruct PipelineCreateFlags2CreateInfoKHR
x Ptr PipelineCreateFlags2CreateInfoKHR -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 forall a b. (a -> b) -> a -> b
$ \Ptr PipelineCreateFlags2CreateInfoKHR
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PipelineCreateFlags2CreateInfoKHR
p PipelineCreateFlags2CreateInfoKHR
x (Ptr PipelineCreateFlags2CreateInfoKHR -> IO b
f Ptr PipelineCreateFlags2CreateInfoKHR
p)
  pokeCStruct :: forall b.
Ptr PipelineCreateFlags2CreateInfoKHR
-> PipelineCreateFlags2CreateInfoKHR -> IO b -> IO b
pokeCStruct Ptr PipelineCreateFlags2CreateInfoKHR
p PipelineCreateFlags2CreateInfoKHR{PipelineCreateFlagBits2KHR
flags :: PipelineCreateFlagBits2KHR
$sel:flags:PipelineCreateFlags2CreateInfoKHR :: PipelineCreateFlags2CreateInfoKHR -> PipelineCreateFlagBits2KHR
..} IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineCreateFlags2CreateInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineCreateFlags2CreateInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineCreateFlags2CreateInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr PipelineCreateFlags2KHR)) (PipelineCreateFlagBits2KHR
flags)
    IO b
f
  cStructSize :: Int
cStructSize = Int
24
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b. Ptr PipelineCreateFlags2CreateInfoKHR -> IO b -> IO b
pokeZeroCStruct Ptr PipelineCreateFlags2CreateInfoKHR
p IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineCreateFlags2CreateInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineCreateFlags2CreateInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineCreateFlags2CreateInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr PipelineCreateFlags2KHR)) (forall a. Zero a => a
zero)
    IO b
f

instance FromCStruct PipelineCreateFlags2CreateInfoKHR where
  peekCStruct :: Ptr PipelineCreateFlags2CreateInfoKHR
-> IO PipelineCreateFlags2CreateInfoKHR
peekCStruct Ptr PipelineCreateFlags2CreateInfoKHR
p = do
    PipelineCreateFlagBits2KHR
flags <- forall a. Storable a => Ptr a -> IO a
peek @PipelineCreateFlags2KHR ((Ptr PipelineCreateFlags2CreateInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr PipelineCreateFlags2KHR))
    forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ PipelineCreateFlagBits2KHR -> PipelineCreateFlags2CreateInfoKHR
PipelineCreateFlags2CreateInfoKHR
             PipelineCreateFlagBits2KHR
flags

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

instance Zero PipelineCreateFlags2CreateInfoKHR where
  zero :: PipelineCreateFlags2CreateInfoKHR
zero = PipelineCreateFlagBits2KHR -> PipelineCreateFlags2CreateInfoKHR
PipelineCreateFlags2CreateInfoKHR
           forall a. Zero a => a
zero


-- | VkPhysicalDeviceMaintenance5FeaturesKHR - Structure describing whether
-- the implementation supports maintenance5 functionality
--
-- = Members
--
-- This structure describes the following feature:
--
-- = Description
--
-- If the 'PhysicalDeviceMaintenance5FeaturesKHR' 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. 'PhysicalDeviceMaintenance5FeaturesKHR' /can/ also be used in
-- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
-- selectively enable these features.
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>,
-- 'Vulkan.Core10.FundamentalTypes.Bool32',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data PhysicalDeviceMaintenance5FeaturesKHR = PhysicalDeviceMaintenance5FeaturesKHR
  { -- | #features-maintenance5# @maintenance5@ indicates that the implementation
    -- supports the following:
    --
    -- -   The ability to expose support for the optional format
    --     'Vulkan.Core10.Enums.Format.FORMAT_A1B5G5R5_UNORM_PACK16_KHR'.
    --
    -- -   The ability to expose support for the optional format
    --     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR'.
    --
    -- -   A property to indicate that multisample coverage operations are
    --     performed after sample counting in EarlyFragmentTests mode.
    --
    -- -   Creating a 'Vulkan.Core10.Handles.BufferView' with a subset of the
    --     associated 'Vulkan.Core10.Handles.Buffer' usage using
    --     'BufferUsageFlags2CreateInfoKHR'.
    --
    -- -   A new function 'cmdBindIndexBuffer2KHR', allowing a range of memory
    --     to be bound as an index buffer.
    --
    -- -   'Vulkan.Core10.DeviceInitialization.getDeviceProcAddr' will return
    --     @NULL@ for function pointers of core functions for versions higher
    --     than the version requested by the application.
    --
    -- -   'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2'
    --     supports using 'Vulkan.Core10.APIConstants.WHOLE_SIZE' in the
    --     @pSizes@ parameter.
    --
    -- -   If @PointSize@ is not written, a default value of @1.0@ is used for
    --     the size of points.
    --
    -- -   'Vulkan.Core10.Shader.ShaderModuleCreateInfo' /can/ be added as a
    --     chained structure to pipeline creation via
    --     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo', rather than
    --     having to create a shader module.
    --
    -- -   A function 'getRenderingAreaGranularityKHR' to query the optimal
    --     render area for a dynamic rendering instance.
    --
    -- -   A property to indicate that depth\/stencil texturing operations with
    --     'Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_ONE' have
    --     defined behavior.
    --
    -- -   'getDeviceImageSubresourceLayoutKHR' allows an application to
    --     perform a 'Vulkan.Core10.Image.getImageSubresourceLayout' query
    --     without having to create an image.
    --
    -- -   'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS' as the
    --     @layerCount@ member of
    --     'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers'.
    --
    -- -   A property to indicate whether @PointSize@ controls the final
    --     rasterization of polygons if
    --     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-polygonmode polygon mode>
    --     is 'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_POINT'.
    --
    -- -   Two properties to indicate the non-strict line rasterization
    --     algorithm used.
    --
    -- -   Two new flags words 'PipelineCreateFlagBits2KHR' and
    --     'Vulkan.Extensions.VK_AMDX_shader_enqueue.BufferUsageFlagBits2KHR'.
    --
    -- -   Physical-device-level functions /can/ now be called with any value
    --     in the valid range for a type beyond the defined enumerants, such
    --     that applications can avoid checking individual features,
    --     extensions, or versions before querying supported properties of a
    --     particular enumerant.
    --
    -- -   Copies between images of any type are allowed, with 1D images
    --     treated as 2D images with a height of @1@.
    PhysicalDeviceMaintenance5FeaturesKHR -> Bool
maintenance5 :: Bool }
  deriving (Typeable, PhysicalDeviceMaintenance5FeaturesKHR
-> PhysicalDeviceMaintenance5FeaturesKHR -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PhysicalDeviceMaintenance5FeaturesKHR
-> PhysicalDeviceMaintenance5FeaturesKHR -> Bool
$c/= :: PhysicalDeviceMaintenance5FeaturesKHR
-> PhysicalDeviceMaintenance5FeaturesKHR -> Bool
== :: PhysicalDeviceMaintenance5FeaturesKHR
-> PhysicalDeviceMaintenance5FeaturesKHR -> Bool
$c== :: PhysicalDeviceMaintenance5FeaturesKHR
-> PhysicalDeviceMaintenance5FeaturesKHR -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceMaintenance5FeaturesKHR)
#endif
deriving instance Show PhysicalDeviceMaintenance5FeaturesKHR

instance ToCStruct PhysicalDeviceMaintenance5FeaturesKHR where
  withCStruct :: forall b.
PhysicalDeviceMaintenance5FeaturesKHR
-> (Ptr PhysicalDeviceMaintenance5FeaturesKHR -> IO b) -> IO b
withCStruct PhysicalDeviceMaintenance5FeaturesKHR
x Ptr PhysicalDeviceMaintenance5FeaturesKHR -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceMaintenance5FeaturesKHR
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceMaintenance5FeaturesKHR
p PhysicalDeviceMaintenance5FeaturesKHR
x (Ptr PhysicalDeviceMaintenance5FeaturesKHR -> IO b
f Ptr PhysicalDeviceMaintenance5FeaturesKHR
p)
  pokeCStruct :: forall b.
Ptr PhysicalDeviceMaintenance5FeaturesKHR
-> PhysicalDeviceMaintenance5FeaturesKHR -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceMaintenance5FeaturesKHR
p PhysicalDeviceMaintenance5FeaturesKHR{Bool
maintenance5 :: Bool
$sel:maintenance5:PhysicalDeviceMaintenance5FeaturesKHR :: PhysicalDeviceMaintenance5FeaturesKHR -> Bool
..} IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5FeaturesKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5FeaturesKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5FeaturesKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
maintenance5))
    IO b
f
  cStructSize :: Int
cStructSize = Int
24
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b. Ptr PhysicalDeviceMaintenance5FeaturesKHR -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceMaintenance5FeaturesKHR
p IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5FeaturesKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5FeaturesKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5FeaturesKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    IO b
f

instance FromCStruct PhysicalDeviceMaintenance5FeaturesKHR where
  peekCStruct :: Ptr PhysicalDeviceMaintenance5FeaturesKHR
-> IO PhysicalDeviceMaintenance5FeaturesKHR
peekCStruct Ptr PhysicalDeviceMaintenance5FeaturesKHR
p = do
    Bool32
maintenance5 <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceMaintenance5FeaturesKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
    forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ Bool -> PhysicalDeviceMaintenance5FeaturesKHR
PhysicalDeviceMaintenance5FeaturesKHR
             (Bool32 -> Bool
bool32ToBool Bool32
maintenance5)

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

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


-- | VkPhysicalDeviceMaintenance5PropertiesKHR - Structure describing various
-- implementation-defined properties introduced with VK_KHR_maintenance5
--
-- = Description
--
-- If the 'PhysicalDeviceMaintenance5PropertiesKHR' structure is included
-- in the @pNext@ chain of the
-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
-- structure passed to
-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceProperties2',
-- it is filled in with each corresponding implementation-dependent
-- property.
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>,
-- 'Vulkan.Core10.FundamentalTypes.Bool32',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data PhysicalDeviceMaintenance5PropertiesKHR = PhysicalDeviceMaintenance5PropertiesKHR
  { -- | @earlyFragmentMultisampleCoverageAfterSampleCounting@ is a boolean value
    -- indicating whether the
    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-shader fragment shading>
    -- and
    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-covg multisample coverage>
    -- operations are performed after
    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-samplecount sample counting>
    -- for
    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-shader fragment shaders>
    -- with @EarlyFragmentTests@ execution mode.
    PhysicalDeviceMaintenance5PropertiesKHR -> Bool
earlyFragmentMultisampleCoverageAfterSampleCounting :: Bool
  , -- | @earlyFragmentSampleMaskTestBeforeSampleCounting@ is a boolean value
    -- indicating whether the
    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-samplemask sample mask test>
    -- operation is performed before
    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-samplecount sample counting>
    -- for
    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-shader fragment shaders>
    -- using the @EarlyFragmentTests@ execution mode.
    PhysicalDeviceMaintenance5PropertiesKHR -> Bool
earlyFragmentSampleMaskTestBeforeSampleCounting :: Bool
  , -- | @depthStencilSwizzleOneSupport@ is a boolean indicating that
    -- depth\/stencil texturing operations with
    -- 'Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_ONE' have
    -- defined behavior.
    PhysicalDeviceMaintenance5PropertiesKHR -> Bool
depthStencilSwizzleOneSupport :: Bool
  , -- | @polygonModePointSize@ is a boolean value indicating whether the point
    -- size of the final rasterization of polygons with
    -- 'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_POINT' is controlled by
    -- @PointSize@.
    PhysicalDeviceMaintenance5PropertiesKHR -> Bool
polygonModePointSize :: Bool
  , -- | @nonStrictSinglePixelWideLinesUseParallelogram@ is a boolean value
    -- indicating whether non-strict lines with a width of 1.0 are rasterized
    -- as parallelograms or using Bresenham’s algorithm.
    PhysicalDeviceMaintenance5PropertiesKHR -> Bool
nonStrictSinglePixelWideLinesUseParallelogram :: Bool
  , -- | @nonStrictWideLinesUseParallelogram@ is a boolean value indicating
    -- whether non-strict lines with a width greater than 1.0 are rasterized as
    -- parallelograms or using Bresenham’s algorithm.
    PhysicalDeviceMaintenance5PropertiesKHR -> Bool
nonStrictWideLinesUseParallelogram :: Bool
  }
  deriving (Typeable, PhysicalDeviceMaintenance5PropertiesKHR
-> PhysicalDeviceMaintenance5PropertiesKHR -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PhysicalDeviceMaintenance5PropertiesKHR
-> PhysicalDeviceMaintenance5PropertiesKHR -> Bool
$c/= :: PhysicalDeviceMaintenance5PropertiesKHR
-> PhysicalDeviceMaintenance5PropertiesKHR -> Bool
== :: PhysicalDeviceMaintenance5PropertiesKHR
-> PhysicalDeviceMaintenance5PropertiesKHR -> Bool
$c== :: PhysicalDeviceMaintenance5PropertiesKHR
-> PhysicalDeviceMaintenance5PropertiesKHR -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceMaintenance5PropertiesKHR)
#endif
deriving instance Show PhysicalDeviceMaintenance5PropertiesKHR

instance ToCStruct PhysicalDeviceMaintenance5PropertiesKHR where
  withCStruct :: forall b.
PhysicalDeviceMaintenance5PropertiesKHR
-> (Ptr PhysicalDeviceMaintenance5PropertiesKHR -> IO b) -> IO b
withCStruct PhysicalDeviceMaintenance5PropertiesKHR
x Ptr PhysicalDeviceMaintenance5PropertiesKHR -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
40 forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceMaintenance5PropertiesKHR
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceMaintenance5PropertiesKHR
p PhysicalDeviceMaintenance5PropertiesKHR
x (Ptr PhysicalDeviceMaintenance5PropertiesKHR -> IO b
f Ptr PhysicalDeviceMaintenance5PropertiesKHR
p)
  pokeCStruct :: forall b.
Ptr PhysicalDeviceMaintenance5PropertiesKHR
-> PhysicalDeviceMaintenance5PropertiesKHR -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceMaintenance5PropertiesKHR
p PhysicalDeviceMaintenance5PropertiesKHR{Bool
nonStrictWideLinesUseParallelogram :: Bool
nonStrictSinglePixelWideLinesUseParallelogram :: Bool
polygonModePointSize :: Bool
depthStencilSwizzleOneSupport :: Bool
earlyFragmentSampleMaskTestBeforeSampleCounting :: Bool
earlyFragmentMultisampleCoverageAfterSampleCounting :: Bool
$sel:nonStrictWideLinesUseParallelogram:PhysicalDeviceMaintenance5PropertiesKHR :: PhysicalDeviceMaintenance5PropertiesKHR -> Bool
$sel:nonStrictSinglePixelWideLinesUseParallelogram:PhysicalDeviceMaintenance5PropertiesKHR :: PhysicalDeviceMaintenance5PropertiesKHR -> Bool
$sel:polygonModePointSize:PhysicalDeviceMaintenance5PropertiesKHR :: PhysicalDeviceMaintenance5PropertiesKHR -> Bool
$sel:depthStencilSwizzleOneSupport:PhysicalDeviceMaintenance5PropertiesKHR :: PhysicalDeviceMaintenance5PropertiesKHR -> Bool
$sel:earlyFragmentSampleMaskTestBeforeSampleCounting:PhysicalDeviceMaintenance5PropertiesKHR :: PhysicalDeviceMaintenance5PropertiesKHR -> Bool
$sel:earlyFragmentMultisampleCoverageAfterSampleCounting:PhysicalDeviceMaintenance5PropertiesKHR :: PhysicalDeviceMaintenance5PropertiesKHR -> Bool
..} IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5PropertiesKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5PropertiesKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5PropertiesKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
earlyFragmentMultisampleCoverageAfterSampleCounting))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5PropertiesKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
earlyFragmentSampleMaskTestBeforeSampleCounting))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5PropertiesKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
depthStencilSwizzleOneSupport))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5PropertiesKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
polygonModePointSize))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5PropertiesKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
nonStrictSinglePixelWideLinesUseParallelogram))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5PropertiesKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
nonStrictWideLinesUseParallelogram))
    IO b
f
  cStructSize :: Int
cStructSize = Int
40
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceMaintenance5PropertiesKHR -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceMaintenance5PropertiesKHR
p IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5PropertiesKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5PropertiesKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5PropertiesKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5PropertiesKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5PropertiesKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5PropertiesKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5PropertiesKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5PropertiesKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    IO b
f

instance FromCStruct PhysicalDeviceMaintenance5PropertiesKHR where
  peekCStruct :: Ptr PhysicalDeviceMaintenance5PropertiesKHR
-> IO PhysicalDeviceMaintenance5PropertiesKHR
peekCStruct Ptr PhysicalDeviceMaintenance5PropertiesKHR
p = do
    Bool32
earlyFragmentMultisampleCoverageAfterSampleCounting <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceMaintenance5PropertiesKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
    Bool32
earlyFragmentSampleMaskTestBeforeSampleCounting <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceMaintenance5PropertiesKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32))
    Bool32
depthStencilSwizzleOneSupport <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceMaintenance5PropertiesKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Bool32))
    Bool32
polygonModePointSize <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceMaintenance5PropertiesKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr Bool32))
    Bool32
nonStrictSinglePixelWideLinesUseParallelogram <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceMaintenance5PropertiesKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Bool32))
    Bool32
nonStrictWideLinesUseParallelogram <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceMaintenance5PropertiesKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr Bool32))
    forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> PhysicalDeviceMaintenance5PropertiesKHR
PhysicalDeviceMaintenance5PropertiesKHR
             (Bool32 -> Bool
bool32ToBool Bool32
earlyFragmentMultisampleCoverageAfterSampleCounting)
             (Bool32 -> Bool
bool32ToBool Bool32
earlyFragmentSampleMaskTestBeforeSampleCounting)
             (Bool32 -> Bool
bool32ToBool Bool32
depthStencilSwizzleOneSupport)
             (Bool32 -> Bool
bool32ToBool Bool32
polygonModePointSize)
             (Bool32 -> Bool
bool32ToBool Bool32
nonStrictSinglePixelWideLinesUseParallelogram)
             (Bool32 -> Bool
bool32ToBool Bool32
nonStrictWideLinesUseParallelogram)

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

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


-- | VkRenderingAreaInfoKHR - Structure describing rendering area granularity
-- query info
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>,
-- 'Vulkan.Core10.Enums.Format.Format',
-- 'Vulkan.Core10.Enums.StructureType.StructureType',
-- 'getRenderingAreaGranularityKHR'
data RenderingAreaInfoKHR = RenderingAreaInfoKHR
  { -- | @viewMask@ is the viewMask used for rendering.
    RenderingAreaInfoKHR -> Word32
viewMask :: Word32
  , -- | @pColorAttachmentFormats@ is a pointer to an array of
    -- 'Vulkan.Core10.Enums.Format.Format' values defining the format of color
    -- attachments used in the render pass instance.
    RenderingAreaInfoKHR -> Vector Format
colorAttachmentFormats :: Vector Format
  , -- | @depthAttachmentFormat@ is a 'Vulkan.Core10.Enums.Format.Format' value
    -- defining the format of the depth attachment used in the render pass
    -- instance.
    RenderingAreaInfoKHR -> Format
depthAttachmentFormat :: Format
  , -- | @stencilAttachmentFormat@ is a 'Vulkan.Core10.Enums.Format.Format' value
    -- defining the format of the stencil attachment used in the render pass
    -- instance.
    RenderingAreaInfoKHR -> Format
stencilAttachmentFormat :: Format
  }
  deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (RenderingAreaInfoKHR)
#endif
deriving instance Show RenderingAreaInfoKHR

instance ToCStruct RenderingAreaInfoKHR where
  withCStruct :: forall b.
RenderingAreaInfoKHR
-> (("pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR) -> IO b)
-> IO b
withCStruct RenderingAreaInfoKHR
x ("pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR) -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
40 forall a b. (a -> b) -> a -> b
$ \"pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct "pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR
p RenderingAreaInfoKHR
x (("pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR) -> IO b
f "pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR
p)
  pokeCStruct :: forall b.
("pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR)
-> RenderingAreaInfoKHR -> IO b -> IO b
pokeCStruct "pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR
p RenderingAreaInfoKHR{Word32
Vector Format
Format
stencilAttachmentFormat :: Format
depthAttachmentFormat :: Format
colorAttachmentFormats :: Vector Format
viewMask :: Word32
$sel:stencilAttachmentFormat:RenderingAreaInfoKHR :: RenderingAreaInfoKHR -> Format
$sel:depthAttachmentFormat:RenderingAreaInfoKHR :: RenderingAreaInfoKHR -> Format
$sel:colorAttachmentFormats:RenderingAreaInfoKHR :: RenderingAreaInfoKHR -> Vector Format
$sel:viewMask:RenderingAreaInfoKHR :: RenderingAreaInfoKHR -> Word32
..} IO b
f = forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT forall a b. (a -> b) -> a -> b
$ do
    forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall a. Storable a => Ptr a -> a -> IO ()
poke (("pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR)
    forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall a. Storable a => Ptr a -> a -> IO ()
poke (("pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
    forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall a. Storable a => Ptr a -> a -> IO ()
poke (("pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) (Word32
viewMask)
    forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall a. Storable a => Ptr a -> a -> IO ()
poke (("pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Word32)) ((forall a b. (Integral a, Num b) => a -> b
fromIntegral (forall a. Vector a -> Int
Data.Vector.length forall a b. (a -> b) -> a -> b
$ (Vector Format
colorAttachmentFormats)) :: Word32))
    Ptr Format
pPColorAttachmentFormats' <- forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT forall a b. (a -> b) -> a -> b
$ forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes @Format ((forall a. Vector a -> Int
Data.Vector.length (Vector Format
colorAttachmentFormats)) forall a. Num a => a -> a -> a
* Int
4)
    forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m ()
Data.Vector.imapM_ (\Int
i Format
e -> forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr Format
pPColorAttachmentFormats' forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
4 forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr Format) (Format
e)) (Vector Format
colorAttachmentFormats)
    forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall a. Storable a => Ptr a -> a -> IO ()
poke (("pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr (Ptr Format))) (Ptr Format
pPColorAttachmentFormats')
    forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall a. Storable a => Ptr a -> a -> IO ()
poke (("pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Format)) (Format
depthAttachmentFormat)
    forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall a. Storable a => Ptr a -> a -> IO ()
poke (("pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr Format)) (Format
stencilAttachmentFormat)
    forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ IO b
f
  cStructSize :: Int
cStructSize = Int
40
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b.
("pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR) -> IO b -> IO b
pokeZeroCStruct "pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR
p IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke (("pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR)
    forall a. Storable a => Ptr a -> a -> IO ()
poke (("pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
    forall a. Storable a => Ptr a -> a -> IO ()
poke (("pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke (("pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Format)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke (("pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr Format)) (forall a. Zero a => a
zero)
    IO b
f

instance FromCStruct RenderingAreaInfoKHR where
  peekCStruct :: ("pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR)
-> IO RenderingAreaInfoKHR
peekCStruct "pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR
p = do
    Word32
viewMask <- forall a. Storable a => Ptr a -> IO a
peek @Word32 (("pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32))
    Word32
colorAttachmentCount <- forall a. Storable a => Ptr a -> IO a
peek @Word32 (("pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Word32))
    Ptr Format
pColorAttachmentFormats <- forall a. Storable a => Ptr a -> IO a
peek @(Ptr Format) (("pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr (Ptr Format)))
    Vector Format
pColorAttachmentFormats' <- forall (m :: * -> *) a.
Monad m =>
Int -> (Int -> m a) -> m (Vector a)
generateM (forall a b. (Integral a, Num b) => a -> b
fromIntegral Word32
colorAttachmentCount) (\Int
i -> forall a. Storable a => Ptr a -> IO a
peek @Format ((Ptr Format
pColorAttachmentFormats forall a. Ptr a -> Int -> Ptr a
`advancePtrBytes` (Int
4 forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr Format)))
    Format
depthAttachmentFormat <- forall a. Storable a => Ptr a -> IO a
peek @Format (("pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Format))
    Format
stencilAttachmentFormat <- forall a. Storable a => Ptr a -> IO a
peek @Format (("pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr Format))
    forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ Word32 -> Vector Format -> Format -> Format -> RenderingAreaInfoKHR
RenderingAreaInfoKHR
             Word32
viewMask
             Vector Format
pColorAttachmentFormats'
             Format
depthAttachmentFormat
             Format
stencilAttachmentFormat

instance Zero RenderingAreaInfoKHR where
  zero :: RenderingAreaInfoKHR
zero = Word32 -> Vector Format -> Format -> Format -> RenderingAreaInfoKHR
RenderingAreaInfoKHR
           forall a. Zero a => a
zero
           forall a. Monoid a => a
mempty
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero


-- | VkImageSubresource2KHR - Structure specifying an image subresource
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_host_image_copy VK_EXT_host_image_copy>,
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_compression_control VK_EXT_image_compression_control>,
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>,
-- 'DeviceImageSubresourceInfoKHR',
-- 'Vulkan.Core10.SparseResourceMemoryManagement.ImageSubresource',
-- 'Vulkan.Core10.Enums.StructureType.StructureType',
-- 'Vulkan.Extensions.VK_EXT_host_image_copy.getImageSubresourceLayout2EXT',
-- 'getImageSubresourceLayout2KHR'
data ImageSubresource2KHR = ImageSubresource2KHR
  { -- | @imageSubresource@ is a
    -- 'Vulkan.Core10.SparseResourceMemoryManagement.ImageSubresource'
    -- structure.
    --
    -- #VUID-VkImageSubresource2KHR-imageSubresource-parameter#
    -- @imageSubresource@ /must/ be a valid
    -- 'Vulkan.Core10.SparseResourceMemoryManagement.ImageSubresource'
    -- structure
    ImageSubresource2KHR -> ImageSubresource
imageSubresource :: ImageSubresource }
  deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (ImageSubresource2KHR)
#endif
deriving instance Show ImageSubresource2KHR

instance ToCStruct ImageSubresource2KHR where
  withCStruct :: forall b.
ImageSubresource2KHR
-> (("pSubresource" ::: Ptr ImageSubresource2KHR) -> IO b) -> IO b
withCStruct ImageSubresource2KHR
x ("pSubresource" ::: Ptr ImageSubresource2KHR) -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 forall a b. (a -> b) -> a -> b
$ \"pSubresource" ::: Ptr ImageSubresource2KHR
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct "pSubresource" ::: Ptr ImageSubresource2KHR
p ImageSubresource2KHR
x (("pSubresource" ::: Ptr ImageSubresource2KHR) -> IO b
f "pSubresource" ::: Ptr ImageSubresource2KHR
p)
  pokeCStruct :: forall b.
("pSubresource" ::: Ptr ImageSubresource2KHR)
-> ImageSubresource2KHR -> IO b -> IO b
pokeCStruct "pSubresource" ::: Ptr ImageSubresource2KHR
p ImageSubresource2KHR{ImageSubresource
imageSubresource :: ImageSubresource
$sel:imageSubresource:ImageSubresource2KHR :: ImageSubresource2KHR -> ImageSubresource
..} IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke (("pSubresource" ::: Ptr ImageSubresource2KHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR)
    forall a. Storable a => Ptr a -> a -> IO ()
poke (("pSubresource" ::: Ptr ImageSubresource2KHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
    forall a. Storable a => Ptr a -> a -> IO ()
poke (("pSubresource" ::: Ptr ImageSubresource2KHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr ImageSubresource)) (ImageSubresource
imageSubresource)
    IO b
f
  cStructSize :: Int
cStructSize = Int
32
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b.
("pSubresource" ::: Ptr ImageSubresource2KHR) -> IO b -> IO b
pokeZeroCStruct "pSubresource" ::: Ptr ImageSubresource2KHR
p IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke (("pSubresource" ::: Ptr ImageSubresource2KHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR)
    forall a. Storable a => Ptr a -> a -> IO ()
poke (("pSubresource" ::: Ptr ImageSubresource2KHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
    forall a. Storable a => Ptr a -> a -> IO ()
poke (("pSubresource" ::: Ptr ImageSubresource2KHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr ImageSubresource)) (forall a. Zero a => a
zero)
    IO b
f

instance FromCStruct ImageSubresource2KHR where
  peekCStruct :: ("pSubresource" ::: Ptr ImageSubresource2KHR)
-> IO ImageSubresource2KHR
peekCStruct "pSubresource" ::: Ptr ImageSubresource2KHR
p = do
    ImageSubresource
imageSubresource <- forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @ImageSubresource (("pSubresource" ::: Ptr ImageSubresource2KHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr ImageSubresource))
    forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ ImageSubresource -> ImageSubresource2KHR
ImageSubresource2KHR
             ImageSubresource
imageSubresource

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

instance Zero ImageSubresource2KHR where
  zero :: ImageSubresource2KHR
zero = ImageSubresource -> ImageSubresource2KHR
ImageSubresource2KHR
           forall a. Zero a => a
zero


-- | VkSubresourceLayout2KHR - Structure specifying subresource layout
--
-- == Valid Usage (Implicit)
--
-- -   #VUID-VkSubresourceLayout2KHR-sType-sType# @sType@ /must/ be
--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR'
--
-- -   #VUID-VkSubresourceLayout2KHR-pNext-pNext# Each @pNext@ member of
--     any structure (including this one) in the @pNext@ chain /must/ be
--     either @NULL@ or a pointer to a valid instance of
--     'Vulkan.Extensions.VK_EXT_image_compression_control.ImageCompressionPropertiesEXT'
--     or
--     'Vulkan.Extensions.VK_EXT_host_image_copy.SubresourceHostMemcpySizeEXT'
--
-- -   #VUID-VkSubresourceLayout2KHR-sType-unique# The @sType@ value of
--     each struct in the @pNext@ chain /must/ be unique
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_host_image_copy VK_EXT_host_image_copy>,
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_compression_control VK_EXT_image_compression_control>,
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>,
-- 'Vulkan.Core10.Enums.StructureType.StructureType',
-- 'Vulkan.Core10.Image.SubresourceLayout',
-- 'getDeviceImageSubresourceLayoutKHR',
-- 'Vulkan.Extensions.VK_EXT_host_image_copy.getImageSubresourceLayout2EXT',
-- 'getImageSubresourceLayout2KHR'
data SubresourceLayout2KHR (es :: [Type]) = SubresourceLayout2KHR
  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
    forall (es :: [*]). SubresourceLayout2KHR es -> Chain es
next :: Chain es
  , -- | @subresourceLayout@ is a 'Vulkan.Core10.Image.SubresourceLayout'
    -- structure.
    forall (es :: [*]). SubresourceLayout2KHR es -> SubresourceLayout
subresourceLayout :: SubresourceLayout
  }
  deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (SubresourceLayout2KHR (es :: [Type]))
#endif
deriving instance Show (Chain es) => Show (SubresourceLayout2KHR es)

instance Extensible SubresourceLayout2KHR where
  extensibleTypeName :: String
extensibleTypeName = String
"SubresourceLayout2KHR"
  setNext :: forall (ds :: [*]) (es :: [*]).
SubresourceLayout2KHR ds -> Chain es -> SubresourceLayout2KHR es
setNext SubresourceLayout2KHR{Chain ds
SubresourceLayout
subresourceLayout :: SubresourceLayout
next :: Chain ds
$sel:subresourceLayout:SubresourceLayout2KHR :: forall (es :: [*]). SubresourceLayout2KHR es -> SubresourceLayout
$sel:next:SubresourceLayout2KHR :: forall (es :: [*]). SubresourceLayout2KHR es -> Chain es
..} Chain es
next' = SubresourceLayout2KHR{$sel:next:SubresourceLayout2KHR :: Chain es
next = Chain es
next', SubresourceLayout
subresourceLayout :: SubresourceLayout
$sel:subresourceLayout:SubresourceLayout2KHR :: SubresourceLayout
..}
  getNext :: forall (es :: [*]). SubresourceLayout2KHR es -> Chain es
getNext SubresourceLayout2KHR{Chain es
SubresourceLayout
subresourceLayout :: SubresourceLayout
next :: Chain es
$sel:subresourceLayout:SubresourceLayout2KHR :: forall (es :: [*]). SubresourceLayout2KHR es -> SubresourceLayout
$sel:next:SubresourceLayout2KHR :: forall (es :: [*]). SubresourceLayout2KHR es -> Chain es
..} = Chain es
next
  extends :: forall e b proxy. Typeable e => proxy e -> (Extends SubresourceLayout2KHR e => b) -> Maybe b
  extends :: forall e b (proxy :: * -> *).
Typeable e =>
proxy e -> (Extends SubresourceLayout2KHR e => b) -> Maybe b
extends proxy e
_ Extends SubresourceLayout2KHR e => b
f
    | Just e :~: ImageCompressionPropertiesEXT
Refl <- forall {k} (a :: k) (b :: k).
(Typeable a, Typeable b) =>
Maybe (a :~: b)
eqT @e @ImageCompressionPropertiesEXT = forall a. a -> Maybe a
Just Extends SubresourceLayout2KHR e => b
f
    | Just e :~: SubresourceHostMemcpySizeEXT
Refl <- forall {k} (a :: k) (b :: k).
(Typeable a, Typeable b) =>
Maybe (a :~: b)
eqT @e @SubresourceHostMemcpySizeEXT = forall a. a -> Maybe a
Just Extends SubresourceLayout2KHR e => b
f
    | Bool
otherwise = forall a. Maybe a
Nothing

instance ( Extendss SubresourceLayout2KHR es
         , PokeChain es ) => ToCStruct (SubresourceLayout2KHR es) where
  withCStruct :: forall b.
SubresourceLayout2KHR es
-> (Ptr (SubresourceLayout2KHR es) -> IO b) -> IO b
withCStruct SubresourceLayout2KHR es
x Ptr (SubresourceLayout2KHR es) -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
56 forall a b. (a -> b) -> a -> b
$ \Ptr (SubresourceLayout2KHR es)
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr (SubresourceLayout2KHR es)
p SubresourceLayout2KHR es
x (Ptr (SubresourceLayout2KHR es) -> IO b
f Ptr (SubresourceLayout2KHR es)
p)
  pokeCStruct :: forall b.
Ptr (SubresourceLayout2KHR es)
-> SubresourceLayout2KHR es -> IO b -> IO b
pokeCStruct Ptr (SubresourceLayout2KHR es)
p SubresourceLayout2KHR{Chain es
SubresourceLayout
subresourceLayout :: SubresourceLayout
next :: Chain es
$sel:subresourceLayout:SubresourceLayout2KHR :: forall (es :: [*]). SubresourceLayout2KHR es -> SubresourceLayout
$sel:next:SubresourceLayout2KHR :: forall (es :: [*]). SubresourceLayout2KHR es -> Chain es
..} IO b
f = forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT forall a b. (a -> b) -> a -> b
$ do
    forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (SubresourceLayout2KHR es)
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR)
    Ptr ()
pNext'' <- forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall a b. Ptr a -> Ptr b
castPtr forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT forall a b. (a -> b) -> a -> b
$ forall (es :: [*]) a.
PokeChain es =>
Chain es -> (Ptr (Chain es) -> IO a) -> IO a
withChain (Chain es
next)
    forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (SubresourceLayout2KHR es)
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) Ptr ()
pNext''
    forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (SubresourceLayout2KHR es)
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr SubresourceLayout)) (SubresourceLayout
subresourceLayout)
    forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ IO b
f
  cStructSize :: Int
cStructSize = Int
56
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b. Ptr (SubresourceLayout2KHR es) -> IO b -> IO b
pokeZeroCStruct Ptr (SubresourceLayout2KHR es)
p IO b
f = forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT forall a b. (a -> b) -> a -> b
$ do
    forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (SubresourceLayout2KHR es)
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR)
    Ptr ()
pNext' <- forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall a b. Ptr a -> Ptr b
castPtr forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT forall a b. (a -> b) -> a -> b
$ forall (es :: [*]) a.
PokeChain es =>
(Ptr (Chain es) -> IO a) -> IO a
withZeroChain @es
    forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (SubresourceLayout2KHR es)
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) Ptr ()
pNext'
    forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (SubresourceLayout2KHR es)
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr SubresourceLayout)) (forall a. Zero a => a
zero)
    forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ IO b
f

instance ( Extendss SubresourceLayout2KHR es
         , PeekChain es ) => FromCStruct (SubresourceLayout2KHR es) where
  peekCStruct :: Ptr (SubresourceLayout2KHR es) -> IO (SubresourceLayout2KHR es)
peekCStruct Ptr (SubresourceLayout2KHR es)
p = do
    Ptr ()
pNext <- forall a. Storable a => Ptr a -> IO a
peek @(Ptr ()) ((Ptr (SubresourceLayout2KHR es)
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ())))
    Chain es
next <- forall (es :: [*]). PeekChain es => Ptr (Chain es) -> IO (Chain es)
peekChain (forall a b. Ptr a -> Ptr b
castPtr Ptr ()
pNext)
    SubresourceLayout
subresourceLayout <- forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @SubresourceLayout ((Ptr (SubresourceLayout2KHR es)
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr SubresourceLayout))
    forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ forall (es :: [*]).
Chain es -> SubresourceLayout -> SubresourceLayout2KHR es
SubresourceLayout2KHR
             Chain es
next SubresourceLayout
subresourceLayout

instance es ~ '[] => Zero (SubresourceLayout2KHR es) where
  zero :: SubresourceLayout2KHR es
zero = forall (es :: [*]).
Chain es -> SubresourceLayout -> SubresourceLayout2KHR es
SubresourceLayout2KHR
           ()
           forall a. Zero a => a
zero


-- | VkDeviceImageSubresourceInfoKHR - Image creation information for
-- querying subresource layout
--
-- == Valid Usage
--
-- -   #VUID-VkDeviceImageSubresourceInfoKHR-aspectMask-00997# The
--     @aspectMask@ member of @pSubresource@ /must/ only have a single bit
--     set
--
-- -   #VUID-VkDeviceImageSubresourceInfoKHR-mipLevel-01716# The @mipLevel@
--     member of @pSubresource@ /must/ be less than the @mipLevels@
--     specified in 'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was
--     created
--
-- -   #VUID-VkDeviceImageSubresourceInfoKHR-arrayLayer-01717# The
--     @arrayLayer@ member of @pSubresource@ /must/ be less than the
--     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
--     when @image@ was created
--
-- -   #VUID-VkDeviceImageSubresourceInfoKHR-format-08886# If @format@ of
--     the @image@ is a color format, @tiling@ of the @image@ is
--     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' or
--     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', and does not
--     have a
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image format>,
--     the @aspectMask@ member of @pSubresource@ /must/ be
--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
--
-- -   #VUID-VkDeviceImageSubresourceInfoKHR-format-04462# If @format@ of
--     the @image@ has a depth component, the @aspectMask@ member of
--     @pSubresource@ /must/ contain
--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT'
--
-- -   #VUID-VkDeviceImageSubresourceInfoKHR-format-04463# If @format@ of
--     the @image@ has a stencil component, the @aspectMask@ member of
--     @pSubresource@ /must/ contain
--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
--
-- -   #VUID-VkDeviceImageSubresourceInfoKHR-format-04464# If @format@ of
--     the @image@ does not contain a stencil or depth component, the
--     @aspectMask@ member of @pSubresource@ /must/ not contain
--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or
--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
--
-- -   #VUID-VkDeviceImageSubresourceInfoKHR-tiling-08717# If the @tiling@
--     of the @image@ is
--     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' and has a
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image format>,
--     then the @aspectMask@ member of @pSubresource@ /must/ be a single
--     valid
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-planes-image-aspect multi-planar aspect mask>
--     bit
--
-- -   #VUID-VkDeviceImageSubresourceInfoKHR-image-01895# If @image@ was
--     created with the
--     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID'
--     external memory handle type, then @image@ /must/ be bound to memory
--
-- -   #VUID-VkDeviceImageSubresourceInfoKHR-tiling-02271# If the @tiling@
--     of the @image@ is
--     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT',
--     then the @aspectMask@ member of @pSubresource@ /must/ be
--     @VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT@ and the index /i/ /must/ be
--     less than the
--     'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.DrmFormatModifierPropertiesEXT'::@drmFormatModifierPlaneCount@
--     associated with the image’s @format@ and
--     'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierPropertiesEXT'::@drmFormatModifier@
--
-- == Valid Usage (Implicit)
--
-- -   #VUID-VkDeviceImageSubresourceInfoKHR-sType-sType# @sType@ /must/ be
--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR'
--
-- -   #VUID-VkDeviceImageSubresourceInfoKHR-pNext-pNext# @pNext@ /must/ be
--     @NULL@
--
-- -   #VUID-VkDeviceImageSubresourceInfoKHR-pCreateInfo-parameter#
--     @pCreateInfo@ /must/ be a valid pointer to a valid
--     'Vulkan.Core10.Image.ImageCreateInfo' structure
--
-- -   #VUID-VkDeviceImageSubresourceInfoKHR-pSubresource-parameter#
--     @pSubresource@ /must/ be a valid pointer to a valid
--     'ImageSubresource2KHR' structure
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>,
-- 'Vulkan.Core10.Image.ImageCreateInfo', 'ImageSubresource2KHR',
-- 'Vulkan.Core10.Enums.StructureType.StructureType',
-- 'getDeviceImageSubresourceLayoutKHR'
data DeviceImageSubresourceInfoKHR = DeviceImageSubresourceInfoKHR
  { -- | @pCreateInfo@ is a pointer to a 'Vulkan.Core10.Image.ImageCreateInfo'
    -- structure containing parameters affecting creation of the image to
    -- query.
    DeviceImageSubresourceInfoKHR -> SomeStruct ImageCreateInfo
createInfo :: SomeStruct ImageCreateInfo
  , -- | @pSubresource@ pSubresource is a pointer to a 'ImageSubresource2KHR'
    -- structure selecting a specific image subresource for the query.
    DeviceImageSubresourceInfoKHR -> ImageSubresource2KHR
subresource :: ImageSubresource2KHR
  }
  deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (DeviceImageSubresourceInfoKHR)
#endif
deriving instance Show DeviceImageSubresourceInfoKHR

instance ToCStruct DeviceImageSubresourceInfoKHR where
  withCStruct :: forall b.
DeviceImageSubresourceInfoKHR
-> (("pInfo" ::: Ptr DeviceImageSubresourceInfoKHR) -> IO b)
-> IO b
withCStruct DeviceImageSubresourceInfoKHR
x ("pInfo" ::: Ptr DeviceImageSubresourceInfoKHR) -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 forall a b. (a -> b) -> a -> b
$ \"pInfo" ::: Ptr DeviceImageSubresourceInfoKHR
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct "pInfo" ::: Ptr DeviceImageSubresourceInfoKHR
p DeviceImageSubresourceInfoKHR
x (("pInfo" ::: Ptr DeviceImageSubresourceInfoKHR) -> IO b
f "pInfo" ::: Ptr DeviceImageSubresourceInfoKHR
p)
  pokeCStruct :: forall b.
("pInfo" ::: Ptr DeviceImageSubresourceInfoKHR)
-> DeviceImageSubresourceInfoKHR -> IO b -> IO b
pokeCStruct "pInfo" ::: Ptr DeviceImageSubresourceInfoKHR
p DeviceImageSubresourceInfoKHR{ImageSubresource2KHR
SomeStruct ImageCreateInfo
subresource :: ImageSubresource2KHR
createInfo :: SomeStruct ImageCreateInfo
$sel:subresource:DeviceImageSubresourceInfoKHR :: DeviceImageSubresourceInfoKHR -> ImageSubresource2KHR
$sel:createInfo:DeviceImageSubresourceInfoKHR :: DeviceImageSubresourceInfoKHR -> SomeStruct ImageCreateInfo
..} IO b
f = forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT forall a b. (a -> b) -> a -> b
$ do
    forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall a. Storable a => Ptr a -> a -> IO ()
poke (("pInfo" ::: Ptr DeviceImageSubresourceInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR)
    forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall a. Storable a => Ptr a -> a -> IO ()
poke (("pInfo" ::: Ptr DeviceImageSubresourceInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
    Ptr (ImageCreateInfo '[])
pCreateInfo'' <- forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT @_ @_ @(Ptr (ImageCreateInfo '[])) forall a b. (a -> b) -> a -> b
$ \Ptr (ImageCreateInfo '[]) -> IO b
cont -> forall (a :: [*] -> *) b.
(forall (es :: [*]).
 (Extendss a es, PokeChain es) =>
 ToCStruct (a es)) =>
SomeStruct a
-> (forall (es :: [*]).
    (Extendss a es, PokeChain es) =>
    Ptr (a es) -> IO b)
-> IO b
withSomeCStruct @ImageCreateInfo (SomeStruct ImageCreateInfo
createInfo) (Ptr (ImageCreateInfo '[]) -> IO b
cont forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Ptr a -> Ptr b
castPtr)
    forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall a. Storable a => Ptr a -> a -> IO ()
poke (("pInfo" ::: Ptr DeviceImageSubresourceInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr (Ptr (ImageCreateInfo _)))) Ptr (ImageCreateInfo '[])
pCreateInfo''
    "pSubresource" ::: Ptr ImageSubresource2KHR
pSubresource'' <- forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT forall a b. (a -> b) -> a -> b
$ forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
withCStruct (ImageSubresource2KHR
subresource)
    forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall a. Storable a => Ptr a -> a -> IO ()
poke (("pInfo" ::: Ptr DeviceImageSubresourceInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr (Ptr ImageSubresource2KHR))) "pSubresource" ::: Ptr ImageSubresource2KHR
pSubresource''
    forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ IO b
f
  cStructSize :: Int
cStructSize = Int
32
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b.
("pInfo" ::: Ptr DeviceImageSubresourceInfoKHR) -> IO b -> IO b
pokeZeroCStruct "pInfo" ::: Ptr DeviceImageSubresourceInfoKHR
p IO b
f = forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT forall a b. (a -> b) -> a -> b
$ do
    forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall a. Storable a => Ptr a -> a -> IO ()
poke (("pInfo" ::: Ptr DeviceImageSubresourceInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR)
    forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall a. Storable a => Ptr a -> a -> IO ()
poke (("pInfo" ::: Ptr DeviceImageSubresourceInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
    Ptr (ImageCreateInfo '[])
pCreateInfo'' <- forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT @_ @_ @(Ptr (ImageCreateInfo '[])) forall a b. (a -> b) -> a -> b
$ \Ptr (ImageCreateInfo '[]) -> IO b
cont -> forall (a :: [*] -> *) b.
(forall (es :: [*]).
 (Extendss a es, PokeChain es) =>
 ToCStruct (a es)) =>
SomeStruct a
-> (forall (es :: [*]).
    (Extendss a es, PokeChain es) =>
    Ptr (a es) -> IO b)
-> IO b
withSomeCStruct @ImageCreateInfo ((forall (a :: [*] -> *) (es :: [*]).
(Extendss a es, PokeChain es, Show (Chain es)) =>
a es -> SomeStruct a
SomeStruct forall a. Zero a => a
zero)) (Ptr (ImageCreateInfo '[]) -> IO b
cont forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Ptr a -> Ptr b
castPtr)
    forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall a. Storable a => Ptr a -> a -> IO ()
poke (("pInfo" ::: Ptr DeviceImageSubresourceInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr (Ptr (ImageCreateInfo _)))) Ptr (ImageCreateInfo '[])
pCreateInfo''
    "pSubresource" ::: Ptr ImageSubresource2KHR
pSubresource'' <- forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT forall a b. (a -> b) -> a -> b
$ forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
withCStruct (forall a. Zero a => a
zero)
    forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall a. Storable a => Ptr a -> a -> IO ()
poke (("pInfo" ::: Ptr DeviceImageSubresourceInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr (Ptr ImageSubresource2KHR))) "pSubresource" ::: Ptr ImageSubresource2KHR
pSubresource''
    forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ IO b
f

instance FromCStruct DeviceImageSubresourceInfoKHR where
  peekCStruct :: ("pInfo" ::: Ptr DeviceImageSubresourceInfoKHR)
-> IO DeviceImageSubresourceInfoKHR
peekCStruct "pInfo" ::: Ptr DeviceImageSubresourceInfoKHR
p = do
    SomeStruct ImageCreateInfo
pCreateInfo <- forall (a :: [*] -> *).
(Extensible a,
 forall (es :: [*]).
 (Extendss a es, PeekChain es) =>
 FromCStruct (a es)) =>
Ptr (SomeStruct a) -> IO (SomeStruct a)
peekSomeCStruct forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (a :: [*] -> *) (es :: [*]).
Ptr (a es) -> Ptr (SomeStruct a)
forgetExtensions forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< forall a. Storable a => Ptr a -> IO a
peek (("pInfo" ::: Ptr DeviceImageSubresourceInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr (Ptr (ImageCreateInfo _))))
    ImageSubresource2KHR
pSubresource <- forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @ImageSubresource2KHR forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< forall a. Storable a => Ptr a -> IO a
peek (("pInfo" ::: Ptr DeviceImageSubresourceInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr (Ptr ImageSubresource2KHR)))
    forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ SomeStruct ImageCreateInfo
-> ImageSubresource2KHR -> DeviceImageSubresourceInfoKHR
DeviceImageSubresourceInfoKHR
             SomeStruct ImageCreateInfo
pCreateInfo ImageSubresource2KHR
pSubresource

instance Zero DeviceImageSubresourceInfoKHR where
  zero :: DeviceImageSubresourceInfoKHR
zero = SomeStruct ImageCreateInfo
-> ImageSubresource2KHR -> DeviceImageSubresourceInfoKHR
DeviceImageSubresourceInfoKHR
           (forall (a :: [*] -> *) (es :: [*]).
(Extendss a es, PokeChain es, Show (Chain es)) =>
a es -> SomeStruct a
SomeStruct forall a. Zero a => a
zero)
           forall a. Zero a => a
zero


type PipelineCreateFlags2KHR = PipelineCreateFlagBits2KHR

-- | VkPipelineCreateFlagBits2KHR - Bitmask controlling how a pipeline is
-- created
--
-- = Description
--
-- -   'PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT_KHR' specifies that the
--     created pipeline will not be optimized. Using this flag /may/ reduce
--     the time taken to create the pipeline.
--
-- -   'PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHR' specifies that the
--     pipeline to be created is allowed to be the parent of a pipeline
--     that will be created in a subsequent pipeline creation call.
--
-- -   'PIPELINE_CREATE_2_DERIVATIVE_BIT_KHR' specifies that the pipeline
--     to be created will be a child of a previously created parent
--     pipeline.
--
-- -   'PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR' specifies
--     that any shader input variables decorated as @ViewIndex@ will be
--     assigned values as if they were decorated as @DeviceIndex@.
--
-- -   'PIPELINE_CREATE_2_DISPATCH_BASE_BIT_KHR' specifies that a compute
--     pipeline /can/ be used with
--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.cmdDispatchBase'
--     with a non-zero base workgroup.
--
-- -   'PIPELINE_CREATE_2_DEFER_COMPILE_BIT_NV' specifies that a pipeline
--     is created with all shaders in the deferred state. Before using the
--     pipeline the application /must/ call
--     'Vulkan.Extensions.VK_NV_ray_tracing.compileDeferredNV' exactly once
--     on each shader in the pipeline before using the pipeline.
--
-- -   'PIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHR' specifies that the
--     shader compiler should capture statistics for the pipeline
--     executables produced by the compile process which /can/ later be
--     retrieved by calling
--     'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.getPipelineExecutableStatisticsKHR'.
--     Enabling this flag /must/ not affect the final compiled pipeline but
--     /may/ disable pipeline caching or otherwise affect pipeline creation
--     time.
--
-- -   'PIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR'
--     specifies that the shader compiler should capture the internal
--     representations of pipeline executables produced by the compile
--     process which /can/ later be retrieved by calling
--     'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.getPipelineExecutableInternalRepresentationsKHR'.
--     Enabling this flag /must/ not affect the final compiled pipeline but
--     /may/ disable pipeline caching or otherwise affect pipeline creation
--     time. When capturing IR from pipelines created with pipeline
--     libraries, there is no guarantee that IR from libraries /can/ be
--     retrieved from the linked pipeline. Applications /should/ retrieve
--     IR from each library, and any linked pipelines, separately.
--
-- -   'PIPELINE_CREATE_2_LIBRARY_BIT_KHR' specifies that the pipeline
--     /cannot/ be used directly, and instead defines a /pipeline library/
--     that /can/ be combined with other pipelines using the
--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'
--     structure. This is available in ray tracing and graphics pipelines.
--
-- -   'PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR'
--     specifies that an any-hit shader will always be present when an
--     any-hit shader would be executed. A NULL any-hit shader is an
--     any-hit shader which is effectively
--     'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR', such as from a
--     shader group consisting entirely of zeros.
--
-- -   'PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR'
--     specifies that a closest hit shader will always be present when a
--     closest hit shader would be executed. A NULL closest hit shader is a
--     closest hit shader which is effectively
--     'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR', such as from a
--     shader group consisting entirely of zeros.
--
-- -   'PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR'
--     specifies that a miss shader will always be present when a miss
--     shader would be executed. A NULL miss shader is a miss shader which
--     is effectively 'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR', such
--     as from a shader group consisting entirely of zeros.
--
-- -   'PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR'
--     specifies that an intersection shader will always be present when an
--     intersection shader would be executed. A NULL intersection shader is
--     an intersection shader which is effectively
--     'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR', such as from a
--     shader group consisting entirely of zeros.
--
-- -   'PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR' specifies
--     that triangle primitives will be skipped during traversal using
--     @OpTraceRayKHR@.
--
-- -   'PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHR' specifies that
--     AABB primitives will be skipped during traversal using
--     @OpTraceRayKHR@.
--
-- -   'PIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'
--     specifies that the shader group handles /can/ be saved and reused on
--     a subsequent run (e.g. for trace capture and replay).
--
-- -   'PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NV' specifies that the
--     pipeline can be used in combination with
--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#device-generated-commands>.
--
-- -   'PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR'
--     specifies that pipeline creation will fail if a compile is required
--     for creation of a valid 'Vulkan.Core10.Handles.Pipeline' object;
--     'Vulkan.Core10.Enums.Result.PIPELINE_COMPILE_REQUIRED' will be
--     returned by pipeline creation, and the
--     'Vulkan.Core10.Handles.Pipeline' will be set to
--     'Vulkan.Core10.APIConstants.NULL_HANDLE'.
--
-- -   When creating multiple pipelines,
--     'PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR' specifies that
--     control will be returned to the application if any individual
--     pipeline returns a result which is not
--     'Vulkan.Core10.Enums.Result.SUCCESS' rather than continuing to
--     create additional pipelines.
--
-- -   'PIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NV' specifies that
--     the pipeline is allowed to use @OpTraceRayMotionNV@.
--
-- -   'PIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
--     specifies that the pipeline will be used with a fragment shading
--     rate attachment.
--
-- -   'PIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
--     specifies that the pipeline will be used with a fragment density map
--     attachment.
--
-- -   'PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT' specifies that
--     pipeline libraries being linked into this library /should/ have link
--     time optimizations applied. If this bit is omitted, implementations
--     /should/ instead perform linking as rapidly as possible.
--
-- -   'PIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT'
--     specifies that pipeline libraries should retain any information
--     necessary to later perform an optimal link with
--     'PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT'.
--
-- -   'PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT' specifies that a
--     pipeline will be used with
--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorbuffers descriptor buffers>,
--     rather than
--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets descriptor sets>.
--
-- -   'PIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT' specifies
--     that the pipeline /may/ be used with an attachment feedback loop
--     including color attachments.
--
-- -   'PIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
--     specifies that the pipeline /may/ be used with an attachment
--     feedback loop including depth-stencil attachments.
--
-- -   'PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT' specifies
--     that the pipeline /can/ be used with acceleration structures which
--     reference an opacity micromap array.
--
-- -   'PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV'
--     specifies that the pipeline /can/ be used with aceleration
--     structures which reference a displacement micromap array.
--
-- -   'PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT' specifies that the
--     pipeline /must/ not be bound to a protected command buffer.
--
-- -   'PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT' specifies that the
--     pipeline /must/ not be bound to an unprotected command buffer.
--
-- It is valid to set both 'PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHR'
-- and 'PIPELINE_CREATE_2_DERIVATIVE_BIT_KHR'. This allows a pipeline to be
-- both a parent and possibly a child in a pipeline hierarchy. See
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-pipeline-derivatives Pipeline Derivatives>
-- for more information.
--
-- When an implementation is looking up a pipeline in a
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-cache pipeline cache>,
-- if that pipeline is being created using linked libraries,
-- implementations /should/ always return an equivalent pipeline created
-- with 'PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT' if available,
-- whether or not that bit was specified.
--
-- Note
--
-- Using 'PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT' (or not) when
-- linking pipeline libraries is intended as a performance tradeoff between
-- host and device. If the bit is omitted, linking should be faster and
-- produce a pipeline more rapidly, but performance of the pipeline on the
-- target device may be reduced. If the bit is included, linking may be
-- slower but should produce a pipeline with device performance comparable
-- to a monolithically created pipeline. Using both options can allow
-- latency-sensitive applications to generate a suboptimal but usable
-- pipeline quickly, and then perform an optimal link in the background,
-- substituting the result for the suboptimally linked pipeline as soon as
-- it is available.
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>
newtype PipelineCreateFlagBits2KHR = PipelineCreateFlagBits2KHR Flags64
  deriving newtype (PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR -> Bool
$c/= :: PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR -> Bool
== :: PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR -> Bool
$c== :: PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR -> Bool
Eq, Eq PipelineCreateFlagBits2KHR
PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR -> Bool
PipelineCreateFlagBits2KHR
-> PipelineCreateFlagBits2KHR -> Ordering
PipelineCreateFlagBits2KHR
-> PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: PipelineCreateFlagBits2KHR
-> PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR
$cmin :: PipelineCreateFlagBits2KHR
-> PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR
max :: PipelineCreateFlagBits2KHR
-> PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR
$cmax :: PipelineCreateFlagBits2KHR
-> PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR
>= :: PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR -> Bool
$c>= :: PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR -> Bool
> :: PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR -> Bool
$c> :: PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR -> Bool
<= :: PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR -> Bool
$c<= :: PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR -> Bool
< :: PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR -> Bool
$c< :: PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR -> Bool
compare :: PipelineCreateFlagBits2KHR
-> PipelineCreateFlagBits2KHR -> Ordering
$ccompare :: PipelineCreateFlagBits2KHR
-> PipelineCreateFlagBits2KHR -> Ordering
Ord, Ptr PipelineCreateFlagBits2KHR -> IO PipelineCreateFlagBits2KHR
Ptr PipelineCreateFlagBits2KHR
-> Int -> IO PipelineCreateFlagBits2KHR
Ptr PipelineCreateFlagBits2KHR
-> Int -> PipelineCreateFlagBits2KHR -> IO ()
Ptr PipelineCreateFlagBits2KHR
-> PipelineCreateFlagBits2KHR -> IO ()
PipelineCreateFlagBits2KHR -> Int
forall b. Ptr b -> Int -> IO PipelineCreateFlagBits2KHR
forall b. Ptr b -> Int -> PipelineCreateFlagBits2KHR -> IO ()
forall a.
(a -> Int)
-> (a -> Int)
-> (Ptr a -> Int -> IO a)
-> (Ptr a -> Int -> a -> IO ())
-> (forall b. Ptr b -> Int -> IO a)
-> (forall b. Ptr b -> Int -> a -> IO ())
-> (Ptr a -> IO a)
-> (Ptr a -> a -> IO ())
-> Storable a
poke :: Ptr PipelineCreateFlagBits2KHR
-> PipelineCreateFlagBits2KHR -> IO ()
$cpoke :: Ptr PipelineCreateFlagBits2KHR
-> PipelineCreateFlagBits2KHR -> IO ()
peek :: Ptr PipelineCreateFlagBits2KHR -> IO PipelineCreateFlagBits2KHR
$cpeek :: Ptr PipelineCreateFlagBits2KHR -> IO PipelineCreateFlagBits2KHR
pokeByteOff :: forall b. Ptr b -> Int -> PipelineCreateFlagBits2KHR -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> PipelineCreateFlagBits2KHR -> IO ()
peekByteOff :: forall b. Ptr b -> Int -> IO PipelineCreateFlagBits2KHR
$cpeekByteOff :: forall b. Ptr b -> Int -> IO PipelineCreateFlagBits2KHR
pokeElemOff :: Ptr PipelineCreateFlagBits2KHR
-> Int -> PipelineCreateFlagBits2KHR -> IO ()
$cpokeElemOff :: Ptr PipelineCreateFlagBits2KHR
-> Int -> PipelineCreateFlagBits2KHR -> IO ()
peekElemOff :: Ptr PipelineCreateFlagBits2KHR
-> Int -> IO PipelineCreateFlagBits2KHR
$cpeekElemOff :: Ptr PipelineCreateFlagBits2KHR
-> Int -> IO PipelineCreateFlagBits2KHR
alignment :: PipelineCreateFlagBits2KHR -> Int
$calignment :: PipelineCreateFlagBits2KHR -> Int
sizeOf :: PipelineCreateFlagBits2KHR -> Int
$csizeOf :: PipelineCreateFlagBits2KHR -> Int
Storable, PipelineCreateFlagBits2KHR
forall a. a -> Zero a
zero :: PipelineCreateFlagBits2KHR
$czero :: PipelineCreateFlagBits2KHR
Zero, Eq PipelineCreateFlagBits2KHR
PipelineCreateFlagBits2KHR
Int -> PipelineCreateFlagBits2KHR
PipelineCreateFlagBits2KHR -> Bool
PipelineCreateFlagBits2KHR -> Int
PipelineCreateFlagBits2KHR -> Maybe Int
PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR
PipelineCreateFlagBits2KHR -> Int -> Bool
PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR
PipelineCreateFlagBits2KHR
-> PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR
forall a.
Eq a
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> a
-> (Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> Bool)
-> (a -> Maybe Int)
-> (a -> Int)
-> (a -> Bool)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int)
-> Bits a
popCount :: PipelineCreateFlagBits2KHR -> Int
$cpopCount :: PipelineCreateFlagBits2KHR -> Int
rotateR :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR
$crotateR :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR
rotateL :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR
$crotateL :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR
unsafeShiftR :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR
$cunsafeShiftR :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR
shiftR :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR
$cshiftR :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR
unsafeShiftL :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR
$cunsafeShiftL :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR
shiftL :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR
$cshiftL :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR
isSigned :: PipelineCreateFlagBits2KHR -> Bool
$cisSigned :: PipelineCreateFlagBits2KHR -> Bool
bitSize :: PipelineCreateFlagBits2KHR -> Int
$cbitSize :: PipelineCreateFlagBits2KHR -> Int
bitSizeMaybe :: PipelineCreateFlagBits2KHR -> Maybe Int
$cbitSizeMaybe :: PipelineCreateFlagBits2KHR -> Maybe Int
testBit :: PipelineCreateFlagBits2KHR -> Int -> Bool
$ctestBit :: PipelineCreateFlagBits2KHR -> Int -> Bool
complementBit :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR
$ccomplementBit :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR
clearBit :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR
$cclearBit :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR
setBit :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR
$csetBit :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR
bit :: Int -> PipelineCreateFlagBits2KHR
$cbit :: Int -> PipelineCreateFlagBits2KHR
zeroBits :: PipelineCreateFlagBits2KHR
$czeroBits :: PipelineCreateFlagBits2KHR
rotate :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR
$crotate :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR
shift :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR
$cshift :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR
complement :: PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR
$ccomplement :: PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR
xor :: PipelineCreateFlagBits2KHR
-> PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR
$cxor :: PipelineCreateFlagBits2KHR
-> PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR
.|. :: PipelineCreateFlagBits2KHR
-> PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR
$c.|. :: PipelineCreateFlagBits2KHR
-> PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR
.&. :: PipelineCreateFlagBits2KHR
-> PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR
$c.&. :: PipelineCreateFlagBits2KHR
-> PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR
Bits, Bits PipelineCreateFlagBits2KHR
PipelineCreateFlagBits2KHR -> Int
forall b.
Bits b -> (b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
countTrailingZeros :: PipelineCreateFlagBits2KHR -> Int
$ccountTrailingZeros :: PipelineCreateFlagBits2KHR -> Int
countLeadingZeros :: PipelineCreateFlagBits2KHR -> Int
$ccountLeadingZeros :: PipelineCreateFlagBits2KHR -> Int
finiteBitSize :: PipelineCreateFlagBits2KHR -> Int
$cfiniteBitSize :: PipelineCreateFlagBits2KHR -> Int
FiniteBits)

-- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT_KHR"
pattern $bPIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT_KHR :: PipelineCreateFlagBits2KHR
$mPIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT_KHR :: forall {r}.
PipelineCreateFlagBits2KHR -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT_KHR = PipelineCreateFlagBits2KHR 0x0000000000000001

-- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHR"
pattern $bPIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHR :: PipelineCreateFlagBits2KHR
$mPIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHR :: forall {r}.
PipelineCreateFlagBits2KHR -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHR = PipelineCreateFlagBits2KHR 0x0000000000000002

-- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_DERIVATIVE_BIT_KHR"
pattern $bPIPELINE_CREATE_2_DERIVATIVE_BIT_KHR :: PipelineCreateFlagBits2KHR
$mPIPELINE_CREATE_2_DERIVATIVE_BIT_KHR :: forall {r}.
PipelineCreateFlagBits2KHR -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_CREATE_2_DERIVATIVE_BIT_KHR = PipelineCreateFlagBits2KHR 0x0000000000000004

-- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT"
pattern $bPIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT :: PipelineCreateFlagBits2KHR
$mPIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT :: forall {r}.
PipelineCreateFlagBits2KHR -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT = PipelineCreateFlagBits2KHR 0x0000000020000000

-- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV"
pattern $bPIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV :: PipelineCreateFlagBits2KHR
$mPIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV :: forall {r}.
PipelineCreateFlagBits2KHR -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV = PipelineCreateFlagBits2KHR 0x0000000010000000

-- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT"
pattern $bPIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT :: PipelineCreateFlagBits2KHR
$mPIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT :: forall {r}.
PipelineCreateFlagBits2KHR -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT = PipelineCreateFlagBits2KHR 0x0000000040000000

-- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT"
pattern $bPIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT :: PipelineCreateFlagBits2KHR
$mPIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT :: forall {r}.
PipelineCreateFlagBits2KHR -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT = PipelineCreateFlagBits2KHR 0x0000000008000000

-- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT"
pattern $bPIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT :: PipelineCreateFlagBits2KHR
$mPIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT :: forall {r}.
PipelineCreateFlagBits2KHR -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = PipelineCreateFlagBits2KHR 0x0000000004000000

-- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT"
pattern $bPIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT :: PipelineCreateFlagBits2KHR
$mPIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT :: forall {r}.
PipelineCreateFlagBits2KHR -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = PipelineCreateFlagBits2KHR 0x0000000002000000

-- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT"
pattern $bPIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT :: PipelineCreateFlagBits2KHR
$mPIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT :: forall {r}.
PipelineCreateFlagBits2KHR -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT = PipelineCreateFlagBits2KHR 0x0000000001000000

-- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT"
pattern $bPIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT :: PipelineCreateFlagBits2KHR
$mPIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT :: forall {r}.
PipelineCreateFlagBits2KHR -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = PipelineCreateFlagBits2KHR 0x0000000000400000

-- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"
pattern $bPIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR :: PipelineCreateFlagBits2KHR
$mPIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR :: forall {r}.
PipelineCreateFlagBits2KHR -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = PipelineCreateFlagBits2KHR 0x0000000000200000

-- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NV"
pattern $bPIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NV :: PipelineCreateFlagBits2KHR
$mPIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NV :: forall {r}.
PipelineCreateFlagBits2KHR -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NV = PipelineCreateFlagBits2KHR 0x0000000000100000

-- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NV"
pattern $bPIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NV :: PipelineCreateFlagBits2KHR
$mPIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NV :: forall {r}.
PipelineCreateFlagBits2KHR -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NV = PipelineCreateFlagBits2KHR 0x0000000000040000

-- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR"
pattern $bPIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR :: PipelineCreateFlagBits2KHR
$mPIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR :: forall {r}.
PipelineCreateFlagBits2KHR -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR = PipelineCreateFlagBits2KHR 0x0000000000080000

-- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR"
pattern $bPIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR :: PipelineCreateFlagBits2KHR
$mPIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR :: forall {r}.
PipelineCreateFlagBits2KHR -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = PipelineCreateFlagBits2KHR 0x0000000000020000

-- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR"
pattern $bPIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR :: PipelineCreateFlagBits2KHR
$mPIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR :: forall {r}.
PipelineCreateFlagBits2KHR -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = PipelineCreateFlagBits2KHR 0x0000000000010000

-- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR"
pattern $bPIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR :: PipelineCreateFlagBits2KHR
$mPIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR :: forall {r}.
PipelineCreateFlagBits2KHR -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = PipelineCreateFlagBits2KHR 0x0000000000008000

-- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR"
pattern $bPIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR :: PipelineCreateFlagBits2KHR
$mPIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR :: forall {r}.
PipelineCreateFlagBits2KHR -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = PipelineCreateFlagBits2KHR 0x0000000000004000

-- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHR"
pattern $bPIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHR :: PipelineCreateFlagBits2KHR
$mPIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHR :: forall {r}.
PipelineCreateFlagBits2KHR -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHR = PipelineCreateFlagBits2KHR 0x0000000000002000

-- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR"
pattern $bPIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR :: PipelineCreateFlagBits2KHR
$mPIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR :: forall {r}.
PipelineCreateFlagBits2KHR -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = PipelineCreateFlagBits2KHR 0x0000000000001000

-- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_LIBRARY_BIT_KHR"
pattern $bPIPELINE_CREATE_2_LIBRARY_BIT_KHR :: PipelineCreateFlagBits2KHR
$mPIPELINE_CREATE_2_LIBRARY_BIT_KHR :: forall {r}.
PipelineCreateFlagBits2KHR -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_CREATE_2_LIBRARY_BIT_KHR = PipelineCreateFlagBits2KHR 0x0000000000000800

-- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT"
pattern $bPIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT :: PipelineCreateFlagBits2KHR
$mPIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT :: forall {r}.
PipelineCreateFlagBits2KHR -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT = PipelineCreateFlagBits2KHR 0x0000000000800000

-- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT"
pattern $bPIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT :: PipelineCreateFlagBits2KHR
$mPIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT :: forall {r}.
PipelineCreateFlagBits2KHR -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT = PipelineCreateFlagBits2KHR 0x0000000000000400

-- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR"
pattern $bPIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR :: PipelineCreateFlagBits2KHR
$mPIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR :: forall {r}.
PipelineCreateFlagBits2KHR -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR = PipelineCreateFlagBits2KHR 0x0000000000000200

-- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR"
pattern $bPIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR :: PipelineCreateFlagBits2KHR
$mPIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR :: forall {r}.
PipelineCreateFlagBits2KHR -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR = PipelineCreateFlagBits2KHR 0x0000000000000100

-- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR"
pattern $bPIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR :: PipelineCreateFlagBits2KHR
$mPIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR :: forall {r}.
PipelineCreateFlagBits2KHR -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = PipelineCreateFlagBits2KHR 0x0000000000000080

-- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHR"
pattern $bPIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHR :: PipelineCreateFlagBits2KHR
$mPIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHR :: forall {r}.
PipelineCreateFlagBits2KHR -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHR = PipelineCreateFlagBits2KHR 0x0000000000000040

-- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_DEFER_COMPILE_BIT_NV"
pattern $bPIPELINE_CREATE_2_DEFER_COMPILE_BIT_NV :: PipelineCreateFlagBits2KHR
$mPIPELINE_CREATE_2_DEFER_COMPILE_BIT_NV :: forall {r}.
PipelineCreateFlagBits2KHR -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_CREATE_2_DEFER_COMPILE_BIT_NV = PipelineCreateFlagBits2KHR 0x0000000000000020

-- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_DISPATCH_BASE_BIT_KHR"
pattern $bPIPELINE_CREATE_2_DISPATCH_BASE_BIT_KHR :: PipelineCreateFlagBits2KHR
$mPIPELINE_CREATE_2_DISPATCH_BASE_BIT_KHR :: forall {r}.
PipelineCreateFlagBits2KHR -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_CREATE_2_DISPATCH_BASE_BIT_KHR = PipelineCreateFlagBits2KHR 0x0000000000000010

-- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR"
pattern $bPIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR :: PipelineCreateFlagBits2KHR
$mPIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR :: forall {r}.
PipelineCreateFlagBits2KHR -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = PipelineCreateFlagBits2KHR 0x0000000000000008

conNamePipelineCreateFlagBits2KHR :: String
conNamePipelineCreateFlagBits2KHR :: String
conNamePipelineCreateFlagBits2KHR = String
"PipelineCreateFlagBits2KHR"

enumPrefixPipelineCreateFlagBits2KHR :: String
enumPrefixPipelineCreateFlagBits2KHR :: String
enumPrefixPipelineCreateFlagBits2KHR = String
"PIPELINE_CREATE_2_"

showTablePipelineCreateFlagBits2KHR :: [(PipelineCreateFlagBits2KHR, String)]
showTablePipelineCreateFlagBits2KHR :: [(PipelineCreateFlagBits2KHR, String)]
showTablePipelineCreateFlagBits2KHR =
  [
    ( PipelineCreateFlagBits2KHR
PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT_KHR
    , String
"DISABLE_OPTIMIZATION_BIT_KHR"
    )
  ,
    ( PipelineCreateFlagBits2KHR
PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHR
    , String
"ALLOW_DERIVATIVES_BIT_KHR"
    )
  ,
    ( PipelineCreateFlagBits2KHR
PIPELINE_CREATE_2_DERIVATIVE_BIT_KHR
    , String
"DERIVATIVE_BIT_KHR"
    )
  ,
    ( PipelineCreateFlagBits2KHR
PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT
    , String
"DESCRIPTOR_BUFFER_BIT_EXT"
    )
  ,
    ( PipelineCreateFlagBits2KHR
PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV
    , String
"RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV"
    )
  ,
    ( PipelineCreateFlagBits2KHR
PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT
    , String
"PROTECTED_ACCESS_ONLY_BIT_EXT"
    )
  ,
    ( PipelineCreateFlagBits2KHR
PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT
    , String
"NO_PROTECTED_ACCESS_BIT_EXT"
    )
  ,
    ( PipelineCreateFlagBits2KHR
PIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT
    , String
"DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT"
    )
  ,
    ( PipelineCreateFlagBits2KHR
PIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT
    , String
"COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT"
    )
  ,
    ( PipelineCreateFlagBits2KHR
PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT
    , String
"RAY_TRACING_OPACITY_MICROMAP_BIT_EXT"
    )
  ,
    ( PipelineCreateFlagBits2KHR
PIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
    , String
"RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT"
    )
  ,
    ( PipelineCreateFlagBits2KHR
PIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
    , String
"RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"
    )
  ,
    ( PipelineCreateFlagBits2KHR
PIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NV
    , String
"RAY_TRACING_ALLOW_MOTION_BIT_NV"
    )
  ,
    ( PipelineCreateFlagBits2KHR
PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NV
    , String
"INDIRECT_BINDABLE_BIT_NV"
    )
  ,
    ( PipelineCreateFlagBits2KHR
PIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR
    , String
"RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR"
    )
  ,
    ( PipelineCreateFlagBits2KHR
PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR
    , String
"RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR"
    )
  ,
    ( PipelineCreateFlagBits2KHR
PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR
    , String
"RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR"
    )
  ,
    ( PipelineCreateFlagBits2KHR
PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR
    , String
"RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR"
    )
  ,
    ( PipelineCreateFlagBits2KHR
PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR
    , String
"RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR"
    )
  ,
    ( PipelineCreateFlagBits2KHR
PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHR
    , String
"RAY_TRACING_SKIP_AABBS_BIT_KHR"
    )
  ,
    ( PipelineCreateFlagBits2KHR
PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR
    , String
"RAY_TRACING_SKIP_TRIANGLES_BIT_KHR"
    )
  ,
    ( PipelineCreateFlagBits2KHR
PIPELINE_CREATE_2_LIBRARY_BIT_KHR
    , String
"LIBRARY_BIT_KHR"
    )
  ,
    ( PipelineCreateFlagBits2KHR
PIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT
    , String
"RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT"
    )
  ,
    ( PipelineCreateFlagBits2KHR
PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT
    , String
"LINK_TIME_OPTIMIZATION_BIT_EXT"
    )
  ,
    ( PipelineCreateFlagBits2KHR
PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR
    , String
"EARLY_RETURN_ON_FAILURE_BIT_KHR"
    )
  ,
    ( PipelineCreateFlagBits2KHR
PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR
    , String
"FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR"
    )
  ,
    ( PipelineCreateFlagBits2KHR
PIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR
    , String
"CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR"
    )
  ,
    ( PipelineCreateFlagBits2KHR
PIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHR
    , String
"CAPTURE_STATISTICS_BIT_KHR"
    )
  ,
    ( PipelineCreateFlagBits2KHR
PIPELINE_CREATE_2_DEFER_COMPILE_BIT_NV
    , String
"DEFER_COMPILE_BIT_NV"
    )
  ,
    ( PipelineCreateFlagBits2KHR
PIPELINE_CREATE_2_DISPATCH_BASE_BIT_KHR
    , String
"DISPATCH_BASE_BIT_KHR"
    )
  ,
    ( PipelineCreateFlagBits2KHR
PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR
    , String
"VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR"
    )
  ]

instance Show PipelineCreateFlagBits2KHR where
  showsPrec :: Int -> PipelineCreateFlagBits2KHR -> ShowS
showsPrec =
    forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
      String
enumPrefixPipelineCreateFlagBits2KHR
      [(PipelineCreateFlagBits2KHR, String)]
showTablePipelineCreateFlagBits2KHR
      String
conNamePipelineCreateFlagBits2KHR
      (\(PipelineCreateFlagBits2KHR Flags64
x) -> Flags64
x)
      (\Flags64
x -> String -> ShowS
showString String
"0x" forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. (Integral a, Show a) => a -> ShowS
showHex Flags64
x)

instance Read PipelineCreateFlagBits2KHR where
  readPrec :: ReadPrec PipelineCreateFlagBits2KHR
readPrec =
    forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
      String
enumPrefixPipelineCreateFlagBits2KHR
      [(PipelineCreateFlagBits2KHR, String)]
showTablePipelineCreateFlagBits2KHR
      String
conNamePipelineCreateFlagBits2KHR
      Flags64 -> PipelineCreateFlagBits2KHR
PipelineCreateFlagBits2KHR

type KHR_MAINTENANCE_5_SPEC_VERSION = 1

-- No documentation found for TopLevel "VK_KHR_MAINTENANCE_5_SPEC_VERSION"
pattern KHR_MAINTENANCE_5_SPEC_VERSION :: forall a . Integral a => a
pattern $bKHR_MAINTENANCE_5_SPEC_VERSION :: forall a. Integral a => a
$mKHR_MAINTENANCE_5_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
KHR_MAINTENANCE_5_SPEC_VERSION = 1


type KHR_MAINTENANCE_5_EXTENSION_NAME = "VK_KHR_maintenance5"

-- No documentation found for TopLevel "VK_KHR_MAINTENANCE_5_EXTENSION_NAME"
pattern KHR_MAINTENANCE_5_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $bKHR_MAINTENANCE_5_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
$mKHR_MAINTENANCE_5_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
KHR_MAINTENANCE_5_EXTENSION_NAME = "VK_KHR_maintenance5"