{-# 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>
--
-- [__API Interactions__]
--
--     -   Interacts with VK_VERSION_1_1
--
--     -   Interacts with VK_VERSION_1_2
--
--     -   Interacts with VK_VERSION_1_3
--
--     -   Interacts with VK_EXT_attachment_feedback_loop_layout
--
--     -   Interacts with VK_EXT_buffer_device_address
--
--     -   Interacts with VK_EXT_conditional_rendering
--
--     -   Interacts with VK_EXT_descriptor_buffer
--
--     -   Interacts with VK_EXT_fragment_density_map
--
--     -   Interacts with VK_EXT_graphics_pipeline_library
--
--     -   Interacts with VK_EXT_opacity_micromap
--
--     -   Interacts with VK_EXT_pipeline_creation_cache_control
--
--     -   Interacts with VK_EXT_pipeline_protected_access
--
--     -   Interacts with VK_EXT_transform_feedback
--
--     -   Interacts with VK_KHR_acceleration_structure
--
--     -   Interacts with VK_KHR_buffer_device_address
--
--     -   Interacts with VK_KHR_device_group
--
--     -   Interacts with VK_KHR_dynamic_rendering
--
--     -   Interacts with VK_KHR_fragment_shading_rate
--
--     -   Interacts with VK_KHR_pipeline_executable_properties
--
--     -   Interacts with VK_KHR_pipeline_library
--
--     -   Interacts with VK_KHR_ray_tracing_pipeline
--
--     -   Interacts with VK_KHR_video_decode_queue
--
--     -   Interacts with VK_KHR_video_encode_queue
--
--     -   Interacts with VK_NV_device_generated_commands
--
--     -   Interacts with VK_NV_displacement_micromap
--
--     -   Interacts with VK_NV_ray_tracing
--
--     -   Interacts with VK_NV_ray_tracing_motion_blur
--
-- [__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 = IO ("granularity" ::: Extent2D) -> io ("granularity" ::: Extent2D)
forall a. IO a -> io a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO ("granularity" ::: Extent2D)
 -> io ("granularity" ::: Extent2D))
-> (ContT
      ("granularity" ::: Extent2D) IO ("granularity" ::: Extent2D)
    -> IO ("granularity" ::: Extent2D))
-> ContT
     ("granularity" ::: Extent2D) IO ("granularity" ::: Extent2D)
-> io ("granularity" ::: Extent2D)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT ("granularity" ::: Extent2D) IO ("granularity" ::: Extent2D)
-> IO ("granularity" ::: Extent2D)
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT ("granularity" ::: Extent2D) IO ("granularity" ::: Extent2D)
 -> io ("granularity" ::: Extent2D))
-> ContT
     ("granularity" ::: Extent2D) IO ("granularity" ::: Extent2D)
-> io ("granularity" ::: Extent2D)
forall a b. (a -> b) -> a -> b
$ do
  let vkGetRenderingAreaGranularityKHRPtr :: FunPtr
  (Ptr Device_T
   -> Ptr RenderingAreaInfoKHR
   -> Ptr ("granularity" ::: Extent2D)
   -> IO ())
vkGetRenderingAreaGranularityKHRPtr = DeviceCmds
-> FunPtr
     (Ptr Device_T
      -> Ptr RenderingAreaInfoKHR
      -> Ptr ("granularity" ::: Extent2D)
      -> IO ())
pVkGetRenderingAreaGranularityKHR (case Device
device of Device{DeviceCmds
deviceCmds :: DeviceCmds
$sel:deviceCmds:Device :: Device -> DeviceCmds
deviceCmds} -> DeviceCmds
deviceCmds)
  IO () -> ContT ("granularity" ::: Extent2D) IO ()
forall (m :: * -> *) a.
Monad m =>
m a -> ContT ("granularity" ::: Extent2D) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT ("granularity" ::: Extent2D) IO ())
-> IO () -> ContT ("granularity" ::: Extent2D) IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
  (Ptr Device_T
   -> Ptr RenderingAreaInfoKHR
   -> Ptr ("granularity" ::: Extent2D)
   -> IO ())
vkGetRenderingAreaGranularityKHRPtr FunPtr
  (Ptr Device_T
   -> Ptr RenderingAreaInfoKHR
   -> Ptr ("granularity" ::: Extent2D)
   -> IO ())
-> FunPtr
     (Ptr Device_T
      -> Ptr RenderingAreaInfoKHR
      -> Ptr ("granularity" ::: Extent2D)
      -> IO ())
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
  (Ptr Device_T
   -> Ptr RenderingAreaInfoKHR
   -> Ptr ("granularity" ::: Extent2D)
   -> IO ())
forall a. FunPtr a
nullFunPtr) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
    IOException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (IOException -> IO ()) -> IOException -> IO ()
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument String
"" String
"The function pointer for vkGetRenderingAreaGranularityKHR is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
  let vkGetRenderingAreaGranularityKHR' :: Ptr Device_T
-> Ptr RenderingAreaInfoKHR
-> Ptr ("granularity" ::: Extent2D)
-> IO ()
vkGetRenderingAreaGranularityKHR' = FunPtr
  (Ptr Device_T
   -> Ptr RenderingAreaInfoKHR
   -> Ptr ("granularity" ::: Extent2D)
   -> IO ())
-> Ptr Device_T
-> Ptr RenderingAreaInfoKHR
-> Ptr ("granularity" ::: Extent2D)
-> IO ()
mkVkGetRenderingAreaGranularityKHR FunPtr
  (Ptr Device_T
   -> Ptr RenderingAreaInfoKHR
   -> Ptr ("granularity" ::: Extent2D)
   -> IO ())
vkGetRenderingAreaGranularityKHRPtr
  Ptr RenderingAreaInfoKHR
pRenderingAreaInfo <- ((Ptr RenderingAreaInfoKHR -> IO ("granularity" ::: Extent2D))
 -> IO ("granularity" ::: Extent2D))
-> ContT ("granularity" ::: Extent2D) IO (Ptr RenderingAreaInfoKHR)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr RenderingAreaInfoKHR -> IO ("granularity" ::: Extent2D))
  -> IO ("granularity" ::: Extent2D))
 -> ContT
      ("granularity" ::: Extent2D) IO (Ptr RenderingAreaInfoKHR))
-> ((Ptr RenderingAreaInfoKHR -> IO ("granularity" ::: Extent2D))
    -> IO ("granularity" ::: Extent2D))
-> ContT ("granularity" ::: Extent2D) IO (Ptr RenderingAreaInfoKHR)
forall a b. (a -> b) -> a -> b
$ RenderingAreaInfoKHR
-> (Ptr RenderingAreaInfoKHR -> IO ("granularity" ::: Extent2D))
-> IO ("granularity" ::: Extent2D)
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
forall b.
RenderingAreaInfoKHR -> (Ptr RenderingAreaInfoKHR -> IO b) -> IO b
withCStruct (RenderingAreaInfoKHR
renderingAreaInfo)
  Ptr ("granularity" ::: Extent2D)
pPGranularity <- ((Ptr ("granularity" ::: Extent2D)
  -> IO ("granularity" ::: Extent2D))
 -> IO ("granularity" ::: Extent2D))
-> ContT
     ("granularity" ::: Extent2D) IO (Ptr ("granularity" ::: Extent2D))
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)
  IO () -> ContT ("granularity" ::: Extent2D) IO ()
forall (m :: * -> *) a.
Monad m =>
m a -> ContT ("granularity" ::: Extent2D) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT ("granularity" ::: Extent2D) IO ())
-> IO () -> ContT ("granularity" ::: Extent2D) IO ()
forall a b. (a -> b) -> a -> b
$ String -> IO () -> IO ()
forall a. String -> IO a -> IO a
traceAroundEvent String
"vkGetRenderingAreaGranularityKHR" (Ptr Device_T
-> Ptr RenderingAreaInfoKHR
-> Ptr ("granularity" ::: Extent2D)
-> IO ()
vkGetRenderingAreaGranularityKHR'
                                                                (Device -> Ptr Device_T
deviceHandle (Device
device))
                                                                Ptr RenderingAreaInfoKHR
pRenderingAreaInfo
                                                                (Ptr ("granularity" ::: Extent2D)
pPGranularity))
  "granularity" ::: Extent2D
pGranularity <- IO ("granularity" ::: Extent2D)
-> ContT
     ("granularity" ::: Extent2D) IO ("granularity" ::: Extent2D)
forall (m :: * -> *) a.
Monad m =>
m a -> ContT ("granularity" ::: Extent2D) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO ("granularity" ::: Extent2D)
 -> ContT
      ("granularity" ::: Extent2D) IO ("granularity" ::: Extent2D))
-> IO ("granularity" ::: Extent2D)
-> ContT
     ("granularity" ::: Extent2D) IO ("granularity" ::: Extent2D)
forall a b. (a -> b) -> a -> b
$ forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @Extent2D Ptr ("granularity" ::: Extent2D)
pPGranularity
  ("granularity" ::: Extent2D)
-> ContT
     ("granularity" ::: Extent2D) IO ("granularity" ::: Extent2D)
forall a. a -> ContT ("granularity" ::: Extent2D) IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (("granularity" ::: Extent2D)
 -> ContT
      ("granularity" ::: Extent2D) IO ("granularity" ::: Extent2D))
-> ("granularity" ::: Extent2D)
-> ContT
     ("granularity" ::: Extent2D) IO ("granularity" ::: Extent2D)
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 = IO () -> io ()
forall a. IO a -> io a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> io ()) -> IO () -> io ()
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
deviceCmds :: DeviceCmds
$sel:deviceCmds:CommandBuffer :: CommandBuffer -> DeviceCmds
deviceCmds} -> DeviceCmds
deviceCmds)
  Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
  (Ptr CommandBuffer_T
   -> Buffer -> Flags64 -> Flags64 -> IndexType -> IO ())
vkCmdBindIndexBuffer2KHRPtr FunPtr
  (Ptr CommandBuffer_T
   -> Buffer -> Flags64 -> Flags64 -> IndexType -> IO ())
-> FunPtr
     (Ptr CommandBuffer_T
      -> Buffer -> Flags64 -> Flags64 -> IndexType -> IO ())
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
  (Ptr CommandBuffer_T
   -> Buffer -> Flags64 -> Flags64 -> IndexType -> IO ())
forall a. FunPtr a
nullFunPtr) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
    IOException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (IOException -> IO ()) -> IOException -> IO ()
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument String
"" String
"The function pointer for vkCmdBindIndexBuffer2KHR is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
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
  String -> IO () -> IO ()
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))
  () -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (() -> IO ()) -> () -> IO ()
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 @image@
--
-- -   #VUID-vkGetImageSubresourceLayout2KHR-arrayLayer-01717# The
--     @arrayLayer@ member of @pSubresource@ /must/ be less than the
--     @arrayLayers@ specified in @image@
--
-- -   #VUID-vkGetImageSubresourceLayout2KHR-format-08886# If @format@ of
--     the @image@ is a color format that is not a
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image format>,
--     and @tiling@ of the @image@ is
--     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' or
--     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', 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-09434# 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-09435# 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 = IO (SubresourceLayout2KHR a) -> io (SubresourceLayout2KHR a)
forall a. IO a -> io a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (SubresourceLayout2KHR a) -> io (SubresourceLayout2KHR a))
-> (ContT (SubresourceLayout2KHR a) IO (SubresourceLayout2KHR a)
    -> IO (SubresourceLayout2KHR a))
