// This file is auto-generated by vulkano autogen from vk.xml header version 1.3.238. // It should not be edited manually. Changes should be made by editing autogen. #[doc = r" List of extensions that are enabled or available."] #[derive(Copy, Clone, PartialEq, Eq)] pub struct DeviceExtensions { #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_16bit_storage.html)\n- Promoted to Vulkan 1.1\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n - One of: Vulkan API version 1.1, device extension [`khr_storage_buffer_storage_class`](crate::device::DeviceExtensions::khr_storage_buffer_storage_class)"] pub khr_16bit_storage: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_8bit_storage.html)\n- Promoted to Vulkan 1.2\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n - One of: Vulkan API version 1.1, device extension [`khr_storage_buffer_storage_class`](crate::device::DeviceExtensions::khr_storage_buffer_storage_class)"] pub khr_8bit_storage: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_acceleration_structure.html)\n- Requires:\n - Vulkan API version 1.1\n - One of: Vulkan API version 1.2, device extension [`ext_descriptor_indexing`](crate::device::DeviceExtensions::ext_descriptor_indexing)\n - One of: Vulkan API version 1.2, device extension [`khr_buffer_device_address`](crate::device::DeviceExtensions::khr_buffer_device_address)\n - device extension [`khr_deferred_host_operations`](crate::device::DeviceExtensions::khr_deferred_host_operations)"] pub khr_acceleration_structure: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_bind_memory2.html)\n- Promoted to Vulkan 1.1"] pub khr_bind_memory2: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_buffer_device_address.html)\n- Promoted to Vulkan 1.2\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n- Conflicts with device extension: [`ext_buffer_device_address`](crate::device::DeviceExtensions::ext_buffer_device_address)"] pub khr_buffer_device_address: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_copy_commands2.html)\n- Promoted to Vulkan 1.3"] pub khr_copy_commands2: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_create_renderpass2.html)\n- Promoted to Vulkan 1.2\n- Requires:\n - One of: Vulkan API version 1.1, device extension [`khr_multiview`](crate::device::DeviceExtensions::khr_multiview)\n - One of: Vulkan API version 1.1, device extension [`khr_maintenance2`](crate::device::DeviceExtensions::khr_maintenance2)"] pub khr_create_renderpass2: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_dedicated_allocation.html)\n- Promoted to Vulkan 1.1\n- Requires:\n - One of: Vulkan API version 1.1, device extension [`khr_get_memory_requirements2`](crate::device::DeviceExtensions::khr_get_memory_requirements2)"] pub khr_dedicated_allocation: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_deferred_host_operations.html)"] pub khr_deferred_host_operations: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_depth_stencil_resolve.html)\n- Promoted to Vulkan 1.2\n- Requires:\n - One of: Vulkan API version 1.2, device extension [`khr_create_renderpass2`](crate::device::DeviceExtensions::khr_create_renderpass2)"] pub khr_depth_stencil_resolve: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_descriptor_update_template.html)\n- Promoted to Vulkan 1.1"] pub khr_descriptor_update_template: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_device_group.html)\n- Promoted to Vulkan 1.1\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_device_group_creation`](crate::instance::InstanceExtensions::khr_device_group_creation)"] pub khr_device_group: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_display_swapchain.html)\n- Requires:\n - device extension [`khr_swapchain`](crate::device::DeviceExtensions::khr_swapchain)\n - instance extension [`khr_display`](crate::instance::InstanceExtensions::khr_display)"] pub khr_display_swapchain: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_draw_indirect_count.html)\n- Promoted to Vulkan 1.2"] pub khr_draw_indirect_count: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_driver_properties.html)\n- Promoted to Vulkan 1.2\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub khr_driver_properties: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_dynamic_rendering.html)\n- Promoted to Vulkan 1.3\n- Requires:\n - One of: Vulkan API version 1.2, device extension [`khr_depth_stencil_resolve`](crate::device::DeviceExtensions::khr_depth_stencil_resolve)\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub khr_dynamic_rendering: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_external_fence.html)\n- Promoted to Vulkan 1.1\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_external_fence_capabilities`](crate::instance::InstanceExtensions::khr_external_fence_capabilities)"] pub khr_external_fence: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_external_fence_fd.html)\n- Requires:\n - One of: Vulkan API version 1.1, device extension [`khr_external_fence`](crate::device::DeviceExtensions::khr_external_fence)"] pub khr_external_fence_fd: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_external_fence_win32.html)\n- Requires:\n - One of: Vulkan API version 1.1, device extension [`khr_external_fence`](crate::device::DeviceExtensions::khr_external_fence)"] pub khr_external_fence_win32: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_external_memory.html)\n- Promoted to Vulkan 1.1\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_external_memory_capabilities`](crate::instance::InstanceExtensions::khr_external_memory_capabilities)"] pub khr_external_memory: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_external_memory_fd.html)\n- Requires:\n - One of: Vulkan API version 1.1, device extension [`khr_external_memory`](crate::device::DeviceExtensions::khr_external_memory)"] pub khr_external_memory_fd: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_external_memory_win32.html)\n- Requires:\n - One of: Vulkan API version 1.1, device extension [`khr_external_memory`](crate::device::DeviceExtensions::khr_external_memory)"] pub khr_external_memory_win32: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_external_semaphore.html)\n- Promoted to Vulkan 1.1\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_external_semaphore_capabilities`](crate::instance::InstanceExtensions::khr_external_semaphore_capabilities)"] pub khr_external_semaphore: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_external_semaphore_fd.html)\n- Requires:\n - One of: Vulkan API version 1.1, device extension [`khr_external_semaphore`](crate::device::DeviceExtensions::khr_external_semaphore)"] pub khr_external_semaphore_fd: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_external_semaphore_win32.html)\n- Requires:\n - One of: Vulkan API version 1.1, device extension [`khr_external_semaphore`](crate::device::DeviceExtensions::khr_external_semaphore)"] pub khr_external_semaphore_win32: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_format_feature_flags2.html)\n- Promoted to Vulkan 1.3\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub khr_format_feature_flags2: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_fragment_shader_barycentric.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub khr_fragment_shader_barycentric: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_fragment_shading_rate.html)\n- Requires:\n - One of: Vulkan API version 1.2, device extension [`khr_create_renderpass2`](crate::device::DeviceExtensions::khr_create_renderpass2)\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub khr_fragment_shading_rate: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_get_memory_requirements2.html)\n- Promoted to Vulkan 1.1"] pub khr_get_memory_requirements2: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_global_priority.html)"] pub khr_global_priority: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_image_format_list.html)\n- Promoted to Vulkan 1.2"] pub khr_image_format_list: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_imageless_framebuffer.html)\n- Promoted to Vulkan 1.2\n- Requires:\n - One of: Vulkan API version 1.1, device extension [`khr_maintenance2`](crate::device::DeviceExtensions::khr_maintenance2)\n - One of: Vulkan API version 1.2, device extension [`khr_image_format_list`](crate::device::DeviceExtensions::khr_image_format_list)"] pub khr_imageless_framebuffer: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_incremental_present.html)\n- Requires:\n - device extension [`khr_swapchain`](crate::device::DeviceExtensions::khr_swapchain)"] pub khr_incremental_present: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_maintenance1.html)\n- Promoted to Vulkan 1.1"] pub khr_maintenance1: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_maintenance2.html)\n- Promoted to Vulkan 1.1"] pub khr_maintenance2: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_maintenance3.html)\n- Promoted to Vulkan 1.1\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub khr_maintenance3: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_maintenance4.html)\n- Promoted to Vulkan 1.3\n- Requires:\n - Vulkan API version 1.1"] pub khr_maintenance4: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_multiview.html)\n- Promoted to Vulkan 1.1\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub khr_multiview: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_performance_query.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub khr_performance_query: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_pipeline_executable_properties.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub khr_pipeline_executable_properties: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_pipeline_library.html)"] pub khr_pipeline_library: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_portability_subset.html)\n- Must be enabled if it is supported by the physical device\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub khr_portability_subset: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_present_id.html)\n- Requires:\n - device extension [`khr_swapchain`](crate::device::DeviceExtensions::khr_swapchain)"] pub khr_present_id: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_present_wait.html)\n- Requires:\n - device extension [`khr_swapchain`](crate::device::DeviceExtensions::khr_swapchain)\n - device extension [`khr_present_id`](crate::device::DeviceExtensions::khr_present_id)"] pub khr_present_wait: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_push_descriptor.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub khr_push_descriptor: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_ray_query.html)\n- Requires:\n - Vulkan API version 1.1\n - One of: Vulkan API version 1.2, device extension [`khr_spirv_1_4`](crate::device::DeviceExtensions::khr_spirv_1_4)\n - device extension [`khr_acceleration_structure`](crate::device::DeviceExtensions::khr_acceleration_structure)"] pub khr_ray_query: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_ray_tracing_maintenance1.html)\n- Requires:\n - Vulkan API version 1.1\n - device extension [`khr_acceleration_structure`](crate::device::DeviceExtensions::khr_acceleration_structure)"] pub khr_ray_tracing_maintenance1: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_ray_tracing_pipeline.html)\n- Requires:\n - Vulkan API version 1.1\n - One of: Vulkan API version 1.2, device extension [`khr_spirv_1_4`](crate::device::DeviceExtensions::khr_spirv_1_4)\n - device extension [`khr_acceleration_structure`](crate::device::DeviceExtensions::khr_acceleration_structure)"] pub khr_ray_tracing_pipeline: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_relaxed_block_layout.html)\n- Promoted to Vulkan 1.1"] pub khr_relaxed_block_layout: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_sampler_mirror_clamp_to_edge.html)\n- Promoted to Vulkan 1.2"] pub khr_sampler_mirror_clamp_to_edge: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_sampler_ycbcr_conversion.html)\n- Promoted to Vulkan 1.1\n- Requires:\n - One of: Vulkan API version 1.1, device extension [`khr_maintenance1`](crate::device::DeviceExtensions::khr_maintenance1)\n - One of: Vulkan API version 1.1, device extension [`khr_bind_memory2`](crate::device::DeviceExtensions::khr_bind_memory2)\n - One of: Vulkan API version 1.1, device extension [`khr_get_memory_requirements2`](crate::device::DeviceExtensions::khr_get_memory_requirements2)\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub khr_sampler_ycbcr_conversion: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_separate_depth_stencil_layouts.html)\n- Promoted to Vulkan 1.2\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n - One of: Vulkan API version 1.2, device extension [`khr_create_renderpass2`](crate::device::DeviceExtensions::khr_create_renderpass2)"] pub khr_separate_depth_stencil_layouts: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_shader_atomic_int64.html)\n- Promoted to Vulkan 1.2\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub khr_shader_atomic_int64: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_shader_clock.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub khr_shader_clock: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_shader_draw_parameters.html)\n- Promoted to Vulkan 1.1"] pub khr_shader_draw_parameters: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_shader_float16_int8.html)\n- Promoted to Vulkan 1.2\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub khr_shader_float16_int8: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_shader_float_controls.html)\n- Promoted to Vulkan 1.2\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub khr_shader_float_controls: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_shader_integer_dot_product.html)\n- Promoted to Vulkan 1.3\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub khr_shader_integer_dot_product: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_shader_non_semantic_info.html)\n- Promoted to Vulkan 1.3"] pub khr_shader_non_semantic_info: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_shader_subgroup_extended_types.html)\n- Promoted to Vulkan 1.2\n- Requires:\n - Vulkan API version 1.1"] pub khr_shader_subgroup_extended_types: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_shader_subgroup_uniform_control_flow.html)\n- Requires:\n - Vulkan API version 1.1"] pub khr_shader_subgroup_uniform_control_flow: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_shader_terminate_invocation.html)\n- Promoted to Vulkan 1.3\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub khr_shader_terminate_invocation: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_shared_presentable_image.html)\n- Requires:\n - device extension [`khr_swapchain`](crate::device::DeviceExtensions::khr_swapchain)\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n - instance extension [`khr_get_surface_capabilities2`](crate::instance::InstanceExtensions::khr_get_surface_capabilities2)"] pub khr_shared_presentable_image: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_spirv_1_4.html)\n- Promoted to Vulkan 1.2\n- Requires:\n - Vulkan API version 1.1\n - One of: Vulkan API version 1.2, device extension [`khr_shader_float_controls`](crate::device::DeviceExtensions::khr_shader_float_controls)"] pub khr_spirv_1_4: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_storage_buffer_storage_class.html)\n- Promoted to Vulkan 1.1"] pub khr_storage_buffer_storage_class: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_swapchain.html)\n- Requires:\n - instance extension [`khr_surface`](crate::instance::InstanceExtensions::khr_surface)"] pub khr_swapchain: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_swapchain_mutable_format.html)\n- Requires:\n - device extension [`khr_swapchain`](crate::device::DeviceExtensions::khr_swapchain)\n - One of: Vulkan API version 1.1, device extension [`khr_maintenance2`](crate::device::DeviceExtensions::khr_maintenance2)\n - One of: Vulkan API version 1.2, device extension [`khr_image_format_list`](crate::device::DeviceExtensions::khr_image_format_list)"] pub khr_swapchain_mutable_format: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_synchronization2.html)\n- Promoted to Vulkan 1.3\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub khr_synchronization2: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_timeline_semaphore.html)\n- Promoted to Vulkan 1.2\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub khr_timeline_semaphore: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_uniform_buffer_standard_layout.html)\n- Promoted to Vulkan 1.2\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub khr_uniform_buffer_standard_layout: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_variable_pointers.html)\n- Promoted to Vulkan 1.1\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n - One of: Vulkan API version 1.1, device extension [`khr_storage_buffer_storage_class`](crate::device::DeviceExtensions::khr_storage_buffer_storage_class)"] pub khr_variable_pointers: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_video_decode_h264.html)\n- Requires:\n - device extension [`khr_video_decode_queue`](crate::device::DeviceExtensions::khr_video_decode_queue)"] pub khr_video_decode_h264: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_video_decode_h265.html)\n- Requires:\n - device extension [`khr_video_decode_queue`](crate::device::DeviceExtensions::khr_video_decode_queue)"] pub khr_video_decode_h265: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_video_decode_queue.html)\n- Requires:\n - device extension [`khr_video_queue`](crate::device::DeviceExtensions::khr_video_queue)\n - One of: Vulkan API version 1.3, device extension [`khr_synchronization2`](crate::device::DeviceExtensions::khr_synchronization2)"] pub khr_video_decode_queue: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_video_encode_queue.html)\n- Requires:\n - device extension [`khr_video_queue`](crate::device::DeviceExtensions::khr_video_queue)\n - One of: Vulkan API version 1.3, device extension [`khr_synchronization2`](crate::device::DeviceExtensions::khr_synchronization2)"] pub khr_video_encode_queue: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_video_queue.html)\n- Requires:\n - Vulkan API version 1.1\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n - One of: Vulkan API version 1.3, device extension [`khr_synchronization2`](crate::device::DeviceExtensions::khr_synchronization2)"] pub khr_video_queue: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_vulkan_memory_model.html)\n- Promoted to Vulkan 1.2"] pub khr_vulkan_memory_model: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_win32_keyed_mutex.html)\n- Requires:\n - device extension [`khr_external_memory_win32`](crate::device::DeviceExtensions::khr_external_memory_win32)"] pub khr_win32_keyed_mutex: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_workgroup_memory_explicit_layout.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub khr_workgroup_memory_explicit_layout: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_zero_initialize_workgroup_memory.html)\n- Promoted to Vulkan 1.3\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub khr_zero_initialize_workgroup_memory: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_4444_formats.html)\n- Promoted to Vulkan 1.3\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_4444_formats: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_astc_decode_mode.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_astc_decode_mode: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_attachment_feedback_loop_layout.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_attachment_feedback_loop_layout: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_blend_operation_advanced.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_blend_operation_advanced: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_border_color_swizzle.html)\n- Requires:\n - device extension [`ext_custom_border_color`](crate::device::DeviceExtensions::ext_custom_border_color)"] pub ext_border_color_swizzle: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_buffer_device_address.html)\n- Deprecated by [`khr_buffer_device_address`](crate::device::DeviceExtensions::khr_buffer_device_address)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n- Conflicts with device extension: [`khr_buffer_device_address`](crate::device::DeviceExtensions::khr_buffer_device_address)"] pub ext_buffer_device_address: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_calibrated_timestamps.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_calibrated_timestamps: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_color_write_enable.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_color_write_enable: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_conditional_rendering.html)"] pub ext_conditional_rendering: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_conservative_rasterization.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_conservative_rasterization: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_custom_border_color.html)"] pub ext_custom_border_color: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_debug_marker.html)\n- Promoted to [`ext_debug_utils`](crate::instance::InstanceExtensions::ext_debug_utils)\n- Requires:\n - instance extension [`ext_debug_report`](crate::instance::InstanceExtensions::ext_debug_report)"] pub ext_debug_marker: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_depth_clamp_zero_one.html)"] pub ext_depth_clamp_zero_one: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_depth_clip_control.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_depth_clip_control: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_depth_clip_enable.html)"] pub ext_depth_clip_enable: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_depth_range_unrestricted.html)"] pub ext_depth_range_unrestricted: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_descriptor_buffer.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n - One of: Vulkan API version 1.2, device extension [`khr_buffer_device_address`](crate::device::DeviceExtensions::khr_buffer_device_address)\n - One of: Vulkan API version 1.3, device extension [`khr_synchronization2`](crate::device::DeviceExtensions::khr_synchronization2)\n - One of: Vulkan API version 1.2, device extension [`ext_descriptor_indexing`](crate::device::DeviceExtensions::ext_descriptor_indexing)"] pub ext_descriptor_buffer: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_descriptor_indexing.html)\n- Promoted to Vulkan 1.2\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n - One of: Vulkan API version 1.1, device extension [`khr_maintenance3`](crate::device::DeviceExtensions::khr_maintenance3)"] pub ext_descriptor_indexing: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_device_address_binding_report.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n - instance extension [`ext_debug_utils`](crate::instance::InstanceExtensions::ext_debug_utils)"] pub ext_device_address_binding_report: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_device_fault.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_device_fault: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_device_memory_report.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_device_memory_report: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_discard_rectangles.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_discard_rectangles: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_display_control.html)\n- Requires:\n - instance extension [`ext_display_surface_counter`](crate::instance::InstanceExtensions::ext_display_surface_counter)\n - device extension [`khr_swapchain`](crate::device::DeviceExtensions::khr_swapchain)"] pub ext_display_control: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_extended_dynamic_state.html)\n- Promoted to Vulkan 1.3\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_extended_dynamic_state: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_extended_dynamic_state2.html)\n- Promoted to Vulkan 1.3\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_extended_dynamic_state2: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_extended_dynamic_state3.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_extended_dynamic_state3: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_external_memory_dma_buf.html)\n- Requires:\n - device extension [`khr_external_memory_fd`](crate::device::DeviceExtensions::khr_external_memory_fd)"] pub ext_external_memory_dma_buf: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_external_memory_host.html)\n- Requires:\n - One of: Vulkan API version 1.1, device extension [`khr_external_memory`](crate::device::DeviceExtensions::khr_external_memory)"] pub ext_external_memory_host: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_filter_cubic.html)"] pub ext_filter_cubic: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_fragment_density_map.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_fragment_density_map: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_fragment_density_map2.html)\n- Requires:\n - device extension [`ext_fragment_density_map`](crate::device::DeviceExtensions::ext_fragment_density_map)"] pub ext_fragment_density_map2: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_fragment_shader_interlock.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_fragment_shader_interlock: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_full_screen_exclusive.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n - instance extension [`khr_surface`](crate::instance::InstanceExtensions::khr_surface)\n - instance extension [`khr_get_surface_capabilities2`](crate::instance::InstanceExtensions::khr_get_surface_capabilities2)\n - device extension [`khr_swapchain`](crate::device::DeviceExtensions::khr_swapchain)"] pub ext_full_screen_exclusive: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_global_priority.html)\n- Promoted to [`khr_global_priority`](crate::device::DeviceExtensions::khr_global_priority)"] pub ext_global_priority: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_global_priority_query.html)\n- Promoted to [`khr_global_priority`](crate::device::DeviceExtensions::khr_global_priority)\n- Requires:\n - One of: device extension [`khr_global_priority`](crate::device::DeviceExtensions::khr_global_priority), device extension [`ext_global_priority`](crate::device::DeviceExtensions::ext_global_priority)\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_global_priority_query: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_graphics_pipeline_library.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n - device extension [`khr_pipeline_library`](crate::device::DeviceExtensions::khr_pipeline_library)"] pub ext_graphics_pipeline_library: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_hdr_metadata.html)\n- Requires:\n - device extension [`khr_swapchain`](crate::device::DeviceExtensions::khr_swapchain)"] pub ext_hdr_metadata: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_host_query_reset.html)\n- Promoted to Vulkan 1.2\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_host_query_reset: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_image_2d_view_of_3d.html)\n- Requires:\n - One of: Vulkan API version 1.1, device extension [`khr_maintenance1`](crate::device::DeviceExtensions::khr_maintenance1)\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_image_2d_view_of_3d: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_image_compression_control.html)"] pub ext_image_compression_control: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_image_compression_control_swapchain.html)\n- Requires:\n - device extension [`ext_image_compression_control`](crate::device::DeviceExtensions::ext_image_compression_control)"] pub ext_image_compression_control_swapchain: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_image_drm_format_modifier.html)\n- Requires:\n - One of: Vulkan API version 1.1, device extension [`khr_bind_memory2`](crate::device::DeviceExtensions::khr_bind_memory2)\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n - One of: Vulkan API version 1.2, device extension [`khr_image_format_list`](crate::device::DeviceExtensions::khr_image_format_list)\n - One of: Vulkan API version 1.1, device extension [`khr_sampler_ycbcr_conversion`](crate::device::DeviceExtensions::khr_sampler_ycbcr_conversion)"] pub ext_image_drm_format_modifier: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_image_robustness.html)\n- Promoted to Vulkan 1.3\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_image_robustness: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_image_view_min_lod.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_image_view_min_lod: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_index_type_uint8.html)"] pub ext_index_type_uint8: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_inline_uniform_block.html)\n- Promoted to Vulkan 1.3\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n - One of: Vulkan API version 1.1, device extension [`khr_maintenance1`](crate::device::DeviceExtensions::khr_maintenance1)"] pub ext_inline_uniform_block: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_legacy_dithering.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_legacy_dithering: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_line_rasterization.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_line_rasterization: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_load_store_op_none.html)"] pub ext_load_store_op_none: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_memory_budget.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_memory_budget: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_memory_priority.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_memory_priority: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_mesh_shader.html)\n- Requires:\n - Vulkan API version 1.1\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n - One of: Vulkan API version 1.2, device extension [`khr_spirv_1_4`](crate::device::DeviceExtensions::khr_spirv_1_4)"] pub ext_mesh_shader: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_metal_objects.html)"] pub ext_metal_objects: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_multi_draw.html)"] pub ext_multi_draw: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_multisampled_render_to_single_sampled.html)\n- Requires:\n - One of: Vulkan API version 1.2, device extension [`khr_create_renderpass2`](crate::device::DeviceExtensions::khr_create_renderpass2)\n - One of: Vulkan API version 1.2, device extension [`khr_depth_stencil_resolve`](crate::device::DeviceExtensions::khr_depth_stencil_resolve)"] pub ext_multisampled_render_to_single_sampled: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_mutable_descriptor_type.html)\n- Requires:\n - One of: Vulkan API version 1.1, device extension [`khr_maintenance3`](crate::device::DeviceExtensions::khr_maintenance3)"] pub ext_mutable_descriptor_type: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_non_seamless_cube_map.html)"] pub ext_non_seamless_cube_map: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_opacity_micromap.html)\n- Requires:\n - device extension [`khr_acceleration_structure`](crate::device::DeviceExtensions::khr_acceleration_structure)\n - One of: Vulkan API version 1.3, device extension [`khr_synchronization2`](crate::device::DeviceExtensions::khr_synchronization2)"] pub ext_opacity_micromap: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_pageable_device_local_memory.html)\n- Requires:\n - device extension [`ext_memory_priority`](crate::device::DeviceExtensions::ext_memory_priority)"] pub ext_pageable_device_local_memory: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_pci_bus_info.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_pci_bus_info: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_physical_device_drm.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_physical_device_drm: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_pipeline_creation_cache_control.html)\n- Promoted to Vulkan 1.3"] pub ext_pipeline_creation_cache_control: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_pipeline_creation_feedback.html)\n- Promoted to Vulkan 1.3"] pub ext_pipeline_creation_feedback: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_pipeline_properties.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_pipeline_properties: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_pipeline_protected_access.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_pipeline_protected_access: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_pipeline_robustness.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_pipeline_robustness: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_post_depth_coverage.html)"] pub ext_post_depth_coverage: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_primitive_topology_list_restart.html)"] pub ext_primitive_topology_list_restart: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_primitives_generated_query.html)\n- Requires:\n - device extension [`ext_transform_feedback`](crate::device::DeviceExtensions::ext_transform_feedback)"] pub ext_primitives_generated_query: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_private_data.html)\n- Promoted to Vulkan 1.3"] pub ext_private_data: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_provoking_vertex.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_provoking_vertex: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_queue_family_foreign.html)\n- Requires:\n - One of: Vulkan API version 1.1, device extension [`khr_external_memory`](crate::device::DeviceExtensions::khr_external_memory)"] pub ext_queue_family_foreign: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_rasterization_order_attachment_access.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_rasterization_order_attachment_access: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_rgba10x6_formats.html)\n- Requires:\n - One of: Vulkan API version 1.1, device extension [`khr_sampler_ycbcr_conversion`](crate::device::DeviceExtensions::khr_sampler_ycbcr_conversion)"] pub ext_rgba10x6_formats: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_robustness2.html)"] pub ext_robustness2: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_sample_locations.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_sample_locations: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_sampler_filter_minmax.html)\n- Promoted to Vulkan 1.2\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_sampler_filter_minmax: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_scalar_block_layout.html)\n- Promoted to Vulkan 1.2\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_scalar_block_layout: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_separate_stencil_usage.html)\n- Promoted to Vulkan 1.2"] pub ext_separate_stencil_usage: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_shader_atomic_float.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_shader_atomic_float: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_shader_atomic_float2.html)\n- Requires:\n - device extension [`ext_shader_atomic_float`](crate::device::DeviceExtensions::ext_shader_atomic_float)"] pub ext_shader_atomic_float2: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_shader_demote_to_helper_invocation.html)\n- Promoted to Vulkan 1.3\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_shader_demote_to_helper_invocation: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_shader_image_atomic_int64.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_shader_image_atomic_int64: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_shader_module_identifier.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n - One of: Vulkan API version 1.3, device extension [`ext_pipeline_creation_cache_control`](crate::device::DeviceExtensions::ext_pipeline_creation_cache_control)"] pub ext_shader_module_identifier: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_shader_stencil_export.html)"] pub ext_shader_stencil_export: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_shader_subgroup_ballot.html)\n- Deprecated by Vulkan 1.2"] pub ext_shader_subgroup_ballot: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_shader_subgroup_vote.html)\n- Deprecated by Vulkan 1.1"] pub ext_shader_subgroup_vote: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_shader_viewport_index_layer.html)\n- Promoted to Vulkan 1.2"] pub ext_shader_viewport_index_layer: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_subgroup_size_control.html)\n- Promoted to Vulkan 1.3\n- Requires:\n - Vulkan API version 1.1"] pub ext_subgroup_size_control: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_subpass_merge_feedback.html)"] pub ext_subpass_merge_feedback: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_swapchain_maintenance1.html)\n- Requires:\n - device extension [`khr_swapchain`](crate::device::DeviceExtensions::khr_swapchain)\n - instance extension [`ext_surface_maintenance1`](crate::instance::InstanceExtensions::ext_surface_maintenance1)\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_swapchain_maintenance1: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_texel_buffer_alignment.html)\n- Promoted to Vulkan 1.3\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_texel_buffer_alignment: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_texture_compression_astc_hdr.html)\n- Promoted to Vulkan 1.3\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_texture_compression_astc_hdr: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_tooling_info.html)\n- Promoted to Vulkan 1.3"] pub ext_tooling_info: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_transform_feedback.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_transform_feedback: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_validation_cache.html)"] pub ext_validation_cache: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_vertex_attribute_divisor.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_vertex_attribute_divisor: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_vertex_input_dynamic_state.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub ext_vertex_input_dynamic_state: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_video_encode_h264.html)\n- Requires:\n - device extension [`khr_video_encode_queue`](crate::device::DeviceExtensions::khr_video_encode_queue)"] pub ext_video_encode_h264: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_video_encode_h265.html)\n- Requires:\n - device extension [`khr_video_encode_queue`](crate::device::DeviceExtensions::khr_video_encode_queue)"] pub ext_video_encode_h265: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_ycbcr_2plane_444_formats.html)\n- Promoted to Vulkan 1.3\n- Requires:\n - One of: Vulkan API version 1.1, device extension [`khr_sampler_ycbcr_conversion`](crate::device::DeviceExtensions::khr_sampler_ycbcr_conversion)"] pub ext_ycbcr_2plane_444_formats: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_ycbcr_image_arrays.html)\n- Requires:\n - One of: Vulkan API version 1.1, device extension [`khr_sampler_ycbcr_conversion`](crate::device::DeviceExtensions::khr_sampler_ycbcr_conversion)"] pub ext_ycbcr_image_arrays: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_buffer_marker.html)"] pub amd_buffer_marker: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_device_coherent_memory.html)"] pub amd_device_coherent_memory: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_display_native_hdr.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n - instance extension [`khr_get_surface_capabilities2`](crate::instance::InstanceExtensions::khr_get_surface_capabilities2)\n - device extension [`khr_swapchain`](crate::device::DeviceExtensions::khr_swapchain)"] pub amd_display_native_hdr: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_draw_indirect_count.html)\n- Promoted to [`khr_draw_indirect_count`](crate::device::DeviceExtensions::khr_draw_indirect_count)"] pub amd_draw_indirect_count: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_gcn_shader.html)"] pub amd_gcn_shader: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_gpu_shader_half_float.html)\n- Deprecated by [`khr_shader_float16_int8`](crate::device::DeviceExtensions::khr_shader_float16_int8)"] pub amd_gpu_shader_half_float: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_gpu_shader_int16.html)\n- Deprecated by [`khr_shader_float16_int8`](crate::device::DeviceExtensions::khr_shader_float16_int8)"] pub amd_gpu_shader_int16: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_memory_overallocation_behavior.html)"] pub amd_memory_overallocation_behavior: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_mixed_attachment_samples.html)"] pub amd_mixed_attachment_samples: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_pipeline_compiler_control.html)"] pub amd_pipeline_compiler_control: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_rasterization_order.html)"] pub amd_rasterization_order: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_shader_ballot.html)"] pub amd_shader_ballot: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_shader_core_properties.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub amd_shader_core_properties: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_shader_core_properties2.html)\n- Requires:\n - device extension [`amd_shader_core_properties`](crate::device::DeviceExtensions::amd_shader_core_properties)"] pub amd_shader_core_properties2: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_shader_early_and_late_fragment_tests.html)"] pub amd_shader_early_and_late_fragment_tests: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_shader_explicit_vertex_parameter.html)"] pub amd_shader_explicit_vertex_parameter: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_shader_fragment_mask.html)"] pub amd_shader_fragment_mask: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_shader_image_load_store_lod.html)"] pub amd_shader_image_load_store_lod: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_shader_info.html)"] pub amd_shader_info: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_shader_trinary_minmax.html)"] pub amd_shader_trinary_minmax: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_texture_gather_bias_lod.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub amd_texture_gather_bias_lod: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_ANDROID_external_memory_android_hardware_buffer.html)\n- Requires:\n - One of: Vulkan API version 1.1, device extension [`khr_sampler_ycbcr_conversion`](crate::device::DeviceExtensions::khr_sampler_ycbcr_conversion)\n - One of: Vulkan API version 1.1, device extension [`khr_external_memory`](crate::device::DeviceExtensions::khr_external_memory)\n - device extension [`ext_queue_family_foreign`](crate::device::DeviceExtensions::ext_queue_family_foreign)\n - One of: Vulkan API version 1.1, device extension [`khr_dedicated_allocation`](crate::device::DeviceExtensions::khr_dedicated_allocation)"] pub android_external_memory_android_hardware_buffer: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_ARM_rasterization_order_attachment_access.html)\n- Promoted to [`ext_rasterization_order_attachment_access`](crate::device::DeviceExtensions::ext_rasterization_order_attachment_access)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub arm_rasterization_order_attachment_access: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_ARM_shader_core_builtins.html)"] pub arm_shader_core_builtins: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_FUCHSIA_buffer_collection.html)\n- Requires:\n - device extension [`fuchsia_external_memory`](crate::device::DeviceExtensions::fuchsia_external_memory)\n - One of: Vulkan API version 1.1, device extension [`khr_sampler_ycbcr_conversion`](crate::device::DeviceExtensions::khr_sampler_ycbcr_conversion)"] pub fuchsia_buffer_collection: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_FUCHSIA_external_memory.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_external_memory_capabilities`](crate::instance::InstanceExtensions::khr_external_memory_capabilities)\n - One of: Vulkan API version 1.1, device extension [`khr_external_memory`](crate::device::DeviceExtensions::khr_external_memory)"] pub fuchsia_external_memory: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_FUCHSIA_external_semaphore.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_external_semaphore_capabilities`](crate::instance::InstanceExtensions::khr_external_semaphore_capabilities)\n - One of: Vulkan API version 1.1, device extension [`khr_external_semaphore`](crate::device::DeviceExtensions::khr_external_semaphore)"] pub fuchsia_external_semaphore: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_GGP_frame_token.html)\n- Requires:\n - device extension [`khr_swapchain`](crate::device::DeviceExtensions::khr_swapchain)\n - instance extension [`ggp_stream_descriptor_surface`](crate::instance::InstanceExtensions::ggp_stream_descriptor_surface)"] pub ggp_frame_token: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_GOOGLE_decorate_string.html)"] pub google_decorate_string: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_GOOGLE_display_timing.html)\n- Requires:\n - device extension [`khr_swapchain`](crate::device::DeviceExtensions::khr_swapchain)"] pub google_display_timing: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_GOOGLE_hlsl_functionality1.html)"] pub google_hlsl_functionality1: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_GOOGLE_user_type.html)"] pub google_user_type: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_HUAWEI_invocation_mask.html)\n- Requires:\n - device extension [`khr_ray_tracing_pipeline`](crate::device::DeviceExtensions::khr_ray_tracing_pipeline)\n - One of: Vulkan API version 1.3, device extension [`khr_synchronization2`](crate::device::DeviceExtensions::khr_synchronization2)"] pub huawei_invocation_mask: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_HUAWEI_subpass_shading.html)\n- Requires:\n - One of: Vulkan API version 1.2, device extension [`khr_create_renderpass2`](crate::device::DeviceExtensions::khr_create_renderpass2)\n - One of: Vulkan API version 1.3, device extension [`khr_synchronization2`](crate::device::DeviceExtensions::khr_synchronization2)"] pub huawei_subpass_shading: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_IMG_filter_cubic.html)"] pub img_filter_cubic: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_IMG_format_pvrtc.html)\n- Deprecated without a replacement"] pub img_format_pvrtc: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_INTEL_performance_query.html)"] pub intel_performance_query: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_INTEL_shader_integer_functions2.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub intel_shader_integer_functions2: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NVX_binary_import.html)"] pub nvx_binary_import: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NVX_image_view_handle.html)"] pub nvx_image_view_handle: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NVX_multiview_per_view_attributes.html)\n- Requires:\n - One of: Vulkan API version 1.1, device extension [`khr_multiview`](crate::device::DeviceExtensions::khr_multiview)"] pub nvx_multiview_per_view_attributes: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_acquire_winrt_display.html)\n- Requires:\n - instance extension [`ext_direct_mode_display`](crate::instance::InstanceExtensions::ext_direct_mode_display)"] pub nv_acquire_winrt_display: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_clip_space_w_scaling.html)"] pub nv_clip_space_w_scaling: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_compute_shader_derivatives.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub nv_compute_shader_derivatives: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_cooperative_matrix.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub nv_cooperative_matrix: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_copy_memory_indirect.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n - One of: Vulkan API version 1.2, device extension [`khr_buffer_device_address`](crate::device::DeviceExtensions::khr_buffer_device_address)"] pub nv_copy_memory_indirect: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_corner_sampled_image.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub nv_corner_sampled_image: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_coverage_reduction_mode.html)\n- Requires:\n - device extension [`nv_framebuffer_mixed_samples`](crate::device::DeviceExtensions::nv_framebuffer_mixed_samples)"] pub nv_coverage_reduction_mode: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_dedicated_allocation.html)\n- Deprecated by [`khr_dedicated_allocation`](crate::device::DeviceExtensions::khr_dedicated_allocation)"] pub nv_dedicated_allocation: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_dedicated_allocation_image_aliasing.html)\n- Requires:\n - One of: Vulkan API version 1.1, device extension [`khr_dedicated_allocation`](crate::device::DeviceExtensions::khr_dedicated_allocation)"] pub nv_dedicated_allocation_image_aliasing: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_device_diagnostic_checkpoints.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub nv_device_diagnostic_checkpoints: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_device_diagnostics_config.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub nv_device_diagnostics_config: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_device_generated_commands.html)\n- Requires:\n - Vulkan API version 1.1\n - One of: Vulkan API version 1.2, device extension [`khr_buffer_device_address`](crate::device::DeviceExtensions::khr_buffer_device_address)"] pub nv_device_generated_commands: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_external_memory.html)\n- Deprecated by [`khr_external_memory`](crate::device::DeviceExtensions::khr_external_memory)\n- Requires:\n - instance extension [`nv_external_memory_capabilities`](crate::instance::InstanceExtensions::nv_external_memory_capabilities)"] pub nv_external_memory: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_external_memory_rdma.html)\n- Requires:\n - One of: Vulkan API version 1.1, device extension [`khr_external_memory`](crate::device::DeviceExtensions::khr_external_memory)"] pub nv_external_memory_rdma: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_external_memory_win32.html)\n- Deprecated by [`khr_external_memory_win32`](crate::device::DeviceExtensions::khr_external_memory_win32)\n- Requires:\n - device extension [`nv_external_memory`](crate::device::DeviceExtensions::nv_external_memory)"] pub nv_external_memory_win32: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_fill_rectangle.html)"] pub nv_fill_rectangle: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_fragment_coverage_to_color.html)"] pub nv_fragment_coverage_to_color: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_fragment_shader_barycentric.html)\n- Promoted to [`khr_fragment_shader_barycentric`](crate::device::DeviceExtensions::khr_fragment_shader_barycentric)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub nv_fragment_shader_barycentric: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_fragment_shading_rate_enums.html)\n- Requires:\n - device extension [`khr_fragment_shading_rate`](crate::device::DeviceExtensions::khr_fragment_shading_rate)"] pub nv_fragment_shading_rate_enums: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_framebuffer_mixed_samples.html)"] pub nv_framebuffer_mixed_samples: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_geometry_shader_passthrough.html)"] pub nv_geometry_shader_passthrough: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_glsl_shader.html)\n- Deprecated without a replacement"] pub nv_glsl_shader: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_inherited_viewport_scissor.html)"] pub nv_inherited_viewport_scissor: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_linear_color_attachment.html)"] pub nv_linear_color_attachment: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_memory_decompression.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n - One of: Vulkan API version 1.2, device extension [`khr_buffer_device_address`](crate::device::DeviceExtensions::khr_buffer_device_address)"] pub nv_memory_decompression: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_mesh_shader.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub nv_mesh_shader: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_optical_flow.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n - One of: Vulkan API version 1.3, device extension [`khr_format_feature_flags2`](crate::device::DeviceExtensions::khr_format_feature_flags2)\n - One of: Vulkan API version 1.3, device extension [`khr_synchronization2`](crate::device::DeviceExtensions::khr_synchronization2)"] pub nv_optical_flow: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_present_barrier.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n - instance extension [`khr_surface`](crate::instance::InstanceExtensions::khr_surface)\n - instance extension [`khr_get_surface_capabilities2`](crate::instance::InstanceExtensions::khr_get_surface_capabilities2)\n - device extension [`khr_swapchain`](crate::device::DeviceExtensions::khr_swapchain)"] pub nv_present_barrier: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_ray_tracing.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n - One of: Vulkan API version 1.1, device extension [`khr_get_memory_requirements2`](crate::device::DeviceExtensions::khr_get_memory_requirements2)"] pub nv_ray_tracing: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_ray_tracing_invocation_reorder.html)\n- Requires:\n - device extension [`khr_ray_tracing_pipeline`](crate::device::DeviceExtensions::khr_ray_tracing_pipeline)"] pub nv_ray_tracing_invocation_reorder: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_ray_tracing_motion_blur.html)\n- Requires:\n - device extension [`khr_ray_tracing_pipeline`](crate::device::DeviceExtensions::khr_ray_tracing_pipeline)"] pub nv_ray_tracing_motion_blur: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_representative_fragment_test.html)"] pub nv_representative_fragment_test: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_sample_mask_override_coverage.html)"] pub nv_sample_mask_override_coverage: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_scissor_exclusive.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub nv_scissor_exclusive: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_shader_image_footprint.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub nv_shader_image_footprint: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_shader_sm_builtins.html)\n- Requires:\n - Vulkan API version 1.1"] pub nv_shader_sm_builtins: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_shader_subgroup_partitioned.html)\n- Requires:\n - Vulkan API version 1.1"] pub nv_shader_subgroup_partitioned: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_shading_rate_image.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub nv_shading_rate_image: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_viewport_array2.html)"] pub nv_viewport_array2: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_viewport_swizzle.html)"] pub nv_viewport_swizzle: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_win32_keyed_mutex.html)\n- Promoted to [`khr_win32_keyed_mutex`](crate::device::DeviceExtensions::khr_win32_keyed_mutex)\n- Requires:\n - device extension [`nv_external_memory_win32`](crate::device::DeviceExtensions::nv_external_memory_win32)"] pub nv_win32_keyed_mutex: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_QCOM_fragment_density_map_offset.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n - device extension [`ext_fragment_density_map`](crate::device::DeviceExtensions::ext_fragment_density_map)"] pub qcom_fragment_density_map_offset: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_QCOM_image_processing.html)\n- Requires:\n - One of: Vulkan API version 1.3, device extension [`khr_format_feature_flags2`](crate::device::DeviceExtensions::khr_format_feature_flags2)"] pub qcom_image_processing: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_QCOM_multiview_per_view_viewports.html)"] pub qcom_multiview_per_view_viewports: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_QCOM_render_pass_shader_resolve.html)"] pub qcom_render_pass_shader_resolve: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_QCOM_render_pass_store_ops.html)"] pub qcom_render_pass_store_ops: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_QCOM_render_pass_transform.html)\n- Requires:\n - device extension [`khr_swapchain`](crate::device::DeviceExtensions::khr_swapchain)\n - instance extension [`khr_surface`](crate::instance::InstanceExtensions::khr_surface)"] pub qcom_render_pass_transform: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_QCOM_rotated_copy_commands.html)\n- Requires:\n - device extension [`khr_swapchain`](crate::device::DeviceExtensions::khr_swapchain)\n - One of: Vulkan API version 1.3, device extension [`khr_copy_commands2`](crate::device::DeviceExtensions::khr_copy_commands2)"] pub qcom_rotated_copy_commands: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_QCOM_tile_properties.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub qcom_tile_properties: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_SEC_amigo_profiling.html)\n- Requires:\n - One of: Vulkan API version 1.1, instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"] pub sec_amigo_profiling: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_VALVE_descriptor_set_host_mapping.html)"] pub valve_descriptor_set_host_mapping: bool, #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_VALVE_mutable_descriptor_type.html)\n- Promoted to [`ext_mutable_descriptor_type`](crate::device::DeviceExtensions::ext_mutable_descriptor_type)\n- Requires:\n - One of: Vulkan API version 1.1, device extension [`khr_maintenance3`](crate::device::DeviceExtensions::khr_maintenance3)"] pub valve_mutable_descriptor_type: bool, pub _ne: crate::NonExhaustive, } impl Default for DeviceExtensions { #[inline] fn default() -> Self { Self::empty() } } impl DeviceExtensions { #[doc = r" Returns an `Extensions` object with none of the members set."] #[inline] pub const fn empty() -> Self { Self { khr_16bit_storage: false, khr_8bit_storage: false, khr_acceleration_structure: false, khr_bind_memory2: false, khr_buffer_device_address: false, khr_copy_commands2: false, khr_create_renderpass2: false, khr_dedicated_allocation: false, khr_deferred_host_operations: false, khr_depth_stencil_resolve: false, khr_descriptor_update_template: false, khr_device_group: false, khr_display_swapchain: false, khr_draw_indirect_count: false, khr_driver_properties: false, khr_dynamic_rendering: false, khr_external_fence: false, khr_external_fence_fd: false, khr_external_fence_win32: false, khr_external_memory: false, khr_external_memory_fd: false, khr_external_memory_win32: false, khr_external_semaphore: false, khr_external_semaphore_fd: false, khr_external_semaphore_win32: false, khr_format_feature_flags2: false, khr_fragment_shader_barycentric: false, khr_fragment_shading_rate: false, khr_get_memory_requirements2: false, khr_global_priority: false, khr_image_format_list: false, khr_imageless_framebuffer: false, khr_incremental_present: false, khr_maintenance1: false, khr_maintenance2: false, khr_maintenance3: false, khr_maintenance4: false, khr_multiview: false, khr_performance_query: false, khr_pipeline_executable_properties: false, khr_pipeline_library: false, khr_portability_subset: false, khr_present_id: false, khr_present_wait: false, khr_push_descriptor: false, khr_ray_query: false, khr_ray_tracing_maintenance1: false, khr_ray_tracing_pipeline: false, khr_relaxed_block_layout: false, khr_sampler_mirror_clamp_to_edge: false, khr_sampler_ycbcr_conversion: false, khr_separate_depth_stencil_layouts: false, khr_shader_atomic_int64: false, khr_shader_clock: false, khr_shader_draw_parameters: false, khr_shader_float16_int8: false, khr_shader_float_controls: false, khr_shader_integer_dot_product: false, khr_shader_non_semantic_info: false, khr_shader_subgroup_extended_types: false, khr_shader_subgroup_uniform_control_flow: false, khr_shader_terminate_invocation: false, khr_shared_presentable_image: false, khr_spirv_1_4: false, khr_storage_buffer_storage_class: false, khr_swapchain: false, khr_swapchain_mutable_format: false, khr_synchronization2: false, khr_timeline_semaphore: false, khr_uniform_buffer_standard_layout: false, khr_variable_pointers: false, khr_video_decode_h264: false, khr_video_decode_h265: false, khr_video_decode_queue: false, khr_video_encode_queue: false, khr_video_queue: false, khr_vulkan_memory_model: false, khr_win32_keyed_mutex: false, khr_workgroup_memory_explicit_layout: false, khr_zero_initialize_workgroup_memory: false, ext_4444_formats: false, ext_astc_decode_mode: false, ext_attachment_feedback_loop_layout: false, ext_blend_operation_advanced: false, ext_border_color_swizzle: false, ext_buffer_device_address: false, ext_calibrated_timestamps: false, ext_color_write_enable: false, ext_conditional_rendering: false, ext_conservative_rasterization: false, ext_custom_border_color: false, ext_debug_marker: false, ext_depth_clamp_zero_one: false, ext_depth_clip_control: false, ext_depth_clip_enable: false, ext_depth_range_unrestricted: false, ext_descriptor_buffer: false, ext_descriptor_indexing: false, ext_device_address_binding_report: false, ext_device_fault: false, ext_device_memory_report: false, ext_discard_rectangles: false, ext_display_control: false, ext_extended_dynamic_state: false, ext_extended_dynamic_state2: false, ext_extended_dynamic_state3: false, ext_external_memory_dma_buf: false, ext_external_memory_host: false, ext_filter_cubic: false, ext_fragment_density_map: false, ext_fragment_density_map2: false, ext_fragment_shader_interlock: false, ext_full_screen_exclusive: false, ext_global_priority: false, ext_global_priority_query: false, ext_graphics_pipeline_library: false, ext_hdr_metadata: false, ext_host_query_reset: false, ext_image_2d_view_of_3d: false, ext_image_compression_control: false, ext_image_compression_control_swapchain: false, ext_image_drm_format_modifier: false, ext_image_robustness: false, ext_image_view_min_lod: false, ext_index_type_uint8: false, ext_inline_uniform_block: false, ext_legacy_dithering: false, ext_line_rasterization: false, ext_load_store_op_none: false, ext_memory_budget: false, ext_memory_priority: false, ext_mesh_shader: false, ext_metal_objects: false, ext_multi_draw: false, ext_multisampled_render_to_single_sampled: false, ext_mutable_descriptor_type: false, ext_non_seamless_cube_map: false, ext_opacity_micromap: false, ext_pageable_device_local_memory: false, ext_pci_bus_info: false, ext_physical_device_drm: false, ext_pipeline_creation_cache_control: false, ext_pipeline_creation_feedback: false, ext_pipeline_properties: false, ext_pipeline_protected_access: false, ext_pipeline_robustness: false, ext_post_depth_coverage: false, ext_primitive_topology_list_restart: false, ext_primitives_generated_query: false, ext_private_data: false, ext_provoking_vertex: false, ext_queue_family_foreign: false, ext_rasterization_order_attachment_access: false, ext_rgba10x6_formats: false, ext_robustness2: false, ext_sample_locations: false, ext_sampler_filter_minmax: false, ext_scalar_block_layout: false, ext_separate_stencil_usage: false, ext_shader_atomic_float: false, ext_shader_atomic_float2: false, ext_shader_demote_to_helper_invocation: false, ext_shader_image_atomic_int64: false, ext_shader_module_identifier: false, ext_shader_stencil_export: false, ext_shader_subgroup_ballot: false, ext_shader_subgroup_vote: false, ext_shader_viewport_index_layer: false, ext_subgroup_size_control: false, ext_subpass_merge_feedback: false, ext_swapchain_maintenance1: false, ext_texel_buffer_alignment: false, ext_texture_compression_astc_hdr: false, ext_tooling_info: false, ext_transform_feedback: false, ext_validation_cache: false, ext_vertex_attribute_divisor: false, ext_vertex_input_dynamic_state: false, ext_video_encode_h264: false, ext_video_encode_h265: false, ext_ycbcr_2plane_444_formats: false, ext_ycbcr_image_arrays: false, amd_buffer_marker: false, amd_device_coherent_memory: false, amd_display_native_hdr: false, amd_draw_indirect_count: false, amd_gcn_shader: false, amd_gpu_shader_half_float: false, amd_gpu_shader_int16: false, amd_memory_overallocation_behavior: false, amd_mixed_attachment_samples: false, amd_pipeline_compiler_control: false, amd_rasterization_order: false, amd_shader_ballot: false, amd_shader_core_properties: false, amd_shader_core_properties2: false, amd_shader_early_and_late_fragment_tests: false, amd_shader_explicit_vertex_parameter: false, amd_shader_fragment_mask: false, amd_shader_image_load_store_lod: false, amd_shader_info: false, amd_shader_trinary_minmax: false, amd_texture_gather_bias_lod: false, android_external_memory_android_hardware_buffer: false, arm_rasterization_order_attachment_access: false, arm_shader_core_builtins: false, fuchsia_buffer_collection: false, fuchsia_external_memory: false, fuchsia_external_semaphore: false, ggp_frame_token: false, google_decorate_string: false, google_display_timing: false, google_hlsl_functionality1: false, google_user_type: false, huawei_invocation_mask: false, huawei_subpass_shading: false, img_filter_cubic: false, img_format_pvrtc: false, intel_performance_query: false, intel_shader_integer_functions2: false, nvx_binary_import: false, nvx_image_view_handle: false, nvx_multiview_per_view_attributes: false, nv_acquire_winrt_display: false, nv_clip_space_w_scaling: false, nv_compute_shader_derivatives: false, nv_cooperative_matrix: false, nv_copy_memory_indirect: false, nv_corner_sampled_image: false, nv_coverage_reduction_mode: false, nv_dedicated_allocation: false, nv_dedicated_allocation_image_aliasing: false, nv_device_diagnostic_checkpoints: false, nv_device_diagnostics_config: false, nv_device_generated_commands: false, nv_external_memory: false, nv_external_memory_rdma: false, nv_external_memory_win32: false, nv_fill_rectangle: false, nv_fragment_coverage_to_color: false, nv_fragment_shader_barycentric: false, nv_fragment_shading_rate_enums: false, nv_framebuffer_mixed_samples: false, nv_geometry_shader_passthrough: false, nv_glsl_shader: false, nv_inherited_viewport_scissor: false, nv_linear_color_attachment: false, nv_memory_decompression: false, nv_mesh_shader: false, nv_optical_flow: false, nv_present_barrier: false, nv_ray_tracing: false, nv_ray_tracing_invocation_reorder: false, nv_ray_tracing_motion_blur: false, nv_representative_fragment_test: false, nv_sample_mask_override_coverage: false, nv_scissor_exclusive: false, nv_shader_image_footprint: false, nv_shader_sm_builtins: false, nv_shader_subgroup_partitioned: false, nv_shading_rate_image: false, nv_viewport_array2: false, nv_viewport_swizzle: false, nv_win32_keyed_mutex: false, qcom_fragment_density_map_offset: false, qcom_image_processing: false, qcom_multiview_per_view_viewports: false, qcom_render_pass_shader_resolve: false, qcom_render_pass_store_ops: false, qcom_render_pass_transform: false, qcom_rotated_copy_commands: false, qcom_tile_properties: false, sec_amigo_profiling: false, valve_descriptor_set_host_mapping: false, valve_mutable_descriptor_type: false, _ne: crate::NonExhaustive(()), } } #[doc = r" Returns an `Extensions` object with none of the members set."] #[deprecated(since = "0.31.0", note = "Use `empty` instead.")] #[inline] pub const fn none() -> Self { Self::empty() } #[doc = r" Returns whether any members are set in both `self` and `other`."] #[inline] pub const fn intersects(&self, other: &Self) -> bool { (self.khr_16bit_storage && other.khr_16bit_storage) || (self.khr_8bit_storage && other.khr_8bit_storage) || (self.khr_acceleration_structure && other.khr_acceleration_structure) || (self.khr_bind_memory2 && other.khr_bind_memory2) || (self.khr_buffer_device_address && other.khr_buffer_device_address) || (self.khr_copy_commands2 && other.khr_copy_commands2) || (self.khr_create_renderpass2 && other.khr_create_renderpass2) || (self.khr_dedicated_allocation && other.khr_dedicated_allocation) || (self.khr_deferred_host_operations && other.khr_deferred_host_operations) || (self.khr_depth_stencil_resolve && other.khr_depth_stencil_resolve) || (self.khr_descriptor_update_template && other.khr_descriptor_update_template) || (self.khr_device_group && other.khr_device_group) || (self.khr_display_swapchain && other.khr_display_swapchain) || (self.khr_draw_indirect_count && other.khr_draw_indirect_count) || (self.khr_driver_properties && other.khr_driver_properties) || (self.khr_dynamic_rendering && other.khr_dynamic_rendering) || (self.khr_external_fence && other.khr_external_fence) || (self.khr_external_fence_fd && other.khr_external_fence_fd) || (self.khr_external_fence_win32 && other.khr_external_fence_win32) || (self.khr_external_memory && other.khr_external_memory) || (self.khr_external_memory_fd && other.khr_external_memory_fd) || (self.khr_external_memory_win32 && other.khr_external_memory_win32) || (self.khr_external_semaphore && other.khr_external_semaphore) || (self.khr_external_semaphore_fd && other.khr_external_semaphore_fd) || (self.khr_external_semaphore_win32 && other.khr_external_semaphore_win32) || (self.khr_format_feature_flags2 && other.khr_format_feature_flags2) || (self.khr_fragment_shader_barycentric && other.khr_fragment_shader_barycentric) || (self.khr_fragment_shading_rate && other.khr_fragment_shading_rate) || (self.khr_get_memory_requirements2 && other.khr_get_memory_requirements2) || (self.khr_global_priority && other.khr_global_priority) || (self.khr_image_format_list && other.khr_image_format_list) || (self.khr_imageless_framebuffer && other.khr_imageless_framebuffer) || (self.khr_incremental_present && other.khr_incremental_present) || (self.khr_maintenance1 && other.khr_maintenance1) || (self.khr_maintenance2 && other.khr_maintenance2) || (self.khr_maintenance3 && other.khr_maintenance3) || (self.khr_maintenance4 && other.khr_maintenance4) || (self.khr_multiview && other.khr_multiview) || (self.khr_performance_query && other.khr_performance_query) || (self.khr_pipeline_executable_properties && other.khr_pipeline_executable_properties) || (self.khr_pipeline_library && other.khr_pipeline_library) || (self.khr_portability_subset && other.khr_portability_subset) || (self.khr_present_id && other.khr_present_id) || (self.khr_present_wait && other.khr_present_wait) || (self.khr_push_descriptor && other.khr_push_descriptor) || (self.khr_ray_query && other.khr_ray_query) || (self.khr_ray_tracing_maintenance1 && other.khr_ray_tracing_maintenance1) || (self.khr_ray_tracing_pipeline && other.khr_ray_tracing_pipeline) || (self.khr_relaxed_block_layout && other.khr_relaxed_block_layout) || (self.khr_sampler_mirror_clamp_to_edge && other.khr_sampler_mirror_clamp_to_edge) || (self.khr_sampler_ycbcr_conversion && other.khr_sampler_ycbcr_conversion) || (self.khr_separate_depth_stencil_layouts && other.khr_separate_depth_stencil_layouts) || (self.khr_shader_atomic_int64 && other.khr_shader_atomic_int64) || (self.khr_shader_clock && other.khr_shader_clock) || (self.khr_shader_draw_parameters && other.khr_shader_draw_parameters) || (self.khr_shader_float16_int8 && other.khr_shader_float16_int8) || (self.khr_shader_float_controls && other.khr_shader_float_controls) || (self.khr_shader_integer_dot_product && other.khr_shader_integer_dot_product) || (self.khr_shader_non_semantic_info && other.khr_shader_non_semantic_info) || (self.khr_shader_subgroup_extended_types && other.khr_shader_subgroup_extended_types) || (self.khr_shader_subgroup_uniform_control_flow && other.khr_shader_subgroup_uniform_control_flow) || (self.khr_shader_terminate_invocation && other.khr_shader_terminate_invocation) || (self.khr_shared_presentable_image && other.khr_shared_presentable_image) || (self.khr_spirv_1_4 && other.khr_spirv_1_4) || (self.khr_storage_buffer_storage_class && other.khr_storage_buffer_storage_class) || (self.khr_swapchain && other.khr_swapchain) || (self.khr_swapchain_mutable_format && other.khr_swapchain_mutable_format) || (self.khr_synchronization2 && other.khr_synchronization2) || (self.khr_timeline_semaphore && other.khr_timeline_semaphore) || (self.khr_uniform_buffer_standard_layout && other.khr_uniform_buffer_standard_layout) || (self.khr_variable_pointers && other.khr_variable_pointers) || (self.khr_video_decode_h264 && other.khr_video_decode_h264) || (self.khr_video_decode_h265 && other.khr_video_decode_h265) || (self.khr_video_decode_queue && other.khr_video_decode_queue) || (self.khr_video_encode_queue && other.khr_video_encode_queue) || (self.khr_video_queue && other.khr_video_queue) || (self.khr_vulkan_memory_model && other.khr_vulkan_memory_model) || (self.khr_win32_keyed_mutex && other.khr_win32_keyed_mutex) || (self.khr_workgroup_memory_explicit_layout && other.khr_workgroup_memory_explicit_layout) || (self.khr_zero_initialize_workgroup_memory && other.khr_zero_initialize_workgroup_memory) || (self.ext_4444_formats && other.ext_4444_formats) || (self.ext_astc_decode_mode && other.ext_astc_decode_mode) || (self.ext_attachment_feedback_loop_layout && other.ext_attachment_feedback_loop_layout) || (self.ext_blend_operation_advanced && other.ext_blend_operation_advanced) || (self.ext_border_color_swizzle && other.ext_border_color_swizzle) || (self.ext_buffer_device_address && other.ext_buffer_device_address) || (self.ext_calibrated_timestamps && other.ext_calibrated_timestamps) || (self.ext_color_write_enable && other.ext_color_write_enable) || (self.ext_conditional_rendering && other.ext_conditional_rendering) || (self.ext_conservative_rasterization && other.ext_conservative_rasterization) || (self.ext_custom_border_color && other.ext_custom_border_color) || (self.ext_debug_marker && other.ext_debug_marker) || (self.ext_depth_clamp_zero_one && other.ext_depth_clamp_zero_one) || (self.ext_depth_clip_control && other.ext_depth_clip_control) || (self.ext_depth_clip_enable && other.ext_depth_clip_enable) || (self.ext_depth_range_unrestricted && other.ext_depth_range_unrestricted) || (self.ext_descriptor_buffer && other.ext_descriptor_buffer) || (self.ext_descriptor_indexing && other.ext_descriptor_indexing) || (self.ext_device_address_binding_report && other.ext_device_address_binding_report) || (self.ext_device_fault && other.ext_device_fault) || (self.ext_device_memory_report && other.ext_device_memory_report) || (self.ext_discard_rectangles && other.ext_discard_rectangles) || (self.ext_display_control && other.ext_display_control) || (self.ext_extended_dynamic_state && other.ext_extended_dynamic_state) || (self.ext_extended_dynamic_state2 && other.ext_extended_dynamic_state2) || (self.ext_extended_dynamic_state3 && other.ext_extended_dynamic_state3) || (self.ext_external_memory_dma_buf && other.ext_external_memory_dma_buf) || (self.ext_external_memory_host && other.ext_external_memory_host) || (self.ext_filter_cubic && other.ext_filter_cubic) || (self.ext_fragment_density_map && other.ext_fragment_density_map) || (self.ext_fragment_density_map2 && other.ext_fragment_density_map2) || (self.ext_fragment_shader_interlock && other.ext_fragment_shader_interlock) || (self.ext_full_screen_exclusive && other.ext_full_screen_exclusive) || (self.ext_global_priority && other.ext_global_priority) || (self.ext_global_priority_query && other.ext_global_priority_query) || (self.ext_graphics_pipeline_library && other.ext_graphics_pipeline_library) || (self.ext_hdr_metadata && other.ext_hdr_metadata) || (self.ext_host_query_reset && other.ext_host_query_reset) || (self.ext_image_2d_view_of_3d && other.ext_image_2d_view_of_3d) || (self.ext_image_compression_control && other.ext_image_compression_control) || (self.ext_image_compression_control_swapchain && other.ext_image_compression_control_swapchain) || (self.ext_image_drm_format_modifier && other.ext_image_drm_format_modifier) || (self.ext_image_robustness && other.ext_image_robustness) || (self.ext_image_view_min_lod && other.ext_image_view_min_lod) || (self.ext_index_type_uint8 && other.ext_index_type_uint8) || (self.ext_inline_uniform_block && other.ext_inline_uniform_block) || (self.ext_legacy_dithering && other.ext_legacy_dithering) || (self.ext_line_rasterization && other.ext_line_rasterization) || (self.ext_load_store_op_none && other.ext_load_store_op_none) || (self.ext_memory_budget && other.ext_memory_budget) || (self.ext_memory_priority && other.ext_memory_priority) || (self.ext_mesh_shader && other.ext_mesh_shader) || (self.ext_metal_objects && other.ext_metal_objects) || (self.ext_multi_draw && other.ext_multi_draw) || (self.ext_multisampled_render_to_single_sampled && other.ext_multisampled_render_to_single_sampled) || (self.ext_mutable_descriptor_type && other.ext_mutable_descriptor_type) || (self.ext_non_seamless_cube_map && other.ext_non_seamless_cube_map) || (self.ext_opacity_micromap && other.ext_opacity_micromap) || (self.ext_pageable_device_local_memory && other.ext_pageable_device_local_memory) || (self.ext_pci_bus_info && other.ext_pci_bus_info) || (self.ext_physical_device_drm && other.ext_physical_device_drm) || (self.ext_pipeline_creation_cache_control && other.ext_pipeline_creation_cache_control) || (self.ext_pipeline_creation_feedback && other.ext_pipeline_creation_feedback) || (self.ext_pipeline_properties && other.ext_pipeline_properties) || (self.ext_pipeline_protected_access && other.ext_pipeline_protected_access) || (self.ext_pipeline_robustness && other.ext_pipeline_robustness) || (self.ext_post_depth_coverage && other.ext_post_depth_coverage) || (self.ext_primitive_topology_list_restart && other.ext_primitive_topology_list_restart) || (self.ext_primitives_generated_query && other.ext_primitives_generated_query) || (self.ext_private_data && other.ext_private_data) || (self.ext_provoking_vertex && other.ext_provoking_vertex) || (self.ext_queue_family_foreign && other.ext_queue_family_foreign) || (self.ext_rasterization_order_attachment_access && other.ext_rasterization_order_attachment_access) || (self.ext_rgba10x6_formats && other.ext_rgba10x6_formats) || (self.ext_robustness2 && other.ext_robustness2) || (self.ext_sample_locations && other.ext_sample_locations) || (self.ext_sampler_filter_minmax && other.ext_sampler_filter_minmax) || (self.ext_scalar_block_layout && other.ext_scalar_block_layout) || (self.ext_separate_stencil_usage && other.ext_separate_stencil_usage) || (self.ext_shader_atomic_float && other.ext_shader_atomic_float) || (self.ext_shader_atomic_float2 && other.ext_shader_atomic_float2) || (self.ext_shader_demote_to_helper_invocation && other.ext_shader_demote_to_helper_invocation) || (self.ext_shader_image_atomic_int64 && other.ext_shader_image_atomic_int64) || (self.ext_shader_module_identifier && other.ext_shader_module_identifier) || (self.ext_shader_stencil_export && other.ext_shader_stencil_export) || (self.ext_shader_subgroup_ballot && other.ext_shader_subgroup_ballot) || (self.ext_shader_subgroup_vote && other.ext_shader_subgroup_vote) || (self.ext_shader_viewport_index_layer && other.ext_shader_viewport_index_layer) || (self.ext_subgroup_size_control && other.ext_subgroup_size_control) || (self.ext_subpass_merge_feedback && other.ext_subpass_merge_feedback) || (self.ext_swapchain_maintenance1 && other.ext_swapchain_maintenance1) || (self.ext_texel_buffer_alignment && other.ext_texel_buffer_alignment) || (self.ext_texture_compression_astc_hdr && other.ext_texture_compression_astc_hdr) || (self.ext_tooling_info && other.ext_tooling_info) || (self.ext_transform_feedback && other.ext_transform_feedback) || (self.ext_validation_cache && other.ext_validation_cache) || (self.ext_vertex_attribute_divisor && other.ext_vertex_attribute_divisor) || (self.ext_vertex_input_dynamic_state && other.ext_vertex_input_dynamic_state) || (self.ext_video_encode_h264 && other.ext_video_encode_h264) || (self.ext_video_encode_h265 && other.ext_video_encode_h265) || (self.ext_ycbcr_2plane_444_formats && other.ext_ycbcr_2plane_444_formats) || (self.ext_ycbcr_image_arrays && other.ext_ycbcr_image_arrays) || (self.amd_buffer_marker && other.amd_buffer_marker) || (self.amd_device_coherent_memory && other.amd_device_coherent_memory) || (self.amd_display_native_hdr && other.amd_display_native_hdr) || (self.amd_draw_indirect_count && other.amd_draw_indirect_count) || (self.amd_gcn_shader && other.amd_gcn_shader) || (self.amd_gpu_shader_half_float && other.amd_gpu_shader_half_float) || (self.amd_gpu_shader_int16 && other.amd_gpu_shader_int16) || (self.amd_memory_overallocation_behavior && other.amd_memory_overallocation_behavior) || (self.amd_mixed_attachment_samples && other.amd_mixed_attachment_samples) || (self.amd_pipeline_compiler_control && other.amd_pipeline_compiler_control) || (self.amd_rasterization_order && other.amd_rasterization_order) || (self.amd_shader_ballot && other.amd_shader_ballot) || (self.amd_shader_core_properties && other.amd_shader_core_properties) || (self.amd_shader_core_properties2 && other.amd_shader_core_properties2) || (self.amd_shader_early_and_late_fragment_tests && other.amd_shader_early_and_late_fragment_tests) || (self.amd_shader_explicit_vertex_parameter && other.amd_shader_explicit_vertex_parameter) || (self.amd_shader_fragment_mask && other.amd_shader_fragment_mask) || (self.amd_shader_image_load_store_lod && other.amd_shader_image_load_store_lod) || (self.amd_shader_info && other.amd_shader_info) || (self.amd_shader_trinary_minmax && other.amd_shader_trinary_minmax) || (self.amd_texture_gather_bias_lod && other.amd_texture_gather_bias_lod) || (self.android_external_memory_android_hardware_buffer && other.android_external_memory_android_hardware_buffer) || (self.arm_rasterization_order_attachment_access && other.arm_rasterization_order_attachment_access) || (self.arm_shader_core_builtins && other.arm_shader_core_builtins) || (self.fuchsia_buffer_collection && other.fuchsia_buffer_collection) || (self.fuchsia_external_memory && other.fuchsia_external_memory) || (self.fuchsia_external_semaphore && other.fuchsia_external_semaphore) || (self.ggp_frame_token && other.ggp_frame_token) || (self.google_decorate_string && other.google_decorate_string) || (self.google_display_timing && other.google_display_timing) || (self.google_hlsl_functionality1 && other.google_hlsl_functionality1) || (self.google_user_type && other.google_user_type) || (self.huawei_invocation_mask && other.huawei_invocation_mask) || (self.huawei_subpass_shading && other.huawei_subpass_shading) || (self.img_filter_cubic && other.img_filter_cubic) || (self.img_format_pvrtc && other.img_format_pvrtc) || (self.intel_performance_query && other.intel_performance_query) || (self.intel_shader_integer_functions2 && other.intel_shader_integer_functions2) || (self.nvx_binary_import && other.nvx_binary_import) || (self.nvx_image_view_handle && other.nvx_image_view_handle) || (self.nvx_multiview_per_view_attributes && other.nvx_multiview_per_view_attributes) || (self.nv_acquire_winrt_display && other.nv_acquire_winrt_display) || (self.nv_clip_space_w_scaling && other.nv_clip_space_w_scaling) || (self.nv_compute_shader_derivatives && other.nv_compute_shader_derivatives) || (self.nv_cooperative_matrix && other.nv_cooperative_matrix) || (self.nv_copy_memory_indirect && other.nv_copy_memory_indirect) || (self.nv_corner_sampled_image && other.nv_corner_sampled_image) || (self.nv_coverage_reduction_mode && other.nv_coverage_reduction_mode) || (self.nv_dedicated_allocation && other.nv_dedicated_allocation) || (self.nv_dedicated_allocation_image_aliasing && other.nv_dedicated_allocation_image_aliasing) || (self.nv_device_diagnostic_checkpoints && other.nv_device_diagnostic_checkpoints) || (self.nv_device_diagnostics_config && other.nv_device_diagnostics_config) || (self.nv_device_generated_commands && other.nv_device_generated_commands) || (self.nv_external_memory && other.nv_external_memory) || (self.nv_external_memory_rdma && other.nv_external_memory_rdma) || (self.nv_external_memory_win32 && other.nv_external_memory_win32) || (self.nv_fill_rectangle && other.nv_fill_rectangle) || (self.nv_fragment_coverage_to_color && other.nv_fragment_coverage_to_color) || (self.nv_fragment_shader_barycentric && other.nv_fragment_shader_barycentric) || (self.nv_fragment_shading_rate_enums && other.nv_fragment_shading_rate_enums) || (self.nv_framebuffer_mixed_samples && other.nv_framebuffer_mixed_samples) || (self.nv_geometry_shader_passthrough && other.nv_geometry_shader_passthrough) || (self.nv_glsl_shader && other.nv_glsl_shader) || (self.nv_inherited_viewport_scissor && other.nv_inherited_viewport_scissor) || (self.nv_linear_color_attachment && other.nv_linear_color_attachment) || (self.nv_memory_decompression && other.nv_memory_decompression) || (self.nv_mesh_shader && other.nv_mesh_shader) || (self.nv_optical_flow && other.nv_optical_flow) || (self.nv_present_barrier && other.nv_present_barrier) || (self.nv_ray_tracing && other.nv_ray_tracing) || (self.nv_ray_tracing_invocation_reorder && other.nv_ray_tracing_invocation_reorder) || (self.nv_ray_tracing_motion_blur && other.nv_ray_tracing_motion_blur) || (self.nv_representative_fragment_test && other.nv_representative_fragment_test) || (self.nv_sample_mask_override_coverage && other.nv_sample_mask_override_coverage) || (self.nv_scissor_exclusive && other.nv_scissor_exclusive) || (self.nv_shader_image_footprint && other.nv_shader_image_footprint) || (self.nv_shader_sm_builtins && other.nv_shader_sm_builtins) || (self.nv_shader_subgroup_partitioned && other.nv_shader_subgroup_partitioned) || (self.nv_shading_rate_image && other.nv_shading_rate_image) || (self.nv_viewport_array2 && other.nv_viewport_array2) || (self.nv_viewport_swizzle && other.nv_viewport_swizzle) || (self.nv_win32_keyed_mutex && other.nv_win32_keyed_mutex) || (self.qcom_fragment_density_map_offset && other.qcom_fragment_density_map_offset) || (self.qcom_image_processing && other.qcom_image_processing) || (self.qcom_multiview_per_view_viewports && other.qcom_multiview_per_view_viewports) || (self.qcom_render_pass_shader_resolve && other.qcom_render_pass_shader_resolve) || (self.qcom_render_pass_store_ops && other.qcom_render_pass_store_ops) || (self.qcom_render_pass_transform && other.qcom_render_pass_transform) || (self.qcom_rotated_copy_commands && other.qcom_rotated_copy_commands) || (self.qcom_tile_properties && other.qcom_tile_properties) || (self.sec_amigo_profiling && other.sec_amigo_profiling) || (self.valve_descriptor_set_host_mapping && other.valve_descriptor_set_host_mapping) || (self.valve_mutable_descriptor_type && other.valve_mutable_descriptor_type) } #[doc = r" Returns whether all members in `other` are set in `self`."] #[inline] pub const fn contains(&self, other: &Self) -> bool { (self.khr_16bit_storage || !other.khr_16bit_storage) && (self.khr_8bit_storage || !other.khr_8bit_storage) && (self.khr_acceleration_structure || !other.khr_acceleration_structure) && (self.khr_bind_memory2 || !other.khr_bind_memory2) && (self.khr_buffer_device_address || !other.khr_buffer_device_address) && (self.khr_copy_commands2 || !other.khr_copy_commands2) && (self.khr_create_renderpass2 || !other.khr_create_renderpass2) && (self.khr_dedicated_allocation || !other.khr_dedicated_allocation) && (self.khr_deferred_host_operations || !other.khr_deferred_host_operations) && (self.khr_depth_stencil_resolve || !other.khr_depth_stencil_resolve) && (self.khr_descriptor_update_template || !other.khr_descriptor_update_template) && (self.khr_device_group || !other.khr_device_group) && (self.khr_display_swapchain || !other.khr_display_swapchain) && (self.khr_draw_indirect_count || !other.khr_draw_indirect_count) && (self.khr_driver_properties || !other.khr_driver_properties) && (self.khr_dynamic_rendering || !other.khr_dynamic_rendering) && (self.khr_external_fence || !other.khr_external_fence) && (self.khr_external_fence_fd || !other.khr_external_fence_fd) && (self.khr_external_fence_win32 || !other.khr_external_fence_win32) && (self.khr_external_memory || !other.khr_external_memory) && (self.khr_external_memory_fd || !other.khr_external_memory_fd) && (self.khr_external_memory_win32 || !other.khr_external_memory_win32) && (self.khr_external_semaphore || !other.khr_external_semaphore) && (self.khr_external_semaphore_fd || !other.khr_external_semaphore_fd) && (self.khr_external_semaphore_win32 || !other.khr_external_semaphore_win32) && (self.khr_format_feature_flags2 || !other.khr_format_feature_flags2) && (self.khr_fragment_shader_barycentric || !other.khr_fragment_shader_barycentric) && (self.khr_fragment_shading_rate || !other.khr_fragment_shading_rate) && (self.khr_get_memory_requirements2 || !other.khr_get_memory_requirements2) && (self.khr_global_priority || !other.khr_global_priority) && (self.khr_image_format_list || !other.khr_image_format_list) && (self.khr_imageless_framebuffer || !other.khr_imageless_framebuffer) && (self.khr_incremental_present || !other.khr_incremental_present) && (self.khr_maintenance1 || !other.khr_maintenance1) && (self.khr_maintenance2 || !other.khr_maintenance2) && (self.khr_maintenance3 || !other.khr_maintenance3) && (self.khr_maintenance4 || !other.khr_maintenance4) && (self.khr_multiview || !other.khr_multiview) && (self.khr_performance_query || !other.khr_performance_query) && (self.khr_pipeline_executable_properties || !other.khr_pipeline_executable_properties) && (self.khr_pipeline_library || !other.khr_pipeline_library) && (self.khr_portability_subset || !other.khr_portability_subset) && (self.khr_present_id || !other.khr_present_id) && (self.khr_present_wait || !other.khr_present_wait) && (self.khr_push_descriptor || !other.khr_push_descriptor) && (self.khr_ray_query || !other.khr_ray_query) && (self.khr_ray_tracing_maintenance1 || !other.khr_ray_tracing_maintenance1) && (self.khr_ray_tracing_pipeline || !other.khr_ray_tracing_pipeline) && (self.khr_relaxed_block_layout || !other.khr_relaxed_block_layout) && (self.khr_sampler_mirror_clamp_to_edge || !other.khr_sampler_mirror_clamp_to_edge) && (self.khr_sampler_ycbcr_conversion || !other.khr_sampler_ycbcr_conversion) && (self.khr_separate_depth_stencil_layouts || !other.khr_separate_depth_stencil_layouts) && (self.khr_shader_atomic_int64 || !other.khr_shader_atomic_int64) && (self.khr_shader_clock || !other.khr_shader_clock) && (self.khr_shader_draw_parameters || !other.khr_shader_draw_parameters) && (self.khr_shader_float16_int8 || !other.khr_shader_float16_int8) && (self.khr_shader_float_controls || !other.khr_shader_float_controls) && (self.khr_shader_integer_dot_product || !other.khr_shader_integer_dot_product) && (self.khr_shader_non_semantic_info || !other.khr_shader_non_semantic_info) && (self.khr_shader_subgroup_extended_types || !other.khr_shader_subgroup_extended_types) && (self.khr_shader_subgroup_uniform_control_flow || !other.khr_shader_subgroup_uniform_control_flow) && (self.khr_shader_terminate_invocation || !other.khr_shader_terminate_invocation) && (self.khr_shared_presentable_image || !other.khr_shared_presentable_image) && (self.khr_spirv_1_4 || !other.khr_spirv_1_4) && (self.khr_storage_buffer_storage_class || !other.khr_storage_buffer_storage_class) && (self.khr_swapchain || !other.khr_swapchain) && (self.khr_swapchain_mutable_format || !other.khr_swapchain_mutable_format) && (self.khr_synchronization2 || !other.khr_synchronization2) && (self.khr_timeline_semaphore || !other.khr_timeline_semaphore) && (self.khr_uniform_buffer_standard_layout || !other.khr_uniform_buffer_standard_layout) && (self.khr_variable_pointers || !other.khr_variable_pointers) && (self.khr_video_decode_h264 || !other.khr_video_decode_h264) && (self.khr_video_decode_h265 || !other.khr_video_decode_h265) && (self.khr_video_decode_queue || !other.khr_video_decode_queue) && (self.khr_video_encode_queue || !other.khr_video_encode_queue) && (self.khr_video_queue || !other.khr_video_queue) && (self.khr_vulkan_memory_model || !other.khr_vulkan_memory_model) && (self.khr_win32_keyed_mutex || !other.khr_win32_keyed_mutex) && (self.khr_workgroup_memory_explicit_layout || !other.khr_workgroup_memory_explicit_layout) && (self.khr_zero_initialize_workgroup_memory || !other.khr_zero_initialize_workgroup_memory) && (self.ext_4444_formats || !other.ext_4444_formats) && (self.ext_astc_decode_mode || !other.ext_astc_decode_mode) && (self.ext_attachment_feedback_loop_layout || !other.ext_attachment_feedback_loop_layout) && (self.ext_blend_operation_advanced || !other.ext_blend_operation_advanced) && (self.ext_border_color_swizzle || !other.ext_border_color_swizzle) && (self.ext_buffer_device_address || !other.ext_buffer_device_address) && (self.ext_calibrated_timestamps || !other.ext_calibrated_timestamps) && (self.ext_color_write_enable || !other.ext_color_write_enable) && (self.ext_conditional_rendering || !other.ext_conditional_rendering) && (self.ext_conservative_rasterization || !other.ext_conservative_rasterization) && (self.ext_custom_border_color || !other.ext_custom_border_color) && (self.ext_debug_marker || !other.ext_debug_marker) && (self.ext_depth_clamp_zero_one || !other.ext_depth_clamp_zero_one) && (self.ext_depth_clip_control || !other.ext_depth_clip_control) && (self.ext_depth_clip_enable || !other.ext_depth_clip_enable) && (self.ext_depth_range_unrestricted || !other.ext_depth_range_unrestricted) && (self.ext_descriptor_buffer || !other.ext_descriptor_buffer) && (self.ext_descriptor_indexing || !other.ext_descriptor_indexing) && (self.ext_device_address_binding_report || !other.ext_device_address_binding_report) && (self.ext_device_fault || !other.ext_device_fault) && (self.ext_device_memory_report || !other.ext_device_memory_report) && (self.ext_discard_rectangles || !other.ext_discard_rectangles) && (self.ext_display_control || !other.ext_display_control) && (self.ext_extended_dynamic_state || !other.ext_extended_dynamic_state) && (self.ext_extended_dynamic_state2 || !other.ext_extended_dynamic_state2) && (self.ext_extended_dynamic_state3 || !other.ext_extended_dynamic_state3) && (self.ext_external_memory_dma_buf || !other.ext_external_memory_dma_buf) && (self.ext_external_memory_host || !other.ext_external_memory_host) && (self.ext_filter_cubic || !other.ext_filter_cubic) && (self.ext_fragment_density_map || !other.ext_fragment_density_map) && (self.ext_fragment_density_map2 || !other.ext_fragment_density_map2) && (self.ext_fragment_shader_interlock || !other.ext_fragment_shader_interlock) && (self.ext_full_screen_exclusive || !other.ext_full_screen_exclusive) && (self.ext_global_priority || !other.ext_global_priority) && (self.ext_global_priority_query || !other.ext_global_priority_query) && (self.ext_graphics_pipeline_library || !other.ext_graphics_pipeline_library) && (self.ext_hdr_metadata || !other.ext_hdr_metadata) && (self.ext_host_query_reset || !other.ext_host_query_reset) && (self.ext_image_2d_view_of_3d || !other.ext_image_2d_view_of_3d) && (self.ext_image_compression_control || !other.ext_image_compression_control) && (self.ext_image_compression_control_swapchain || !other.ext_image_compression_control_swapchain) && (self.ext_image_drm_format_modifier || !other.ext_image_drm_format_modifier) && (self.ext_image_robustness || !other.ext_image_robustness) && (self.ext_image_view_min_lod || !other.ext_image_view_min_lod) && (self.ext_index_type_uint8 || !other.ext_index_type_uint8) && (self.ext_inline_uniform_block || !other.ext_inline_uniform_block) && (self.ext_legacy_dithering || !other.ext_legacy_dithering) && (self.ext_line_rasterization || !other.ext_line_rasterization) && (self.ext_load_store_op_none || !other.ext_load_store_op_none) && (self.ext_memory_budget || !other.ext_memory_budget) && (self.ext_memory_priority || !other.ext_memory_priority) && (self.ext_mesh_shader || !other.ext_mesh_shader) && (self.ext_metal_objects || !other.ext_metal_objects) && (self.ext_multi_draw || !other.ext_multi_draw) && (self.ext_multisampled_render_to_single_sampled || !other.ext_multisampled_render_to_single_sampled) && (self.ext_mutable_descriptor_type || !other.ext_mutable_descriptor_type) && (self.ext_non_seamless_cube_map || !other.ext_non_seamless_cube_map) && (self.ext_opacity_micromap || !other.ext_opacity_micromap) && (self.ext_pageable_device_local_memory || !other.ext_pageable_device_local_memory) && (self.ext_pci_bus_info || !other.ext_pci_bus_info) && (self.ext_physical_device_drm || !other.ext_physical_device_drm) && (self.ext_pipeline_creation_cache_control || !other.ext_pipeline_creation_cache_control) && (self.ext_pipeline_creation_feedback || !other.ext_pipeline_creation_feedback) && (self.ext_pipeline_properties || !other.ext_pipeline_properties) && (self.ext_pipeline_protected_access || !other.ext_pipeline_protected_access) && (self.ext_pipeline_robustness || !other.ext_pipeline_robustness) && (self.ext_post_depth_coverage || !other.ext_post_depth_coverage) && (self.ext_primitive_topology_list_restart || !other.ext_primitive_topology_list_restart) && (self.ext_primitives_generated_query || !other.ext_primitives_generated_query) && (self.ext_private_data || !other.ext_private_data) && (self.ext_provoking_vertex || !other.ext_provoking_vertex) && (self.ext_queue_family_foreign || !other.ext_queue_family_foreign) && (self.ext_rasterization_order_attachment_access || !other.ext_rasterization_order_attachment_access) && (self.ext_rgba10x6_formats || !other.ext_rgba10x6_formats) && (self.ext_robustness2 || !other.ext_robustness2) && (self.ext_sample_locations || !other.ext_sample_locations) && (self.ext_sampler_filter_minmax || !other.ext_sampler_filter_minmax) && (self.ext_scalar_block_layout || !other.ext_scalar_block_layout) && (self.ext_separate_stencil_usage || !other.ext_separate_stencil_usage) && (self.ext_shader_atomic_float || !other.ext_shader_atomic_float) && (self.ext_shader_atomic_float2 || !other.ext_shader_atomic_float2) && (self.ext_shader_demote_to_helper_invocation || !other.ext_shader_demote_to_helper_invocation) && (self.ext_shader_image_atomic_int64 || !other.ext_shader_image_atomic_int64) && (self.ext_shader_module_identifier || !other.ext_shader_module_identifier) && (self.ext_shader_stencil_export || !other.ext_shader_stencil_export) && (self.ext_shader_subgroup_ballot || !other.ext_shader_subgroup_ballot) && (self.ext_shader_subgroup_vote || !other.ext_shader_subgroup_vote) && (self.ext_shader_viewport_index_layer || !other.ext_shader_viewport_index_layer) && (self.ext_subgroup_size_control || !other.ext_subgroup_size_control) && (self.ext_subpass_merge_feedback || !other.ext_subpass_merge_feedback) && (self.ext_swapchain_maintenance1 || !other.ext_swapchain_maintenance1) && (self.ext_texel_buffer_alignment || !other.ext_texel_buffer_alignment) && (self.ext_texture_compression_astc_hdr || !other.ext_texture_compression_astc_hdr) && (self.ext_tooling_info || !other.ext_tooling_info) && (self.ext_transform_feedback || !other.ext_transform_feedback) && (self.ext_validation_cache || !other.ext_validation_cache) && (self.ext_vertex_attribute_divisor || !other.ext_vertex_attribute_divisor) && (self.ext_vertex_input_dynamic_state || !other.ext_vertex_input_dynamic_state) && (self.ext_video_encode_h264 || !other.ext_video_encode_h264) && (self.ext_video_encode_h265 || !other.ext_video_encode_h265) && (self.ext_ycbcr_2plane_444_formats || !other.ext_ycbcr_2plane_444_formats) && (self.ext_ycbcr_image_arrays || !other.ext_ycbcr_image_arrays) && (self.amd_buffer_marker || !other.amd_buffer_marker) && (self.amd_device_coherent_memory || !other.amd_device_coherent_memory) && (self.amd_display_native_hdr || !other.amd_display_native_hdr) && (self.amd_draw_indirect_count || !other.amd_draw_indirect_count) && (self.amd_gcn_shader || !other.amd_gcn_shader) && (self.amd_gpu_shader_half_float || !other.amd_gpu_shader_half_float) && (self.amd_gpu_shader_int16 || !other.amd_gpu_shader_int16) && (self.amd_memory_overallocation_behavior || !other.amd_memory_overallocation_behavior) && (self.amd_mixed_attachment_samples || !other.amd_mixed_attachment_samples) && (self.amd_pipeline_compiler_control || !other.amd_pipeline_compiler_control) && (self.amd_rasterization_order || !other.amd_rasterization_order) && (self.amd_shader_ballot || !other.amd_shader_ballot) && (self.amd_shader_core_properties || !other.amd_shader_core_properties) && (self.amd_shader_core_properties2 || !other.amd_shader_core_properties2) && (self.amd_shader_early_and_late_fragment_tests || !other.amd_shader_early_and_late_fragment_tests) && (self.amd_shader_explicit_vertex_parameter || !other.amd_shader_explicit_vertex_parameter) && (self.amd_shader_fragment_mask || !other.amd_shader_fragment_mask) && (self.amd_shader_image_load_store_lod || !other.amd_shader_image_load_store_lod) && (self.amd_shader_info || !other.amd_shader_info) && (self.amd_shader_trinary_minmax || !other.amd_shader_trinary_minmax) && (self.amd_texture_gather_bias_lod || !other.amd_texture_gather_bias_lod) && (self.android_external_memory_android_hardware_buffer || !other.android_external_memory_android_hardware_buffer) && (self.arm_rasterization_order_attachment_access || !other.arm_rasterization_order_attachment_access) && (self.arm_shader_core_builtins || !other.arm_shader_core_builtins) && (self.fuchsia_buffer_collection || !other.fuchsia_buffer_collection) && (self.fuchsia_external_memory || !other.fuchsia_external_memory) && (self.fuchsia_external_semaphore || !other.fuchsia_external_semaphore) && (self.ggp_frame_token || !other.ggp_frame_token) && (self.google_decorate_string || !other.google_decorate_string) && (self.google_display_timing || !other.google_display_timing) && (self.google_hlsl_functionality1 || !other.google_hlsl_functionality1) && (self.google_user_type || !other.google_user_type) && (self.huawei_invocation_mask || !other.huawei_invocation_mask) && (self.huawei_subpass_shading || !other.huawei_subpass_shading) && (self.img_filter_cubic || !other.img_filter_cubic) && (self.img_format_pvrtc || !other.img_format_pvrtc) && (self.intel_performance_query || !other.intel_performance_query) && (self.intel_shader_integer_functions2 || !other.intel_shader_integer_functions2) && (self.nvx_binary_import || !other.nvx_binary_import) && (self.nvx_image_view_handle || !other.nvx_image_view_handle) && (self.nvx_multiview_per_view_attributes || !other.nvx_multiview_per_view_attributes) && (self.nv_acquire_winrt_display || !other.nv_acquire_winrt_display) && (self.nv_clip_space_w_scaling || !other.nv_clip_space_w_scaling) && (self.nv_compute_shader_derivatives || !other.nv_compute_shader_derivatives) && (self.nv_cooperative_matrix || !other.nv_cooperative_matrix) && (self.nv_copy_memory_indirect || !other.nv_copy_memory_indirect) && (self.nv_corner_sampled_image || !other.nv_corner_sampled_image) && (self.nv_coverage_reduction_mode || !other.nv_coverage_reduction_mode) && (self.nv_dedicated_allocation || !other.nv_dedicated_allocation) && (self.nv_dedicated_allocation_image_aliasing || !other.nv_dedicated_allocation_image_aliasing) && (self.nv_device_diagnostic_checkpoints || !other.nv_device_diagnostic_checkpoints) && (self.nv_device_diagnostics_config || !other.nv_device_diagnostics_config) && (self.nv_device_generated_commands || !other.nv_device_generated_commands) && (self.nv_external_memory || !other.nv_external_memory) && (self.nv_external_memory_rdma || !other.nv_external_memory_rdma) && (self.nv_external_memory_win32 || !other.nv_external_memory_win32) && (self.nv_fill_rectangle || !other.nv_fill_rectangle) && (self.nv_fragment_coverage_to_color || !other.nv_fragment_coverage_to_color) && (self.nv_fragment_shader_barycentric || !other.nv_fragment_shader_barycentric) && (self.nv_fragment_shading_rate_enums || !other.nv_fragment_shading_rate_enums) && (self.nv_framebuffer_mixed_samples || !other.nv_framebuffer_mixed_samples) && (self.nv_geometry_shader_passthrough || !other.nv_geometry_shader_passthrough) && (self.nv_glsl_shader || !other.nv_glsl_shader) && (self.nv_inherited_viewport_scissor || !other.nv_inherited_viewport_scissor) && (self.nv_linear_color_attachment || !other.nv_linear_color_attachment) && (self.nv_memory_decompression || !other.nv_memory_decompression) && (self.nv_mesh_shader || !other.nv_mesh_shader) && (self.nv_optical_flow || !other.nv_optical_flow) && (self.nv_present_barrier || !other.nv_present_barrier) && (self.nv_ray_tracing || !other.nv_ray_tracing) && (self.nv_ray_tracing_invocation_reorder || !other.nv_ray_tracing_invocation_reorder) && (self.nv_ray_tracing_motion_blur || !other.nv_ray_tracing_motion_blur) && (self.nv_representative_fragment_test || !other.nv_representative_fragment_test) && (self.nv_sample_mask_override_coverage || !other.nv_sample_mask_override_coverage) && (self.nv_scissor_exclusive || !other.nv_scissor_exclusive) && (self.nv_shader_image_footprint || !other.nv_shader_image_footprint) && (self.nv_shader_sm_builtins || !other.nv_shader_sm_builtins) && (self.nv_shader_subgroup_partitioned || !other.nv_shader_subgroup_partitioned) && (self.nv_shading_rate_image || !other.nv_shading_rate_image) && (self.nv_viewport_array2 || !other.nv_viewport_array2) && (self.nv_viewport_swizzle || !other.nv_viewport_swizzle) && (self.nv_win32_keyed_mutex || !other.nv_win32_keyed_mutex) && (self.qcom_fragment_density_map_offset || !other.qcom_fragment_density_map_offset) && (self.qcom_image_processing || !other.qcom_image_processing) && (self.qcom_multiview_per_view_viewports || !other.qcom_multiview_per_view_viewports) && (self.qcom_render_pass_shader_resolve || !other.qcom_render_pass_shader_resolve) && (self.qcom_render_pass_store_ops || !other.qcom_render_pass_store_ops) && (self.qcom_render_pass_transform || !other.qcom_render_pass_transform) && (self.qcom_rotated_copy_commands || !other.qcom_rotated_copy_commands) && (self.qcom_tile_properties || !other.qcom_tile_properties) && (self.sec_amigo_profiling || !other.sec_amigo_profiling) && (self.valve_descriptor_set_host_mapping || !other.valve_descriptor_set_host_mapping) && (self.valve_mutable_descriptor_type || !other.valve_mutable_descriptor_type) } #[doc = r" Returns whether all members in `other` are set in `self`."] #[deprecated(since = "0.31.0", note = "Use `contains` instead.")] #[inline] pub const fn is_superset_of(&self, other: &Self) -> bool { self.contains(other) } #[doc = r" Returns the union of `self` and `other`."] #[inline] pub const fn union(&self, other: &Self) -> Self { Self { khr_16bit_storage: self.khr_16bit_storage || other.khr_16bit_storage, khr_8bit_storage: self.khr_8bit_storage || other.khr_8bit_storage, khr_acceleration_structure: self.khr_acceleration_structure || other.khr_acceleration_structure, khr_bind_memory2: self.khr_bind_memory2 || other.khr_bind_memory2, khr_buffer_device_address: self.khr_buffer_device_address || other.khr_buffer_device_address, khr_copy_commands2: self.khr_copy_commands2 || other.khr_copy_commands2, khr_create_renderpass2: self.khr_create_renderpass2 || other.khr_create_renderpass2, khr_dedicated_allocation: self.khr_dedicated_allocation || other.khr_dedicated_allocation, khr_deferred_host_operations: self.khr_deferred_host_operations || other.khr_deferred_host_operations, khr_depth_stencil_resolve: self.khr_depth_stencil_resolve || other.khr_depth_stencil_resolve, khr_descriptor_update_template: self.khr_descriptor_update_template || other.khr_descriptor_update_template, khr_device_group: self.khr_device_group || other.khr_device_group, khr_display_swapchain: self.khr_display_swapchain || other.khr_display_swapchain, khr_draw_indirect_count: self.khr_draw_indirect_count || other.khr_draw_indirect_count, khr_driver_properties: self.khr_driver_properties || other.khr_driver_properties, khr_dynamic_rendering: self.khr_dynamic_rendering || other.khr_dynamic_rendering, khr_external_fence: self.khr_external_fence || other.khr_external_fence, khr_external_fence_fd: self.khr_external_fence_fd || other.khr_external_fence_fd, khr_external_fence_win32: self.khr_external_fence_win32 || other.khr_external_fence_win32, khr_external_memory: self.khr_external_memory || other.khr_external_memory, khr_external_memory_fd: self.khr_external_memory_fd || other.khr_external_memory_fd, khr_external_memory_win32: self.khr_external_memory_win32 || other.khr_external_memory_win32, khr_external_semaphore: self.khr_external_semaphore || other.khr_external_semaphore, khr_external_semaphore_fd: self.khr_external_semaphore_fd || other.khr_external_semaphore_fd, khr_external_semaphore_win32: self.khr_external_semaphore_win32 || other.khr_external_semaphore_win32, khr_format_feature_flags2: self.khr_format_feature_flags2 || other.khr_format_feature_flags2, khr_fragment_shader_barycentric: self.khr_fragment_shader_barycentric || other.khr_fragment_shader_barycentric, khr_fragment_shading_rate: self.khr_fragment_shading_rate || other.khr_fragment_shading_rate, khr_get_memory_requirements2: self.khr_get_memory_requirements2 || other.khr_get_memory_requirements2, khr_global_priority: self.khr_global_priority || other.khr_global_priority, khr_image_format_list: self.khr_image_format_list || other.khr_image_format_list, khr_imageless_framebuffer: self.khr_imageless_framebuffer || other.khr_imageless_framebuffer, khr_incremental_present: self.khr_incremental_present || other.khr_incremental_present, khr_maintenance1: self.khr_maintenance1 || other.khr_maintenance1, khr_maintenance2: self.khr_maintenance2 || other.khr_maintenance2, khr_maintenance3: self.khr_maintenance3 || other.khr_maintenance3, khr_maintenance4: self.khr_maintenance4 || other.khr_maintenance4, khr_multiview: self.khr_multiview || other.khr_multiview, khr_performance_query: self.khr_performance_query || other.khr_performance_query, khr_pipeline_executable_properties: self.khr_pipeline_executable_properties || other.khr_pipeline_executable_properties, khr_pipeline_library: self.khr_pipeline_library || other.khr_pipeline_library, khr_portability_subset: self.khr_portability_subset || other.khr_portability_subset, khr_present_id: self.khr_present_id || other.khr_present_id, khr_present_wait: self.khr_present_wait || other.khr_present_wait, khr_push_descriptor: self.khr_push_descriptor || other.khr_push_descriptor, khr_ray_query: self.khr_ray_query || other.khr_ray_query, khr_ray_tracing_maintenance1: self.khr_ray_tracing_maintenance1 || other.khr_ray_tracing_maintenance1, khr_ray_tracing_pipeline: self.khr_ray_tracing_pipeline || other.khr_ray_tracing_pipeline, khr_relaxed_block_layout: self.khr_relaxed_block_layout || other.khr_relaxed_block_layout, khr_sampler_mirror_clamp_to_edge: self.khr_sampler_mirror_clamp_to_edge || other.khr_sampler_mirror_clamp_to_edge, khr_sampler_ycbcr_conversion: self.khr_sampler_ycbcr_conversion || other.khr_sampler_ycbcr_conversion, khr_separate_depth_stencil_layouts: self.khr_separate_depth_stencil_layouts || other.khr_separate_depth_stencil_layouts, khr_shader_atomic_int64: self.khr_shader_atomic_int64 || other.khr_shader_atomic_int64, khr_shader_clock: self.khr_shader_clock || other.khr_shader_clock, khr_shader_draw_parameters: self.khr_shader_draw_parameters || other.khr_shader_draw_parameters, khr_shader_float16_int8: self.khr_shader_float16_int8 || other.khr_shader_float16_int8, khr_shader_float_controls: self.khr_shader_float_controls || other.khr_shader_float_controls, khr_shader_integer_dot_product: self.khr_shader_integer_dot_product || other.khr_shader_integer_dot_product, khr_shader_non_semantic_info: self.khr_shader_non_semantic_info || other.khr_shader_non_semantic_info, khr_shader_subgroup_extended_types: self.khr_shader_subgroup_extended_types || other.khr_shader_subgroup_extended_types, khr_shader_subgroup_uniform_control_flow: self.khr_shader_subgroup_uniform_control_flow || other.khr_shader_subgroup_uniform_control_flow, khr_shader_terminate_invocation: self.khr_shader_terminate_invocation || other.khr_shader_terminate_invocation, khr_shared_presentable_image: self.khr_shared_presentable_image || other.khr_shared_presentable_image, khr_spirv_1_4: self.khr_spirv_1_4 || other.khr_spirv_1_4, khr_storage_buffer_storage_class: self.khr_storage_buffer_storage_class || other.khr_storage_buffer_storage_class, khr_swapchain: self.khr_swapchain || other.khr_swapchain, khr_swapchain_mutable_format: self.khr_swapchain_mutable_format || other.khr_swapchain_mutable_format, khr_synchronization2: self.khr_synchronization2 || other.khr_synchronization2, khr_timeline_semaphore: self.khr_timeline_semaphore || other.khr_timeline_semaphore, khr_uniform_buffer_standard_layout: self.khr_uniform_buffer_standard_layout || other.khr_uniform_buffer_standard_layout, khr_variable_pointers: self.khr_variable_pointers || other.khr_variable_pointers, khr_video_decode_h264: self.khr_video_decode_h264 || other.khr_video_decode_h264, khr_video_decode_h265: self.khr_video_decode_h265 || other.khr_video_decode_h265, khr_video_decode_queue: self.khr_video_decode_queue || other.khr_video_decode_queue, khr_video_encode_queue: self.khr_video_encode_queue || other.khr_video_encode_queue, khr_video_queue: self.khr_video_queue || other.khr_video_queue, khr_vulkan_memory_model: self.khr_vulkan_memory_model || other.khr_vulkan_memory_model, khr_win32_keyed_mutex: self.khr_win32_keyed_mutex || other.khr_win32_keyed_mutex, khr_workgroup_memory_explicit_layout: self.khr_workgroup_memory_explicit_layout || other.khr_workgroup_memory_explicit_layout, khr_zero_initialize_workgroup_memory: self.khr_zero_initialize_workgroup_memory || other.khr_zero_initialize_workgroup_memory, ext_4444_formats: self.ext_4444_formats || other.ext_4444_formats, ext_astc_decode_mode: self.ext_astc_decode_mode || other.ext_astc_decode_mode, ext_attachment_feedback_loop_layout: self.ext_attachment_feedback_loop_layout || other.ext_attachment_feedback_loop_layout, ext_blend_operation_advanced: self.ext_blend_operation_advanced || other.ext_blend_operation_advanced, ext_border_color_swizzle: self.ext_border_color_swizzle || other.ext_border_color_swizzle, ext_buffer_device_address: self.ext_buffer_device_address || other.ext_buffer_device_address, ext_calibrated_timestamps: self.ext_calibrated_timestamps || other.ext_calibrated_timestamps, ext_color_write_enable: self.ext_color_write_enable || other.ext_color_write_enable, ext_conditional_rendering: self.ext_conditional_rendering || other.ext_conditional_rendering, ext_conservative_rasterization: self.ext_conservative_rasterization || other.ext_conservative_rasterization, ext_custom_border_color: self.ext_custom_border_color || other.ext_custom_border_color, ext_debug_marker: self.ext_debug_marker || other.ext_debug_marker, ext_depth_clamp_zero_one: self.ext_depth_clamp_zero_one || other.ext_depth_clamp_zero_one, ext_depth_clip_control: self.ext_depth_clip_control || other.ext_depth_clip_control, ext_depth_clip_enable: self.ext_depth_clip_enable || other.ext_depth_clip_enable, ext_depth_range_unrestricted: self.ext_depth_range_unrestricted || other.ext_depth_range_unrestricted, ext_descriptor_buffer: self.ext_descriptor_buffer || other.ext_descriptor_buffer, ext_descriptor_indexing: self.ext_descriptor_indexing || other.ext_descriptor_indexing, ext_device_address_binding_report: self.ext_device_address_binding_report || other.ext_device_address_binding_report, ext_device_fault: self.ext_device_fault || other.ext_device_fault, ext_device_memory_report: self.ext_device_memory_report || other.ext_device_memory_report, ext_discard_rectangles: self.ext_discard_rectangles || other.ext_discard_rectangles, ext_display_control: self.ext_display_control || other.ext_display_control, ext_extended_dynamic_state: self.ext_extended_dynamic_state || other.ext_extended_dynamic_state, ext_extended_dynamic_state2: self.ext_extended_dynamic_state2 || other.ext_extended_dynamic_state2, ext_extended_dynamic_state3: self.ext_extended_dynamic_state3 || other.ext_extended_dynamic_state3, ext_external_memory_dma_buf: self.ext_external_memory_dma_buf || other.ext_external_memory_dma_buf, ext_external_memory_host: self.ext_external_memory_host || other.ext_external_memory_host, ext_filter_cubic: self.ext_filter_cubic || other.ext_filter_cubic, ext_fragment_density_map: self.ext_fragment_density_map || other.ext_fragment_density_map, ext_fragment_density_map2: self.ext_fragment_density_map2 || other.ext_fragment_density_map2, ext_fragment_shader_interlock: self.ext_fragment_shader_interlock || other.ext_fragment_shader_interlock, ext_full_screen_exclusive: self.ext_full_screen_exclusive || other.ext_full_screen_exclusive, ext_global_priority: self.ext_global_priority || other.ext_global_priority, ext_global_priority_query: self.ext_global_priority_query || other.ext_global_priority_query, ext_graphics_pipeline_library: self.ext_graphics_pipeline_library || other.ext_graphics_pipeline_library, ext_hdr_metadata: self.ext_hdr_metadata || other.ext_hdr_metadata, ext_host_query_reset: self.ext_host_query_reset || other.ext_host_query_reset, ext_image_2d_view_of_3d: self.ext_image_2d_view_of_3d || other.ext_image_2d_view_of_3d, ext_image_compression_control: self.ext_image_compression_control || other.ext_image_compression_control, ext_image_compression_control_swapchain: self.ext_image_compression_control_swapchain || other.ext_image_compression_control_swapchain, ext_image_drm_format_modifier: self.ext_image_drm_format_modifier || other.ext_image_drm_format_modifier, ext_image_robustness: self.ext_image_robustness || other.ext_image_robustness, ext_image_view_min_lod: self.ext_image_view_min_lod || other.ext_image_view_min_lod, ext_index_type_uint8: self.ext_index_type_uint8 || other.ext_index_type_uint8, ext_inline_uniform_block: self.ext_inline_uniform_block || other.ext_inline_uniform_block, ext_legacy_dithering: self.ext_legacy_dithering || other.ext_legacy_dithering, ext_line_rasterization: self.ext_line_rasterization || other.ext_line_rasterization, ext_load_store_op_none: self.ext_load_store_op_none || other.ext_load_store_op_none, ext_memory_budget: self.ext_memory_budget || other.ext_memory_budget, ext_memory_priority: self.ext_memory_priority || other.ext_memory_priority, ext_mesh_shader: self.ext_mesh_shader || other.ext_mesh_shader, ext_metal_objects: self.ext_metal_objects || other.ext_metal_objects, ext_multi_draw: self.ext_multi_draw || other.ext_multi_draw, ext_multisampled_render_to_single_sampled: self .ext_multisampled_render_to_single_sampled || other.ext_multisampled_render_to_single_sampled, ext_mutable_descriptor_type: self.ext_mutable_descriptor_type || other.ext_mutable_descriptor_type, ext_non_seamless_cube_map: self.ext_non_seamless_cube_map || other.ext_non_seamless_cube_map, ext_opacity_micromap: self.ext_opacity_micromap || other.ext_opacity_micromap, ext_pageable_device_local_memory: self.ext_pageable_device_local_memory || other.ext_pageable_device_local_memory, ext_pci_bus_info: self.ext_pci_bus_info || other.ext_pci_bus_info, ext_physical_device_drm: self.ext_physical_device_drm || other.ext_physical_device_drm, ext_pipeline_creation_cache_control: self.ext_pipeline_creation_cache_control || other.ext_pipeline_creation_cache_control, ext_pipeline_creation_feedback: self.ext_pipeline_creation_feedback || other.ext_pipeline_creation_feedback, ext_pipeline_properties: self.ext_pipeline_properties || other.ext_pipeline_properties, ext_pipeline_protected_access: self.ext_pipeline_protected_access || other.ext_pipeline_protected_access, ext_pipeline_robustness: self.ext_pipeline_robustness || other.ext_pipeline_robustness, ext_post_depth_coverage: self.ext_post_depth_coverage || other.ext_post_depth_coverage, ext_primitive_topology_list_restart: self.ext_primitive_topology_list_restart || other.ext_primitive_topology_list_restart, ext_primitives_generated_query: self.ext_primitives_generated_query || other.ext_primitives_generated_query, ext_private_data: self.ext_private_data || other.ext_private_data, ext_provoking_vertex: self.ext_provoking_vertex || other.ext_provoking_vertex, ext_queue_family_foreign: self.ext_queue_family_foreign || other.ext_queue_family_foreign, ext_rasterization_order_attachment_access: self .ext_rasterization_order_attachment_access || other.ext_rasterization_order_attachment_access, ext_rgba10x6_formats: self.ext_rgba10x6_formats || other.ext_rgba10x6_formats, ext_robustness2: self.ext_robustness2 || other.ext_robustness2, ext_sample_locations: self.ext_sample_locations || other.ext_sample_locations, ext_sampler_filter_minmax: self.ext_sampler_filter_minmax || other.ext_sampler_filter_minmax, ext_scalar_block_layout: self.ext_scalar_block_layout || other.ext_scalar_block_layout, ext_separate_stencil_usage: self.ext_separate_stencil_usage || other.ext_separate_stencil_usage, ext_shader_atomic_float: self.ext_shader_atomic_float || other.ext_shader_atomic_float, ext_shader_atomic_float2: self.ext_shader_atomic_float2 || other.ext_shader_atomic_float2, ext_shader_demote_to_helper_invocation: self.ext_shader_demote_to_helper_invocation || other.ext_shader_demote_to_helper_invocation, ext_shader_image_atomic_int64: self.ext_shader_image_atomic_int64 || other.ext_shader_image_atomic_int64, ext_shader_module_identifier: self.ext_shader_module_identifier || other.ext_shader_module_identifier, ext_shader_stencil_export: self.ext_shader_stencil_export || other.ext_shader_stencil_export, ext_shader_subgroup_ballot: self.ext_shader_subgroup_ballot || other.ext_shader_subgroup_ballot, ext_shader_subgroup_vote: self.ext_shader_subgroup_vote || other.ext_shader_subgroup_vote, ext_shader_viewport_index_layer: self.ext_shader_viewport_index_layer || other.ext_shader_viewport_index_layer, ext_subgroup_size_control: self.ext_subgroup_size_control || other.ext_subgroup_size_control, ext_subpass_merge_feedback: self.ext_subpass_merge_feedback || other.ext_subpass_merge_feedback, ext_swapchain_maintenance1: self.ext_swapchain_maintenance1 || other.ext_swapchain_maintenance1, ext_texel_buffer_alignment: self.ext_texel_buffer_alignment || other.ext_texel_buffer_alignment, ext_texture_compression_astc_hdr: self.ext_texture_compression_astc_hdr || other.ext_texture_compression_astc_hdr, ext_tooling_info: self.ext_tooling_info || other.ext_tooling_info, ext_transform_feedback: self.ext_transform_feedback || other.ext_transform_feedback, ext_validation_cache: self.ext_validation_cache || other.ext_validation_cache, ext_vertex_attribute_divisor: self.ext_vertex_attribute_divisor || other.ext_vertex_attribute_divisor, ext_vertex_input_dynamic_state: self.ext_vertex_input_dynamic_state || other.ext_vertex_input_dynamic_state, ext_video_encode_h264: self.ext_video_encode_h264 || other.ext_video_encode_h264, ext_video_encode_h265: self.ext_video_encode_h265 || other.ext_video_encode_h265, ext_ycbcr_2plane_444_formats: self.ext_ycbcr_2plane_444_formats || other.ext_ycbcr_2plane_444_formats, ext_ycbcr_image_arrays: self.ext_ycbcr_image_arrays || other.ext_ycbcr_image_arrays, amd_buffer_marker: self.amd_buffer_marker || other.amd_buffer_marker, amd_device_coherent_memory: self.amd_device_coherent_memory || other.amd_device_coherent_memory, amd_display_native_hdr: self.amd_display_native_hdr || other.amd_display_native_hdr, amd_draw_indirect_count: self.amd_draw_indirect_count || other.amd_draw_indirect_count, amd_gcn_shader: self.amd_gcn_shader || other.amd_gcn_shader, amd_gpu_shader_half_float: self.amd_gpu_shader_half_float || other.amd_gpu_shader_half_float, amd_gpu_shader_int16: self.amd_gpu_shader_int16 || other.amd_gpu_shader_int16, amd_memory_overallocation_behavior: self.amd_memory_overallocation_behavior || other.amd_memory_overallocation_behavior, amd_mixed_attachment_samples: self.amd_mixed_attachment_samples || other.amd_mixed_attachment_samples, amd_pipeline_compiler_control: self.amd_pipeline_compiler_control || other.amd_pipeline_compiler_control, amd_rasterization_order: self.amd_rasterization_order || other.amd_rasterization_order, amd_shader_ballot: self.amd_shader_ballot || other.amd_shader_ballot, amd_shader_core_properties: self.amd_shader_core_properties || other.amd_shader_core_properties, amd_shader_core_properties2: self.amd_shader_core_properties2 || other.amd_shader_core_properties2, amd_shader_early_and_late_fragment_tests: self.amd_shader_early_and_late_fragment_tests || other.amd_shader_early_and_late_fragment_tests, amd_shader_explicit_vertex_parameter: self.amd_shader_explicit_vertex_parameter || other.amd_shader_explicit_vertex_parameter, amd_shader_fragment_mask: self.amd_shader_fragment_mask || other.amd_shader_fragment_mask, amd_shader_image_load_store_lod: self.amd_shader_image_load_store_lod || other.amd_shader_image_load_store_lod, amd_shader_info: self.amd_shader_info || other.amd_shader_info, amd_shader_trinary_minmax: self.amd_shader_trinary_minmax || other.amd_shader_trinary_minmax, amd_texture_gather_bias_lod: self.amd_texture_gather_bias_lod || other.amd_texture_gather_bias_lod, android_external_memory_android_hardware_buffer: self .android_external_memory_android_hardware_buffer || other.android_external_memory_android_hardware_buffer, arm_rasterization_order_attachment_access: self .arm_rasterization_order_attachment_access || other.arm_rasterization_order_attachment_access, arm_shader_core_builtins: self.arm_shader_core_builtins || other.arm_shader_core_builtins, fuchsia_buffer_collection: self.fuchsia_buffer_collection || other.fuchsia_buffer_collection, fuchsia_external_memory: self.fuchsia_external_memory || other.fuchsia_external_memory, fuchsia_external_semaphore: self.fuchsia_external_semaphore || other.fuchsia_external_semaphore, ggp_frame_token: self.ggp_frame_token || other.ggp_frame_token, google_decorate_string: self.google_decorate_string || other.google_decorate_string, google_display_timing: self.google_display_timing || other.google_display_timing, google_hlsl_functionality1: self.google_hlsl_functionality1 || other.google_hlsl_functionality1, google_user_type: self.google_user_type || other.google_user_type, huawei_invocation_mask: self.huawei_invocation_mask || other.huawei_invocation_mask, huawei_subpass_shading: self.huawei_subpass_shading || other.huawei_subpass_shading, img_filter_cubic: self.img_filter_cubic || other.img_filter_cubic, img_format_pvrtc: self.img_format_pvrtc || other.img_format_pvrtc, intel_performance_query: self.intel_performance_query || other.intel_performance_query, intel_shader_integer_functions2: self.intel_shader_integer_functions2 || other.intel_shader_integer_functions2, nvx_binary_import: self.nvx_binary_import || other.nvx_binary_import, nvx_image_view_handle: self.nvx_image_view_handle || other.nvx_image_view_handle, nvx_multiview_per_view_attributes: self.nvx_multiview_per_view_attributes || other.nvx_multiview_per_view_attributes, nv_acquire_winrt_display: self.nv_acquire_winrt_display || other.nv_acquire_winrt_display, nv_clip_space_w_scaling: self.nv_clip_space_w_scaling || other.nv_clip_space_w_scaling, nv_compute_shader_derivatives: self.nv_compute_shader_derivatives || other.nv_compute_shader_derivatives, nv_cooperative_matrix: self.nv_cooperative_matrix || other.nv_cooperative_matrix, nv_copy_memory_indirect: self.nv_copy_memory_indirect || other.nv_copy_memory_indirect, nv_corner_sampled_image: self.nv_corner_sampled_image || other.nv_corner_sampled_image, nv_coverage_reduction_mode: self.nv_coverage_reduction_mode || other.nv_coverage_reduction_mode, nv_dedicated_allocation: self.nv_dedicated_allocation || other.nv_dedicated_allocation, nv_dedicated_allocation_image_aliasing: self.nv_dedicated_allocation_image_aliasing || other.nv_dedicated_allocation_image_aliasing, nv_device_diagnostic_checkpoints: self.nv_device_diagnostic_checkpoints || other.nv_device_diagnostic_checkpoints, nv_device_diagnostics_config: self.nv_device_diagnostics_config || other.nv_device_diagnostics_config, nv_device_generated_commands: self.nv_device_generated_commands || other.nv_device_generated_commands, nv_external_memory: self.nv_external_memory || other.nv_external_memory, nv_external_memory_rdma: self.nv_external_memory_rdma || other.nv_external_memory_rdma, nv_external_memory_win32: self.nv_external_memory_win32 || other.nv_external_memory_win32, nv_fill_rectangle: self.nv_fill_rectangle || other.nv_fill_rectangle, nv_fragment_coverage_to_color: self.nv_fragment_coverage_to_color || other.nv_fragment_coverage_to_color, nv_fragment_shader_barycentric: self.nv_fragment_shader_barycentric || other.nv_fragment_shader_barycentric, nv_fragment_shading_rate_enums: self.nv_fragment_shading_rate_enums || other.nv_fragment_shading_rate_enums, nv_framebuffer_mixed_samples: self.nv_framebuffer_mixed_samples || other.nv_framebuffer_mixed_samples, nv_geometry_shader_passthrough: self.nv_geometry_shader_passthrough || other.nv_geometry_shader_passthrough, nv_glsl_shader: self.nv_glsl_shader || other.nv_glsl_shader, nv_inherited_viewport_scissor: self.nv_inherited_viewport_scissor || other.nv_inherited_viewport_scissor, nv_linear_color_attachment: self.nv_linear_color_attachment || other.nv_linear_color_attachment, nv_memory_decompression: self.nv_memory_decompression || other.nv_memory_decompression, nv_mesh_shader: self.nv_mesh_shader || other.nv_mesh_shader, nv_optical_flow: self.nv_optical_flow || other.nv_optical_flow, nv_present_barrier: self.nv_present_barrier || other.nv_present_barrier, nv_ray_tracing: self.nv_ray_tracing || other.nv_ray_tracing, nv_ray_tracing_invocation_reorder: self.nv_ray_tracing_invocation_reorder || other.nv_ray_tracing_invocation_reorder, nv_ray_tracing_motion_blur: self.nv_ray_tracing_motion_blur || other.nv_ray_tracing_motion_blur, nv_representative_fragment_test: self.nv_representative_fragment_test || other.nv_representative_fragment_test, nv_sample_mask_override_coverage: self.nv_sample_mask_override_coverage || other.nv_sample_mask_override_coverage, nv_scissor_exclusive: self.nv_scissor_exclusive || other.nv_scissor_exclusive, nv_shader_image_footprint: self.nv_shader_image_footprint || other.nv_shader_image_footprint, nv_shader_sm_builtins: self.nv_shader_sm_builtins || other.nv_shader_sm_builtins, nv_shader_subgroup_partitioned: self.nv_shader_subgroup_partitioned || other.nv_shader_subgroup_partitioned, nv_shading_rate_image: self.nv_shading_rate_image || other.nv_shading_rate_image, nv_viewport_array2: self.nv_viewport_array2 || other.nv_viewport_array2, nv_viewport_swizzle: self.nv_viewport_swizzle || other.nv_viewport_swizzle, nv_win32_keyed_mutex: self.nv_win32_keyed_mutex || other.nv_win32_keyed_mutex, qcom_fragment_density_map_offset: self.qcom_fragment_density_map_offset || other.qcom_fragment_density_map_offset, qcom_image_processing: self.qcom_image_processing || other.qcom_image_processing, qcom_multiview_per_view_viewports: self.qcom_multiview_per_view_viewports || other.qcom_multiview_per_view_viewports, qcom_render_pass_shader_resolve: self.qcom_render_pass_shader_resolve || other.qcom_render_pass_shader_resolve, qcom_render_pass_store_ops: self.qcom_render_pass_store_ops || other.qcom_render_pass_store_ops, qcom_render_pass_transform: self.qcom_render_pass_transform || other.qcom_render_pass_transform, qcom_rotated_copy_commands: self.qcom_rotated_copy_commands || other.qcom_rotated_copy_commands, qcom_tile_properties: self.qcom_tile_properties || other.qcom_tile_properties, sec_amigo_profiling: self.sec_amigo_profiling || other.sec_amigo_profiling, valve_descriptor_set_host_mapping: self.valve_descriptor_set_host_mapping || other.valve_descriptor_set_host_mapping, valve_mutable_descriptor_type: self.valve_mutable_descriptor_type || other.valve_mutable_descriptor_type, _ne: crate::NonExhaustive(()), } } #[doc = r" Returns the intersection of `self` and `other`."] #[inline] pub const fn intersection(&self, other: &Self) -> Self { Self { khr_16bit_storage: self.khr_16bit_storage && other.khr_16bit_storage, khr_8bit_storage: self.khr_8bit_storage && other.khr_8bit_storage, khr_acceleration_structure: self.khr_acceleration_structure && other.khr_acceleration_structure, khr_bind_memory2: self.khr_bind_memory2 && other.khr_bind_memory2, khr_buffer_device_address: self.khr_buffer_device_address && other.khr_buffer_device_address, khr_copy_commands2: self.khr_copy_commands2 && other.khr_copy_commands2, khr_create_renderpass2: self.khr_create_renderpass2 && other.khr_create_renderpass2, khr_dedicated_allocation: self.khr_dedicated_allocation && other.khr_dedicated_allocation, khr_deferred_host_operations: self.khr_deferred_host_operations && other.khr_deferred_host_operations, khr_depth_stencil_resolve: self.khr_depth_stencil_resolve && other.khr_depth_stencil_resolve, khr_descriptor_update_template: self.khr_descriptor_update_template && other.khr_descriptor_update_template, khr_device_group: self.khr_device_group && other.khr_device_group, khr_display_swapchain: self.khr_display_swapchain && other.khr_display_swapchain, khr_draw_indirect_count: self.khr_draw_indirect_count && other.khr_draw_indirect_count, khr_driver_properties: self.khr_driver_properties && other.khr_driver_properties, khr_dynamic_rendering: self.khr_dynamic_rendering && other.khr_dynamic_rendering, khr_external_fence: self.khr_external_fence && other.khr_external_fence, khr_external_fence_fd: self.khr_external_fence_fd && other.khr_external_fence_fd, khr_external_fence_win32: self.khr_external_fence_win32 && other.khr_external_fence_win32, khr_external_memory: self.khr_external_memory && other.khr_external_memory, khr_external_memory_fd: self.khr_external_memory_fd && other.khr_external_memory_fd, khr_external_memory_win32: self.khr_external_memory_win32 && other.khr_external_memory_win32, khr_external_semaphore: self.khr_external_semaphore && other.khr_external_semaphore, khr_external_semaphore_fd: self.khr_external_semaphore_fd && other.khr_external_semaphore_fd, khr_external_semaphore_win32: self.khr_external_semaphore_win32 && other.khr_external_semaphore_win32, khr_format_feature_flags2: self.khr_format_feature_flags2 && other.khr_format_feature_flags2, khr_fragment_shader_barycentric: self.khr_fragment_shader_barycentric && other.khr_fragment_shader_barycentric, khr_fragment_shading_rate: self.khr_fragment_shading_rate && other.khr_fragment_shading_rate, khr_get_memory_requirements2: self.khr_get_memory_requirements2 && other.khr_get_memory_requirements2, khr_global_priority: self.khr_global_priority && other.khr_global_priority, khr_image_format_list: self.khr_image_format_list && other.khr_image_format_list, khr_imageless_framebuffer: self.khr_imageless_framebuffer && other.khr_imageless_framebuffer, khr_incremental_present: self.khr_incremental_present && other.khr_incremental_present, khr_maintenance1: self.khr_maintenance1 && other.khr_maintenance1, khr_maintenance2: self.khr_maintenance2 && other.khr_maintenance2, khr_maintenance3: self.khr_maintenance3 && other.khr_maintenance3, khr_maintenance4: self.khr_maintenance4 && other.khr_maintenance4, khr_multiview: self.khr_multiview && other.khr_multiview, khr_performance_query: self.khr_performance_query && other.khr_performance_query, khr_pipeline_executable_properties: self.khr_pipeline_executable_properties && other.khr_pipeline_executable_properties, khr_pipeline_library: self.khr_pipeline_library && other.khr_pipeline_library, khr_portability_subset: self.khr_portability_subset && other.khr_portability_subset, khr_present_id: self.khr_present_id && other.khr_present_id, khr_present_wait: self.khr_present_wait && other.khr_present_wait, khr_push_descriptor: self.khr_push_descriptor && other.khr_push_descriptor, khr_ray_query: self.khr_ray_query && other.khr_ray_query, khr_ray_tracing_maintenance1: self.khr_ray_tracing_maintenance1 && other.khr_ray_tracing_maintenance1, khr_ray_tracing_pipeline: self.khr_ray_tracing_pipeline && other.khr_ray_tracing_pipeline, khr_relaxed_block_layout: self.khr_relaxed_block_layout && other.khr_relaxed_block_layout, khr_sampler_mirror_clamp_to_edge: self.khr_sampler_mirror_clamp_to_edge && other.khr_sampler_mirror_clamp_to_edge, khr_sampler_ycbcr_conversion: self.khr_sampler_ycbcr_conversion && other.khr_sampler_ycbcr_conversion, khr_separate_depth_stencil_layouts: self.khr_separate_depth_stencil_layouts && other.khr_separate_depth_stencil_layouts, khr_shader_atomic_int64: self.khr_shader_atomic_int64 && other.khr_shader_atomic_int64, khr_shader_clock: self.khr_shader_clock && other.khr_shader_clock, khr_shader_draw_parameters: self.khr_shader_draw_parameters && other.khr_shader_draw_parameters, khr_shader_float16_int8: self.khr_shader_float16_int8 && other.khr_shader_float16_int8, khr_shader_float_controls: self.khr_shader_float_controls && other.khr_shader_float_controls, khr_shader_integer_dot_product: self.khr_shader_integer_dot_product && other.khr_shader_integer_dot_product, khr_shader_non_semantic_info: self.khr_shader_non_semantic_info && other.khr_shader_non_semantic_info, khr_shader_subgroup_extended_types: self.khr_shader_subgroup_extended_types && other.khr_shader_subgroup_extended_types, khr_shader_subgroup_uniform_control_flow: self.khr_shader_subgroup_uniform_control_flow && other.khr_shader_subgroup_uniform_control_flow, khr_shader_terminate_invocation: self.khr_shader_terminate_invocation && other.khr_shader_terminate_invocation, khr_shared_presentable_image: self.khr_shared_presentable_image && other.khr_shared_presentable_image, khr_spirv_1_4: self.khr_spirv_1_4 && other.khr_spirv_1_4, khr_storage_buffer_storage_class: self.khr_storage_buffer_storage_class && other.khr_storage_buffer_storage_class, khr_swapchain: self.khr_swapchain && other.khr_swapchain, khr_swapchain_mutable_format: self.khr_swapchain_mutable_format && other.khr_swapchain_mutable_format, khr_synchronization2: self.khr_synchronization2 && other.khr_synchronization2, khr_timeline_semaphore: self.khr_timeline_semaphore && other.khr_timeline_semaphore, khr_uniform_buffer_standard_layout: self.khr_uniform_buffer_standard_layout && other.khr_uniform_buffer_standard_layout, khr_variable_pointers: self.khr_variable_pointers && other.khr_variable_pointers, khr_video_decode_h264: self.khr_video_decode_h264 && other.khr_video_decode_h264, khr_video_decode_h265: self.khr_video_decode_h265 && other.khr_video_decode_h265, khr_video_decode_queue: self.khr_video_decode_queue && other.khr_video_decode_queue, khr_video_encode_queue: self.khr_video_encode_queue && other.khr_video_encode_queue, khr_video_queue: self.khr_video_queue && other.khr_video_queue, khr_vulkan_memory_model: self.khr_vulkan_memory_model && other.khr_vulkan_memory_model, khr_win32_keyed_mutex: self.khr_win32_keyed_mutex && other.khr_win32_keyed_mutex, khr_workgroup_memory_explicit_layout: self.khr_workgroup_memory_explicit_layout && other.khr_workgroup_memory_explicit_layout, khr_zero_initialize_workgroup_memory: self.khr_zero_initialize_workgroup_memory && other.khr_zero_initialize_workgroup_memory, ext_4444_formats: self.ext_4444_formats && other.ext_4444_formats, ext_astc_decode_mode: self.ext_astc_decode_mode && other.ext_astc_decode_mode, ext_attachment_feedback_loop_layout: self.ext_attachment_feedback_loop_layout && other.ext_attachment_feedback_loop_layout, ext_blend_operation_advanced: self.ext_blend_operation_advanced && other.ext_blend_operation_advanced, ext_border_color_swizzle: self.ext_border_color_swizzle && other.ext_border_color_swizzle, ext_buffer_device_address: self.ext_buffer_device_address && other.ext_buffer_device_address, ext_calibrated_timestamps: self.ext_calibrated_timestamps && other.ext_calibrated_timestamps, ext_color_write_enable: self.ext_color_write_enable && other.ext_color_write_enable, ext_conditional_rendering: self.ext_conditional_rendering && other.ext_conditional_rendering, ext_conservative_rasterization: self.ext_conservative_rasterization && other.ext_conservative_rasterization, ext_custom_border_color: self.ext_custom_border_color && other.ext_custom_border_color, ext_debug_marker: self.ext_debug_marker && other.ext_debug_marker, ext_depth_clamp_zero_one: self.ext_depth_clamp_zero_one && other.ext_depth_clamp_zero_one, ext_depth_clip_control: self.ext_depth_clip_control && other.ext_depth_clip_control, ext_depth_clip_enable: self.ext_depth_clip_enable && other.ext_depth_clip_enable, ext_depth_range_unrestricted: self.ext_depth_range_unrestricted && other.ext_depth_range_unrestricted, ext_descriptor_buffer: self.ext_descriptor_buffer && other.ext_descriptor_buffer, ext_descriptor_indexing: self.ext_descriptor_indexing && other.ext_descriptor_indexing, ext_device_address_binding_report: self.ext_device_address_binding_report && other.ext_device_address_binding_report, ext_device_fault: self.ext_device_fault && other.ext_device_fault, ext_device_memory_report: self.ext_device_memory_report && other.ext_device_memory_report, ext_discard_rectangles: self.ext_discard_rectangles && other.ext_discard_rectangles, ext_display_control: self.ext_display_control && other.ext_display_control, ext_extended_dynamic_state: self.ext_extended_dynamic_state && other.ext_extended_dynamic_state, ext_extended_dynamic_state2: self.ext_extended_dynamic_state2 && other.ext_extended_dynamic_state2, ext_extended_dynamic_state3: self.ext_extended_dynamic_state3 && other.ext_extended_dynamic_state3, ext_external_memory_dma_buf: self.ext_external_memory_dma_buf && other.ext_external_memory_dma_buf, ext_external_memory_host: self.ext_external_memory_host && other.ext_external_memory_host, ext_filter_cubic: self.ext_filter_cubic && other.ext_filter_cubic, ext_fragment_density_map: self.ext_fragment_density_map && other.ext_fragment_density_map, ext_fragment_density_map2: self.ext_fragment_density_map2 && other.ext_fragment_density_map2, ext_fragment_shader_interlock: self.ext_fragment_shader_interlock && other.ext_fragment_shader_interlock, ext_full_screen_exclusive: self.ext_full_screen_exclusive && other.ext_full_screen_exclusive, ext_global_priority: self.ext_global_priority && other.ext_global_priority, ext_global_priority_query: self.ext_global_priority_query && other.ext_global_priority_query, ext_graphics_pipeline_library: self.ext_graphics_pipeline_library && other.ext_graphics_pipeline_library, ext_hdr_metadata: self.ext_hdr_metadata && other.ext_hdr_metadata, ext_host_query_reset: self.ext_host_query_reset && other.ext_host_query_reset, ext_image_2d_view_of_3d: self.ext_image_2d_view_of_3d && other.ext_image_2d_view_of_3d, ext_image_compression_control: self.ext_image_compression_control && other.ext_image_compression_control, ext_image_compression_control_swapchain: self.ext_image_compression_control_swapchain && other.ext_image_compression_control_swapchain, ext_image_drm_format_modifier: self.ext_image_drm_format_modifier && other.ext_image_drm_format_modifier, ext_image_robustness: self.ext_image_robustness && other.ext_image_robustness, ext_image_view_min_lod: self.ext_image_view_min_lod && other.ext_image_view_min_lod, ext_index_type_uint8: self.ext_index_type_uint8 && other.ext_index_type_uint8, ext_inline_uniform_block: self.ext_inline_uniform_block && other.ext_inline_uniform_block, ext_legacy_dithering: self.ext_legacy_dithering && other.ext_legacy_dithering, ext_line_rasterization: self.ext_line_rasterization && other.ext_line_rasterization, ext_load_store_op_none: self.ext_load_store_op_none && other.ext_load_store_op_none, ext_memory_budget: self.ext_memory_budget && other.ext_memory_budget, ext_memory_priority: self.ext_memory_priority && other.ext_memory_priority, ext_mesh_shader: self.ext_mesh_shader && other.ext_mesh_shader, ext_metal_objects: self.ext_metal_objects && other.ext_metal_objects, ext_multi_draw: self.ext_multi_draw && other.ext_multi_draw, ext_multisampled_render_to_single_sampled: self .ext_multisampled_render_to_single_sampled && other.ext_multisampled_render_to_single_sampled, ext_mutable_descriptor_type: self.ext_mutable_descriptor_type && other.ext_mutable_descriptor_type, ext_non_seamless_cube_map: self.ext_non_seamless_cube_map && other.ext_non_seamless_cube_map, ext_opacity_micromap: self.ext_opacity_micromap && other.ext_opacity_micromap, ext_pageable_device_local_memory: self.ext_pageable_device_local_memory && other.ext_pageable_device_local_memory, ext_pci_bus_info: self.ext_pci_bus_info && other.ext_pci_bus_info, ext_physical_device_drm: self.ext_physical_device_drm && other.ext_physical_device_drm, ext_pipeline_creation_cache_control: self.ext_pipeline_creation_cache_control && other.ext_pipeline_creation_cache_control, ext_pipeline_creation_feedback: self.ext_pipeline_creation_feedback && other.ext_pipeline_creation_feedback, ext_pipeline_properties: self.ext_pipeline_properties && other.ext_pipeline_properties, ext_pipeline_protected_access: self.ext_pipeline_protected_access && other.ext_pipeline_protected_access, ext_pipeline_robustness: self.ext_pipeline_robustness && other.ext_pipeline_robustness, ext_post_depth_coverage: self.ext_post_depth_coverage && other.ext_post_depth_coverage, ext_primitive_topology_list_restart: self.ext_primitive_topology_list_restart && other.ext_primitive_topology_list_restart, ext_primitives_generated_query: self.ext_primitives_generated_query && other.ext_primitives_generated_query, ext_private_data: self.ext_private_data && other.ext_private_data, ext_provoking_vertex: self.ext_provoking_vertex && other.ext_provoking_vertex, ext_queue_family_foreign: self.ext_queue_family_foreign && other.ext_queue_family_foreign, ext_rasterization_order_attachment_access: self .ext_rasterization_order_attachment_access && other.ext_rasterization_order_attachment_access, ext_rgba10x6_formats: self.ext_rgba10x6_formats && other.ext_rgba10x6_formats, ext_robustness2: self.ext_robustness2 && other.ext_robustness2, ext_sample_locations: self.ext_sample_locations && other.ext_sample_locations, ext_sampler_filter_minmax: self.ext_sampler_filter_minmax && other.ext_sampler_filter_minmax, ext_scalar_block_layout: self.ext_scalar_block_layout && other.ext_scalar_block_layout, ext_separate_stencil_usage: self.ext_separate_stencil_usage && other.ext_separate_stencil_usage, ext_shader_atomic_float: self.ext_shader_atomic_float && other.ext_shader_atomic_float, ext_shader_atomic_float2: self.ext_shader_atomic_float2 && other.ext_shader_atomic_float2, ext_shader_demote_to_helper_invocation: self.ext_shader_demote_to_helper_invocation && other.ext_shader_demote_to_helper_invocation, ext_shader_image_atomic_int64: self.ext_shader_image_atomic_int64 && other.ext_shader_image_atomic_int64, ext_shader_module_identifier: self.ext_shader_module_identifier && other.ext_shader_module_identifier, ext_shader_stencil_export: self.ext_shader_stencil_export && other.ext_shader_stencil_export, ext_shader_subgroup_ballot: self.ext_shader_subgroup_ballot && other.ext_shader_subgroup_ballot, ext_shader_subgroup_vote: self.ext_shader_subgroup_vote && other.ext_shader_subgroup_vote, ext_shader_viewport_index_layer: self.ext_shader_viewport_index_layer && other.ext_shader_viewport_index_layer, ext_subgroup_size_control: self.ext_subgroup_size_control && other.ext_subgroup_size_control, ext_subpass_merge_feedback: self.ext_subpass_merge_feedback && other.ext_subpass_merge_feedback, ext_swapchain_maintenance1: self.ext_swapchain_maintenance1 && other.ext_swapchain_maintenance1, ext_texel_buffer_alignment: self.ext_texel_buffer_alignment && other.ext_texel_buffer_alignment, ext_texture_compression_astc_hdr: self.ext_texture_compression_astc_hdr && other.ext_texture_compression_astc_hdr, ext_tooling_info: self.ext_tooling_info && other.ext_tooling_info, ext_transform_feedback: self.ext_transform_feedback && other.ext_transform_feedback, ext_validation_cache: self.ext_validation_cache && other.ext_validation_cache, ext_vertex_attribute_divisor: self.ext_vertex_attribute_divisor && other.ext_vertex_attribute_divisor, ext_vertex_input_dynamic_state: self.ext_vertex_input_dynamic_state && other.ext_vertex_input_dynamic_state, ext_video_encode_h264: self.ext_video_encode_h264 && other.ext_video_encode_h264, ext_video_encode_h265: self.ext_video_encode_h265 && other.ext_video_encode_h265, ext_ycbcr_2plane_444_formats: self.ext_ycbcr_2plane_444_formats && other.ext_ycbcr_2plane_444_formats, ext_ycbcr_image_arrays: self.ext_ycbcr_image_arrays && other.ext_ycbcr_image_arrays, amd_buffer_marker: self.amd_buffer_marker && other.amd_buffer_marker, amd_device_coherent_memory: self.amd_device_coherent_memory && other.amd_device_coherent_memory, amd_display_native_hdr: self.amd_display_native_hdr && other.amd_display_native_hdr, amd_draw_indirect_count: self.amd_draw_indirect_count && other.amd_draw_indirect_count, amd_gcn_shader: self.amd_gcn_shader && other.amd_gcn_shader, amd_gpu_shader_half_float: self.amd_gpu_shader_half_float && other.amd_gpu_shader_half_float, amd_gpu_shader_int16: self.amd_gpu_shader_int16 && other.amd_gpu_shader_int16, amd_memory_overallocation_behavior: self.amd_memory_overallocation_behavior && other.amd_memory_overallocation_behavior, amd_mixed_attachment_samples: self.amd_mixed_attachment_samples && other.amd_mixed_attachment_samples, amd_pipeline_compiler_control: self.amd_pipeline_compiler_control && other.amd_pipeline_compiler_control, amd_rasterization_order: self.amd_rasterization_order && other.amd_rasterization_order, amd_shader_ballot: self.amd_shader_ballot && other.amd_shader_ballot, amd_shader_core_properties: self.amd_shader_core_properties && other.amd_shader_core_properties, amd_shader_core_properties2: self.amd_shader_core_properties2 && other.amd_shader_core_properties2, amd_shader_early_and_late_fragment_tests: self.amd_shader_early_and_late_fragment_tests && other.amd_shader_early_and_late_fragment_tests, amd_shader_explicit_vertex_parameter: self.amd_shader_explicit_vertex_parameter && other.amd_shader_explicit_vertex_parameter, amd_shader_fragment_mask: self.amd_shader_fragment_mask && other.amd_shader_fragment_mask, amd_shader_image_load_store_lod: self.amd_shader_image_load_store_lod && other.amd_shader_image_load_store_lod, amd_shader_info: self.amd_shader_info && other.amd_shader_info, amd_shader_trinary_minmax: self.amd_shader_trinary_minmax && other.amd_shader_trinary_minmax, amd_texture_gather_bias_lod: self.amd_texture_gather_bias_lod && other.amd_texture_gather_bias_lod, android_external_memory_android_hardware_buffer: self .android_external_memory_android_hardware_buffer && other.android_external_memory_android_hardware_buffer, arm_rasterization_order_attachment_access: self .arm_rasterization_order_attachment_access && other.arm_rasterization_order_attachment_access, arm_shader_core_builtins: self.arm_shader_core_builtins && other.arm_shader_core_builtins, fuchsia_buffer_collection: self.fuchsia_buffer_collection && other.fuchsia_buffer_collection, fuchsia_external_memory: self.fuchsia_external_memory && other.fuchsia_external_memory, fuchsia_external_semaphore: self.fuchsia_external_semaphore && other.fuchsia_external_semaphore, ggp_frame_token: self.ggp_frame_token && other.ggp_frame_token, google_decorate_string: self.google_decorate_string && other.google_decorate_string, google_display_timing: self.google_display_timing && other.google_display_timing, google_hlsl_functionality1: self.google_hlsl_functionality1 && other.google_hlsl_functionality1, google_user_type: self.google_user_type && other.google_user_type, huawei_invocation_mask: self.huawei_invocation_mask && other.huawei_invocation_mask, huawei_subpass_shading: self.huawei_subpass_shading && other.huawei_subpass_shading, img_filter_cubic: self.img_filter_cubic && other.img_filter_cubic, img_format_pvrtc: self.img_format_pvrtc && other.img_format_pvrtc, intel_performance_query: self.intel_performance_query && other.intel_performance_query, intel_shader_integer_functions2: self.intel_shader_integer_functions2 && other.intel_shader_integer_functions2, nvx_binary_import: self.nvx_binary_import && other.nvx_binary_import, nvx_image_view_handle: self.nvx_image_view_handle && other.nvx_image_view_handle, nvx_multiview_per_view_attributes: self.nvx_multiview_per_view_attributes && other.nvx_multiview_per_view_attributes, nv_acquire_winrt_display: self.nv_acquire_winrt_display && other.nv_acquire_winrt_display, nv_clip_space_w_scaling: self.nv_clip_space_w_scaling && other.nv_clip_space_w_scaling, nv_compute_shader_derivatives: self.nv_compute_shader_derivatives && other.nv_compute_shader_derivatives, nv_cooperative_matrix: self.nv_cooperative_matrix && other.nv_cooperative_matrix, nv_copy_memory_indirect: self.nv_copy_memory_indirect && other.nv_copy_memory_indirect, nv_corner_sampled_image: self.nv_corner_sampled_image && other.nv_corner_sampled_image, nv_coverage_reduction_mode: self.nv_coverage_reduction_mode && other.nv_coverage_reduction_mode, nv_dedicated_allocation: self.nv_dedicated_allocation && other.nv_dedicated_allocation, nv_dedicated_allocation_image_aliasing: self.nv_dedicated_allocation_image_aliasing && other.nv_dedicated_allocation_image_aliasing, nv_device_diagnostic_checkpoints: self.nv_device_diagnostic_checkpoints && other.nv_device_diagnostic_checkpoints, nv_device_diagnostics_config: self.nv_device_diagnostics_config && other.nv_device_diagnostics_config, nv_device_generated_commands: self.nv_device_generated_commands && other.nv_device_generated_commands, nv_external_memory: self.nv_external_memory && other.nv_external_memory, nv_external_memory_rdma: self.nv_external_memory_rdma && other.nv_external_memory_rdma, nv_external_memory_win32: self.nv_external_memory_win32 && other.nv_external_memory_win32, nv_fill_rectangle: self.nv_fill_rectangle && other.nv_fill_rectangle, nv_fragment_coverage_to_color: self.nv_fragment_coverage_to_color && other.nv_fragment_coverage_to_color, nv_fragment_shader_barycentric: self.nv_fragment_shader_barycentric && other.nv_fragment_shader_barycentric, nv_fragment_shading_rate_enums: self.nv_fragment_shading_rate_enums && other.nv_fragment_shading_rate_enums, nv_framebuffer_mixed_samples: self.nv_framebuffer_mixed_samples && other.nv_framebuffer_mixed_samples, nv_geometry_shader_passthrough: self.nv_geometry_shader_passthrough && other.nv_geometry_shader_passthrough, nv_glsl_shader: self.nv_glsl_shader && other.nv_glsl_shader, nv_inherited_viewport_scissor: self.nv_inherited_viewport_scissor && other.nv_inherited_viewport_scissor, nv_linear_color_attachment: self.nv_linear_color_attachment && other.nv_linear_color_attachment, nv_memory_decompression: self.nv_memory_decompression && other.nv_memory_decompression, nv_mesh_shader: self.nv_mesh_shader && other.nv_mesh_shader, nv_optical_flow: self.nv_optical_flow && other.nv_optical_flow, nv_present_barrier: self.nv_present_barrier && other.nv_present_barrier, nv_ray_tracing: self.nv_ray_tracing && other.nv_ray_tracing, nv_ray_tracing_invocation_reorder: self.nv_ray_tracing_invocation_reorder && other.nv_ray_tracing_invocation_reorder, nv_ray_tracing_motion_blur: self.nv_ray_tracing_motion_blur && other.nv_ray_tracing_motion_blur, nv_representative_fragment_test: self.nv_representative_fragment_test && other.nv_representative_fragment_test, nv_sample_mask_override_coverage: self.nv_sample_mask_override_coverage && other.nv_sample_mask_override_coverage, nv_scissor_exclusive: self.nv_scissor_exclusive && other.nv_scissor_exclusive, nv_shader_image_footprint: self.nv_shader_image_footprint && other.nv_shader_image_footprint, nv_shader_sm_builtins: self.nv_shader_sm_builtins && other.nv_shader_sm_builtins, nv_shader_subgroup_partitioned: self.nv_shader_subgroup_partitioned && other.nv_shader_subgroup_partitioned, nv_shading_rate_image: self.nv_shading_rate_image && other.nv_shading_rate_image, nv_viewport_array2: self.nv_viewport_array2 && other.nv_viewport_array2, nv_viewport_swizzle: self.nv_viewport_swizzle && other.nv_viewport_swizzle, nv_win32_keyed_mutex: self.nv_win32_keyed_mutex && other.nv_win32_keyed_mutex, qcom_fragment_density_map_offset: self.qcom_fragment_density_map_offset && other.qcom_fragment_density_map_offset, qcom_image_processing: self.qcom_image_processing && other.qcom_image_processing, qcom_multiview_per_view_viewports: self.qcom_multiview_per_view_viewports && other.qcom_multiview_per_view_viewports, qcom_render_pass_shader_resolve: self.qcom_render_pass_shader_resolve && other.qcom_render_pass_shader_resolve, qcom_render_pass_store_ops: self.qcom_render_pass_store_ops && other.qcom_render_pass_store_ops, qcom_render_pass_transform: self.qcom_render_pass_transform && other.qcom_render_pass_transform, qcom_rotated_copy_commands: self.qcom_rotated_copy_commands && other.qcom_rotated_copy_commands, qcom_tile_properties: self.qcom_tile_properties && other.qcom_tile_properties, sec_amigo_profiling: self.sec_amigo_profiling && other.sec_amigo_profiling, valve_descriptor_set_host_mapping: self.valve_descriptor_set_host_mapping && other.valve_descriptor_set_host_mapping, valve_mutable_descriptor_type: self.valve_mutable_descriptor_type && other.valve_mutable_descriptor_type, _ne: crate::NonExhaustive(()), } } #[doc = r" Returns `self` without the members set in `other`."] #[inline] pub const fn difference(&self, other: &Self) -> Self { Self { khr_16bit_storage: self.khr_16bit_storage && !other.khr_16bit_storage, khr_8bit_storage: self.khr_8bit_storage && !other.khr_8bit_storage, khr_acceleration_structure: self.khr_acceleration_structure && !other.khr_acceleration_structure, khr_bind_memory2: self.khr_bind_memory2 && !other.khr_bind_memory2, khr_buffer_device_address: self.khr_buffer_device_address && !other.khr_buffer_device_address, khr_copy_commands2: self.khr_copy_commands2 && !other.khr_copy_commands2, khr_create_renderpass2: self.khr_create_renderpass2 && !other.khr_create_renderpass2, khr_dedicated_allocation: self.khr_dedicated_allocation && !other.khr_dedicated_allocation, khr_deferred_host_operations: self.khr_deferred_host_operations && !other.khr_deferred_host_operations, khr_depth_stencil_resolve: self.khr_depth_stencil_resolve && !other.khr_depth_stencil_resolve, khr_descriptor_update_template: self.khr_descriptor_update_template && !other.khr_descriptor_update_template, khr_device_group: self.khr_device_group && !other.khr_device_group, khr_display_swapchain: self.khr_display_swapchain && !other.khr_display_swapchain, khr_draw_indirect_count: self.khr_draw_indirect_count && !other.khr_draw_indirect_count, khr_driver_properties: self.khr_driver_properties && !other.khr_driver_properties, khr_dynamic_rendering: self.khr_dynamic_rendering && !other.khr_dynamic_rendering, khr_external_fence: self.khr_external_fence && !other.khr_external_fence, khr_external_fence_fd: self.khr_external_fence_fd && !other.khr_external_fence_fd, khr_external_fence_win32: self.khr_external_fence_win32 && !other.khr_external_fence_win32, khr_external_memory: self.khr_external_memory && !other.khr_external_memory, khr_external_memory_fd: self.khr_external_memory_fd && !other.khr_external_memory_fd, khr_external_memory_win32: self.khr_external_memory_win32 && !other.khr_external_memory_win32, khr_external_semaphore: self.khr_external_semaphore && !other.khr_external_semaphore, khr_external_semaphore_fd: self.khr_external_semaphore_fd && !other.khr_external_semaphore_fd, khr_external_semaphore_win32: self.khr_external_semaphore_win32 && !other.khr_external_semaphore_win32, khr_format_feature_flags2: self.khr_format_feature_flags2 && !other.khr_format_feature_flags2, khr_fragment_shader_barycentric: self.khr_fragment_shader_barycentric && !other.khr_fragment_shader_barycentric, khr_fragment_shading_rate: self.khr_fragment_shading_rate && !other.khr_fragment_shading_rate, khr_get_memory_requirements2: self.khr_get_memory_requirements2 && !other.khr_get_memory_requirements2, khr_global_priority: self.khr_global_priority && !other.khr_global_priority, khr_image_format_list: self.khr_image_format_list && !other.khr_image_format_list, khr_imageless_framebuffer: self.khr_imageless_framebuffer && !other.khr_imageless_framebuffer, khr_incremental_present: self.khr_incremental_present && !other.khr_incremental_present, khr_maintenance1: self.khr_maintenance1 && !other.khr_maintenance1, khr_maintenance2: self.khr_maintenance2 && !other.khr_maintenance2, khr_maintenance3: self.khr_maintenance3 && !other.khr_maintenance3, khr_maintenance4: self.khr_maintenance4 && !other.khr_maintenance4, khr_multiview: self.khr_multiview && !other.khr_multiview, khr_performance_query: self.khr_performance_query && !other.khr_performance_query, khr_pipeline_executable_properties: self.khr_pipeline_executable_properties && !other.khr_pipeline_executable_properties, khr_pipeline_library: self.khr_pipeline_library && !other.khr_pipeline_library, khr_portability_subset: self.khr_portability_subset && !other.khr_portability_subset, khr_present_id: self.khr_present_id && !other.khr_present_id, khr_present_wait: self.khr_present_wait && !other.khr_present_wait, khr_push_descriptor: self.khr_push_descriptor && !other.khr_push_descriptor, khr_ray_query: self.khr_ray_query && !other.khr_ray_query, khr_ray_tracing_maintenance1: self.khr_ray_tracing_maintenance1 && !other.khr_ray_tracing_maintenance1, khr_ray_tracing_pipeline: self.khr_ray_tracing_pipeline && !other.khr_ray_tracing_pipeline, khr_relaxed_block_layout: self.khr_relaxed_block_layout && !other.khr_relaxed_block_layout, khr_sampler_mirror_clamp_to_edge: self.khr_sampler_mirror_clamp_to_edge && !other.khr_sampler_mirror_clamp_to_edge, khr_sampler_ycbcr_conversion: self.khr_sampler_ycbcr_conversion && !other.khr_sampler_ycbcr_conversion, khr_separate_depth_stencil_layouts: self.khr_separate_depth_stencil_layouts && !other.khr_separate_depth_stencil_layouts, khr_shader_atomic_int64: self.khr_shader_atomic_int64 && !other.khr_shader_atomic_int64, khr_shader_clock: self.khr_shader_clock && !other.khr_shader_clock, khr_shader_draw_parameters: self.khr_shader_draw_parameters && !other.khr_shader_draw_parameters, khr_shader_float16_int8: self.khr_shader_float16_int8 && !other.khr_shader_float16_int8, khr_shader_float_controls: self.khr_shader_float_controls && !other.khr_shader_float_controls, khr_shader_integer_dot_product: self.khr_shader_integer_dot_product && !other.khr_shader_integer_dot_product, khr_shader_non_semantic_info: self.khr_shader_non_semantic_info && !other.khr_shader_non_semantic_info, khr_shader_subgroup_extended_types: self.khr_shader_subgroup_extended_types && !other.khr_shader_subgroup_extended_types, khr_shader_subgroup_uniform_control_flow: self.khr_shader_subgroup_uniform_control_flow && !other.khr_shader_subgroup_uniform_control_flow, khr_shader_terminate_invocation: self.khr_shader_terminate_invocation && !other.khr_shader_terminate_invocation, khr_shared_presentable_image: self.khr_shared_presentable_image && !other.khr_shared_presentable_image, khr_spirv_1_4: self.khr_spirv_1_4 && !other.khr_spirv_1_4, khr_storage_buffer_storage_class: self.khr_storage_buffer_storage_class && !other.khr_storage_buffer_storage_class, khr_swapchain: self.khr_swapchain && !other.khr_swapchain, khr_swapchain_mutable_format: self.khr_swapchain_mutable_format && !other.khr_swapchain_mutable_format, khr_synchronization2: self.khr_synchronization2 && !other.khr_synchronization2, khr_timeline_semaphore: self.khr_timeline_semaphore && !other.khr_timeline_semaphore, khr_uniform_buffer_standard_layout: self.khr_uniform_buffer_standard_layout && !other.khr_uniform_buffer_standard_layout, khr_variable_pointers: self.khr_variable_pointers && !other.khr_variable_pointers, khr_video_decode_h264: self.khr_video_decode_h264 && !other.khr_video_decode_h264, khr_video_decode_h265: self.khr_video_decode_h265 && !other.khr_video_decode_h265, khr_video_decode_queue: self.khr_video_decode_queue && !other.khr_video_decode_queue, khr_video_encode_queue: self.khr_video_encode_queue && !other.khr_video_encode_queue, khr_video_queue: self.khr_video_queue && !other.khr_video_queue, khr_vulkan_memory_model: self.khr_vulkan_memory_model && !other.khr_vulkan_memory_model, khr_win32_keyed_mutex: self.khr_win32_keyed_mutex && !other.khr_win32_keyed_mutex, khr_workgroup_memory_explicit_layout: self.khr_workgroup_memory_explicit_layout && !other.khr_workgroup_memory_explicit_layout, khr_zero_initialize_workgroup_memory: self.khr_zero_initialize_workgroup_memory && !other.khr_zero_initialize_workgroup_memory, ext_4444_formats: self.ext_4444_formats && !other.ext_4444_formats, ext_astc_decode_mode: self.ext_astc_decode_mode && !other.ext_astc_decode_mode, ext_attachment_feedback_loop_layout: self.ext_attachment_feedback_loop_layout && !other.ext_attachment_feedback_loop_layout, ext_blend_operation_advanced: self.ext_blend_operation_advanced && !other.ext_blend_operation_advanced, ext_border_color_swizzle: self.ext_border_color_swizzle && !other.ext_border_color_swizzle, ext_buffer_device_address: self.ext_buffer_device_address && !other.ext_buffer_device_address, ext_calibrated_timestamps: self.ext_calibrated_timestamps && !other.ext_calibrated_timestamps, ext_color_write_enable: self.ext_color_write_enable && !other.ext_color_write_enable, ext_conditional_rendering: self.ext_conditional_rendering && !other.ext_conditional_rendering, ext_conservative_rasterization: self.ext_conservative_rasterization && !other.ext_conservative_rasterization, ext_custom_border_color: self.ext_custom_border_color && !other.ext_custom_border_color, ext_debug_marker: self.ext_debug_marker && !other.ext_debug_marker, ext_depth_clamp_zero_one: self.ext_depth_clamp_zero_one && !other.ext_depth_clamp_zero_one, ext_depth_clip_control: self.ext_depth_clip_control && !other.ext_depth_clip_control, ext_depth_clip_enable: self.ext_depth_clip_enable && !other.ext_depth_clip_enable, ext_depth_range_unrestricted: self.ext_depth_range_unrestricted && !other.ext_depth_range_unrestricted, ext_descriptor_buffer: self.ext_descriptor_buffer && !other.ext_descriptor_buffer, ext_descriptor_indexing: self.ext_descriptor_indexing && !other.ext_descriptor_indexing, ext_device_address_binding_report: self.ext_device_address_binding_report && !other.ext_device_address_binding_report, ext_device_fault: self.ext_device_fault && !other.ext_device_fault, ext_device_memory_report: self.ext_device_memory_report && !other.ext_device_memory_report, ext_discard_rectangles: self.ext_discard_rectangles && !other.ext_discard_rectangles, ext_display_control: self.ext_display_control && !other.ext_display_control, ext_extended_dynamic_state: self.ext_extended_dynamic_state && !other.ext_extended_dynamic_state, ext_extended_dynamic_state2: self.ext_extended_dynamic_state2 && !other.ext_extended_dynamic_state2, ext_extended_dynamic_state3: self.ext_extended_dynamic_state3 && !other.ext_extended_dynamic_state3, ext_external_memory_dma_buf: self.ext_external_memory_dma_buf && !other.ext_external_memory_dma_buf, ext_external_memory_host: self.ext_external_memory_host && !other.ext_external_memory_host, ext_filter_cubic: self.ext_filter_cubic && !other.ext_filter_cubic, ext_fragment_density_map: self.ext_fragment_density_map && !other.ext_fragment_density_map, ext_fragment_density_map2: self.ext_fragment_density_map2 && !other.ext_fragment_density_map2, ext_fragment_shader_interlock: self.ext_fragment_shader_interlock && !other.ext_fragment_shader_interlock, ext_full_screen_exclusive: self.ext_full_screen_exclusive && !other.ext_full_screen_exclusive, ext_global_priority: self.ext_global_priority && !other.ext_global_priority, ext_global_priority_query: self.ext_global_priority_query && !other.ext_global_priority_query, ext_graphics_pipeline_library: self.ext_graphics_pipeline_library && !other.ext_graphics_pipeline_library, ext_hdr_metadata: self.ext_hdr_metadata && !other.ext_hdr_metadata, ext_host_query_reset: self.ext_host_query_reset && !other.ext_host_query_reset, ext_image_2d_view_of_3d: self.ext_image_2d_view_of_3d && !other.ext_image_2d_view_of_3d, ext_image_compression_control: self.ext_image_compression_control && !other.ext_image_compression_control, ext_image_compression_control_swapchain: self.ext_image_compression_control_swapchain && !other.ext_image_compression_control_swapchain, ext_image_drm_format_modifier: self.ext_image_drm_format_modifier && !other.ext_image_drm_format_modifier, ext_image_robustness: self.ext_image_robustness && !other.ext_image_robustness, ext_image_view_min_lod: self.ext_image_view_min_lod && !other.ext_image_view_min_lod, ext_index_type_uint8: self.ext_index_type_uint8 && !other.ext_index_type_uint8, ext_inline_uniform_block: self.ext_inline_uniform_block && !other.ext_inline_uniform_block, ext_legacy_dithering: self.ext_legacy_dithering && !other.ext_legacy_dithering, ext_line_rasterization: self.ext_line_rasterization && !other.ext_line_rasterization, ext_load_store_op_none: self.ext_load_store_op_none && !other.ext_load_store_op_none, ext_memory_budget: self.ext_memory_budget && !other.ext_memory_budget, ext_memory_priority: self.ext_memory_priority && !other.ext_memory_priority, ext_mesh_shader: self.ext_mesh_shader && !other.ext_mesh_shader, ext_metal_objects: self.ext_metal_objects && !other.ext_metal_objects, ext_multi_draw: self.ext_multi_draw && !other.ext_multi_draw, ext_multisampled_render_to_single_sampled: self .ext_multisampled_render_to_single_sampled && !other.ext_multisampled_render_to_single_sampled, ext_mutable_descriptor_type: self.ext_mutable_descriptor_type && !other.ext_mutable_descriptor_type, ext_non_seamless_cube_map: self.ext_non_seamless_cube_map && !other.ext_non_seamless_cube_map, ext_opacity_micromap: self.ext_opacity_micromap && !other.ext_opacity_micromap, ext_pageable_device_local_memory: self.ext_pageable_device_local_memory && !other.ext_pageable_device_local_memory, ext_pci_bus_info: self.ext_pci_bus_info && !other.ext_pci_bus_info, ext_physical_device_drm: self.ext_physical_device_drm && !other.ext_physical_device_drm, ext_pipeline_creation_cache_control: self.ext_pipeline_creation_cache_control && !other.ext_pipeline_creation_cache_control, ext_pipeline_creation_feedback: self.ext_pipeline_creation_feedback && !other.ext_pipeline_creation_feedback, ext_pipeline_properties: self.ext_pipeline_properties && !other.ext_pipeline_properties, ext_pipeline_protected_access: self.ext_pipeline_protected_access && !other.ext_pipeline_protected_access, ext_pipeline_robustness: self.ext_pipeline_robustness && !other.ext_pipeline_robustness, ext_post_depth_coverage: self.ext_post_depth_coverage && !other.ext_post_depth_coverage, ext_primitive_topology_list_restart: self.ext_primitive_topology_list_restart && !other.ext_primitive_topology_list_restart, ext_primitives_generated_query: self.ext_primitives_generated_query && !other.ext_primitives_generated_query, ext_private_data: self.ext_private_data && !other.ext_private_data, ext_provoking_vertex: self.ext_provoking_vertex && !other.ext_provoking_vertex, ext_queue_family_foreign: self.ext_queue_family_foreign && !other.ext_queue_family_foreign, ext_rasterization_order_attachment_access: self .ext_rasterization_order_attachment_access && !other.ext_rasterization_order_attachment_access, ext_rgba10x6_formats: self.ext_rgba10x6_formats && !other.ext_rgba10x6_formats, ext_robustness2: self.ext_robustness2 && !other.ext_robustness2, ext_sample_locations: self.ext_sample_locations && !other.ext_sample_locations, ext_sampler_filter_minmax: self.ext_sampler_filter_minmax && !other.ext_sampler_filter_minmax, ext_scalar_block_layout: self.ext_scalar_block_layout && !other.ext_scalar_block_layout, ext_separate_stencil_usage: self.ext_separate_stencil_usage && !other.ext_separate_stencil_usage, ext_shader_atomic_float: self.ext_shader_atomic_float && !other.ext_shader_atomic_float, ext_shader_atomic_float2: self.ext_shader_atomic_float2 && !other.ext_shader_atomic_float2, ext_shader_demote_to_helper_invocation: self.ext_shader_demote_to_helper_invocation && !other.ext_shader_demote_to_helper_invocation, ext_shader_image_atomic_int64: self.ext_shader_image_atomic_int64 && !other.ext_shader_image_atomic_int64, ext_shader_module_identifier: self.ext_shader_module_identifier && !other.ext_shader_module_identifier, ext_shader_stencil_export: self.ext_shader_stencil_export && !other.ext_shader_stencil_export, ext_shader_subgroup_ballot: self.ext_shader_subgroup_ballot && !other.ext_shader_subgroup_ballot, ext_shader_subgroup_vote: self.ext_shader_subgroup_vote && !other.ext_shader_subgroup_vote, ext_shader_viewport_index_layer: self.ext_shader_viewport_index_layer && !other.ext_shader_viewport_index_layer, ext_subgroup_size_control: self.ext_subgroup_size_control && !other.ext_subgroup_size_control, ext_subpass_merge_feedback: self.ext_subpass_merge_feedback && !other.ext_subpass_merge_feedback, ext_swapchain_maintenance1: self.ext_swapchain_maintenance1 && !other.ext_swapchain_maintenance1, ext_texel_buffer_alignment: self.ext_texel_buffer_alignment && !other.ext_texel_buffer_alignment, ext_texture_compression_astc_hdr: self.ext_texture_compression_astc_hdr && !other.ext_texture_compression_astc_hdr, ext_tooling_info: self.ext_tooling_info && !other.ext_tooling_info, ext_transform_feedback: self.ext_transform_feedback && !other.ext_transform_feedback, ext_validation_cache: self.ext_validation_cache && !other.ext_validation_cache, ext_vertex_attribute_divisor: self.ext_vertex_attribute_divisor && !other.ext_vertex_attribute_divisor, ext_vertex_input_dynamic_state: self.ext_vertex_input_dynamic_state && !other.ext_vertex_input_dynamic_state, ext_video_encode_h264: self.ext_video_encode_h264 && !other.ext_video_encode_h264, ext_video_encode_h265: self.ext_video_encode_h265 && !other.ext_video_encode_h265, ext_ycbcr_2plane_444_formats: self.ext_ycbcr_2plane_444_formats && !other.ext_ycbcr_2plane_444_formats, ext_ycbcr_image_arrays: self.ext_ycbcr_image_arrays && !other.ext_ycbcr_image_arrays, amd_buffer_marker: self.amd_buffer_marker && !other.amd_buffer_marker, amd_device_coherent_memory: self.amd_device_coherent_memory && !other.amd_device_coherent_memory, amd_display_native_hdr: self.amd_display_native_hdr && !other.amd_display_native_hdr, amd_draw_indirect_count: self.amd_draw_indirect_count && !other.amd_draw_indirect_count, amd_gcn_shader: self.amd_gcn_shader && !other.amd_gcn_shader, amd_gpu_shader_half_float: self.amd_gpu_shader_half_float && !other.amd_gpu_shader_half_float, amd_gpu_shader_int16: self.amd_gpu_shader_int16 && !other.amd_gpu_shader_int16, amd_memory_overallocation_behavior: self.amd_memory_overallocation_behavior && !other.amd_memory_overallocation_behavior, amd_mixed_attachment_samples: self.amd_mixed_attachment_samples && !other.amd_mixed_attachment_samples, amd_pipeline_compiler_control: self.amd_pipeline_compiler_control && !other.amd_pipeline_compiler_control, amd_rasterization_order: self.amd_rasterization_order && !other.amd_rasterization_order, amd_shader_ballot: self.amd_shader_ballot && !other.amd_shader_ballot, amd_shader_core_properties: self.amd_shader_core_properties && !other.amd_shader_core_properties, amd_shader_core_properties2: self.amd_shader_core_properties2 && !other.amd_shader_core_properties2, amd_shader_early_and_late_fragment_tests: self.amd_shader_early_and_late_fragment_tests && !other.amd_shader_early_and_late_fragment_tests, amd_shader_explicit_vertex_parameter: self.amd_shader_explicit_vertex_parameter && !other.amd_shader_explicit_vertex_parameter, amd_shader_fragment_mask: self.amd_shader_fragment_mask && !other.amd_shader_fragment_mask, amd_shader_image_load_store_lod: self.amd_shader_image_load_store_lod && !other.amd_shader_image_load_store_lod, amd_shader_info: self.amd_shader_info && !other.amd_shader_info, amd_shader_trinary_minmax: self.amd_shader_trinary_minmax && !other.amd_shader_trinary_minmax, amd_texture_gather_bias_lod: self.amd_texture_gather_bias_lod && !other.amd_texture_gather_bias_lod, android_external_memory_android_hardware_buffer: self .android_external_memory_android_hardware_buffer && !other.android_external_memory_android_hardware_buffer, arm_rasterization_order_attachment_access: self .arm_rasterization_order_attachment_access && !other.arm_rasterization_order_attachment_access, arm_shader_core_builtins: self.arm_shader_core_builtins && !other.arm_shader_core_builtins, fuchsia_buffer_collection: self.fuchsia_buffer_collection && !other.fuchsia_buffer_collection, fuchsia_external_memory: self.fuchsia_external_memory && !other.fuchsia_external_memory, fuchsia_external_semaphore: self.fuchsia_external_semaphore && !other.fuchsia_external_semaphore, ggp_frame_token: self.ggp_frame_token && !other.ggp_frame_token, google_decorate_string: self.google_decorate_string && !other.google_decorate_string, google_display_timing: self.google_display_timing && !other.google_display_timing, google_hlsl_functionality1: self.google_hlsl_functionality1 && !other.google_hlsl_functionality1, google_user_type: self.google_user_type && !other.google_user_type, huawei_invocation_mask: self.huawei_invocation_mask && !other.huawei_invocation_mask, huawei_subpass_shading: self.huawei_subpass_shading && !other.huawei_subpass_shading, img_filter_cubic: self.img_filter_cubic && !other.img_filter_cubic, img_format_pvrtc: self.img_format_pvrtc && !other.img_format_pvrtc, intel_performance_query: self.intel_performance_query && !other.intel_performance_query, intel_shader_integer_functions2: self.intel_shader_integer_functions2 && !other.intel_shader_integer_functions2, nvx_binary_import: self.nvx_binary_import && !other.nvx_binary_import, nvx_image_view_handle: self.nvx_image_view_handle && !other.nvx_image_view_handle, nvx_multiview_per_view_attributes: self.nvx_multiview_per_view_attributes && !other.nvx_multiview_per_view_attributes, nv_acquire_winrt_display: self.nv_acquire_winrt_display && !other.nv_acquire_winrt_display, nv_clip_space_w_scaling: self.nv_clip_space_w_scaling && !other.nv_clip_space_w_scaling, nv_compute_shader_derivatives: self.nv_compute_shader_derivatives && !other.nv_compute_shader_derivatives, nv_cooperative_matrix: self.nv_cooperative_matrix && !other.nv_cooperative_matrix, nv_copy_memory_indirect: self.nv_copy_memory_indirect && !other.nv_copy_memory_indirect, nv_corner_sampled_image: self.nv_corner_sampled_image && !other.nv_corner_sampled_image, nv_coverage_reduction_mode: self.nv_coverage_reduction_mode && !other.nv_coverage_reduction_mode, nv_dedicated_allocation: self.nv_dedicated_allocation && !other.nv_dedicated_allocation, nv_dedicated_allocation_image_aliasing: self.nv_dedicated_allocation_image_aliasing && !other.nv_dedicated_allocation_image_aliasing, nv_device_diagnostic_checkpoints: self.nv_device_diagnostic_checkpoints && !other.nv_device_diagnostic_checkpoints, nv_device_diagnostics_config: self.nv_device_diagnostics_config && !other.nv_device_diagnostics_config, nv_device_generated_commands: self.nv_device_generated_commands && !other.nv_device_generated_commands, nv_external_memory: self.nv_external_memory && !other.nv_external_memory, nv_external_memory_rdma: self.nv_external_memory_rdma && !other.nv_external_memory_rdma, nv_external_memory_win32: self.nv_external_memory_win32 && !other.nv_external_memory_win32, nv_fill_rectangle: self.nv_fill_rectangle && !other.nv_fill_rectangle, nv_fragment_coverage_to_color: self.nv_fragment_coverage_to_color && !other.nv_fragment_coverage_to_color, nv_fragment_shader_barycentric: self.nv_fragment_shader_barycentric && !other.nv_fragment_shader_barycentric, nv_fragment_shading_rate_enums: self.nv_fragment_shading_rate_enums && !other.nv_fragment_shading_rate_enums, nv_framebuffer_mixed_samples: self.nv_framebuffer_mixed_samples && !other.nv_framebuffer_mixed_samples, nv_geometry_shader_passthrough: self.nv_geometry_shader_passthrough && !other.nv_geometry_shader_passthrough, nv_glsl_shader: self.nv_glsl_shader && !other.nv_glsl_shader, nv_inherited_viewport_scissor: self.nv_inherited_viewport_scissor && !other.nv_inherited_viewport_scissor, nv_linear_color_attachment: self.nv_linear_color_attachment && !other.nv_linear_color_attachment, nv_memory_decompression: self.nv_memory_decompression && !other.nv_memory_decompression, nv_mesh_shader: self.nv_mesh_shader && !other.nv_mesh_shader, nv_optical_flow: self.nv_optical_flow && !other.nv_optical_flow, nv_present_barrier: self.nv_present_barrier && !other.nv_present_barrier, nv_ray_tracing: self.nv_ray_tracing && !other.nv_ray_tracing, nv_ray_tracing_invocation_reorder: self.nv_ray_tracing_invocation_reorder && !other.nv_ray_tracing_invocation_reorder, nv_ray_tracing_motion_blur: self.nv_ray_tracing_motion_blur && !other.nv_ray_tracing_motion_blur, nv_representative_fragment_test: self.nv_representative_fragment_test && !other.nv_representative_fragment_test, nv_sample_mask_override_coverage: self.nv_sample_mask_override_coverage && !other.nv_sample_mask_override_coverage, nv_scissor_exclusive: self.nv_scissor_exclusive && !other.nv_scissor_exclusive, nv_shader_image_footprint: self.nv_shader_image_footprint && !other.nv_shader_image_footprint, nv_shader_sm_builtins: self.nv_shader_sm_builtins && !other.nv_shader_sm_builtins, nv_shader_subgroup_partitioned: self.nv_shader_subgroup_partitioned && !other.nv_shader_subgroup_partitioned, nv_shading_rate_image: self.nv_shading_rate_image && !other.nv_shading_rate_image, nv_viewport_array2: self.nv_viewport_array2 && !other.nv_viewport_array2, nv_viewport_swizzle: self.nv_viewport_swizzle && !other.nv_viewport_swizzle, nv_win32_keyed_mutex: self.nv_win32_keyed_mutex && !other.nv_win32_keyed_mutex, qcom_fragment_density_map_offset: self.qcom_fragment_density_map_offset && !other.qcom_fragment_density_map_offset, qcom_image_processing: self.qcom_image_processing && !other.qcom_image_processing, qcom_multiview_per_view_viewports: self.qcom_multiview_per_view_viewports && !other.qcom_multiview_per_view_viewports, qcom_render_pass_shader_resolve: self.qcom_render_pass_shader_resolve && !other.qcom_render_pass_shader_resolve, qcom_render_pass_store_ops: self.qcom_render_pass_store_ops && !other.qcom_render_pass_store_ops, qcom_render_pass_transform: self.qcom_render_pass_transform && !other.qcom_render_pass_transform, qcom_rotated_copy_commands: self.qcom_rotated_copy_commands && !other.qcom_rotated_copy_commands, qcom_tile_properties: self.qcom_tile_properties && !other.qcom_tile_properties, sec_amigo_profiling: self.sec_amigo_profiling && !other.sec_amigo_profiling, valve_descriptor_set_host_mapping: self.valve_descriptor_set_host_mapping && !other.valve_descriptor_set_host_mapping, valve_mutable_descriptor_type: self.valve_mutable_descriptor_type && !other.valve_mutable_descriptor_type, _ne: crate::NonExhaustive(()), } } #[doc = r" Returns the members set in `self` or `other`, but not both."] #[inline] pub const fn symmetric_difference(&self, other: &Self) -> Self { Self { khr_16bit_storage: self.khr_16bit_storage ^ other.khr_16bit_storage, khr_8bit_storage: self.khr_8bit_storage ^ other.khr_8bit_storage, khr_acceleration_structure: self.khr_acceleration_structure ^ other.khr_acceleration_structure, khr_bind_memory2: self.khr_bind_memory2 ^ other.khr_bind_memory2, khr_buffer_device_address: self.khr_buffer_device_address ^ other.khr_buffer_device_address, khr_copy_commands2: self.khr_copy_commands2 ^ other.khr_copy_commands2, khr_create_renderpass2: self.khr_create_renderpass2 ^ other.khr_create_renderpass2, khr_dedicated_allocation: self.khr_dedicated_allocation ^ other.khr_dedicated_allocation, khr_deferred_host_operations: self.khr_deferred_host_operations ^ other.khr_deferred_host_operations, khr_depth_stencil_resolve: self.khr_depth_stencil_resolve ^ other.khr_depth_stencil_resolve, khr_descriptor_update_template: self.khr_descriptor_update_template ^ other.khr_descriptor_update_template, khr_device_group: self.khr_device_group ^ other.khr_device_group, khr_display_swapchain: self.khr_display_swapchain ^ other.khr_display_swapchain, khr_draw_indirect_count: self.khr_draw_indirect_count ^ other.khr_draw_indirect_count, khr_driver_properties: self.khr_driver_properties ^ other.khr_driver_properties, khr_dynamic_rendering: self.khr_dynamic_rendering ^ other.khr_dynamic_rendering, khr_external_fence: self.khr_external_fence ^ other.khr_external_fence, khr_external_fence_fd: self.khr_external_fence_fd ^ other.khr_external_fence_fd, khr_external_fence_win32: self.khr_external_fence_win32 ^ other.khr_external_fence_win32, khr_external_memory: self.khr_external_memory ^ other.khr_external_memory, khr_external_memory_fd: self.khr_external_memory_fd ^ other.khr_external_memory_fd, khr_external_memory_win32: self.khr_external_memory_win32 ^ other.khr_external_memory_win32, khr_external_semaphore: self.khr_external_semaphore ^ other.khr_external_semaphore, khr_external_semaphore_fd: self.khr_external_semaphore_fd ^ other.khr_external_semaphore_fd, khr_external_semaphore_win32: self.khr_external_semaphore_win32 ^ other.khr_external_semaphore_win32, khr_format_feature_flags2: self.khr_format_feature_flags2 ^ other.khr_format_feature_flags2, khr_fragment_shader_barycentric: self.khr_fragment_shader_barycentric ^ other.khr_fragment_shader_barycentric, khr_fragment_shading_rate: self.khr_fragment_shading_rate ^ other.khr_fragment_shading_rate, khr_get_memory_requirements2: self.khr_get_memory_requirements2 ^ other.khr_get_memory_requirements2, khr_global_priority: self.khr_global_priority ^ other.khr_global_priority, khr_image_format_list: self.khr_image_format_list ^ other.khr_image_format_list, khr_imageless_framebuffer: self.khr_imageless_framebuffer ^ other.khr_imageless_framebuffer, khr_incremental_present: self.khr_incremental_present ^ other.khr_incremental_present, khr_maintenance1: self.khr_maintenance1 ^ other.khr_maintenance1, khr_maintenance2: self.khr_maintenance2 ^ other.khr_maintenance2, khr_maintenance3: self.khr_maintenance3 ^ other.khr_maintenance3, khr_maintenance4: self.khr_maintenance4 ^ other.khr_maintenance4, khr_multiview: self.khr_multiview ^ other.khr_multiview, khr_performance_query: self.khr_performance_query ^ other.khr_performance_query, khr_pipeline_executable_properties: self.khr_pipeline_executable_properties ^ other.khr_pipeline_executable_properties, khr_pipeline_library: self.khr_pipeline_library ^ other.khr_pipeline_library, khr_portability_subset: self.khr_portability_subset ^ other.khr_portability_subset, khr_present_id: self.khr_present_id ^ other.khr_present_id, khr_present_wait: self.khr_present_wait ^ other.khr_present_wait, khr_push_descriptor: self.khr_push_descriptor ^ other.khr_push_descriptor, khr_ray_query: self.khr_ray_query ^ other.khr_ray_query, khr_ray_tracing_maintenance1: self.khr_ray_tracing_maintenance1 ^ other.khr_ray_tracing_maintenance1, khr_ray_tracing_pipeline: self.khr_ray_tracing_pipeline ^ other.khr_ray_tracing_pipeline, khr_relaxed_block_layout: self.khr_relaxed_block_layout ^ other.khr_relaxed_block_layout, khr_sampler_mirror_clamp_to_edge: self.khr_sampler_mirror_clamp_to_edge ^ other.khr_sampler_mirror_clamp_to_edge, khr_sampler_ycbcr_conversion: self.khr_sampler_ycbcr_conversion ^ other.khr_sampler_ycbcr_conversion, khr_separate_depth_stencil_layouts: self.khr_separate_depth_stencil_layouts ^ other.khr_separate_depth_stencil_layouts, khr_shader_atomic_int64: self.khr_shader_atomic_int64 ^ other.khr_shader_atomic_int64, khr_shader_clock: self.khr_shader_clock ^ other.khr_shader_clock, khr_shader_draw_parameters: self.khr_shader_draw_parameters ^ other.khr_shader_draw_parameters, khr_shader_float16_int8: self.khr_shader_float16_int8 ^ other.khr_shader_float16_int8, khr_shader_float_controls: self.khr_shader_float_controls ^ other.khr_shader_float_controls, khr_shader_integer_dot_product: self.khr_shader_integer_dot_product ^ other.khr_shader_integer_dot_product, khr_shader_non_semantic_info: self.khr_shader_non_semantic_info ^ other.khr_shader_non_semantic_info, khr_shader_subgroup_extended_types: self.khr_shader_subgroup_extended_types ^ other.khr_shader_subgroup_extended_types, khr_shader_subgroup_uniform_control_flow: self.khr_shader_subgroup_uniform_control_flow ^ other.khr_shader_subgroup_uniform_control_flow, khr_shader_terminate_invocation: self.khr_shader_terminate_invocation ^ other.khr_shader_terminate_invocation, khr_shared_presentable_image: self.khr_shared_presentable_image ^ other.khr_shared_presentable_image, khr_spirv_1_4: self.khr_spirv_1_4 ^ other.khr_spirv_1_4, khr_storage_buffer_storage_class: self.khr_storage_buffer_storage_class ^ other.khr_storage_buffer_storage_class, khr_swapchain: self.khr_swapchain ^ other.khr_swapchain, khr_swapchain_mutable_format: self.khr_swapchain_mutable_format ^ other.khr_swapchain_mutable_format, khr_synchronization2: self.khr_synchronization2 ^ other.khr_synchronization2, khr_timeline_semaphore: self.khr_timeline_semaphore ^ other.khr_timeline_semaphore, khr_uniform_buffer_standard_layout: self.khr_uniform_buffer_standard_layout ^ other.khr_uniform_buffer_standard_layout, khr_variable_pointers: self.khr_variable_pointers ^ other.khr_variable_pointers, khr_video_decode_h264: self.khr_video_decode_h264 ^ other.khr_video_decode_h264, khr_video_decode_h265: self.khr_video_decode_h265 ^ other.khr_video_decode_h265, khr_video_decode_queue: self.khr_video_decode_queue ^ other.khr_video_decode_queue, khr_video_encode_queue: self.khr_video_encode_queue ^ other.khr_video_encode_queue, khr_video_queue: self.khr_video_queue ^ other.khr_video_queue, khr_vulkan_memory_model: self.khr_vulkan_memory_model ^ other.khr_vulkan_memory_model, khr_win32_keyed_mutex: self.khr_win32_keyed_mutex ^ other.khr_win32_keyed_mutex, khr_workgroup_memory_explicit_layout: self.khr_workgroup_memory_explicit_layout ^ other.khr_workgroup_memory_explicit_layout, khr_zero_initialize_workgroup_memory: self.khr_zero_initialize_workgroup_memory ^ other.khr_zero_initialize_workgroup_memory, ext_4444_formats: self.ext_4444_formats ^ other.ext_4444_formats, ext_astc_decode_mode: self.ext_astc_decode_mode ^ other.ext_astc_decode_mode, ext_attachment_feedback_loop_layout: self.ext_attachment_feedback_loop_layout ^ other.ext_attachment_feedback_loop_layout, ext_blend_operation_advanced: self.ext_blend_operation_advanced ^ other.ext_blend_operation_advanced, ext_border_color_swizzle: self.ext_border_color_swizzle ^ other.ext_border_color_swizzle, ext_buffer_device_address: self.ext_buffer_device_address ^ other.ext_buffer_device_address, ext_calibrated_timestamps: self.ext_calibrated_timestamps ^ other.ext_calibrated_timestamps, ext_color_write_enable: self.ext_color_write_enable ^ other.ext_color_write_enable, ext_conditional_rendering: self.ext_conditional_rendering ^ other.ext_conditional_rendering, ext_conservative_rasterization: self.ext_conservative_rasterization ^ other.ext_conservative_rasterization, ext_custom_border_color: self.ext_custom_border_color ^ other.ext_custom_border_color, ext_debug_marker: self.ext_debug_marker ^ other.ext_debug_marker, ext_depth_clamp_zero_one: self.ext_depth_clamp_zero_one ^ other.ext_depth_clamp_zero_one, ext_depth_clip_control: self.ext_depth_clip_control ^ other.ext_depth_clip_control, ext_depth_clip_enable: self.ext_depth_clip_enable ^ other.ext_depth_clip_enable, ext_depth_range_unrestricted: self.ext_depth_range_unrestricted ^ other.ext_depth_range_unrestricted, ext_descriptor_buffer: self.ext_descriptor_buffer ^ other.ext_descriptor_buffer, ext_descriptor_indexing: self.ext_descriptor_indexing ^ other.ext_descriptor_indexing, ext_device_address_binding_report: self.ext_device_address_binding_report ^ other.ext_device_address_binding_report, ext_device_fault: self.ext_device_fault ^ other.ext_device_fault, ext_device_memory_report: self.ext_device_memory_report ^ other.ext_device_memory_report, ext_discard_rectangles: self.ext_discard_rectangles ^ other.ext_discard_rectangles, ext_display_control: self.ext_display_control ^ other.ext_display_control, ext_extended_dynamic_state: self.ext_extended_dynamic_state ^ other.ext_extended_dynamic_state, ext_extended_dynamic_state2: self.ext_extended_dynamic_state2 ^ other.ext_extended_dynamic_state2, ext_extended_dynamic_state3: self.ext_extended_dynamic_state3 ^ other.ext_extended_dynamic_state3, ext_external_memory_dma_buf: self.ext_external_memory_dma_buf ^ other.ext_external_memory_dma_buf, ext_external_memory_host: self.ext_external_memory_host ^ other.ext_external_memory_host, ext_filter_cubic: self.ext_filter_cubic ^ other.ext_filter_cubic, ext_fragment_density_map: self.ext_fragment_density_map ^ other.ext_fragment_density_map, ext_fragment_density_map2: self.ext_fragment_density_map2 ^ other.ext_fragment_density_map2, ext_fragment_shader_interlock: self.ext_fragment_shader_interlock ^ other.ext_fragment_shader_interlock, ext_full_screen_exclusive: self.ext_full_screen_exclusive ^ other.ext_full_screen_exclusive, ext_global_priority: self.ext_global_priority ^ other.ext_global_priority, ext_global_priority_query: self.ext_global_priority_query ^ other.ext_global_priority_query, ext_graphics_pipeline_library: self.ext_graphics_pipeline_library ^ other.ext_graphics_pipeline_library, ext_hdr_metadata: self.ext_hdr_metadata ^ other.ext_hdr_metadata, ext_host_query_reset: self.ext_host_query_reset ^ other.ext_host_query_reset, ext_image_2d_view_of_3d: self.ext_image_2d_view_of_3d ^ other.ext_image_2d_view_of_3d, ext_image_compression_control: self.ext_image_compression_control ^ other.ext_image_compression_control, ext_image_compression_control_swapchain: self.ext_image_compression_control_swapchain ^ other.ext_image_compression_control_swapchain, ext_image_drm_format_modifier: self.ext_image_drm_format_modifier ^ other.ext_image_drm_format_modifier, ext_image_robustness: self.ext_image_robustness ^ other.ext_image_robustness, ext_image_view_min_lod: self.ext_image_view_min_lod ^ other.ext_image_view_min_lod, ext_index_type_uint8: self.ext_index_type_uint8 ^ other.ext_index_type_uint8, ext_inline_uniform_block: self.ext_inline_uniform_block ^ other.ext_inline_uniform_block, ext_legacy_dithering: self.ext_legacy_dithering ^ other.ext_legacy_dithering, ext_line_rasterization: self.ext_line_rasterization ^ other.ext_line_rasterization, ext_load_store_op_none: self.ext_load_store_op_none ^ other.ext_load_store_op_none, ext_memory_budget: self.ext_memory_budget ^ other.ext_memory_budget, ext_memory_priority: self.ext_memory_priority ^ other.ext_memory_priority, ext_mesh_shader: self.ext_mesh_shader ^ other.ext_mesh_shader, ext_metal_objects: self.ext_metal_objects ^ other.ext_metal_objects, ext_multi_draw: self.ext_multi_draw ^ other.ext_multi_draw, ext_multisampled_render_to_single_sampled: self .ext_multisampled_render_to_single_sampled ^ other.ext_multisampled_render_to_single_sampled, ext_mutable_descriptor_type: self.ext_mutable_descriptor_type ^ other.ext_mutable_descriptor_type, ext_non_seamless_cube_map: self.ext_non_seamless_cube_map ^ other.ext_non_seamless_cube_map, ext_opacity_micromap: self.ext_opacity_micromap ^ other.ext_opacity_micromap, ext_pageable_device_local_memory: self.ext_pageable_device_local_memory ^ other.ext_pageable_device_local_memory, ext_pci_bus_info: self.ext_pci_bus_info ^ other.ext_pci_bus_info, ext_physical_device_drm: self.ext_physical_device_drm ^ other.ext_physical_device_drm, ext_pipeline_creation_cache_control: self.ext_pipeline_creation_cache_control ^ other.ext_pipeline_creation_cache_control, ext_pipeline_creation_feedback: self.ext_pipeline_creation_feedback ^ other.ext_pipeline_creation_feedback, ext_pipeline_properties: self.ext_pipeline_properties ^ other.ext_pipeline_properties, ext_pipeline_protected_access: self.ext_pipeline_protected_access ^ other.ext_pipeline_protected_access, ext_pipeline_robustness: self.ext_pipeline_robustness ^ other.ext_pipeline_robustness, ext_post_depth_coverage: self.ext_post_depth_coverage ^ other.ext_post_depth_coverage, ext_primitive_topology_list_restart: self.ext_primitive_topology_list_restart ^ other.ext_primitive_topology_list_restart, ext_primitives_generated_query: self.ext_primitives_generated_query ^ other.ext_primitives_generated_query, ext_private_data: self.ext_private_data ^ other.ext_private_data, ext_provoking_vertex: self.ext_provoking_vertex ^ other.ext_provoking_vertex, ext_queue_family_foreign: self.ext_queue_family_foreign ^ other.ext_queue_family_foreign, ext_rasterization_order_attachment_access: self .ext_rasterization_order_attachment_access ^ other.ext_rasterization_order_attachment_access, ext_rgba10x6_formats: self.ext_rgba10x6_formats ^ other.ext_rgba10x6_formats, ext_robustness2: self.ext_robustness2 ^ other.ext_robustness2, ext_sample_locations: self.ext_sample_locations ^ other.ext_sample_locations, ext_sampler_filter_minmax: self.ext_sampler_filter_minmax ^ other.ext_sampler_filter_minmax, ext_scalar_block_layout: self.ext_scalar_block_layout ^ other.ext_scalar_block_layout, ext_separate_stencil_usage: self.ext_separate_stencil_usage ^ other.ext_separate_stencil_usage, ext_shader_atomic_float: self.ext_shader_atomic_float ^ other.ext_shader_atomic_float, ext_shader_atomic_float2: self.ext_shader_atomic_float2 ^ other.ext_shader_atomic_float2, ext_shader_demote_to_helper_invocation: self.ext_shader_demote_to_helper_invocation ^ other.ext_shader_demote_to_helper_invocation, ext_shader_image_atomic_int64: self.ext_shader_image_atomic_int64 ^ other.ext_shader_image_atomic_int64, ext_shader_module_identifier: self.ext_shader_module_identifier ^ other.ext_shader_module_identifier, ext_shader_stencil_export: self.ext_shader_stencil_export ^ other.ext_shader_stencil_export, ext_shader_subgroup_ballot: self.ext_shader_subgroup_ballot ^ other.ext_shader_subgroup_ballot, ext_shader_subgroup_vote: self.ext_shader_subgroup_vote ^ other.ext_shader_subgroup_vote, ext_shader_viewport_index_layer: self.ext_shader_viewport_index_layer ^ other.ext_shader_viewport_index_layer, ext_subgroup_size_control: self.ext_subgroup_size_control ^ other.ext_subgroup_size_control, ext_subpass_merge_feedback: self.ext_subpass_merge_feedback ^ other.ext_subpass_merge_feedback, ext_swapchain_maintenance1: self.ext_swapchain_maintenance1 ^ other.ext_swapchain_maintenance1, ext_texel_buffer_alignment: self.ext_texel_buffer_alignment ^ other.ext_texel_buffer_alignment, ext_texture_compression_astc_hdr: self.ext_texture_compression_astc_hdr ^ other.ext_texture_compression_astc_hdr, ext_tooling_info: self.ext_tooling_info ^ other.ext_tooling_info, ext_transform_feedback: self.ext_transform_feedback ^ other.ext_transform_feedback, ext_validation_cache: self.ext_validation_cache ^ other.ext_validation_cache, ext_vertex_attribute_divisor: self.ext_vertex_attribute_divisor ^ other.ext_vertex_attribute_divisor, ext_vertex_input_dynamic_state: self.ext_vertex_input_dynamic_state ^ other.ext_vertex_input_dynamic_state, ext_video_encode_h264: self.ext_video_encode_h264 ^ other.ext_video_encode_h264, ext_video_encode_h265: self.ext_video_encode_h265 ^ other.ext_video_encode_h265, ext_ycbcr_2plane_444_formats: self.ext_ycbcr_2plane_444_formats ^ other.ext_ycbcr_2plane_444_formats, ext_ycbcr_image_arrays: self.ext_ycbcr_image_arrays ^ other.ext_ycbcr_image_arrays, amd_buffer_marker: self.amd_buffer_marker ^ other.amd_buffer_marker, amd_device_coherent_memory: self.amd_device_coherent_memory ^ other.amd_device_coherent_memory, amd_display_native_hdr: self.amd_display_native_hdr ^ other.amd_display_native_hdr, amd_draw_indirect_count: self.amd_draw_indirect_count ^ other.amd_draw_indirect_count, amd_gcn_shader: self.amd_gcn_shader ^ other.amd_gcn_shader, amd_gpu_shader_half_float: self.amd_gpu_shader_half_float ^ other.amd_gpu_shader_half_float, amd_gpu_shader_int16: self.amd_gpu_shader_int16 ^ other.amd_gpu_shader_int16, amd_memory_overallocation_behavior: self.amd_memory_overallocation_behavior ^ other.amd_memory_overallocation_behavior, amd_mixed_attachment_samples: self.amd_mixed_attachment_samples ^ other.amd_mixed_attachment_samples, amd_pipeline_compiler_control: self.amd_pipeline_compiler_control ^ other.amd_pipeline_compiler_control, amd_rasterization_order: self.amd_rasterization_order ^ other.amd_rasterization_order, amd_shader_ballot: self.amd_shader_ballot ^ other.amd_shader_ballot, amd_shader_core_properties: self.amd_shader_core_properties ^ other.amd_shader_core_properties, amd_shader_core_properties2: self.amd_shader_core_properties2 ^ other.amd_shader_core_properties2, amd_shader_early_and_late_fragment_tests: self.amd_shader_early_and_late_fragment_tests ^ other.amd_shader_early_and_late_fragment_tests, amd_shader_explicit_vertex_parameter: self.amd_shader_explicit_vertex_parameter ^ other.amd_shader_explicit_vertex_parameter, amd_shader_fragment_mask: self.amd_shader_fragment_mask ^ other.amd_shader_fragment_mask, amd_shader_image_load_store_lod: self.amd_shader_image_load_store_lod ^ other.amd_shader_image_load_store_lod, amd_shader_info: self.amd_shader_info ^ other.amd_shader_info, amd_shader_trinary_minmax: self.amd_shader_trinary_minmax ^ other.amd_shader_trinary_minmax, amd_texture_gather_bias_lod: self.amd_texture_gather_bias_lod ^ other.amd_texture_gather_bias_lod, android_external_memory_android_hardware_buffer: self .android_external_memory_android_hardware_buffer ^ other.android_external_memory_android_hardware_buffer, arm_rasterization_order_attachment_access: self .arm_rasterization_order_attachment_access ^ other.arm_rasterization_order_attachment_access, arm_shader_core_builtins: self.arm_shader_core_builtins ^ other.arm_shader_core_builtins, fuchsia_buffer_collection: self.fuchsia_buffer_collection ^ other.fuchsia_buffer_collection, fuchsia_external_memory: self.fuchsia_external_memory ^ other.fuchsia_external_memory, fuchsia_external_semaphore: self.fuchsia_external_semaphore ^ other.fuchsia_external_semaphore, ggp_frame_token: self.ggp_frame_token ^ other.ggp_frame_token, google_decorate_string: self.google_decorate_string ^ other.google_decorate_string, google_display_timing: self.google_display_timing ^ other.google_display_timing, google_hlsl_functionality1: self.google_hlsl_functionality1 ^ other.google_hlsl_functionality1, google_user_type: self.google_user_type ^ other.google_user_type, huawei_invocation_mask: self.huawei_invocation_mask ^ other.huawei_invocation_mask, huawei_subpass_shading: self.huawei_subpass_shading ^ other.huawei_subpass_shading, img_filter_cubic: self.img_filter_cubic ^ other.img_filter_cubic, img_format_pvrtc: self.img_format_pvrtc ^ other.img_format_pvrtc, intel_performance_query: self.intel_performance_query ^ other.intel_performance_query, intel_shader_integer_functions2: self.intel_shader_integer_functions2 ^ other.intel_shader_integer_functions2, nvx_binary_import: self.nvx_binary_import ^ other.nvx_binary_import, nvx_image_view_handle: self.nvx_image_view_handle ^ other.nvx_image_view_handle, nvx_multiview_per_view_attributes: self.nvx_multiview_per_view_attributes ^ other.nvx_multiview_per_view_attributes, nv_acquire_winrt_display: self.nv_acquire_winrt_display ^ other.nv_acquire_winrt_display, nv_clip_space_w_scaling: self.nv_clip_space_w_scaling ^ other.nv_clip_space_w_scaling, nv_compute_shader_derivatives: self.nv_compute_shader_derivatives ^ other.nv_compute_shader_derivatives, nv_cooperative_matrix: self.nv_cooperative_matrix ^ other.nv_cooperative_matrix, nv_copy_memory_indirect: self.nv_copy_memory_indirect ^ other.nv_copy_memory_indirect, nv_corner_sampled_image: self.nv_corner_sampled_image ^ other.nv_corner_sampled_image, nv_coverage_reduction_mode: self.nv_coverage_reduction_mode ^ other.nv_coverage_reduction_mode, nv_dedicated_allocation: self.nv_dedicated_allocation ^ other.nv_dedicated_allocation, nv_dedicated_allocation_image_aliasing: self.nv_dedicated_allocation_image_aliasing ^ other.nv_dedicated_allocation_image_aliasing, nv_device_diagnostic_checkpoints: self.nv_device_diagnostic_checkpoints ^ other.nv_device_diagnostic_checkpoints, nv_device_diagnostics_config: self.nv_device_diagnostics_config ^ other.nv_device_diagnostics_config, nv_device_generated_commands: self.nv_device_generated_commands ^ other.nv_device_generated_commands, nv_external_memory: self.nv_external_memory ^ other.nv_external_memory, nv_external_memory_rdma: self.nv_external_memory_rdma ^ other.nv_external_memory_rdma, nv_external_memory_win32: self.nv_external_memory_win32 ^ other.nv_external_memory_win32, nv_fill_rectangle: self.nv_fill_rectangle ^ other.nv_fill_rectangle, nv_fragment_coverage_to_color: self.nv_fragment_coverage_to_color ^ other.nv_fragment_coverage_to_color, nv_fragment_shader_barycentric: self.nv_fragment_shader_barycentric ^ other.nv_fragment_shader_barycentric, nv_fragment_shading_rate_enums: self.nv_fragment_shading_rate_enums ^ other.nv_fragment_shading_rate_enums, nv_framebuffer_mixed_samples: self.nv_framebuffer_mixed_samples ^ other.nv_framebuffer_mixed_samples, nv_geometry_shader_passthrough: self.nv_geometry_shader_passthrough ^ other.nv_geometry_shader_passthrough, nv_glsl_shader: self.nv_glsl_shader ^ other.nv_glsl_shader, nv_inherited_viewport_scissor: self.nv_inherited_viewport_scissor ^ other.nv_inherited_viewport_scissor, nv_linear_color_attachment: self.nv_linear_color_attachment ^ other.nv_linear_color_attachment, nv_memory_decompression: self.nv_memory_decompression ^ other.nv_memory_decompression, nv_mesh_shader: self.nv_mesh_shader ^ other.nv_mesh_shader, nv_optical_flow: self.nv_optical_flow ^ other.nv_optical_flow, nv_present_barrier: self.nv_present_barrier ^ other.nv_present_barrier, nv_ray_tracing: self.nv_ray_tracing ^ other.nv_ray_tracing, nv_ray_tracing_invocation_reorder: self.nv_ray_tracing_invocation_reorder ^ other.nv_ray_tracing_invocation_reorder, nv_ray_tracing_motion_blur: self.nv_ray_tracing_motion_blur ^ other.nv_ray_tracing_motion_blur, nv_representative_fragment_test: self.nv_representative_fragment_test ^ other.nv_representative_fragment_test, nv_sample_mask_override_coverage: self.nv_sample_mask_override_coverage ^ other.nv_sample_mask_override_coverage, nv_scissor_exclusive: self.nv_scissor_exclusive ^ other.nv_scissor_exclusive, nv_shader_image_footprint: self.nv_shader_image_footprint ^ other.nv_shader_image_footprint, nv_shader_sm_builtins: self.nv_shader_sm_builtins ^ other.nv_shader_sm_builtins, nv_shader_subgroup_partitioned: self.nv_shader_subgroup_partitioned ^ other.nv_shader_subgroup_partitioned, nv_shading_rate_image: self.nv_shading_rate_image ^ other.nv_shading_rate_image, nv_viewport_array2: self.nv_viewport_array2 ^ other.nv_viewport_array2, nv_viewport_swizzle: self.nv_viewport_swizzle ^ other.nv_viewport_swizzle, nv_win32_keyed_mutex: self.nv_win32_keyed_mutex ^ other.nv_win32_keyed_mutex, qcom_fragment_density_map_offset: self.qcom_fragment_density_map_offset ^ other.qcom_fragment_density_map_offset, qcom_image_processing: self.qcom_image_processing ^ other.qcom_image_processing, qcom_multiview_per_view_viewports: self.qcom_multiview_per_view_viewports ^ other.qcom_multiview_per_view_viewports, qcom_render_pass_shader_resolve: self.qcom_render_pass_shader_resolve ^ other.qcom_render_pass_shader_resolve, qcom_render_pass_store_ops: self.qcom_render_pass_store_ops ^ other.qcom_render_pass_store_ops, qcom_render_pass_transform: self.qcom_render_pass_transform ^ other.qcom_render_pass_transform, qcom_rotated_copy_commands: self.qcom_rotated_copy_commands ^ other.qcom_rotated_copy_commands, qcom_tile_properties: self.qcom_tile_properties ^ other.qcom_tile_properties, sec_amigo_profiling: self.sec_amigo_profiling ^ other.sec_amigo_profiling, valve_descriptor_set_host_mapping: self.valve_descriptor_set_host_mapping ^ other.valve_descriptor_set_host_mapping, valve_mutable_descriptor_type: self.valve_mutable_descriptor_type ^ other.valve_mutable_descriptor_type, _ne: crate::NonExhaustive(()), } } } impl std::ops::BitAnd for DeviceExtensions { type Output = DeviceExtensions; #[inline] fn bitand(self, rhs: Self) -> Self::Output { self.union(&rhs) } } impl std::ops::BitAndAssign for DeviceExtensions { #[inline] fn bitand_assign(&mut self, rhs: Self) { *self = self.union(&rhs); } } impl std::ops::BitOr for DeviceExtensions { type Output = DeviceExtensions; #[inline] fn bitor(self, rhs: Self) -> Self::Output { self.intersection(&rhs) } } impl std::ops::BitOrAssign for DeviceExtensions { #[inline] fn bitor_assign(&mut self, rhs: Self) { *self = self.intersection(&rhs); } } impl std::ops::BitXor for DeviceExtensions { type Output = DeviceExtensions; #[inline] fn bitxor(self, rhs: Self) -> Self::Output { self.symmetric_difference(&rhs) } } impl std::ops::BitXorAssign for DeviceExtensions { #[inline] fn bitxor_assign(&mut self, rhs: Self) { *self = self.symmetric_difference(&rhs); } } impl std::ops::Sub for DeviceExtensions { type Output = DeviceExtensions; #[inline] fn sub(self, rhs: Self) -> Self::Output { self.difference(&rhs) } } impl std::ops::SubAssign for DeviceExtensions { #[inline] fn sub_assign(&mut self, rhs: Self) { *self = self.difference(&rhs); } } impl std::fmt::Debug for DeviceExtensions { #[allow(unused_assignments)] fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> { write!(f, "[")?; let mut first = true; if self.khr_16bit_storage { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_16bit_storage")?; } if self.khr_8bit_storage { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_8bit_storage")?; } if self.khr_acceleration_structure { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_acceleration_structure")?; } if self.khr_bind_memory2 { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_bind_memory2")?; } if self.khr_buffer_device_address { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_buffer_device_address")?; } if self.khr_copy_commands2 { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_copy_commands2")?; } if self.khr_create_renderpass2 { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_create_renderpass2")?; } if self.khr_dedicated_allocation { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_dedicated_allocation")?; } if self.khr_deferred_host_operations { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_deferred_host_operations")?; } if self.khr_depth_stencil_resolve { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_depth_stencil_resolve")?; } if self.khr_descriptor_update_template { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_descriptor_update_template")?; } if self.khr_device_group { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_device_group")?; } if self.khr_display_swapchain { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_display_swapchain")?; } if self.khr_draw_indirect_count { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_draw_indirect_count")?; } if self.khr_driver_properties { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_driver_properties")?; } if self.khr_dynamic_rendering { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_dynamic_rendering")?; } if self.khr_external_fence { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_external_fence")?; } if self.khr_external_fence_fd { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_external_fence_fd")?; } if self.khr_external_fence_win32 { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_external_fence_win32")?; } if self.khr_external_memory { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_external_memory")?; } if self.khr_external_memory_fd { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_external_memory_fd")?; } if self.khr_external_memory_win32 { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_external_memory_win32")?; } if self.khr_external_semaphore { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_external_semaphore")?; } if self.khr_external_semaphore_fd { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_external_semaphore_fd")?; } if self.khr_external_semaphore_win32 { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_external_semaphore_win32")?; } if self.khr_format_feature_flags2 { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_format_feature_flags2")?; } if self.khr_fragment_shader_barycentric { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_fragment_shader_barycentric")?; } if self.khr_fragment_shading_rate { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_fragment_shading_rate")?; } if self.khr_get_memory_requirements2 { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_get_memory_requirements2")?; } if self.khr_global_priority { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_global_priority")?; } if self.khr_image_format_list { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_image_format_list")?; } if self.khr_imageless_framebuffer { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_imageless_framebuffer")?; } if self.khr_incremental_present { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_incremental_present")?; } if self.khr_maintenance1 { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_maintenance1")?; } if self.khr_maintenance2 { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_maintenance2")?; } if self.khr_maintenance3 { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_maintenance3")?; } if self.khr_maintenance4 { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_maintenance4")?; } if self.khr_multiview { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_multiview")?; } if self.khr_performance_query { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_performance_query")?; } if self.khr_pipeline_executable_properties { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_pipeline_executable_properties")?; } if self.khr_pipeline_library { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_pipeline_library")?; } if self.khr_portability_subset { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_portability_subset")?; } if self.khr_present_id { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_present_id")?; } if self.khr_present_wait { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_present_wait")?; } if self.khr_push_descriptor { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_push_descriptor")?; } if self.khr_ray_query { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_ray_query")?; } if self.khr_ray_tracing_maintenance1 { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_ray_tracing_maintenance1")?; } if self.khr_ray_tracing_pipeline { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_ray_tracing_pipeline")?; } if self.khr_relaxed_block_layout { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_relaxed_block_layout")?; } if self.khr_sampler_mirror_clamp_to_edge { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_sampler_mirror_clamp_to_edge")?; } if self.khr_sampler_ycbcr_conversion { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_sampler_ycbcr_conversion")?; } if self.khr_separate_depth_stencil_layouts { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_separate_depth_stencil_layouts")?; } if self.khr_shader_atomic_int64 { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_shader_atomic_int64")?; } if self.khr_shader_clock { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_shader_clock")?; } if self.khr_shader_draw_parameters { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_shader_draw_parameters")?; } if self.khr_shader_float16_int8 { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_shader_float16_int8")?; } if self.khr_shader_float_controls { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_shader_float_controls")?; } if self.khr_shader_integer_dot_product { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_shader_integer_dot_product")?; } if self.khr_shader_non_semantic_info { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_shader_non_semantic_info")?; } if self.khr_shader_subgroup_extended_types { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_shader_subgroup_extended_types")?; } if self.khr_shader_subgroup_uniform_control_flow { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_shader_subgroup_uniform_control_flow")?; } if self.khr_shader_terminate_invocation { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_shader_terminate_invocation")?; } if self.khr_shared_presentable_image { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_shared_presentable_image")?; } if self.khr_spirv_1_4 { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_spirv_1_4")?; } if self.khr_storage_buffer_storage_class { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_storage_buffer_storage_class")?; } if self.khr_swapchain { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_swapchain")?; } if self.khr_swapchain_mutable_format { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_swapchain_mutable_format")?; } if self.khr_synchronization2 { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_synchronization2")?; } if self.khr_timeline_semaphore { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_timeline_semaphore")?; } if self.khr_uniform_buffer_standard_layout { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_uniform_buffer_standard_layout")?; } if self.khr_variable_pointers { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_variable_pointers")?; } if self.khr_video_decode_h264 { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_video_decode_h264")?; } if self.khr_video_decode_h265 { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_video_decode_h265")?; } if self.khr_video_decode_queue { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_video_decode_queue")?; } if self.khr_video_encode_queue { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_video_encode_queue")?; } if self.khr_video_queue { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_video_queue")?; } if self.khr_vulkan_memory_model { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_vulkan_memory_model")?; } if self.khr_win32_keyed_mutex { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_win32_keyed_mutex")?; } if self.khr_workgroup_memory_explicit_layout { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_workgroup_memory_explicit_layout")?; } if self.khr_zero_initialize_workgroup_memory { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_KHR_zero_initialize_workgroup_memory")?; } if self.ext_4444_formats { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_4444_formats")?; } if self.ext_astc_decode_mode { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_astc_decode_mode")?; } if self.ext_attachment_feedback_loop_layout { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_attachment_feedback_loop_layout")?; } if self.ext_blend_operation_advanced { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_blend_operation_advanced")?; } if self.ext_border_color_swizzle { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_border_color_swizzle")?; } if self.ext_buffer_device_address { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_buffer_device_address")?; } if self.ext_calibrated_timestamps { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_calibrated_timestamps")?; } if self.ext_color_write_enable { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_color_write_enable")?; } if self.ext_conditional_rendering { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_conditional_rendering")?; } if self.ext_conservative_rasterization { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_conservative_rasterization")?; } if self.ext_custom_border_color { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_custom_border_color")?; } if self.ext_debug_marker { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_debug_marker")?; } if self.ext_depth_clamp_zero_one { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_depth_clamp_zero_one")?; } if self.ext_depth_clip_control { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_depth_clip_control")?; } if self.ext_depth_clip_enable { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_depth_clip_enable")?; } if self.ext_depth_range_unrestricted { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_depth_range_unrestricted")?; } if self.ext_descriptor_buffer { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_descriptor_buffer")?; } if self.ext_descriptor_indexing { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_descriptor_indexing")?; } if self.ext_device_address_binding_report { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_device_address_binding_report")?; } if self.ext_device_fault { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_device_fault")?; } if self.ext_device_memory_report { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_device_memory_report")?; } if self.ext_discard_rectangles { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_discard_rectangles")?; } if self.ext_display_control { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_display_control")?; } if self.ext_extended_dynamic_state { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_extended_dynamic_state")?; } if self.ext_extended_dynamic_state2 { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_extended_dynamic_state2")?; } if self.ext_extended_dynamic_state3 { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_extended_dynamic_state3")?; } if self.ext_external_memory_dma_buf { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_external_memory_dma_buf")?; } if self.ext_external_memory_host { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_external_memory_host")?; } if self.ext_filter_cubic { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_filter_cubic")?; } if self.ext_fragment_density_map { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_fragment_density_map")?; } if self.ext_fragment_density_map2 { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_fragment_density_map2")?; } if self.ext_fragment_shader_interlock { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_fragment_shader_interlock")?; } if self.ext_full_screen_exclusive { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_full_screen_exclusive")?; } if self.ext_global_priority { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_global_priority")?; } if self.ext_global_priority_query { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_global_priority_query")?; } if self.ext_graphics_pipeline_library { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_graphics_pipeline_library")?; } if self.ext_hdr_metadata { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_hdr_metadata")?; } if self.ext_host_query_reset { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_host_query_reset")?; } if self.ext_image_2d_view_of_3d { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_image_2d_view_of_3d")?; } if self.ext_image_compression_control { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_image_compression_control")?; } if self.ext_image_compression_control_swapchain { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_image_compression_control_swapchain")?; } if self.ext_image_drm_format_modifier { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_image_drm_format_modifier")?; } if self.ext_image_robustness { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_image_robustness")?; } if self.ext_image_view_min_lod { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_image_view_min_lod")?; } if self.ext_index_type_uint8 { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_index_type_uint8")?; } if self.ext_inline_uniform_block { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_inline_uniform_block")?; } if self.ext_legacy_dithering { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_legacy_dithering")?; } if self.ext_line_rasterization { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_line_rasterization")?; } if self.ext_load_store_op_none { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_load_store_op_none")?; } if self.ext_memory_budget { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_memory_budget")?; } if self.ext_memory_priority { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_memory_priority")?; } if self.ext_mesh_shader { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_mesh_shader")?; } if self.ext_metal_objects { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_metal_objects")?; } if self.ext_multi_draw { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_multi_draw")?; } if self.ext_multisampled_render_to_single_sampled { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_multisampled_render_to_single_sampled")?; } if self.ext_mutable_descriptor_type { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_mutable_descriptor_type")?; } if self.ext_non_seamless_cube_map { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_non_seamless_cube_map")?; } if self.ext_opacity_micromap { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_opacity_micromap")?; } if self.ext_pageable_device_local_memory { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_pageable_device_local_memory")?; } if self.ext_pci_bus_info { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_pci_bus_info")?; } if self.ext_physical_device_drm { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_physical_device_drm")?; } if self.ext_pipeline_creation_cache_control { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_pipeline_creation_cache_control")?; } if self.ext_pipeline_creation_feedback { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_pipeline_creation_feedback")?; } if self.ext_pipeline_properties { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_pipeline_properties")?; } if self.ext_pipeline_protected_access { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_pipeline_protected_access")?; } if self.ext_pipeline_robustness { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_pipeline_robustness")?; } if self.ext_post_depth_coverage { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_post_depth_coverage")?; } if self.ext_primitive_topology_list_restart { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_primitive_topology_list_restart")?; } if self.ext_primitives_generated_query { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_primitives_generated_query")?; } if self.ext_private_data { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_private_data")?; } if self.ext_provoking_vertex { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_provoking_vertex")?; } if self.ext_queue_family_foreign { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_queue_family_foreign")?; } if self.ext_rasterization_order_attachment_access { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_rasterization_order_attachment_access")?; } if self.ext_rgba10x6_formats { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_rgba10x6_formats")?; } if self.ext_robustness2 { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_robustness2")?; } if self.ext_sample_locations { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_sample_locations")?; } if self.ext_sampler_filter_minmax { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_sampler_filter_minmax")?; } if self.ext_scalar_block_layout { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_scalar_block_layout")?; } if self.ext_separate_stencil_usage { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_separate_stencil_usage")?; } if self.ext_shader_atomic_float { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_shader_atomic_float")?; } if self.ext_shader_atomic_float2 { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_shader_atomic_float2")?; } if self.ext_shader_demote_to_helper_invocation { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_shader_demote_to_helper_invocation")?; } if self.ext_shader_image_atomic_int64 { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_shader_image_atomic_int64")?; } if self.ext_shader_module_identifier { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_shader_module_identifier")?; } if self.ext_shader_stencil_export { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_shader_stencil_export")?; } if self.ext_shader_subgroup_ballot { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_shader_subgroup_ballot")?; } if self.ext_shader_subgroup_vote { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_shader_subgroup_vote")?; } if self.ext_shader_viewport_index_layer { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_shader_viewport_index_layer")?; } if self.ext_subgroup_size_control { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_subgroup_size_control")?; } if self.ext_subpass_merge_feedback { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_subpass_merge_feedback")?; } if self.ext_swapchain_maintenance1 { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_swapchain_maintenance1")?; } if self.ext_texel_buffer_alignment { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_texel_buffer_alignment")?; } if self.ext_texture_compression_astc_hdr { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_texture_compression_astc_hdr")?; } if self.ext_tooling_info { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_tooling_info")?; } if self.ext_transform_feedback { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_transform_feedback")?; } if self.ext_validation_cache { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_validation_cache")?; } if self.ext_vertex_attribute_divisor { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_vertex_attribute_divisor")?; } if self.ext_vertex_input_dynamic_state { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_vertex_input_dynamic_state")?; } if self.ext_video_encode_h264 { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_video_encode_h264")?; } if self.ext_video_encode_h265 { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_video_encode_h265")?; } if self.ext_ycbcr_2plane_444_formats { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_ycbcr_2plane_444_formats")?; } if self.ext_ycbcr_image_arrays { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_EXT_ycbcr_image_arrays")?; } if self.amd_buffer_marker { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_AMD_buffer_marker")?; } if self.amd_device_coherent_memory { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_AMD_device_coherent_memory")?; } if self.amd_display_native_hdr { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_AMD_display_native_hdr")?; } if self.amd_draw_indirect_count { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_AMD_draw_indirect_count")?; } if self.amd_gcn_shader { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_AMD_gcn_shader")?; } if self.amd_gpu_shader_half_float { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_AMD_gpu_shader_half_float")?; } if self.amd_gpu_shader_int16 { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_AMD_gpu_shader_int16")?; } if self.amd_memory_overallocation_behavior { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_AMD_memory_overallocation_behavior")?; } if self.amd_mixed_attachment_samples { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_AMD_mixed_attachment_samples")?; } if self.amd_pipeline_compiler_control { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_AMD_pipeline_compiler_control")?; } if self.amd_rasterization_order { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_AMD_rasterization_order")?; } if self.amd_shader_ballot { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_AMD_shader_ballot")?; } if self.amd_shader_core_properties { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_AMD_shader_core_properties")?; } if self.amd_shader_core_properties2 { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_AMD_shader_core_properties2")?; } if self.amd_shader_early_and_late_fragment_tests { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_AMD_shader_early_and_late_fragment_tests")?; } if self.amd_shader_explicit_vertex_parameter { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_AMD_shader_explicit_vertex_parameter")?; } if self.amd_shader_fragment_mask { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_AMD_shader_fragment_mask")?; } if self.amd_shader_image_load_store_lod { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_AMD_shader_image_load_store_lod")?; } if self.amd_shader_info { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_AMD_shader_info")?; } if self.amd_shader_trinary_minmax { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_AMD_shader_trinary_minmax")?; } if self.amd_texture_gather_bias_lod { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_AMD_texture_gather_bias_lod")?; } if self.android_external_memory_android_hardware_buffer { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_ANDROID_external_memory_android_hardware_buffer")?; } if self.arm_rasterization_order_attachment_access { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_ARM_rasterization_order_attachment_access")?; } if self.arm_shader_core_builtins { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_ARM_shader_core_builtins")?; } if self.fuchsia_buffer_collection { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_FUCHSIA_buffer_collection")?; } if self.fuchsia_external_memory { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_FUCHSIA_external_memory")?; } if self.fuchsia_external_semaphore { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_FUCHSIA_external_semaphore")?; } if self.ggp_frame_token { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_GGP_frame_token")?; } if self.google_decorate_string { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_GOOGLE_decorate_string")?; } if self.google_display_timing { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_GOOGLE_display_timing")?; } if self.google_hlsl_functionality1 { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_GOOGLE_hlsl_functionality1")?; } if self.google_user_type { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_GOOGLE_user_type")?; } if self.huawei_invocation_mask { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_HUAWEI_invocation_mask")?; } if self.huawei_subpass_shading { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_HUAWEI_subpass_shading")?; } if self.img_filter_cubic { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_IMG_filter_cubic")?; } if self.img_format_pvrtc { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_IMG_format_pvrtc")?; } if self.intel_performance_query { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_INTEL_performance_query")?; } if self.intel_shader_integer_functions2 { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_INTEL_shader_integer_functions2")?; } if self.nvx_binary_import { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NVX_binary_import")?; } if self.nvx_image_view_handle { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NVX_image_view_handle")?; } if self.nvx_multiview_per_view_attributes { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NVX_multiview_per_view_attributes")?; } if self.nv_acquire_winrt_display { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_acquire_winrt_display")?; } if self.nv_clip_space_w_scaling { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_clip_space_w_scaling")?; } if self.nv_compute_shader_derivatives { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_compute_shader_derivatives")?; } if self.nv_cooperative_matrix { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_cooperative_matrix")?; } if self.nv_copy_memory_indirect { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_copy_memory_indirect")?; } if self.nv_corner_sampled_image { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_corner_sampled_image")?; } if self.nv_coverage_reduction_mode { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_coverage_reduction_mode")?; } if self.nv_dedicated_allocation { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_dedicated_allocation")?; } if self.nv_dedicated_allocation_image_aliasing { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_dedicated_allocation_image_aliasing")?; } if self.nv_device_diagnostic_checkpoints { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_device_diagnostic_checkpoints")?; } if self.nv_device_diagnostics_config { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_device_diagnostics_config")?; } if self.nv_device_generated_commands { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_device_generated_commands")?; } if self.nv_external_memory { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_external_memory")?; } if self.nv_external_memory_rdma { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_external_memory_rdma")?; } if self.nv_external_memory_win32 { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_external_memory_win32")?; } if self.nv_fill_rectangle { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_fill_rectangle")?; } if self.nv_fragment_coverage_to_color { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_fragment_coverage_to_color")?; } if self.nv_fragment_shader_barycentric { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_fragment_shader_barycentric")?; } if self.nv_fragment_shading_rate_enums { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_fragment_shading_rate_enums")?; } if self.nv_framebuffer_mixed_samples { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_framebuffer_mixed_samples")?; } if self.nv_geometry_shader_passthrough { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_geometry_shader_passthrough")?; } if self.nv_glsl_shader { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_glsl_shader")?; } if self.nv_inherited_viewport_scissor { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_inherited_viewport_scissor")?; } if self.nv_linear_color_attachment { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_linear_color_attachment")?; } if self.nv_memory_decompression { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_memory_decompression")?; } if self.nv_mesh_shader { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_mesh_shader")?; } if self.nv_optical_flow { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_optical_flow")?; } if self.nv_present_barrier { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_present_barrier")?; } if self.nv_ray_tracing { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_ray_tracing")?; } if self.nv_ray_tracing_invocation_reorder { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_ray_tracing_invocation_reorder")?; } if self.nv_ray_tracing_motion_blur { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_ray_tracing_motion_blur")?; } if self.nv_representative_fragment_test { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_representative_fragment_test")?; } if self.nv_sample_mask_override_coverage { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_sample_mask_override_coverage")?; } if self.nv_scissor_exclusive { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_scissor_exclusive")?; } if self.nv_shader_image_footprint { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_shader_image_footprint")?; } if self.nv_shader_sm_builtins { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_shader_sm_builtins")?; } if self.nv_shader_subgroup_partitioned { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_shader_subgroup_partitioned")?; } if self.nv_shading_rate_image { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_shading_rate_image")?; } if self.nv_viewport_array2 { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_viewport_array2")?; } if self.nv_viewport_swizzle { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_viewport_swizzle")?; } if self.nv_win32_keyed_mutex { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_NV_win32_keyed_mutex")?; } if self.qcom_fragment_density_map_offset { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_QCOM_fragment_density_map_offset")?; } if self.qcom_image_processing { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_QCOM_image_processing")?; } if self.qcom_multiview_per_view_viewports { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_QCOM_multiview_per_view_viewports")?; } if self.qcom_render_pass_shader_resolve { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_QCOM_render_pass_shader_resolve")?; } if self.qcom_render_pass_store_ops { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_QCOM_render_pass_store_ops")?; } if self.qcom_render_pass_transform { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_QCOM_render_pass_transform")?; } if self.qcom_rotated_copy_commands { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_QCOM_rotated_copy_commands")?; } if self.qcom_tile_properties { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_QCOM_tile_properties")?; } if self.sec_amigo_profiling { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_SEC_amigo_profiling")?; } if self.valve_descriptor_set_host_mapping { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_VALVE_descriptor_set_host_mapping")?; } if self.valve_mutable_descriptor_type { if !first { write!(f, ", ")? } else { first = false; } f.write_str("VK_VALVE_mutable_descriptor_type")?; } write!(f, "]") } } impl<'a> FromIterator<&'a str> for DeviceExtensions { fn from_iter(iter: I) -> Self where I: IntoIterator, { let mut extensions = Self::empty(); for name in iter { match name { "VK_KHR_16bit_storage" => { extensions.khr_16bit_storage = true; } "VK_KHR_8bit_storage" => { extensions.khr_8bit_storage = true; } "VK_KHR_acceleration_structure" => { extensions.khr_acceleration_structure = true; } "VK_KHR_bind_memory2" => { extensions.khr_bind_memory2 = true; } "VK_KHR_buffer_device_address" => { extensions.khr_buffer_device_address = true; } "VK_KHR_copy_commands2" => { extensions.khr_copy_commands2 = true; } "VK_KHR_create_renderpass2" => { extensions.khr_create_renderpass2 = true; } "VK_KHR_dedicated_allocation" => { extensions.khr_dedicated_allocation = true; } "VK_KHR_deferred_host_operations" => { extensions.khr_deferred_host_operations = true; } "VK_KHR_depth_stencil_resolve" => { extensions.khr_depth_stencil_resolve = true; } "VK_KHR_descriptor_update_template" => { extensions.khr_descriptor_update_template = true; } "VK_KHR_device_group" => { extensions.khr_device_group = true; } "VK_KHR_display_swapchain" => { extensions.khr_display_swapchain = true; } "VK_KHR_draw_indirect_count" => { extensions.khr_draw_indirect_count = true; } "VK_KHR_driver_properties" => { extensions.khr_driver_properties = true; } "VK_KHR_dynamic_rendering" => { extensions.khr_dynamic_rendering = true; } "VK_KHR_external_fence" => { extensions.khr_external_fence = true; } "VK_KHR_external_fence_fd" => { extensions.khr_external_fence_fd = true; } "VK_KHR_external_fence_win32" => { extensions.khr_external_fence_win32 = true; } "VK_KHR_external_memory" => { extensions.khr_external_memory = true; } "VK_KHR_external_memory_fd" => { extensions.khr_external_memory_fd = true; } "VK_KHR_external_memory_win32" => { extensions.khr_external_memory_win32 = true; } "VK_KHR_external_semaphore" => { extensions.khr_external_semaphore = true; } "VK_KHR_external_semaphore_fd" => { extensions.khr_external_semaphore_fd = true; } "VK_KHR_external_semaphore_win32" => { extensions.khr_external_semaphore_win32 = true; } "VK_KHR_format_feature_flags2" => { extensions.khr_format_feature_flags2 = true; } "VK_KHR_fragment_shader_barycentric" => { extensions.khr_fragment_shader_barycentric = true; } "VK_KHR_fragment_shading_rate" => { extensions.khr_fragment_shading_rate = true; } "VK_KHR_get_memory_requirements2" => { extensions.khr_get_memory_requirements2 = true; } "VK_KHR_global_priority" => { extensions.khr_global_priority = true; } "VK_KHR_image_format_list" => { extensions.khr_image_format_list = true; } "VK_KHR_imageless_framebuffer" => { extensions.khr_imageless_framebuffer = true; } "VK_KHR_incremental_present" => { extensions.khr_incremental_present = true; } "VK_KHR_maintenance1" => { extensions.khr_maintenance1 = true; } "VK_KHR_maintenance2" => { extensions.khr_maintenance2 = true; } "VK_KHR_maintenance3" => { extensions.khr_maintenance3 = true; } "VK_KHR_maintenance4" => { extensions.khr_maintenance4 = true; } "VK_KHR_multiview" => { extensions.khr_multiview = true; } "VK_KHR_performance_query" => { extensions.khr_performance_query = true; } "VK_KHR_pipeline_executable_properties" => { extensions.khr_pipeline_executable_properties = true; } "VK_KHR_pipeline_library" => { extensions.khr_pipeline_library = true; } "VK_KHR_portability_subset" => { extensions.khr_portability_subset = true; } "VK_KHR_present_id" => { extensions.khr_present_id = true; } "VK_KHR_present_wait" => { extensions.khr_present_wait = true; } "VK_KHR_push_descriptor" => { extensions.khr_push_descriptor = true; } "VK_KHR_ray_query" => { extensions.khr_ray_query = true; } "VK_KHR_ray_tracing_maintenance1" => { extensions.khr_ray_tracing_maintenance1 = true; } "VK_KHR_ray_tracing_pipeline" => { extensions.khr_ray_tracing_pipeline = true; } "VK_KHR_relaxed_block_layout" => { extensions.khr_relaxed_block_layout = true; } "VK_KHR_sampler_mirror_clamp_to_edge" => { extensions.khr_sampler_mirror_clamp_to_edge = true; } "VK_KHR_sampler_ycbcr_conversion" => { extensions.khr_sampler_ycbcr_conversion = true; } "VK_KHR_separate_depth_stencil_layouts" => { extensions.khr_separate_depth_stencil_layouts = true; } "VK_KHR_shader_atomic_int64" => { extensions.khr_shader_atomic_int64 = true; } "VK_KHR_shader_clock" => { extensions.khr_shader_clock = true; } "VK_KHR_shader_draw_parameters" => { extensions.khr_shader_draw_parameters = true; } "VK_KHR_shader_float16_int8" => { extensions.khr_shader_float16_int8 = true; } "VK_KHR_shader_float_controls" => { extensions.khr_shader_float_controls = true; } "VK_KHR_shader_integer_dot_product" => { extensions.khr_shader_integer_dot_product = true; } "VK_KHR_shader_non_semantic_info" => { extensions.khr_shader_non_semantic_info = true; } "VK_KHR_shader_subgroup_extended_types" => { extensions.khr_shader_subgroup_extended_types = true; } "VK_KHR_shader_subgroup_uniform_control_flow" => { extensions.khr_shader_subgroup_uniform_control_flow = true; } "VK_KHR_shader_terminate_invocation" => { extensions.khr_shader_terminate_invocation = true; } "VK_KHR_shared_presentable_image" => { extensions.khr_shared_presentable_image = true; } "VK_KHR_spirv_1_4" => { extensions.khr_spirv_1_4 = true; } "VK_KHR_storage_buffer_storage_class" => { extensions.khr_storage_buffer_storage_class = true; } "VK_KHR_swapchain" => { extensions.khr_swapchain = true; } "VK_KHR_swapchain_mutable_format" => { extensions.khr_swapchain_mutable_format = true; } "VK_KHR_synchronization2" => { extensions.khr_synchronization2 = true; } "VK_KHR_timeline_semaphore" => { extensions.khr_timeline_semaphore = true; } "VK_KHR_uniform_buffer_standard_layout" => { extensions.khr_uniform_buffer_standard_layout = true; } "VK_KHR_variable_pointers" => { extensions.khr_variable_pointers = true; } "VK_KHR_video_decode_h264" => { extensions.khr_video_decode_h264 = true; } "VK_KHR_video_decode_h265" => { extensions.khr_video_decode_h265 = true; } "VK_KHR_video_decode_queue" => { extensions.khr_video_decode_queue = true; } "VK_KHR_video_encode_queue" => { extensions.khr_video_encode_queue = true; } "VK_KHR_video_queue" => { extensions.khr_video_queue = true; } "VK_KHR_vulkan_memory_model" => { extensions.khr_vulkan_memory_model = true; } "VK_KHR_win32_keyed_mutex" => { extensions.khr_win32_keyed_mutex = true; } "VK_KHR_workgroup_memory_explicit_layout" => { extensions.khr_workgroup_memory_explicit_layout = true; } "VK_KHR_zero_initialize_workgroup_memory" => { extensions.khr_zero_initialize_workgroup_memory = true; } "VK_EXT_4444_formats" => { extensions.ext_4444_formats = true; } "VK_EXT_astc_decode_mode" => { extensions.ext_astc_decode_mode = true; } "VK_EXT_attachment_feedback_loop_layout" => { extensions.ext_attachment_feedback_loop_layout = true; } "VK_EXT_blend_operation_advanced" => { extensions.ext_blend_operation_advanced = true; } "VK_EXT_border_color_swizzle" => { extensions.ext_border_color_swizzle = true; } "VK_EXT_buffer_device_address" => { extensions.ext_buffer_device_address = true; } "VK_EXT_calibrated_timestamps" => { extensions.ext_calibrated_timestamps = true; } "VK_EXT_color_write_enable" => { extensions.ext_color_write_enable = true; } "VK_EXT_conditional_rendering" => { extensions.ext_conditional_rendering = true; } "VK_EXT_conservative_rasterization" => { extensions.ext_conservative_rasterization = true; } "VK_EXT_custom_border_color" => { extensions.ext_custom_border_color = true; } "VK_EXT_debug_marker" => { extensions.ext_debug_marker = true; } "VK_EXT_depth_clamp_zero_one" => { extensions.ext_depth_clamp_zero_one = true; } "VK_EXT_depth_clip_control" => { extensions.ext_depth_clip_control = true; } "VK_EXT_depth_clip_enable" => { extensions.ext_depth_clip_enable = true; } "VK_EXT_depth_range_unrestricted" => { extensions.ext_depth_range_unrestricted = true; } "VK_EXT_descriptor_buffer" => { extensions.ext_descriptor_buffer = true; } "VK_EXT_descriptor_indexing" => { extensions.ext_descriptor_indexing = true; } "VK_EXT_device_address_binding_report" => { extensions.ext_device_address_binding_report = true; } "VK_EXT_device_fault" => { extensions.ext_device_fault = true; } "VK_EXT_device_memory_report" => { extensions.ext_device_memory_report = true; } "VK_EXT_discard_rectangles" => { extensions.ext_discard_rectangles = true; } "VK_EXT_display_control" => { extensions.ext_display_control = true; } "VK_EXT_extended_dynamic_state" => { extensions.ext_extended_dynamic_state = true; } "VK_EXT_extended_dynamic_state2" => { extensions.ext_extended_dynamic_state2 = true; } "VK_EXT_extended_dynamic_state3" => { extensions.ext_extended_dynamic_state3 = true; } "VK_EXT_external_memory_dma_buf" => { extensions.ext_external_memory_dma_buf = true; } "VK_EXT_external_memory_host" => { extensions.ext_external_memory_host = true; } "VK_EXT_filter_cubic" => { extensions.ext_filter_cubic = true; } "VK_EXT_fragment_density_map" => { extensions.ext_fragment_density_map = true; } "VK_EXT_fragment_density_map2" => { extensions.ext_fragment_density_map2 = true; } "VK_EXT_fragment_shader_interlock" => { extensions.ext_fragment_shader_interlock = true; } "VK_EXT_full_screen_exclusive" => { extensions.ext_full_screen_exclusive = true; } "VK_EXT_global_priority" => { extensions.ext_global_priority = true; } "VK_EXT_global_priority_query" => { extensions.ext_global_priority_query = true; } "VK_EXT_graphics_pipeline_library" => { extensions.ext_graphics_pipeline_library = true; } "VK_EXT_hdr_metadata" => { extensions.ext_hdr_metadata = true; } "VK_EXT_host_query_reset" => { extensions.ext_host_query_reset = true; } "VK_EXT_image_2d_view_of_3d" => { extensions.ext_image_2d_view_of_3d = true; } "VK_EXT_image_compression_control" => { extensions.ext_image_compression_control = true; } "VK_EXT_image_compression_control_swapchain" => { extensions.ext_image_compression_control_swapchain = true; } "VK_EXT_image_drm_format_modifier" => { extensions.ext_image_drm_format_modifier = true; } "VK_EXT_image_robustness" => { extensions.ext_image_robustness = true; } "VK_EXT_image_view_min_lod" => { extensions.ext_image_view_min_lod = true; } "VK_EXT_index_type_uint8" => { extensions.ext_index_type_uint8 = true; } "VK_EXT_inline_uniform_block" => { extensions.ext_inline_uniform_block = true; } "VK_EXT_legacy_dithering" => { extensions.ext_legacy_dithering = true; } "VK_EXT_line_rasterization" => { extensions.ext_line_rasterization = true; } "VK_EXT_load_store_op_none" => { extensions.ext_load_store_op_none = true; } "VK_EXT_memory_budget" => { extensions.ext_memory_budget = true; } "VK_EXT_memory_priority" => { extensions.ext_memory_priority = true; } "VK_EXT_mesh_shader" => { extensions.ext_mesh_shader = true; } "VK_EXT_metal_objects" => { extensions.ext_metal_objects = true; } "VK_EXT_multi_draw" => { extensions.ext_multi_draw = true; } "VK_EXT_multisampled_render_to_single_sampled" => { extensions.ext_multisampled_render_to_single_sampled = true; } "VK_EXT_mutable_descriptor_type" => { extensions.ext_mutable_descriptor_type = true; } "VK_EXT_non_seamless_cube_map" => { extensions.ext_non_seamless_cube_map = true; } "VK_EXT_opacity_micromap" => { extensions.ext_opacity_micromap = true; } "VK_EXT_pageable_device_local_memory" => { extensions.ext_pageable_device_local_memory = true; } "VK_EXT_pci_bus_info" => { extensions.ext_pci_bus_info = true; } "VK_EXT_physical_device_drm" => { extensions.ext_physical_device_drm = true; } "VK_EXT_pipeline_creation_cache_control" => { extensions.ext_pipeline_creation_cache_control = true; } "VK_EXT_pipeline_creation_feedback" => { extensions.ext_pipeline_creation_feedback = true; } "VK_EXT_pipeline_properties" => { extensions.ext_pipeline_properties = true; } "VK_EXT_pipeline_protected_access" => { extensions.ext_pipeline_protected_access = true; } "VK_EXT_pipeline_robustness" => { extensions.ext_pipeline_robustness = true; } "VK_EXT_post_depth_coverage" => { extensions.ext_post_depth_coverage = true; } "VK_EXT_primitive_topology_list_restart" => { extensions.ext_primitive_topology_list_restart = true; } "VK_EXT_primitives_generated_query" => { extensions.ext_primitives_generated_query = true; } "VK_EXT_private_data" => { extensions.ext_private_data = true; } "VK_EXT_provoking_vertex" => { extensions.ext_provoking_vertex = true; } "VK_EXT_queue_family_foreign" => { extensions.ext_queue_family_foreign = true; } "VK_EXT_rasterization_order_attachment_access" => { extensions.ext_rasterization_order_attachment_access = true; } "VK_EXT_rgba10x6_formats" => { extensions.ext_rgba10x6_formats = true; } "VK_EXT_robustness2" => { extensions.ext_robustness2 = true; } "VK_EXT_sample_locations" => { extensions.ext_sample_locations = true; } "VK_EXT_sampler_filter_minmax" => { extensions.ext_sampler_filter_minmax = true; } "VK_EXT_scalar_block_layout" => { extensions.ext_scalar_block_layout = true; } "VK_EXT_separate_stencil_usage" => { extensions.ext_separate_stencil_usage = true; } "VK_EXT_shader_atomic_float" => { extensions.ext_shader_atomic_float = true; } "VK_EXT_shader_atomic_float2" => { extensions.ext_shader_atomic_float2 = true; } "VK_EXT_shader_demote_to_helper_invocation" => { extensions.ext_shader_demote_to_helper_invocation = true; } "VK_EXT_shader_image_atomic_int64" => { extensions.ext_shader_image_atomic_int64 = true; } "VK_EXT_shader_module_identifier" => { extensions.ext_shader_module_identifier = true; } "VK_EXT_shader_stencil_export" => { extensions.ext_shader_stencil_export = true; } "VK_EXT_shader_subgroup_ballot" => { extensions.ext_shader_subgroup_ballot = true; } "VK_EXT_shader_subgroup_vote" => { extensions.ext_shader_subgroup_vote = true; } "VK_EXT_shader_viewport_index_layer" => { extensions.ext_shader_viewport_index_layer = true; } "VK_EXT_subgroup_size_control" => { extensions.ext_subgroup_size_control = true; } "VK_EXT_subpass_merge_feedback" => { extensions.ext_subpass_merge_feedback = true; } "VK_EXT_swapchain_maintenance1" => { extensions.ext_swapchain_maintenance1 = true; } "VK_EXT_texel_buffer_alignment" => { extensions.ext_texel_buffer_alignment = true; } "VK_EXT_texture_compression_astc_hdr" => { extensions.ext_texture_compression_astc_hdr = true; } "VK_EXT_tooling_info" => { extensions.ext_tooling_info = true; } "VK_EXT_transform_feedback" => { extensions.ext_transform_feedback = true; } "VK_EXT_validation_cache" => { extensions.ext_validation_cache = true; } "VK_EXT_vertex_attribute_divisor" => { extensions.ext_vertex_attribute_divisor = true; } "VK_EXT_vertex_input_dynamic_state" => { extensions.ext_vertex_input_dynamic_state = true; } "VK_EXT_video_encode_h264" => { extensions.ext_video_encode_h264 = true; } "VK_EXT_video_encode_h265" => { extensions.ext_video_encode_h265 = true; } "VK_EXT_ycbcr_2plane_444_formats" => { extensions.ext_ycbcr_2plane_444_formats = true; } "VK_EXT_ycbcr_image_arrays" => { extensions.ext_ycbcr_image_arrays = true; } "VK_AMD_buffer_marker" => { extensions.amd_buffer_marker = true; } "VK_AMD_device_coherent_memory" => { extensions.amd_device_coherent_memory = true; } "VK_AMD_display_native_hdr" => { extensions.amd_display_native_hdr = true; } "VK_AMD_draw_indirect_count" => { extensions.amd_draw_indirect_count = true; } "VK_AMD_gcn_shader" => { extensions.amd_gcn_shader = true; } "VK_AMD_gpu_shader_half_float" => { extensions.amd_gpu_shader_half_float = true; } "VK_AMD_gpu_shader_int16" => { extensions.amd_gpu_shader_int16 = true; } "VK_AMD_memory_overallocation_behavior" => { extensions.amd_memory_overallocation_behavior = true; } "VK_AMD_mixed_attachment_samples" => { extensions.amd_mixed_attachment_samples = true; } "VK_AMD_pipeline_compiler_control" => { extensions.amd_pipeline_compiler_control = true; } "VK_AMD_rasterization_order" => { extensions.amd_rasterization_order = true; } "VK_AMD_shader_ballot" => { extensions.amd_shader_ballot = true; } "VK_AMD_shader_core_properties" => { extensions.amd_shader_core_properties = true; } "VK_AMD_shader_core_properties2" => { extensions.amd_shader_core_properties2 = true; } "VK_AMD_shader_early_and_late_fragment_tests" => { extensions.amd_shader_early_and_late_fragment_tests = true; } "VK_AMD_shader_explicit_vertex_parameter" => { extensions.amd_shader_explicit_vertex_parameter = true; } "VK_AMD_shader_fragment_mask" => { extensions.amd_shader_fragment_mask = true; } "VK_AMD_shader_image_load_store_lod" => { extensions.amd_shader_image_load_store_lod = true; } "VK_AMD_shader_info" => { extensions.amd_shader_info = true; } "VK_AMD_shader_trinary_minmax" => { extensions.amd_shader_trinary_minmax = true; } "VK_AMD_texture_gather_bias_lod" => { extensions.amd_texture_gather_bias_lod = true; } "VK_ANDROID_external_memory_android_hardware_buffer" => { extensions.android_external_memory_android_hardware_buffer = true; } "VK_ARM_rasterization_order_attachment_access" => { extensions.arm_rasterization_order_attachment_access = true; } "VK_ARM_shader_core_builtins" => { extensions.arm_shader_core_builtins = true; } "VK_FUCHSIA_buffer_collection" => { extensions.fuchsia_buffer_collection = true; } "VK_FUCHSIA_external_memory" => { extensions.fuchsia_external_memory = true; } "VK_FUCHSIA_external_semaphore" => { extensions.fuchsia_external_semaphore = true; } "VK_GGP_frame_token" => { extensions.ggp_frame_token = true; } "VK_GOOGLE_decorate_string" => { extensions.google_decorate_string = true; } "VK_GOOGLE_display_timing" => { extensions.google_display_timing = true; } "VK_GOOGLE_hlsl_functionality1" => { extensions.google_hlsl_functionality1 = true; } "VK_GOOGLE_user_type" => { extensions.google_user_type = true; } "VK_HUAWEI_invocation_mask" => { extensions.huawei_invocation_mask = true; } "VK_HUAWEI_subpass_shading" => { extensions.huawei_subpass_shading = true; } "VK_IMG_filter_cubic" => { extensions.img_filter_cubic = true; } "VK_IMG_format_pvrtc" => { extensions.img_format_pvrtc = true; } "VK_INTEL_performance_query" => { extensions.intel_performance_query = true; } "VK_INTEL_shader_integer_functions2" => { extensions.intel_shader_integer_functions2 = true; } "VK_NVX_binary_import" => { extensions.nvx_binary_import = true; } "VK_NVX_image_view_handle" => { extensions.nvx_image_view_handle = true; } "VK_NVX_multiview_per_view_attributes" => { extensions.nvx_multiview_per_view_attributes = true; } "VK_NV_acquire_winrt_display" => { extensions.nv_acquire_winrt_display = true; } "VK_NV_clip_space_w_scaling" => { extensions.nv_clip_space_w_scaling = true; } "VK_NV_compute_shader_derivatives" => { extensions.nv_compute_shader_derivatives = true; } "VK_NV_cooperative_matrix" => { extensions.nv_cooperative_matrix = true; } "VK_NV_copy_memory_indirect" => { extensions.nv_copy_memory_indirect = true; } "VK_NV_corner_sampled_image" => { extensions.nv_corner_sampled_image = true; } "VK_NV_coverage_reduction_mode" => { extensions.nv_coverage_reduction_mode = true; } "VK_NV_dedicated_allocation" => { extensions.nv_dedicated_allocation = true; } "VK_NV_dedicated_allocation_image_aliasing" => { extensions.nv_dedicated_allocation_image_aliasing = true; } "VK_NV_device_diagnostic_checkpoints" => { extensions.nv_device_diagnostic_checkpoints = true; } "VK_NV_device_diagnostics_config" => { extensions.nv_device_diagnostics_config = true; } "VK_NV_device_generated_commands" => { extensions.nv_device_generated_commands = true; } "VK_NV_external_memory" => { extensions.nv_external_memory = true; } "VK_NV_external_memory_rdma" => { extensions.nv_external_memory_rdma = true; } "VK_NV_external_memory_win32" => { extensions.nv_external_memory_win32 = true; } "VK_NV_fill_rectangle" => { extensions.nv_fill_rectangle = true; } "VK_NV_fragment_coverage_to_color" => { extensions.nv_fragment_coverage_to_color = true; } "VK_NV_fragment_shader_barycentric" => { extensions.nv_fragment_shader_barycentric = true; } "VK_NV_fragment_shading_rate_enums" => { extensions.nv_fragment_shading_rate_enums = true; } "VK_NV_framebuffer_mixed_samples" => { extensions.nv_framebuffer_mixed_samples = true; } "VK_NV_geometry_shader_passthrough" => { extensions.nv_geometry_shader_passthrough = true; } "VK_NV_glsl_shader" => { extensions.nv_glsl_shader = true; } "VK_NV_inherited_viewport_scissor" => { extensions.nv_inherited_viewport_scissor = true; } "VK_NV_linear_color_attachment" => { extensions.nv_linear_color_attachment = true; } "VK_NV_memory_decompression" => { extensions.nv_memory_decompression = true; } "VK_NV_mesh_shader" => { extensions.nv_mesh_shader = true; } "VK_NV_optical_flow" => { extensions.nv_optical_flow = true; } "VK_NV_present_barrier" => { extensions.nv_present_barrier = true; } "VK_NV_ray_tracing" => { extensions.nv_ray_tracing = true; } "VK_NV_ray_tracing_invocation_reorder" => { extensions.nv_ray_tracing_invocation_reorder = true; } "VK_NV_ray_tracing_motion_blur" => { extensions.nv_ray_tracing_motion_blur = true; } "VK_NV_representative_fragment_test" => { extensions.nv_representative_fragment_test = true; } "VK_NV_sample_mask_override_coverage" => { extensions.nv_sample_mask_override_coverage = true; } "VK_NV_scissor_exclusive" => { extensions.nv_scissor_exclusive = true; } "VK_NV_shader_image_footprint" => { extensions.nv_shader_image_footprint = true; } "VK_NV_shader_sm_builtins" => { extensions.nv_shader_sm_builtins = true; } "VK_NV_shader_subgroup_partitioned" => { extensions.nv_shader_subgroup_partitioned = true; } "VK_NV_shading_rate_image" => { extensions.nv_shading_rate_image = true; } "VK_NV_viewport_array2" => { extensions.nv_viewport_array2 = true; } "VK_NV_viewport_swizzle" => { extensions.nv_viewport_swizzle = true; } "VK_NV_win32_keyed_mutex" => { extensions.nv_win32_keyed_mutex = true; } "VK_QCOM_fragment_density_map_offset" => { extensions.qcom_fragment_density_map_offset = true; } "VK_QCOM_image_processing" => { extensions.qcom_image_processing = true; } "VK_QCOM_multiview_per_view_viewports" => { extensions.qcom_multiview_per_view_viewports = true; } "VK_QCOM_render_pass_shader_resolve" => { extensions.qcom_render_pass_shader_resolve = true; } "VK_QCOM_render_pass_store_ops" => { extensions.qcom_render_pass_store_ops = true; } "VK_QCOM_render_pass_transform" => { extensions.qcom_render_pass_transform = true; } "VK_QCOM_rotated_copy_commands" => { extensions.qcom_rotated_copy_commands = true; } "VK_QCOM_tile_properties" => { extensions.qcom_tile_properties = true; } "VK_SEC_amigo_profiling" => { extensions.sec_amigo_profiling = true; } "VK_VALVE_descriptor_set_host_mapping" => { extensions.valve_descriptor_set_host_mapping = true; } "VK_VALVE_mutable_descriptor_type" => { extensions.valve_mutable_descriptor_type = true; } _ => (), } } extensions } } impl<'a> From<&'a DeviceExtensions> for Vec { fn from(x: &'a DeviceExtensions) -> Self { let mut data = Self::new(); if x.khr_16bit_storage { data.push(std::ffi::CString::new("VK_KHR_16bit_storage").unwrap()); } if x.khr_8bit_storage { data.push(std::ffi::CString::new("VK_KHR_8bit_storage").unwrap()); } if x.khr_acceleration_structure { data.push(std::ffi::CString::new("VK_KHR_acceleration_structure").unwrap()); } if x.khr_bind_memory2 { data.push(std::ffi::CString::new("VK_KHR_bind_memory2").unwrap()); } if x.khr_buffer_device_address { data.push(std::ffi::CString::new("VK_KHR_buffer_device_address").unwrap()); } if x.khr_copy_commands2 { data.push(std::ffi::CString::new("VK_KHR_copy_commands2").unwrap()); } if x.khr_create_renderpass2 { data.push(std::ffi::CString::new("VK_KHR_create_renderpass2").unwrap()); } if x.khr_dedicated_allocation { data.push(std::ffi::CString::new("VK_KHR_dedicated_allocation").unwrap()); } if x.khr_deferred_host_operations { data.push(std::ffi::CString::new("VK_KHR_deferred_host_operations").unwrap()); } if x.khr_depth_stencil_resolve { data.push(std::ffi::CString::new("VK_KHR_depth_stencil_resolve").unwrap()); } if x.khr_descriptor_update_template { data.push(std::ffi::CString::new("VK_KHR_descriptor_update_template").unwrap()); } if x.khr_device_group { data.push(std::ffi::CString::new("VK_KHR_device_group").unwrap()); } if x.khr_display_swapchain { data.push(std::ffi::CString::new("VK_KHR_display_swapchain").unwrap()); } if x.khr_draw_indirect_count { data.push(std::ffi::CString::new("VK_KHR_draw_indirect_count").unwrap()); } if x.khr_driver_properties { data.push(std::ffi::CString::new("VK_KHR_driver_properties").unwrap()); } if x.khr_dynamic_rendering { data.push(std::ffi::CString::new("VK_KHR_dynamic_rendering").unwrap()); } if x.khr_external_fence { data.push(std::ffi::CString::new("VK_KHR_external_fence").unwrap()); } if x.khr_external_fence_fd { data.push(std::ffi::CString::new("VK_KHR_external_fence_fd").unwrap()); } if x.khr_external_fence_win32 { data.push(std::ffi::CString::new("VK_KHR_external_fence_win32").unwrap()); } if x.khr_external_memory { data.push(std::ffi::CString::new("VK_KHR_external_memory").unwrap()); } if x.khr_external_memory_fd { data.push(std::ffi::CString::new("VK_KHR_external_memory_fd").unwrap()); } if x.khr_external_memory_win32 { data.push(std::ffi::CString::new("VK_KHR_external_memory_win32").unwrap()); } if x.khr_external_semaphore { data.push(std::ffi::CString::new("VK_KHR_external_semaphore").unwrap()); } if x.khr_external_semaphore_fd { data.push(std::ffi::CString::new("VK_KHR_external_semaphore_fd").unwrap()); } if x.khr_external_semaphore_win32 { data.push(std::ffi::CString::new("VK_KHR_external_semaphore_win32").unwrap()); } if x.khr_format_feature_flags2 { data.push(std::ffi::CString::new("VK_KHR_format_feature_flags2").unwrap()); } if x.khr_fragment_shader_barycentric { data.push(std::ffi::CString::new("VK_KHR_fragment_shader_barycentric").unwrap()); } if x.khr_fragment_shading_rate { data.push(std::ffi::CString::new("VK_KHR_fragment_shading_rate").unwrap()); } if x.khr_get_memory_requirements2 { data.push(std::ffi::CString::new("VK_KHR_get_memory_requirements2").unwrap()); } if x.khr_global_priority { data.push(std::ffi::CString::new("VK_KHR_global_priority").unwrap()); } if x.khr_image_format_list { data.push(std::ffi::CString::new("VK_KHR_image_format_list").unwrap()); } if x.khr_imageless_framebuffer { data.push(std::ffi::CString::new("VK_KHR_imageless_framebuffer").unwrap()); } if x.khr_incremental_present { data.push(std::ffi::CString::new("VK_KHR_incremental_present").unwrap()); } if x.khr_maintenance1 { data.push(std::ffi::CString::new("VK_KHR_maintenance1").unwrap()); } if x.khr_maintenance2 { data.push(std::ffi::CString::new("VK_KHR_maintenance2").unwrap()); } if x.khr_maintenance3 { data.push(std::ffi::CString::new("VK_KHR_maintenance3").unwrap()); } if x.khr_maintenance4 { data.push(std::ffi::CString::new("VK_KHR_maintenance4").unwrap()); } if x.khr_multiview { data.push(std::ffi::CString::new("VK_KHR_multiview").unwrap()); } if x.khr_performance_query { data.push(std::ffi::CString::new("VK_KHR_performance_query").unwrap()); } if x.khr_pipeline_executable_properties { data.push(std::ffi::CString::new("VK_KHR_pipeline_executable_properties").unwrap()); } if x.khr_pipeline_library { data.push(std::ffi::CString::new("VK_KHR_pipeline_library").unwrap()); } if x.khr_portability_subset { data.push(std::ffi::CString::new("VK_KHR_portability_subset").unwrap()); } if x.khr_present_id { data.push(std::ffi::CString::new("VK_KHR_present_id").unwrap()); } if x.khr_present_wait { data.push(std::ffi::CString::new("VK_KHR_present_wait").unwrap()); } if x.khr_push_descriptor { data.push(std::ffi::CString::new("VK_KHR_push_descriptor").unwrap()); } if x.khr_ray_query { data.push(std::ffi::CString::new("VK_KHR_ray_query").unwrap()); } if x.khr_ray_tracing_maintenance1 { data.push(std::ffi::CString::new("VK_KHR_ray_tracing_maintenance1").unwrap()); } if x.khr_ray_tracing_pipeline { data.push(std::ffi::CString::new("VK_KHR_ray_tracing_pipeline").unwrap()); } if x.khr_relaxed_block_layout { data.push(std::ffi::CString::new("VK_KHR_relaxed_block_layout").unwrap()); } if x.khr_sampler_mirror_clamp_to_edge { data.push(std::ffi::CString::new("VK_KHR_sampler_mirror_clamp_to_edge").unwrap()); } if x.khr_sampler_ycbcr_conversion { data.push(std::ffi::CString::new("VK_KHR_sampler_ycbcr_conversion").unwrap()); } if x.khr_separate_depth_stencil_layouts { data.push(std::ffi::CString::new("VK_KHR_separate_depth_stencil_layouts").unwrap()); } if x.khr_shader_atomic_int64 { data.push(std::ffi::CString::new("VK_KHR_shader_atomic_int64").unwrap()); } if x.khr_shader_clock { data.push(std::ffi::CString::new("VK_KHR_shader_clock").unwrap()); } if x.khr_shader_draw_parameters { data.push(std::ffi::CString::new("VK_KHR_shader_draw_parameters").unwrap()); } if x.khr_shader_float16_int8 { data.push(std::ffi::CString::new("VK_KHR_shader_float16_int8").unwrap()); } if x.khr_shader_float_controls { data.push(std::ffi::CString::new("VK_KHR_shader_float_controls").unwrap()); } if x.khr_shader_integer_dot_product { data.push(std::ffi::CString::new("VK_KHR_shader_integer_dot_product").unwrap()); } if x.khr_shader_non_semantic_info { data.push(std::ffi::CString::new("VK_KHR_shader_non_semantic_info").unwrap()); } if x.khr_shader_subgroup_extended_types { data.push(std::ffi::CString::new("VK_KHR_shader_subgroup_extended_types").unwrap()); } if x.khr_shader_subgroup_uniform_control_flow { data.push( std::ffi::CString::new("VK_KHR_shader_subgroup_uniform_control_flow").unwrap(), ); } if x.khr_shader_terminate_invocation { data.push(std::ffi::CString::new("VK_KHR_shader_terminate_invocation").unwrap()); } if x.khr_shared_presentable_image { data.push(std::ffi::CString::new("VK_KHR_shared_presentable_image").unwrap()); } if x.khr_spirv_1_4 { data.push(std::ffi::CString::new("VK_KHR_spirv_1_4").unwrap()); } if x.khr_storage_buffer_storage_class { data.push(std::ffi::CString::new("VK_KHR_storage_buffer_storage_class").unwrap()); } if x.khr_swapchain { data.push(std::ffi::CString::new("VK_KHR_swapchain").unwrap()); } if x.khr_swapchain_mutable_format { data.push(std::ffi::CString::new("VK_KHR_swapchain_mutable_format").unwrap()); } if x.khr_synchronization2 { data.push(std::ffi::CString::new("VK_KHR_synchronization2").unwrap()); } if x.khr_timeline_semaphore { data.push(std::ffi::CString::new("VK_KHR_timeline_semaphore").unwrap()); } if x.khr_uniform_buffer_standard_layout { data.push(std::ffi::CString::new("VK_KHR_uniform_buffer_standard_layout").unwrap()); } if x.khr_variable_pointers { data.push(std::ffi::CString::new("VK_KHR_variable_pointers").unwrap()); } if x.khr_video_decode_h264 { data.push(std::ffi::CString::new("VK_KHR_video_decode_h264").unwrap()); } if x.khr_video_decode_h265 { data.push(std::ffi::CString::new("VK_KHR_video_decode_h265").unwrap()); } if x.khr_video_decode_queue { data.push(std::ffi::CString::new("VK_KHR_video_decode_queue").unwrap()); } if x.khr_video_encode_queue { data.push(std::ffi::CString::new("VK_KHR_video_encode_queue").unwrap()); } if x.khr_video_queue { data.push(std::ffi::CString::new("VK_KHR_video_queue").unwrap()); } if x.khr_vulkan_memory_model { data.push(std::ffi::CString::new("VK_KHR_vulkan_memory_model").unwrap()); } if x.khr_win32_keyed_mutex { data.push(std::ffi::CString::new("VK_KHR_win32_keyed_mutex").unwrap()); } if x.khr_workgroup_memory_explicit_layout { data.push(std::ffi::CString::new("VK_KHR_workgroup_memory_explicit_layout").unwrap()); } if x.khr_zero_initialize_workgroup_memory { data.push(std::ffi::CString::new("VK_KHR_zero_initialize_workgroup_memory").unwrap()); } if x.ext_4444_formats { data.push(std::ffi::CString::new("VK_EXT_4444_formats").unwrap()); } if x.ext_astc_decode_mode { data.push(std::ffi::CString::new("VK_EXT_astc_decode_mode").unwrap()); } if x.ext_attachment_feedback_loop_layout { data.push(std::ffi::CString::new("VK_EXT_attachment_feedback_loop_layout").unwrap()); } if x.ext_blend_operation_advanced { data.push(std::ffi::CString::new("VK_EXT_blend_operation_advanced").unwrap()); } if x.ext_border_color_swizzle { data.push(std::ffi::CString::new("VK_EXT_border_color_swizzle").unwrap()); } if x.ext_buffer_device_address { data.push(std::ffi::CString::new("VK_EXT_buffer_device_address").unwrap()); } if x.ext_calibrated_timestamps { data.push(std::ffi::CString::new("VK_EXT_calibrated_timestamps").unwrap()); } if x.ext_color_write_enable { data.push(std::ffi::CString::new("VK_EXT_color_write_enable").unwrap()); } if x.ext_conditional_rendering { data.push(std::ffi::CString::new("VK_EXT_conditional_rendering").unwrap()); } if x.ext_conservative_rasterization { data.push(std::ffi::CString::new("VK_EXT_conservative_rasterization").unwrap()); } if x.ext_custom_border_color { data.push(std::ffi::CString::new("VK_EXT_custom_border_color").unwrap()); } if x.ext_debug_marker { data.push(std::ffi::CString::new("VK_EXT_debug_marker").unwrap()); } if x.ext_depth_clamp_zero_one { data.push(std::ffi::CString::new("VK_EXT_depth_clamp_zero_one").unwrap()); } if x.ext_depth_clip_control { data.push(std::ffi::CString::new("VK_EXT_depth_clip_control").unwrap()); } if x.ext_depth_clip_enable { data.push(std::ffi::CString::new("VK_EXT_depth_clip_enable").unwrap()); } if x.ext_depth_range_unrestricted { data.push(std::ffi::CString::new("VK_EXT_depth_range_unrestricted").unwrap()); } if x.ext_descriptor_buffer { data.push(std::ffi::CString::new("VK_EXT_descriptor_buffer").unwrap()); } if x.ext_descriptor_indexing { data.push(std::ffi::CString::new("VK_EXT_descriptor_indexing").unwrap()); } if x.ext_device_address_binding_report { data.push(std::ffi::CString::new("VK_EXT_device_address_binding_report").unwrap()); } if x.ext_device_fault { data.push(std::ffi::CString::new("VK_EXT_device_fault").unwrap()); } if x.ext_device_memory_report { data.push(std::ffi::CString::new("VK_EXT_device_memory_report").unwrap()); } if x.ext_discard_rectangles { data.push(std::ffi::CString::new("VK_EXT_discard_rectangles").unwrap()); } if x.ext_display_control { data.push(std::ffi::CString::new("VK_EXT_display_control").unwrap()); } if x.ext_extended_dynamic_state { data.push(std::ffi::CString::new("VK_EXT_extended_dynamic_state").unwrap()); } if x.ext_extended_dynamic_state2 { data.push(std::ffi::CString::new("VK_EXT_extended_dynamic_state2").unwrap()); } if x.ext_extended_dynamic_state3 { data.push(std::ffi::CString::new("VK_EXT_extended_dynamic_state3").unwrap()); } if x.ext_external_memory_dma_buf { data.push(std::ffi::CString::new("VK_EXT_external_memory_dma_buf").unwrap()); } if x.ext_external_memory_host { data.push(std::ffi::CString::new("VK_EXT_external_memory_host").unwrap()); } if x.ext_filter_cubic { data.push(std::ffi::CString::new("VK_EXT_filter_cubic").unwrap()); } if x.ext_fragment_density_map { data.push(std::ffi::CString::new("VK_EXT_fragment_density_map").unwrap()); } if x.ext_fragment_density_map2 { data.push(std::ffi::CString::new("VK_EXT_fragment_density_map2").unwrap()); } if x.ext_fragment_shader_interlock { data.push(std::ffi::CString::new("VK_EXT_fragment_shader_interlock").unwrap()); } if x.ext_full_screen_exclusive { data.push(std::ffi::CString::new("VK_EXT_full_screen_exclusive").unwrap()); } if x.ext_global_priority { data.push(std::ffi::CString::new("VK_EXT_global_priority").unwrap()); } if x.ext_global_priority_query { data.push(std::ffi::CString::new("VK_EXT_global_priority_query").unwrap()); } if x.ext_graphics_pipeline_library { data.push(std::ffi::CString::new("VK_EXT_graphics_pipeline_library").unwrap()); } if x.ext_hdr_metadata { data.push(std::ffi::CString::new("VK_EXT_hdr_metadata").unwrap()); } if x.ext_host_query_reset { data.push(std::ffi::CString::new("VK_EXT_host_query_reset").unwrap()); } if x.ext_image_2d_view_of_3d { data.push(std::ffi::CString::new("VK_EXT_image_2d_view_of_3d").unwrap()); } if x.ext_image_compression_control { data.push(std::ffi::CString::new("VK_EXT_image_compression_control").unwrap()); } if x.ext_image_compression_control_swapchain { data.push( std::ffi::CString::new("VK_EXT_image_compression_control_swapchain").unwrap(), ); } if x.ext_image_drm_format_modifier { data.push(std::ffi::CString::new("VK_EXT_image_drm_format_modifier").unwrap()); } if x.ext_image_robustness { data.push(std::ffi::CString::new("VK_EXT_image_robustness").unwrap()); } if x.ext_image_view_min_lod { data.push(std::ffi::CString::new("VK_EXT_image_view_min_lod").unwrap()); } if x.ext_index_type_uint8 { data.push(std::ffi::CString::new("VK_EXT_index_type_uint8").unwrap()); } if x.ext_inline_uniform_block { data.push(std::ffi::CString::new("VK_EXT_inline_uniform_block").unwrap()); } if x.ext_legacy_dithering { data.push(std::ffi::CString::new("VK_EXT_legacy_dithering").unwrap()); } if x.ext_line_rasterization { data.push(std::ffi::CString::new("VK_EXT_line_rasterization").unwrap()); } if x.ext_load_store_op_none { data.push(std::ffi::CString::new("VK_EXT_load_store_op_none").unwrap()); } if x.ext_memory_budget { data.push(std::ffi::CString::new("VK_EXT_memory_budget").unwrap()); } if x.ext_memory_priority { data.push(std::ffi::CString::new("VK_EXT_memory_priority").unwrap()); } if x.ext_mesh_shader { data.push(std::ffi::CString::new("VK_EXT_mesh_shader").unwrap()); } if x.ext_metal_objects { data.push(std::ffi::CString::new("VK_EXT_metal_objects").unwrap()); } if x.ext_multi_draw { data.push(std::ffi::CString::new("VK_EXT_multi_draw").unwrap()); } if x.ext_multisampled_render_to_single_sampled { data.push( std::ffi::CString::new("VK_EXT_multisampled_render_to_single_sampled").unwrap(), ); } if x.ext_mutable_descriptor_type { data.push(std::ffi::CString::new("VK_EXT_mutable_descriptor_type").unwrap()); } if x.ext_non_seamless_cube_map { data.push(std::ffi::CString::new("VK_EXT_non_seamless_cube_map").unwrap()); } if x.ext_opacity_micromap { data.push(std::ffi::CString::new("VK_EXT_opacity_micromap").unwrap()); } if x.ext_pageable_device_local_memory { data.push(std::ffi::CString::new("VK_EXT_pageable_device_local_memory").unwrap()); } if x.ext_pci_bus_info { data.push(std::ffi::CString::new("VK_EXT_pci_bus_info").unwrap()); } if x.ext_physical_device_drm { data.push(std::ffi::CString::new("VK_EXT_physical_device_drm").unwrap()); } if x.ext_pipeline_creation_cache_control { data.push(std::ffi::CString::new("VK_EXT_pipeline_creation_cache_control").unwrap()); } if x.ext_pipeline_creation_feedback { data.push(std::ffi::CString::new("VK_EXT_pipeline_creation_feedback").unwrap()); } if x.ext_pipeline_properties { data.push(std::ffi::CString::new("VK_EXT_pipeline_properties").unwrap()); } if x.ext_pipeline_protected_access { data.push(std::ffi::CString::new("VK_EXT_pipeline_protected_access").unwrap()); } if x.ext_pipeline_robustness { data.push(std::ffi::CString::new("VK_EXT_pipeline_robustness").unwrap()); } if x.ext_post_depth_coverage { data.push(std::ffi::CString::new("VK_EXT_post_depth_coverage").unwrap()); } if x.ext_primitive_topology_list_restart { data.push(std::ffi::CString::new("VK_EXT_primitive_topology_list_restart").unwrap()); } if x.ext_primitives_generated_query { data.push(std::ffi::CString::new("VK_EXT_primitives_generated_query").unwrap()); } if x.ext_private_data { data.push(std::ffi::CString::new("VK_EXT_private_data").unwrap()); } if x.ext_provoking_vertex { data.push(std::ffi::CString::new("VK_EXT_provoking_vertex").unwrap()); } if x.ext_queue_family_foreign { data.push(std::ffi::CString::new("VK_EXT_queue_family_foreign").unwrap()); } if x.ext_rasterization_order_attachment_access { data.push( std::ffi::CString::new("VK_EXT_rasterization_order_attachment_access").unwrap(), ); } if x.ext_rgba10x6_formats { data.push(std::ffi::CString::new("VK_EXT_rgba10x6_formats").unwrap()); } if x.ext_robustness2 { data.push(std::ffi::CString::new("VK_EXT_robustness2").unwrap()); } if x.ext_sample_locations { data.push(std::ffi::CString::new("VK_EXT_sample_locations").unwrap()); } if x.ext_sampler_filter_minmax { data.push(std::ffi::CString::new("VK_EXT_sampler_filter_minmax").unwrap()); } if x.ext_scalar_block_layout { data.push(std::ffi::CString::new("VK_EXT_scalar_block_layout").unwrap()); } if x.ext_separate_stencil_usage { data.push(std::ffi::CString::new("VK_EXT_separate_stencil_usage").unwrap()); } if x.ext_shader_atomic_float { data.push(std::ffi::CString::new("VK_EXT_shader_atomic_float").unwrap()); } if x.ext_shader_atomic_float2 { data.push(std::ffi::CString::new("VK_EXT_shader_atomic_float2").unwrap()); } if x.ext_shader_demote_to_helper_invocation { data.push(std::ffi::CString::new("VK_EXT_shader_demote_to_helper_invocation").unwrap()); } if x.ext_shader_image_atomic_int64 { data.push(std::ffi::CString::new("VK_EXT_shader_image_atomic_int64").unwrap()); } if x.ext_shader_module_identifier { data.push(std::ffi::CString::new("VK_EXT_shader_module_identifier").unwrap()); } if x.ext_shader_stencil_export { data.push(std::ffi::CString::new("VK_EXT_shader_stencil_export").unwrap()); } if x.ext_shader_subgroup_ballot { data.push(std::ffi::CString::new("VK_EXT_shader_subgroup_ballot").unwrap()); } if x.ext_shader_subgroup_vote { data.push(std::ffi::CString::new("VK_EXT_shader_subgroup_vote").unwrap()); } if x.ext_shader_viewport_index_layer { data.push(std::ffi::CString::new("VK_EXT_shader_viewport_index_layer").unwrap()); } if x.ext_subgroup_size_control { data.push(std::ffi::CString::new("VK_EXT_subgroup_size_control").unwrap()); } if x.ext_subpass_merge_feedback { data.push(std::ffi::CString::new("VK_EXT_subpass_merge_feedback").unwrap()); } if x.ext_swapchain_maintenance1 { data.push(std::ffi::CString::new("VK_EXT_swapchain_maintenance1").unwrap()); } if x.ext_texel_buffer_alignment { data.push(std::ffi::CString::new("VK_EXT_texel_buffer_alignment").unwrap()); } if x.ext_texture_compression_astc_hdr { data.push(std::ffi::CString::new("VK_EXT_texture_compression_astc_hdr").unwrap()); } if x.ext_tooling_info { data.push(std::ffi::CString::new("VK_EXT_tooling_info").unwrap()); } if x.ext_transform_feedback { data.push(std::ffi::CString::new("VK_EXT_transform_feedback").unwrap()); } if x.ext_validation_cache { data.push(std::ffi::CString::new("VK_EXT_validation_cache").unwrap()); } if x.ext_vertex_attribute_divisor { data.push(std::ffi::CString::new("VK_EXT_vertex_attribute_divisor").unwrap()); } if x.ext_vertex_input_dynamic_state { data.push(std::ffi::CString::new("VK_EXT_vertex_input_dynamic_state").unwrap()); } if x.ext_video_encode_h264 { data.push(std::ffi::CString::new("VK_EXT_video_encode_h264").unwrap()); } if x.ext_video_encode_h265 { data.push(std::ffi::CString::new("VK_EXT_video_encode_h265").unwrap()); } if x.ext_ycbcr_2plane_444_formats { data.push(std::ffi::CString::new("VK_EXT_ycbcr_2plane_444_formats").unwrap()); } if x.ext_ycbcr_image_arrays { data.push(std::ffi::CString::new("VK_EXT_ycbcr_image_arrays").unwrap()); } if x.amd_buffer_marker { data.push(std::ffi::CString::new("VK_AMD_buffer_marker").unwrap()); } if x.amd_device_coherent_memory { data.push(std::ffi::CString::new("VK_AMD_device_coherent_memory").unwrap()); } if x.amd_display_native_hdr { data.push(std::ffi::CString::new("VK_AMD_display_native_hdr").unwrap()); } if x.amd_draw_indirect_count { data.push(std::ffi::CString::new("VK_AMD_draw_indirect_count").unwrap()); } if x.amd_gcn_shader { data.push(std::ffi::CString::new("VK_AMD_gcn_shader").unwrap()); } if x.amd_gpu_shader_half_float { data.push(std::ffi::CString::new("VK_AMD_gpu_shader_half_float").unwrap()); } if x.amd_gpu_shader_int16 { data.push(std::ffi::CString::new("VK_AMD_gpu_shader_int16").unwrap()); } if x.amd_memory_overallocation_behavior { data.push(std::ffi::CString::new("VK_AMD_memory_overallocation_behavior").unwrap()); } if x.amd_mixed_attachment_samples { data.push(std::ffi::CString::new("VK_AMD_mixed_attachment_samples").unwrap()); } if x.amd_pipeline_compiler_control { data.push(std::ffi::CString::new("VK_AMD_pipeline_compiler_control").unwrap()); } if x.amd_rasterization_order { data.push(std::ffi::CString::new("VK_AMD_rasterization_order").unwrap()); } if x.amd_shader_ballot { data.push(std::ffi::CString::new("VK_AMD_shader_ballot").unwrap()); } if x.amd_shader_core_properties { data.push(std::ffi::CString::new("VK_AMD_shader_core_properties").unwrap()); } if x.amd_shader_core_properties2 { data.push(std::ffi::CString::new("VK_AMD_shader_core_properties2").unwrap()); } if x.amd_shader_early_and_late_fragment_tests { data.push( std::ffi::CString::new("VK_AMD_shader_early_and_late_fragment_tests").unwrap(), ); } if x.amd_shader_explicit_vertex_parameter { data.push(std::ffi::CString::new("VK_AMD_shader_explicit_vertex_parameter").unwrap()); } if x.amd_shader_fragment_mask { data.push(std::ffi::CString::new("VK_AMD_shader_fragment_mask").unwrap()); } if x.amd_shader_image_load_store_lod { data.push(std::ffi::CString::new("VK_AMD_shader_image_load_store_lod").unwrap()); } if x.amd_shader_info { data.push(std::ffi::CString::new("VK_AMD_shader_info").unwrap()); } if x.amd_shader_trinary_minmax { data.push(std::ffi::CString::new("VK_AMD_shader_trinary_minmax").unwrap()); } if x.amd_texture_gather_bias_lod { data.push(std::ffi::CString::new("VK_AMD_texture_gather_bias_lod").unwrap()); } if x.android_external_memory_android_hardware_buffer { data.push( std::ffi::CString::new("VK_ANDROID_external_memory_android_hardware_buffer") .unwrap(), ); } if x.arm_rasterization_order_attachment_access { data.push( std::ffi::CString::new("VK_ARM_rasterization_order_attachment_access").unwrap(), ); } if x.arm_shader_core_builtins { data.push(std::ffi::CString::new("VK_ARM_shader_core_builtins").unwrap()); } if x.fuchsia_buffer_collection { data.push(std::ffi::CString::new("VK_FUCHSIA_buffer_collection").unwrap()); } if x.fuchsia_external_memory { data.push(std::ffi::CString::new("VK_FUCHSIA_external_memory").unwrap()); } if x.fuchsia_external_semaphore { data.push(std::ffi::CString::new("VK_FUCHSIA_external_semaphore").unwrap()); } if x.ggp_frame_token { data.push(std::ffi::CString::new("VK_GGP_frame_token").unwrap()); } if x.google_decorate_string { data.push(std::ffi::CString::new("VK_GOOGLE_decorate_string").unwrap()); } if x.google_display_timing { data.push(std::ffi::CString::new("VK_GOOGLE_display_timing").unwrap()); } if x.google_hlsl_functionality1 { data.push(std::ffi::CString::new("VK_GOOGLE_hlsl_functionality1").unwrap()); } if x.google_user_type { data.push(std::ffi::CString::new("VK_GOOGLE_user_type").unwrap()); } if x.huawei_invocation_mask { data.push(std::ffi::CString::new("VK_HUAWEI_invocation_mask").unwrap()); } if x.huawei_subpass_shading { data.push(std::ffi::CString::new("VK_HUAWEI_subpass_shading").unwrap()); } if x.img_filter_cubic { data.push(std::ffi::CString::new("VK_IMG_filter_cubic").unwrap()); } if x.img_format_pvrtc { data.push(std::ffi::CString::new("VK_IMG_format_pvrtc").unwrap()); } if x.intel_performance_query { data.push(std::ffi::CString::new("VK_INTEL_performance_query").unwrap()); } if x.intel_shader_integer_functions2 { data.push(std::ffi::CString::new("VK_INTEL_shader_integer_functions2").unwrap()); } if x.nvx_binary_import { data.push(std::ffi::CString::new("VK_NVX_binary_import").unwrap()); } if x.nvx_image_view_handle { data.push(std::ffi::CString::new("VK_NVX_image_view_handle").unwrap()); } if x.nvx_multiview_per_view_attributes { data.push(std::ffi::CString::new("VK_NVX_multiview_per_view_attributes").unwrap()); } if x.nv_acquire_winrt_display { data.push(std::ffi::CString::new("VK_NV_acquire_winrt_display").unwrap()); } if x.nv_clip_space_w_scaling { data.push(std::ffi::CString::new("VK_NV_clip_space_w_scaling").unwrap()); } if x.nv_compute_shader_derivatives { data.push(std::ffi::CString::new("VK_NV_compute_shader_derivatives").unwrap()); } if x.nv_cooperative_matrix { data.push(std::ffi::CString::new("VK_NV_cooperative_matrix").unwrap()); } if x.nv_copy_memory_indirect { data.push(std::ffi::CString::new("VK_NV_copy_memory_indirect").unwrap()); } if x.nv_corner_sampled_image { data.push(std::ffi::CString::new("VK_NV_corner_sampled_image").unwrap()); } if x.nv_coverage_reduction_mode { data.push(std::ffi::CString::new("VK_NV_coverage_reduction_mode").unwrap()); } if x.nv_dedicated_allocation { data.push(std::ffi::CString::new("VK_NV_dedicated_allocation").unwrap()); } if x.nv_dedicated_allocation_image_aliasing { data.push(std::ffi::CString::new("VK_NV_dedicated_allocation_image_aliasing").unwrap()); } if x.nv_device_diagnostic_checkpoints { data.push(std::ffi::CString::new("VK_NV_device_diagnostic_checkpoints").unwrap()); } if x.nv_device_diagnostics_config { data.push(std::ffi::CString::new("VK_NV_device_diagnostics_config").unwrap()); } if x.nv_device_generated_commands { data.push(std::ffi::CString::new("VK_NV_device_generated_commands").unwrap()); } if x.nv_external_memory { data.push(std::ffi::CString::new("VK_NV_external_memory").unwrap()); } if x.nv_external_memory_rdma { data.push(std::ffi::CString::new("VK_NV_external_memory_rdma").unwrap()); } if x.nv_external_memory_win32 { data.push(std::ffi::CString::new("VK_NV_external_memory_win32").unwrap()); } if x.nv_fill_rectangle { data.push(std::ffi::CString::new("VK_NV_fill_rectangle").unwrap()); } if x.nv_fragment_coverage_to_color { data.push(std::ffi::CString::new("VK_NV_fragment_coverage_to_color").unwrap()); } if x.nv_fragment_shader_barycentric { data.push(std::ffi::CString::new("VK_NV_fragment_shader_barycentric").unwrap()); } if x.nv_fragment_shading_rate_enums { data.push(std::ffi::CString::new("VK_NV_fragment_shading_rate_enums").unwrap()); } if x.nv_framebuffer_mixed_samples { data.push(std::ffi::CString::new("VK_NV_framebuffer_mixed_samples").unwrap()); } if x.nv_geometry_shader_passthrough { data.push(std::ffi::CString::new("VK_NV_geometry_shader_passthrough").unwrap()); } if x.nv_glsl_shader { data.push(std::ffi::CString::new("VK_NV_glsl_shader").unwrap()); } if x.nv_inherited_viewport_scissor { data.push(std::ffi::CString::new("VK_NV_inherited_viewport_scissor").unwrap()); } if x.nv_linear_color_attachment { data.push(std::ffi::CString::new("VK_NV_linear_color_attachment").unwrap()); } if x.nv_memory_decompression { data.push(std::ffi::CString::new("VK_NV_memory_decompression").unwrap()); } if x.nv_mesh_shader { data.push(std::ffi::CString::new("VK_NV_mesh_shader").unwrap()); } if x.nv_optical_flow { data.push(std::ffi::CString::new("VK_NV_optical_flow").unwrap()); } if x.nv_present_barrier { data.push(std::ffi::CString::new("VK_NV_present_barrier").unwrap()); } if x.nv_ray_tracing { data.push(std::ffi::CString::new("VK_NV_ray_tracing").unwrap()); } if x.nv_ray_tracing_invocation_reorder { data.push(std::ffi::CString::new("VK_NV_ray_tracing_invocation_reorder").unwrap()); } if x.nv_ray_tracing_motion_blur { data.push(std::ffi::CString::new("VK_NV_ray_tracing_motion_blur").unwrap()); } if x.nv_representative_fragment_test { data.push(std::ffi::CString::new("VK_NV_representative_fragment_test").unwrap()); } if x.nv_sample_mask_override_coverage { data.push(std::ffi::CString::new("VK_NV_sample_mask_override_coverage").unwrap()); } if x.nv_scissor_exclusive { data.push(std::ffi::CString::new("VK_NV_scissor_exclusive").unwrap()); } if x.nv_shader_image_footprint { data.push(std::ffi::CString::new("VK_NV_shader_image_footprint").unwrap()); } if x.nv_shader_sm_builtins { data.push(std::ffi::CString::new("VK_NV_shader_sm_builtins").unwrap()); } if x.nv_shader_subgroup_partitioned { data.push(std::ffi::CString::new("VK_NV_shader_subgroup_partitioned").unwrap()); } if x.nv_shading_rate_image { data.push(std::ffi::CString::new("VK_NV_shading_rate_image").unwrap()); } if x.nv_viewport_array2 { data.push(std::ffi::CString::new("VK_NV_viewport_array2").unwrap()); } if x.nv_viewport_swizzle { data.push(std::ffi::CString::new("VK_NV_viewport_swizzle").unwrap()); } if x.nv_win32_keyed_mutex { data.push(std::ffi::CString::new("VK_NV_win32_keyed_mutex").unwrap()); } if x.qcom_fragment_density_map_offset { data.push(std::ffi::CString::new("VK_QCOM_fragment_density_map_offset").unwrap()); } if x.qcom_image_processing { data.push(std::ffi::CString::new("VK_QCOM_image_processing").unwrap()); } if x.qcom_multiview_per_view_viewports { data.push(std::ffi::CString::new("VK_QCOM_multiview_per_view_viewports").unwrap()); } if x.qcom_render_pass_shader_resolve { data.push(std::ffi::CString::new("VK_QCOM_render_pass_shader_resolve").unwrap()); } if x.qcom_render_pass_store_ops { data.push(std::ffi::CString::new("VK_QCOM_render_pass_store_ops").unwrap()); } if x.qcom_render_pass_transform { data.push(std::ffi::CString::new("VK_QCOM_render_pass_transform").unwrap()); } if x.qcom_rotated_copy_commands { data.push(std::ffi::CString::new("VK_QCOM_rotated_copy_commands").unwrap()); } if x.qcom_tile_properties { data.push(std::ffi::CString::new("VK_QCOM_tile_properties").unwrap()); } if x.sec_amigo_profiling { data.push(std::ffi::CString::new("VK_SEC_amigo_profiling").unwrap()); } if x.valve_descriptor_set_host_mapping { data.push(std::ffi::CString::new("VK_VALVE_descriptor_set_host_mapping").unwrap()); } if x.valve_mutable_descriptor_type { data.push(std::ffi::CString::new("VK_VALVE_mutable_descriptor_type").unwrap()); } data } } impl IntoIterator for DeviceExtensions { type Item = (&'static str, bool); type IntoIter = std::array::IntoIter; #[inline] fn into_iter(self) -> Self::IntoIter { [ ("VK_KHR_16bit_storage", self.khr_16bit_storage), ("VK_KHR_8bit_storage", self.khr_8bit_storage), ( "VK_KHR_acceleration_structure", self.khr_acceleration_structure, ), ("VK_KHR_bind_memory2", self.khr_bind_memory2), ( "VK_KHR_buffer_device_address", self.khr_buffer_device_address, ), ("VK_KHR_copy_commands2", self.khr_copy_commands2), ("VK_KHR_create_renderpass2", self.khr_create_renderpass2), ("VK_KHR_dedicated_allocation", self.khr_dedicated_allocation), ( "VK_KHR_deferred_host_operations", self.khr_deferred_host_operations, ), ( "VK_KHR_depth_stencil_resolve", self.khr_depth_stencil_resolve, ), ( "VK_KHR_descriptor_update_template", self.khr_descriptor_update_template, ), ("VK_KHR_device_group", self.khr_device_group), ("VK_KHR_display_swapchain", self.khr_display_swapchain), ("VK_KHR_draw_indirect_count", self.khr_draw_indirect_count), ("VK_KHR_driver_properties", self.khr_driver_properties), ("VK_KHR_dynamic_rendering", self.khr_dynamic_rendering), ("VK_KHR_external_fence", self.khr_external_fence), ("VK_KHR_external_fence_fd", self.khr_external_fence_fd), ("VK_KHR_external_fence_win32", self.khr_external_fence_win32), ("VK_KHR_external_memory", self.khr_external_memory), ("VK_KHR_external_memory_fd", self.khr_external_memory_fd), ( "VK_KHR_external_memory_win32", self.khr_external_memory_win32, ), ("VK_KHR_external_semaphore", self.khr_external_semaphore), ( "VK_KHR_external_semaphore_fd", self.khr_external_semaphore_fd, ), ( "VK_KHR_external_semaphore_win32", self.khr_external_semaphore_win32, ), ( "VK_KHR_format_feature_flags2", self.khr_format_feature_flags2, ), ( "VK_KHR_fragment_shader_barycentric", self.khr_fragment_shader_barycentric, ), ( "VK_KHR_fragment_shading_rate", self.khr_fragment_shading_rate, ), ( "VK_KHR_get_memory_requirements2", self.khr_get_memory_requirements2, ), ("VK_KHR_global_priority", self.khr_global_priority), ("VK_KHR_image_format_list", self.khr_image_format_list), ( "VK_KHR_imageless_framebuffer", self.khr_imageless_framebuffer, ), ("VK_KHR_incremental_present", self.khr_incremental_present), ("VK_KHR_maintenance1", self.khr_maintenance1), ("VK_KHR_maintenance2", self.khr_maintenance2), ("VK_KHR_maintenance3", self.khr_maintenance3), ("VK_KHR_maintenance4", self.khr_maintenance4), ("VK_KHR_multiview", self.khr_multiview), ("VK_KHR_performance_query", self.khr_performance_query), ( "VK_KHR_pipeline_executable_properties", self.khr_pipeline_executable_properties, ), ("VK_KHR_pipeline_library", self.khr_pipeline_library), ("VK_KHR_portability_subset", self.khr_portability_subset), ("VK_KHR_present_id", self.khr_present_id), ("VK_KHR_present_wait", self.khr_present_wait), ("VK_KHR_push_descriptor", self.khr_push_descriptor), ("VK_KHR_ray_query", self.khr_ray_query), ( "VK_KHR_ray_tracing_maintenance1", self.khr_ray_tracing_maintenance1, ), ("VK_KHR_ray_tracing_pipeline", self.khr_ray_tracing_pipeline), ("VK_KHR_relaxed_block_layout", self.khr_relaxed_block_layout), ( "VK_KHR_sampler_mirror_clamp_to_edge", self.khr_sampler_mirror_clamp_to_edge, ), ( "VK_KHR_sampler_ycbcr_conversion", self.khr_sampler_ycbcr_conversion, ), ( "VK_KHR_separate_depth_stencil_layouts", self.khr_separate_depth_stencil_layouts, ), ("VK_KHR_shader_atomic_int64", self.khr_shader_atomic_int64), ("VK_KHR_shader_clock", self.khr_shader_clock), ( "VK_KHR_shader_draw_parameters", self.khr_shader_draw_parameters, ), ("VK_KHR_shader_float16_int8", self.khr_shader_float16_int8), ( "VK_KHR_shader_float_controls", self.khr_shader_float_controls, ), ( "VK_KHR_shader_integer_dot_product", self.khr_shader_integer_dot_product, ), ( "VK_KHR_shader_non_semantic_info", self.khr_shader_non_semantic_info, ), ( "VK_KHR_shader_subgroup_extended_types", self.khr_shader_subgroup_extended_types, ), ( "VK_KHR_shader_subgroup_uniform_control_flow", self.khr_shader_subgroup_uniform_control_flow, ), ( "VK_KHR_shader_terminate_invocation", self.khr_shader_terminate_invocation, ), ( "VK_KHR_shared_presentable_image", self.khr_shared_presentable_image, ), ("VK_KHR_spirv_1_4", self.khr_spirv_1_4), ( "VK_KHR_storage_buffer_storage_class", self.khr_storage_buffer_storage_class, ), ("VK_KHR_swapchain", self.khr_swapchain), ( "VK_KHR_swapchain_mutable_format", self.khr_swapchain_mutable_format, ), ("VK_KHR_synchronization2", self.khr_synchronization2), ("VK_KHR_timeline_semaphore", self.khr_timeline_semaphore), ( "VK_KHR_uniform_buffer_standard_layout", self.khr_uniform_buffer_standard_layout, ), ("VK_KHR_variable_pointers", self.khr_variable_pointers), ("VK_KHR_video_decode_h264", self.khr_video_decode_h264), ("VK_KHR_video_decode_h265", self.khr_video_decode_h265), ("VK_KHR_video_decode_queue", self.khr_video_decode_queue), ("VK_KHR_video_encode_queue", self.khr_video_encode_queue), ("VK_KHR_video_queue", self.khr_video_queue), ("VK_KHR_vulkan_memory_model", self.khr_vulkan_memory_model), ("VK_KHR_win32_keyed_mutex", self.khr_win32_keyed_mutex), ( "VK_KHR_workgroup_memory_explicit_layout", self.khr_workgroup_memory_explicit_layout, ), ( "VK_KHR_zero_initialize_workgroup_memory", self.khr_zero_initialize_workgroup_memory, ), ("VK_EXT_4444_formats", self.ext_4444_formats), ("VK_EXT_astc_decode_mode", self.ext_astc_decode_mode), ( "VK_EXT_attachment_feedback_loop_layout", self.ext_attachment_feedback_loop_layout, ), ( "VK_EXT_blend_operation_advanced", self.ext_blend_operation_advanced, ), ("VK_EXT_border_color_swizzle", self.ext_border_color_swizzle), ( "VK_EXT_buffer_device_address", self.ext_buffer_device_address, ), ( "VK_EXT_calibrated_timestamps", self.ext_calibrated_timestamps, ), ("VK_EXT_color_write_enable", self.ext_color_write_enable), ( "VK_EXT_conditional_rendering", self.ext_conditional_rendering, ), ( "VK_EXT_conservative_rasterization", self.ext_conservative_rasterization, ), ("VK_EXT_custom_border_color", self.ext_custom_border_color), ("VK_EXT_debug_marker", self.ext_debug_marker), ("VK_EXT_depth_clamp_zero_one", self.ext_depth_clamp_zero_one), ("VK_EXT_depth_clip_control", self.ext_depth_clip_control), ("VK_EXT_depth_clip_enable", self.ext_depth_clip_enable), ( "VK_EXT_depth_range_unrestricted", self.ext_depth_range_unrestricted, ), ("VK_EXT_descriptor_buffer", self.ext_descriptor_buffer), ("VK_EXT_descriptor_indexing", self.ext_descriptor_indexing), ( "VK_EXT_device_address_binding_report", self.ext_device_address_binding_report, ), ("VK_EXT_device_fault", self.ext_device_fault), ("VK_EXT_device_memory_report", self.ext_device_memory_report), ("VK_EXT_discard_rectangles", self.ext_discard_rectangles), ("VK_EXT_display_control", self.ext_display_control), ( "VK_EXT_extended_dynamic_state", self.ext_extended_dynamic_state, ), ( "VK_EXT_extended_dynamic_state2", self.ext_extended_dynamic_state2, ), ( "VK_EXT_extended_dynamic_state3", self.ext_extended_dynamic_state3, ), ( "VK_EXT_external_memory_dma_buf", self.ext_external_memory_dma_buf, ), ("VK_EXT_external_memory_host", self.ext_external_memory_host), ("VK_EXT_filter_cubic", self.ext_filter_cubic), ("VK_EXT_fragment_density_map", self.ext_fragment_density_map), ( "VK_EXT_fragment_density_map2", self.ext_fragment_density_map2, ), ( "VK_EXT_fragment_shader_interlock", self.ext_fragment_shader_interlock, ), ( "VK_EXT_full_screen_exclusive", self.ext_full_screen_exclusive, ), ("VK_EXT_global_priority", self.ext_global_priority), ( "VK_EXT_global_priority_query", self.ext_global_priority_query, ), ( "VK_EXT_graphics_pipeline_library", self.ext_graphics_pipeline_library, ), ("VK_EXT_hdr_metadata", self.ext_hdr_metadata), ("VK_EXT_host_query_reset", self.ext_host_query_reset), ("VK_EXT_image_2d_view_of_3d", self.ext_image_2d_view_of_3d), ( "VK_EXT_image_compression_control", self.ext_image_compression_control, ), ( "VK_EXT_image_compression_control_swapchain", self.ext_image_compression_control_swapchain, ), ( "VK_EXT_image_drm_format_modifier", self.ext_image_drm_format_modifier, ), ("VK_EXT_image_robustness", self.ext_image_robustness), ("VK_EXT_image_view_min_lod", self.ext_image_view_min_lod), ("VK_EXT_index_type_uint8", self.ext_index_type_uint8), ("VK_EXT_inline_uniform_block", self.ext_inline_uniform_block), ("VK_EXT_legacy_dithering", self.ext_legacy_dithering), ("VK_EXT_line_rasterization", self.ext_line_rasterization), ("VK_EXT_load_store_op_none", self.ext_load_store_op_none), ("VK_EXT_memory_budget", self.ext_memory_budget), ("VK_EXT_memory_priority", self.ext_memory_priority), ("VK_EXT_mesh_shader", self.ext_mesh_shader), ("VK_EXT_metal_objects", self.ext_metal_objects), ("VK_EXT_multi_draw", self.ext_multi_draw), ( "VK_EXT_multisampled_render_to_single_sampled", self.ext_multisampled_render_to_single_sampled, ), ( "VK_EXT_mutable_descriptor_type", self.ext_mutable_descriptor_type, ), ( "VK_EXT_non_seamless_cube_map", self.ext_non_seamless_cube_map, ), ("VK_EXT_opacity_micromap", self.ext_opacity_micromap), ( "VK_EXT_pageable_device_local_memory", self.ext_pageable_device_local_memory, ), ("VK_EXT_pci_bus_info", self.ext_pci_bus_info), ("VK_EXT_physical_device_drm", self.ext_physical_device_drm), ( "VK_EXT_pipeline_creation_cache_control", self.ext_pipeline_creation_cache_control, ), ( "VK_EXT_pipeline_creation_feedback", self.ext_pipeline_creation_feedback, ), ("VK_EXT_pipeline_properties", self.ext_pipeline_properties), ( "VK_EXT_pipeline_protected_access", self.ext_pipeline_protected_access, ), ("VK_EXT_pipeline_robustness", self.ext_pipeline_robustness), ("VK_EXT_post_depth_coverage", self.ext_post_depth_coverage), ( "VK_EXT_primitive_topology_list_restart", self.ext_primitive_topology_list_restart, ), ( "VK_EXT_primitives_generated_query", self.ext_primitives_generated_query, ), ("VK_EXT_private_data", self.ext_private_data), ("VK_EXT_provoking_vertex", self.ext_provoking_vertex), ("VK_EXT_queue_family_foreign", self.ext_queue_family_foreign), ( "VK_EXT_rasterization_order_attachment_access", self.ext_rasterization_order_attachment_access, ), ("VK_EXT_rgba10x6_formats", self.ext_rgba10x6_formats), ("VK_EXT_robustness2", self.ext_robustness2), ("VK_EXT_sample_locations", self.ext_sample_locations), ( "VK_EXT_sampler_filter_minmax", self.ext_sampler_filter_minmax, ), ("VK_EXT_scalar_block_layout", self.ext_scalar_block_layout), ( "VK_EXT_separate_stencil_usage", self.ext_separate_stencil_usage, ), ("VK_EXT_shader_atomic_float", self.ext_shader_atomic_float), ("VK_EXT_shader_atomic_float2", self.ext_shader_atomic_float2), ( "VK_EXT_shader_demote_to_helper_invocation", self.ext_shader_demote_to_helper_invocation, ), ( "VK_EXT_shader_image_atomic_int64", self.ext_shader_image_atomic_int64, ), ( "VK_EXT_shader_module_identifier", self.ext_shader_module_identifier, ), ( "VK_EXT_shader_stencil_export", self.ext_shader_stencil_export, ), ( "VK_EXT_shader_subgroup_ballot", self.ext_shader_subgroup_ballot, ), ("VK_EXT_shader_subgroup_vote", self.ext_shader_subgroup_vote), ( "VK_EXT_shader_viewport_index_layer", self.ext_shader_viewport_index_layer, ), ( "VK_EXT_subgroup_size_control", self.ext_subgroup_size_control, ), ( "VK_EXT_subpass_merge_feedback", self.ext_subpass_merge_feedback, ), ( "VK_EXT_swapchain_maintenance1", self.ext_swapchain_maintenance1, ), ( "VK_EXT_texel_buffer_alignment", self.ext_texel_buffer_alignment, ), ( "VK_EXT_texture_compression_astc_hdr", self.ext_texture_compression_astc_hdr, ), ("VK_EXT_tooling_info", self.ext_tooling_info), ("VK_EXT_transform_feedback", self.ext_transform_feedback), ("VK_EXT_validation_cache", self.ext_validation_cache), ( "VK_EXT_vertex_attribute_divisor", self.ext_vertex_attribute_divisor, ), ( "VK_EXT_vertex_input_dynamic_state", self.ext_vertex_input_dynamic_state, ), ("VK_EXT_video_encode_h264", self.ext_video_encode_h264), ("VK_EXT_video_encode_h265", self.ext_video_encode_h265), ( "VK_EXT_ycbcr_2plane_444_formats", self.ext_ycbcr_2plane_444_formats, ), ("VK_EXT_ycbcr_image_arrays", self.ext_ycbcr_image_arrays), ("VK_AMD_buffer_marker", self.amd_buffer_marker), ( "VK_AMD_device_coherent_memory", self.amd_device_coherent_memory, ), ("VK_AMD_display_native_hdr", self.amd_display_native_hdr), ("VK_AMD_draw_indirect_count", self.amd_draw_indirect_count), ("VK_AMD_gcn_shader", self.amd_gcn_shader), ( "VK_AMD_gpu_shader_half_float", self.amd_gpu_shader_half_float, ), ("VK_AMD_gpu_shader_int16", self.amd_gpu_shader_int16), ( "VK_AMD_memory_overallocation_behavior", self.amd_memory_overallocation_behavior, ), ( "VK_AMD_mixed_attachment_samples", self.amd_mixed_attachment_samples, ), ( "VK_AMD_pipeline_compiler_control", self.amd_pipeline_compiler_control, ), ("VK_AMD_rasterization_order", self.amd_rasterization_order), ("VK_AMD_shader_ballot", self.amd_shader_ballot), ( "VK_AMD_shader_core_properties", self.amd_shader_core_properties, ), ( "VK_AMD_shader_core_properties2", self.amd_shader_core_properties2, ), ( "VK_AMD_shader_early_and_late_fragment_tests", self.amd_shader_early_and_late_fragment_tests, ), ( "VK_AMD_shader_explicit_vertex_parameter", self.amd_shader_explicit_vertex_parameter, ), ("VK_AMD_shader_fragment_mask", self.amd_shader_fragment_mask), ( "VK_AMD_shader_image_load_store_lod", self.amd_shader_image_load_store_lod, ), ("VK_AMD_shader_info", self.amd_shader_info), ( "VK_AMD_shader_trinary_minmax", self.amd_shader_trinary_minmax, ), ( "VK_AMD_texture_gather_bias_lod", self.amd_texture_gather_bias_lod, ), ( "VK_ANDROID_external_memory_android_hardware_buffer", self.android_external_memory_android_hardware_buffer, ), ( "VK_ARM_rasterization_order_attachment_access", self.arm_rasterization_order_attachment_access, ), ("VK_ARM_shader_core_builtins", self.arm_shader_core_builtins), ( "VK_FUCHSIA_buffer_collection", self.fuchsia_buffer_collection, ), ("VK_FUCHSIA_external_memory", self.fuchsia_external_memory), ( "VK_FUCHSIA_external_semaphore", self.fuchsia_external_semaphore, ), ("VK_GGP_frame_token", self.ggp_frame_token), ("VK_GOOGLE_decorate_string", self.google_decorate_string), ("VK_GOOGLE_display_timing", self.google_display_timing), ( "VK_GOOGLE_hlsl_functionality1", self.google_hlsl_functionality1, ), ("VK_GOOGLE_user_type", self.google_user_type), ("VK_HUAWEI_invocation_mask", self.huawei_invocation_mask), ("VK_HUAWEI_subpass_shading", self.huawei_subpass_shading), ("VK_IMG_filter_cubic", self.img_filter_cubic), ("VK_IMG_format_pvrtc", self.img_format_pvrtc), ("VK_INTEL_performance_query", self.intel_performance_query), ( "VK_INTEL_shader_integer_functions2", self.intel_shader_integer_functions2, ), ("VK_NVX_binary_import", self.nvx_binary_import), ("VK_NVX_image_view_handle", self.nvx_image_view_handle), ( "VK_NVX_multiview_per_view_attributes", self.nvx_multiview_per_view_attributes, ), ("VK_NV_acquire_winrt_display", self.nv_acquire_winrt_display), ("VK_NV_clip_space_w_scaling", self.nv_clip_space_w_scaling), ( "VK_NV_compute_shader_derivatives", self.nv_compute_shader_derivatives, ), ("VK_NV_cooperative_matrix", self.nv_cooperative_matrix), ("VK_NV_copy_memory_indirect", self.nv_copy_memory_indirect), ("VK_NV_corner_sampled_image", self.nv_corner_sampled_image), ( "VK_NV_coverage_reduction_mode", self.nv_coverage_reduction_mode, ), ("VK_NV_dedicated_allocation", self.nv_dedicated_allocation), ( "VK_NV_dedicated_allocation_image_aliasing", self.nv_dedicated_allocation_image_aliasing, ), ( "VK_NV_device_diagnostic_checkpoints", self.nv_device_diagnostic_checkpoints, ), ( "VK_NV_device_diagnostics_config", self.nv_device_diagnostics_config, ), ( "VK_NV_device_generated_commands", self.nv_device_generated_commands, ), ("VK_NV_external_memory", self.nv_external_memory), ("VK_NV_external_memory_rdma", self.nv_external_memory_rdma), ("VK_NV_external_memory_win32", self.nv_external_memory_win32), ("VK_NV_fill_rectangle", self.nv_fill_rectangle), ( "VK_NV_fragment_coverage_to_color", self.nv_fragment_coverage_to_color, ), ( "VK_NV_fragment_shader_barycentric", self.nv_fragment_shader_barycentric, ), ( "VK_NV_fragment_shading_rate_enums", self.nv_fragment_shading_rate_enums, ), ( "VK_NV_framebuffer_mixed_samples", self.nv_framebuffer_mixed_samples, ), ( "VK_NV_geometry_shader_passthrough", self.nv_geometry_shader_passthrough, ), ("VK_NV_glsl_shader", self.nv_glsl_shader), ( "VK_NV_inherited_viewport_scissor", self.nv_inherited_viewport_scissor, ), ( "VK_NV_linear_color_attachment", self.nv_linear_color_attachment, ), ("VK_NV_memory_decompression", self.nv_memory_decompression), ("VK_NV_mesh_shader", self.nv_mesh_shader), ("VK_NV_optical_flow", self.nv_optical_flow), ("VK_NV_present_barrier", self.nv_present_barrier), ("VK_NV_ray_tracing", self.nv_ray_tracing), ( "VK_NV_ray_tracing_invocation_reorder", self.nv_ray_tracing_invocation_reorder, ), ( "VK_NV_ray_tracing_motion_blur", self.nv_ray_tracing_motion_blur, ), ( "VK_NV_representative_fragment_test", self.nv_representative_fragment_test, ), ( "VK_NV_sample_mask_override_coverage", self.nv_sample_mask_override_coverage, ), ("VK_NV_scissor_exclusive", self.nv_scissor_exclusive), ( "VK_NV_shader_image_footprint", self.nv_shader_image_footprint, ), ("VK_NV_shader_sm_builtins", self.nv_shader_sm_builtins), ( "VK_NV_shader_subgroup_partitioned", self.nv_shader_subgroup_partitioned, ), ("VK_NV_shading_rate_image", self.nv_shading_rate_image), ("VK_NV_viewport_array2", self.nv_viewport_array2), ("VK_NV_viewport_swizzle", self.nv_viewport_swizzle), ("VK_NV_win32_keyed_mutex", self.nv_win32_keyed_mutex), ( "VK_QCOM_fragment_density_map_offset", self.qcom_fragment_density_map_offset, ), ("VK_QCOM_image_processing", self.qcom_image_processing), ( "VK_QCOM_multiview_per_view_viewports", self.qcom_multiview_per_view_viewports, ), ( "VK_QCOM_render_pass_shader_resolve", self.qcom_render_pass_shader_resolve, ), ( "VK_QCOM_render_pass_store_ops", self.qcom_render_pass_store_ops, ), ( "VK_QCOM_render_pass_transform", self.qcom_render_pass_transform, ), ( "VK_QCOM_rotated_copy_commands", self.qcom_rotated_copy_commands, ), ("VK_QCOM_tile_properties", self.qcom_tile_properties), ("VK_SEC_amigo_profiling", self.sec_amigo_profiling), ( "VK_VALVE_descriptor_set_host_mapping", self.valve_descriptor_set_host_mapping, ), ( "VK_VALVE_mutable_descriptor_type", self.valve_mutable_descriptor_type, ), ] .into_iter() } } impl DeviceExtensions { #[doc = r" Checks enabled extensions against the device version, instance extensions and each other."] pub(super) fn check_requirements( &self, supported: &DeviceExtensions, api_version: crate::Version, instance_extensions: &crate::instance::InstanceExtensions, ) -> Result<(), crate::device::ExtensionRestrictionError> { let device_extensions = self; if self.khr_16bit_storage { if !supported.khr_16bit_storage { return Err(crate::device::ExtensionRestrictionError { extension: "khr_16bit_storage", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_16bit_storage", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_1 || device_extensions.khr_storage_buffer_storage_class) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_16bit_storage", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &["khr_storage_buffer_storage_class"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.khr_8bit_storage { if !supported.khr_8bit_storage { return Err(crate::device::ExtensionRestrictionError { extension: "khr_8bit_storage", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_8bit_storage", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_1 || device_extensions.khr_storage_buffer_storage_class) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_8bit_storage", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &["khr_storage_buffer_storage_class"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.khr_acceleration_structure { if !supported.khr_acceleration_structure { return Err(crate::device::ExtensionRestrictionError { extension: "khr_acceleration_structure", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_acceleration_structure", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &[], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_2 || device_extensions.ext_descriptor_indexing) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_acceleration_structure", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_2), device_extensions: &["ext_descriptor_indexing"], instance_extensions: &[], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_2 || device_extensions.khr_buffer_device_address) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_acceleration_structure", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_2), device_extensions: &["khr_buffer_device_address"], instance_extensions: &[], ..Default::default() }, ), }); } if !(device_extensions.khr_deferred_host_operations) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_acceleration_structure", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["khr_deferred_host_operations"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.khr_bind_memory2 { if !supported.khr_bind_memory2 { return Err(crate::device::ExtensionRestrictionError { extension: "khr_bind_memory2", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.khr_buffer_device_address { if !supported.khr_buffer_device_address { return Err(crate::device::ExtensionRestrictionError { extension: "khr_buffer_device_address", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_buffer_device_address", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } if self.ext_buffer_device_address { return Err(crate::device::ExtensionRestrictionError { extension: "khr_buffer_device_address", restriction: crate::device::ExtensionRestriction::ConflictsDeviceExtension( "ext_buffer_device_address", ), }); } } else { } if self.khr_copy_commands2 { if !supported.khr_copy_commands2 { return Err(crate::device::ExtensionRestrictionError { extension: "khr_copy_commands2", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.khr_create_renderpass2 { if !supported.khr_create_renderpass2 { return Err(crate::device::ExtensionRestrictionError { extension: "khr_create_renderpass2", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || device_extensions.khr_multiview) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_create_renderpass2", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &["khr_multiview"], instance_extensions: &[], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_1 || device_extensions.khr_maintenance2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_create_renderpass2", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &["khr_maintenance2"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.khr_dedicated_allocation { if !supported.khr_dedicated_allocation { return Err(crate::device::ExtensionRestrictionError { extension: "khr_dedicated_allocation", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || device_extensions.khr_get_memory_requirements2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_dedicated_allocation", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &["khr_get_memory_requirements2"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.khr_deferred_host_operations { if !supported.khr_deferred_host_operations { return Err(crate::device::ExtensionRestrictionError { extension: "khr_deferred_host_operations", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.khr_depth_stencil_resolve { if !supported.khr_depth_stencil_resolve { return Err(crate::device::ExtensionRestrictionError { extension: "khr_depth_stencil_resolve", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_2 || device_extensions.khr_create_renderpass2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_depth_stencil_resolve", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_2), device_extensions: &["khr_create_renderpass2"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.khr_descriptor_update_template { if !supported.khr_descriptor_update_template { return Err(crate::device::ExtensionRestrictionError { extension: "khr_descriptor_update_template", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.khr_device_group { if !supported.khr_device_group { return Err(crate::device::ExtensionRestrictionError { extension: "khr_device_group", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_device_group_creation) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_device_group", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_device_group_creation"], ..Default::default() }, ), }); } } else { } if self.khr_display_swapchain { if !supported.khr_display_swapchain { return Err(crate::device::ExtensionRestrictionError { extension: "khr_display_swapchain", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(device_extensions.khr_swapchain) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_display_swapchain", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["khr_swapchain"], instance_extensions: &[], ..Default::default() }, ), }); } if !(instance_extensions.khr_display) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_display_swapchain", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &[], instance_extensions: &["khr_display"], ..Default::default() }, ), }); } } else { } if self.khr_draw_indirect_count { if !supported.khr_draw_indirect_count { return Err(crate::device::ExtensionRestrictionError { extension: "khr_draw_indirect_count", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.khr_driver_properties { if !supported.khr_driver_properties { return Err(crate::device::ExtensionRestrictionError { extension: "khr_driver_properties", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_driver_properties", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.khr_dynamic_rendering { if !supported.khr_dynamic_rendering { return Err(crate::device::ExtensionRestrictionError { extension: "khr_dynamic_rendering", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_2 || device_extensions.khr_depth_stencil_resolve) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_dynamic_rendering", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_2), device_extensions: &["khr_depth_stencil_resolve"], instance_extensions: &[], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_dynamic_rendering", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.khr_external_fence { if !supported.khr_external_fence { return Err(crate::device::ExtensionRestrictionError { extension: "khr_external_fence", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_external_fence_capabilities) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_external_fence", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_external_fence_capabilities"], ..Default::default() }, ), }); } } else { } if self.khr_external_fence_fd { if !supported.khr_external_fence_fd { return Err(crate::device::ExtensionRestrictionError { extension: "khr_external_fence_fd", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || device_extensions.khr_external_fence) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_external_fence_fd", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &["khr_external_fence"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.khr_external_fence_win32 { if !supported.khr_external_fence_win32 { return Err(crate::device::ExtensionRestrictionError { extension: "khr_external_fence_win32", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || device_extensions.khr_external_fence) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_external_fence_win32", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &["khr_external_fence"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.khr_external_memory { if !supported.khr_external_memory { return Err(crate::device::ExtensionRestrictionError { extension: "khr_external_memory", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_external_memory_capabilities) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_external_memory", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_external_memory_capabilities"], ..Default::default() }, ), }); } } else { } if self.khr_external_memory_fd { if !supported.khr_external_memory_fd { return Err(crate::device::ExtensionRestrictionError { extension: "khr_external_memory_fd", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || device_extensions.khr_external_memory) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_external_memory_fd", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &["khr_external_memory"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.khr_external_memory_win32 { if !supported.khr_external_memory_win32 { return Err(crate::device::ExtensionRestrictionError { extension: "khr_external_memory_win32", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || device_extensions.khr_external_memory) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_external_memory_win32", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &["khr_external_memory"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.khr_external_semaphore { if !supported.khr_external_semaphore { return Err(crate::device::ExtensionRestrictionError { extension: "khr_external_semaphore", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_external_semaphore_capabilities) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_external_semaphore", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_external_semaphore_capabilities"], ..Default::default() }, ), }); } } else { } if self.khr_external_semaphore_fd { if !supported.khr_external_semaphore_fd { return Err(crate::device::ExtensionRestrictionError { extension: "khr_external_semaphore_fd", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || device_extensions.khr_external_semaphore) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_external_semaphore_fd", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &["khr_external_semaphore"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.khr_external_semaphore_win32 { if !supported.khr_external_semaphore_win32 { return Err(crate::device::ExtensionRestrictionError { extension: "khr_external_semaphore_win32", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || device_extensions.khr_external_semaphore) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_external_semaphore_win32", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &["khr_external_semaphore"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.khr_format_feature_flags2 { if !supported.khr_format_feature_flags2 { return Err(crate::device::ExtensionRestrictionError { extension: "khr_format_feature_flags2", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_format_feature_flags2", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.khr_fragment_shader_barycentric { if !supported.khr_fragment_shader_barycentric { return Err(crate::device::ExtensionRestrictionError { extension: "khr_fragment_shader_barycentric", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_fragment_shader_barycentric", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.khr_fragment_shading_rate { if !supported.khr_fragment_shading_rate { return Err(crate::device::ExtensionRestrictionError { extension: "khr_fragment_shading_rate", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_2 || device_extensions.khr_create_renderpass2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_fragment_shading_rate", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_2), device_extensions: &["khr_create_renderpass2"], instance_extensions: &[], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_fragment_shading_rate", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.khr_get_memory_requirements2 { if !supported.khr_get_memory_requirements2 { return Err(crate::device::ExtensionRestrictionError { extension: "khr_get_memory_requirements2", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.khr_global_priority { if !supported.khr_global_priority { return Err(crate::device::ExtensionRestrictionError { extension: "khr_global_priority", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.khr_image_format_list { if !supported.khr_image_format_list { return Err(crate::device::ExtensionRestrictionError { extension: "khr_image_format_list", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.khr_imageless_framebuffer { if !supported.khr_imageless_framebuffer { return Err(crate::device::ExtensionRestrictionError { extension: "khr_imageless_framebuffer", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || device_extensions.khr_maintenance2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_imageless_framebuffer", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &["khr_maintenance2"], instance_extensions: &[], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_2 || device_extensions.khr_image_format_list) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_imageless_framebuffer", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_2), device_extensions: &["khr_image_format_list"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.khr_incremental_present { if !supported.khr_incremental_present { return Err(crate::device::ExtensionRestrictionError { extension: "khr_incremental_present", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(device_extensions.khr_swapchain) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_incremental_present", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["khr_swapchain"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.khr_maintenance1 { if !supported.khr_maintenance1 { return Err(crate::device::ExtensionRestrictionError { extension: "khr_maintenance1", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.khr_maintenance2 { if !supported.khr_maintenance2 { return Err(crate::device::ExtensionRestrictionError { extension: "khr_maintenance2", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.khr_maintenance3 { if !supported.khr_maintenance3 { return Err(crate::device::ExtensionRestrictionError { extension: "khr_maintenance3", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_maintenance3", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.khr_maintenance4 { if !supported.khr_maintenance4 { return Err(crate::device::ExtensionRestrictionError { extension: "khr_maintenance4", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_maintenance4", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.khr_multiview { if !supported.khr_multiview { return Err(crate::device::ExtensionRestrictionError { extension: "khr_multiview", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_multiview", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.khr_performance_query { if !supported.khr_performance_query { return Err(crate::device::ExtensionRestrictionError { extension: "khr_performance_query", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_performance_query", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.khr_pipeline_executable_properties { if !supported.khr_pipeline_executable_properties { return Err(crate::device::ExtensionRestrictionError { extension: "khr_pipeline_executable_properties", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_pipeline_executable_properties", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.khr_pipeline_library { if !supported.khr_pipeline_library { return Err(crate::device::ExtensionRestrictionError { extension: "khr_pipeline_library", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.khr_portability_subset { if !supported.khr_portability_subset { return Err(crate::device::ExtensionRestrictionError { extension: "khr_portability_subset", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_portability_subset", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { if supported.khr_portability_subset { return Err(crate::device::ExtensionRestrictionError { extension: "khr_portability_subset", restriction: crate::device::ExtensionRestriction::RequiredIfSupported, }); } } if self.khr_present_id { if !supported.khr_present_id { return Err(crate::device::ExtensionRestrictionError { extension: "khr_present_id", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(device_extensions.khr_swapchain) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_present_id", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["khr_swapchain"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.khr_present_wait { if !supported.khr_present_wait { return Err(crate::device::ExtensionRestrictionError { extension: "khr_present_wait", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(device_extensions.khr_swapchain) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_present_wait", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["khr_swapchain"], instance_extensions: &[], ..Default::default() }, ), }); } if !(device_extensions.khr_present_id) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_present_wait", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["khr_present_id"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.khr_push_descriptor { if !supported.khr_push_descriptor { return Err(crate::device::ExtensionRestrictionError { extension: "khr_push_descriptor", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_push_descriptor", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.khr_ray_query { if !supported.khr_ray_query { return Err(crate::device::ExtensionRestrictionError { extension: "khr_ray_query", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_ray_query", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &[], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_2 || device_extensions.khr_spirv_1_4) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_ray_query", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_2), device_extensions: &["khr_spirv_1_4"], instance_extensions: &[], ..Default::default() }, ), }); } if !(device_extensions.khr_acceleration_structure) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_ray_query", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["khr_acceleration_structure"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.khr_ray_tracing_maintenance1 { if !supported.khr_ray_tracing_maintenance1 { return Err(crate::device::ExtensionRestrictionError { extension: "khr_ray_tracing_maintenance1", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_ray_tracing_maintenance1", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &[], ..Default::default() }, ), }); } if !(device_extensions.khr_acceleration_structure) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_ray_tracing_maintenance1", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["khr_acceleration_structure"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.khr_ray_tracing_pipeline { if !supported.khr_ray_tracing_pipeline { return Err(crate::device::ExtensionRestrictionError { extension: "khr_ray_tracing_pipeline", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_ray_tracing_pipeline", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &[], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_2 || device_extensions.khr_spirv_1_4) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_ray_tracing_pipeline", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_2), device_extensions: &["khr_spirv_1_4"], instance_extensions: &[], ..Default::default() }, ), }); } if !(device_extensions.khr_acceleration_structure) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_ray_tracing_pipeline", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["khr_acceleration_structure"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.khr_relaxed_block_layout { if !supported.khr_relaxed_block_layout { return Err(crate::device::ExtensionRestrictionError { extension: "khr_relaxed_block_layout", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.khr_sampler_mirror_clamp_to_edge { if !supported.khr_sampler_mirror_clamp_to_edge { return Err(crate::device::ExtensionRestrictionError { extension: "khr_sampler_mirror_clamp_to_edge", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.khr_sampler_ycbcr_conversion { if !supported.khr_sampler_ycbcr_conversion { return Err(crate::device::ExtensionRestrictionError { extension: "khr_sampler_ycbcr_conversion", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || device_extensions.khr_maintenance1) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_sampler_ycbcr_conversion", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &["khr_maintenance1"], instance_extensions: &[], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_1 || device_extensions.khr_bind_memory2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_sampler_ycbcr_conversion", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &["khr_bind_memory2"], instance_extensions: &[], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_1 || device_extensions.khr_get_memory_requirements2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_sampler_ycbcr_conversion", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &["khr_get_memory_requirements2"], instance_extensions: &[], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_sampler_ycbcr_conversion", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.khr_separate_depth_stencil_layouts { if !supported.khr_separate_depth_stencil_layouts { return Err(crate::device::ExtensionRestrictionError { extension: "khr_separate_depth_stencil_layouts", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_separate_depth_stencil_layouts", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_2 || device_extensions.khr_create_renderpass2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_separate_depth_stencil_layouts", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_2), device_extensions: &["khr_create_renderpass2"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.khr_shader_atomic_int64 { if !supported.khr_shader_atomic_int64 { return Err(crate::device::ExtensionRestrictionError { extension: "khr_shader_atomic_int64", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_shader_atomic_int64", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.khr_shader_clock { if !supported.khr_shader_clock { return Err(crate::device::ExtensionRestrictionError { extension: "khr_shader_clock", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_shader_clock", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.khr_shader_draw_parameters { if !supported.khr_shader_draw_parameters { return Err(crate::device::ExtensionRestrictionError { extension: "khr_shader_draw_parameters", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.khr_shader_float16_int8 { if !supported.khr_shader_float16_int8 { return Err(crate::device::ExtensionRestrictionError { extension: "khr_shader_float16_int8", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_shader_float16_int8", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.khr_shader_float_controls { if !supported.khr_shader_float_controls { return Err(crate::device::ExtensionRestrictionError { extension: "khr_shader_float_controls", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_shader_float_controls", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.khr_shader_integer_dot_product { if !supported.khr_shader_integer_dot_product { return Err(crate::device::ExtensionRestrictionError { extension: "khr_shader_integer_dot_product", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_shader_integer_dot_product", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.khr_shader_non_semantic_info { if !supported.khr_shader_non_semantic_info { return Err(crate::device::ExtensionRestrictionError { extension: "khr_shader_non_semantic_info", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.khr_shader_subgroup_extended_types { if !supported.khr_shader_subgroup_extended_types { return Err(crate::device::ExtensionRestrictionError { extension: "khr_shader_subgroup_extended_types", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_shader_subgroup_extended_types", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.khr_shader_subgroup_uniform_control_flow { if !supported.khr_shader_subgroup_uniform_control_flow { return Err(crate::device::ExtensionRestrictionError { extension: "khr_shader_subgroup_uniform_control_flow", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_shader_subgroup_uniform_control_flow", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.khr_shader_terminate_invocation { if !supported.khr_shader_terminate_invocation { return Err(crate::device::ExtensionRestrictionError { extension: "khr_shader_terminate_invocation", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_shader_terminate_invocation", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.khr_shared_presentable_image { if !supported.khr_shared_presentable_image { return Err(crate::device::ExtensionRestrictionError { extension: "khr_shared_presentable_image", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(device_extensions.khr_swapchain) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_shared_presentable_image", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["khr_swapchain"], instance_extensions: &[], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_shared_presentable_image", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } if !(instance_extensions.khr_get_surface_capabilities2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_shared_presentable_image", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &[], instance_extensions: &["khr_get_surface_capabilities2"], ..Default::default() }, ), }); } } else { } if self.khr_spirv_1_4 { if !supported.khr_spirv_1_4 { return Err(crate::device::ExtensionRestrictionError { extension: "khr_spirv_1_4", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_spirv_1_4", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &[], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_2 || device_extensions.khr_shader_float_controls) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_spirv_1_4", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_2), device_extensions: &["khr_shader_float_controls"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.khr_storage_buffer_storage_class { if !supported.khr_storage_buffer_storage_class { return Err(crate::device::ExtensionRestrictionError { extension: "khr_storage_buffer_storage_class", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.khr_swapchain { if !supported.khr_swapchain { return Err(crate::device::ExtensionRestrictionError { extension: "khr_swapchain", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(instance_extensions.khr_surface) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_swapchain", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &[], instance_extensions: &["khr_surface"], ..Default::default() }, ), }); } } else { } if self.khr_swapchain_mutable_format { if !supported.khr_swapchain_mutable_format { return Err(crate::device::ExtensionRestrictionError { extension: "khr_swapchain_mutable_format", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(device_extensions.khr_swapchain) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_swapchain_mutable_format", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["khr_swapchain"], instance_extensions: &[], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_1 || device_extensions.khr_maintenance2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_swapchain_mutable_format", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &["khr_maintenance2"], instance_extensions: &[], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_2 || device_extensions.khr_image_format_list) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_swapchain_mutable_format", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_2), device_extensions: &["khr_image_format_list"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.khr_synchronization2 { if !supported.khr_synchronization2 { return Err(crate::device::ExtensionRestrictionError { extension: "khr_synchronization2", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_synchronization2", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.khr_timeline_semaphore { if !supported.khr_timeline_semaphore { return Err(crate::device::ExtensionRestrictionError { extension: "khr_timeline_semaphore", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_timeline_semaphore", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.khr_uniform_buffer_standard_layout { if !supported.khr_uniform_buffer_standard_layout { return Err(crate::device::ExtensionRestrictionError { extension: "khr_uniform_buffer_standard_layout", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_uniform_buffer_standard_layout", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.khr_variable_pointers { if !supported.khr_variable_pointers { return Err(crate::device::ExtensionRestrictionError { extension: "khr_variable_pointers", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_variable_pointers", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_1 || device_extensions.khr_storage_buffer_storage_class) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_variable_pointers", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &["khr_storage_buffer_storage_class"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.khr_video_decode_h264 { if !supported.khr_video_decode_h264 { return Err(crate::device::ExtensionRestrictionError { extension: "khr_video_decode_h264", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(device_extensions.khr_video_decode_queue) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_video_decode_h264", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["khr_video_decode_queue"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.khr_video_decode_h265 { if !supported.khr_video_decode_h265 { return Err(crate::device::ExtensionRestrictionError { extension: "khr_video_decode_h265", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(device_extensions.khr_video_decode_queue) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_video_decode_h265", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["khr_video_decode_queue"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.khr_video_decode_queue { if !supported.khr_video_decode_queue { return Err(crate::device::ExtensionRestrictionError { extension: "khr_video_decode_queue", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(device_extensions.khr_video_queue) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_video_decode_queue", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["khr_video_queue"], instance_extensions: &[], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_3 || device_extensions.khr_synchronization2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_video_decode_queue", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_3), device_extensions: &["khr_synchronization2"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.khr_video_encode_queue { if !supported.khr_video_encode_queue { return Err(crate::device::ExtensionRestrictionError { extension: "khr_video_encode_queue", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(device_extensions.khr_video_queue) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_video_encode_queue", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["khr_video_queue"], instance_extensions: &[], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_3 || device_extensions.khr_synchronization2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_video_encode_queue", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_3), device_extensions: &["khr_synchronization2"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.khr_video_queue { if !supported.khr_video_queue { return Err(crate::device::ExtensionRestrictionError { extension: "khr_video_queue", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_video_queue", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &[], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_video_queue", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_3 || device_extensions.khr_synchronization2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_video_queue", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_3), device_extensions: &["khr_synchronization2"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.khr_vulkan_memory_model { if !supported.khr_vulkan_memory_model { return Err(crate::device::ExtensionRestrictionError { extension: "khr_vulkan_memory_model", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.khr_win32_keyed_mutex { if !supported.khr_win32_keyed_mutex { return Err(crate::device::ExtensionRestrictionError { extension: "khr_win32_keyed_mutex", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(device_extensions.khr_external_memory_win32) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_win32_keyed_mutex", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["khr_external_memory_win32"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.khr_workgroup_memory_explicit_layout { if !supported.khr_workgroup_memory_explicit_layout { return Err(crate::device::ExtensionRestrictionError { extension: "khr_workgroup_memory_explicit_layout", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_workgroup_memory_explicit_layout", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.khr_zero_initialize_workgroup_memory { if !supported.khr_zero_initialize_workgroup_memory { return Err(crate::device::ExtensionRestrictionError { extension: "khr_zero_initialize_workgroup_memory", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "khr_zero_initialize_workgroup_memory", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_4444_formats { if !supported.ext_4444_formats { return Err(crate::device::ExtensionRestrictionError { extension: "ext_4444_formats", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_4444_formats", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_astc_decode_mode { if !supported.ext_astc_decode_mode { return Err(crate::device::ExtensionRestrictionError { extension: "ext_astc_decode_mode", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_astc_decode_mode", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_attachment_feedback_loop_layout { if !supported.ext_attachment_feedback_loop_layout { return Err(crate::device::ExtensionRestrictionError { extension: "ext_attachment_feedback_loop_layout", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_attachment_feedback_loop_layout", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_blend_operation_advanced { if !supported.ext_blend_operation_advanced { return Err(crate::device::ExtensionRestrictionError { extension: "ext_blend_operation_advanced", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_blend_operation_advanced", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_border_color_swizzle { if !supported.ext_border_color_swizzle { return Err(crate::device::ExtensionRestrictionError { extension: "ext_border_color_swizzle", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(device_extensions.ext_custom_border_color) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_border_color_swizzle", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["ext_custom_border_color"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.ext_buffer_device_address { if !supported.ext_buffer_device_address { return Err(crate::device::ExtensionRestrictionError { extension: "ext_buffer_device_address", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_buffer_device_address", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } if self.khr_buffer_device_address { return Err(crate::device::ExtensionRestrictionError { extension: "ext_buffer_device_address", restriction: crate::device::ExtensionRestriction::ConflictsDeviceExtension( "khr_buffer_device_address", ), }); } } else { } if self.ext_calibrated_timestamps { if !supported.ext_calibrated_timestamps { return Err(crate::device::ExtensionRestrictionError { extension: "ext_calibrated_timestamps", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_calibrated_timestamps", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_color_write_enable { if !supported.ext_color_write_enable { return Err(crate::device::ExtensionRestrictionError { extension: "ext_color_write_enable", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_color_write_enable", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_conditional_rendering { if !supported.ext_conditional_rendering { return Err(crate::device::ExtensionRestrictionError { extension: "ext_conditional_rendering", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.ext_conservative_rasterization { if !supported.ext_conservative_rasterization { return Err(crate::device::ExtensionRestrictionError { extension: "ext_conservative_rasterization", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_conservative_rasterization", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_custom_border_color { if !supported.ext_custom_border_color { return Err(crate::device::ExtensionRestrictionError { extension: "ext_custom_border_color", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.ext_debug_marker { if !supported.ext_debug_marker { return Err(crate::device::ExtensionRestrictionError { extension: "ext_debug_marker", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(instance_extensions.ext_debug_report) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_debug_marker", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &[], instance_extensions: &["ext_debug_report"], ..Default::default() }, ), }); } } else { } if self.ext_depth_clamp_zero_one { if !supported.ext_depth_clamp_zero_one { return Err(crate::device::ExtensionRestrictionError { extension: "ext_depth_clamp_zero_one", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.ext_depth_clip_control { if !supported.ext_depth_clip_control { return Err(crate::device::ExtensionRestrictionError { extension: "ext_depth_clip_control", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_depth_clip_control", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_depth_clip_enable { if !supported.ext_depth_clip_enable { return Err(crate::device::ExtensionRestrictionError { extension: "ext_depth_clip_enable", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.ext_depth_range_unrestricted { if !supported.ext_depth_range_unrestricted { return Err(crate::device::ExtensionRestrictionError { extension: "ext_depth_range_unrestricted", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.ext_descriptor_buffer { if !supported.ext_descriptor_buffer { return Err(crate::device::ExtensionRestrictionError { extension: "ext_descriptor_buffer", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_descriptor_buffer", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_2 || device_extensions.khr_buffer_device_address) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_descriptor_buffer", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_2), device_extensions: &["khr_buffer_device_address"], instance_extensions: &[], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_3 || device_extensions.khr_synchronization2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_descriptor_buffer", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_3), device_extensions: &["khr_synchronization2"], instance_extensions: &[], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_2 || device_extensions.ext_descriptor_indexing) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_descriptor_buffer", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_2), device_extensions: &["ext_descriptor_indexing"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.ext_descriptor_indexing { if !supported.ext_descriptor_indexing { return Err(crate::device::ExtensionRestrictionError { extension: "ext_descriptor_indexing", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_descriptor_indexing", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_1 || device_extensions.khr_maintenance3) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_descriptor_indexing", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &["khr_maintenance3"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.ext_device_address_binding_report { if !supported.ext_device_address_binding_report { return Err(crate::device::ExtensionRestrictionError { extension: "ext_device_address_binding_report", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_device_address_binding_report", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } if !(instance_extensions.ext_debug_utils) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_device_address_binding_report", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &[], instance_extensions: &["ext_debug_utils"], ..Default::default() }, ), }); } } else { } if self.ext_device_fault { if !supported.ext_device_fault { return Err(crate::device::ExtensionRestrictionError { extension: "ext_device_fault", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_device_fault", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_device_memory_report { if !supported.ext_device_memory_report { return Err(crate::device::ExtensionRestrictionError { extension: "ext_device_memory_report", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_device_memory_report", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_discard_rectangles { if !supported.ext_discard_rectangles { return Err(crate::device::ExtensionRestrictionError { extension: "ext_discard_rectangles", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_discard_rectangles", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_display_control { if !supported.ext_display_control { return Err(crate::device::ExtensionRestrictionError { extension: "ext_display_control", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(instance_extensions.ext_display_surface_counter) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_display_control", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &[], instance_extensions: &["ext_display_surface_counter"], ..Default::default() }, ), }); } if !(device_extensions.khr_swapchain) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_display_control", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["khr_swapchain"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.ext_extended_dynamic_state { if !supported.ext_extended_dynamic_state { return Err(crate::device::ExtensionRestrictionError { extension: "ext_extended_dynamic_state", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_extended_dynamic_state", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_extended_dynamic_state2 { if !supported.ext_extended_dynamic_state2 { return Err(crate::device::ExtensionRestrictionError { extension: "ext_extended_dynamic_state2", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_extended_dynamic_state2", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_extended_dynamic_state3 { if !supported.ext_extended_dynamic_state3 { return Err(crate::device::ExtensionRestrictionError { extension: "ext_extended_dynamic_state3", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_extended_dynamic_state3", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_external_memory_dma_buf { if !supported.ext_external_memory_dma_buf { return Err(crate::device::ExtensionRestrictionError { extension: "ext_external_memory_dma_buf", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(device_extensions.khr_external_memory_fd) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_external_memory_dma_buf", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["khr_external_memory_fd"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.ext_external_memory_host { if !supported.ext_external_memory_host { return Err(crate::device::ExtensionRestrictionError { extension: "ext_external_memory_host", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || device_extensions.khr_external_memory) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_external_memory_host", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &["khr_external_memory"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.ext_filter_cubic { if !supported.ext_filter_cubic { return Err(crate::device::ExtensionRestrictionError { extension: "ext_filter_cubic", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.ext_fragment_density_map { if !supported.ext_fragment_density_map { return Err(crate::device::ExtensionRestrictionError { extension: "ext_fragment_density_map", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_fragment_density_map", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_fragment_density_map2 { if !supported.ext_fragment_density_map2 { return Err(crate::device::ExtensionRestrictionError { extension: "ext_fragment_density_map2", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(device_extensions.ext_fragment_density_map) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_fragment_density_map2", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["ext_fragment_density_map"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.ext_fragment_shader_interlock { if !supported.ext_fragment_shader_interlock { return Err(crate::device::ExtensionRestrictionError { extension: "ext_fragment_shader_interlock", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_fragment_shader_interlock", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_full_screen_exclusive { if !supported.ext_full_screen_exclusive { return Err(crate::device::ExtensionRestrictionError { extension: "ext_full_screen_exclusive", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_full_screen_exclusive", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } if !(instance_extensions.khr_surface) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_full_screen_exclusive", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &[], instance_extensions: &["khr_surface"], ..Default::default() }, ), }); } if !(instance_extensions.khr_get_surface_capabilities2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_full_screen_exclusive", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &[], instance_extensions: &["khr_get_surface_capabilities2"], ..Default::default() }, ), }); } if !(device_extensions.khr_swapchain) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_full_screen_exclusive", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["khr_swapchain"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.ext_global_priority { if !supported.ext_global_priority { return Err(crate::device::ExtensionRestrictionError { extension: "ext_global_priority", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.ext_global_priority_query { if !supported.ext_global_priority_query { return Err(crate::device::ExtensionRestrictionError { extension: "ext_global_priority_query", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(device_extensions.khr_global_priority || device_extensions.ext_global_priority) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_global_priority_query", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["khr_global_priority", "ext_global_priority"], instance_extensions: &[], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_global_priority_query", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_graphics_pipeline_library { if !supported.ext_graphics_pipeline_library { return Err(crate::device::ExtensionRestrictionError { extension: "ext_graphics_pipeline_library", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_graphics_pipeline_library", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } if !(device_extensions.khr_pipeline_library) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_graphics_pipeline_library", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["khr_pipeline_library"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.ext_hdr_metadata { if !supported.ext_hdr_metadata { return Err(crate::device::ExtensionRestrictionError { extension: "ext_hdr_metadata", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(device_extensions.khr_swapchain) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_hdr_metadata", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["khr_swapchain"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.ext_host_query_reset { if !supported.ext_host_query_reset { return Err(crate::device::ExtensionRestrictionError { extension: "ext_host_query_reset", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_host_query_reset", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_image_2d_view_of_3d { if !supported.ext_image_2d_view_of_3d { return Err(crate::device::ExtensionRestrictionError { extension: "ext_image_2d_view_of_3d", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || device_extensions.khr_maintenance1) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_image_2d_view_of_3d", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &["khr_maintenance1"], instance_extensions: &[], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_image_2d_view_of_3d", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_image_compression_control { if !supported.ext_image_compression_control { return Err(crate::device::ExtensionRestrictionError { extension: "ext_image_compression_control", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.ext_image_compression_control_swapchain { if !supported.ext_image_compression_control_swapchain { return Err(crate::device::ExtensionRestrictionError { extension: "ext_image_compression_control_swapchain", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(device_extensions.ext_image_compression_control) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_image_compression_control_swapchain", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["ext_image_compression_control"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.ext_image_drm_format_modifier { if !supported.ext_image_drm_format_modifier { return Err(crate::device::ExtensionRestrictionError { extension: "ext_image_drm_format_modifier", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || device_extensions.khr_bind_memory2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_image_drm_format_modifier", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &["khr_bind_memory2"], instance_extensions: &[], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_image_drm_format_modifier", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_2 || device_extensions.khr_image_format_list) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_image_drm_format_modifier", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_2), device_extensions: &["khr_image_format_list"], instance_extensions: &[], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_1 || device_extensions.khr_sampler_ycbcr_conversion) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_image_drm_format_modifier", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &["khr_sampler_ycbcr_conversion"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.ext_image_robustness { if !supported.ext_image_robustness { return Err(crate::device::ExtensionRestrictionError { extension: "ext_image_robustness", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_image_robustness", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_image_view_min_lod { if !supported.ext_image_view_min_lod { return Err(crate::device::ExtensionRestrictionError { extension: "ext_image_view_min_lod", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_image_view_min_lod", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_index_type_uint8 { if !supported.ext_index_type_uint8 { return Err(crate::device::ExtensionRestrictionError { extension: "ext_index_type_uint8", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.ext_inline_uniform_block { if !supported.ext_inline_uniform_block { return Err(crate::device::ExtensionRestrictionError { extension: "ext_inline_uniform_block", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_inline_uniform_block", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_1 || device_extensions.khr_maintenance1) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_inline_uniform_block", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &["khr_maintenance1"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.ext_legacy_dithering { if !supported.ext_legacy_dithering { return Err(crate::device::ExtensionRestrictionError { extension: "ext_legacy_dithering", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_legacy_dithering", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_line_rasterization { if !supported.ext_line_rasterization { return Err(crate::device::ExtensionRestrictionError { extension: "ext_line_rasterization", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_line_rasterization", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_load_store_op_none { if !supported.ext_load_store_op_none { return Err(crate::device::ExtensionRestrictionError { extension: "ext_load_store_op_none", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.ext_memory_budget { if !supported.ext_memory_budget { return Err(crate::device::ExtensionRestrictionError { extension: "ext_memory_budget", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_memory_budget", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_memory_priority { if !supported.ext_memory_priority { return Err(crate::device::ExtensionRestrictionError { extension: "ext_memory_priority", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_memory_priority", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_mesh_shader { if !supported.ext_mesh_shader { return Err(crate::device::ExtensionRestrictionError { extension: "ext_mesh_shader", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_mesh_shader", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &[], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_mesh_shader", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_2 || device_extensions.khr_spirv_1_4) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_mesh_shader", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_2), device_extensions: &["khr_spirv_1_4"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.ext_metal_objects { if !supported.ext_metal_objects { return Err(crate::device::ExtensionRestrictionError { extension: "ext_metal_objects", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.ext_multi_draw { if !supported.ext_multi_draw { return Err(crate::device::ExtensionRestrictionError { extension: "ext_multi_draw", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.ext_multisampled_render_to_single_sampled { if !supported.ext_multisampled_render_to_single_sampled { return Err(crate::device::ExtensionRestrictionError { extension: "ext_multisampled_render_to_single_sampled", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_2 || device_extensions.khr_create_renderpass2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_multisampled_render_to_single_sampled", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_2), device_extensions: &["khr_create_renderpass2"], instance_extensions: &[], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_2 || device_extensions.khr_depth_stencil_resolve) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_multisampled_render_to_single_sampled", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_2), device_extensions: &["khr_depth_stencil_resolve"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.ext_mutable_descriptor_type { if !supported.ext_mutable_descriptor_type { return Err(crate::device::ExtensionRestrictionError { extension: "ext_mutable_descriptor_type", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || device_extensions.khr_maintenance3) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_mutable_descriptor_type", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &["khr_maintenance3"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.ext_non_seamless_cube_map { if !supported.ext_non_seamless_cube_map { return Err(crate::device::ExtensionRestrictionError { extension: "ext_non_seamless_cube_map", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.ext_opacity_micromap { if !supported.ext_opacity_micromap { return Err(crate::device::ExtensionRestrictionError { extension: "ext_opacity_micromap", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(device_extensions.khr_acceleration_structure) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_opacity_micromap", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["khr_acceleration_structure"], instance_extensions: &[], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_3 || device_extensions.khr_synchronization2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_opacity_micromap", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_3), device_extensions: &["khr_synchronization2"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.ext_pageable_device_local_memory { if !supported.ext_pageable_device_local_memory { return Err(crate::device::ExtensionRestrictionError { extension: "ext_pageable_device_local_memory", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(device_extensions.ext_memory_priority) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_pageable_device_local_memory", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["ext_memory_priority"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.ext_pci_bus_info { if !supported.ext_pci_bus_info { return Err(crate::device::ExtensionRestrictionError { extension: "ext_pci_bus_info", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_pci_bus_info", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_physical_device_drm { if !supported.ext_physical_device_drm { return Err(crate::device::ExtensionRestrictionError { extension: "ext_physical_device_drm", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_physical_device_drm", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_pipeline_creation_cache_control { if !supported.ext_pipeline_creation_cache_control { return Err(crate::device::ExtensionRestrictionError { extension: "ext_pipeline_creation_cache_control", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.ext_pipeline_creation_feedback { if !supported.ext_pipeline_creation_feedback { return Err(crate::device::ExtensionRestrictionError { extension: "ext_pipeline_creation_feedback", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.ext_pipeline_properties { if !supported.ext_pipeline_properties { return Err(crate::device::ExtensionRestrictionError { extension: "ext_pipeline_properties", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_pipeline_properties", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_pipeline_protected_access { if !supported.ext_pipeline_protected_access { return Err(crate::device::ExtensionRestrictionError { extension: "ext_pipeline_protected_access", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_pipeline_protected_access", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_pipeline_robustness { if !supported.ext_pipeline_robustness { return Err(crate::device::ExtensionRestrictionError { extension: "ext_pipeline_robustness", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_pipeline_robustness", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_post_depth_coverage { if !supported.ext_post_depth_coverage { return Err(crate::device::ExtensionRestrictionError { extension: "ext_post_depth_coverage", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.ext_primitive_topology_list_restart { if !supported.ext_primitive_topology_list_restart { return Err(crate::device::ExtensionRestrictionError { extension: "ext_primitive_topology_list_restart", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.ext_primitives_generated_query { if !supported.ext_primitives_generated_query { return Err(crate::device::ExtensionRestrictionError { extension: "ext_primitives_generated_query", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(device_extensions.ext_transform_feedback) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_primitives_generated_query", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["ext_transform_feedback"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.ext_private_data { if !supported.ext_private_data { return Err(crate::device::ExtensionRestrictionError { extension: "ext_private_data", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.ext_provoking_vertex { if !supported.ext_provoking_vertex { return Err(crate::device::ExtensionRestrictionError { extension: "ext_provoking_vertex", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_provoking_vertex", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_queue_family_foreign { if !supported.ext_queue_family_foreign { return Err(crate::device::ExtensionRestrictionError { extension: "ext_queue_family_foreign", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || device_extensions.khr_external_memory) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_queue_family_foreign", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &["khr_external_memory"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.ext_rasterization_order_attachment_access { if !supported.ext_rasterization_order_attachment_access { return Err(crate::device::ExtensionRestrictionError { extension: "ext_rasterization_order_attachment_access", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_rasterization_order_attachment_access", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_rgba10x6_formats { if !supported.ext_rgba10x6_formats { return Err(crate::device::ExtensionRestrictionError { extension: "ext_rgba10x6_formats", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || device_extensions.khr_sampler_ycbcr_conversion) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_rgba10x6_formats", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &["khr_sampler_ycbcr_conversion"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.ext_robustness2 { if !supported.ext_robustness2 { return Err(crate::device::ExtensionRestrictionError { extension: "ext_robustness2", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.ext_sample_locations { if !supported.ext_sample_locations { return Err(crate::device::ExtensionRestrictionError { extension: "ext_sample_locations", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_sample_locations", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_sampler_filter_minmax { if !supported.ext_sampler_filter_minmax { return Err(crate::device::ExtensionRestrictionError { extension: "ext_sampler_filter_minmax", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_sampler_filter_minmax", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_scalar_block_layout { if !supported.ext_scalar_block_layout { return Err(crate::device::ExtensionRestrictionError { extension: "ext_scalar_block_layout", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_scalar_block_layout", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_separate_stencil_usage { if !supported.ext_separate_stencil_usage { return Err(crate::device::ExtensionRestrictionError { extension: "ext_separate_stencil_usage", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.ext_shader_atomic_float { if !supported.ext_shader_atomic_float { return Err(crate::device::ExtensionRestrictionError { extension: "ext_shader_atomic_float", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_shader_atomic_float", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_shader_atomic_float2 { if !supported.ext_shader_atomic_float2 { return Err(crate::device::ExtensionRestrictionError { extension: "ext_shader_atomic_float2", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(device_extensions.ext_shader_atomic_float) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_shader_atomic_float2", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["ext_shader_atomic_float"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.ext_shader_demote_to_helper_invocation { if !supported.ext_shader_demote_to_helper_invocation { return Err(crate::device::ExtensionRestrictionError { extension: "ext_shader_demote_to_helper_invocation", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_shader_demote_to_helper_invocation", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_shader_image_atomic_int64 { if !supported.ext_shader_image_atomic_int64 { return Err(crate::device::ExtensionRestrictionError { extension: "ext_shader_image_atomic_int64", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_shader_image_atomic_int64", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_shader_module_identifier { if !supported.ext_shader_module_identifier { return Err(crate::device::ExtensionRestrictionError { extension: "ext_shader_module_identifier", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_shader_module_identifier", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_3 || device_extensions.ext_pipeline_creation_cache_control) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_shader_module_identifier", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_3), device_extensions: &["ext_pipeline_creation_cache_control"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.ext_shader_stencil_export { if !supported.ext_shader_stencil_export { return Err(crate::device::ExtensionRestrictionError { extension: "ext_shader_stencil_export", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.ext_shader_subgroup_ballot { if !supported.ext_shader_subgroup_ballot { return Err(crate::device::ExtensionRestrictionError { extension: "ext_shader_subgroup_ballot", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.ext_shader_subgroup_vote { if !supported.ext_shader_subgroup_vote { return Err(crate::device::ExtensionRestrictionError { extension: "ext_shader_subgroup_vote", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.ext_shader_viewport_index_layer { if !supported.ext_shader_viewport_index_layer { return Err(crate::device::ExtensionRestrictionError { extension: "ext_shader_viewport_index_layer", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.ext_subgroup_size_control { if !supported.ext_subgroup_size_control { return Err(crate::device::ExtensionRestrictionError { extension: "ext_subgroup_size_control", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_subgroup_size_control", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.ext_subpass_merge_feedback { if !supported.ext_subpass_merge_feedback { return Err(crate::device::ExtensionRestrictionError { extension: "ext_subpass_merge_feedback", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.ext_swapchain_maintenance1 { if !supported.ext_swapchain_maintenance1 { return Err(crate::device::ExtensionRestrictionError { extension: "ext_swapchain_maintenance1", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(device_extensions.khr_swapchain) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_swapchain_maintenance1", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["khr_swapchain"], instance_extensions: &[], ..Default::default() }, ), }); } if !(instance_extensions.ext_surface_maintenance1) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_swapchain_maintenance1", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &[], instance_extensions: &["ext_surface_maintenance1"], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_swapchain_maintenance1", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_texel_buffer_alignment { if !supported.ext_texel_buffer_alignment { return Err(crate::device::ExtensionRestrictionError { extension: "ext_texel_buffer_alignment", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_texel_buffer_alignment", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_texture_compression_astc_hdr { if !supported.ext_texture_compression_astc_hdr { return Err(crate::device::ExtensionRestrictionError { extension: "ext_texture_compression_astc_hdr", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_texture_compression_astc_hdr", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_tooling_info { if !supported.ext_tooling_info { return Err(crate::device::ExtensionRestrictionError { extension: "ext_tooling_info", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.ext_transform_feedback { if !supported.ext_transform_feedback { return Err(crate::device::ExtensionRestrictionError { extension: "ext_transform_feedback", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_transform_feedback", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_validation_cache { if !supported.ext_validation_cache { return Err(crate::device::ExtensionRestrictionError { extension: "ext_validation_cache", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.ext_vertex_attribute_divisor { if !supported.ext_vertex_attribute_divisor { return Err(crate::device::ExtensionRestrictionError { extension: "ext_vertex_attribute_divisor", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_vertex_attribute_divisor", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_vertex_input_dynamic_state { if !supported.ext_vertex_input_dynamic_state { return Err(crate::device::ExtensionRestrictionError { extension: "ext_vertex_input_dynamic_state", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_vertex_input_dynamic_state", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.ext_video_encode_h264 { if !supported.ext_video_encode_h264 { return Err(crate::device::ExtensionRestrictionError { extension: "ext_video_encode_h264", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(device_extensions.khr_video_encode_queue) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_video_encode_h264", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["khr_video_encode_queue"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.ext_video_encode_h265 { if !supported.ext_video_encode_h265 { return Err(crate::device::ExtensionRestrictionError { extension: "ext_video_encode_h265", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(device_extensions.khr_video_encode_queue) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_video_encode_h265", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["khr_video_encode_queue"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.ext_ycbcr_2plane_444_formats { if !supported.ext_ycbcr_2plane_444_formats { return Err(crate::device::ExtensionRestrictionError { extension: "ext_ycbcr_2plane_444_formats", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || device_extensions.khr_sampler_ycbcr_conversion) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_ycbcr_2plane_444_formats", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &["khr_sampler_ycbcr_conversion"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.ext_ycbcr_image_arrays { if !supported.ext_ycbcr_image_arrays { return Err(crate::device::ExtensionRestrictionError { extension: "ext_ycbcr_image_arrays", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || device_extensions.khr_sampler_ycbcr_conversion) { return Err(crate::device::ExtensionRestrictionError { extension: "ext_ycbcr_image_arrays", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &["khr_sampler_ycbcr_conversion"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.amd_buffer_marker { if !supported.amd_buffer_marker { return Err(crate::device::ExtensionRestrictionError { extension: "amd_buffer_marker", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.amd_device_coherent_memory { if !supported.amd_device_coherent_memory { return Err(crate::device::ExtensionRestrictionError { extension: "amd_device_coherent_memory", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.amd_display_native_hdr { if !supported.amd_display_native_hdr { return Err(crate::device::ExtensionRestrictionError { extension: "amd_display_native_hdr", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "amd_display_native_hdr", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } if !(instance_extensions.khr_get_surface_capabilities2) { return Err(crate::device::ExtensionRestrictionError { extension: "amd_display_native_hdr", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &[], instance_extensions: &["khr_get_surface_capabilities2"], ..Default::default() }, ), }); } if !(device_extensions.khr_swapchain) { return Err(crate::device::ExtensionRestrictionError { extension: "amd_display_native_hdr", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["khr_swapchain"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.amd_draw_indirect_count { if !supported.amd_draw_indirect_count { return Err(crate::device::ExtensionRestrictionError { extension: "amd_draw_indirect_count", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.amd_gcn_shader { if !supported.amd_gcn_shader { return Err(crate::device::ExtensionRestrictionError { extension: "amd_gcn_shader", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.amd_gpu_shader_half_float { if !supported.amd_gpu_shader_half_float { return Err(crate::device::ExtensionRestrictionError { extension: "amd_gpu_shader_half_float", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.amd_gpu_shader_int16 { if !supported.amd_gpu_shader_int16 { return Err(crate::device::ExtensionRestrictionError { extension: "amd_gpu_shader_int16", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.amd_memory_overallocation_behavior { if !supported.amd_memory_overallocation_behavior { return Err(crate::device::ExtensionRestrictionError { extension: "amd_memory_overallocation_behavior", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.amd_mixed_attachment_samples { if !supported.amd_mixed_attachment_samples { return Err(crate::device::ExtensionRestrictionError { extension: "amd_mixed_attachment_samples", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.amd_pipeline_compiler_control { if !supported.amd_pipeline_compiler_control { return Err(crate::device::ExtensionRestrictionError { extension: "amd_pipeline_compiler_control", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.amd_rasterization_order { if !supported.amd_rasterization_order { return Err(crate::device::ExtensionRestrictionError { extension: "amd_rasterization_order", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.amd_shader_ballot { if !supported.amd_shader_ballot { return Err(crate::device::ExtensionRestrictionError { extension: "amd_shader_ballot", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.amd_shader_core_properties { if !supported.amd_shader_core_properties { return Err(crate::device::ExtensionRestrictionError { extension: "amd_shader_core_properties", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "amd_shader_core_properties", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.amd_shader_core_properties2 { if !supported.amd_shader_core_properties2 { return Err(crate::device::ExtensionRestrictionError { extension: "amd_shader_core_properties2", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(device_extensions.amd_shader_core_properties) { return Err(crate::device::ExtensionRestrictionError { extension: "amd_shader_core_properties2", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["amd_shader_core_properties"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.amd_shader_early_and_late_fragment_tests { if !supported.amd_shader_early_and_late_fragment_tests { return Err(crate::device::ExtensionRestrictionError { extension: "amd_shader_early_and_late_fragment_tests", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.amd_shader_explicit_vertex_parameter { if !supported.amd_shader_explicit_vertex_parameter { return Err(crate::device::ExtensionRestrictionError { extension: "amd_shader_explicit_vertex_parameter", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.amd_shader_fragment_mask { if !supported.amd_shader_fragment_mask { return Err(crate::device::ExtensionRestrictionError { extension: "amd_shader_fragment_mask", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.amd_shader_image_load_store_lod { if !supported.amd_shader_image_load_store_lod { return Err(crate::device::ExtensionRestrictionError { extension: "amd_shader_image_load_store_lod", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.amd_shader_info { if !supported.amd_shader_info { return Err(crate::device::ExtensionRestrictionError { extension: "amd_shader_info", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.amd_shader_trinary_minmax { if !supported.amd_shader_trinary_minmax { return Err(crate::device::ExtensionRestrictionError { extension: "amd_shader_trinary_minmax", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.amd_texture_gather_bias_lod { if !supported.amd_texture_gather_bias_lod { return Err(crate::device::ExtensionRestrictionError { extension: "amd_texture_gather_bias_lod", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "amd_texture_gather_bias_lod", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.android_external_memory_android_hardware_buffer { if !supported.android_external_memory_android_hardware_buffer { return Err(crate::device::ExtensionRestrictionError { extension: "android_external_memory_android_hardware_buffer", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || device_extensions.khr_sampler_ycbcr_conversion) { return Err(crate::device::ExtensionRestrictionError { extension: "android_external_memory_android_hardware_buffer", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &["khr_sampler_ycbcr_conversion"], instance_extensions: &[], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_1 || device_extensions.khr_external_memory) { return Err(crate::device::ExtensionRestrictionError { extension: "android_external_memory_android_hardware_buffer", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &["khr_external_memory"], instance_extensions: &[], ..Default::default() }, ), }); } if !(device_extensions.ext_queue_family_foreign) { return Err(crate::device::ExtensionRestrictionError { extension: "android_external_memory_android_hardware_buffer", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["ext_queue_family_foreign"], instance_extensions: &[], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_1 || device_extensions.khr_dedicated_allocation) { return Err(crate::device::ExtensionRestrictionError { extension: "android_external_memory_android_hardware_buffer", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &["khr_dedicated_allocation"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.arm_rasterization_order_attachment_access { if !supported.arm_rasterization_order_attachment_access { return Err(crate::device::ExtensionRestrictionError { extension: "arm_rasterization_order_attachment_access", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "arm_rasterization_order_attachment_access", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.arm_shader_core_builtins { if !supported.arm_shader_core_builtins { return Err(crate::device::ExtensionRestrictionError { extension: "arm_shader_core_builtins", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.fuchsia_buffer_collection { if !supported.fuchsia_buffer_collection { return Err(crate::device::ExtensionRestrictionError { extension: "fuchsia_buffer_collection", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(device_extensions.fuchsia_external_memory) { return Err(crate::device::ExtensionRestrictionError { extension: "fuchsia_buffer_collection", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["fuchsia_external_memory"], instance_extensions: &[], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_1 || device_extensions.khr_sampler_ycbcr_conversion) { return Err(crate::device::ExtensionRestrictionError { extension: "fuchsia_buffer_collection", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &["khr_sampler_ycbcr_conversion"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.fuchsia_external_memory { if !supported.fuchsia_external_memory { return Err(crate::device::ExtensionRestrictionError { extension: "fuchsia_external_memory", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_external_memory_capabilities) { return Err(crate::device::ExtensionRestrictionError { extension: "fuchsia_external_memory", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_external_memory_capabilities"], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_1 || device_extensions.khr_external_memory) { return Err(crate::device::ExtensionRestrictionError { extension: "fuchsia_external_memory", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &["khr_external_memory"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.fuchsia_external_semaphore { if !supported.fuchsia_external_semaphore { return Err(crate::device::ExtensionRestrictionError { extension: "fuchsia_external_semaphore", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_external_semaphore_capabilities) { return Err(crate::device::ExtensionRestrictionError { extension: "fuchsia_external_semaphore", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_external_semaphore_capabilities"], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_1 || device_extensions.khr_external_semaphore) { return Err(crate::device::ExtensionRestrictionError { extension: "fuchsia_external_semaphore", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &["khr_external_semaphore"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.ggp_frame_token { if !supported.ggp_frame_token { return Err(crate::device::ExtensionRestrictionError { extension: "ggp_frame_token", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(device_extensions.khr_swapchain) { return Err(crate::device::ExtensionRestrictionError { extension: "ggp_frame_token", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["khr_swapchain"], instance_extensions: &[], ..Default::default() }, ), }); } if !(instance_extensions.ggp_stream_descriptor_surface) { return Err(crate::device::ExtensionRestrictionError { extension: "ggp_frame_token", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &[], instance_extensions: &["ggp_stream_descriptor_surface"], ..Default::default() }, ), }); } } else { } if self.google_decorate_string { if !supported.google_decorate_string { return Err(crate::device::ExtensionRestrictionError { extension: "google_decorate_string", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.google_display_timing { if !supported.google_display_timing { return Err(crate::device::ExtensionRestrictionError { extension: "google_display_timing", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(device_extensions.khr_swapchain) { return Err(crate::device::ExtensionRestrictionError { extension: "google_display_timing", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["khr_swapchain"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.google_hlsl_functionality1 { if !supported.google_hlsl_functionality1 { return Err(crate::device::ExtensionRestrictionError { extension: "google_hlsl_functionality1", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.google_user_type { if !supported.google_user_type { return Err(crate::device::ExtensionRestrictionError { extension: "google_user_type", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.huawei_invocation_mask { if !supported.huawei_invocation_mask { return Err(crate::device::ExtensionRestrictionError { extension: "huawei_invocation_mask", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(device_extensions.khr_ray_tracing_pipeline) { return Err(crate::device::ExtensionRestrictionError { extension: "huawei_invocation_mask", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["khr_ray_tracing_pipeline"], instance_extensions: &[], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_3 || device_extensions.khr_synchronization2) { return Err(crate::device::ExtensionRestrictionError { extension: "huawei_invocation_mask", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_3), device_extensions: &["khr_synchronization2"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.huawei_subpass_shading { if !supported.huawei_subpass_shading { return Err(crate::device::ExtensionRestrictionError { extension: "huawei_subpass_shading", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_2 || device_extensions.khr_create_renderpass2) { return Err(crate::device::ExtensionRestrictionError { extension: "huawei_subpass_shading", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_2), device_extensions: &["khr_create_renderpass2"], instance_extensions: &[], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_3 || device_extensions.khr_synchronization2) { return Err(crate::device::ExtensionRestrictionError { extension: "huawei_subpass_shading", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_3), device_extensions: &["khr_synchronization2"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.img_filter_cubic { if !supported.img_filter_cubic { return Err(crate::device::ExtensionRestrictionError { extension: "img_filter_cubic", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.img_format_pvrtc { if !supported.img_format_pvrtc { return Err(crate::device::ExtensionRestrictionError { extension: "img_format_pvrtc", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.intel_performance_query { if !supported.intel_performance_query { return Err(crate::device::ExtensionRestrictionError { extension: "intel_performance_query", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.intel_shader_integer_functions2 { if !supported.intel_shader_integer_functions2 { return Err(crate::device::ExtensionRestrictionError { extension: "intel_shader_integer_functions2", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "intel_shader_integer_functions2", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.nvx_binary_import { if !supported.nvx_binary_import { return Err(crate::device::ExtensionRestrictionError { extension: "nvx_binary_import", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.nvx_image_view_handle { if !supported.nvx_image_view_handle { return Err(crate::device::ExtensionRestrictionError { extension: "nvx_image_view_handle", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.nvx_multiview_per_view_attributes { if !supported.nvx_multiview_per_view_attributes { return Err(crate::device::ExtensionRestrictionError { extension: "nvx_multiview_per_view_attributes", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || device_extensions.khr_multiview) { return Err(crate::device::ExtensionRestrictionError { extension: "nvx_multiview_per_view_attributes", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &["khr_multiview"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.nv_acquire_winrt_display { if !supported.nv_acquire_winrt_display { return Err(crate::device::ExtensionRestrictionError { extension: "nv_acquire_winrt_display", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(instance_extensions.ext_direct_mode_display) { return Err(crate::device::ExtensionRestrictionError { extension: "nv_acquire_winrt_display", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &[], instance_extensions: &["ext_direct_mode_display"], ..Default::default() }, ), }); } } else { } if self.nv_clip_space_w_scaling { if !supported.nv_clip_space_w_scaling { return Err(crate::device::ExtensionRestrictionError { extension: "nv_clip_space_w_scaling", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.nv_compute_shader_derivatives { if !supported.nv_compute_shader_derivatives { return Err(crate::device::ExtensionRestrictionError { extension: "nv_compute_shader_derivatives", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "nv_compute_shader_derivatives", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.nv_cooperative_matrix { if !supported.nv_cooperative_matrix { return Err(crate::device::ExtensionRestrictionError { extension: "nv_cooperative_matrix", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "nv_cooperative_matrix", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.nv_copy_memory_indirect { if !supported.nv_copy_memory_indirect { return Err(crate::device::ExtensionRestrictionError { extension: "nv_copy_memory_indirect", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "nv_copy_memory_indirect", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_2 || device_extensions.khr_buffer_device_address) { return Err(crate::device::ExtensionRestrictionError { extension: "nv_copy_memory_indirect", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_2), device_extensions: &["khr_buffer_device_address"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.nv_corner_sampled_image { if !supported.nv_corner_sampled_image { return Err(crate::device::ExtensionRestrictionError { extension: "nv_corner_sampled_image", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "nv_corner_sampled_image", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.nv_coverage_reduction_mode { if !supported.nv_coverage_reduction_mode { return Err(crate::device::ExtensionRestrictionError { extension: "nv_coverage_reduction_mode", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(device_extensions.nv_framebuffer_mixed_samples) { return Err(crate::device::ExtensionRestrictionError { extension: "nv_coverage_reduction_mode", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["nv_framebuffer_mixed_samples"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.nv_dedicated_allocation { if !supported.nv_dedicated_allocation { return Err(crate::device::ExtensionRestrictionError { extension: "nv_dedicated_allocation", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.nv_dedicated_allocation_image_aliasing { if !supported.nv_dedicated_allocation_image_aliasing { return Err(crate::device::ExtensionRestrictionError { extension: "nv_dedicated_allocation_image_aliasing", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || device_extensions.khr_dedicated_allocation) { return Err(crate::device::ExtensionRestrictionError { extension: "nv_dedicated_allocation_image_aliasing", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &["khr_dedicated_allocation"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.nv_device_diagnostic_checkpoints { if !supported.nv_device_diagnostic_checkpoints { return Err(crate::device::ExtensionRestrictionError { extension: "nv_device_diagnostic_checkpoints", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "nv_device_diagnostic_checkpoints", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.nv_device_diagnostics_config { if !supported.nv_device_diagnostics_config { return Err(crate::device::ExtensionRestrictionError { extension: "nv_device_diagnostics_config", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "nv_device_diagnostics_config", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.nv_device_generated_commands { if !supported.nv_device_generated_commands { return Err(crate::device::ExtensionRestrictionError { extension: "nv_device_generated_commands", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1) { return Err(crate::device::ExtensionRestrictionError { extension: "nv_device_generated_commands", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &[], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_2 || device_extensions.khr_buffer_device_address) { return Err(crate::device::ExtensionRestrictionError { extension: "nv_device_generated_commands", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_2), device_extensions: &["khr_buffer_device_address"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.nv_external_memory { if !supported.nv_external_memory { return Err(crate::device::ExtensionRestrictionError { extension: "nv_external_memory", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(instance_extensions.nv_external_memory_capabilities) { return Err(crate::device::ExtensionRestrictionError { extension: "nv_external_memory", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &[], instance_extensions: &["nv_external_memory_capabilities"], ..Default::default() }, ), }); } } else { } if self.nv_external_memory_rdma { if !supported.nv_external_memory_rdma { return Err(crate::device::ExtensionRestrictionError { extension: "nv_external_memory_rdma", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || device_extensions.khr_external_memory) { return Err(crate::device::ExtensionRestrictionError { extension: "nv_external_memory_rdma", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &["khr_external_memory"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.nv_external_memory_win32 { if !supported.nv_external_memory_win32 { return Err(crate::device::ExtensionRestrictionError { extension: "nv_external_memory_win32", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(device_extensions.nv_external_memory) { return Err(crate::device::ExtensionRestrictionError { extension: "nv_external_memory_win32", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["nv_external_memory"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.nv_fill_rectangle { if !supported.nv_fill_rectangle { return Err(crate::device::ExtensionRestrictionError { extension: "nv_fill_rectangle", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.nv_fragment_coverage_to_color { if !supported.nv_fragment_coverage_to_color { return Err(crate::device::ExtensionRestrictionError { extension: "nv_fragment_coverage_to_color", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.nv_fragment_shader_barycentric { if !supported.nv_fragment_shader_barycentric { return Err(crate::device::ExtensionRestrictionError { extension: "nv_fragment_shader_barycentric", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "nv_fragment_shader_barycentric", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.nv_fragment_shading_rate_enums { if !supported.nv_fragment_shading_rate_enums { return Err(crate::device::ExtensionRestrictionError { extension: "nv_fragment_shading_rate_enums", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(device_extensions.khr_fragment_shading_rate) { return Err(crate::device::ExtensionRestrictionError { extension: "nv_fragment_shading_rate_enums", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["khr_fragment_shading_rate"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.nv_framebuffer_mixed_samples { if !supported.nv_framebuffer_mixed_samples { return Err(crate::device::ExtensionRestrictionError { extension: "nv_framebuffer_mixed_samples", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.nv_geometry_shader_passthrough { if !supported.nv_geometry_shader_passthrough { return Err(crate::device::ExtensionRestrictionError { extension: "nv_geometry_shader_passthrough", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.nv_glsl_shader { if !supported.nv_glsl_shader { return Err(crate::device::ExtensionRestrictionError { extension: "nv_glsl_shader", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.nv_inherited_viewport_scissor { if !supported.nv_inherited_viewport_scissor { return Err(crate::device::ExtensionRestrictionError { extension: "nv_inherited_viewport_scissor", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.nv_linear_color_attachment { if !supported.nv_linear_color_attachment { return Err(crate::device::ExtensionRestrictionError { extension: "nv_linear_color_attachment", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.nv_memory_decompression { if !supported.nv_memory_decompression { return Err(crate::device::ExtensionRestrictionError { extension: "nv_memory_decompression", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "nv_memory_decompression", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_2 || device_extensions.khr_buffer_device_address) { return Err(crate::device::ExtensionRestrictionError { extension: "nv_memory_decompression", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_2), device_extensions: &["khr_buffer_device_address"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.nv_mesh_shader { if !supported.nv_mesh_shader { return Err(crate::device::ExtensionRestrictionError { extension: "nv_mesh_shader", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "nv_mesh_shader", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.nv_optical_flow { if !supported.nv_optical_flow { return Err(crate::device::ExtensionRestrictionError { extension: "nv_optical_flow", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "nv_optical_flow", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_3 || device_extensions.khr_format_feature_flags2) { return Err(crate::device::ExtensionRestrictionError { extension: "nv_optical_flow", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_3), device_extensions: &["khr_format_feature_flags2"], instance_extensions: &[], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_3 || device_extensions.khr_synchronization2) { return Err(crate::device::ExtensionRestrictionError { extension: "nv_optical_flow", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_3), device_extensions: &["khr_synchronization2"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.nv_present_barrier { if !supported.nv_present_barrier { return Err(crate::device::ExtensionRestrictionError { extension: "nv_present_barrier", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "nv_present_barrier", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } if !(instance_extensions.khr_surface) { return Err(crate::device::ExtensionRestrictionError { extension: "nv_present_barrier", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &[], instance_extensions: &["khr_surface"], ..Default::default() }, ), }); } if !(instance_extensions.khr_get_surface_capabilities2) { return Err(crate::device::ExtensionRestrictionError { extension: "nv_present_barrier", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &[], instance_extensions: &["khr_get_surface_capabilities2"], ..Default::default() }, ), }); } if !(device_extensions.khr_swapchain) { return Err(crate::device::ExtensionRestrictionError { extension: "nv_present_barrier", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["khr_swapchain"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.nv_ray_tracing { if !supported.nv_ray_tracing { return Err(crate::device::ExtensionRestrictionError { extension: "nv_ray_tracing", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "nv_ray_tracing", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_1 || device_extensions.khr_get_memory_requirements2) { return Err(crate::device::ExtensionRestrictionError { extension: "nv_ray_tracing", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &["khr_get_memory_requirements2"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.nv_ray_tracing_invocation_reorder { if !supported.nv_ray_tracing_invocation_reorder { return Err(crate::device::ExtensionRestrictionError { extension: "nv_ray_tracing_invocation_reorder", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(device_extensions.khr_ray_tracing_pipeline) { return Err(crate::device::ExtensionRestrictionError { extension: "nv_ray_tracing_invocation_reorder", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["khr_ray_tracing_pipeline"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.nv_ray_tracing_motion_blur { if !supported.nv_ray_tracing_motion_blur { return Err(crate::device::ExtensionRestrictionError { extension: "nv_ray_tracing_motion_blur", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(device_extensions.khr_ray_tracing_pipeline) { return Err(crate::device::ExtensionRestrictionError { extension: "nv_ray_tracing_motion_blur", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["khr_ray_tracing_pipeline"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.nv_representative_fragment_test { if !supported.nv_representative_fragment_test { return Err(crate::device::ExtensionRestrictionError { extension: "nv_representative_fragment_test", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.nv_sample_mask_override_coverage { if !supported.nv_sample_mask_override_coverage { return Err(crate::device::ExtensionRestrictionError { extension: "nv_sample_mask_override_coverage", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.nv_scissor_exclusive { if !supported.nv_scissor_exclusive { return Err(crate::device::ExtensionRestrictionError { extension: "nv_scissor_exclusive", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "nv_scissor_exclusive", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.nv_shader_image_footprint { if !supported.nv_shader_image_footprint { return Err(crate::device::ExtensionRestrictionError { extension: "nv_shader_image_footprint", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "nv_shader_image_footprint", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.nv_shader_sm_builtins { if !supported.nv_shader_sm_builtins { return Err(crate::device::ExtensionRestrictionError { extension: "nv_shader_sm_builtins", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1) { return Err(crate::device::ExtensionRestrictionError { extension: "nv_shader_sm_builtins", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.nv_shader_subgroup_partitioned { if !supported.nv_shader_subgroup_partitioned { return Err(crate::device::ExtensionRestrictionError { extension: "nv_shader_subgroup_partitioned", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1) { return Err(crate::device::ExtensionRestrictionError { extension: "nv_shader_subgroup_partitioned", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.nv_shading_rate_image { if !supported.nv_shading_rate_image { return Err(crate::device::ExtensionRestrictionError { extension: "nv_shading_rate_image", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "nv_shading_rate_image", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.nv_viewport_array2 { if !supported.nv_viewport_array2 { return Err(crate::device::ExtensionRestrictionError { extension: "nv_viewport_array2", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.nv_viewport_swizzle { if !supported.nv_viewport_swizzle { return Err(crate::device::ExtensionRestrictionError { extension: "nv_viewport_swizzle", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.nv_win32_keyed_mutex { if !supported.nv_win32_keyed_mutex { return Err(crate::device::ExtensionRestrictionError { extension: "nv_win32_keyed_mutex", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(device_extensions.nv_external_memory_win32) { return Err(crate::device::ExtensionRestrictionError { extension: "nv_win32_keyed_mutex", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["nv_external_memory_win32"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.qcom_fragment_density_map_offset { if !supported.qcom_fragment_density_map_offset { return Err(crate::device::ExtensionRestrictionError { extension: "qcom_fragment_density_map_offset", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "qcom_fragment_density_map_offset", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } if !(device_extensions.ext_fragment_density_map) { return Err(crate::device::ExtensionRestrictionError { extension: "qcom_fragment_density_map_offset", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["ext_fragment_density_map"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.qcom_image_processing { if !supported.qcom_image_processing { return Err(crate::device::ExtensionRestrictionError { extension: "qcom_image_processing", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_3 || device_extensions.khr_format_feature_flags2) { return Err(crate::device::ExtensionRestrictionError { extension: "qcom_image_processing", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_3), device_extensions: &["khr_format_feature_flags2"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.qcom_multiview_per_view_viewports { if !supported.qcom_multiview_per_view_viewports { return Err(crate::device::ExtensionRestrictionError { extension: "qcom_multiview_per_view_viewports", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.qcom_render_pass_shader_resolve { if !supported.qcom_render_pass_shader_resolve { return Err(crate::device::ExtensionRestrictionError { extension: "qcom_render_pass_shader_resolve", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.qcom_render_pass_store_ops { if !supported.qcom_render_pass_store_ops { return Err(crate::device::ExtensionRestrictionError { extension: "qcom_render_pass_store_ops", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.qcom_render_pass_transform { if !supported.qcom_render_pass_transform { return Err(crate::device::ExtensionRestrictionError { extension: "qcom_render_pass_transform", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(device_extensions.khr_swapchain) { return Err(crate::device::ExtensionRestrictionError { extension: "qcom_render_pass_transform", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["khr_swapchain"], instance_extensions: &[], ..Default::default() }, ), }); } if !(instance_extensions.khr_surface) { return Err(crate::device::ExtensionRestrictionError { extension: "qcom_render_pass_transform", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &[], instance_extensions: &["khr_surface"], ..Default::default() }, ), }); } } else { } if self.qcom_rotated_copy_commands { if !supported.qcom_rotated_copy_commands { return Err(crate::device::ExtensionRestrictionError { extension: "qcom_rotated_copy_commands", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(device_extensions.khr_swapchain) { return Err(crate::device::ExtensionRestrictionError { extension: "qcom_rotated_copy_commands", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: None, device_extensions: &["khr_swapchain"], instance_extensions: &[], ..Default::default() }, ), }); } if !(api_version >= crate::Version::V1_3 || device_extensions.khr_copy_commands2) { return Err(crate::device::ExtensionRestrictionError { extension: "qcom_rotated_copy_commands", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_3), device_extensions: &["khr_copy_commands2"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } if self.qcom_tile_properties { if !supported.qcom_tile_properties { return Err(crate::device::ExtensionRestrictionError { extension: "qcom_tile_properties", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "qcom_tile_properties", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.sec_amigo_profiling { if !supported.sec_amigo_profiling { return Err(crate::device::ExtensionRestrictionError { extension: "sec_amigo_profiling", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || instance_extensions.khr_get_physical_device_properties2) { return Err(crate::device::ExtensionRestrictionError { extension: "sec_amigo_profiling", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &[], instance_extensions: &["khr_get_physical_device_properties2"], ..Default::default() }, ), }); } } else { } if self.valve_descriptor_set_host_mapping { if !supported.valve_descriptor_set_host_mapping { return Err(crate::device::ExtensionRestrictionError { extension: "valve_descriptor_set_host_mapping", restriction: crate::device::ExtensionRestriction::NotSupported, }); } } else { } if self.valve_mutable_descriptor_type { if !supported.valve_mutable_descriptor_type { return Err(crate::device::ExtensionRestrictionError { extension: "valve_mutable_descriptor_type", restriction: crate::device::ExtensionRestriction::NotSupported, }); } if !(api_version >= crate::Version::V1_1 || device_extensions.khr_maintenance3) { return Err(crate::device::ExtensionRestrictionError { extension: "valve_mutable_descriptor_type", restriction: crate::device::ExtensionRestriction::Requires( crate::RequiresOneOf { api_version: Some(crate::Version::V1_1), device_extensions: &["khr_maintenance3"], instance_extensions: &[], ..Default::default() }, ), }); } } else { } Ok(()) } }