-> ContT (SubresourceLayout2KHR a) IO (SubresourceLayout2KHR a)
-> io (SubresourceLayout2KHR a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT (SubresourceLayout2KHR a) IO (SubresourceLayout2KHR a)
-> IO (SubresourceLayout2KHR a)
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT (SubresourceLayout2KHR a) IO (SubresourceLayout2KHR a)
 -> io (SubresourceLayout2KHR a))
-> ContT (SubresourceLayout2KHR a) IO (SubresourceLayout2KHR a)
-> io (SubresourceLayout2KHR a)
forall a b. (a -> b) -> a -> b
$ do
  let vkGetImageSubresourceLayout2KHRPtr :: FunPtr
  (Ptr Device_T
   -> Image
   -> Ptr ImageSubresource2KHR
   -> Ptr (SomeStruct SubresourceLayout2KHR)
   -> IO ())
vkGetImageSubresourceLayout2KHRPtr = DeviceCmds
-> FunPtr
     (Ptr Device_T
      -> Image
      -> Ptr ImageSubresource2KHR
      -> Ptr (SomeStruct SubresourceLayout2KHR)
      -> IO ())
pVkGetImageSubresourceLayout2KHR (case Device
device of Device{DeviceCmds
$sel:deviceCmds:Device :: Device -> DeviceCmds
deviceCmds :: DeviceCmds
deviceCmds} -> DeviceCmds
deviceCmds)
  IO () -> ContT (SubresourceLayout2KHR a) IO ()
forall (m :: * -> *) a.
Monad m =>
m a -> ContT (SubresourceLayout2KHR a) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT (SubresourceLayout2KHR a) IO ())
-> IO () -> ContT (SubresourceLayout2KHR a) IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
  (Ptr Device_T
   -> Image
   -> Ptr ImageSubresource2KHR
   -> Ptr (SomeStruct SubresourceLayout2KHR)
   -> IO ())
vkGetImageSubresourceLayout2KHRPtr FunPtr
  (Ptr Device_T
   -> Image
   -> Ptr ImageSubresource2KHR
   -> Ptr (SomeStruct SubresourceLayout2KHR)
   -> IO ())
-> FunPtr
     (Ptr Device_T
      -> Image
      -> Ptr ImageSubresource2KHR
      -> Ptr (SomeStruct SubresourceLayout2KHR)
      -> IO ())
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
  (Ptr Device_T
   -> Image
   -> Ptr ImageSubresource2KHR
   -> Ptr (SomeStruct SubresourceLayout2KHR)
   -> IO ())
forall a. FunPtr a
nullFunPtr) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
    IOException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (IOException -> IO ()) -> IOException -> IO ()
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument String
"" String
"The function pointer for vkGetImageSubresourceLayout2KHR is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
  let vkGetImageSubresourceLayout2KHR' :: Ptr Device_T
-> Image
-> Ptr ImageSubresource2KHR
-> Ptr (SomeStruct SubresourceLayout2KHR)
-> IO ()
vkGetImageSubresourceLayout2KHR' = FunPtr
  (Ptr Device_T
   -> Image
   -> Ptr ImageSubresource2KHR
   -> Ptr (SomeStruct SubresourceLayout2KHR)
   -> IO ())
-> Ptr Device_T
-> Image
-> Ptr ImageSubresource2KHR
-> Ptr (SomeStruct SubresourceLayout2KHR)
-> IO ()
mkVkGetImageSubresourceLayout2KHR FunPtr
  (Ptr Device_T
   -> Image
   -> Ptr ImageSubresource2KHR
   -> Ptr (SomeStruct SubresourceLayout2KHR)
   -> IO ())
vkGetImageSubresourceLayout2KHRPtr
  Ptr ImageSubresource2KHR
pSubresource <- ((Ptr ImageSubresource2KHR -> IO (SubresourceLayout2KHR a))
 -> IO (SubresourceLayout2KHR a))
-> ContT (SubresourceLayout2KHR a) IO (Ptr ImageSubresource2KHR)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr ImageSubresource2KHR -> IO (SubresourceLayout2KHR a))
  -> IO (SubresourceLayout2KHR a))
 -> ContT (SubresourceLayout2KHR a) IO (Ptr ImageSubresource2KHR))
-> ((Ptr ImageSubresource2KHR -> IO (SubresourceLayout2KHR a))
    -> IO (SubresourceLayout2KHR a))
-> ContT (SubresourceLayout2KHR a) IO (Ptr ImageSubresource2KHR)
forall a b. (a -> b) -> a -> b
$ ImageSubresource2KHR
-> (Ptr ImageSubresource2KHR -> IO (SubresourceLayout2KHR a))
-> IO (SubresourceLayout2KHR a)
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
forall b.
ImageSubresource2KHR -> (Ptr ImageSubresource2KHR -> IO b) -> IO b
withCStruct (ImageSubresource2KHR
subresource)
  Ptr (SubresourceLayout2KHR a)
pPLayout <- ((Ptr (SubresourceLayout2KHR a) -> IO (SubresourceLayout2KHR a))
 -> IO (SubresourceLayout2KHR a))
-> ContT
     (SubresourceLayout2KHR a) IO (Ptr (SubresourceLayout2KHR a))
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 _))
  IO () -> ContT (SubresourceLayout2KHR a) IO ()
forall (m :: * -> *) a.
Monad m =>
m a -> ContT (SubresourceLayout2KHR a) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT (SubresourceLayout2KHR a) IO ())
-> IO () -> ContT (SubresourceLayout2KHR a) IO ()
forall a b. (a -> b) -> a -> b
$ String -> IO () -> IO ()
forall a. String -> IO a -> IO a
traceAroundEvent String
"vkGetImageSubresourceLayout2KHR" (Ptr Device_T
-> Image
-> Ptr ImageSubresource2KHR
-> Ptr (SomeStruct SubresourceLayout2KHR)
-> IO ()
vkGetImageSubresourceLayout2KHR'
                                                               (Device -> Ptr Device_T
deviceHandle (Device
device))
                                                               (Image
image)
                                                               Ptr ImageSubresource2KHR
pSubresource
                                                               (Ptr (SubresourceLayout2KHR a)
-> Ptr (SomeStruct SubresourceLayout2KHR)
forall (a :: [*] -> *) (es :: [*]).
Ptr (a es) -> Ptr (SomeStruct a)
forgetExtensions (Ptr (SubresourceLayout2KHR a)
pPLayout)))
  SubresourceLayout2KHR a
pLayout <- IO (SubresourceLayout2KHR a)
-> ContT (SubresourceLayout2KHR a) IO (SubresourceLayout2KHR a)
forall (m :: * -> *) a.
Monad m =>
m a -> ContT (SubresourceLayout2KHR a) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO (SubresourceLayout2KHR a)
 -> ContT (SubresourceLayout2KHR a) IO (SubresourceLayout2KHR a))
-> IO (SubresourceLayout2KHR a)
-> ContT (SubresourceLayout2KHR a) IO (SubresourceLayout2KHR a)
forall a b. (a -> b) -> a -> b
$ forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @(SubresourceLayout2KHR _) Ptr (SubresourceLayout2KHR a)
pPLayout
  SubresourceLayout2KHR a
-> ContT (SubresourceLayout2KHR a) IO (SubresourceLayout2KHR a)
forall a. a -> ContT (SubresourceLayout2KHR a) IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (SubresourceLayout2KHR a
 -> ContT (SubresourceLayout2KHR a) IO (SubresourceLayout2KHR a))
-> SubresourceLayout2KHR a
-> ContT (SubresourceLayout2KHR a) IO (SubresourceLayout2KHR a)
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 = IO (SubresourceLayout2KHR a) -> io (SubresourceLayout2KHR a)
forall a. IO a -> io a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (SubresourceLayout2KHR a) -> io (SubresourceLayout2KHR a))
-> (ContT (SubresourceLayout2KHR a) IO (SubresourceLayout2KHR a)
    -> IO (SubresourceLayout2KHR a))
-> ContT (SubresourceLayout2KHR a) IO (SubresourceLayout2KHR a)
-> io (SubresourceLayout2KHR a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT (SubresourceLayout2KHR a) IO (SubresourceLayout2KHR a)
-> IO (SubresourceLayout2KHR a)
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT (SubresourceLayout2KHR a) IO (SubresourceLayout2KHR a)
 -> io (SubresourceLayout2KHR a))
-> ContT (SubresourceLayout2KHR a) IO (SubresourceLayout2KHR a)
-> io (SubresourceLayout2KHR a)
forall a b. (a -> b) -> a -> b
$ do
  let vkGetDeviceImageSubresourceLayoutKHRPtr :: FunPtr
  (Ptr Device_T
   -> Ptr DeviceImageSubresourceInfoKHR
   -> Ptr (SomeStruct SubresourceLayout2KHR)
   -> IO ())
vkGetDeviceImageSubresourceLayoutKHRPtr = DeviceCmds
-> FunPtr
     (Ptr Device_T
      -> Ptr DeviceImageSubresourceInfoKHR
      -> Ptr (SomeStruct SubresourceLayout2KHR)
      -> IO ())
pVkGetDeviceImageSubresourceLayoutKHR (case Device
device of Device{DeviceCmds
$sel:deviceCmds:Device :: Device -> DeviceCmds
deviceCmds :: DeviceCmds
deviceCmds} -> DeviceCmds
deviceCmds)
  IO () -> ContT (SubresourceLayout2KHR a) IO ()
forall (m :: * -> *) a.
Monad m =>
m a -> ContT (SubresourceLayout2KHR a) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT (SubresourceLayout2KHR a) IO ())
-> IO () -> ContT (SubresourceLayout2KHR a) IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
  (Ptr Device_T
   -> Ptr DeviceImageSubresourceInfoKHR
   -> Ptr (SomeStruct SubresourceLayout2KHR)
   -> IO ())
vkGetDeviceImageSubresourceLayoutKHRPtr FunPtr
  (Ptr Device_T
   -> Ptr DeviceImageSubresourceInfoKHR
   -> Ptr (SomeStruct SubresourceLayout2KHR)
   -> IO ())
-> FunPtr
     (Ptr Device_T
      -> Ptr DeviceImageSubresourceInfoKHR
      -> Ptr (SomeStruct SubresourceLayout2KHR)
      -> IO ())
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
  (Ptr Device_T
   -> Ptr DeviceImageSubresourceInfoKHR
   -> Ptr (SomeStruct SubresourceLayout2KHR)
   -> IO ())
forall a. FunPtr a
nullFunPtr) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
    IOException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (IOException -> IO ()) -> IOException -> IO ()
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument String
"" String
"The function pointer for vkGetDeviceImageSubresourceLayoutKHR is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
  let vkGetDeviceImageSubresourceLayoutKHR' :: Ptr Device_T
-> Ptr DeviceImageSubresourceInfoKHR
-> Ptr (SomeStruct SubresourceLayout2KHR)
-> IO ()
vkGetDeviceImageSubresourceLayoutKHR' = FunPtr
  (Ptr Device_T
   -> Ptr DeviceImageSubresourceInfoKHR
   -> Ptr (SomeStruct SubresourceLayout2KHR)
   -> IO ())
-> Ptr Device_T
-> Ptr DeviceImageSubresourceInfoKHR
-> Ptr (SomeStruct SubresourceLayout2KHR)
-> IO ()
mkVkGetDeviceImageSubresourceLayoutKHR FunPtr
  (Ptr Device_T
   -> Ptr DeviceImageSubresourceInfoKHR
   -> Ptr (SomeStruct SubresourceLayout2KHR)
   -> IO ())
vkGetDeviceImageSubresourceLayoutKHRPtr
  Ptr DeviceImageSubresourceInfoKHR
pInfo <- ((Ptr DeviceImageSubresourceInfoKHR
  -> IO (SubresourceLayout2KHR a))
 -> IO (SubresourceLayout2KHR a))
-> ContT
     (SubresourceLayout2KHR a) IO (Ptr DeviceImageSubresourceInfoKHR)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr DeviceImageSubresourceInfoKHR
   -> IO (SubresourceLayout2KHR a))
  -> IO (SubresourceLayout2KHR a))
 -> ContT
      (SubresourceLayout2KHR a) IO (Ptr DeviceImageSubresourceInfoKHR))
-> ((Ptr DeviceImageSubresourceInfoKHR
     -> IO (SubresourceLayout2KHR a))
    -> IO (SubresourceLayout2KHR a))
-> ContT
     (SubresourceLayout2KHR a) IO (Ptr DeviceImageSubresourceInfoKHR)
forall a b. (a -> b) -> a -> b
$ DeviceImageSubresourceInfoKHR
-> (Ptr DeviceImageSubresourceInfoKHR
    -> IO (SubresourceLayout2KHR a))
-> IO (SubresourceLayout2KHR a)
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
forall b.
DeviceImageSubresourceInfoKHR
-> (Ptr DeviceImageSubresourceInfoKHR -> IO b) -> IO b
withCStruct (DeviceImageSubresourceInfoKHR
info)
  Ptr (SubresourceLayout2KHR a)
pPLayout <- ((Ptr (SubresourceLayout2KHR a) -> IO (SubresourceLayout2KHR a))
 -> IO (SubresourceLayout2KHR a))
-> ContT
     (SubresourceLayout2KHR a) IO (Ptr (SubresourceLayout2KHR a))
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 _))
  IO () -> ContT (SubresourceLayout2KHR a) IO ()
forall (m :: * -> *) a.
Monad m =>
m a -> ContT (SubresourceLayout2KHR a) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT (SubresourceLayout2KHR a) IO ())
-> IO () -> ContT (SubresourceLayout2KHR a) IO ()
forall a b. (a -> b) -> a -> b
$ String -> IO () -> IO ()
forall a. String -> IO a -> IO a
traceAroundEvent String
"vkGetDeviceImageSubresourceLayoutKHR" (Ptr Device_T
-> Ptr DeviceImageSubresourceInfoKHR
-> Ptr (SomeStruct SubresourceLayout2KHR)
-> IO ()
vkGetDeviceImageSubresourceLayoutKHR'
                                                                    (Device -> Ptr Device_T
deviceHandle (Device
device))
                                                                    Ptr DeviceImageSubresourceInfoKHR
pInfo
                                                                    (Ptr (SubresourceLayout2KHR a)
-> Ptr (SomeStruct SubresourceLayout2KHR)
forall (a :: [*] -> *) (es :: [*]).
Ptr (a es) -> Ptr (SomeStruct a)
forgetExtensions (Ptr (SubresourceLayout2KHR a)
pPLayout)))
  SubresourceLayout2KHR a
pLayout <- IO (SubresourceLayout2KHR a)
-> ContT (SubresourceLayout2KHR a) IO (SubresourceLayout2KHR a)
forall (m :: * -> *) a.
Monad m =>
m a -> ContT (SubresourceLayout2KHR a) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO (SubresourceLayout2KHR a)
 -> ContT (SubresourceLayout2KHR a) IO (SubresourceLayout2KHR a))
-> IO (SubresourceLayout2KHR a)
-> ContT (SubresourceLayout2KHR a) IO (SubresourceLayout2KHR a)
forall a b. (a -> b) -> a -> b
$ forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @(SubresourceLayout2KHR _) Ptr (SubresourceLayout2KHR a)
pPLayout
  SubresourceLayout2KHR a
-> ContT (SubresourceLayout2KHR a) IO (SubresourceLayout2KHR a)
forall a. a -> ContT (SubresourceLayout2KHR a) IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (SubresourceLayout2KHR a
 -> ContT (SubresourceLayout2KHR a) IO (SubresourceLayout2KHR a))
-> SubresourceLayout2KHR a
-> ContT (SubresourceLayout2KHR a) IO (SubresourceLayout2KHR a)
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
(BufferUsageFlags2CreateInfoKHR
 -> BufferUsageFlags2CreateInfoKHR -> Bool)
-> (BufferUsageFlags2CreateInfoKHR
    -> BufferUsageFlags2CreateInfoKHR -> Bool)
-> Eq BufferUsageFlags2CreateInfoKHR
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: BufferUsageFlags2CreateInfoKHR
-> BufferUsageFlags2CreateInfoKHR -> Bool
== :: BufferUsageFlags2CreateInfoKHR
-> BufferUsageFlags2CreateInfoKHR -> Bool
$c/= :: BufferUsageFlags2CreateInfoKHR
-> BufferUsageFlags2CreateInfoKHR -> Bool
/= :: 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 = Int -> (Ptr BufferUsageFlags2CreateInfoKHR -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr BufferUsageFlags2CreateInfoKHR -> IO b) -> IO b)
-> (Ptr BufferUsageFlags2CreateInfoKHR -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr BufferUsageFlags2CreateInfoKHR
p -> Ptr BufferUsageFlags2CreateInfoKHR
-> BufferUsageFlags2CreateInfoKHR -> IO b -> IO b
forall b.
Ptr BufferUsageFlags2CreateInfoKHR
-> BufferUsageFlags2CreateInfoKHR -> IO b -> IO b
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
$sel:usage:BufferUsageFlags2CreateInfoKHR :: BufferUsageFlags2CreateInfoKHR -> BufferUsageFlagBits2KHR
usage :: BufferUsageFlagBits2KHR
..} IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr BufferUsageFlags2CreateInfoKHR
p Ptr BufferUsageFlags2CreateInfoKHR -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr BufferUsageFlags2CreateInfoKHR
p Ptr BufferUsageFlags2CreateInfoKHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr BufferUsageFlagBits2KHR -> BufferUsageFlagBits2KHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr BufferUsageFlags2CreateInfoKHR
p Ptr BufferUsageFlags2CreateInfoKHR
-> Int -> Ptr BufferUsageFlagBits2KHR
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
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr BufferUsageFlags2CreateInfoKHR
p Ptr BufferUsageFlags2CreateInfoKHR -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr BufferUsageFlags2CreateInfoKHR
p Ptr BufferUsageFlags2CreateInfoKHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr BufferUsageFlagBits2KHR -> BufferUsageFlagBits2KHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr BufferUsageFlags2CreateInfoKHR
p Ptr BufferUsageFlags2CreateInfoKHR
-> Int -> Ptr BufferUsageFlagBits2KHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr BufferUsageFlags2KHR)) (BufferUsageFlagBits2KHR
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 Ptr BufferUsageFlags2CreateInfoKHR
-> Int -> Ptr BufferUsageFlagBits2KHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr BufferUsageFlags2KHR))
    BufferUsageFlags2CreateInfoKHR -> IO BufferUsageFlags2CreateInfoKHR
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (BufferUsageFlags2CreateInfoKHR
 -> IO BufferUsageFlags2CreateInfoKHR)
-> BufferUsageFlags2CreateInfoKHR
-> IO BufferUsageFlags2CreateInfoKHR
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 = Ptr BufferUsageFlags2CreateInfoKHR
-> IO BufferUsageFlags2CreateInfoKHR
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
  poke :: Ptr BufferUsageFlags2CreateInfoKHR
-> BufferUsageFlags2CreateInfoKHR -> IO ()
poke Ptr BufferUsageFlags2CreateInfoKHR
ptr BufferUsageFlags2CreateInfoKHR
poked = Ptr BufferUsageFlags2CreateInfoKHR
-> BufferUsageFlags2CreateInfoKHR -> IO () -> IO ()
forall b.
Ptr BufferUsageFlags2CreateInfoKHR
-> BufferUsageFlags2CreateInfoKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr BufferUsageFlags2CreateInfoKHR
ptr BufferUsageFlags2CreateInfoKHR
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())

instance Zero BufferUsageFlags2CreateInfoKHR where
  zero :: BufferUsageFlags2CreateInfoKHR
zero = BufferUsageFlagBits2KHR -> BufferUsageFlags2CreateInfoKHR
BufferUsageFlags2CreateInfoKHR
           BufferUsageFlagBits2KHR
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 -> PipelineCreateFlags2KHR
flags :: PipelineCreateFlags2KHR }
  deriving (Typeable, PipelineCreateFlags2CreateInfoKHR
-> PipelineCreateFlags2CreateInfoKHR -> Bool
(PipelineCreateFlags2CreateInfoKHR
 -> PipelineCreateFlags2CreateInfoKHR -> Bool)
-> (PipelineCreateFlags2CreateInfoKHR
    -> PipelineCreateFlags2CreateInfoKHR -> Bool)
-> Eq PipelineCreateFlags2CreateInfoKHR
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PipelineCreateFlags2CreateInfoKHR
-> PipelineCreateFlags2CreateInfoKHR -> Bool
== :: PipelineCreateFlags2CreateInfoKHR
-> PipelineCreateFlags2CreateInfoKHR -> Bool
$c/= :: PipelineCreateFlags2CreateInfoKHR
-> PipelineCreateFlags2CreateInfoKHR -> Bool
/= :: 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 = Int -> (Ptr PipelineCreateFlags2CreateInfoKHR -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr PipelineCreateFlags2CreateInfoKHR -> IO b) -> IO b)
-> (Ptr PipelineCreateFlags2CreateInfoKHR -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PipelineCreateFlags2CreateInfoKHR
p -> Ptr PipelineCreateFlags2CreateInfoKHR
-> PipelineCreateFlags2CreateInfoKHR -> IO b -> IO b
forall b.
Ptr PipelineCreateFlags2CreateInfoKHR
-> PipelineCreateFlags2CreateInfoKHR -> IO b -> IO b
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{PipelineCreateFlags2KHR
$sel:flags:PipelineCreateFlags2CreateInfoKHR :: PipelineCreateFlags2CreateInfoKHR -> PipelineCreateFlags2KHR
flags :: PipelineCreateFlags2KHR
..} IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineCreateFlags2CreateInfoKHR
p Ptr PipelineCreateFlags2CreateInfoKHR -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineCreateFlags2CreateInfoKHR
p Ptr PipelineCreateFlags2CreateInfoKHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineCreateFlags2CreateInfoKHR
p Ptr PipelineCreateFlags2CreateInfoKHR
-> Int -> Ptr PipelineCreateFlags2KHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr PipelineCreateFlags2KHR)) (PipelineCreateFlags2KHR
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
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineCreateFlags2CreateInfoKHR
p Ptr PipelineCreateFlags2CreateInfoKHR -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineCreateFlags2CreateInfoKHR
p Ptr PipelineCreateFlags2CreateInfoKHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineCreateFlags2CreateInfoKHR
p Ptr PipelineCreateFlags2CreateInfoKHR
-> Int -> Ptr PipelineCreateFlags2KHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr PipelineCreateFlags2KHR)) (PipelineCreateFlags2KHR
forall a. Zero a => a
zero)
    IO b
f

instance FromCStruct PipelineCreateFlags2CreateInfoKHR where
  peekCStruct :: Ptr PipelineCreateFlags2CreateInfoKHR
-> IO PipelineCreateFlags2CreateInfoKHR
peekCStruct Ptr PipelineCreateFlags2CreateInfoKHR
p = do
    PipelineCreateFlags2KHR
flags <- forall a. Storable a => Ptr a -> IO a
peek @PipelineCreateFlags2KHR ((Ptr PipelineCreateFlags2CreateInfoKHR
p Ptr PipelineCreateFlags2CreateInfoKHR
-> Int -> Ptr PipelineCreateFlags2KHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr PipelineCreateFlags2KHR))
    PipelineCreateFlags2CreateInfoKHR
-> IO PipelineCreateFlags2CreateInfoKHR
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PipelineCreateFlags2CreateInfoKHR
 -> IO PipelineCreateFlags2CreateInfoKHR)
-> PipelineCreateFlags2CreateInfoKHR
-> IO PipelineCreateFlags2CreateInfoKHR
forall a b. (a -> b) -> a -> b
$ PipelineCreateFlags2KHR -> PipelineCreateFlags2CreateInfoKHR
PipelineCreateFlags2CreateInfoKHR
             PipelineCreateFlags2KHR
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 = Ptr PipelineCreateFlags2CreateInfoKHR
-> IO PipelineCreateFlags2CreateInfoKHR
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
  poke :: Ptr PipelineCreateFlags2CreateInfoKHR
-> PipelineCreateFlags2CreateInfoKHR -> IO ()
poke Ptr PipelineCreateFlags2CreateInfoKHR
ptr PipelineCreateFlags2CreateInfoKHR
poked = Ptr PipelineCreateFlags2CreateInfoKHR
-> PipelineCreateFlags2CreateInfoKHR -> IO () -> IO ()
forall b.
Ptr PipelineCreateFlags2CreateInfoKHR
-> PipelineCreateFlags2CreateInfoKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PipelineCreateFlags2CreateInfoKHR
ptr PipelineCreateFlags2CreateInfoKHR
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())

instance Zero PipelineCreateFlags2CreateInfoKHR where
  zero :: PipelineCreateFlags2CreateInfoKHR
zero = PipelineCreateFlags2KHR -> PipelineCreateFlags2CreateInfoKHR
PipelineCreateFlags2CreateInfoKHR
           PipelineCreateFlags2KHR
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
(PhysicalDeviceMaintenance5FeaturesKHR
 -> PhysicalDeviceMaintenance5FeaturesKHR -> Bool)
-> (PhysicalDeviceMaintenance5FeaturesKHR
    -> PhysicalDeviceMaintenance5FeaturesKHR -> Bool)
-> Eq PhysicalDeviceMaintenance5FeaturesKHR
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PhysicalDeviceMaintenance5FeaturesKHR
-> PhysicalDeviceMaintenance5FeaturesKHR -> Bool
== :: PhysicalDeviceMaintenance5FeaturesKHR
-> PhysicalDeviceMaintenance5FeaturesKHR -> Bool
$c/= :: PhysicalDeviceMaintenance5FeaturesKHR
-> PhysicalDeviceMaintenance5FeaturesKHR -> Bool
/= :: 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 = Int -> (Ptr PhysicalDeviceMaintenance5FeaturesKHR -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr PhysicalDeviceMaintenance5FeaturesKHR -> IO b) -> IO b)
-> (Ptr PhysicalDeviceMaintenance5FeaturesKHR -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceMaintenance5FeaturesKHR
p -> Ptr PhysicalDeviceMaintenance5FeaturesKHR
-> PhysicalDeviceMaintenance5FeaturesKHR -> IO b -> IO b
forall b.
Ptr PhysicalDeviceMaintenance5FeaturesKHR
-> PhysicalDeviceMaintenance5FeaturesKHR -> IO b -> IO b
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
$sel:maintenance5:PhysicalDeviceMaintenance5FeaturesKHR :: PhysicalDeviceMaintenance5FeaturesKHR -> Bool
maintenance5 :: Bool
..} IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5FeaturesKHR
p Ptr PhysicalDeviceMaintenance5FeaturesKHR
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5FeaturesKHR
p Ptr PhysicalDeviceMaintenance5FeaturesKHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5FeaturesKHR
p Ptr PhysicalDeviceMaintenance5FeaturesKHR -> Int -> Ptr Bool32
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
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5FeaturesKHR
p Ptr PhysicalDeviceMaintenance5FeaturesKHR
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5FeaturesKHR
p Ptr PhysicalDeviceMaintenance5FeaturesKHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5FeaturesKHR
p Ptr PhysicalDeviceMaintenance5FeaturesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    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 Ptr PhysicalDeviceMaintenance5FeaturesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
    PhysicalDeviceMaintenance5FeaturesKHR
-> IO PhysicalDeviceMaintenance5FeaturesKHR
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PhysicalDeviceMaintenance5FeaturesKHR
 -> IO PhysicalDeviceMaintenance5FeaturesKHR)
-> PhysicalDeviceMaintenance5FeaturesKHR
-> IO PhysicalDeviceMaintenance5FeaturesKHR
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 = Ptr PhysicalDeviceMaintenance5FeaturesKHR
-> IO PhysicalDeviceMaintenance5FeaturesKHR
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
  poke :: Ptr PhysicalDeviceMaintenance5FeaturesKHR
-> PhysicalDeviceMaintenance5FeaturesKHR -> IO ()
poke Ptr PhysicalDeviceMaintenance5FeaturesKHR
ptr PhysicalDeviceMaintenance5FeaturesKHR
poked = Ptr PhysicalDeviceMaintenance5FeaturesKHR
-> PhysicalDeviceMaintenance5FeaturesKHR -> IO () -> IO ()
forall b.
Ptr PhysicalDeviceMaintenance5FeaturesKHR
-> PhysicalDeviceMaintenance5FeaturesKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceMaintenance5FeaturesKHR
ptr PhysicalDeviceMaintenance5FeaturesKHR
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())

instance Zero PhysicalDeviceMaintenance5FeaturesKHR where
  zero :: PhysicalDeviceMaintenance5FeaturesKHR
zero = Bool -> PhysicalDeviceMaintenance5FeaturesKHR
PhysicalDeviceMaintenance5FeaturesKHR
           Bool
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
(PhysicalDeviceMaintenance5PropertiesKHR
 -> PhysicalDeviceMaintenance5PropertiesKHR -> Bool)
-> (PhysicalDeviceMaintenance5PropertiesKHR
    -> PhysicalDeviceMaintenance5PropertiesKHR -> Bool)
-> Eq PhysicalDeviceMaintenance5PropertiesKHR
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PhysicalDeviceMaintenance5PropertiesKHR
-> PhysicalDeviceMaintenance5PropertiesKHR -> Bool
== :: PhysicalDeviceMaintenance5PropertiesKHR
-> PhysicalDeviceMaintenance5PropertiesKHR -> Bool
$c/= :: PhysicalDeviceMaintenance5PropertiesKHR
-> PhysicalDeviceMaintenance5PropertiesKHR -> Bool
/= :: 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 = Int
-> (Ptr PhysicalDeviceMaintenance5PropertiesKHR -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
40 ((Ptr PhysicalDeviceMaintenance5PropertiesKHR -> IO b) -> IO b)
-> (Ptr PhysicalDeviceMaintenance5PropertiesKHR -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceMaintenance5PropertiesKHR
p -> Ptr PhysicalDeviceMaintenance5PropertiesKHR
-> PhysicalDeviceMaintenance5PropertiesKHR -> IO b -> IO b
forall b.
Ptr PhysicalDeviceMaintenance5PropertiesKHR
-> PhysicalDeviceMaintenance5PropertiesKHR -> IO b -> IO b
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
$sel:earlyFragmentMultisampleCoverageAfterSampleCounting:PhysicalDeviceMaintenance5PropertiesKHR :: PhysicalDeviceMaintenance5PropertiesKHR -> Bool
$sel:earlyFragmentSampleMaskTestBeforeSampleCounting:PhysicalDeviceMaintenance5PropertiesKHR :: PhysicalDeviceMaintenance5PropertiesKHR -> Bool
$sel:depthStencilSwizzleOneSupport:PhysicalDeviceMaintenance5PropertiesKHR :: PhysicalDeviceMaintenance5PropertiesKHR -> Bool
$sel:polygonModePointSize:PhysicalDeviceMaintenance5PropertiesKHR :: PhysicalDeviceMaintenance5PropertiesKHR -> Bool
$sel:nonStrictSinglePixelWideLinesUseParallelogram:PhysicalDeviceMaintenance5PropertiesKHR :: PhysicalDeviceMaintenance5PropertiesKHR -> Bool
$sel:nonStrictWideLinesUseParallelogram:PhysicalDeviceMaintenance5PropertiesKHR :: PhysicalDeviceMaintenance5PropertiesKHR -> Bool
earlyFragmentMultisampleCoverageAfterSampleCounting :: Bool
earlyFragmentSampleMaskTestBeforeSampleCounting :: Bool
depthStencilSwizzleOneSupport :: Bool
polygonModePointSize :: Bool
nonStrictSinglePixelWideLinesUseParallelogram :: Bool
nonStrictWideLinesUseParallelogram :: Bool
..} IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5PropertiesKHR
p Ptr PhysicalDeviceMaintenance5PropertiesKHR
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5PropertiesKHR
p Ptr PhysicalDeviceMaintenance5PropertiesKHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5PropertiesKHR
p Ptr PhysicalDeviceMaintenance5PropertiesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
earlyFragmentMultisampleCoverageAfterSampleCounting))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5PropertiesKHR
p Ptr PhysicalDeviceMaintenance5PropertiesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
earlyFragmentSampleMaskTestBeforeSampleCounting))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5PropertiesKHR
p Ptr PhysicalDeviceMaintenance5PropertiesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
depthStencilSwizzleOneSupport))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5PropertiesKHR
p Ptr PhysicalDeviceMaintenance5PropertiesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
polygonModePointSize))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5PropertiesKHR
p Ptr PhysicalDeviceMaintenance5PropertiesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
nonStrictSinglePixelWideLinesUseParallelogram))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5PropertiesKHR
p Ptr PhysicalDeviceMaintenance5PropertiesKHR -> Int -> Ptr Bool32
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
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5PropertiesKHR
p Ptr PhysicalDeviceMaintenance5PropertiesKHR
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5PropertiesKHR
p Ptr PhysicalDeviceMaintenance5PropertiesKHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5PropertiesKHR
p Ptr PhysicalDeviceMaintenance5PropertiesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5PropertiesKHR
p Ptr PhysicalDeviceMaintenance5PropertiesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5PropertiesKHR
p Ptr PhysicalDeviceMaintenance5PropertiesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5PropertiesKHR
p Ptr PhysicalDeviceMaintenance5PropertiesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5PropertiesKHR
p Ptr PhysicalDeviceMaintenance5PropertiesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance5PropertiesKHR
p Ptr PhysicalDeviceMaintenance5PropertiesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    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 Ptr PhysicalDeviceMaintenance5PropertiesKHR -> Int -> Ptr Bool32
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 Ptr PhysicalDeviceMaintenance5PropertiesKHR -> Int -> Ptr Bool32
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 Ptr PhysicalDeviceMaintenance5PropertiesKHR -> Int -> Ptr Bool32
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 Ptr PhysicalDeviceMaintenance5PropertiesKHR -> Int -> Ptr Bool32
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 Ptr PhysicalDeviceMaintenance5PropertiesKHR -> Int -> Ptr Bool32
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 Ptr PhysicalDeviceMaintenance5PropertiesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr Bool32))
    PhysicalDeviceMaintenance5PropertiesKHR
-> IO PhysicalDeviceMaintenance5PropertiesKHR
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PhysicalDeviceMaintenance5PropertiesKHR
 -> IO PhysicalDeviceMaintenance5PropertiesKHR)
-> PhysicalDeviceMaintenance5PropertiesKHR
-> IO PhysicalDeviceMaintenance5PropertiesKHR
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 = Ptr PhysicalDeviceMaintenance5PropertiesKHR
-> IO PhysicalDeviceMaintenance5PropertiesKHR
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
  poke :: Ptr PhysicalDeviceMaintenance5PropertiesKHR
-> PhysicalDeviceMaintenance5PropertiesKHR -> IO ()
poke Ptr PhysicalDeviceMaintenance5PropertiesKHR
ptr PhysicalDeviceMaintenance5PropertiesKHR
poked = Ptr PhysicalDeviceMaintenance5PropertiesKHR
-> PhysicalDeviceMaintenance5PropertiesKHR -> IO () -> IO ()
forall b.
Ptr PhysicalDeviceMaintenance5PropertiesKHR
-> PhysicalDeviceMaintenance5PropertiesKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceMaintenance5PropertiesKHR
ptr PhysicalDeviceMaintenance5PropertiesKHR
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())

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


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

instance FromCStruct RenderingAreaInfoKHR where
  peekCStruct :: Ptr RenderingAreaInfoKHR -> IO RenderingAreaInfoKHR
peekCStruct Ptr RenderingAreaInfoKHR
p = do
    Word32
viewMask <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr RenderingAreaInfoKHR
p Ptr RenderingAreaInfoKHR -> Int -> Ptr Word32
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 ((Ptr RenderingAreaInfoKHR
p Ptr RenderingAreaInfoKHR -> Int -> Ptr Word32
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) ((Ptr RenderingAreaInfoKHR
p Ptr RenderingAreaInfoKHR -> Int -> Ptr (Ptr Format)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr (Ptr Format)))
    Vector Format
pColorAttachmentFormats' <- Int -> (Int -> IO Format) -> IO (Vector Format)
forall (m :: * -> *) a.
Monad m =>
Int -> (Int -> m a) -> m (Vector a)
generateM (Word32 -> Int
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 Ptr Format -> Int -> Ptr Format
forall a. Ptr a -> Int -> Ptr a
`advancePtrBytes` (Int
4 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr Format)))
    Format
depthAttachmentFormat <- forall a. Storable a => Ptr a -> IO a
peek @Format ((Ptr RenderingAreaInfoKHR
p Ptr RenderingAreaInfoKHR -> Int -> Ptr Format
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 ((Ptr RenderingAreaInfoKHR
p Ptr RenderingAreaInfoKHR -> Int -> Ptr Format
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr Format))
    RenderingAreaInfoKHR -> IO RenderingAreaInfoKHR
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (RenderingAreaInfoKHR -> IO RenderingAreaInfoKHR)
-> RenderingAreaInfoKHR -> IO RenderingAreaInfoKHR
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
           Word32
forall a. Zero a => a
zero
           Vector Format
forall a. Monoid a => a
mempty
           Format
forall a. Zero a => a
zero
           Format
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 -> (Ptr ImageSubresource2KHR -> IO b) -> IO b
withCStruct ImageSubresource2KHR
x Ptr ImageSubresource2KHR -> IO b
f = Int -> (Ptr ImageSubresource2KHR -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 ((Ptr ImageSubresource2KHR -> IO b) -> IO b)
-> (Ptr ImageSubresource2KHR -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr ImageSubresource2KHR
p -> Ptr ImageSubresource2KHR -> ImageSubresource2KHR -> IO b -> IO b
forall b.
Ptr ImageSubresource2KHR -> ImageSubresource2KHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr ImageSubresource2KHR
p ImageSubresource2KHR
x (Ptr ImageSubresource2KHR -> IO b
f Ptr ImageSubresource2KHR
p)
  pokeCStruct :: forall b.
Ptr ImageSubresource2KHR -> ImageSubresource2KHR -> IO b -> IO b
pokeCStruct Ptr ImageSubresource2KHR
p ImageSubresource2KHR{ImageSubresource
$sel:imageSubresource:ImageSubresource2KHR :: ImageSubresource2KHR -> ImageSubresource
imageSubresource :: ImageSubresource
..} IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ImageSubresource2KHR
p Ptr ImageSubresource2KHR -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ImageSubresource2KHR
p Ptr ImageSubresource2KHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr ImageSubresource -> ImageSubresource -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ImageSubresource2KHR
p Ptr ImageSubresource2KHR -> Int -> Ptr ImageSubresource
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. Ptr ImageSubresource2KHR -> IO b -> IO b
pokeZeroCStruct Ptr ImageSubresource2KHR
p IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ImageSubresource2KHR
p Ptr ImageSubresource2KHR -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ImageSubresource2KHR
p Ptr ImageSubresource2KHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr ImageSubresource -> ImageSubresource -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ImageSubresource2KHR
p Ptr ImageSubresource2KHR -> Int -> Ptr ImageSubresource
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr ImageSubresource)) (ImageSubresource
forall a. Zero a => a
zero)
    IO b
f

instance FromCStruct ImageSubresource2KHR where
  peekCStruct :: Ptr ImageSubresource2KHR -> IO ImageSubresource2KHR
peekCStruct Ptr ImageSubresource2KHR
p = do
    ImageSubresource
imageSubresource <- forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @ImageSubresource ((Ptr ImageSubresource2KHR
p Ptr ImageSubresource2KHR -> Int -> Ptr ImageSubresource
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr ImageSubresource))
    ImageSubresource2KHR -> IO ImageSubresource2KHR
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (ImageSubresource2KHR -> IO ImageSubresource2KHR)
-> ImageSubresource2KHR -> IO ImageSubresource2KHR
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 :: Ptr ImageSubresource2KHR -> IO ImageSubresource2KHR
peek = Ptr ImageSubresource2KHR -> IO ImageSubresource2KHR
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
  poke :: Ptr ImageSubresource2KHR -> ImageSubresource2KHR -> IO ()
poke Ptr ImageSubresource2KHR
ptr ImageSubresource2KHR
poked = Ptr ImageSubresource2KHR -> ImageSubresource2KHR -> IO () -> IO ()
forall b.
Ptr ImageSubresource2KHR -> ImageSubresource2KHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr ImageSubresource2KHR
ptr ImageSubresource2KHR
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())

instance Zero ImageSubresource2KHR where
  zero :: ImageSubresource2KHR
zero = ImageSubresource -> ImageSubresource2KHR
ImageSubresource2KHR
           ImageSubresource
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
$sel:next:SubresourceLayout2KHR :: forall (es :: [*]). SubresourceLayout2KHR es -> Chain es
$sel:subresourceLayout:SubresourceLayout2KHR :: forall (es :: [*]). SubresourceLayout2KHR es -> SubresourceLayout
next :: Chain ds
subresourceLayout :: SubresourceLayout
..} Chain es
next' = SubresourceLayout2KHR{$sel:next:SubresourceLayout2KHR :: Chain es
next = Chain es
next', SubresourceLayout
$sel:subresourceLayout:SubresourceLayout2KHR :: SubresourceLayout
subresourceLayout :: SubresourceLayout
..}
  getNext :: forall (es :: [*]). SubresourceLayout2KHR es -> Chain es
getNext SubresourceLayout2KHR{Chain es
SubresourceLayout
$sel:next:SubresourceLayout2KHR :: forall (es :: [*]). SubresourceLayout2KHR es -> Chain es
$sel:subresourceLayout:SubresourceLayout2KHR :: forall (es :: [*]). SubresourceLayout2KHR es -> SubresourceLayout
next :: Chain es
subresourceLayout :: SubresourceLayout
..} = 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)
forall a b. (Typeable a, Typeable b) => Maybe (a :~: b)
eqT @e @ImageCompressionPropertiesEXT = b -> Maybe b
forall a. a -> Maybe a
Just b
Extends SubresourceLayout2KHR e => b
f
    | Just e :~: SubresourceHostMemcpySizeEXT
Refl <- forall {k} (a :: k) (b :: k).
(Typeable a, Typeable b) =>
Maybe (a :~: b)
forall a b. (Typeable a, Typeable b) => Maybe (a :~: b)
eqT @e @SubresourceHostMemcpySizeEXT = b -> Maybe b
forall a. a -> Maybe a
Just b
Extends SubresourceLayout2KHR e => b
f
    | Bool
otherwise = Maybe b
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 = Int -> (Ptr (SubresourceLayout2KHR es) -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
56 ((Ptr (SubresourceLayout2KHR es) -> IO b) -> IO b)
-> (Ptr (SubresourceLayout2KHR es) -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr (SubresourceLayout2KHR es)
p -> Ptr (SubresourceLayout2KHR es)
-> SubresourceLayout2KHR es -> IO b -> IO b
forall b.
Ptr (SubresourceLayout2KHR es)
-> SubresourceLayout2KHR es -> IO b -> IO b
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
$sel:next:SubresourceLayout2KHR :: forall (es :: [*]). SubresourceLayout2KHR es -> Chain es
$sel:subresourceLayout:SubresourceLayout2KHR :: forall (es :: [*]). SubresourceLayout2KHR es -> SubresourceLayout
next :: Chain es
subresourceLayout :: SubresourceLayout
..} IO b
f = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (SubresourceLayout2KHR es)
p Ptr (SubresourceLayout2KHR es) -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR)
    Ptr ()
pNext'' <- (Ptr (Chain es) -> Ptr ())
-> ContT b IO (Ptr (Chain es)) -> ContT b IO (Ptr ())
forall a b. (a -> b) -> ContT b IO a -> ContT b IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Ptr (Chain es) -> Ptr ()
forall a b. Ptr a -> Ptr b
castPtr (ContT b IO (Ptr (Chain es)) -> ContT b IO (Ptr ()))
-> (((Ptr (Chain es) -> IO b) -> IO b)
    -> ContT b IO (Ptr (Chain es)))
-> ((Ptr (Chain es) -> IO b) -> IO b)
-> ContT b IO (Ptr ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr (Chain es))
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ()))
-> ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ())
forall a b. (a -> b) -> a -> b
$ Chain es -> (Ptr (Chain es) -> IO b) -> IO b
forall (es :: [*]) a.
PokeChain es =>
Chain es -> (Ptr (Chain es) -> IO a) -> IO a
forall a. Chain es -> (Ptr (Chain es) -> IO a) -> IO a
withChain (Chain es
next)
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (SubresourceLayout2KHR es)
p Ptr (SubresourceLayout2KHR es) -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) Ptr ()
pNext''
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr SubresourceLayout -> SubresourceLayout -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (SubresourceLayout2KHR es)
p Ptr (SubresourceLayout2KHR es) -> Int -> Ptr SubresourceLayout
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr SubresourceLayout)) (SubresourceLayout
subresourceLayout)
    IO b -> ContT b IO b
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO b -> ContT b IO b) -> IO b -> ContT b IO b
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 = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (SubresourceLayout2KHR es)
p Ptr (SubresourceLayout2KHR es) -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR)
    Ptr ()
pNext' <- (Ptr (Chain es) -> Ptr ())
-> ContT b IO (Ptr (Chain es)) -> ContT b IO (Ptr ())
forall a b. (a -> b) -> ContT b IO a -> ContT b IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Ptr (Chain es) -> Ptr ()
forall a b. Ptr a -> Ptr b
castPtr (ContT b IO (Ptr (Chain es)) -> ContT b IO (Ptr ()))
-> (((Ptr (Chain es) -> IO b) -> IO b)
    -> ContT b IO (Ptr (Chain es)))
-> ((Ptr (Chain es) -> IO b) -> IO b)
-> ContT b IO (Ptr ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr (Chain es))
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ()))
-> ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ())
forall a b. (a -> b) -> a -> b
$ forall (es :: [*]) a.
PokeChain es =>
(Ptr (Chain es) -> IO a) -> IO a
withZeroChain @es
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (SubresourceLayout2KHR es)
p Ptr (SubresourceLayout2KHR es) -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) Ptr ()
pNext'
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr SubresourceLayout -> SubresourceLayout -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (SubresourceLayout2KHR es)
p Ptr (SubresourceLayout2KHR es) -> Int -> Ptr SubresourceLayout
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr SubresourceLayout)) (SubresourceLayout
forall a. Zero a => a
zero)
    IO b -> ContT b IO b
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO b -> ContT b IO b) -> IO b -> ContT b IO b
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 Ptr (SubresourceLayout2KHR es) -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ())))
    Chain es
next <- Ptr (Chain es) -> IO (Chain es)
forall (es :: [*]). PeekChain es => Ptr (Chain es) -> IO (Chain es)
peekChain (Ptr () -> Ptr (Chain es)
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 Ptr (SubresourceLayout2KHR es) -> Int -> Ptr SubresourceLayout
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr SubresourceLayout))
    SubresourceLayout2KHR es -> IO (SubresourceLayout2KHR es)
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (SubresourceLayout2KHR es -> IO (SubresourceLayout2KHR es))
-> SubresourceLayout2KHR es -> IO (SubresourceLayout2KHR es)
forall a b. (a -> b) -> a -> b
$ Chain es -> SubresourceLayout -> SubresourceLayout2KHR es
forall (es :: [*]).
Chain es -> SubresourceLayout -> SubresourceLayout2KHR es
SubresourceLayout2KHR
             Chain es
next SubresourceLayout
subresourceLayout

instance es ~ '[] => Zero (SubresourceLayout2KHR es) where
  zero :: SubresourceLayout2KHR es
zero = Chain es -> SubresourceLayout -> SubresourceLayout2KHR es
forall (es :: [*]).
Chain es -> SubresourceLayout -> SubresourceLayout2KHR es
SubresourceLayout2KHR
           ()
           SubresourceLayout
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 @pCreateInfo@
--
-- -   #VUID-VkDeviceImageSubresourceInfoKHR-arrayLayer-01717# The
--     @arrayLayer@ member of @pSubresource@ /must/ be less than the
--     @arrayLayers@ specified in @pCreateInfo@
--
-- -   #VUID-VkDeviceImageSubresourceInfoKHR-format-08886# If @format@ of
--     the @image@ is a color format that is not a
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image format>,
--     and @tiling@ of the @pCreateInfo@ is
--     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' or
--     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', the
--     @aspectMask@ member of @pSubresource@ /must/ be
--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
--
-- -   #VUID-VkDeviceImageSubresourceInfoKHR-format-04462# If @format@ of
--     the @pCreateInfo@ 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 @pCreateInfo@ 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 @pCreateInfo@ 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 @pCreateInfo@ 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
--
-- == 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
-> (Ptr DeviceImageSubresourceInfoKHR -> IO b) -> IO b
withCStruct DeviceImageSubresourceInfoKHR
x Ptr DeviceImageSubresourceInfoKHR -> IO b
f = Int -> (Ptr DeviceImageSubresourceInfoKHR -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 ((Ptr DeviceImageSubresourceInfoKHR -> IO b) -> IO b)
-> (Ptr DeviceImageSubresourceInfoKHR -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr DeviceImageSubresourceInfoKHR
p -> Ptr DeviceImageSubresourceInfoKHR
-> DeviceImageSubresourceInfoKHR -> IO b -> IO b
forall b.
Ptr DeviceImageSubresourceInfoKHR
-> DeviceImageSubresourceInfoKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr DeviceImageSubresourceInfoKHR
p DeviceImageSubresourceInfoKHR
x (Ptr DeviceImageSubresourceInfoKHR -> IO b
f Ptr DeviceImageSubresourceInfoKHR
p)
  pokeCStruct :: forall b.
Ptr DeviceImageSubresourceInfoKHR
-> DeviceImageSubresourceInfoKHR -> IO b -> IO b
pokeCStruct Ptr DeviceImageSubresourceInfoKHR
p DeviceImageSubresourceInfoKHR{ImageSubresource2KHR
SomeStruct ImageCreateInfo
$sel:createInfo:DeviceImageSubresourceInfoKHR :: DeviceImageSubresourceInfoKHR -> SomeStruct ImageCreateInfo
$sel:subresource:DeviceImageSubresourceInfoKHR :: DeviceImageSubresourceInfoKHR -> ImageSubresource2KHR
createInfo :: SomeStruct ImageCreateInfo
subresource :: ImageSubresource2KHR
..} IO b
f = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DeviceImageSubresourceInfoKHR
p Ptr DeviceImageSubresourceInfoKHR -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR)
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DeviceImageSubresourceInfoKHR
p Ptr DeviceImageSubresourceInfoKHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (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
forall r (m :: * -> *) a. ((a -> m r) -> m r) -> ContT r m a
ContT @_ @_ @(Ptr (ImageCreateInfo '[])) (((Ptr (ImageCreateInfo '[]) -> IO b) -> IO b)
 -> ContT b IO (Ptr (ImageCreateInfo '[])))
-> ((Ptr (ImageCreateInfo '[]) -> IO b) -> IO b)
-> ContT b IO (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 (Ptr (ImageCreateInfo '[]) -> IO b)
-> (Ptr (ImageCreateInfo es) -> Ptr (ImageCreateInfo '[]))
-> Ptr (ImageCreateInfo es)
-> IO b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ptr (ImageCreateInfo es) -> Ptr (ImageCreateInfo '[])
forall a b. Ptr a -> Ptr b
castPtr)
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr (ImageCreateInfo '[]))
-> Ptr (ImageCreateInfo '[]) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DeviceImageSubresourceInfoKHR
p Ptr DeviceImageSubresourceInfoKHR
-> Int -> Ptr (Ptr (ImageCreateInfo w))
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr (Ptr (ImageCreateInfo _)))) Ptr (ImageCreateInfo '[])
pCreateInfo''
    Ptr ImageSubresource2KHR
pSubresource'' <- ((Ptr ImageSubresource2KHR -> IO b) -> IO b)
-> ContT b IO (Ptr ImageSubresource2KHR)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr ImageSubresource2KHR -> IO b) -> IO b)
 -> ContT b IO (Ptr ImageSubresource2KHR))
-> ((Ptr ImageSubresource2KHR -> IO b) -> IO b)
-> ContT b IO (Ptr ImageSubresource2KHR)
forall a b. (a -> b) -> a -> b
$ ImageSubresource2KHR -> (Ptr ImageSubresource2KHR -> IO b) -> IO b
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
forall b.
ImageSubresource2KHR -> (Ptr ImageSubresource2KHR -> IO b) -> IO b
withCStruct (ImageSubresource2KHR
subresource)
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ImageSubresource2KHR) -> Ptr ImageSubresource2KHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DeviceImageSubresourceInfoKHR
p Ptr DeviceImageSubresourceInfoKHR
-> Int -> Ptr (Ptr ImageSubresource2KHR)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr (Ptr ImageSubresource2KHR))) Ptr ImageSubresource2KHR
pSubresource''
    IO b -> ContT b IO b
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO b -> ContT b IO b) -> IO b -> ContT b IO b
forall a b. (a -> b) -> a -> b
$ IO b
f
  cStructSize :: Int
cStructSize = Int
32
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b. Ptr DeviceImageSubresourceInfoKHR -> IO b -> IO b
pokeZeroCStruct Ptr DeviceImageSubresourceInfoKHR
p IO b
f = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DeviceImageSubresourceInfoKHR
p Ptr DeviceImageSubresourceInfoKHR -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR)
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DeviceImageSubresourceInfoKHR
p Ptr DeviceImageSubresourceInfoKHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (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
forall r (m :: * -> *) a. ((a -> m r) -> m r) -> ContT r m a
ContT @_ @_ @(Ptr (ImageCreateInfo '[])) (((Ptr (ImageCreateInfo '[]) -> IO b) -> IO b)
 -> ContT b IO (Ptr (ImageCreateInfo '[])))
-> ((Ptr (ImageCreateInfo '[]) -> IO b) -> IO b)
-> ContT b IO (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 ((ImageCreateInfo '[] -> SomeStruct ImageCreateInfo
forall (a :: [*] -> *) (es :: [*]).
(Extendss a es, PokeChain es, Show (Chain es)) =>
a es -> SomeStruct a
SomeStruct ImageCreateInfo '[]
forall a. Zero a => a
zero)) (Ptr (ImageCreateInfo '[]) -> IO b
cont (Ptr (ImageCreateInfo '[]) -> IO b)
-> (Ptr (ImageCreateInfo es) -> Ptr (ImageCreateInfo '[]))
-> Ptr (ImageCreateInfo es)
-> IO b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ptr (ImageCreateInfo es) -> Ptr (ImageCreateInfo '[])
forall a b. Ptr a -> Ptr b
castPtr)
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr (ImageCreateInfo '[]))
-> Ptr (ImageCreateInfo '[]) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DeviceImageSubresourceInfoKHR
p Ptr DeviceImageSubresourceInfoKHR
-> Int -> Ptr (Ptr (ImageCreateInfo w))
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr (Ptr (ImageCreateInfo _)))) Ptr (ImageCreateInfo '[])
pCreateInfo''
    Ptr ImageSubresource2KHR
pSubresource'' <- ((Ptr ImageSubresource2KHR -> IO b) -> IO b)
-> ContT b IO (Ptr ImageSubresource2KHR)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr ImageSubresource2KHR -> IO b) -> IO b)
 -> ContT b IO (Ptr ImageSubresource2KHR))
-> ((Ptr ImageSubresource2KHR -> IO b) -> IO b)
-> ContT b IO (Ptr ImageSubresource2KHR)
forall a b. (a -> b) -> a -> b
$ ImageSubresource2KHR -> (Ptr ImageSubresource2KHR -> IO b) -> IO b
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
forall b.
ImageSubresource2KHR -> (Ptr ImageSubresource2KHR -> IO b) -> IO b
withCStruct (ImageSubresource2KHR
forall a. Zero a => a
zero)
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ImageSubresource2KHR) -> Ptr ImageSubresource2KHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DeviceImageSubresourceInfoKHR
p Ptr DeviceImageSubresourceInfoKHR
-> Int -> Ptr (Ptr ImageSubresource2KHR)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr (Ptr ImageSubresource2KHR))) Ptr ImageSubresource2KHR
pSubresource''
    IO b -> ContT b IO b
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO b -> ContT b IO b) -> IO b -> ContT b IO b
forall a b. (a -> b) -> a -> b
$ IO b
f

instance FromCStruct DeviceImageSubresourceInfoKHR where
  peekCStruct :: Ptr DeviceImageSubresourceInfoKHR
-> IO DeviceImageSubresourceInfoKHR
peekCStruct Ptr DeviceImageSubresourceInfoKHR
p = do
    SomeStruct ImageCreateInfo
pCreateInfo <- Ptr (SomeStruct ImageCreateInfo) -> IO (SomeStruct ImageCreateInfo)
forall (a :: [*] -> *).
(Extensible a,
 forall (es :: [*]).
 (Extendss a es, PeekChain es) =>
 FromCStruct (a es)) =>
Ptr (SomeStruct a) -> IO (SomeStruct a)
peekSomeCStruct (Ptr (SomeStruct ImageCreateInfo)
 -> IO (SomeStruct ImageCreateInfo))
-> (Ptr (ImageCreateInfo Any) -> Ptr (SomeStruct ImageCreateInfo))
-> Ptr (ImageCreateInfo Any)
-> IO (SomeStruct ImageCreateInfo)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ptr (ImageCreateInfo Any) -> Ptr (SomeStruct ImageCreateInfo)
forall (a :: [*] -> *) (es :: [*]).
Ptr (a es) -> Ptr (SomeStruct a)
forgetExtensions (Ptr (ImageCreateInfo Any) -> IO (SomeStruct ImageCreateInfo))
-> IO (Ptr (ImageCreateInfo Any))
-> IO (SomeStruct ImageCreateInfo)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< Ptr (Ptr (ImageCreateInfo Any)) -> IO (Ptr (ImageCreateInfo Any))
forall a. Storable a => Ptr a -> IO a
peek ((Ptr DeviceImageSubresourceInfoKHR
p Ptr DeviceImageSubresourceInfoKHR
-> Int -> Ptr (Ptr (ImageCreateInfo w))
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 (Ptr ImageSubresource2KHR -> IO ImageSubresource2KHR)
-> IO (Ptr ImageSubresource2KHR) -> IO ImageSubresource2KHR
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< Ptr (Ptr ImageSubresource2KHR) -> IO (Ptr ImageSubresource2KHR)
forall a. Storable a => Ptr a -> IO a
peek ((Ptr DeviceImageSubresourceInfoKHR
p Ptr DeviceImageSubresourceInfoKHR
-> Int -> Ptr (Ptr ImageSubresource2KHR)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr (Ptr ImageSubresource2KHR)))
    DeviceImageSubresourceInfoKHR -> IO DeviceImageSubresourceInfoKHR
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (DeviceImageSubresourceInfoKHR -> IO DeviceImageSubresourceInfoKHR)
-> DeviceImageSubresourceInfoKHR
-> IO DeviceImageSubresourceInfoKHR
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
           (ImageCreateInfo '[] -> SomeStruct ImageCreateInfo
forall (a :: [*] -> *) (es :: [*]).
(Extendss a es, PokeChain es, Show (Chain es)) =>
a es -> SomeStruct a
SomeStruct ImageCreateInfo '[]
forall a. Zero a => a
zero)
           ImageSubresource2KHR
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
--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#glossary-pipeline-trace-ray pipeline trace ray>
--     instructions.
--
-- -   'PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHR' specifies that
--     AABB primitives will be skipped during traversal using
--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#glossary-pipeline-trace-ray pipeline trace ray>
--     instructions.
--
-- -   '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 ray tracing 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 ray tracing pipeline /can/ be used with
--     acceleration 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 (PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR -> Bool
(PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR -> Bool)
-> (PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR -> Bool)
-> Eq PipelineCreateFlags2KHR
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR -> Bool
== :: PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR -> Bool
$c/= :: PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR -> Bool
/= :: PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR -> Bool
Eq, Eq PipelineCreateFlags2KHR
Eq PipelineCreateFlags2KHR =>
(PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR -> Ordering)
-> (PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR -> Bool)
-> (PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR -> Bool)
-> (PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR -> Bool)
-> (PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR -> Bool)
-> (PipelineCreateFlags2KHR
    -> PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR)
-> (PipelineCreateFlags2KHR
    -> PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR)
-> Ord PipelineCreateFlags2KHR
PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR -> Bool
PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR -> Ordering
PipelineCreateFlags2KHR
-> PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR
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
$ccompare :: PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR -> Ordering
compare :: PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR -> Ordering
$c< :: PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR -> Bool
< :: PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR -> Bool
$c<= :: PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR -> Bool
<= :: PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR -> Bool
$c> :: PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR -> Bool
> :: PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR -> Bool
$c>= :: PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR -> Bool
>= :: PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR -> Bool
$cmax :: PipelineCreateFlags2KHR
-> PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR
max :: PipelineCreateFlags2KHR
-> PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR
$cmin :: PipelineCreateFlags2KHR
-> PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR
min :: PipelineCreateFlags2KHR
-> PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR
Ord, Ptr PipelineCreateFlags2KHR -> IO PipelineCreateFlags2KHR
Ptr PipelineCreateFlags2KHR -> Int -> IO PipelineCreateFlags2KHR
Ptr PipelineCreateFlags2KHR
-> Int -> PipelineCreateFlags2KHR -> IO ()
Ptr PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR -> IO ()
PipelineCreateFlags2KHR -> Int
(PipelineCreateFlags2KHR -> Int)
-> (PipelineCreateFlags2KHR -> Int)
-> (Ptr PipelineCreateFlags2KHR
    -> Int -> IO PipelineCreateFlags2KHR)
-> (Ptr PipelineCreateFlags2KHR
    -> Int -> PipelineCreateFlags2KHR -> IO ())
-> (forall b. Ptr b -> Int -> IO PipelineCreateFlags2KHR)
-> (forall b. Ptr b -> Int -> PipelineCreateFlags2KHR -> IO ())
-> (Ptr PipelineCreateFlags2KHR -> IO PipelineCreateFlags2KHR)
-> (Ptr PipelineCreateFlags2KHR
    -> PipelineCreateFlags2KHR -> IO ())
-> Storable PipelineCreateFlags2KHR
forall b. Ptr b -> Int -> IO PipelineCreateFlags2KHR
forall b. Ptr b -> Int -> PipelineCreateFlags2KHR -> 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
$csizeOf :: PipelineCreateFlags2KHR -> Int
sizeOf :: PipelineCreateFlags2KHR -> Int
$calignment :: PipelineCreateFlags2KHR -> Int
alignment :: PipelineCreateFlags2KHR -> Int
$cpeekElemOff :: Ptr PipelineCreateFlags2KHR -> Int -> IO PipelineCreateFlags2KHR
peekElemOff :: Ptr PipelineCreateFlags2KHR -> Int -> IO PipelineCreateFlags2KHR
$cpokeElemOff :: Ptr PipelineCreateFlags2KHR
-> Int -> PipelineCreateFlags2KHR -> IO ()
pokeElemOff :: Ptr PipelineCreateFlags2KHR
-> Int -> PipelineCreateFlags2KHR -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO PipelineCreateFlags2KHR
peekByteOff :: forall b. Ptr b -> Int -> IO PipelineCreateFlags2KHR
$cpokeByteOff :: forall b. Ptr b -> Int -> PipelineCreateFlags2KHR -> IO ()
pokeByteOff :: forall b. Ptr b -> Int -> PipelineCreateFlags2KHR -> IO ()
$cpeek :: Ptr PipelineCreateFlags2KHR -> IO PipelineCreateFlags2KHR
peek :: Ptr PipelineCreateFlags2KHR -> IO PipelineCreateFlags2KHR
$cpoke :: Ptr PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR -> IO ()
poke :: Ptr PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR -> IO ()
Storable, PipelineCreateFlags2KHR
PipelineCreateFlags2KHR -> Zero PipelineCreateFlags2KHR
forall a. a -> Zero a
$czero :: PipelineCreateFlags2KHR
zero :: PipelineCreateFlags2KHR
Zero, Eq PipelineCreateFlags2KHR
PipelineCreateFlags2KHR
Eq PipelineCreateFlags2KHR =>
(PipelineCreateFlags2KHR
 -> PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR)
-> (PipelineCreateFlags2KHR
    -> PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR)
-> (PipelineCreateFlags2KHR
    -> PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR)
-> (PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR)
-> (PipelineCreateFlags2KHR -> Int -> PipelineCreateFlags2KHR)
-> (PipelineCreateFlags2KHR -> Int -> PipelineCreateFlags2KHR)
-> PipelineCreateFlags2KHR
-> (Int -> PipelineCreateFlags2KHR)
-> (PipelineCreateFlags2KHR -> Int -> PipelineCreateFlags2KHR)
-> (PipelineCreateFlags2KHR -> Int -> PipelineCreateFlags2KHR)
-> (PipelineCreateFlags2KHR -> Int -> PipelineCreateFlags2KHR)
-> (PipelineCreateFlags2KHR -> Int -> Bool)
-> (PipelineCreateFlags2KHR -> Maybe Int)
-> (PipelineCreateFlags2KHR -> Int)
-> (PipelineCreateFlags2KHR -> Bool)
-> (PipelineCreateFlags2KHR -> Int -> PipelineCreateFlags2KHR)
-> (PipelineCreateFlags2KHR -> Int -> PipelineCreateFlags2KHR)
-> (PipelineCreateFlags2KHR -> Int -> PipelineCreateFlags2KHR)
-> (PipelineCreateFlags2KHR -> Int -> PipelineCreateFlags2KHR)
-> (PipelineCreateFlags2KHR -> Int -> PipelineCreateFlags2KHR)
-> (PipelineCreateFlags2KHR -> Int -> PipelineCreateFlags2KHR)
-> (PipelineCreateFlags2KHR -> Int)
-> Bits PipelineCreateFlags2KHR
Int -> PipelineCreateFlags2KHR
PipelineCreateFlags2KHR -> Bool
PipelineCreateFlags2KHR -> Int
PipelineCreateFlags2KHR -> Maybe Int
PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR
PipelineCreateFlags2KHR -> Int -> Bool
PipelineCreateFlags2KHR -> Int -> PipelineCreateFlags2KHR
PipelineCreateFlags2KHR
-> PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR
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
$c.&. :: PipelineCreateFlags2KHR
-> PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR
.&. :: PipelineCreateFlags2KHR
-> PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR
$c.|. :: PipelineCreateFlags2KHR
-> PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR
.|. :: PipelineCreateFlags2KHR
-> PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR
$cxor :: PipelineCreateFlags2KHR
-> PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR
xor :: PipelineCreateFlags2KHR
-> PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR
$ccomplement :: PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR
complement :: PipelineCreateFlags2KHR -> PipelineCreateFlags2KHR
$cshift :: PipelineCreateFlags2KHR -> Int -> PipelineCreateFlags2KHR
shift :: PipelineCreateFlags2KHR -> Int -> PipelineCreateFlags2KHR
$crotate :: PipelineCreateFlags2KHR -> Int -> PipelineCreateFlags2KHR
rotate :: PipelineCreateFlags2KHR -> Int -> PipelineCreateFlags2KHR
$czeroBits :: PipelineCreateFlags2KHR
zeroBits :: PipelineCreateFlags2KHR
$cbit :: Int -> PipelineCreateFlags2KHR
bit :: Int -> PipelineCreateFlags2KHR
$csetBit :: PipelineCreateFlags2KHR -> Int -> PipelineCreateFlags2KHR
setBit :: PipelineCreateFlags2KHR -> Int -> PipelineCreateFlags2KHR
$cclearBit :: PipelineCreateFlags2KHR -> Int -> PipelineCreateFlags2KHR
clearBit :: PipelineCreateFlags2KHR -> Int -> PipelineCreateFlags2KHR
$ccomplementBit :: PipelineCreateFlags2KHR -> Int -> PipelineCreateFlags2KHR
complementBit :: PipelineCreateFlags2KHR -> Int -> PipelineCreateFlags2KHR
$ctestBit :: PipelineCreateFlags2KHR -> Int -> Bool
testBit :: PipelineCreateFlags2KHR -> Int -> Bool
$cbitSizeMaybe :: PipelineCreateFlags2KHR -> Maybe Int
bitSizeMaybe :: PipelineCreateFlags2KHR -> Maybe Int
$cbitSize :: PipelineCreateFlags2KHR -> Int
bitSize :: PipelineCreateFlags2KHR -> Int
$cisSigned :: PipelineCreateFlags2KHR -> Bool
isSigned :: PipelineCreateFlags2KHR -> Bool
$cshiftL :: PipelineCreateFlags2KHR -> Int -> PipelineCreateFlags2KHR
shiftL :: PipelineCreateFlags2KHR -> Int -> PipelineCreateFlags2KHR
$cunsafeShiftL :: PipelineCreateFlags2KHR -> Int -> PipelineCreateFlags2KHR
unsafeShiftL :: PipelineCreateFlags2KHR -> Int -> PipelineCreateFlags2KHR
$cshiftR :: PipelineCreateFlags2KHR -> Int -> PipelineCreateFlags2KHR
shiftR :: PipelineCreateFlags2KHR -> Int -> PipelineCreateFlags2KHR
$cunsafeShiftR :: PipelineCreateFlags2KHR -> Int -> PipelineCreateFlags2KHR
unsafeShiftR :: PipelineCreateFlags2KHR -> Int -> PipelineCreateFlags2KHR
$crotateL :: PipelineCreateFlags2KHR -> Int -> PipelineCreateFlags2KHR
rotateL :: PipelineCreateFlags2KHR -> Int -> PipelineCreateFlags2KHR
$crotateR :: PipelineCreateFlags2KHR -> Int -> PipelineCreateFlags2KHR
rotateR :: PipelineCreateFlags2KHR -> Int -> PipelineCreateFlags2KHR
$cpopCount :: PipelineCreateFlags2KHR -> Int
popCount :: PipelineCreateFlags2KHR -> Int
Bits, Bits PipelineCreateFlags2KHR
Bits PipelineCreateFlags2KHR =>
(PipelineCreateFlags2KHR -> Int)
-> (PipelineCreateFlags2KHR -> Int)
-> (PipelineCreateFlags2KHR -> Int)
-> FiniteBits PipelineCreateFlags2KHR
PipelineCreateFlags2KHR -> Int
forall b.
Bits b =>
(b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
$cfiniteBitSize :: PipelineCreateFlags2KHR -> Int
finiteBitSize :: PipelineCreateFlags2KHR -> Int
$ccountLeadingZeros :: PipelineCreateFlags2KHR -> Int
countLeadingZeros :: PipelineCreateFlags2KHR -> Int
$ccountTrailingZeros :: PipelineCreateFlags2KHR -> Int
countTrailingZeros :: PipelineCreateFlags2KHR -> Int
FiniteBits)

-- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT_KHR"
pattern $bPIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT_KHR :: PipelineCreateFlags2KHR
$mPIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT_KHR :: forall {r}.
PipelineCreateFlags2KHR -> ((# #) -> 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 :: PipelineCreateFlags2KHR
$mPIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHR :: forall {r}.
PipelineCreateFlags2KHR -> ((# #) -> 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 :: PipelineCreateFlags2KHR
$mPIPELINE_CREATE_2_DERIVATIVE_BIT_KHR :: forall {r}.
PipelineCreateFlags2KHR -> ((# #) -> 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 :: PipelineCreateFlags2KHR
$mPIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT :: forall {r}.
PipelineCreateFlags2KHR -> ((# #) -> 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 :: PipelineCreateFlags2KHR
$mPIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV :: forall {r}.
PipelineCreateFlags2KHR -> ((# #) -> 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 :: PipelineCreateFlags2KHR
$mPIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT :: forall {r}.
PipelineCreateFlags2KHR -> ((# #) -> 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 :: PipelineCreateFlags2KHR
$mPIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT :: forall {r}.
PipelineCreateFlags2KHR -> ((# #) -> 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 :: PipelineCreateFlags2KHR
$mPIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT :: forall {r}.
PipelineCreateFlags2KHR -> ((# #) -> 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 :: PipelineCreateFlags2KHR
$mPIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT :: forall {r}.
PipelineCreateFlags2KHR -> ((# #) -> 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 :: PipelineCreateFlags2KHR
$mPIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT :: forall {r}.
PipelineCreateFlags2KHR -> ((# #) -> 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 :: PipelineCreateFlags2KHR
$mPIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT :: forall {r}.
PipelineCreateFlags2KHR -> ((# #) -> 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 :: PipelineCreateFlags2KHR
$mPIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR :: forall {r}.
PipelineCreateFlags2KHR -> ((# #) -> 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 :: PipelineCreateFlags2KHR
$mPIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NV :: forall {r}.
PipelineCreateFlags2KHR -> ((# #) -> 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 :: PipelineCreateFlags2KHR
$mPIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NV :: forall {r}.
PipelineCreateFlags2KHR -> ((# #) -> 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 :: PipelineCreateFlags2KHR
$mPIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR :: forall {r}.
PipelineCreateFlags2KHR -> ((# #) -> 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 :: PipelineCreateFlags2KHR
$mPIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR :: forall {r}.
PipelineCreateFlags2KHR -> ((# #) -> 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 :: PipelineCreateFlags2KHR
$mPIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR :: forall {r}.
PipelineCreateFlags2KHR -> ((# #) -> 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 :: PipelineCreateFlags2KHR
$mPIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR :: forall {r}.
PipelineCreateFlags2KHR -> ((# #) -> 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 :: PipelineCreateFlags2KHR
$mPIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR :: forall {r}.
PipelineCreateFlags2KHR -> ((# #) -> 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 :: PipelineCreateFlags2KHR
$mPIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHR :: forall {r}.
PipelineCreateFlags2KHR -> ((# #) -> 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 :: PipelineCreateFlags2KHR
$mPIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR :: forall {r}.
PipelineCreateFlags2KHR -> ((# #) -> 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 :: PipelineCreateFlags2KHR
$mPIPELINE_CREATE_2_LIBRARY_BIT_KHR :: forall {r}.
PipelineCreateFlags2KHR -> ((# #) -> 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 :: PipelineCreateFlags2KHR
$mPIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT :: forall {r}.
PipelineCreateFlags2KHR -> ((# #) -> 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 :: PipelineCreateFlags2KHR
$mPIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT :: forall {r}.
PipelineCreateFlags2KHR -> ((# #) -> 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 :: PipelineCreateFlags2KHR
$mPIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR :: forall {r}.
PipelineCreateFlags2KHR -> ((# #) -> 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 :: PipelineCreateFlags2KHR
$mPIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR :: forall {r}.
PipelineCreateFlags2KHR -> ((# #) -> 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 :: PipelineCreateFlags2KHR
$mPIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR :: forall {r}.
PipelineCreateFlags2KHR -> ((# #) -> 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 :: PipelineCreateFlags2KHR
$mPIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHR :: forall {r}.
PipelineCreateFlags2KHR -> ((# #) -> 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 :: PipelineCreateFlags2KHR
$mPIPELINE_CREATE_2_DEFER_COMPILE_BIT_NV :: forall {r}.
PipelineCreateFlags2KHR -> ((# #) -> 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 :: PipelineCreateFlags2KHR
$mPIPELINE_CREATE_2_DISPATCH_BASE_BIT_KHR :: forall {r}.
PipelineCreateFlags2KHR -> ((# #) -> 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 :: PipelineCreateFlags2KHR
$mPIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR :: forall {r}.
PipelineCreateFlags2KHR -> ((# #) -> 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 :: [(PipelineCreateFlags2KHR, String)]
showTablePipelineCreateFlagBits2KHR =
  [
    ( PipelineCreateFlags2KHR
PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT_KHR
    , String
"DISABLE_OPTIMIZATION_BIT_KHR"
    )
  ,
    ( PipelineCreateFlags2KHR
PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHR
    , String
"ALLOW_DERIVATIVES_BIT_KHR"
    )
  ,
    ( PipelineCreateFlags2KHR
PIPELINE_CREATE_2_DERIVATIVE_BIT_KHR
    , String
"DERIVATIVE_BIT_KHR"
    )
  ,
    ( PipelineCreateFlags2KHR
PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT
    , String
"DESCRIPTOR_BUFFER_BIT_EXT"
    )
  ,
    ( PipelineCreateFlags2KHR
PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV
    , String
"RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV"
    )
  ,
    ( PipelineCreateFlags2KHR
PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT
    , String
"PROTECTED_ACCESS_ONLY_BIT_EXT"
    )
  ,
    ( PipelineCreateFlags2KHR
PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT
    , String
"NO_PROTECTED_ACCESS_BIT_EXT"
    )
  ,
    ( PipelineCreateFlags2KHR
PIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT
    , String
"DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT"
    )
  ,
    ( PipelineCreateFlags2KHR
PIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT
    , String
"COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT"
    )
  ,
    ( PipelineCreateFlags2KHR
PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT
    , String
"RAY_TRACING_OPACITY_MICROMAP_BIT_EXT"
    )
  ,
    ( PipelineCreateFlags2KHR
PIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
    , String
"RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT"
    )
  ,
    ( PipelineCreateFlags2KHR
PIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
    , String
"RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"
    )
  ,
    ( PipelineCreateFlags2KHR
PIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NV
    , String
"RAY_TRACING_ALLOW_MOTION_BIT_NV"
    )
  ,
    ( PipelineCreateFlags2KHR
PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NV
    , String
"INDIRECT_BINDABLE_BIT_NV"
    )
  ,
    ( PipelineCreateFlags2KHR
PIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR
    , String
"RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR"
    )
  ,
    ( PipelineCreateFlags2KHR
PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR
    , String
"RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR"
    )
  ,
    ( PipelineCreateFlags2KHR
PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR
    , String
"RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR"
    )
  ,
    ( PipelineCreateFlags2KHR
PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR
    , String
"RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR"
    )
  ,
    ( PipelineCreateFlags2KHR
PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR
    , String
"RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR"
    )
  ,
    ( PipelineCreateFlags2KHR
PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHR
    , String
"RAY_TRACING_SKIP_AABBS_BIT_KHR"
    )
  ,
    ( PipelineCreateFlags2KHR
PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR
    , String
"RAY_TRACING_SKIP_TRIANGLES_BIT_KHR"
    )
  ,
    ( PipelineCreateFlags2KHR
PIPELINE_CREATE_2_LIBRARY_BIT_KHR
    , String
"LIBRARY_BIT_KHR"
    )
  ,
    ( PipelineCreateFlags2KHR
PIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT
    , String
"RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT"
    )
  ,
    ( PipelineCreateFlags2KHR
PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT
    , String
"LINK_TIME_OPTIMIZATION_BIT_EXT"
    )
  ,
    ( PipelineCreateFlags2KHR
PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR
    , String
"EARLY_RETURN_ON_FAILURE_BIT_KHR"
    )
  ,
    ( PipelineCreateFlags2KHR
PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR
    , String
"FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR"
    )
  ,
    ( PipelineCreateFlags2KHR
PIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR
    , String
"CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR"
    )
  ,
    ( PipelineCreateFlags2KHR
PIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHR
    , String
"CAPTURE_STATISTICS_BIT_KHR"
    )
  ,
    ( PipelineCreateFlags2KHR
PIPELINE_CREATE_2_DEFER_COMPILE_BIT_NV
    , String
"DEFER_COMPILE_BIT_NV"
    )
  ,
    ( PipelineCreateFlags2KHR
PIPELINE_CREATE_2_DISPATCH_BASE_BIT_KHR
    , String
"DISPATCH_BASE_BIT_KHR"
    )
  ,
    ( PipelineCreateFlags2KHR
PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR
    , String
"VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR"
    )
  ]

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

instance Read PipelineCreateFlagBits2KHR where
  readPrec :: ReadPrec PipelineCreateFlags2KHR
readPrec =
    String
-> [(PipelineCreateFlags2KHR, String)]
-> String
-> (Flags64 -> PipelineCreateFlags2KHR)
-> ReadPrec PipelineCreateFlags2KHR
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
      String
enumPrefixPipelineCreateFlagBits2KHR
      [(PipelineCreateFlags2KHR, String)]
showTablePipelineCreateFlagBits2KHR
      String
conNamePipelineCreateFlagBits2KHR
      Flags64 -> PipelineCreateFlags2KHR
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"