1 // This file is auto-generated by vulkano autogen from vk.xml header version 1.3.238. 2 // It should not be edited manually. Changes should be made by editing autogen. 3 4 #[doc = r" List of extensions that are enabled or available."] 5 #[derive(Copy, Clone, PartialEq, Eq)] 6 pub struct DeviceExtensions { 7 #[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)"] 8 pub khr_16bit_storage: bool, 9 #[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)"] 10 pub khr_8bit_storage: bool, 11 #[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)"] 12 pub khr_acceleration_structure: bool, 13 #[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"] 14 pub khr_bind_memory2: bool, 15 #[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)"] 16 pub khr_buffer_device_address: bool, 17 #[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"] 18 pub khr_copy_commands2: bool, 19 #[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)"] 20 pub khr_create_renderpass2: bool, 21 #[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)"] 22 pub khr_dedicated_allocation: bool, 23 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_deferred_host_operations.html)"] 24 pub khr_deferred_host_operations: bool, 25 #[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)"] 26 pub khr_depth_stencil_resolve: bool, 27 #[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"] 28 pub khr_descriptor_update_template: bool, 29 #[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)"] 30 pub khr_device_group: bool, 31 #[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)"] 32 pub khr_display_swapchain: bool, 33 #[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"] 34 pub khr_draw_indirect_count: bool, 35 #[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)"] 36 pub khr_driver_properties: bool, 37 #[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)"] 38 pub khr_dynamic_rendering: bool, 39 #[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)"] 40 pub khr_external_fence: bool, 41 #[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)"] 42 pub khr_external_fence_fd: bool, 43 #[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)"] 44 pub khr_external_fence_win32: bool, 45 #[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)"] 46 pub khr_external_memory: bool, 47 #[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)"] 48 pub khr_external_memory_fd: bool, 49 #[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)"] 50 pub khr_external_memory_win32: bool, 51 #[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)"] 52 pub khr_external_semaphore: bool, 53 #[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)"] 54 pub khr_external_semaphore_fd: bool, 55 #[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)"] 56 pub khr_external_semaphore_win32: bool, 57 #[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)"] 58 pub khr_format_feature_flags2: bool, 59 #[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)"] 60 pub khr_fragment_shader_barycentric: bool, 61 #[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)"] 62 pub khr_fragment_shading_rate: bool, 63 #[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"] 64 pub khr_get_memory_requirements2: bool, 65 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_global_priority.html)"] 66 pub khr_global_priority: bool, 67 #[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"] 68 pub khr_image_format_list: bool, 69 #[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)"] 70 pub khr_imageless_framebuffer: bool, 71 #[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)"] 72 pub khr_incremental_present: bool, 73 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_maintenance1.html)\n- Promoted to Vulkan 1.1"] 74 pub khr_maintenance1: bool, 75 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_maintenance2.html)\n- Promoted to Vulkan 1.1"] 76 pub khr_maintenance2: bool, 77 #[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)"] 78 pub khr_maintenance3: bool, 79 #[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"] 80 pub khr_maintenance4: bool, 81 #[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)"] 82 pub khr_multiview: bool, 83 #[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)"] 84 pub khr_performance_query: bool, 85 #[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)"] 86 pub khr_pipeline_executable_properties: bool, 87 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_pipeline_library.html)"] 88 pub khr_pipeline_library: bool, 89 #[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)"] 90 pub khr_portability_subset: bool, 91 #[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)"] 92 pub khr_present_id: bool, 93 #[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)"] 94 pub khr_present_wait: bool, 95 #[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)"] 96 pub khr_push_descriptor: bool, 97 #[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)"] 98 pub khr_ray_query: bool, 99 #[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)"] 100 pub khr_ray_tracing_maintenance1: bool, 101 #[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)"] 102 pub khr_ray_tracing_pipeline: bool, 103 #[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"] 104 pub khr_relaxed_block_layout: bool, 105 #[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"] 106 pub khr_sampler_mirror_clamp_to_edge: bool, 107 #[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)"] 108 pub khr_sampler_ycbcr_conversion: bool, 109 #[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)"] 110 pub khr_separate_depth_stencil_layouts: bool, 111 #[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)"] 112 pub khr_shader_atomic_int64: bool, 113 #[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)"] 114 pub khr_shader_clock: bool, 115 #[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"] 116 pub khr_shader_draw_parameters: bool, 117 #[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)"] 118 pub khr_shader_float16_int8: bool, 119 #[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)"] 120 pub khr_shader_float_controls: bool, 121 #[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)"] 122 pub khr_shader_integer_dot_product: bool, 123 #[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"] 124 pub khr_shader_non_semantic_info: bool, 125 #[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"] 126 pub khr_shader_subgroup_extended_types: bool, 127 #[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"] 128 pub khr_shader_subgroup_uniform_control_flow: bool, 129 #[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)"] 130 pub khr_shader_terminate_invocation: bool, 131 #[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)"] 132 pub khr_shared_presentable_image: bool, 133 #[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)"] 134 pub khr_spirv_1_4: bool, 135 #[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"] 136 pub khr_storage_buffer_storage_class: bool, 137 #[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)"] 138 pub khr_swapchain: bool, 139 #[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)"] 140 pub khr_swapchain_mutable_format: bool, 141 #[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)"] 142 pub khr_synchronization2: bool, 143 #[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)"] 144 pub khr_timeline_semaphore: bool, 145 #[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)"] 146 pub khr_uniform_buffer_standard_layout: bool, 147 #[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)"] 148 pub khr_variable_pointers: bool, 149 #[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)"] 150 pub khr_video_decode_h264: bool, 151 #[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)"] 152 pub khr_video_decode_h265: bool, 153 #[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)"] 154 pub khr_video_decode_queue: bool, 155 #[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)"] 156 pub khr_video_encode_queue: bool, 157 #[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)"] 158 pub khr_video_queue: bool, 159 #[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"] 160 pub khr_vulkan_memory_model: bool, 161 #[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)"] 162 pub khr_win32_keyed_mutex: bool, 163 #[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)"] 164 pub khr_workgroup_memory_explicit_layout: bool, 165 #[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)"] 166 pub khr_zero_initialize_workgroup_memory: bool, 167 #[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)"] 168 pub ext_4444_formats: bool, 169 #[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)"] 170 pub ext_astc_decode_mode: bool, 171 #[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)"] 172 pub ext_attachment_feedback_loop_layout: bool, 173 #[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)"] 174 pub ext_blend_operation_advanced: bool, 175 #[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)"] 176 pub ext_border_color_swizzle: bool, 177 #[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)"] 178 pub ext_buffer_device_address: bool, 179 #[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)"] 180 pub ext_calibrated_timestamps: bool, 181 #[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)"] 182 pub ext_color_write_enable: bool, 183 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_conditional_rendering.html)"] 184 pub ext_conditional_rendering: bool, 185 #[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)"] 186 pub ext_conservative_rasterization: bool, 187 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_custom_border_color.html)"] 188 pub ext_custom_border_color: bool, 189 #[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)"] 190 pub ext_debug_marker: bool, 191 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_depth_clamp_zero_one.html)"] 192 pub ext_depth_clamp_zero_one: bool, 193 #[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)"] 194 pub ext_depth_clip_control: bool, 195 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_depth_clip_enable.html)"] 196 pub ext_depth_clip_enable: bool, 197 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_depth_range_unrestricted.html)"] 198 pub ext_depth_range_unrestricted: bool, 199 #[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)"] 200 pub ext_descriptor_buffer: bool, 201 #[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)"] 202 pub ext_descriptor_indexing: bool, 203 #[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)"] 204 pub ext_device_address_binding_report: bool, 205 #[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)"] 206 pub ext_device_fault: bool, 207 #[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)"] 208 pub ext_device_memory_report: bool, 209 #[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)"] 210 pub ext_discard_rectangles: bool, 211 #[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)"] 212 pub ext_display_control: bool, 213 #[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)"] 214 pub ext_extended_dynamic_state: bool, 215 #[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)"] 216 pub ext_extended_dynamic_state2: bool, 217 #[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)"] 218 pub ext_extended_dynamic_state3: bool, 219 #[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)"] 220 pub ext_external_memory_dma_buf: bool, 221 #[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)"] 222 pub ext_external_memory_host: bool, 223 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_filter_cubic.html)"] 224 pub ext_filter_cubic: bool, 225 #[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)"] 226 pub ext_fragment_density_map: bool, 227 #[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)"] 228 pub ext_fragment_density_map2: bool, 229 #[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)"] 230 pub ext_fragment_shader_interlock: bool, 231 #[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)"] 232 pub ext_full_screen_exclusive: bool, 233 #[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)"] 234 pub ext_global_priority: bool, 235 #[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)"] 236 pub ext_global_priority_query: bool, 237 #[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)"] 238 pub ext_graphics_pipeline_library: bool, 239 #[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)"] 240 pub ext_hdr_metadata: bool, 241 #[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)"] 242 pub ext_host_query_reset: bool, 243 #[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)"] 244 pub ext_image_2d_view_of_3d: bool, 245 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_image_compression_control.html)"] 246 pub ext_image_compression_control: bool, 247 #[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)"] 248 pub ext_image_compression_control_swapchain: bool, 249 #[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)"] 250 pub ext_image_drm_format_modifier: bool, 251 #[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)"] 252 pub ext_image_robustness: bool, 253 #[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)"] 254 pub ext_image_view_min_lod: bool, 255 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_index_type_uint8.html)"] 256 pub ext_index_type_uint8: bool, 257 #[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)"] 258 pub ext_inline_uniform_block: bool, 259 #[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)"] 260 pub ext_legacy_dithering: bool, 261 #[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)"] 262 pub ext_line_rasterization: bool, 263 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_load_store_op_none.html)"] 264 pub ext_load_store_op_none: bool, 265 #[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)"] 266 pub ext_memory_budget: bool, 267 #[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)"] 268 pub ext_memory_priority: bool, 269 #[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)"] 270 pub ext_mesh_shader: bool, 271 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_metal_objects.html)"] 272 pub ext_metal_objects: bool, 273 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_multi_draw.html)"] 274 pub ext_multi_draw: bool, 275 #[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)"] 276 pub ext_multisampled_render_to_single_sampled: bool, 277 #[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)"] 278 pub ext_mutable_descriptor_type: bool, 279 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_non_seamless_cube_map.html)"] 280 pub ext_non_seamless_cube_map: bool, 281 #[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)"] 282 pub ext_opacity_micromap: bool, 283 #[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)"] 284 pub ext_pageable_device_local_memory: bool, 285 #[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)"] 286 pub ext_pci_bus_info: bool, 287 #[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)"] 288 pub ext_physical_device_drm: bool, 289 #[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"] 290 pub ext_pipeline_creation_cache_control: bool, 291 #[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"] 292 pub ext_pipeline_creation_feedback: bool, 293 #[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)"] 294 pub ext_pipeline_properties: bool, 295 #[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)"] 296 pub ext_pipeline_protected_access: bool, 297 #[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)"] 298 pub ext_pipeline_robustness: bool, 299 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_post_depth_coverage.html)"] 300 pub ext_post_depth_coverage: bool, 301 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_primitive_topology_list_restart.html)"] 302 pub ext_primitive_topology_list_restart: bool, 303 #[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)"] 304 pub ext_primitives_generated_query: bool, 305 #[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"] 306 pub ext_private_data: bool, 307 #[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)"] 308 pub ext_provoking_vertex: bool, 309 #[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)"] 310 pub ext_queue_family_foreign: bool, 311 #[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)"] 312 pub ext_rasterization_order_attachment_access: bool, 313 #[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)"] 314 pub ext_rgba10x6_formats: bool, 315 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_robustness2.html)"] 316 pub ext_robustness2: bool, 317 #[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)"] 318 pub ext_sample_locations: bool, 319 #[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)"] 320 pub ext_sampler_filter_minmax: bool, 321 #[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)"] 322 pub ext_scalar_block_layout: bool, 323 #[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"] 324 pub ext_separate_stencil_usage: bool, 325 #[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)"] 326 pub ext_shader_atomic_float: bool, 327 #[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)"] 328 pub ext_shader_atomic_float2: bool, 329 #[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)"] 330 pub ext_shader_demote_to_helper_invocation: bool, 331 #[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)"] 332 pub ext_shader_image_atomic_int64: bool, 333 #[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)"] 334 pub ext_shader_module_identifier: bool, 335 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_shader_stencil_export.html)"] 336 pub ext_shader_stencil_export: bool, 337 #[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"] 338 pub ext_shader_subgroup_ballot: bool, 339 #[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"] 340 pub ext_shader_subgroup_vote: bool, 341 #[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"] 342 pub ext_shader_viewport_index_layer: bool, 343 #[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"] 344 pub ext_subgroup_size_control: bool, 345 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_subpass_merge_feedback.html)"] 346 pub ext_subpass_merge_feedback: bool, 347 #[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)"] 348 pub ext_swapchain_maintenance1: bool, 349 #[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)"] 350 pub ext_texel_buffer_alignment: bool, 351 #[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)"] 352 pub ext_texture_compression_astc_hdr: bool, 353 #[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"] 354 pub ext_tooling_info: bool, 355 #[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)"] 356 pub ext_transform_feedback: bool, 357 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_validation_cache.html)"] 358 pub ext_validation_cache: bool, 359 #[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)"] 360 pub ext_vertex_attribute_divisor: bool, 361 #[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)"] 362 pub ext_vertex_input_dynamic_state: bool, 363 #[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)"] 364 pub ext_video_encode_h264: bool, 365 #[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)"] 366 pub ext_video_encode_h265: bool, 367 #[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)"] 368 pub ext_ycbcr_2plane_444_formats: bool, 369 #[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)"] 370 pub ext_ycbcr_image_arrays: bool, 371 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_buffer_marker.html)"] 372 pub amd_buffer_marker: bool, 373 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_device_coherent_memory.html)"] 374 pub amd_device_coherent_memory: bool, 375 #[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)"] 376 pub amd_display_native_hdr: bool, 377 #[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)"] 378 pub amd_draw_indirect_count: bool, 379 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_gcn_shader.html)"] 380 pub amd_gcn_shader: bool, 381 #[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)"] 382 pub amd_gpu_shader_half_float: bool, 383 #[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)"] 384 pub amd_gpu_shader_int16: bool, 385 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_memory_overallocation_behavior.html)"] 386 pub amd_memory_overallocation_behavior: bool, 387 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_mixed_attachment_samples.html)"] 388 pub amd_mixed_attachment_samples: bool, 389 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_pipeline_compiler_control.html)"] 390 pub amd_pipeline_compiler_control: bool, 391 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_rasterization_order.html)"] 392 pub amd_rasterization_order: bool, 393 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_shader_ballot.html)"] 394 pub amd_shader_ballot: bool, 395 #[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)"] 396 pub amd_shader_core_properties: bool, 397 #[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)"] 398 pub amd_shader_core_properties2: bool, 399 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_shader_early_and_late_fragment_tests.html)"] 400 pub amd_shader_early_and_late_fragment_tests: bool, 401 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_shader_explicit_vertex_parameter.html)"] 402 pub amd_shader_explicit_vertex_parameter: bool, 403 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_shader_fragment_mask.html)"] 404 pub amd_shader_fragment_mask: bool, 405 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_shader_image_load_store_lod.html)"] 406 pub amd_shader_image_load_store_lod: bool, 407 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_shader_info.html)"] 408 pub amd_shader_info: bool, 409 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_shader_trinary_minmax.html)"] 410 pub amd_shader_trinary_minmax: bool, 411 #[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)"] 412 pub amd_texture_gather_bias_lod: bool, 413 #[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)"] 414 pub android_external_memory_android_hardware_buffer: bool, 415 #[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)"] 416 pub arm_rasterization_order_attachment_access: bool, 417 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_ARM_shader_core_builtins.html)"] 418 pub arm_shader_core_builtins: bool, 419 #[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)"] 420 pub fuchsia_buffer_collection: bool, 421 #[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)"] 422 pub fuchsia_external_memory: bool, 423 #[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)"] 424 pub fuchsia_external_semaphore: bool, 425 #[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)"] 426 pub ggp_frame_token: bool, 427 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_GOOGLE_decorate_string.html)"] 428 pub google_decorate_string: bool, 429 #[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)"] 430 pub google_display_timing: bool, 431 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_GOOGLE_hlsl_functionality1.html)"] 432 pub google_hlsl_functionality1: bool, 433 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_GOOGLE_user_type.html)"] 434 pub google_user_type: bool, 435 #[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)"] 436 pub huawei_invocation_mask: bool, 437 #[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)"] 438 pub huawei_subpass_shading: bool, 439 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_IMG_filter_cubic.html)"] 440 pub img_filter_cubic: bool, 441 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_IMG_format_pvrtc.html)\n- Deprecated without a replacement"] 442 pub img_format_pvrtc: bool, 443 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_INTEL_performance_query.html)"] 444 pub intel_performance_query: bool, 445 #[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)"] 446 pub intel_shader_integer_functions2: bool, 447 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NVX_binary_import.html)"] 448 pub nvx_binary_import: bool, 449 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NVX_image_view_handle.html)"] 450 pub nvx_image_view_handle: bool, 451 #[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)"] 452 pub nvx_multiview_per_view_attributes: bool, 453 #[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)"] 454 pub nv_acquire_winrt_display: bool, 455 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_clip_space_w_scaling.html)"] 456 pub nv_clip_space_w_scaling: bool, 457 #[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)"] 458 pub nv_compute_shader_derivatives: bool, 459 #[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)"] 460 pub nv_cooperative_matrix: bool, 461 #[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)"] 462 pub nv_copy_memory_indirect: bool, 463 #[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)"] 464 pub nv_corner_sampled_image: bool, 465 #[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)"] 466 pub nv_coverage_reduction_mode: bool, 467 #[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)"] 468 pub nv_dedicated_allocation: bool, 469 #[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)"] 470 pub nv_dedicated_allocation_image_aliasing: bool, 471 #[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)"] 472 pub nv_device_diagnostic_checkpoints: bool, 473 #[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)"] 474 pub nv_device_diagnostics_config: bool, 475 #[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)"] 476 pub nv_device_generated_commands: bool, 477 #[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)"] 478 pub nv_external_memory: bool, 479 #[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)"] 480 pub nv_external_memory_rdma: bool, 481 #[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)"] 482 pub nv_external_memory_win32: bool, 483 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_fill_rectangle.html)"] 484 pub nv_fill_rectangle: bool, 485 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_fragment_coverage_to_color.html)"] 486 pub nv_fragment_coverage_to_color: bool, 487 #[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)"] 488 pub nv_fragment_shader_barycentric: bool, 489 #[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)"] 490 pub nv_fragment_shading_rate_enums: bool, 491 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_framebuffer_mixed_samples.html)"] 492 pub nv_framebuffer_mixed_samples: bool, 493 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_geometry_shader_passthrough.html)"] 494 pub nv_geometry_shader_passthrough: bool, 495 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_glsl_shader.html)\n- Deprecated without a replacement"] 496 pub nv_glsl_shader: bool, 497 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_inherited_viewport_scissor.html)"] 498 pub nv_inherited_viewport_scissor: bool, 499 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_linear_color_attachment.html)"] 500 pub nv_linear_color_attachment: bool, 501 #[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)"] 502 pub nv_memory_decompression: bool, 503 #[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)"] 504 pub nv_mesh_shader: bool, 505 #[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)"] 506 pub nv_optical_flow: bool, 507 #[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)"] 508 pub nv_present_barrier: bool, 509 #[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)"] 510 pub nv_ray_tracing: bool, 511 #[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)"] 512 pub nv_ray_tracing_invocation_reorder: bool, 513 #[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)"] 514 pub nv_ray_tracing_motion_blur: bool, 515 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_representative_fragment_test.html)"] 516 pub nv_representative_fragment_test: bool, 517 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_sample_mask_override_coverage.html)"] 518 pub nv_sample_mask_override_coverage: bool, 519 #[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)"] 520 pub nv_scissor_exclusive: bool, 521 #[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)"] 522 pub nv_shader_image_footprint: bool, 523 #[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"] 524 pub nv_shader_sm_builtins: bool, 525 #[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"] 526 pub nv_shader_subgroup_partitioned: bool, 527 #[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)"] 528 pub nv_shading_rate_image: bool, 529 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_viewport_array2.html)"] 530 pub nv_viewport_array2: bool, 531 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_viewport_swizzle.html)"] 532 pub nv_viewport_swizzle: bool, 533 #[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)"] 534 pub nv_win32_keyed_mutex: bool, 535 #[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)"] 536 pub qcom_fragment_density_map_offset: bool, 537 #[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)"] 538 pub qcom_image_processing: bool, 539 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_QCOM_multiview_per_view_viewports.html)"] 540 pub qcom_multiview_per_view_viewports: bool, 541 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_QCOM_render_pass_shader_resolve.html)"] 542 pub qcom_render_pass_shader_resolve: bool, 543 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_QCOM_render_pass_store_ops.html)"] 544 pub qcom_render_pass_store_ops: bool, 545 #[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)"] 546 pub qcom_render_pass_transform: bool, 547 #[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)"] 548 pub qcom_rotated_copy_commands: bool, 549 #[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)"] 550 pub qcom_tile_properties: bool, 551 #[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)"] 552 pub sec_amigo_profiling: bool, 553 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_VALVE_descriptor_set_host_mapping.html)"] 554 pub valve_descriptor_set_host_mapping: bool, 555 #[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)"] 556 pub valve_mutable_descriptor_type: bool, 557 pub _ne: crate::NonExhaustive, 558 } 559 impl Default for DeviceExtensions { 560 #[inline] default() -> Self561 fn default() -> Self { 562 Self::empty() 563 } 564 } 565 impl DeviceExtensions { 566 #[doc = r" Returns an `Extensions` object with none of the members set."] 567 #[inline] empty() -> Self568 pub const fn empty() -> Self { 569 Self { 570 khr_16bit_storage: false, 571 khr_8bit_storage: false, 572 khr_acceleration_structure: false, 573 khr_bind_memory2: false, 574 khr_buffer_device_address: false, 575 khr_copy_commands2: false, 576 khr_create_renderpass2: false, 577 khr_dedicated_allocation: false, 578 khr_deferred_host_operations: false, 579 khr_depth_stencil_resolve: false, 580 khr_descriptor_update_template: false, 581 khr_device_group: false, 582 khr_display_swapchain: false, 583 khr_draw_indirect_count: false, 584 khr_driver_properties: false, 585 khr_dynamic_rendering: false, 586 khr_external_fence: false, 587 khr_external_fence_fd: false, 588 khr_external_fence_win32: false, 589 khr_external_memory: false, 590 khr_external_memory_fd: false, 591 khr_external_memory_win32: false, 592 khr_external_semaphore: false, 593 khr_external_semaphore_fd: false, 594 khr_external_semaphore_win32: false, 595 khr_format_feature_flags2: false, 596 khr_fragment_shader_barycentric: false, 597 khr_fragment_shading_rate: false, 598 khr_get_memory_requirements2: false, 599 khr_global_priority: false, 600 khr_image_format_list: false, 601 khr_imageless_framebuffer: false, 602 khr_incremental_present: false, 603 khr_maintenance1: false, 604 khr_maintenance2: false, 605 khr_maintenance3: false, 606 khr_maintenance4: false, 607 khr_multiview: false, 608 khr_performance_query: false, 609 khr_pipeline_executable_properties: false, 610 khr_pipeline_library: false, 611 khr_portability_subset: false, 612 khr_present_id: false, 613 khr_present_wait: false, 614 khr_push_descriptor: false, 615 khr_ray_query: false, 616 khr_ray_tracing_maintenance1: false, 617 khr_ray_tracing_pipeline: false, 618 khr_relaxed_block_layout: false, 619 khr_sampler_mirror_clamp_to_edge: false, 620 khr_sampler_ycbcr_conversion: false, 621 khr_separate_depth_stencil_layouts: false, 622 khr_shader_atomic_int64: false, 623 khr_shader_clock: false, 624 khr_shader_draw_parameters: false, 625 khr_shader_float16_int8: false, 626 khr_shader_float_controls: false, 627 khr_shader_integer_dot_product: false, 628 khr_shader_non_semantic_info: false, 629 khr_shader_subgroup_extended_types: false, 630 khr_shader_subgroup_uniform_control_flow: false, 631 khr_shader_terminate_invocation: false, 632 khr_shared_presentable_image: false, 633 khr_spirv_1_4: false, 634 khr_storage_buffer_storage_class: false, 635 khr_swapchain: false, 636 khr_swapchain_mutable_format: false, 637 khr_synchronization2: false, 638 khr_timeline_semaphore: false, 639 khr_uniform_buffer_standard_layout: false, 640 khr_variable_pointers: false, 641 khr_video_decode_h264: false, 642 khr_video_decode_h265: false, 643 khr_video_decode_queue: false, 644 khr_video_encode_queue: false, 645 khr_video_queue: false, 646 khr_vulkan_memory_model: false, 647 khr_win32_keyed_mutex: false, 648 khr_workgroup_memory_explicit_layout: false, 649 khr_zero_initialize_workgroup_memory: false, 650 ext_4444_formats: false, 651 ext_astc_decode_mode: false, 652 ext_attachment_feedback_loop_layout: false, 653 ext_blend_operation_advanced: false, 654 ext_border_color_swizzle: false, 655 ext_buffer_device_address: false, 656 ext_calibrated_timestamps: false, 657 ext_color_write_enable: false, 658 ext_conditional_rendering: false, 659 ext_conservative_rasterization: false, 660 ext_custom_border_color: false, 661 ext_debug_marker: false, 662 ext_depth_clamp_zero_one: false, 663 ext_depth_clip_control: false, 664 ext_depth_clip_enable: false, 665 ext_depth_range_unrestricted: false, 666 ext_descriptor_buffer: false, 667 ext_descriptor_indexing: false, 668 ext_device_address_binding_report: false, 669 ext_device_fault: false, 670 ext_device_memory_report: false, 671 ext_discard_rectangles: false, 672 ext_display_control: false, 673 ext_extended_dynamic_state: false, 674 ext_extended_dynamic_state2: false, 675 ext_extended_dynamic_state3: false, 676 ext_external_memory_dma_buf: false, 677 ext_external_memory_host: false, 678 ext_filter_cubic: false, 679 ext_fragment_density_map: false, 680 ext_fragment_density_map2: false, 681 ext_fragment_shader_interlock: false, 682 ext_full_screen_exclusive: false, 683 ext_global_priority: false, 684 ext_global_priority_query: false, 685 ext_graphics_pipeline_library: false, 686 ext_hdr_metadata: false, 687 ext_host_query_reset: false, 688 ext_image_2d_view_of_3d: false, 689 ext_image_compression_control: false, 690 ext_image_compression_control_swapchain: false, 691 ext_image_drm_format_modifier: false, 692 ext_image_robustness: false, 693 ext_image_view_min_lod: false, 694 ext_index_type_uint8: false, 695 ext_inline_uniform_block: false, 696 ext_legacy_dithering: false, 697 ext_line_rasterization: false, 698 ext_load_store_op_none: false, 699 ext_memory_budget: false, 700 ext_memory_priority: false, 701 ext_mesh_shader: false, 702 ext_metal_objects: false, 703 ext_multi_draw: false, 704 ext_multisampled_render_to_single_sampled: false, 705 ext_mutable_descriptor_type: false, 706 ext_non_seamless_cube_map: false, 707 ext_opacity_micromap: false, 708 ext_pageable_device_local_memory: false, 709 ext_pci_bus_info: false, 710 ext_physical_device_drm: false, 711 ext_pipeline_creation_cache_control: false, 712 ext_pipeline_creation_feedback: false, 713 ext_pipeline_properties: false, 714 ext_pipeline_protected_access: false, 715 ext_pipeline_robustness: false, 716 ext_post_depth_coverage: false, 717 ext_primitive_topology_list_restart: false, 718 ext_primitives_generated_query: false, 719 ext_private_data: false, 720 ext_provoking_vertex: false, 721 ext_queue_family_foreign: false, 722 ext_rasterization_order_attachment_access: false, 723 ext_rgba10x6_formats: false, 724 ext_robustness2: false, 725 ext_sample_locations: false, 726 ext_sampler_filter_minmax: false, 727 ext_scalar_block_layout: false, 728 ext_separate_stencil_usage: false, 729 ext_shader_atomic_float: false, 730 ext_shader_atomic_float2: false, 731 ext_shader_demote_to_helper_invocation: false, 732 ext_shader_image_atomic_int64: false, 733 ext_shader_module_identifier: false, 734 ext_shader_stencil_export: false, 735 ext_shader_subgroup_ballot: false, 736 ext_shader_subgroup_vote: false, 737 ext_shader_viewport_index_layer: false, 738 ext_subgroup_size_control: false, 739 ext_subpass_merge_feedback: false, 740 ext_swapchain_maintenance1: false, 741 ext_texel_buffer_alignment: false, 742 ext_texture_compression_astc_hdr: false, 743 ext_tooling_info: false, 744 ext_transform_feedback: false, 745 ext_validation_cache: false, 746 ext_vertex_attribute_divisor: false, 747 ext_vertex_input_dynamic_state: false, 748 ext_video_encode_h264: false, 749 ext_video_encode_h265: false, 750 ext_ycbcr_2plane_444_formats: false, 751 ext_ycbcr_image_arrays: false, 752 amd_buffer_marker: false, 753 amd_device_coherent_memory: false, 754 amd_display_native_hdr: false, 755 amd_draw_indirect_count: false, 756 amd_gcn_shader: false, 757 amd_gpu_shader_half_float: false, 758 amd_gpu_shader_int16: false, 759 amd_memory_overallocation_behavior: false, 760 amd_mixed_attachment_samples: false, 761 amd_pipeline_compiler_control: false, 762 amd_rasterization_order: false, 763 amd_shader_ballot: false, 764 amd_shader_core_properties: false, 765 amd_shader_core_properties2: false, 766 amd_shader_early_and_late_fragment_tests: false, 767 amd_shader_explicit_vertex_parameter: false, 768 amd_shader_fragment_mask: false, 769 amd_shader_image_load_store_lod: false, 770 amd_shader_info: false, 771 amd_shader_trinary_minmax: false, 772 amd_texture_gather_bias_lod: false, 773 android_external_memory_android_hardware_buffer: false, 774 arm_rasterization_order_attachment_access: false, 775 arm_shader_core_builtins: false, 776 fuchsia_buffer_collection: false, 777 fuchsia_external_memory: false, 778 fuchsia_external_semaphore: false, 779 ggp_frame_token: false, 780 google_decorate_string: false, 781 google_display_timing: false, 782 google_hlsl_functionality1: false, 783 google_user_type: false, 784 huawei_invocation_mask: false, 785 huawei_subpass_shading: false, 786 img_filter_cubic: false, 787 img_format_pvrtc: false, 788 intel_performance_query: false, 789 intel_shader_integer_functions2: false, 790 nvx_binary_import: false, 791 nvx_image_view_handle: false, 792 nvx_multiview_per_view_attributes: false, 793 nv_acquire_winrt_display: false, 794 nv_clip_space_w_scaling: false, 795 nv_compute_shader_derivatives: false, 796 nv_cooperative_matrix: false, 797 nv_copy_memory_indirect: false, 798 nv_corner_sampled_image: false, 799 nv_coverage_reduction_mode: false, 800 nv_dedicated_allocation: false, 801 nv_dedicated_allocation_image_aliasing: false, 802 nv_device_diagnostic_checkpoints: false, 803 nv_device_diagnostics_config: false, 804 nv_device_generated_commands: false, 805 nv_external_memory: false, 806 nv_external_memory_rdma: false, 807 nv_external_memory_win32: false, 808 nv_fill_rectangle: false, 809 nv_fragment_coverage_to_color: false, 810 nv_fragment_shader_barycentric: false, 811 nv_fragment_shading_rate_enums: false, 812 nv_framebuffer_mixed_samples: false, 813 nv_geometry_shader_passthrough: false, 814 nv_glsl_shader: false, 815 nv_inherited_viewport_scissor: false, 816 nv_linear_color_attachment: false, 817 nv_memory_decompression: false, 818 nv_mesh_shader: false, 819 nv_optical_flow: false, 820 nv_present_barrier: false, 821 nv_ray_tracing: false, 822 nv_ray_tracing_invocation_reorder: false, 823 nv_ray_tracing_motion_blur: false, 824 nv_representative_fragment_test: false, 825 nv_sample_mask_override_coverage: false, 826 nv_scissor_exclusive: false, 827 nv_shader_image_footprint: false, 828 nv_shader_sm_builtins: false, 829 nv_shader_subgroup_partitioned: false, 830 nv_shading_rate_image: false, 831 nv_viewport_array2: false, 832 nv_viewport_swizzle: false, 833 nv_win32_keyed_mutex: false, 834 qcom_fragment_density_map_offset: false, 835 qcom_image_processing: false, 836 qcom_multiview_per_view_viewports: false, 837 qcom_render_pass_shader_resolve: false, 838 qcom_render_pass_store_ops: false, 839 qcom_render_pass_transform: false, 840 qcom_rotated_copy_commands: false, 841 qcom_tile_properties: false, 842 sec_amigo_profiling: false, 843 valve_descriptor_set_host_mapping: false, 844 valve_mutable_descriptor_type: false, 845 _ne: crate::NonExhaustive(()), 846 } 847 } 848 #[doc = r" Returns an `Extensions` object with none of the members set."] 849 #[deprecated(since = "0.31.0", note = "Use `empty` instead.")] 850 #[inline] none() -> Self851 pub const fn none() -> Self { 852 Self::empty() 853 } 854 #[doc = r" Returns whether any members are set in both `self` and `other`."] 855 #[inline] intersects(&self, other: &Self) -> bool856 pub const fn intersects(&self, other: &Self) -> bool { 857 (self.khr_16bit_storage && other.khr_16bit_storage) 858 || (self.khr_8bit_storage && other.khr_8bit_storage) 859 || (self.khr_acceleration_structure && other.khr_acceleration_structure) 860 || (self.khr_bind_memory2 && other.khr_bind_memory2) 861 || (self.khr_buffer_device_address && other.khr_buffer_device_address) 862 || (self.khr_copy_commands2 && other.khr_copy_commands2) 863 || (self.khr_create_renderpass2 && other.khr_create_renderpass2) 864 || (self.khr_dedicated_allocation && other.khr_dedicated_allocation) 865 || (self.khr_deferred_host_operations && other.khr_deferred_host_operations) 866 || (self.khr_depth_stencil_resolve && other.khr_depth_stencil_resolve) 867 || (self.khr_descriptor_update_template && other.khr_descriptor_update_template) 868 || (self.khr_device_group && other.khr_device_group) 869 || (self.khr_display_swapchain && other.khr_display_swapchain) 870 || (self.khr_draw_indirect_count && other.khr_draw_indirect_count) 871 || (self.khr_driver_properties && other.khr_driver_properties) 872 || (self.khr_dynamic_rendering && other.khr_dynamic_rendering) 873 || (self.khr_external_fence && other.khr_external_fence) 874 || (self.khr_external_fence_fd && other.khr_external_fence_fd) 875 || (self.khr_external_fence_win32 && other.khr_external_fence_win32) 876 || (self.khr_external_memory && other.khr_external_memory) 877 || (self.khr_external_memory_fd && other.khr_external_memory_fd) 878 || (self.khr_external_memory_win32 && other.khr_external_memory_win32) 879 || (self.khr_external_semaphore && other.khr_external_semaphore) 880 || (self.khr_external_semaphore_fd && other.khr_external_semaphore_fd) 881 || (self.khr_external_semaphore_win32 && other.khr_external_semaphore_win32) 882 || (self.khr_format_feature_flags2 && other.khr_format_feature_flags2) 883 || (self.khr_fragment_shader_barycentric && other.khr_fragment_shader_barycentric) 884 || (self.khr_fragment_shading_rate && other.khr_fragment_shading_rate) 885 || (self.khr_get_memory_requirements2 && other.khr_get_memory_requirements2) 886 || (self.khr_global_priority && other.khr_global_priority) 887 || (self.khr_image_format_list && other.khr_image_format_list) 888 || (self.khr_imageless_framebuffer && other.khr_imageless_framebuffer) 889 || (self.khr_incremental_present && other.khr_incremental_present) 890 || (self.khr_maintenance1 && other.khr_maintenance1) 891 || (self.khr_maintenance2 && other.khr_maintenance2) 892 || (self.khr_maintenance3 && other.khr_maintenance3) 893 || (self.khr_maintenance4 && other.khr_maintenance4) 894 || (self.khr_multiview && other.khr_multiview) 895 || (self.khr_performance_query && other.khr_performance_query) 896 || (self.khr_pipeline_executable_properties && other.khr_pipeline_executable_properties) 897 || (self.khr_pipeline_library && other.khr_pipeline_library) 898 || (self.khr_portability_subset && other.khr_portability_subset) 899 || (self.khr_present_id && other.khr_present_id) 900 || (self.khr_present_wait && other.khr_present_wait) 901 || (self.khr_push_descriptor && other.khr_push_descriptor) 902 || (self.khr_ray_query && other.khr_ray_query) 903 || (self.khr_ray_tracing_maintenance1 && other.khr_ray_tracing_maintenance1) 904 || (self.khr_ray_tracing_pipeline && other.khr_ray_tracing_pipeline) 905 || (self.khr_relaxed_block_layout && other.khr_relaxed_block_layout) 906 || (self.khr_sampler_mirror_clamp_to_edge && other.khr_sampler_mirror_clamp_to_edge) 907 || (self.khr_sampler_ycbcr_conversion && other.khr_sampler_ycbcr_conversion) 908 || (self.khr_separate_depth_stencil_layouts && other.khr_separate_depth_stencil_layouts) 909 || (self.khr_shader_atomic_int64 && other.khr_shader_atomic_int64) 910 || (self.khr_shader_clock && other.khr_shader_clock) 911 || (self.khr_shader_draw_parameters && other.khr_shader_draw_parameters) 912 || (self.khr_shader_float16_int8 && other.khr_shader_float16_int8) 913 || (self.khr_shader_float_controls && other.khr_shader_float_controls) 914 || (self.khr_shader_integer_dot_product && other.khr_shader_integer_dot_product) 915 || (self.khr_shader_non_semantic_info && other.khr_shader_non_semantic_info) 916 || (self.khr_shader_subgroup_extended_types && other.khr_shader_subgroup_extended_types) 917 || (self.khr_shader_subgroup_uniform_control_flow 918 && other.khr_shader_subgroup_uniform_control_flow) 919 || (self.khr_shader_terminate_invocation && other.khr_shader_terminate_invocation) 920 || (self.khr_shared_presentable_image && other.khr_shared_presentable_image) 921 || (self.khr_spirv_1_4 && other.khr_spirv_1_4) 922 || (self.khr_storage_buffer_storage_class && other.khr_storage_buffer_storage_class) 923 || (self.khr_swapchain && other.khr_swapchain) 924 || (self.khr_swapchain_mutable_format && other.khr_swapchain_mutable_format) 925 || (self.khr_synchronization2 && other.khr_synchronization2) 926 || (self.khr_timeline_semaphore && other.khr_timeline_semaphore) 927 || (self.khr_uniform_buffer_standard_layout && other.khr_uniform_buffer_standard_layout) 928 || (self.khr_variable_pointers && other.khr_variable_pointers) 929 || (self.khr_video_decode_h264 && other.khr_video_decode_h264) 930 || (self.khr_video_decode_h265 && other.khr_video_decode_h265) 931 || (self.khr_video_decode_queue && other.khr_video_decode_queue) 932 || (self.khr_video_encode_queue && other.khr_video_encode_queue) 933 || (self.khr_video_queue && other.khr_video_queue) 934 || (self.khr_vulkan_memory_model && other.khr_vulkan_memory_model) 935 || (self.khr_win32_keyed_mutex && other.khr_win32_keyed_mutex) 936 || (self.khr_workgroup_memory_explicit_layout 937 && other.khr_workgroup_memory_explicit_layout) 938 || (self.khr_zero_initialize_workgroup_memory 939 && other.khr_zero_initialize_workgroup_memory) 940 || (self.ext_4444_formats && other.ext_4444_formats) 941 || (self.ext_astc_decode_mode && other.ext_astc_decode_mode) 942 || (self.ext_attachment_feedback_loop_layout 943 && other.ext_attachment_feedback_loop_layout) 944 || (self.ext_blend_operation_advanced && other.ext_blend_operation_advanced) 945 || (self.ext_border_color_swizzle && other.ext_border_color_swizzle) 946 || (self.ext_buffer_device_address && other.ext_buffer_device_address) 947 || (self.ext_calibrated_timestamps && other.ext_calibrated_timestamps) 948 || (self.ext_color_write_enable && other.ext_color_write_enable) 949 || (self.ext_conditional_rendering && other.ext_conditional_rendering) 950 || (self.ext_conservative_rasterization && other.ext_conservative_rasterization) 951 || (self.ext_custom_border_color && other.ext_custom_border_color) 952 || (self.ext_debug_marker && other.ext_debug_marker) 953 || (self.ext_depth_clamp_zero_one && other.ext_depth_clamp_zero_one) 954 || (self.ext_depth_clip_control && other.ext_depth_clip_control) 955 || (self.ext_depth_clip_enable && other.ext_depth_clip_enable) 956 || (self.ext_depth_range_unrestricted && other.ext_depth_range_unrestricted) 957 || (self.ext_descriptor_buffer && other.ext_descriptor_buffer) 958 || (self.ext_descriptor_indexing && other.ext_descriptor_indexing) 959 || (self.ext_device_address_binding_report && other.ext_device_address_binding_report) 960 || (self.ext_device_fault && other.ext_device_fault) 961 || (self.ext_device_memory_report && other.ext_device_memory_report) 962 || (self.ext_discard_rectangles && other.ext_discard_rectangles) 963 || (self.ext_display_control && other.ext_display_control) 964 || (self.ext_extended_dynamic_state && other.ext_extended_dynamic_state) 965 || (self.ext_extended_dynamic_state2 && other.ext_extended_dynamic_state2) 966 || (self.ext_extended_dynamic_state3 && other.ext_extended_dynamic_state3) 967 || (self.ext_external_memory_dma_buf && other.ext_external_memory_dma_buf) 968 || (self.ext_external_memory_host && other.ext_external_memory_host) 969 || (self.ext_filter_cubic && other.ext_filter_cubic) 970 || (self.ext_fragment_density_map && other.ext_fragment_density_map) 971 || (self.ext_fragment_density_map2 && other.ext_fragment_density_map2) 972 || (self.ext_fragment_shader_interlock && other.ext_fragment_shader_interlock) 973 || (self.ext_full_screen_exclusive && other.ext_full_screen_exclusive) 974 || (self.ext_global_priority && other.ext_global_priority) 975 || (self.ext_global_priority_query && other.ext_global_priority_query) 976 || (self.ext_graphics_pipeline_library && other.ext_graphics_pipeline_library) 977 || (self.ext_hdr_metadata && other.ext_hdr_metadata) 978 || (self.ext_host_query_reset && other.ext_host_query_reset) 979 || (self.ext_image_2d_view_of_3d && other.ext_image_2d_view_of_3d) 980 || (self.ext_image_compression_control && other.ext_image_compression_control) 981 || (self.ext_image_compression_control_swapchain 982 && other.ext_image_compression_control_swapchain) 983 || (self.ext_image_drm_format_modifier && other.ext_image_drm_format_modifier) 984 || (self.ext_image_robustness && other.ext_image_robustness) 985 || (self.ext_image_view_min_lod && other.ext_image_view_min_lod) 986 || (self.ext_index_type_uint8 && other.ext_index_type_uint8) 987 || (self.ext_inline_uniform_block && other.ext_inline_uniform_block) 988 || (self.ext_legacy_dithering && other.ext_legacy_dithering) 989 || (self.ext_line_rasterization && other.ext_line_rasterization) 990 || (self.ext_load_store_op_none && other.ext_load_store_op_none) 991 || (self.ext_memory_budget && other.ext_memory_budget) 992 || (self.ext_memory_priority && other.ext_memory_priority) 993 || (self.ext_mesh_shader && other.ext_mesh_shader) 994 || (self.ext_metal_objects && other.ext_metal_objects) 995 || (self.ext_multi_draw && other.ext_multi_draw) 996 || (self.ext_multisampled_render_to_single_sampled 997 && other.ext_multisampled_render_to_single_sampled) 998 || (self.ext_mutable_descriptor_type && other.ext_mutable_descriptor_type) 999 || (self.ext_non_seamless_cube_map && other.ext_non_seamless_cube_map) 1000 || (self.ext_opacity_micromap && other.ext_opacity_micromap) 1001 || (self.ext_pageable_device_local_memory && other.ext_pageable_device_local_memory) 1002 || (self.ext_pci_bus_info && other.ext_pci_bus_info) 1003 || (self.ext_physical_device_drm && other.ext_physical_device_drm) 1004 || (self.ext_pipeline_creation_cache_control 1005 && other.ext_pipeline_creation_cache_control) 1006 || (self.ext_pipeline_creation_feedback && other.ext_pipeline_creation_feedback) 1007 || (self.ext_pipeline_properties && other.ext_pipeline_properties) 1008 || (self.ext_pipeline_protected_access && other.ext_pipeline_protected_access) 1009 || (self.ext_pipeline_robustness && other.ext_pipeline_robustness) 1010 || (self.ext_post_depth_coverage && other.ext_post_depth_coverage) 1011 || (self.ext_primitive_topology_list_restart 1012 && other.ext_primitive_topology_list_restart) 1013 || (self.ext_primitives_generated_query && other.ext_primitives_generated_query) 1014 || (self.ext_private_data && other.ext_private_data) 1015 || (self.ext_provoking_vertex && other.ext_provoking_vertex) 1016 || (self.ext_queue_family_foreign && other.ext_queue_family_foreign) 1017 || (self.ext_rasterization_order_attachment_access 1018 && other.ext_rasterization_order_attachment_access) 1019 || (self.ext_rgba10x6_formats && other.ext_rgba10x6_formats) 1020 || (self.ext_robustness2 && other.ext_robustness2) 1021 || (self.ext_sample_locations && other.ext_sample_locations) 1022 || (self.ext_sampler_filter_minmax && other.ext_sampler_filter_minmax) 1023 || (self.ext_scalar_block_layout && other.ext_scalar_block_layout) 1024 || (self.ext_separate_stencil_usage && other.ext_separate_stencil_usage) 1025 || (self.ext_shader_atomic_float && other.ext_shader_atomic_float) 1026 || (self.ext_shader_atomic_float2 && other.ext_shader_atomic_float2) 1027 || (self.ext_shader_demote_to_helper_invocation 1028 && other.ext_shader_demote_to_helper_invocation) 1029 || (self.ext_shader_image_atomic_int64 && other.ext_shader_image_atomic_int64) 1030 || (self.ext_shader_module_identifier && other.ext_shader_module_identifier) 1031 || (self.ext_shader_stencil_export && other.ext_shader_stencil_export) 1032 || (self.ext_shader_subgroup_ballot && other.ext_shader_subgroup_ballot) 1033 || (self.ext_shader_subgroup_vote && other.ext_shader_subgroup_vote) 1034 || (self.ext_shader_viewport_index_layer && other.ext_shader_viewport_index_layer) 1035 || (self.ext_subgroup_size_control && other.ext_subgroup_size_control) 1036 || (self.ext_subpass_merge_feedback && other.ext_subpass_merge_feedback) 1037 || (self.ext_swapchain_maintenance1 && other.ext_swapchain_maintenance1) 1038 || (self.ext_texel_buffer_alignment && other.ext_texel_buffer_alignment) 1039 || (self.ext_texture_compression_astc_hdr && other.ext_texture_compression_astc_hdr) 1040 || (self.ext_tooling_info && other.ext_tooling_info) 1041 || (self.ext_transform_feedback && other.ext_transform_feedback) 1042 || (self.ext_validation_cache && other.ext_validation_cache) 1043 || (self.ext_vertex_attribute_divisor && other.ext_vertex_attribute_divisor) 1044 || (self.ext_vertex_input_dynamic_state && other.ext_vertex_input_dynamic_state) 1045 || (self.ext_video_encode_h264 && other.ext_video_encode_h264) 1046 || (self.ext_video_encode_h265 && other.ext_video_encode_h265) 1047 || (self.ext_ycbcr_2plane_444_formats && other.ext_ycbcr_2plane_444_formats) 1048 || (self.ext_ycbcr_image_arrays && other.ext_ycbcr_image_arrays) 1049 || (self.amd_buffer_marker && other.amd_buffer_marker) 1050 || (self.amd_device_coherent_memory && other.amd_device_coherent_memory) 1051 || (self.amd_display_native_hdr && other.amd_display_native_hdr) 1052 || (self.amd_draw_indirect_count && other.amd_draw_indirect_count) 1053 || (self.amd_gcn_shader && other.amd_gcn_shader) 1054 || (self.amd_gpu_shader_half_float && other.amd_gpu_shader_half_float) 1055 || (self.amd_gpu_shader_int16 && other.amd_gpu_shader_int16) 1056 || (self.amd_memory_overallocation_behavior && other.amd_memory_overallocation_behavior) 1057 || (self.amd_mixed_attachment_samples && other.amd_mixed_attachment_samples) 1058 || (self.amd_pipeline_compiler_control && other.amd_pipeline_compiler_control) 1059 || (self.amd_rasterization_order && other.amd_rasterization_order) 1060 || (self.amd_shader_ballot && other.amd_shader_ballot) 1061 || (self.amd_shader_core_properties && other.amd_shader_core_properties) 1062 || (self.amd_shader_core_properties2 && other.amd_shader_core_properties2) 1063 || (self.amd_shader_early_and_late_fragment_tests 1064 && other.amd_shader_early_and_late_fragment_tests) 1065 || (self.amd_shader_explicit_vertex_parameter 1066 && other.amd_shader_explicit_vertex_parameter) 1067 || (self.amd_shader_fragment_mask && other.amd_shader_fragment_mask) 1068 || (self.amd_shader_image_load_store_lod && other.amd_shader_image_load_store_lod) 1069 || (self.amd_shader_info && other.amd_shader_info) 1070 || (self.amd_shader_trinary_minmax && other.amd_shader_trinary_minmax) 1071 || (self.amd_texture_gather_bias_lod && other.amd_texture_gather_bias_lod) 1072 || (self.android_external_memory_android_hardware_buffer 1073 && other.android_external_memory_android_hardware_buffer) 1074 || (self.arm_rasterization_order_attachment_access 1075 && other.arm_rasterization_order_attachment_access) 1076 || (self.arm_shader_core_builtins && other.arm_shader_core_builtins) 1077 || (self.fuchsia_buffer_collection && other.fuchsia_buffer_collection) 1078 || (self.fuchsia_external_memory && other.fuchsia_external_memory) 1079 || (self.fuchsia_external_semaphore && other.fuchsia_external_semaphore) 1080 || (self.ggp_frame_token && other.ggp_frame_token) 1081 || (self.google_decorate_string && other.google_decorate_string) 1082 || (self.google_display_timing && other.google_display_timing) 1083 || (self.google_hlsl_functionality1 && other.google_hlsl_functionality1) 1084 || (self.google_user_type && other.google_user_type) 1085 || (self.huawei_invocation_mask && other.huawei_invocation_mask) 1086 || (self.huawei_subpass_shading && other.huawei_subpass_shading) 1087 || (self.img_filter_cubic && other.img_filter_cubic) 1088 || (self.img_format_pvrtc && other.img_format_pvrtc) 1089 || (self.intel_performance_query && other.intel_performance_query) 1090 || (self.intel_shader_integer_functions2 && other.intel_shader_integer_functions2) 1091 || (self.nvx_binary_import && other.nvx_binary_import) 1092 || (self.nvx_image_view_handle && other.nvx_image_view_handle) 1093 || (self.nvx_multiview_per_view_attributes && other.nvx_multiview_per_view_attributes) 1094 || (self.nv_acquire_winrt_display && other.nv_acquire_winrt_display) 1095 || (self.nv_clip_space_w_scaling && other.nv_clip_space_w_scaling) 1096 || (self.nv_compute_shader_derivatives && other.nv_compute_shader_derivatives) 1097 || (self.nv_cooperative_matrix && other.nv_cooperative_matrix) 1098 || (self.nv_copy_memory_indirect && other.nv_copy_memory_indirect) 1099 || (self.nv_corner_sampled_image && other.nv_corner_sampled_image) 1100 || (self.nv_coverage_reduction_mode && other.nv_coverage_reduction_mode) 1101 || (self.nv_dedicated_allocation && other.nv_dedicated_allocation) 1102 || (self.nv_dedicated_allocation_image_aliasing 1103 && other.nv_dedicated_allocation_image_aliasing) 1104 || (self.nv_device_diagnostic_checkpoints && other.nv_device_diagnostic_checkpoints) 1105 || (self.nv_device_diagnostics_config && other.nv_device_diagnostics_config) 1106 || (self.nv_device_generated_commands && other.nv_device_generated_commands) 1107 || (self.nv_external_memory && other.nv_external_memory) 1108 || (self.nv_external_memory_rdma && other.nv_external_memory_rdma) 1109 || (self.nv_external_memory_win32 && other.nv_external_memory_win32) 1110 || (self.nv_fill_rectangle && other.nv_fill_rectangle) 1111 || (self.nv_fragment_coverage_to_color && other.nv_fragment_coverage_to_color) 1112 || (self.nv_fragment_shader_barycentric && other.nv_fragment_shader_barycentric) 1113 || (self.nv_fragment_shading_rate_enums && other.nv_fragment_shading_rate_enums) 1114 || (self.nv_framebuffer_mixed_samples && other.nv_framebuffer_mixed_samples) 1115 || (self.nv_geometry_shader_passthrough && other.nv_geometry_shader_passthrough) 1116 || (self.nv_glsl_shader && other.nv_glsl_shader) 1117 || (self.nv_inherited_viewport_scissor && other.nv_inherited_viewport_scissor) 1118 || (self.nv_linear_color_attachment && other.nv_linear_color_attachment) 1119 || (self.nv_memory_decompression && other.nv_memory_decompression) 1120 || (self.nv_mesh_shader && other.nv_mesh_shader) 1121 || (self.nv_optical_flow && other.nv_optical_flow) 1122 || (self.nv_present_barrier && other.nv_present_barrier) 1123 || (self.nv_ray_tracing && other.nv_ray_tracing) 1124 || (self.nv_ray_tracing_invocation_reorder && other.nv_ray_tracing_invocation_reorder) 1125 || (self.nv_ray_tracing_motion_blur && other.nv_ray_tracing_motion_blur) 1126 || (self.nv_representative_fragment_test && other.nv_representative_fragment_test) 1127 || (self.nv_sample_mask_override_coverage && other.nv_sample_mask_override_coverage) 1128 || (self.nv_scissor_exclusive && other.nv_scissor_exclusive) 1129 || (self.nv_shader_image_footprint && other.nv_shader_image_footprint) 1130 || (self.nv_shader_sm_builtins && other.nv_shader_sm_builtins) 1131 || (self.nv_shader_subgroup_partitioned && other.nv_shader_subgroup_partitioned) 1132 || (self.nv_shading_rate_image && other.nv_shading_rate_image) 1133 || (self.nv_viewport_array2 && other.nv_viewport_array2) 1134 || (self.nv_viewport_swizzle && other.nv_viewport_swizzle) 1135 || (self.nv_win32_keyed_mutex && other.nv_win32_keyed_mutex) 1136 || (self.qcom_fragment_density_map_offset && other.qcom_fragment_density_map_offset) 1137 || (self.qcom_image_processing && other.qcom_image_processing) 1138 || (self.qcom_multiview_per_view_viewports && other.qcom_multiview_per_view_viewports) 1139 || (self.qcom_render_pass_shader_resolve && other.qcom_render_pass_shader_resolve) 1140 || (self.qcom_render_pass_store_ops && other.qcom_render_pass_store_ops) 1141 || (self.qcom_render_pass_transform && other.qcom_render_pass_transform) 1142 || (self.qcom_rotated_copy_commands && other.qcom_rotated_copy_commands) 1143 || (self.qcom_tile_properties && other.qcom_tile_properties) 1144 || (self.sec_amigo_profiling && other.sec_amigo_profiling) 1145 || (self.valve_descriptor_set_host_mapping && other.valve_descriptor_set_host_mapping) 1146 || (self.valve_mutable_descriptor_type && other.valve_mutable_descriptor_type) 1147 } 1148 #[doc = r" Returns whether all members in `other` are set in `self`."] 1149 #[inline] contains(&self, other: &Self) -> bool1150 pub const fn contains(&self, other: &Self) -> bool { 1151 (self.khr_16bit_storage || !other.khr_16bit_storage) 1152 && (self.khr_8bit_storage || !other.khr_8bit_storage) 1153 && (self.khr_acceleration_structure || !other.khr_acceleration_structure) 1154 && (self.khr_bind_memory2 || !other.khr_bind_memory2) 1155 && (self.khr_buffer_device_address || !other.khr_buffer_device_address) 1156 && (self.khr_copy_commands2 || !other.khr_copy_commands2) 1157 && (self.khr_create_renderpass2 || !other.khr_create_renderpass2) 1158 && (self.khr_dedicated_allocation || !other.khr_dedicated_allocation) 1159 && (self.khr_deferred_host_operations || !other.khr_deferred_host_operations) 1160 && (self.khr_depth_stencil_resolve || !other.khr_depth_stencil_resolve) 1161 && (self.khr_descriptor_update_template || !other.khr_descriptor_update_template) 1162 && (self.khr_device_group || !other.khr_device_group) 1163 && (self.khr_display_swapchain || !other.khr_display_swapchain) 1164 && (self.khr_draw_indirect_count || !other.khr_draw_indirect_count) 1165 && (self.khr_driver_properties || !other.khr_driver_properties) 1166 && (self.khr_dynamic_rendering || !other.khr_dynamic_rendering) 1167 && (self.khr_external_fence || !other.khr_external_fence) 1168 && (self.khr_external_fence_fd || !other.khr_external_fence_fd) 1169 && (self.khr_external_fence_win32 || !other.khr_external_fence_win32) 1170 && (self.khr_external_memory || !other.khr_external_memory) 1171 && (self.khr_external_memory_fd || !other.khr_external_memory_fd) 1172 && (self.khr_external_memory_win32 || !other.khr_external_memory_win32) 1173 && (self.khr_external_semaphore || !other.khr_external_semaphore) 1174 && (self.khr_external_semaphore_fd || !other.khr_external_semaphore_fd) 1175 && (self.khr_external_semaphore_win32 || !other.khr_external_semaphore_win32) 1176 && (self.khr_format_feature_flags2 || !other.khr_format_feature_flags2) 1177 && (self.khr_fragment_shader_barycentric || !other.khr_fragment_shader_barycentric) 1178 && (self.khr_fragment_shading_rate || !other.khr_fragment_shading_rate) 1179 && (self.khr_get_memory_requirements2 || !other.khr_get_memory_requirements2) 1180 && (self.khr_global_priority || !other.khr_global_priority) 1181 && (self.khr_image_format_list || !other.khr_image_format_list) 1182 && (self.khr_imageless_framebuffer || !other.khr_imageless_framebuffer) 1183 && (self.khr_incremental_present || !other.khr_incremental_present) 1184 && (self.khr_maintenance1 || !other.khr_maintenance1) 1185 && (self.khr_maintenance2 || !other.khr_maintenance2) 1186 && (self.khr_maintenance3 || !other.khr_maintenance3) 1187 && (self.khr_maintenance4 || !other.khr_maintenance4) 1188 && (self.khr_multiview || !other.khr_multiview) 1189 && (self.khr_performance_query || !other.khr_performance_query) 1190 && (self.khr_pipeline_executable_properties 1191 || !other.khr_pipeline_executable_properties) 1192 && (self.khr_pipeline_library || !other.khr_pipeline_library) 1193 && (self.khr_portability_subset || !other.khr_portability_subset) 1194 && (self.khr_present_id || !other.khr_present_id) 1195 && (self.khr_present_wait || !other.khr_present_wait) 1196 && (self.khr_push_descriptor || !other.khr_push_descriptor) 1197 && (self.khr_ray_query || !other.khr_ray_query) 1198 && (self.khr_ray_tracing_maintenance1 || !other.khr_ray_tracing_maintenance1) 1199 && (self.khr_ray_tracing_pipeline || !other.khr_ray_tracing_pipeline) 1200 && (self.khr_relaxed_block_layout || !other.khr_relaxed_block_layout) 1201 && (self.khr_sampler_mirror_clamp_to_edge || !other.khr_sampler_mirror_clamp_to_edge) 1202 && (self.khr_sampler_ycbcr_conversion || !other.khr_sampler_ycbcr_conversion) 1203 && (self.khr_separate_depth_stencil_layouts 1204 || !other.khr_separate_depth_stencil_layouts) 1205 && (self.khr_shader_atomic_int64 || !other.khr_shader_atomic_int64) 1206 && (self.khr_shader_clock || !other.khr_shader_clock) 1207 && (self.khr_shader_draw_parameters || !other.khr_shader_draw_parameters) 1208 && (self.khr_shader_float16_int8 || !other.khr_shader_float16_int8) 1209 && (self.khr_shader_float_controls || !other.khr_shader_float_controls) 1210 && (self.khr_shader_integer_dot_product || !other.khr_shader_integer_dot_product) 1211 && (self.khr_shader_non_semantic_info || !other.khr_shader_non_semantic_info) 1212 && (self.khr_shader_subgroup_extended_types 1213 || !other.khr_shader_subgroup_extended_types) 1214 && (self.khr_shader_subgroup_uniform_control_flow 1215 || !other.khr_shader_subgroup_uniform_control_flow) 1216 && (self.khr_shader_terminate_invocation || !other.khr_shader_terminate_invocation) 1217 && (self.khr_shared_presentable_image || !other.khr_shared_presentable_image) 1218 && (self.khr_spirv_1_4 || !other.khr_spirv_1_4) 1219 && (self.khr_storage_buffer_storage_class || !other.khr_storage_buffer_storage_class) 1220 && (self.khr_swapchain || !other.khr_swapchain) 1221 && (self.khr_swapchain_mutable_format || !other.khr_swapchain_mutable_format) 1222 && (self.khr_synchronization2 || !other.khr_synchronization2) 1223 && (self.khr_timeline_semaphore || !other.khr_timeline_semaphore) 1224 && (self.khr_uniform_buffer_standard_layout 1225 || !other.khr_uniform_buffer_standard_layout) 1226 && (self.khr_variable_pointers || !other.khr_variable_pointers) 1227 && (self.khr_video_decode_h264 || !other.khr_video_decode_h264) 1228 && (self.khr_video_decode_h265 || !other.khr_video_decode_h265) 1229 && (self.khr_video_decode_queue || !other.khr_video_decode_queue) 1230 && (self.khr_video_encode_queue || !other.khr_video_encode_queue) 1231 && (self.khr_video_queue || !other.khr_video_queue) 1232 && (self.khr_vulkan_memory_model || !other.khr_vulkan_memory_model) 1233 && (self.khr_win32_keyed_mutex || !other.khr_win32_keyed_mutex) 1234 && (self.khr_workgroup_memory_explicit_layout 1235 || !other.khr_workgroup_memory_explicit_layout) 1236 && (self.khr_zero_initialize_workgroup_memory 1237 || !other.khr_zero_initialize_workgroup_memory) 1238 && (self.ext_4444_formats || !other.ext_4444_formats) 1239 && (self.ext_astc_decode_mode || !other.ext_astc_decode_mode) 1240 && (self.ext_attachment_feedback_loop_layout 1241 || !other.ext_attachment_feedback_loop_layout) 1242 && (self.ext_blend_operation_advanced || !other.ext_blend_operation_advanced) 1243 && (self.ext_border_color_swizzle || !other.ext_border_color_swizzle) 1244 && (self.ext_buffer_device_address || !other.ext_buffer_device_address) 1245 && (self.ext_calibrated_timestamps || !other.ext_calibrated_timestamps) 1246 && (self.ext_color_write_enable || !other.ext_color_write_enable) 1247 && (self.ext_conditional_rendering || !other.ext_conditional_rendering) 1248 && (self.ext_conservative_rasterization || !other.ext_conservative_rasterization) 1249 && (self.ext_custom_border_color || !other.ext_custom_border_color) 1250 && (self.ext_debug_marker || !other.ext_debug_marker) 1251 && (self.ext_depth_clamp_zero_one || !other.ext_depth_clamp_zero_one) 1252 && (self.ext_depth_clip_control || !other.ext_depth_clip_control) 1253 && (self.ext_depth_clip_enable || !other.ext_depth_clip_enable) 1254 && (self.ext_depth_range_unrestricted || !other.ext_depth_range_unrestricted) 1255 && (self.ext_descriptor_buffer || !other.ext_descriptor_buffer) 1256 && (self.ext_descriptor_indexing || !other.ext_descriptor_indexing) 1257 && (self.ext_device_address_binding_report || !other.ext_device_address_binding_report) 1258 && (self.ext_device_fault || !other.ext_device_fault) 1259 && (self.ext_device_memory_report || !other.ext_device_memory_report) 1260 && (self.ext_discard_rectangles || !other.ext_discard_rectangles) 1261 && (self.ext_display_control || !other.ext_display_control) 1262 && (self.ext_extended_dynamic_state || !other.ext_extended_dynamic_state) 1263 && (self.ext_extended_dynamic_state2 || !other.ext_extended_dynamic_state2) 1264 && (self.ext_extended_dynamic_state3 || !other.ext_extended_dynamic_state3) 1265 && (self.ext_external_memory_dma_buf || !other.ext_external_memory_dma_buf) 1266 && (self.ext_external_memory_host || !other.ext_external_memory_host) 1267 && (self.ext_filter_cubic || !other.ext_filter_cubic) 1268 && (self.ext_fragment_density_map || !other.ext_fragment_density_map) 1269 && (self.ext_fragment_density_map2 || !other.ext_fragment_density_map2) 1270 && (self.ext_fragment_shader_interlock || !other.ext_fragment_shader_interlock) 1271 && (self.ext_full_screen_exclusive || !other.ext_full_screen_exclusive) 1272 && (self.ext_global_priority || !other.ext_global_priority) 1273 && (self.ext_global_priority_query || !other.ext_global_priority_query) 1274 && (self.ext_graphics_pipeline_library || !other.ext_graphics_pipeline_library) 1275 && (self.ext_hdr_metadata || !other.ext_hdr_metadata) 1276 && (self.ext_host_query_reset || !other.ext_host_query_reset) 1277 && (self.ext_image_2d_view_of_3d || !other.ext_image_2d_view_of_3d) 1278 && (self.ext_image_compression_control || !other.ext_image_compression_control) 1279 && (self.ext_image_compression_control_swapchain 1280 || !other.ext_image_compression_control_swapchain) 1281 && (self.ext_image_drm_format_modifier || !other.ext_image_drm_format_modifier) 1282 && (self.ext_image_robustness || !other.ext_image_robustness) 1283 && (self.ext_image_view_min_lod || !other.ext_image_view_min_lod) 1284 && (self.ext_index_type_uint8 || !other.ext_index_type_uint8) 1285 && (self.ext_inline_uniform_block || !other.ext_inline_uniform_block) 1286 && (self.ext_legacy_dithering || !other.ext_legacy_dithering) 1287 && (self.ext_line_rasterization || !other.ext_line_rasterization) 1288 && (self.ext_load_store_op_none || !other.ext_load_store_op_none) 1289 && (self.ext_memory_budget || !other.ext_memory_budget) 1290 && (self.ext_memory_priority || !other.ext_memory_priority) 1291 && (self.ext_mesh_shader || !other.ext_mesh_shader) 1292 && (self.ext_metal_objects || !other.ext_metal_objects) 1293 && (self.ext_multi_draw || !other.ext_multi_draw) 1294 && (self.ext_multisampled_render_to_single_sampled 1295 || !other.ext_multisampled_render_to_single_sampled) 1296 && (self.ext_mutable_descriptor_type || !other.ext_mutable_descriptor_type) 1297 && (self.ext_non_seamless_cube_map || !other.ext_non_seamless_cube_map) 1298 && (self.ext_opacity_micromap || !other.ext_opacity_micromap) 1299 && (self.ext_pageable_device_local_memory || !other.ext_pageable_device_local_memory) 1300 && (self.ext_pci_bus_info || !other.ext_pci_bus_info) 1301 && (self.ext_physical_device_drm || !other.ext_physical_device_drm) 1302 && (self.ext_pipeline_creation_cache_control 1303 || !other.ext_pipeline_creation_cache_control) 1304 && (self.ext_pipeline_creation_feedback || !other.ext_pipeline_creation_feedback) 1305 && (self.ext_pipeline_properties || !other.ext_pipeline_properties) 1306 && (self.ext_pipeline_protected_access || !other.ext_pipeline_protected_access) 1307 && (self.ext_pipeline_robustness || !other.ext_pipeline_robustness) 1308 && (self.ext_post_depth_coverage || !other.ext_post_depth_coverage) 1309 && (self.ext_primitive_topology_list_restart 1310 || !other.ext_primitive_topology_list_restart) 1311 && (self.ext_primitives_generated_query || !other.ext_primitives_generated_query) 1312 && (self.ext_private_data || !other.ext_private_data) 1313 && (self.ext_provoking_vertex || !other.ext_provoking_vertex) 1314 && (self.ext_queue_family_foreign || !other.ext_queue_family_foreign) 1315 && (self.ext_rasterization_order_attachment_access 1316 || !other.ext_rasterization_order_attachment_access) 1317 && (self.ext_rgba10x6_formats || !other.ext_rgba10x6_formats) 1318 && (self.ext_robustness2 || !other.ext_robustness2) 1319 && (self.ext_sample_locations || !other.ext_sample_locations) 1320 && (self.ext_sampler_filter_minmax || !other.ext_sampler_filter_minmax) 1321 && (self.ext_scalar_block_layout || !other.ext_scalar_block_layout) 1322 && (self.ext_separate_stencil_usage || !other.ext_separate_stencil_usage) 1323 && (self.ext_shader_atomic_float || !other.ext_shader_atomic_float) 1324 && (self.ext_shader_atomic_float2 || !other.ext_shader_atomic_float2) 1325 && (self.ext_shader_demote_to_helper_invocation 1326 || !other.ext_shader_demote_to_helper_invocation) 1327 && (self.ext_shader_image_atomic_int64 || !other.ext_shader_image_atomic_int64) 1328 && (self.ext_shader_module_identifier || !other.ext_shader_module_identifier) 1329 && (self.ext_shader_stencil_export || !other.ext_shader_stencil_export) 1330 && (self.ext_shader_subgroup_ballot || !other.ext_shader_subgroup_ballot) 1331 && (self.ext_shader_subgroup_vote || !other.ext_shader_subgroup_vote) 1332 && (self.ext_shader_viewport_index_layer || !other.ext_shader_viewport_index_layer) 1333 && (self.ext_subgroup_size_control || !other.ext_subgroup_size_control) 1334 && (self.ext_subpass_merge_feedback || !other.ext_subpass_merge_feedback) 1335 && (self.ext_swapchain_maintenance1 || !other.ext_swapchain_maintenance1) 1336 && (self.ext_texel_buffer_alignment || !other.ext_texel_buffer_alignment) 1337 && (self.ext_texture_compression_astc_hdr || !other.ext_texture_compression_astc_hdr) 1338 && (self.ext_tooling_info || !other.ext_tooling_info) 1339 && (self.ext_transform_feedback || !other.ext_transform_feedback) 1340 && (self.ext_validation_cache || !other.ext_validation_cache) 1341 && (self.ext_vertex_attribute_divisor || !other.ext_vertex_attribute_divisor) 1342 && (self.ext_vertex_input_dynamic_state || !other.ext_vertex_input_dynamic_state) 1343 && (self.ext_video_encode_h264 || !other.ext_video_encode_h264) 1344 && (self.ext_video_encode_h265 || !other.ext_video_encode_h265) 1345 && (self.ext_ycbcr_2plane_444_formats || !other.ext_ycbcr_2plane_444_formats) 1346 && (self.ext_ycbcr_image_arrays || !other.ext_ycbcr_image_arrays) 1347 && (self.amd_buffer_marker || !other.amd_buffer_marker) 1348 && (self.amd_device_coherent_memory || !other.amd_device_coherent_memory) 1349 && (self.amd_display_native_hdr || !other.amd_display_native_hdr) 1350 && (self.amd_draw_indirect_count || !other.amd_draw_indirect_count) 1351 && (self.amd_gcn_shader || !other.amd_gcn_shader) 1352 && (self.amd_gpu_shader_half_float || !other.amd_gpu_shader_half_float) 1353 && (self.amd_gpu_shader_int16 || !other.amd_gpu_shader_int16) 1354 && (self.amd_memory_overallocation_behavior 1355 || !other.amd_memory_overallocation_behavior) 1356 && (self.amd_mixed_attachment_samples || !other.amd_mixed_attachment_samples) 1357 && (self.amd_pipeline_compiler_control || !other.amd_pipeline_compiler_control) 1358 && (self.amd_rasterization_order || !other.amd_rasterization_order) 1359 && (self.amd_shader_ballot || !other.amd_shader_ballot) 1360 && (self.amd_shader_core_properties || !other.amd_shader_core_properties) 1361 && (self.amd_shader_core_properties2 || !other.amd_shader_core_properties2) 1362 && (self.amd_shader_early_and_late_fragment_tests 1363 || !other.amd_shader_early_and_late_fragment_tests) 1364 && (self.amd_shader_explicit_vertex_parameter 1365 || !other.amd_shader_explicit_vertex_parameter) 1366 && (self.amd_shader_fragment_mask || !other.amd_shader_fragment_mask) 1367 && (self.amd_shader_image_load_store_lod || !other.amd_shader_image_load_store_lod) 1368 && (self.amd_shader_info || !other.amd_shader_info) 1369 && (self.amd_shader_trinary_minmax || !other.amd_shader_trinary_minmax) 1370 && (self.amd_texture_gather_bias_lod || !other.amd_texture_gather_bias_lod) 1371 && (self.android_external_memory_android_hardware_buffer 1372 || !other.android_external_memory_android_hardware_buffer) 1373 && (self.arm_rasterization_order_attachment_access 1374 || !other.arm_rasterization_order_attachment_access) 1375 && (self.arm_shader_core_builtins || !other.arm_shader_core_builtins) 1376 && (self.fuchsia_buffer_collection || !other.fuchsia_buffer_collection) 1377 && (self.fuchsia_external_memory || !other.fuchsia_external_memory) 1378 && (self.fuchsia_external_semaphore || !other.fuchsia_external_semaphore) 1379 && (self.ggp_frame_token || !other.ggp_frame_token) 1380 && (self.google_decorate_string || !other.google_decorate_string) 1381 && (self.google_display_timing || !other.google_display_timing) 1382 && (self.google_hlsl_functionality1 || !other.google_hlsl_functionality1) 1383 && (self.google_user_type || !other.google_user_type) 1384 && (self.huawei_invocation_mask || !other.huawei_invocation_mask) 1385 && (self.huawei_subpass_shading || !other.huawei_subpass_shading) 1386 && (self.img_filter_cubic || !other.img_filter_cubic) 1387 && (self.img_format_pvrtc || !other.img_format_pvrtc) 1388 && (self.intel_performance_query || !other.intel_performance_query) 1389 && (self.intel_shader_integer_functions2 || !other.intel_shader_integer_functions2) 1390 && (self.nvx_binary_import || !other.nvx_binary_import) 1391 && (self.nvx_image_view_handle || !other.nvx_image_view_handle) 1392 && (self.nvx_multiview_per_view_attributes || !other.nvx_multiview_per_view_attributes) 1393 && (self.nv_acquire_winrt_display || !other.nv_acquire_winrt_display) 1394 && (self.nv_clip_space_w_scaling || !other.nv_clip_space_w_scaling) 1395 && (self.nv_compute_shader_derivatives || !other.nv_compute_shader_derivatives) 1396 && (self.nv_cooperative_matrix || !other.nv_cooperative_matrix) 1397 && (self.nv_copy_memory_indirect || !other.nv_copy_memory_indirect) 1398 && (self.nv_corner_sampled_image || !other.nv_corner_sampled_image) 1399 && (self.nv_coverage_reduction_mode || !other.nv_coverage_reduction_mode) 1400 && (self.nv_dedicated_allocation || !other.nv_dedicated_allocation) 1401 && (self.nv_dedicated_allocation_image_aliasing 1402 || !other.nv_dedicated_allocation_image_aliasing) 1403 && (self.nv_device_diagnostic_checkpoints || !other.nv_device_diagnostic_checkpoints) 1404 && (self.nv_device_diagnostics_config || !other.nv_device_diagnostics_config) 1405 && (self.nv_device_generated_commands || !other.nv_device_generated_commands) 1406 && (self.nv_external_memory || !other.nv_external_memory) 1407 && (self.nv_external_memory_rdma || !other.nv_external_memory_rdma) 1408 && (self.nv_external_memory_win32 || !other.nv_external_memory_win32) 1409 && (self.nv_fill_rectangle || !other.nv_fill_rectangle) 1410 && (self.nv_fragment_coverage_to_color || !other.nv_fragment_coverage_to_color) 1411 && (self.nv_fragment_shader_barycentric || !other.nv_fragment_shader_barycentric) 1412 && (self.nv_fragment_shading_rate_enums || !other.nv_fragment_shading_rate_enums) 1413 && (self.nv_framebuffer_mixed_samples || !other.nv_framebuffer_mixed_samples) 1414 && (self.nv_geometry_shader_passthrough || !other.nv_geometry_shader_passthrough) 1415 && (self.nv_glsl_shader || !other.nv_glsl_shader) 1416 && (self.nv_inherited_viewport_scissor || !other.nv_inherited_viewport_scissor) 1417 && (self.nv_linear_color_attachment || !other.nv_linear_color_attachment) 1418 && (self.nv_memory_decompression || !other.nv_memory_decompression) 1419 && (self.nv_mesh_shader || !other.nv_mesh_shader) 1420 && (self.nv_optical_flow || !other.nv_optical_flow) 1421 && (self.nv_present_barrier || !other.nv_present_barrier) 1422 && (self.nv_ray_tracing || !other.nv_ray_tracing) 1423 && (self.nv_ray_tracing_invocation_reorder || !other.nv_ray_tracing_invocation_reorder) 1424 && (self.nv_ray_tracing_motion_blur || !other.nv_ray_tracing_motion_blur) 1425 && (self.nv_representative_fragment_test || !other.nv_representative_fragment_test) 1426 && (self.nv_sample_mask_override_coverage || !other.nv_sample_mask_override_coverage) 1427 && (self.nv_scissor_exclusive || !other.nv_scissor_exclusive) 1428 && (self.nv_shader_image_footprint || !other.nv_shader_image_footprint) 1429 && (self.nv_shader_sm_builtins || !other.nv_shader_sm_builtins) 1430 && (self.nv_shader_subgroup_partitioned || !other.nv_shader_subgroup_partitioned) 1431 && (self.nv_shading_rate_image || !other.nv_shading_rate_image) 1432 && (self.nv_viewport_array2 || !other.nv_viewport_array2) 1433 && (self.nv_viewport_swizzle || !other.nv_viewport_swizzle) 1434 && (self.nv_win32_keyed_mutex || !other.nv_win32_keyed_mutex) 1435 && (self.qcom_fragment_density_map_offset || !other.qcom_fragment_density_map_offset) 1436 && (self.qcom_image_processing || !other.qcom_image_processing) 1437 && (self.qcom_multiview_per_view_viewports || !other.qcom_multiview_per_view_viewports) 1438 && (self.qcom_render_pass_shader_resolve || !other.qcom_render_pass_shader_resolve) 1439 && (self.qcom_render_pass_store_ops || !other.qcom_render_pass_store_ops) 1440 && (self.qcom_render_pass_transform || !other.qcom_render_pass_transform) 1441 && (self.qcom_rotated_copy_commands || !other.qcom_rotated_copy_commands) 1442 && (self.qcom_tile_properties || !other.qcom_tile_properties) 1443 && (self.sec_amigo_profiling || !other.sec_amigo_profiling) 1444 && (self.valve_descriptor_set_host_mapping || !other.valve_descriptor_set_host_mapping) 1445 && (self.valve_mutable_descriptor_type || !other.valve_mutable_descriptor_type) 1446 } 1447 #[doc = r" Returns whether all members in `other` are set in `self`."] 1448 #[deprecated(since = "0.31.0", note = "Use `contains` instead.")] 1449 #[inline] is_superset_of(&self, other: &Self) -> bool1450 pub const fn is_superset_of(&self, other: &Self) -> bool { 1451 self.contains(other) 1452 } 1453 #[doc = r" Returns the union of `self` and `other`."] 1454 #[inline] union(&self, other: &Self) -> Self1455 pub const fn union(&self, other: &Self) -> Self { 1456 Self { 1457 khr_16bit_storage: self.khr_16bit_storage || other.khr_16bit_storage, 1458 khr_8bit_storage: self.khr_8bit_storage || other.khr_8bit_storage, 1459 khr_acceleration_structure: self.khr_acceleration_structure 1460 || other.khr_acceleration_structure, 1461 khr_bind_memory2: self.khr_bind_memory2 || other.khr_bind_memory2, 1462 khr_buffer_device_address: self.khr_buffer_device_address 1463 || other.khr_buffer_device_address, 1464 khr_copy_commands2: self.khr_copy_commands2 || other.khr_copy_commands2, 1465 khr_create_renderpass2: self.khr_create_renderpass2 || other.khr_create_renderpass2, 1466 khr_dedicated_allocation: self.khr_dedicated_allocation 1467 || other.khr_dedicated_allocation, 1468 khr_deferred_host_operations: self.khr_deferred_host_operations 1469 || other.khr_deferred_host_operations, 1470 khr_depth_stencil_resolve: self.khr_depth_stencil_resolve 1471 || other.khr_depth_stencil_resolve, 1472 khr_descriptor_update_template: self.khr_descriptor_update_template 1473 || other.khr_descriptor_update_template, 1474 khr_device_group: self.khr_device_group || other.khr_device_group, 1475 khr_display_swapchain: self.khr_display_swapchain || other.khr_display_swapchain, 1476 khr_draw_indirect_count: self.khr_draw_indirect_count || other.khr_draw_indirect_count, 1477 khr_driver_properties: self.khr_driver_properties || other.khr_driver_properties, 1478 khr_dynamic_rendering: self.khr_dynamic_rendering || other.khr_dynamic_rendering, 1479 khr_external_fence: self.khr_external_fence || other.khr_external_fence, 1480 khr_external_fence_fd: self.khr_external_fence_fd || other.khr_external_fence_fd, 1481 khr_external_fence_win32: self.khr_external_fence_win32 1482 || other.khr_external_fence_win32, 1483 khr_external_memory: self.khr_external_memory || other.khr_external_memory, 1484 khr_external_memory_fd: self.khr_external_memory_fd || other.khr_external_memory_fd, 1485 khr_external_memory_win32: self.khr_external_memory_win32 1486 || other.khr_external_memory_win32, 1487 khr_external_semaphore: self.khr_external_semaphore || other.khr_external_semaphore, 1488 khr_external_semaphore_fd: self.khr_external_semaphore_fd 1489 || other.khr_external_semaphore_fd, 1490 khr_external_semaphore_win32: self.khr_external_semaphore_win32 1491 || other.khr_external_semaphore_win32, 1492 khr_format_feature_flags2: self.khr_format_feature_flags2 1493 || other.khr_format_feature_flags2, 1494 khr_fragment_shader_barycentric: self.khr_fragment_shader_barycentric 1495 || other.khr_fragment_shader_barycentric, 1496 khr_fragment_shading_rate: self.khr_fragment_shading_rate 1497 || other.khr_fragment_shading_rate, 1498 khr_get_memory_requirements2: self.khr_get_memory_requirements2 1499 || other.khr_get_memory_requirements2, 1500 khr_global_priority: self.khr_global_priority || other.khr_global_priority, 1501 khr_image_format_list: self.khr_image_format_list || other.khr_image_format_list, 1502 khr_imageless_framebuffer: self.khr_imageless_framebuffer 1503 || other.khr_imageless_framebuffer, 1504 khr_incremental_present: self.khr_incremental_present || other.khr_incremental_present, 1505 khr_maintenance1: self.khr_maintenance1 || other.khr_maintenance1, 1506 khr_maintenance2: self.khr_maintenance2 || other.khr_maintenance2, 1507 khr_maintenance3: self.khr_maintenance3 || other.khr_maintenance3, 1508 khr_maintenance4: self.khr_maintenance4 || other.khr_maintenance4, 1509 khr_multiview: self.khr_multiview || other.khr_multiview, 1510 khr_performance_query: self.khr_performance_query || other.khr_performance_query, 1511 khr_pipeline_executable_properties: self.khr_pipeline_executable_properties 1512 || other.khr_pipeline_executable_properties, 1513 khr_pipeline_library: self.khr_pipeline_library || other.khr_pipeline_library, 1514 khr_portability_subset: self.khr_portability_subset || other.khr_portability_subset, 1515 khr_present_id: self.khr_present_id || other.khr_present_id, 1516 khr_present_wait: self.khr_present_wait || other.khr_present_wait, 1517 khr_push_descriptor: self.khr_push_descriptor || other.khr_push_descriptor, 1518 khr_ray_query: self.khr_ray_query || other.khr_ray_query, 1519 khr_ray_tracing_maintenance1: self.khr_ray_tracing_maintenance1 1520 || other.khr_ray_tracing_maintenance1, 1521 khr_ray_tracing_pipeline: self.khr_ray_tracing_pipeline 1522 || other.khr_ray_tracing_pipeline, 1523 khr_relaxed_block_layout: self.khr_relaxed_block_layout 1524 || other.khr_relaxed_block_layout, 1525 khr_sampler_mirror_clamp_to_edge: self.khr_sampler_mirror_clamp_to_edge 1526 || other.khr_sampler_mirror_clamp_to_edge, 1527 khr_sampler_ycbcr_conversion: self.khr_sampler_ycbcr_conversion 1528 || other.khr_sampler_ycbcr_conversion, 1529 khr_separate_depth_stencil_layouts: self.khr_separate_depth_stencil_layouts 1530 || other.khr_separate_depth_stencil_layouts, 1531 khr_shader_atomic_int64: self.khr_shader_atomic_int64 || other.khr_shader_atomic_int64, 1532 khr_shader_clock: self.khr_shader_clock || other.khr_shader_clock, 1533 khr_shader_draw_parameters: self.khr_shader_draw_parameters 1534 || other.khr_shader_draw_parameters, 1535 khr_shader_float16_int8: self.khr_shader_float16_int8 || other.khr_shader_float16_int8, 1536 khr_shader_float_controls: self.khr_shader_float_controls 1537 || other.khr_shader_float_controls, 1538 khr_shader_integer_dot_product: self.khr_shader_integer_dot_product 1539 || other.khr_shader_integer_dot_product, 1540 khr_shader_non_semantic_info: self.khr_shader_non_semantic_info 1541 || other.khr_shader_non_semantic_info, 1542 khr_shader_subgroup_extended_types: self.khr_shader_subgroup_extended_types 1543 || other.khr_shader_subgroup_extended_types, 1544 khr_shader_subgroup_uniform_control_flow: self.khr_shader_subgroup_uniform_control_flow 1545 || other.khr_shader_subgroup_uniform_control_flow, 1546 khr_shader_terminate_invocation: self.khr_shader_terminate_invocation 1547 || other.khr_shader_terminate_invocation, 1548 khr_shared_presentable_image: self.khr_shared_presentable_image 1549 || other.khr_shared_presentable_image, 1550 khr_spirv_1_4: self.khr_spirv_1_4 || other.khr_spirv_1_4, 1551 khr_storage_buffer_storage_class: self.khr_storage_buffer_storage_class 1552 || other.khr_storage_buffer_storage_class, 1553 khr_swapchain: self.khr_swapchain || other.khr_swapchain, 1554 khr_swapchain_mutable_format: self.khr_swapchain_mutable_format 1555 || other.khr_swapchain_mutable_format, 1556 khr_synchronization2: self.khr_synchronization2 || other.khr_synchronization2, 1557 khr_timeline_semaphore: self.khr_timeline_semaphore || other.khr_timeline_semaphore, 1558 khr_uniform_buffer_standard_layout: self.khr_uniform_buffer_standard_layout 1559 || other.khr_uniform_buffer_standard_layout, 1560 khr_variable_pointers: self.khr_variable_pointers || other.khr_variable_pointers, 1561 khr_video_decode_h264: self.khr_video_decode_h264 || other.khr_video_decode_h264, 1562 khr_video_decode_h265: self.khr_video_decode_h265 || other.khr_video_decode_h265, 1563 khr_video_decode_queue: self.khr_video_decode_queue || other.khr_video_decode_queue, 1564 khr_video_encode_queue: self.khr_video_encode_queue || other.khr_video_encode_queue, 1565 khr_video_queue: self.khr_video_queue || other.khr_video_queue, 1566 khr_vulkan_memory_model: self.khr_vulkan_memory_model || other.khr_vulkan_memory_model, 1567 khr_win32_keyed_mutex: self.khr_win32_keyed_mutex || other.khr_win32_keyed_mutex, 1568 khr_workgroup_memory_explicit_layout: self.khr_workgroup_memory_explicit_layout 1569 || other.khr_workgroup_memory_explicit_layout, 1570 khr_zero_initialize_workgroup_memory: self.khr_zero_initialize_workgroup_memory 1571 || other.khr_zero_initialize_workgroup_memory, 1572 ext_4444_formats: self.ext_4444_formats || other.ext_4444_formats, 1573 ext_astc_decode_mode: self.ext_astc_decode_mode || other.ext_astc_decode_mode, 1574 ext_attachment_feedback_loop_layout: self.ext_attachment_feedback_loop_layout 1575 || other.ext_attachment_feedback_loop_layout, 1576 ext_blend_operation_advanced: self.ext_blend_operation_advanced 1577 || other.ext_blend_operation_advanced, 1578 ext_border_color_swizzle: self.ext_border_color_swizzle 1579 || other.ext_border_color_swizzle, 1580 ext_buffer_device_address: self.ext_buffer_device_address 1581 || other.ext_buffer_device_address, 1582 ext_calibrated_timestamps: self.ext_calibrated_timestamps 1583 || other.ext_calibrated_timestamps, 1584 ext_color_write_enable: self.ext_color_write_enable || other.ext_color_write_enable, 1585 ext_conditional_rendering: self.ext_conditional_rendering 1586 || other.ext_conditional_rendering, 1587 ext_conservative_rasterization: self.ext_conservative_rasterization 1588 || other.ext_conservative_rasterization, 1589 ext_custom_border_color: self.ext_custom_border_color || other.ext_custom_border_color, 1590 ext_debug_marker: self.ext_debug_marker || other.ext_debug_marker, 1591 ext_depth_clamp_zero_one: self.ext_depth_clamp_zero_one 1592 || other.ext_depth_clamp_zero_one, 1593 ext_depth_clip_control: self.ext_depth_clip_control || other.ext_depth_clip_control, 1594 ext_depth_clip_enable: self.ext_depth_clip_enable || other.ext_depth_clip_enable, 1595 ext_depth_range_unrestricted: self.ext_depth_range_unrestricted 1596 || other.ext_depth_range_unrestricted, 1597 ext_descriptor_buffer: self.ext_descriptor_buffer || other.ext_descriptor_buffer, 1598 ext_descriptor_indexing: self.ext_descriptor_indexing || other.ext_descriptor_indexing, 1599 ext_device_address_binding_report: self.ext_device_address_binding_report 1600 || other.ext_device_address_binding_report, 1601 ext_device_fault: self.ext_device_fault || other.ext_device_fault, 1602 ext_device_memory_report: self.ext_device_memory_report 1603 || other.ext_device_memory_report, 1604 ext_discard_rectangles: self.ext_discard_rectangles || other.ext_discard_rectangles, 1605 ext_display_control: self.ext_display_control || other.ext_display_control, 1606 ext_extended_dynamic_state: self.ext_extended_dynamic_state 1607 || other.ext_extended_dynamic_state, 1608 ext_extended_dynamic_state2: self.ext_extended_dynamic_state2 1609 || other.ext_extended_dynamic_state2, 1610 ext_extended_dynamic_state3: self.ext_extended_dynamic_state3 1611 || other.ext_extended_dynamic_state3, 1612 ext_external_memory_dma_buf: self.ext_external_memory_dma_buf 1613 || other.ext_external_memory_dma_buf, 1614 ext_external_memory_host: self.ext_external_memory_host 1615 || other.ext_external_memory_host, 1616 ext_filter_cubic: self.ext_filter_cubic || other.ext_filter_cubic, 1617 ext_fragment_density_map: self.ext_fragment_density_map 1618 || other.ext_fragment_density_map, 1619 ext_fragment_density_map2: self.ext_fragment_density_map2 1620 || other.ext_fragment_density_map2, 1621 ext_fragment_shader_interlock: self.ext_fragment_shader_interlock 1622 || other.ext_fragment_shader_interlock, 1623 ext_full_screen_exclusive: self.ext_full_screen_exclusive 1624 || other.ext_full_screen_exclusive, 1625 ext_global_priority: self.ext_global_priority || other.ext_global_priority, 1626 ext_global_priority_query: self.ext_global_priority_query 1627 || other.ext_global_priority_query, 1628 ext_graphics_pipeline_library: self.ext_graphics_pipeline_library 1629 || other.ext_graphics_pipeline_library, 1630 ext_hdr_metadata: self.ext_hdr_metadata || other.ext_hdr_metadata, 1631 ext_host_query_reset: self.ext_host_query_reset || other.ext_host_query_reset, 1632 ext_image_2d_view_of_3d: self.ext_image_2d_view_of_3d || other.ext_image_2d_view_of_3d, 1633 ext_image_compression_control: self.ext_image_compression_control 1634 || other.ext_image_compression_control, 1635 ext_image_compression_control_swapchain: self.ext_image_compression_control_swapchain 1636 || other.ext_image_compression_control_swapchain, 1637 ext_image_drm_format_modifier: self.ext_image_drm_format_modifier 1638 || other.ext_image_drm_format_modifier, 1639 ext_image_robustness: self.ext_image_robustness || other.ext_image_robustness, 1640 ext_image_view_min_lod: self.ext_image_view_min_lod || other.ext_image_view_min_lod, 1641 ext_index_type_uint8: self.ext_index_type_uint8 || other.ext_index_type_uint8, 1642 ext_inline_uniform_block: self.ext_inline_uniform_block 1643 || other.ext_inline_uniform_block, 1644 ext_legacy_dithering: self.ext_legacy_dithering || other.ext_legacy_dithering, 1645 ext_line_rasterization: self.ext_line_rasterization || other.ext_line_rasterization, 1646 ext_load_store_op_none: self.ext_load_store_op_none || other.ext_load_store_op_none, 1647 ext_memory_budget: self.ext_memory_budget || other.ext_memory_budget, 1648 ext_memory_priority: self.ext_memory_priority || other.ext_memory_priority, 1649 ext_mesh_shader: self.ext_mesh_shader || other.ext_mesh_shader, 1650 ext_metal_objects: self.ext_metal_objects || other.ext_metal_objects, 1651 ext_multi_draw: self.ext_multi_draw || other.ext_multi_draw, 1652 ext_multisampled_render_to_single_sampled: self 1653 .ext_multisampled_render_to_single_sampled 1654 || other.ext_multisampled_render_to_single_sampled, 1655 ext_mutable_descriptor_type: self.ext_mutable_descriptor_type 1656 || other.ext_mutable_descriptor_type, 1657 ext_non_seamless_cube_map: self.ext_non_seamless_cube_map 1658 || other.ext_non_seamless_cube_map, 1659 ext_opacity_micromap: self.ext_opacity_micromap || other.ext_opacity_micromap, 1660 ext_pageable_device_local_memory: self.ext_pageable_device_local_memory 1661 || other.ext_pageable_device_local_memory, 1662 ext_pci_bus_info: self.ext_pci_bus_info || other.ext_pci_bus_info, 1663 ext_physical_device_drm: self.ext_physical_device_drm || other.ext_physical_device_drm, 1664 ext_pipeline_creation_cache_control: self.ext_pipeline_creation_cache_control 1665 || other.ext_pipeline_creation_cache_control, 1666 ext_pipeline_creation_feedback: self.ext_pipeline_creation_feedback 1667 || other.ext_pipeline_creation_feedback, 1668 ext_pipeline_properties: self.ext_pipeline_properties || other.ext_pipeline_properties, 1669 ext_pipeline_protected_access: self.ext_pipeline_protected_access 1670 || other.ext_pipeline_protected_access, 1671 ext_pipeline_robustness: self.ext_pipeline_robustness || other.ext_pipeline_robustness, 1672 ext_post_depth_coverage: self.ext_post_depth_coverage || other.ext_post_depth_coverage, 1673 ext_primitive_topology_list_restart: self.ext_primitive_topology_list_restart 1674 || other.ext_primitive_topology_list_restart, 1675 ext_primitives_generated_query: self.ext_primitives_generated_query 1676 || other.ext_primitives_generated_query, 1677 ext_private_data: self.ext_private_data || other.ext_private_data, 1678 ext_provoking_vertex: self.ext_provoking_vertex || other.ext_provoking_vertex, 1679 ext_queue_family_foreign: self.ext_queue_family_foreign 1680 || other.ext_queue_family_foreign, 1681 ext_rasterization_order_attachment_access: self 1682 .ext_rasterization_order_attachment_access 1683 || other.ext_rasterization_order_attachment_access, 1684 ext_rgba10x6_formats: self.ext_rgba10x6_formats || other.ext_rgba10x6_formats, 1685 ext_robustness2: self.ext_robustness2 || other.ext_robustness2, 1686 ext_sample_locations: self.ext_sample_locations || other.ext_sample_locations, 1687 ext_sampler_filter_minmax: self.ext_sampler_filter_minmax 1688 || other.ext_sampler_filter_minmax, 1689 ext_scalar_block_layout: self.ext_scalar_block_layout || other.ext_scalar_block_layout, 1690 ext_separate_stencil_usage: self.ext_separate_stencil_usage 1691 || other.ext_separate_stencil_usage, 1692 ext_shader_atomic_float: self.ext_shader_atomic_float || other.ext_shader_atomic_float, 1693 ext_shader_atomic_float2: self.ext_shader_atomic_float2 1694 || other.ext_shader_atomic_float2, 1695 ext_shader_demote_to_helper_invocation: self.ext_shader_demote_to_helper_invocation 1696 || other.ext_shader_demote_to_helper_invocation, 1697 ext_shader_image_atomic_int64: self.ext_shader_image_atomic_int64 1698 || other.ext_shader_image_atomic_int64, 1699 ext_shader_module_identifier: self.ext_shader_module_identifier 1700 || other.ext_shader_module_identifier, 1701 ext_shader_stencil_export: self.ext_shader_stencil_export 1702 || other.ext_shader_stencil_export, 1703 ext_shader_subgroup_ballot: self.ext_shader_subgroup_ballot 1704 || other.ext_shader_subgroup_ballot, 1705 ext_shader_subgroup_vote: self.ext_shader_subgroup_vote 1706 || other.ext_shader_subgroup_vote, 1707 ext_shader_viewport_index_layer: self.ext_shader_viewport_index_layer 1708 || other.ext_shader_viewport_index_layer, 1709 ext_subgroup_size_control: self.ext_subgroup_size_control 1710 || other.ext_subgroup_size_control, 1711 ext_subpass_merge_feedback: self.ext_subpass_merge_feedback 1712 || other.ext_subpass_merge_feedback, 1713 ext_swapchain_maintenance1: self.ext_swapchain_maintenance1 1714 || other.ext_swapchain_maintenance1, 1715 ext_texel_buffer_alignment: self.ext_texel_buffer_alignment 1716 || other.ext_texel_buffer_alignment, 1717 ext_texture_compression_astc_hdr: self.ext_texture_compression_astc_hdr 1718 || other.ext_texture_compression_astc_hdr, 1719 ext_tooling_info: self.ext_tooling_info || other.ext_tooling_info, 1720 ext_transform_feedback: self.ext_transform_feedback || other.ext_transform_feedback, 1721 ext_validation_cache: self.ext_validation_cache || other.ext_validation_cache, 1722 ext_vertex_attribute_divisor: self.ext_vertex_attribute_divisor 1723 || other.ext_vertex_attribute_divisor, 1724 ext_vertex_input_dynamic_state: self.ext_vertex_input_dynamic_state 1725 || other.ext_vertex_input_dynamic_state, 1726 ext_video_encode_h264: self.ext_video_encode_h264 || other.ext_video_encode_h264, 1727 ext_video_encode_h265: self.ext_video_encode_h265 || other.ext_video_encode_h265, 1728 ext_ycbcr_2plane_444_formats: self.ext_ycbcr_2plane_444_formats 1729 || other.ext_ycbcr_2plane_444_formats, 1730 ext_ycbcr_image_arrays: self.ext_ycbcr_image_arrays || other.ext_ycbcr_image_arrays, 1731 amd_buffer_marker: self.amd_buffer_marker || other.amd_buffer_marker, 1732 amd_device_coherent_memory: self.amd_device_coherent_memory 1733 || other.amd_device_coherent_memory, 1734 amd_display_native_hdr: self.amd_display_native_hdr || other.amd_display_native_hdr, 1735 amd_draw_indirect_count: self.amd_draw_indirect_count || other.amd_draw_indirect_count, 1736 amd_gcn_shader: self.amd_gcn_shader || other.amd_gcn_shader, 1737 amd_gpu_shader_half_float: self.amd_gpu_shader_half_float 1738 || other.amd_gpu_shader_half_float, 1739 amd_gpu_shader_int16: self.amd_gpu_shader_int16 || other.amd_gpu_shader_int16, 1740 amd_memory_overallocation_behavior: self.amd_memory_overallocation_behavior 1741 || other.amd_memory_overallocation_behavior, 1742 amd_mixed_attachment_samples: self.amd_mixed_attachment_samples 1743 || other.amd_mixed_attachment_samples, 1744 amd_pipeline_compiler_control: self.amd_pipeline_compiler_control 1745 || other.amd_pipeline_compiler_control, 1746 amd_rasterization_order: self.amd_rasterization_order || other.amd_rasterization_order, 1747 amd_shader_ballot: self.amd_shader_ballot || other.amd_shader_ballot, 1748 amd_shader_core_properties: self.amd_shader_core_properties 1749 || other.amd_shader_core_properties, 1750 amd_shader_core_properties2: self.amd_shader_core_properties2 1751 || other.amd_shader_core_properties2, 1752 amd_shader_early_and_late_fragment_tests: self.amd_shader_early_and_late_fragment_tests 1753 || other.amd_shader_early_and_late_fragment_tests, 1754 amd_shader_explicit_vertex_parameter: self.amd_shader_explicit_vertex_parameter 1755 || other.amd_shader_explicit_vertex_parameter, 1756 amd_shader_fragment_mask: self.amd_shader_fragment_mask 1757 || other.amd_shader_fragment_mask, 1758 amd_shader_image_load_store_lod: self.amd_shader_image_load_store_lod 1759 || other.amd_shader_image_load_store_lod, 1760 amd_shader_info: self.amd_shader_info || other.amd_shader_info, 1761 amd_shader_trinary_minmax: self.amd_shader_trinary_minmax 1762 || other.amd_shader_trinary_minmax, 1763 amd_texture_gather_bias_lod: self.amd_texture_gather_bias_lod 1764 || other.amd_texture_gather_bias_lod, 1765 android_external_memory_android_hardware_buffer: self 1766 .android_external_memory_android_hardware_buffer 1767 || other.android_external_memory_android_hardware_buffer, 1768 arm_rasterization_order_attachment_access: self 1769 .arm_rasterization_order_attachment_access 1770 || other.arm_rasterization_order_attachment_access, 1771 arm_shader_core_builtins: self.arm_shader_core_builtins 1772 || other.arm_shader_core_builtins, 1773 fuchsia_buffer_collection: self.fuchsia_buffer_collection 1774 || other.fuchsia_buffer_collection, 1775 fuchsia_external_memory: self.fuchsia_external_memory || other.fuchsia_external_memory, 1776 fuchsia_external_semaphore: self.fuchsia_external_semaphore 1777 || other.fuchsia_external_semaphore, 1778 ggp_frame_token: self.ggp_frame_token || other.ggp_frame_token, 1779 google_decorate_string: self.google_decorate_string || other.google_decorate_string, 1780 google_display_timing: self.google_display_timing || other.google_display_timing, 1781 google_hlsl_functionality1: self.google_hlsl_functionality1 1782 || other.google_hlsl_functionality1, 1783 google_user_type: self.google_user_type || other.google_user_type, 1784 huawei_invocation_mask: self.huawei_invocation_mask || other.huawei_invocation_mask, 1785 huawei_subpass_shading: self.huawei_subpass_shading || other.huawei_subpass_shading, 1786 img_filter_cubic: self.img_filter_cubic || other.img_filter_cubic, 1787 img_format_pvrtc: self.img_format_pvrtc || other.img_format_pvrtc, 1788 intel_performance_query: self.intel_performance_query || other.intel_performance_query, 1789 intel_shader_integer_functions2: self.intel_shader_integer_functions2 1790 || other.intel_shader_integer_functions2, 1791 nvx_binary_import: self.nvx_binary_import || other.nvx_binary_import, 1792 nvx_image_view_handle: self.nvx_image_view_handle || other.nvx_image_view_handle, 1793 nvx_multiview_per_view_attributes: self.nvx_multiview_per_view_attributes 1794 || other.nvx_multiview_per_view_attributes, 1795 nv_acquire_winrt_display: self.nv_acquire_winrt_display 1796 || other.nv_acquire_winrt_display, 1797 nv_clip_space_w_scaling: self.nv_clip_space_w_scaling || other.nv_clip_space_w_scaling, 1798 nv_compute_shader_derivatives: self.nv_compute_shader_derivatives 1799 || other.nv_compute_shader_derivatives, 1800 nv_cooperative_matrix: self.nv_cooperative_matrix || other.nv_cooperative_matrix, 1801 nv_copy_memory_indirect: self.nv_copy_memory_indirect || other.nv_copy_memory_indirect, 1802 nv_corner_sampled_image: self.nv_corner_sampled_image || other.nv_corner_sampled_image, 1803 nv_coverage_reduction_mode: self.nv_coverage_reduction_mode 1804 || other.nv_coverage_reduction_mode, 1805 nv_dedicated_allocation: self.nv_dedicated_allocation || other.nv_dedicated_allocation, 1806 nv_dedicated_allocation_image_aliasing: self.nv_dedicated_allocation_image_aliasing 1807 || other.nv_dedicated_allocation_image_aliasing, 1808 nv_device_diagnostic_checkpoints: self.nv_device_diagnostic_checkpoints 1809 || other.nv_device_diagnostic_checkpoints, 1810 nv_device_diagnostics_config: self.nv_device_diagnostics_config 1811 || other.nv_device_diagnostics_config, 1812 nv_device_generated_commands: self.nv_device_generated_commands 1813 || other.nv_device_generated_commands, 1814 nv_external_memory: self.nv_external_memory || other.nv_external_memory, 1815 nv_external_memory_rdma: self.nv_external_memory_rdma || other.nv_external_memory_rdma, 1816 nv_external_memory_win32: self.nv_external_memory_win32 1817 || other.nv_external_memory_win32, 1818 nv_fill_rectangle: self.nv_fill_rectangle || other.nv_fill_rectangle, 1819 nv_fragment_coverage_to_color: self.nv_fragment_coverage_to_color 1820 || other.nv_fragment_coverage_to_color, 1821 nv_fragment_shader_barycentric: self.nv_fragment_shader_barycentric 1822 || other.nv_fragment_shader_barycentric, 1823 nv_fragment_shading_rate_enums: self.nv_fragment_shading_rate_enums 1824 || other.nv_fragment_shading_rate_enums, 1825 nv_framebuffer_mixed_samples: self.nv_framebuffer_mixed_samples 1826 || other.nv_framebuffer_mixed_samples, 1827 nv_geometry_shader_passthrough: self.nv_geometry_shader_passthrough 1828 || other.nv_geometry_shader_passthrough, 1829 nv_glsl_shader: self.nv_glsl_shader || other.nv_glsl_shader, 1830 nv_inherited_viewport_scissor: self.nv_inherited_viewport_scissor 1831 || other.nv_inherited_viewport_scissor, 1832 nv_linear_color_attachment: self.nv_linear_color_attachment 1833 || other.nv_linear_color_attachment, 1834 nv_memory_decompression: self.nv_memory_decompression || other.nv_memory_decompression, 1835 nv_mesh_shader: self.nv_mesh_shader || other.nv_mesh_shader, 1836 nv_optical_flow: self.nv_optical_flow || other.nv_optical_flow, 1837 nv_present_barrier: self.nv_present_barrier || other.nv_present_barrier, 1838 nv_ray_tracing: self.nv_ray_tracing || other.nv_ray_tracing, 1839 nv_ray_tracing_invocation_reorder: self.nv_ray_tracing_invocation_reorder 1840 || other.nv_ray_tracing_invocation_reorder, 1841 nv_ray_tracing_motion_blur: self.nv_ray_tracing_motion_blur 1842 || other.nv_ray_tracing_motion_blur, 1843 nv_representative_fragment_test: self.nv_representative_fragment_test 1844 || other.nv_representative_fragment_test, 1845 nv_sample_mask_override_coverage: self.nv_sample_mask_override_coverage 1846 || other.nv_sample_mask_override_coverage, 1847 nv_scissor_exclusive: self.nv_scissor_exclusive || other.nv_scissor_exclusive, 1848 nv_shader_image_footprint: self.nv_shader_image_footprint 1849 || other.nv_shader_image_footprint, 1850 nv_shader_sm_builtins: self.nv_shader_sm_builtins || other.nv_shader_sm_builtins, 1851 nv_shader_subgroup_partitioned: self.nv_shader_subgroup_partitioned 1852 || other.nv_shader_subgroup_partitioned, 1853 nv_shading_rate_image: self.nv_shading_rate_image || other.nv_shading_rate_image, 1854 nv_viewport_array2: self.nv_viewport_array2 || other.nv_viewport_array2, 1855 nv_viewport_swizzle: self.nv_viewport_swizzle || other.nv_viewport_swizzle, 1856 nv_win32_keyed_mutex: self.nv_win32_keyed_mutex || other.nv_win32_keyed_mutex, 1857 qcom_fragment_density_map_offset: self.qcom_fragment_density_map_offset 1858 || other.qcom_fragment_density_map_offset, 1859 qcom_image_processing: self.qcom_image_processing || other.qcom_image_processing, 1860 qcom_multiview_per_view_viewports: self.qcom_multiview_per_view_viewports 1861 || other.qcom_multiview_per_view_viewports, 1862 qcom_render_pass_shader_resolve: self.qcom_render_pass_shader_resolve 1863 || other.qcom_render_pass_shader_resolve, 1864 qcom_render_pass_store_ops: self.qcom_render_pass_store_ops 1865 || other.qcom_render_pass_store_ops, 1866 qcom_render_pass_transform: self.qcom_render_pass_transform 1867 || other.qcom_render_pass_transform, 1868 qcom_rotated_copy_commands: self.qcom_rotated_copy_commands 1869 || other.qcom_rotated_copy_commands, 1870 qcom_tile_properties: self.qcom_tile_properties || other.qcom_tile_properties, 1871 sec_amigo_profiling: self.sec_amigo_profiling || other.sec_amigo_profiling, 1872 valve_descriptor_set_host_mapping: self.valve_descriptor_set_host_mapping 1873 || other.valve_descriptor_set_host_mapping, 1874 valve_mutable_descriptor_type: self.valve_mutable_descriptor_type 1875 || other.valve_mutable_descriptor_type, 1876 _ne: crate::NonExhaustive(()), 1877 } 1878 } 1879 #[doc = r" Returns the intersection of `self` and `other`."] 1880 #[inline] intersection(&self, other: &Self) -> Self1881 pub const fn intersection(&self, other: &Self) -> Self { 1882 Self { 1883 khr_16bit_storage: self.khr_16bit_storage && other.khr_16bit_storage, 1884 khr_8bit_storage: self.khr_8bit_storage && other.khr_8bit_storage, 1885 khr_acceleration_structure: self.khr_acceleration_structure 1886 && other.khr_acceleration_structure, 1887 khr_bind_memory2: self.khr_bind_memory2 && other.khr_bind_memory2, 1888 khr_buffer_device_address: self.khr_buffer_device_address 1889 && other.khr_buffer_device_address, 1890 khr_copy_commands2: self.khr_copy_commands2 && other.khr_copy_commands2, 1891 khr_create_renderpass2: self.khr_create_renderpass2 && other.khr_create_renderpass2, 1892 khr_dedicated_allocation: self.khr_dedicated_allocation 1893 && other.khr_dedicated_allocation, 1894 khr_deferred_host_operations: self.khr_deferred_host_operations 1895 && other.khr_deferred_host_operations, 1896 khr_depth_stencil_resolve: self.khr_depth_stencil_resolve 1897 && other.khr_depth_stencil_resolve, 1898 khr_descriptor_update_template: self.khr_descriptor_update_template 1899 && other.khr_descriptor_update_template, 1900 khr_device_group: self.khr_device_group && other.khr_device_group, 1901 khr_display_swapchain: self.khr_display_swapchain && other.khr_display_swapchain, 1902 khr_draw_indirect_count: self.khr_draw_indirect_count && other.khr_draw_indirect_count, 1903 khr_driver_properties: self.khr_driver_properties && other.khr_driver_properties, 1904 khr_dynamic_rendering: self.khr_dynamic_rendering && other.khr_dynamic_rendering, 1905 khr_external_fence: self.khr_external_fence && other.khr_external_fence, 1906 khr_external_fence_fd: self.khr_external_fence_fd && other.khr_external_fence_fd, 1907 khr_external_fence_win32: self.khr_external_fence_win32 1908 && other.khr_external_fence_win32, 1909 khr_external_memory: self.khr_external_memory && other.khr_external_memory, 1910 khr_external_memory_fd: self.khr_external_memory_fd && other.khr_external_memory_fd, 1911 khr_external_memory_win32: self.khr_external_memory_win32 1912 && other.khr_external_memory_win32, 1913 khr_external_semaphore: self.khr_external_semaphore && other.khr_external_semaphore, 1914 khr_external_semaphore_fd: self.khr_external_semaphore_fd 1915 && other.khr_external_semaphore_fd, 1916 khr_external_semaphore_win32: self.khr_external_semaphore_win32 1917 && other.khr_external_semaphore_win32, 1918 khr_format_feature_flags2: self.khr_format_feature_flags2 1919 && other.khr_format_feature_flags2, 1920 khr_fragment_shader_barycentric: self.khr_fragment_shader_barycentric 1921 && other.khr_fragment_shader_barycentric, 1922 khr_fragment_shading_rate: self.khr_fragment_shading_rate 1923 && other.khr_fragment_shading_rate, 1924 khr_get_memory_requirements2: self.khr_get_memory_requirements2 1925 && other.khr_get_memory_requirements2, 1926 khr_global_priority: self.khr_global_priority && other.khr_global_priority, 1927 khr_image_format_list: self.khr_image_format_list && other.khr_image_format_list, 1928 khr_imageless_framebuffer: self.khr_imageless_framebuffer 1929 && other.khr_imageless_framebuffer, 1930 khr_incremental_present: self.khr_incremental_present && other.khr_incremental_present, 1931 khr_maintenance1: self.khr_maintenance1 && other.khr_maintenance1, 1932 khr_maintenance2: self.khr_maintenance2 && other.khr_maintenance2, 1933 khr_maintenance3: self.khr_maintenance3 && other.khr_maintenance3, 1934 khr_maintenance4: self.khr_maintenance4 && other.khr_maintenance4, 1935 khr_multiview: self.khr_multiview && other.khr_multiview, 1936 khr_performance_query: self.khr_performance_query && other.khr_performance_query, 1937 khr_pipeline_executable_properties: self.khr_pipeline_executable_properties 1938 && other.khr_pipeline_executable_properties, 1939 khr_pipeline_library: self.khr_pipeline_library && other.khr_pipeline_library, 1940 khr_portability_subset: self.khr_portability_subset && other.khr_portability_subset, 1941 khr_present_id: self.khr_present_id && other.khr_present_id, 1942 khr_present_wait: self.khr_present_wait && other.khr_present_wait, 1943 khr_push_descriptor: self.khr_push_descriptor && other.khr_push_descriptor, 1944 khr_ray_query: self.khr_ray_query && other.khr_ray_query, 1945 khr_ray_tracing_maintenance1: self.khr_ray_tracing_maintenance1 1946 && other.khr_ray_tracing_maintenance1, 1947 khr_ray_tracing_pipeline: self.khr_ray_tracing_pipeline 1948 && other.khr_ray_tracing_pipeline, 1949 khr_relaxed_block_layout: self.khr_relaxed_block_layout 1950 && other.khr_relaxed_block_layout, 1951 khr_sampler_mirror_clamp_to_edge: self.khr_sampler_mirror_clamp_to_edge 1952 && other.khr_sampler_mirror_clamp_to_edge, 1953 khr_sampler_ycbcr_conversion: self.khr_sampler_ycbcr_conversion 1954 && other.khr_sampler_ycbcr_conversion, 1955 khr_separate_depth_stencil_layouts: self.khr_separate_depth_stencil_layouts 1956 && other.khr_separate_depth_stencil_layouts, 1957 khr_shader_atomic_int64: self.khr_shader_atomic_int64 && other.khr_shader_atomic_int64, 1958 khr_shader_clock: self.khr_shader_clock && other.khr_shader_clock, 1959 khr_shader_draw_parameters: self.khr_shader_draw_parameters 1960 && other.khr_shader_draw_parameters, 1961 khr_shader_float16_int8: self.khr_shader_float16_int8 && other.khr_shader_float16_int8, 1962 khr_shader_float_controls: self.khr_shader_float_controls 1963 && other.khr_shader_float_controls, 1964 khr_shader_integer_dot_product: self.khr_shader_integer_dot_product 1965 && other.khr_shader_integer_dot_product, 1966 khr_shader_non_semantic_info: self.khr_shader_non_semantic_info 1967 && other.khr_shader_non_semantic_info, 1968 khr_shader_subgroup_extended_types: self.khr_shader_subgroup_extended_types 1969 && other.khr_shader_subgroup_extended_types, 1970 khr_shader_subgroup_uniform_control_flow: self.khr_shader_subgroup_uniform_control_flow 1971 && other.khr_shader_subgroup_uniform_control_flow, 1972 khr_shader_terminate_invocation: self.khr_shader_terminate_invocation 1973 && other.khr_shader_terminate_invocation, 1974 khr_shared_presentable_image: self.khr_shared_presentable_image 1975 && other.khr_shared_presentable_image, 1976 khr_spirv_1_4: self.khr_spirv_1_4 && other.khr_spirv_1_4, 1977 khr_storage_buffer_storage_class: self.khr_storage_buffer_storage_class 1978 && other.khr_storage_buffer_storage_class, 1979 khr_swapchain: self.khr_swapchain && other.khr_swapchain, 1980 khr_swapchain_mutable_format: self.khr_swapchain_mutable_format 1981 && other.khr_swapchain_mutable_format, 1982 khr_synchronization2: self.khr_synchronization2 && other.khr_synchronization2, 1983 khr_timeline_semaphore: self.khr_timeline_semaphore && other.khr_timeline_semaphore, 1984 khr_uniform_buffer_standard_layout: self.khr_uniform_buffer_standard_layout 1985 && other.khr_uniform_buffer_standard_layout, 1986 khr_variable_pointers: self.khr_variable_pointers && other.khr_variable_pointers, 1987 khr_video_decode_h264: self.khr_video_decode_h264 && other.khr_video_decode_h264, 1988 khr_video_decode_h265: self.khr_video_decode_h265 && other.khr_video_decode_h265, 1989 khr_video_decode_queue: self.khr_video_decode_queue && other.khr_video_decode_queue, 1990 khr_video_encode_queue: self.khr_video_encode_queue && other.khr_video_encode_queue, 1991 khr_video_queue: self.khr_video_queue && other.khr_video_queue, 1992 khr_vulkan_memory_model: self.khr_vulkan_memory_model && other.khr_vulkan_memory_model, 1993 khr_win32_keyed_mutex: self.khr_win32_keyed_mutex && other.khr_win32_keyed_mutex, 1994 khr_workgroup_memory_explicit_layout: self.khr_workgroup_memory_explicit_layout 1995 && other.khr_workgroup_memory_explicit_layout, 1996 khr_zero_initialize_workgroup_memory: self.khr_zero_initialize_workgroup_memory 1997 && other.khr_zero_initialize_workgroup_memory, 1998 ext_4444_formats: self.ext_4444_formats && other.ext_4444_formats, 1999 ext_astc_decode_mode: self.ext_astc_decode_mode && other.ext_astc_decode_mode, 2000 ext_attachment_feedback_loop_layout: self.ext_attachment_feedback_loop_layout 2001 && other.ext_attachment_feedback_loop_layout, 2002 ext_blend_operation_advanced: self.ext_blend_operation_advanced 2003 && other.ext_blend_operation_advanced, 2004 ext_border_color_swizzle: self.ext_border_color_swizzle 2005 && other.ext_border_color_swizzle, 2006 ext_buffer_device_address: self.ext_buffer_device_address 2007 && other.ext_buffer_device_address, 2008 ext_calibrated_timestamps: self.ext_calibrated_timestamps 2009 && other.ext_calibrated_timestamps, 2010 ext_color_write_enable: self.ext_color_write_enable && other.ext_color_write_enable, 2011 ext_conditional_rendering: self.ext_conditional_rendering 2012 && other.ext_conditional_rendering, 2013 ext_conservative_rasterization: self.ext_conservative_rasterization 2014 && other.ext_conservative_rasterization, 2015 ext_custom_border_color: self.ext_custom_border_color && other.ext_custom_border_color, 2016 ext_debug_marker: self.ext_debug_marker && other.ext_debug_marker, 2017 ext_depth_clamp_zero_one: self.ext_depth_clamp_zero_one 2018 && other.ext_depth_clamp_zero_one, 2019 ext_depth_clip_control: self.ext_depth_clip_control && other.ext_depth_clip_control, 2020 ext_depth_clip_enable: self.ext_depth_clip_enable && other.ext_depth_clip_enable, 2021 ext_depth_range_unrestricted: self.ext_depth_range_unrestricted 2022 && other.ext_depth_range_unrestricted, 2023 ext_descriptor_buffer: self.ext_descriptor_buffer && other.ext_descriptor_buffer, 2024 ext_descriptor_indexing: self.ext_descriptor_indexing && other.ext_descriptor_indexing, 2025 ext_device_address_binding_report: self.ext_device_address_binding_report 2026 && other.ext_device_address_binding_report, 2027 ext_device_fault: self.ext_device_fault && other.ext_device_fault, 2028 ext_device_memory_report: self.ext_device_memory_report 2029 && other.ext_device_memory_report, 2030 ext_discard_rectangles: self.ext_discard_rectangles && other.ext_discard_rectangles, 2031 ext_display_control: self.ext_display_control && other.ext_display_control, 2032 ext_extended_dynamic_state: self.ext_extended_dynamic_state 2033 && other.ext_extended_dynamic_state, 2034 ext_extended_dynamic_state2: self.ext_extended_dynamic_state2 2035 && other.ext_extended_dynamic_state2, 2036 ext_extended_dynamic_state3: self.ext_extended_dynamic_state3 2037 && other.ext_extended_dynamic_state3, 2038 ext_external_memory_dma_buf: self.ext_external_memory_dma_buf 2039 && other.ext_external_memory_dma_buf, 2040 ext_external_memory_host: self.ext_external_memory_host 2041 && other.ext_external_memory_host, 2042 ext_filter_cubic: self.ext_filter_cubic && other.ext_filter_cubic, 2043 ext_fragment_density_map: self.ext_fragment_density_map 2044 && other.ext_fragment_density_map, 2045 ext_fragment_density_map2: self.ext_fragment_density_map2 2046 && other.ext_fragment_density_map2, 2047 ext_fragment_shader_interlock: self.ext_fragment_shader_interlock 2048 && other.ext_fragment_shader_interlock, 2049 ext_full_screen_exclusive: self.ext_full_screen_exclusive 2050 && other.ext_full_screen_exclusive, 2051 ext_global_priority: self.ext_global_priority && other.ext_global_priority, 2052 ext_global_priority_query: self.ext_global_priority_query 2053 && other.ext_global_priority_query, 2054 ext_graphics_pipeline_library: self.ext_graphics_pipeline_library 2055 && other.ext_graphics_pipeline_library, 2056 ext_hdr_metadata: self.ext_hdr_metadata && other.ext_hdr_metadata, 2057 ext_host_query_reset: self.ext_host_query_reset && other.ext_host_query_reset, 2058 ext_image_2d_view_of_3d: self.ext_image_2d_view_of_3d && other.ext_image_2d_view_of_3d, 2059 ext_image_compression_control: self.ext_image_compression_control 2060 && other.ext_image_compression_control, 2061 ext_image_compression_control_swapchain: self.ext_image_compression_control_swapchain 2062 && other.ext_image_compression_control_swapchain, 2063 ext_image_drm_format_modifier: self.ext_image_drm_format_modifier 2064 && other.ext_image_drm_format_modifier, 2065 ext_image_robustness: self.ext_image_robustness && other.ext_image_robustness, 2066 ext_image_view_min_lod: self.ext_image_view_min_lod && other.ext_image_view_min_lod, 2067 ext_index_type_uint8: self.ext_index_type_uint8 && other.ext_index_type_uint8, 2068 ext_inline_uniform_block: self.ext_inline_uniform_block 2069 && other.ext_inline_uniform_block, 2070 ext_legacy_dithering: self.ext_legacy_dithering && other.ext_legacy_dithering, 2071 ext_line_rasterization: self.ext_line_rasterization && other.ext_line_rasterization, 2072 ext_load_store_op_none: self.ext_load_store_op_none && other.ext_load_store_op_none, 2073 ext_memory_budget: self.ext_memory_budget && other.ext_memory_budget, 2074 ext_memory_priority: self.ext_memory_priority && other.ext_memory_priority, 2075 ext_mesh_shader: self.ext_mesh_shader && other.ext_mesh_shader, 2076 ext_metal_objects: self.ext_metal_objects && other.ext_metal_objects, 2077 ext_multi_draw: self.ext_multi_draw && other.ext_multi_draw, 2078 ext_multisampled_render_to_single_sampled: self 2079 .ext_multisampled_render_to_single_sampled 2080 && other.ext_multisampled_render_to_single_sampled, 2081 ext_mutable_descriptor_type: self.ext_mutable_descriptor_type 2082 && other.ext_mutable_descriptor_type, 2083 ext_non_seamless_cube_map: self.ext_non_seamless_cube_map 2084 && other.ext_non_seamless_cube_map, 2085 ext_opacity_micromap: self.ext_opacity_micromap && other.ext_opacity_micromap, 2086 ext_pageable_device_local_memory: self.ext_pageable_device_local_memory 2087 && other.ext_pageable_device_local_memory, 2088 ext_pci_bus_info: self.ext_pci_bus_info && other.ext_pci_bus_info, 2089 ext_physical_device_drm: self.ext_physical_device_drm && other.ext_physical_device_drm, 2090 ext_pipeline_creation_cache_control: self.ext_pipeline_creation_cache_control 2091 && other.ext_pipeline_creation_cache_control, 2092 ext_pipeline_creation_feedback: self.ext_pipeline_creation_feedback 2093 && other.ext_pipeline_creation_feedback, 2094 ext_pipeline_properties: self.ext_pipeline_properties && other.ext_pipeline_properties, 2095 ext_pipeline_protected_access: self.ext_pipeline_protected_access 2096 && other.ext_pipeline_protected_access, 2097 ext_pipeline_robustness: self.ext_pipeline_robustness && other.ext_pipeline_robustness, 2098 ext_post_depth_coverage: self.ext_post_depth_coverage && other.ext_post_depth_coverage, 2099 ext_primitive_topology_list_restart: self.ext_primitive_topology_list_restart 2100 && other.ext_primitive_topology_list_restart, 2101 ext_primitives_generated_query: self.ext_primitives_generated_query 2102 && other.ext_primitives_generated_query, 2103 ext_private_data: self.ext_private_data && other.ext_private_data, 2104 ext_provoking_vertex: self.ext_provoking_vertex && other.ext_provoking_vertex, 2105 ext_queue_family_foreign: self.ext_queue_family_foreign 2106 && other.ext_queue_family_foreign, 2107 ext_rasterization_order_attachment_access: self 2108 .ext_rasterization_order_attachment_access 2109 && other.ext_rasterization_order_attachment_access, 2110 ext_rgba10x6_formats: self.ext_rgba10x6_formats && other.ext_rgba10x6_formats, 2111 ext_robustness2: self.ext_robustness2 && other.ext_robustness2, 2112 ext_sample_locations: self.ext_sample_locations && other.ext_sample_locations, 2113 ext_sampler_filter_minmax: self.ext_sampler_filter_minmax 2114 && other.ext_sampler_filter_minmax, 2115 ext_scalar_block_layout: self.ext_scalar_block_layout && other.ext_scalar_block_layout, 2116 ext_separate_stencil_usage: self.ext_separate_stencil_usage 2117 && other.ext_separate_stencil_usage, 2118 ext_shader_atomic_float: self.ext_shader_atomic_float && other.ext_shader_atomic_float, 2119 ext_shader_atomic_float2: self.ext_shader_atomic_float2 2120 && other.ext_shader_atomic_float2, 2121 ext_shader_demote_to_helper_invocation: self.ext_shader_demote_to_helper_invocation 2122 && other.ext_shader_demote_to_helper_invocation, 2123 ext_shader_image_atomic_int64: self.ext_shader_image_atomic_int64 2124 && other.ext_shader_image_atomic_int64, 2125 ext_shader_module_identifier: self.ext_shader_module_identifier 2126 && other.ext_shader_module_identifier, 2127 ext_shader_stencil_export: self.ext_shader_stencil_export 2128 && other.ext_shader_stencil_export, 2129 ext_shader_subgroup_ballot: self.ext_shader_subgroup_ballot 2130 && other.ext_shader_subgroup_ballot, 2131 ext_shader_subgroup_vote: self.ext_shader_subgroup_vote 2132 && other.ext_shader_subgroup_vote, 2133 ext_shader_viewport_index_layer: self.ext_shader_viewport_index_layer 2134 && other.ext_shader_viewport_index_layer, 2135 ext_subgroup_size_control: self.ext_subgroup_size_control 2136 && other.ext_subgroup_size_control, 2137 ext_subpass_merge_feedback: self.ext_subpass_merge_feedback 2138 && other.ext_subpass_merge_feedback, 2139 ext_swapchain_maintenance1: self.ext_swapchain_maintenance1 2140 && other.ext_swapchain_maintenance1, 2141 ext_texel_buffer_alignment: self.ext_texel_buffer_alignment 2142 && other.ext_texel_buffer_alignment, 2143 ext_texture_compression_astc_hdr: self.ext_texture_compression_astc_hdr 2144 && other.ext_texture_compression_astc_hdr, 2145 ext_tooling_info: self.ext_tooling_info && other.ext_tooling_info, 2146 ext_transform_feedback: self.ext_transform_feedback && other.ext_transform_feedback, 2147 ext_validation_cache: self.ext_validation_cache && other.ext_validation_cache, 2148 ext_vertex_attribute_divisor: self.ext_vertex_attribute_divisor 2149 && other.ext_vertex_attribute_divisor, 2150 ext_vertex_input_dynamic_state: self.ext_vertex_input_dynamic_state 2151 && other.ext_vertex_input_dynamic_state, 2152 ext_video_encode_h264: self.ext_video_encode_h264 && other.ext_video_encode_h264, 2153 ext_video_encode_h265: self.ext_video_encode_h265 && other.ext_video_encode_h265, 2154 ext_ycbcr_2plane_444_formats: self.ext_ycbcr_2plane_444_formats 2155 && other.ext_ycbcr_2plane_444_formats, 2156 ext_ycbcr_image_arrays: self.ext_ycbcr_image_arrays && other.ext_ycbcr_image_arrays, 2157 amd_buffer_marker: self.amd_buffer_marker && other.amd_buffer_marker, 2158 amd_device_coherent_memory: self.amd_device_coherent_memory 2159 && other.amd_device_coherent_memory, 2160 amd_display_native_hdr: self.amd_display_native_hdr && other.amd_display_native_hdr, 2161 amd_draw_indirect_count: self.amd_draw_indirect_count && other.amd_draw_indirect_count, 2162 amd_gcn_shader: self.amd_gcn_shader && other.amd_gcn_shader, 2163 amd_gpu_shader_half_float: self.amd_gpu_shader_half_float 2164 && other.amd_gpu_shader_half_float, 2165 amd_gpu_shader_int16: self.amd_gpu_shader_int16 && other.amd_gpu_shader_int16, 2166 amd_memory_overallocation_behavior: self.amd_memory_overallocation_behavior 2167 && other.amd_memory_overallocation_behavior, 2168 amd_mixed_attachment_samples: self.amd_mixed_attachment_samples 2169 && other.amd_mixed_attachment_samples, 2170 amd_pipeline_compiler_control: self.amd_pipeline_compiler_control 2171 && other.amd_pipeline_compiler_control, 2172 amd_rasterization_order: self.amd_rasterization_order && other.amd_rasterization_order, 2173 amd_shader_ballot: self.amd_shader_ballot && other.amd_shader_ballot, 2174 amd_shader_core_properties: self.amd_shader_core_properties 2175 && other.amd_shader_core_properties, 2176 amd_shader_core_properties2: self.amd_shader_core_properties2 2177 && other.amd_shader_core_properties2, 2178 amd_shader_early_and_late_fragment_tests: self.amd_shader_early_and_late_fragment_tests 2179 && other.amd_shader_early_and_late_fragment_tests, 2180 amd_shader_explicit_vertex_parameter: self.amd_shader_explicit_vertex_parameter 2181 && other.amd_shader_explicit_vertex_parameter, 2182 amd_shader_fragment_mask: self.amd_shader_fragment_mask 2183 && other.amd_shader_fragment_mask, 2184 amd_shader_image_load_store_lod: self.amd_shader_image_load_store_lod 2185 && other.amd_shader_image_load_store_lod, 2186 amd_shader_info: self.amd_shader_info && other.amd_shader_info, 2187 amd_shader_trinary_minmax: self.amd_shader_trinary_minmax 2188 && other.amd_shader_trinary_minmax, 2189 amd_texture_gather_bias_lod: self.amd_texture_gather_bias_lod 2190 && other.amd_texture_gather_bias_lod, 2191 android_external_memory_android_hardware_buffer: self 2192 .android_external_memory_android_hardware_buffer 2193 && other.android_external_memory_android_hardware_buffer, 2194 arm_rasterization_order_attachment_access: self 2195 .arm_rasterization_order_attachment_access 2196 && other.arm_rasterization_order_attachment_access, 2197 arm_shader_core_builtins: self.arm_shader_core_builtins 2198 && other.arm_shader_core_builtins, 2199 fuchsia_buffer_collection: self.fuchsia_buffer_collection 2200 && other.fuchsia_buffer_collection, 2201 fuchsia_external_memory: self.fuchsia_external_memory && other.fuchsia_external_memory, 2202 fuchsia_external_semaphore: self.fuchsia_external_semaphore 2203 && other.fuchsia_external_semaphore, 2204 ggp_frame_token: self.ggp_frame_token && other.ggp_frame_token, 2205 google_decorate_string: self.google_decorate_string && other.google_decorate_string, 2206 google_display_timing: self.google_display_timing && other.google_display_timing, 2207 google_hlsl_functionality1: self.google_hlsl_functionality1 2208 && other.google_hlsl_functionality1, 2209 google_user_type: self.google_user_type && other.google_user_type, 2210 huawei_invocation_mask: self.huawei_invocation_mask && other.huawei_invocation_mask, 2211 huawei_subpass_shading: self.huawei_subpass_shading && other.huawei_subpass_shading, 2212 img_filter_cubic: self.img_filter_cubic && other.img_filter_cubic, 2213 img_format_pvrtc: self.img_format_pvrtc && other.img_format_pvrtc, 2214 intel_performance_query: self.intel_performance_query && other.intel_performance_query, 2215 intel_shader_integer_functions2: self.intel_shader_integer_functions2 2216 && other.intel_shader_integer_functions2, 2217 nvx_binary_import: self.nvx_binary_import && other.nvx_binary_import, 2218 nvx_image_view_handle: self.nvx_image_view_handle && other.nvx_image_view_handle, 2219 nvx_multiview_per_view_attributes: self.nvx_multiview_per_view_attributes 2220 && other.nvx_multiview_per_view_attributes, 2221 nv_acquire_winrt_display: self.nv_acquire_winrt_display 2222 && other.nv_acquire_winrt_display, 2223 nv_clip_space_w_scaling: self.nv_clip_space_w_scaling && other.nv_clip_space_w_scaling, 2224 nv_compute_shader_derivatives: self.nv_compute_shader_derivatives 2225 && other.nv_compute_shader_derivatives, 2226 nv_cooperative_matrix: self.nv_cooperative_matrix && other.nv_cooperative_matrix, 2227 nv_copy_memory_indirect: self.nv_copy_memory_indirect && other.nv_copy_memory_indirect, 2228 nv_corner_sampled_image: self.nv_corner_sampled_image && other.nv_corner_sampled_image, 2229 nv_coverage_reduction_mode: self.nv_coverage_reduction_mode 2230 && other.nv_coverage_reduction_mode, 2231 nv_dedicated_allocation: self.nv_dedicated_allocation && other.nv_dedicated_allocation, 2232 nv_dedicated_allocation_image_aliasing: self.nv_dedicated_allocation_image_aliasing 2233 && other.nv_dedicated_allocation_image_aliasing, 2234 nv_device_diagnostic_checkpoints: self.nv_device_diagnostic_checkpoints 2235 && other.nv_device_diagnostic_checkpoints, 2236 nv_device_diagnostics_config: self.nv_device_diagnostics_config 2237 && other.nv_device_diagnostics_config, 2238 nv_device_generated_commands: self.nv_device_generated_commands 2239 && other.nv_device_generated_commands, 2240 nv_external_memory: self.nv_external_memory && other.nv_external_memory, 2241 nv_external_memory_rdma: self.nv_external_memory_rdma && other.nv_external_memory_rdma, 2242 nv_external_memory_win32: self.nv_external_memory_win32 2243 && other.nv_external_memory_win32, 2244 nv_fill_rectangle: self.nv_fill_rectangle && other.nv_fill_rectangle, 2245 nv_fragment_coverage_to_color: self.nv_fragment_coverage_to_color 2246 && other.nv_fragment_coverage_to_color, 2247 nv_fragment_shader_barycentric: self.nv_fragment_shader_barycentric 2248 && other.nv_fragment_shader_barycentric, 2249 nv_fragment_shading_rate_enums: self.nv_fragment_shading_rate_enums 2250 && other.nv_fragment_shading_rate_enums, 2251 nv_framebuffer_mixed_samples: self.nv_framebuffer_mixed_samples 2252 && other.nv_framebuffer_mixed_samples, 2253 nv_geometry_shader_passthrough: self.nv_geometry_shader_passthrough 2254 && other.nv_geometry_shader_passthrough, 2255 nv_glsl_shader: self.nv_glsl_shader && other.nv_glsl_shader, 2256 nv_inherited_viewport_scissor: self.nv_inherited_viewport_scissor 2257 && other.nv_inherited_viewport_scissor, 2258 nv_linear_color_attachment: self.nv_linear_color_attachment 2259 && other.nv_linear_color_attachment, 2260 nv_memory_decompression: self.nv_memory_decompression && other.nv_memory_decompression, 2261 nv_mesh_shader: self.nv_mesh_shader && other.nv_mesh_shader, 2262 nv_optical_flow: self.nv_optical_flow && other.nv_optical_flow, 2263 nv_present_barrier: self.nv_present_barrier && other.nv_present_barrier, 2264 nv_ray_tracing: self.nv_ray_tracing && other.nv_ray_tracing, 2265 nv_ray_tracing_invocation_reorder: self.nv_ray_tracing_invocation_reorder 2266 && other.nv_ray_tracing_invocation_reorder, 2267 nv_ray_tracing_motion_blur: self.nv_ray_tracing_motion_blur 2268 && other.nv_ray_tracing_motion_blur, 2269 nv_representative_fragment_test: self.nv_representative_fragment_test 2270 && other.nv_representative_fragment_test, 2271 nv_sample_mask_override_coverage: self.nv_sample_mask_override_coverage 2272 && other.nv_sample_mask_override_coverage, 2273 nv_scissor_exclusive: self.nv_scissor_exclusive && other.nv_scissor_exclusive, 2274 nv_shader_image_footprint: self.nv_shader_image_footprint 2275 && other.nv_shader_image_footprint, 2276 nv_shader_sm_builtins: self.nv_shader_sm_builtins && other.nv_shader_sm_builtins, 2277 nv_shader_subgroup_partitioned: self.nv_shader_subgroup_partitioned 2278 && other.nv_shader_subgroup_partitioned, 2279 nv_shading_rate_image: self.nv_shading_rate_image && other.nv_shading_rate_image, 2280 nv_viewport_array2: self.nv_viewport_array2 && other.nv_viewport_array2, 2281 nv_viewport_swizzle: self.nv_viewport_swizzle && other.nv_viewport_swizzle, 2282 nv_win32_keyed_mutex: self.nv_win32_keyed_mutex && other.nv_win32_keyed_mutex, 2283 qcom_fragment_density_map_offset: self.qcom_fragment_density_map_offset 2284 && other.qcom_fragment_density_map_offset, 2285 qcom_image_processing: self.qcom_image_processing && other.qcom_image_processing, 2286 qcom_multiview_per_view_viewports: self.qcom_multiview_per_view_viewports 2287 && other.qcom_multiview_per_view_viewports, 2288 qcom_render_pass_shader_resolve: self.qcom_render_pass_shader_resolve 2289 && other.qcom_render_pass_shader_resolve, 2290 qcom_render_pass_store_ops: self.qcom_render_pass_store_ops 2291 && other.qcom_render_pass_store_ops, 2292 qcom_render_pass_transform: self.qcom_render_pass_transform 2293 && other.qcom_render_pass_transform, 2294 qcom_rotated_copy_commands: self.qcom_rotated_copy_commands 2295 && other.qcom_rotated_copy_commands, 2296 qcom_tile_properties: self.qcom_tile_properties && other.qcom_tile_properties, 2297 sec_amigo_profiling: self.sec_amigo_profiling && other.sec_amigo_profiling, 2298 valve_descriptor_set_host_mapping: self.valve_descriptor_set_host_mapping 2299 && other.valve_descriptor_set_host_mapping, 2300 valve_mutable_descriptor_type: self.valve_mutable_descriptor_type 2301 && other.valve_mutable_descriptor_type, 2302 _ne: crate::NonExhaustive(()), 2303 } 2304 } 2305 #[doc = r" Returns `self` without the members set in `other`."] 2306 #[inline] difference(&self, other: &Self) -> Self2307 pub const fn difference(&self, other: &Self) -> Self { 2308 Self { 2309 khr_16bit_storage: self.khr_16bit_storage && !other.khr_16bit_storage, 2310 khr_8bit_storage: self.khr_8bit_storage && !other.khr_8bit_storage, 2311 khr_acceleration_structure: self.khr_acceleration_structure 2312 && !other.khr_acceleration_structure, 2313 khr_bind_memory2: self.khr_bind_memory2 && !other.khr_bind_memory2, 2314 khr_buffer_device_address: self.khr_buffer_device_address 2315 && !other.khr_buffer_device_address, 2316 khr_copy_commands2: self.khr_copy_commands2 && !other.khr_copy_commands2, 2317 khr_create_renderpass2: self.khr_create_renderpass2 && !other.khr_create_renderpass2, 2318 khr_dedicated_allocation: self.khr_dedicated_allocation 2319 && !other.khr_dedicated_allocation, 2320 khr_deferred_host_operations: self.khr_deferred_host_operations 2321 && !other.khr_deferred_host_operations, 2322 khr_depth_stencil_resolve: self.khr_depth_stencil_resolve 2323 && !other.khr_depth_stencil_resolve, 2324 khr_descriptor_update_template: self.khr_descriptor_update_template 2325 && !other.khr_descriptor_update_template, 2326 khr_device_group: self.khr_device_group && !other.khr_device_group, 2327 khr_display_swapchain: self.khr_display_swapchain && !other.khr_display_swapchain, 2328 khr_draw_indirect_count: self.khr_draw_indirect_count && !other.khr_draw_indirect_count, 2329 khr_driver_properties: self.khr_driver_properties && !other.khr_driver_properties, 2330 khr_dynamic_rendering: self.khr_dynamic_rendering && !other.khr_dynamic_rendering, 2331 khr_external_fence: self.khr_external_fence && !other.khr_external_fence, 2332 khr_external_fence_fd: self.khr_external_fence_fd && !other.khr_external_fence_fd, 2333 khr_external_fence_win32: self.khr_external_fence_win32 2334 && !other.khr_external_fence_win32, 2335 khr_external_memory: self.khr_external_memory && !other.khr_external_memory, 2336 khr_external_memory_fd: self.khr_external_memory_fd && !other.khr_external_memory_fd, 2337 khr_external_memory_win32: self.khr_external_memory_win32 2338 && !other.khr_external_memory_win32, 2339 khr_external_semaphore: self.khr_external_semaphore && !other.khr_external_semaphore, 2340 khr_external_semaphore_fd: self.khr_external_semaphore_fd 2341 && !other.khr_external_semaphore_fd, 2342 khr_external_semaphore_win32: self.khr_external_semaphore_win32 2343 && !other.khr_external_semaphore_win32, 2344 khr_format_feature_flags2: self.khr_format_feature_flags2 2345 && !other.khr_format_feature_flags2, 2346 khr_fragment_shader_barycentric: self.khr_fragment_shader_barycentric 2347 && !other.khr_fragment_shader_barycentric, 2348 khr_fragment_shading_rate: self.khr_fragment_shading_rate 2349 && !other.khr_fragment_shading_rate, 2350 khr_get_memory_requirements2: self.khr_get_memory_requirements2 2351 && !other.khr_get_memory_requirements2, 2352 khr_global_priority: self.khr_global_priority && !other.khr_global_priority, 2353 khr_image_format_list: self.khr_image_format_list && !other.khr_image_format_list, 2354 khr_imageless_framebuffer: self.khr_imageless_framebuffer 2355 && !other.khr_imageless_framebuffer, 2356 khr_incremental_present: self.khr_incremental_present && !other.khr_incremental_present, 2357 khr_maintenance1: self.khr_maintenance1 && !other.khr_maintenance1, 2358 khr_maintenance2: self.khr_maintenance2 && !other.khr_maintenance2, 2359 khr_maintenance3: self.khr_maintenance3 && !other.khr_maintenance3, 2360 khr_maintenance4: self.khr_maintenance4 && !other.khr_maintenance4, 2361 khr_multiview: self.khr_multiview && !other.khr_multiview, 2362 khr_performance_query: self.khr_performance_query && !other.khr_performance_query, 2363 khr_pipeline_executable_properties: self.khr_pipeline_executable_properties 2364 && !other.khr_pipeline_executable_properties, 2365 khr_pipeline_library: self.khr_pipeline_library && !other.khr_pipeline_library, 2366 khr_portability_subset: self.khr_portability_subset && !other.khr_portability_subset, 2367 khr_present_id: self.khr_present_id && !other.khr_present_id, 2368 khr_present_wait: self.khr_present_wait && !other.khr_present_wait, 2369 khr_push_descriptor: self.khr_push_descriptor && !other.khr_push_descriptor, 2370 khr_ray_query: self.khr_ray_query && !other.khr_ray_query, 2371 khr_ray_tracing_maintenance1: self.khr_ray_tracing_maintenance1 2372 && !other.khr_ray_tracing_maintenance1, 2373 khr_ray_tracing_pipeline: self.khr_ray_tracing_pipeline 2374 && !other.khr_ray_tracing_pipeline, 2375 khr_relaxed_block_layout: self.khr_relaxed_block_layout 2376 && !other.khr_relaxed_block_layout, 2377 khr_sampler_mirror_clamp_to_edge: self.khr_sampler_mirror_clamp_to_edge 2378 && !other.khr_sampler_mirror_clamp_to_edge, 2379 khr_sampler_ycbcr_conversion: self.khr_sampler_ycbcr_conversion 2380 && !other.khr_sampler_ycbcr_conversion, 2381 khr_separate_depth_stencil_layouts: self.khr_separate_depth_stencil_layouts 2382 && !other.khr_separate_depth_stencil_layouts, 2383 khr_shader_atomic_int64: self.khr_shader_atomic_int64 && !other.khr_shader_atomic_int64, 2384 khr_shader_clock: self.khr_shader_clock && !other.khr_shader_clock, 2385 khr_shader_draw_parameters: self.khr_shader_draw_parameters 2386 && !other.khr_shader_draw_parameters, 2387 khr_shader_float16_int8: self.khr_shader_float16_int8 && !other.khr_shader_float16_int8, 2388 khr_shader_float_controls: self.khr_shader_float_controls 2389 && !other.khr_shader_float_controls, 2390 khr_shader_integer_dot_product: self.khr_shader_integer_dot_product 2391 && !other.khr_shader_integer_dot_product, 2392 khr_shader_non_semantic_info: self.khr_shader_non_semantic_info 2393 && !other.khr_shader_non_semantic_info, 2394 khr_shader_subgroup_extended_types: self.khr_shader_subgroup_extended_types 2395 && !other.khr_shader_subgroup_extended_types, 2396 khr_shader_subgroup_uniform_control_flow: self.khr_shader_subgroup_uniform_control_flow 2397 && !other.khr_shader_subgroup_uniform_control_flow, 2398 khr_shader_terminate_invocation: self.khr_shader_terminate_invocation 2399 && !other.khr_shader_terminate_invocation, 2400 khr_shared_presentable_image: self.khr_shared_presentable_image 2401 && !other.khr_shared_presentable_image, 2402 khr_spirv_1_4: self.khr_spirv_1_4 && !other.khr_spirv_1_4, 2403 khr_storage_buffer_storage_class: self.khr_storage_buffer_storage_class 2404 && !other.khr_storage_buffer_storage_class, 2405 khr_swapchain: self.khr_swapchain && !other.khr_swapchain, 2406 khr_swapchain_mutable_format: self.khr_swapchain_mutable_format 2407 && !other.khr_swapchain_mutable_format, 2408 khr_synchronization2: self.khr_synchronization2 && !other.khr_synchronization2, 2409 khr_timeline_semaphore: self.khr_timeline_semaphore && !other.khr_timeline_semaphore, 2410 khr_uniform_buffer_standard_layout: self.khr_uniform_buffer_standard_layout 2411 && !other.khr_uniform_buffer_standard_layout, 2412 khr_variable_pointers: self.khr_variable_pointers && !other.khr_variable_pointers, 2413 khr_video_decode_h264: self.khr_video_decode_h264 && !other.khr_video_decode_h264, 2414 khr_video_decode_h265: self.khr_video_decode_h265 && !other.khr_video_decode_h265, 2415 khr_video_decode_queue: self.khr_video_decode_queue && !other.khr_video_decode_queue, 2416 khr_video_encode_queue: self.khr_video_encode_queue && !other.khr_video_encode_queue, 2417 khr_video_queue: self.khr_video_queue && !other.khr_video_queue, 2418 khr_vulkan_memory_model: self.khr_vulkan_memory_model && !other.khr_vulkan_memory_model, 2419 khr_win32_keyed_mutex: self.khr_win32_keyed_mutex && !other.khr_win32_keyed_mutex, 2420 khr_workgroup_memory_explicit_layout: self.khr_workgroup_memory_explicit_layout 2421 && !other.khr_workgroup_memory_explicit_layout, 2422 khr_zero_initialize_workgroup_memory: self.khr_zero_initialize_workgroup_memory 2423 && !other.khr_zero_initialize_workgroup_memory, 2424 ext_4444_formats: self.ext_4444_formats && !other.ext_4444_formats, 2425 ext_astc_decode_mode: self.ext_astc_decode_mode && !other.ext_astc_decode_mode, 2426 ext_attachment_feedback_loop_layout: self.ext_attachment_feedback_loop_layout 2427 && !other.ext_attachment_feedback_loop_layout, 2428 ext_blend_operation_advanced: self.ext_blend_operation_advanced 2429 && !other.ext_blend_operation_advanced, 2430 ext_border_color_swizzle: self.ext_border_color_swizzle 2431 && !other.ext_border_color_swizzle, 2432 ext_buffer_device_address: self.ext_buffer_device_address 2433 && !other.ext_buffer_device_address, 2434 ext_calibrated_timestamps: self.ext_calibrated_timestamps 2435 && !other.ext_calibrated_timestamps, 2436 ext_color_write_enable: self.ext_color_write_enable && !other.ext_color_write_enable, 2437 ext_conditional_rendering: self.ext_conditional_rendering 2438 && !other.ext_conditional_rendering, 2439 ext_conservative_rasterization: self.ext_conservative_rasterization 2440 && !other.ext_conservative_rasterization, 2441 ext_custom_border_color: self.ext_custom_border_color && !other.ext_custom_border_color, 2442 ext_debug_marker: self.ext_debug_marker && !other.ext_debug_marker, 2443 ext_depth_clamp_zero_one: self.ext_depth_clamp_zero_one 2444 && !other.ext_depth_clamp_zero_one, 2445 ext_depth_clip_control: self.ext_depth_clip_control && !other.ext_depth_clip_control, 2446 ext_depth_clip_enable: self.ext_depth_clip_enable && !other.ext_depth_clip_enable, 2447 ext_depth_range_unrestricted: self.ext_depth_range_unrestricted 2448 && !other.ext_depth_range_unrestricted, 2449 ext_descriptor_buffer: self.ext_descriptor_buffer && !other.ext_descriptor_buffer, 2450 ext_descriptor_indexing: self.ext_descriptor_indexing && !other.ext_descriptor_indexing, 2451 ext_device_address_binding_report: self.ext_device_address_binding_report 2452 && !other.ext_device_address_binding_report, 2453 ext_device_fault: self.ext_device_fault && !other.ext_device_fault, 2454 ext_device_memory_report: self.ext_device_memory_report 2455 && !other.ext_device_memory_report, 2456 ext_discard_rectangles: self.ext_discard_rectangles && !other.ext_discard_rectangles, 2457 ext_display_control: self.ext_display_control && !other.ext_display_control, 2458 ext_extended_dynamic_state: self.ext_extended_dynamic_state 2459 && !other.ext_extended_dynamic_state, 2460 ext_extended_dynamic_state2: self.ext_extended_dynamic_state2 2461 && !other.ext_extended_dynamic_state2, 2462 ext_extended_dynamic_state3: self.ext_extended_dynamic_state3 2463 && !other.ext_extended_dynamic_state3, 2464 ext_external_memory_dma_buf: self.ext_external_memory_dma_buf 2465 && !other.ext_external_memory_dma_buf, 2466 ext_external_memory_host: self.ext_external_memory_host 2467 && !other.ext_external_memory_host, 2468 ext_filter_cubic: self.ext_filter_cubic && !other.ext_filter_cubic, 2469 ext_fragment_density_map: self.ext_fragment_density_map 2470 && !other.ext_fragment_density_map, 2471 ext_fragment_density_map2: self.ext_fragment_density_map2 2472 && !other.ext_fragment_density_map2, 2473 ext_fragment_shader_interlock: self.ext_fragment_shader_interlock 2474 && !other.ext_fragment_shader_interlock, 2475 ext_full_screen_exclusive: self.ext_full_screen_exclusive 2476 && !other.ext_full_screen_exclusive, 2477 ext_global_priority: self.ext_global_priority && !other.ext_global_priority, 2478 ext_global_priority_query: self.ext_global_priority_query 2479 && !other.ext_global_priority_query, 2480 ext_graphics_pipeline_library: self.ext_graphics_pipeline_library 2481 && !other.ext_graphics_pipeline_library, 2482 ext_hdr_metadata: self.ext_hdr_metadata && !other.ext_hdr_metadata, 2483 ext_host_query_reset: self.ext_host_query_reset && !other.ext_host_query_reset, 2484 ext_image_2d_view_of_3d: self.ext_image_2d_view_of_3d && !other.ext_image_2d_view_of_3d, 2485 ext_image_compression_control: self.ext_image_compression_control 2486 && !other.ext_image_compression_control, 2487 ext_image_compression_control_swapchain: self.ext_image_compression_control_swapchain 2488 && !other.ext_image_compression_control_swapchain, 2489 ext_image_drm_format_modifier: self.ext_image_drm_format_modifier 2490 && !other.ext_image_drm_format_modifier, 2491 ext_image_robustness: self.ext_image_robustness && !other.ext_image_robustness, 2492 ext_image_view_min_lod: self.ext_image_view_min_lod && !other.ext_image_view_min_lod, 2493 ext_index_type_uint8: self.ext_index_type_uint8 && !other.ext_index_type_uint8, 2494 ext_inline_uniform_block: self.ext_inline_uniform_block 2495 && !other.ext_inline_uniform_block, 2496 ext_legacy_dithering: self.ext_legacy_dithering && !other.ext_legacy_dithering, 2497 ext_line_rasterization: self.ext_line_rasterization && !other.ext_line_rasterization, 2498 ext_load_store_op_none: self.ext_load_store_op_none && !other.ext_load_store_op_none, 2499 ext_memory_budget: self.ext_memory_budget && !other.ext_memory_budget, 2500 ext_memory_priority: self.ext_memory_priority && !other.ext_memory_priority, 2501 ext_mesh_shader: self.ext_mesh_shader && !other.ext_mesh_shader, 2502 ext_metal_objects: self.ext_metal_objects && !other.ext_metal_objects, 2503 ext_multi_draw: self.ext_multi_draw && !other.ext_multi_draw, 2504 ext_multisampled_render_to_single_sampled: self 2505 .ext_multisampled_render_to_single_sampled 2506 && !other.ext_multisampled_render_to_single_sampled, 2507 ext_mutable_descriptor_type: self.ext_mutable_descriptor_type 2508 && !other.ext_mutable_descriptor_type, 2509 ext_non_seamless_cube_map: self.ext_non_seamless_cube_map 2510 && !other.ext_non_seamless_cube_map, 2511 ext_opacity_micromap: self.ext_opacity_micromap && !other.ext_opacity_micromap, 2512 ext_pageable_device_local_memory: self.ext_pageable_device_local_memory 2513 && !other.ext_pageable_device_local_memory, 2514 ext_pci_bus_info: self.ext_pci_bus_info && !other.ext_pci_bus_info, 2515 ext_physical_device_drm: self.ext_physical_device_drm && !other.ext_physical_device_drm, 2516 ext_pipeline_creation_cache_control: self.ext_pipeline_creation_cache_control 2517 && !other.ext_pipeline_creation_cache_control, 2518 ext_pipeline_creation_feedback: self.ext_pipeline_creation_feedback 2519 && !other.ext_pipeline_creation_feedback, 2520 ext_pipeline_properties: self.ext_pipeline_properties && !other.ext_pipeline_properties, 2521 ext_pipeline_protected_access: self.ext_pipeline_protected_access 2522 && !other.ext_pipeline_protected_access, 2523 ext_pipeline_robustness: self.ext_pipeline_robustness && !other.ext_pipeline_robustness, 2524 ext_post_depth_coverage: self.ext_post_depth_coverage && !other.ext_post_depth_coverage, 2525 ext_primitive_topology_list_restart: self.ext_primitive_topology_list_restart 2526 && !other.ext_primitive_topology_list_restart, 2527 ext_primitives_generated_query: self.ext_primitives_generated_query 2528 && !other.ext_primitives_generated_query, 2529 ext_private_data: self.ext_private_data && !other.ext_private_data, 2530 ext_provoking_vertex: self.ext_provoking_vertex && !other.ext_provoking_vertex, 2531 ext_queue_family_foreign: self.ext_queue_family_foreign 2532 && !other.ext_queue_family_foreign, 2533 ext_rasterization_order_attachment_access: self 2534 .ext_rasterization_order_attachment_access 2535 && !other.ext_rasterization_order_attachment_access, 2536 ext_rgba10x6_formats: self.ext_rgba10x6_formats && !other.ext_rgba10x6_formats, 2537 ext_robustness2: self.ext_robustness2 && !other.ext_robustness2, 2538 ext_sample_locations: self.ext_sample_locations && !other.ext_sample_locations, 2539 ext_sampler_filter_minmax: self.ext_sampler_filter_minmax 2540 && !other.ext_sampler_filter_minmax, 2541 ext_scalar_block_layout: self.ext_scalar_block_layout && !other.ext_scalar_block_layout, 2542 ext_separate_stencil_usage: self.ext_separate_stencil_usage 2543 && !other.ext_separate_stencil_usage, 2544 ext_shader_atomic_float: self.ext_shader_atomic_float && !other.ext_shader_atomic_float, 2545 ext_shader_atomic_float2: self.ext_shader_atomic_float2 2546 && !other.ext_shader_atomic_float2, 2547 ext_shader_demote_to_helper_invocation: self.ext_shader_demote_to_helper_invocation 2548 && !other.ext_shader_demote_to_helper_invocation, 2549 ext_shader_image_atomic_int64: self.ext_shader_image_atomic_int64 2550 && !other.ext_shader_image_atomic_int64, 2551 ext_shader_module_identifier: self.ext_shader_module_identifier 2552 && !other.ext_shader_module_identifier, 2553 ext_shader_stencil_export: self.ext_shader_stencil_export 2554 && !other.ext_shader_stencil_export, 2555 ext_shader_subgroup_ballot: self.ext_shader_subgroup_ballot 2556 && !other.ext_shader_subgroup_ballot, 2557 ext_shader_subgroup_vote: self.ext_shader_subgroup_vote 2558 && !other.ext_shader_subgroup_vote, 2559 ext_shader_viewport_index_layer: self.ext_shader_viewport_index_layer 2560 && !other.ext_shader_viewport_index_layer, 2561 ext_subgroup_size_control: self.ext_subgroup_size_control 2562 && !other.ext_subgroup_size_control, 2563 ext_subpass_merge_feedback: self.ext_subpass_merge_feedback 2564 && !other.ext_subpass_merge_feedback, 2565 ext_swapchain_maintenance1: self.ext_swapchain_maintenance1 2566 && !other.ext_swapchain_maintenance1, 2567 ext_texel_buffer_alignment: self.ext_texel_buffer_alignment 2568 && !other.ext_texel_buffer_alignment, 2569 ext_texture_compression_astc_hdr: self.ext_texture_compression_astc_hdr 2570 && !other.ext_texture_compression_astc_hdr, 2571 ext_tooling_info: self.ext_tooling_info && !other.ext_tooling_info, 2572 ext_transform_feedback: self.ext_transform_feedback && !other.ext_transform_feedback, 2573 ext_validation_cache: self.ext_validation_cache && !other.ext_validation_cache, 2574 ext_vertex_attribute_divisor: self.ext_vertex_attribute_divisor 2575 && !other.ext_vertex_attribute_divisor, 2576 ext_vertex_input_dynamic_state: self.ext_vertex_input_dynamic_state 2577 && !other.ext_vertex_input_dynamic_state, 2578 ext_video_encode_h264: self.ext_video_encode_h264 && !other.ext_video_encode_h264, 2579 ext_video_encode_h265: self.ext_video_encode_h265 && !other.ext_video_encode_h265, 2580 ext_ycbcr_2plane_444_formats: self.ext_ycbcr_2plane_444_formats 2581 && !other.ext_ycbcr_2plane_444_formats, 2582 ext_ycbcr_image_arrays: self.ext_ycbcr_image_arrays && !other.ext_ycbcr_image_arrays, 2583 amd_buffer_marker: self.amd_buffer_marker && !other.amd_buffer_marker, 2584 amd_device_coherent_memory: self.amd_device_coherent_memory 2585 && !other.amd_device_coherent_memory, 2586 amd_display_native_hdr: self.amd_display_native_hdr && !other.amd_display_native_hdr, 2587 amd_draw_indirect_count: self.amd_draw_indirect_count && !other.amd_draw_indirect_count, 2588 amd_gcn_shader: self.amd_gcn_shader && !other.amd_gcn_shader, 2589 amd_gpu_shader_half_float: self.amd_gpu_shader_half_float 2590 && !other.amd_gpu_shader_half_float, 2591 amd_gpu_shader_int16: self.amd_gpu_shader_int16 && !other.amd_gpu_shader_int16, 2592 amd_memory_overallocation_behavior: self.amd_memory_overallocation_behavior 2593 && !other.amd_memory_overallocation_behavior, 2594 amd_mixed_attachment_samples: self.amd_mixed_attachment_samples 2595 && !other.amd_mixed_attachment_samples, 2596 amd_pipeline_compiler_control: self.amd_pipeline_compiler_control 2597 && !other.amd_pipeline_compiler_control, 2598 amd_rasterization_order: self.amd_rasterization_order && !other.amd_rasterization_order, 2599 amd_shader_ballot: self.amd_shader_ballot && !other.amd_shader_ballot, 2600 amd_shader_core_properties: self.amd_shader_core_properties 2601 && !other.amd_shader_core_properties, 2602 amd_shader_core_properties2: self.amd_shader_core_properties2 2603 && !other.amd_shader_core_properties2, 2604 amd_shader_early_and_late_fragment_tests: self.amd_shader_early_and_late_fragment_tests 2605 && !other.amd_shader_early_and_late_fragment_tests, 2606 amd_shader_explicit_vertex_parameter: self.amd_shader_explicit_vertex_parameter 2607 && !other.amd_shader_explicit_vertex_parameter, 2608 amd_shader_fragment_mask: self.amd_shader_fragment_mask 2609 && !other.amd_shader_fragment_mask, 2610 amd_shader_image_load_store_lod: self.amd_shader_image_load_store_lod 2611 && !other.amd_shader_image_load_store_lod, 2612 amd_shader_info: self.amd_shader_info && !other.amd_shader_info, 2613 amd_shader_trinary_minmax: self.amd_shader_trinary_minmax 2614 && !other.amd_shader_trinary_minmax, 2615 amd_texture_gather_bias_lod: self.amd_texture_gather_bias_lod 2616 && !other.amd_texture_gather_bias_lod, 2617 android_external_memory_android_hardware_buffer: self 2618 .android_external_memory_android_hardware_buffer 2619 && !other.android_external_memory_android_hardware_buffer, 2620 arm_rasterization_order_attachment_access: self 2621 .arm_rasterization_order_attachment_access 2622 && !other.arm_rasterization_order_attachment_access, 2623 arm_shader_core_builtins: self.arm_shader_core_builtins 2624 && !other.arm_shader_core_builtins, 2625 fuchsia_buffer_collection: self.fuchsia_buffer_collection 2626 && !other.fuchsia_buffer_collection, 2627 fuchsia_external_memory: self.fuchsia_external_memory && !other.fuchsia_external_memory, 2628 fuchsia_external_semaphore: self.fuchsia_external_semaphore 2629 && !other.fuchsia_external_semaphore, 2630 ggp_frame_token: self.ggp_frame_token && !other.ggp_frame_token, 2631 google_decorate_string: self.google_decorate_string && !other.google_decorate_string, 2632 google_display_timing: self.google_display_timing && !other.google_display_timing, 2633 google_hlsl_functionality1: self.google_hlsl_functionality1 2634 && !other.google_hlsl_functionality1, 2635 google_user_type: self.google_user_type && !other.google_user_type, 2636 huawei_invocation_mask: self.huawei_invocation_mask && !other.huawei_invocation_mask, 2637 huawei_subpass_shading: self.huawei_subpass_shading && !other.huawei_subpass_shading, 2638 img_filter_cubic: self.img_filter_cubic && !other.img_filter_cubic, 2639 img_format_pvrtc: self.img_format_pvrtc && !other.img_format_pvrtc, 2640 intel_performance_query: self.intel_performance_query && !other.intel_performance_query, 2641 intel_shader_integer_functions2: self.intel_shader_integer_functions2 2642 && !other.intel_shader_integer_functions2, 2643 nvx_binary_import: self.nvx_binary_import && !other.nvx_binary_import, 2644 nvx_image_view_handle: self.nvx_image_view_handle && !other.nvx_image_view_handle, 2645 nvx_multiview_per_view_attributes: self.nvx_multiview_per_view_attributes 2646 && !other.nvx_multiview_per_view_attributes, 2647 nv_acquire_winrt_display: self.nv_acquire_winrt_display 2648 && !other.nv_acquire_winrt_display, 2649 nv_clip_space_w_scaling: self.nv_clip_space_w_scaling && !other.nv_clip_space_w_scaling, 2650 nv_compute_shader_derivatives: self.nv_compute_shader_derivatives 2651 && !other.nv_compute_shader_derivatives, 2652 nv_cooperative_matrix: self.nv_cooperative_matrix && !other.nv_cooperative_matrix, 2653 nv_copy_memory_indirect: self.nv_copy_memory_indirect && !other.nv_copy_memory_indirect, 2654 nv_corner_sampled_image: self.nv_corner_sampled_image && !other.nv_corner_sampled_image, 2655 nv_coverage_reduction_mode: self.nv_coverage_reduction_mode 2656 && !other.nv_coverage_reduction_mode, 2657 nv_dedicated_allocation: self.nv_dedicated_allocation && !other.nv_dedicated_allocation, 2658 nv_dedicated_allocation_image_aliasing: self.nv_dedicated_allocation_image_aliasing 2659 && !other.nv_dedicated_allocation_image_aliasing, 2660 nv_device_diagnostic_checkpoints: self.nv_device_diagnostic_checkpoints 2661 && !other.nv_device_diagnostic_checkpoints, 2662 nv_device_diagnostics_config: self.nv_device_diagnostics_config 2663 && !other.nv_device_diagnostics_config, 2664 nv_device_generated_commands: self.nv_device_generated_commands 2665 && !other.nv_device_generated_commands, 2666 nv_external_memory: self.nv_external_memory && !other.nv_external_memory, 2667 nv_external_memory_rdma: self.nv_external_memory_rdma && !other.nv_external_memory_rdma, 2668 nv_external_memory_win32: self.nv_external_memory_win32 2669 && !other.nv_external_memory_win32, 2670 nv_fill_rectangle: self.nv_fill_rectangle && !other.nv_fill_rectangle, 2671 nv_fragment_coverage_to_color: self.nv_fragment_coverage_to_color 2672 && !other.nv_fragment_coverage_to_color, 2673 nv_fragment_shader_barycentric: self.nv_fragment_shader_barycentric 2674 && !other.nv_fragment_shader_barycentric, 2675 nv_fragment_shading_rate_enums: self.nv_fragment_shading_rate_enums 2676 && !other.nv_fragment_shading_rate_enums, 2677 nv_framebuffer_mixed_samples: self.nv_framebuffer_mixed_samples 2678 && !other.nv_framebuffer_mixed_samples, 2679 nv_geometry_shader_passthrough: self.nv_geometry_shader_passthrough 2680 && !other.nv_geometry_shader_passthrough, 2681 nv_glsl_shader: self.nv_glsl_shader && !other.nv_glsl_shader, 2682 nv_inherited_viewport_scissor: self.nv_inherited_viewport_scissor 2683 && !other.nv_inherited_viewport_scissor, 2684 nv_linear_color_attachment: self.nv_linear_color_attachment 2685 && !other.nv_linear_color_attachment, 2686 nv_memory_decompression: self.nv_memory_decompression && !other.nv_memory_decompression, 2687 nv_mesh_shader: self.nv_mesh_shader && !other.nv_mesh_shader, 2688 nv_optical_flow: self.nv_optical_flow && !other.nv_optical_flow, 2689 nv_present_barrier: self.nv_present_barrier && !other.nv_present_barrier, 2690 nv_ray_tracing: self.nv_ray_tracing && !other.nv_ray_tracing, 2691 nv_ray_tracing_invocation_reorder: self.nv_ray_tracing_invocation_reorder 2692 && !other.nv_ray_tracing_invocation_reorder, 2693 nv_ray_tracing_motion_blur: self.nv_ray_tracing_motion_blur 2694 && !other.nv_ray_tracing_motion_blur, 2695 nv_representative_fragment_test: self.nv_representative_fragment_test 2696 && !other.nv_representative_fragment_test, 2697 nv_sample_mask_override_coverage: self.nv_sample_mask_override_coverage 2698 && !other.nv_sample_mask_override_coverage, 2699 nv_scissor_exclusive: self.nv_scissor_exclusive && !other.nv_scissor_exclusive, 2700 nv_shader_image_footprint: self.nv_shader_image_footprint 2701 && !other.nv_shader_image_footprint, 2702 nv_shader_sm_builtins: self.nv_shader_sm_builtins && !other.nv_shader_sm_builtins, 2703 nv_shader_subgroup_partitioned: self.nv_shader_subgroup_partitioned 2704 && !other.nv_shader_subgroup_partitioned, 2705 nv_shading_rate_image: self.nv_shading_rate_image && !other.nv_shading_rate_image, 2706 nv_viewport_array2: self.nv_viewport_array2 && !other.nv_viewport_array2, 2707 nv_viewport_swizzle: self.nv_viewport_swizzle && !other.nv_viewport_swizzle, 2708 nv_win32_keyed_mutex: self.nv_win32_keyed_mutex && !other.nv_win32_keyed_mutex, 2709 qcom_fragment_density_map_offset: self.qcom_fragment_density_map_offset 2710 && !other.qcom_fragment_density_map_offset, 2711 qcom_image_processing: self.qcom_image_processing && !other.qcom_image_processing, 2712 qcom_multiview_per_view_viewports: self.qcom_multiview_per_view_viewports 2713 && !other.qcom_multiview_per_view_viewports, 2714 qcom_render_pass_shader_resolve: self.qcom_render_pass_shader_resolve 2715 && !other.qcom_render_pass_shader_resolve, 2716 qcom_render_pass_store_ops: self.qcom_render_pass_store_ops 2717 && !other.qcom_render_pass_store_ops, 2718 qcom_render_pass_transform: self.qcom_render_pass_transform 2719 && !other.qcom_render_pass_transform, 2720 qcom_rotated_copy_commands: self.qcom_rotated_copy_commands 2721 && !other.qcom_rotated_copy_commands, 2722 qcom_tile_properties: self.qcom_tile_properties && !other.qcom_tile_properties, 2723 sec_amigo_profiling: self.sec_amigo_profiling && !other.sec_amigo_profiling, 2724 valve_descriptor_set_host_mapping: self.valve_descriptor_set_host_mapping 2725 && !other.valve_descriptor_set_host_mapping, 2726 valve_mutable_descriptor_type: self.valve_mutable_descriptor_type 2727 && !other.valve_mutable_descriptor_type, 2728 _ne: crate::NonExhaustive(()), 2729 } 2730 } 2731 #[doc = r" Returns the members set in `self` or `other`, but not both."] 2732 #[inline] symmetric_difference(&self, other: &Self) -> Self2733 pub const fn symmetric_difference(&self, other: &Self) -> Self { 2734 Self { 2735 khr_16bit_storage: self.khr_16bit_storage ^ other.khr_16bit_storage, 2736 khr_8bit_storage: self.khr_8bit_storage ^ other.khr_8bit_storage, 2737 khr_acceleration_structure: self.khr_acceleration_structure 2738 ^ other.khr_acceleration_structure, 2739 khr_bind_memory2: self.khr_bind_memory2 ^ other.khr_bind_memory2, 2740 khr_buffer_device_address: self.khr_buffer_device_address 2741 ^ other.khr_buffer_device_address, 2742 khr_copy_commands2: self.khr_copy_commands2 ^ other.khr_copy_commands2, 2743 khr_create_renderpass2: self.khr_create_renderpass2 ^ other.khr_create_renderpass2, 2744 khr_dedicated_allocation: self.khr_dedicated_allocation 2745 ^ other.khr_dedicated_allocation, 2746 khr_deferred_host_operations: self.khr_deferred_host_operations 2747 ^ other.khr_deferred_host_operations, 2748 khr_depth_stencil_resolve: self.khr_depth_stencil_resolve 2749 ^ other.khr_depth_stencil_resolve, 2750 khr_descriptor_update_template: self.khr_descriptor_update_template 2751 ^ other.khr_descriptor_update_template, 2752 khr_device_group: self.khr_device_group ^ other.khr_device_group, 2753 khr_display_swapchain: self.khr_display_swapchain ^ other.khr_display_swapchain, 2754 khr_draw_indirect_count: self.khr_draw_indirect_count ^ other.khr_draw_indirect_count, 2755 khr_driver_properties: self.khr_driver_properties ^ other.khr_driver_properties, 2756 khr_dynamic_rendering: self.khr_dynamic_rendering ^ other.khr_dynamic_rendering, 2757 khr_external_fence: self.khr_external_fence ^ other.khr_external_fence, 2758 khr_external_fence_fd: self.khr_external_fence_fd ^ other.khr_external_fence_fd, 2759 khr_external_fence_win32: self.khr_external_fence_win32 2760 ^ other.khr_external_fence_win32, 2761 khr_external_memory: self.khr_external_memory ^ other.khr_external_memory, 2762 khr_external_memory_fd: self.khr_external_memory_fd ^ other.khr_external_memory_fd, 2763 khr_external_memory_win32: self.khr_external_memory_win32 2764 ^ other.khr_external_memory_win32, 2765 khr_external_semaphore: self.khr_external_semaphore ^ other.khr_external_semaphore, 2766 khr_external_semaphore_fd: self.khr_external_semaphore_fd 2767 ^ other.khr_external_semaphore_fd, 2768 khr_external_semaphore_win32: self.khr_external_semaphore_win32 2769 ^ other.khr_external_semaphore_win32, 2770 khr_format_feature_flags2: self.khr_format_feature_flags2 2771 ^ other.khr_format_feature_flags2, 2772 khr_fragment_shader_barycentric: self.khr_fragment_shader_barycentric 2773 ^ other.khr_fragment_shader_barycentric, 2774 khr_fragment_shading_rate: self.khr_fragment_shading_rate 2775 ^ other.khr_fragment_shading_rate, 2776 khr_get_memory_requirements2: self.khr_get_memory_requirements2 2777 ^ other.khr_get_memory_requirements2, 2778 khr_global_priority: self.khr_global_priority ^ other.khr_global_priority, 2779 khr_image_format_list: self.khr_image_format_list ^ other.khr_image_format_list, 2780 khr_imageless_framebuffer: self.khr_imageless_framebuffer 2781 ^ other.khr_imageless_framebuffer, 2782 khr_incremental_present: self.khr_incremental_present ^ other.khr_incremental_present, 2783 khr_maintenance1: self.khr_maintenance1 ^ other.khr_maintenance1, 2784 khr_maintenance2: self.khr_maintenance2 ^ other.khr_maintenance2, 2785 khr_maintenance3: self.khr_maintenance3 ^ other.khr_maintenance3, 2786 khr_maintenance4: self.khr_maintenance4 ^ other.khr_maintenance4, 2787 khr_multiview: self.khr_multiview ^ other.khr_multiview, 2788 khr_performance_query: self.khr_performance_query ^ other.khr_performance_query, 2789 khr_pipeline_executable_properties: self.khr_pipeline_executable_properties 2790 ^ other.khr_pipeline_executable_properties, 2791 khr_pipeline_library: self.khr_pipeline_library ^ other.khr_pipeline_library, 2792 khr_portability_subset: self.khr_portability_subset ^ other.khr_portability_subset, 2793 khr_present_id: self.khr_present_id ^ other.khr_present_id, 2794 khr_present_wait: self.khr_present_wait ^ other.khr_present_wait, 2795 khr_push_descriptor: self.khr_push_descriptor ^ other.khr_push_descriptor, 2796 khr_ray_query: self.khr_ray_query ^ other.khr_ray_query, 2797 khr_ray_tracing_maintenance1: self.khr_ray_tracing_maintenance1 2798 ^ other.khr_ray_tracing_maintenance1, 2799 khr_ray_tracing_pipeline: self.khr_ray_tracing_pipeline 2800 ^ other.khr_ray_tracing_pipeline, 2801 khr_relaxed_block_layout: self.khr_relaxed_block_layout 2802 ^ other.khr_relaxed_block_layout, 2803 khr_sampler_mirror_clamp_to_edge: self.khr_sampler_mirror_clamp_to_edge 2804 ^ other.khr_sampler_mirror_clamp_to_edge, 2805 khr_sampler_ycbcr_conversion: self.khr_sampler_ycbcr_conversion 2806 ^ other.khr_sampler_ycbcr_conversion, 2807 khr_separate_depth_stencil_layouts: self.khr_separate_depth_stencil_layouts 2808 ^ other.khr_separate_depth_stencil_layouts, 2809 khr_shader_atomic_int64: self.khr_shader_atomic_int64 ^ other.khr_shader_atomic_int64, 2810 khr_shader_clock: self.khr_shader_clock ^ other.khr_shader_clock, 2811 khr_shader_draw_parameters: self.khr_shader_draw_parameters 2812 ^ other.khr_shader_draw_parameters, 2813 khr_shader_float16_int8: self.khr_shader_float16_int8 ^ other.khr_shader_float16_int8, 2814 khr_shader_float_controls: self.khr_shader_float_controls 2815 ^ other.khr_shader_float_controls, 2816 khr_shader_integer_dot_product: self.khr_shader_integer_dot_product 2817 ^ other.khr_shader_integer_dot_product, 2818 khr_shader_non_semantic_info: self.khr_shader_non_semantic_info 2819 ^ other.khr_shader_non_semantic_info, 2820 khr_shader_subgroup_extended_types: self.khr_shader_subgroup_extended_types 2821 ^ other.khr_shader_subgroup_extended_types, 2822 khr_shader_subgroup_uniform_control_flow: self.khr_shader_subgroup_uniform_control_flow 2823 ^ other.khr_shader_subgroup_uniform_control_flow, 2824 khr_shader_terminate_invocation: self.khr_shader_terminate_invocation 2825 ^ other.khr_shader_terminate_invocation, 2826 khr_shared_presentable_image: self.khr_shared_presentable_image 2827 ^ other.khr_shared_presentable_image, 2828 khr_spirv_1_4: self.khr_spirv_1_4 ^ other.khr_spirv_1_4, 2829 khr_storage_buffer_storage_class: self.khr_storage_buffer_storage_class 2830 ^ other.khr_storage_buffer_storage_class, 2831 khr_swapchain: self.khr_swapchain ^ other.khr_swapchain, 2832 khr_swapchain_mutable_format: self.khr_swapchain_mutable_format 2833 ^ other.khr_swapchain_mutable_format, 2834 khr_synchronization2: self.khr_synchronization2 ^ other.khr_synchronization2, 2835 khr_timeline_semaphore: self.khr_timeline_semaphore ^ other.khr_timeline_semaphore, 2836 khr_uniform_buffer_standard_layout: self.khr_uniform_buffer_standard_layout 2837 ^ other.khr_uniform_buffer_standard_layout, 2838 khr_variable_pointers: self.khr_variable_pointers ^ other.khr_variable_pointers, 2839 khr_video_decode_h264: self.khr_video_decode_h264 ^ other.khr_video_decode_h264, 2840 khr_video_decode_h265: self.khr_video_decode_h265 ^ other.khr_video_decode_h265, 2841 khr_video_decode_queue: self.khr_video_decode_queue ^ other.khr_video_decode_queue, 2842 khr_video_encode_queue: self.khr_video_encode_queue ^ other.khr_video_encode_queue, 2843 khr_video_queue: self.khr_video_queue ^ other.khr_video_queue, 2844 khr_vulkan_memory_model: self.khr_vulkan_memory_model ^ other.khr_vulkan_memory_model, 2845 khr_win32_keyed_mutex: self.khr_win32_keyed_mutex ^ other.khr_win32_keyed_mutex, 2846 khr_workgroup_memory_explicit_layout: self.khr_workgroup_memory_explicit_layout 2847 ^ other.khr_workgroup_memory_explicit_layout, 2848 khr_zero_initialize_workgroup_memory: self.khr_zero_initialize_workgroup_memory 2849 ^ other.khr_zero_initialize_workgroup_memory, 2850 ext_4444_formats: self.ext_4444_formats ^ other.ext_4444_formats, 2851 ext_astc_decode_mode: self.ext_astc_decode_mode ^ other.ext_astc_decode_mode, 2852 ext_attachment_feedback_loop_layout: self.ext_attachment_feedback_loop_layout 2853 ^ other.ext_attachment_feedback_loop_layout, 2854 ext_blend_operation_advanced: self.ext_blend_operation_advanced 2855 ^ other.ext_blend_operation_advanced, 2856 ext_border_color_swizzle: self.ext_border_color_swizzle 2857 ^ other.ext_border_color_swizzle, 2858 ext_buffer_device_address: self.ext_buffer_device_address 2859 ^ other.ext_buffer_device_address, 2860 ext_calibrated_timestamps: self.ext_calibrated_timestamps 2861 ^ other.ext_calibrated_timestamps, 2862 ext_color_write_enable: self.ext_color_write_enable ^ other.ext_color_write_enable, 2863 ext_conditional_rendering: self.ext_conditional_rendering 2864 ^ other.ext_conditional_rendering, 2865 ext_conservative_rasterization: self.ext_conservative_rasterization 2866 ^ other.ext_conservative_rasterization, 2867 ext_custom_border_color: self.ext_custom_border_color ^ other.ext_custom_border_color, 2868 ext_debug_marker: self.ext_debug_marker ^ other.ext_debug_marker, 2869 ext_depth_clamp_zero_one: self.ext_depth_clamp_zero_one 2870 ^ other.ext_depth_clamp_zero_one, 2871 ext_depth_clip_control: self.ext_depth_clip_control ^ other.ext_depth_clip_control, 2872 ext_depth_clip_enable: self.ext_depth_clip_enable ^ other.ext_depth_clip_enable, 2873 ext_depth_range_unrestricted: self.ext_depth_range_unrestricted 2874 ^ other.ext_depth_range_unrestricted, 2875 ext_descriptor_buffer: self.ext_descriptor_buffer ^ other.ext_descriptor_buffer, 2876 ext_descriptor_indexing: self.ext_descriptor_indexing ^ other.ext_descriptor_indexing, 2877 ext_device_address_binding_report: self.ext_device_address_binding_report 2878 ^ other.ext_device_address_binding_report, 2879 ext_device_fault: self.ext_device_fault ^ other.ext_device_fault, 2880 ext_device_memory_report: self.ext_device_memory_report 2881 ^ other.ext_device_memory_report, 2882 ext_discard_rectangles: self.ext_discard_rectangles ^ other.ext_discard_rectangles, 2883 ext_display_control: self.ext_display_control ^ other.ext_display_control, 2884 ext_extended_dynamic_state: self.ext_extended_dynamic_state 2885 ^ other.ext_extended_dynamic_state, 2886 ext_extended_dynamic_state2: self.ext_extended_dynamic_state2 2887 ^ other.ext_extended_dynamic_state2, 2888 ext_extended_dynamic_state3: self.ext_extended_dynamic_state3 2889 ^ other.ext_extended_dynamic_state3, 2890 ext_external_memory_dma_buf: self.ext_external_memory_dma_buf 2891 ^ other.ext_external_memory_dma_buf, 2892 ext_external_memory_host: self.ext_external_memory_host 2893 ^ other.ext_external_memory_host, 2894 ext_filter_cubic: self.ext_filter_cubic ^ other.ext_filter_cubic, 2895 ext_fragment_density_map: self.ext_fragment_density_map 2896 ^ other.ext_fragment_density_map, 2897 ext_fragment_density_map2: self.ext_fragment_density_map2 2898 ^ other.ext_fragment_density_map2, 2899 ext_fragment_shader_interlock: self.ext_fragment_shader_interlock 2900 ^ other.ext_fragment_shader_interlock, 2901 ext_full_screen_exclusive: self.ext_full_screen_exclusive 2902 ^ other.ext_full_screen_exclusive, 2903 ext_global_priority: self.ext_global_priority ^ other.ext_global_priority, 2904 ext_global_priority_query: self.ext_global_priority_query 2905 ^ other.ext_global_priority_query, 2906 ext_graphics_pipeline_library: self.ext_graphics_pipeline_library 2907 ^ other.ext_graphics_pipeline_library, 2908 ext_hdr_metadata: self.ext_hdr_metadata ^ other.ext_hdr_metadata, 2909 ext_host_query_reset: self.ext_host_query_reset ^ other.ext_host_query_reset, 2910 ext_image_2d_view_of_3d: self.ext_image_2d_view_of_3d ^ other.ext_image_2d_view_of_3d, 2911 ext_image_compression_control: self.ext_image_compression_control 2912 ^ other.ext_image_compression_control, 2913 ext_image_compression_control_swapchain: self.ext_image_compression_control_swapchain 2914 ^ other.ext_image_compression_control_swapchain, 2915 ext_image_drm_format_modifier: self.ext_image_drm_format_modifier 2916 ^ other.ext_image_drm_format_modifier, 2917 ext_image_robustness: self.ext_image_robustness ^ other.ext_image_robustness, 2918 ext_image_view_min_lod: self.ext_image_view_min_lod ^ other.ext_image_view_min_lod, 2919 ext_index_type_uint8: self.ext_index_type_uint8 ^ other.ext_index_type_uint8, 2920 ext_inline_uniform_block: self.ext_inline_uniform_block 2921 ^ other.ext_inline_uniform_block, 2922 ext_legacy_dithering: self.ext_legacy_dithering ^ other.ext_legacy_dithering, 2923 ext_line_rasterization: self.ext_line_rasterization ^ other.ext_line_rasterization, 2924 ext_load_store_op_none: self.ext_load_store_op_none ^ other.ext_load_store_op_none, 2925 ext_memory_budget: self.ext_memory_budget ^ other.ext_memory_budget, 2926 ext_memory_priority: self.ext_memory_priority ^ other.ext_memory_priority, 2927 ext_mesh_shader: self.ext_mesh_shader ^ other.ext_mesh_shader, 2928 ext_metal_objects: self.ext_metal_objects ^ other.ext_metal_objects, 2929 ext_multi_draw: self.ext_multi_draw ^ other.ext_multi_draw, 2930 ext_multisampled_render_to_single_sampled: self 2931 .ext_multisampled_render_to_single_sampled 2932 ^ other.ext_multisampled_render_to_single_sampled, 2933 ext_mutable_descriptor_type: self.ext_mutable_descriptor_type 2934 ^ other.ext_mutable_descriptor_type, 2935 ext_non_seamless_cube_map: self.ext_non_seamless_cube_map 2936 ^ other.ext_non_seamless_cube_map, 2937 ext_opacity_micromap: self.ext_opacity_micromap ^ other.ext_opacity_micromap, 2938 ext_pageable_device_local_memory: self.ext_pageable_device_local_memory 2939 ^ other.ext_pageable_device_local_memory, 2940 ext_pci_bus_info: self.ext_pci_bus_info ^ other.ext_pci_bus_info, 2941 ext_physical_device_drm: self.ext_physical_device_drm ^ other.ext_physical_device_drm, 2942 ext_pipeline_creation_cache_control: self.ext_pipeline_creation_cache_control 2943 ^ other.ext_pipeline_creation_cache_control, 2944 ext_pipeline_creation_feedback: self.ext_pipeline_creation_feedback 2945 ^ other.ext_pipeline_creation_feedback, 2946 ext_pipeline_properties: self.ext_pipeline_properties ^ other.ext_pipeline_properties, 2947 ext_pipeline_protected_access: self.ext_pipeline_protected_access 2948 ^ other.ext_pipeline_protected_access, 2949 ext_pipeline_robustness: self.ext_pipeline_robustness ^ other.ext_pipeline_robustness, 2950 ext_post_depth_coverage: self.ext_post_depth_coverage ^ other.ext_post_depth_coverage, 2951 ext_primitive_topology_list_restart: self.ext_primitive_topology_list_restart 2952 ^ other.ext_primitive_topology_list_restart, 2953 ext_primitives_generated_query: self.ext_primitives_generated_query 2954 ^ other.ext_primitives_generated_query, 2955 ext_private_data: self.ext_private_data ^ other.ext_private_data, 2956 ext_provoking_vertex: self.ext_provoking_vertex ^ other.ext_provoking_vertex, 2957 ext_queue_family_foreign: self.ext_queue_family_foreign 2958 ^ other.ext_queue_family_foreign, 2959 ext_rasterization_order_attachment_access: self 2960 .ext_rasterization_order_attachment_access 2961 ^ other.ext_rasterization_order_attachment_access, 2962 ext_rgba10x6_formats: self.ext_rgba10x6_formats ^ other.ext_rgba10x6_formats, 2963 ext_robustness2: self.ext_robustness2 ^ other.ext_robustness2, 2964 ext_sample_locations: self.ext_sample_locations ^ other.ext_sample_locations, 2965 ext_sampler_filter_minmax: self.ext_sampler_filter_minmax 2966 ^ other.ext_sampler_filter_minmax, 2967 ext_scalar_block_layout: self.ext_scalar_block_layout ^ other.ext_scalar_block_layout, 2968 ext_separate_stencil_usage: self.ext_separate_stencil_usage 2969 ^ other.ext_separate_stencil_usage, 2970 ext_shader_atomic_float: self.ext_shader_atomic_float ^ other.ext_shader_atomic_float, 2971 ext_shader_atomic_float2: self.ext_shader_atomic_float2 2972 ^ other.ext_shader_atomic_float2, 2973 ext_shader_demote_to_helper_invocation: self.ext_shader_demote_to_helper_invocation 2974 ^ other.ext_shader_demote_to_helper_invocation, 2975 ext_shader_image_atomic_int64: self.ext_shader_image_atomic_int64 2976 ^ other.ext_shader_image_atomic_int64, 2977 ext_shader_module_identifier: self.ext_shader_module_identifier 2978 ^ other.ext_shader_module_identifier, 2979 ext_shader_stencil_export: self.ext_shader_stencil_export 2980 ^ other.ext_shader_stencil_export, 2981 ext_shader_subgroup_ballot: self.ext_shader_subgroup_ballot 2982 ^ other.ext_shader_subgroup_ballot, 2983 ext_shader_subgroup_vote: self.ext_shader_subgroup_vote 2984 ^ other.ext_shader_subgroup_vote, 2985 ext_shader_viewport_index_layer: self.ext_shader_viewport_index_layer 2986 ^ other.ext_shader_viewport_index_layer, 2987 ext_subgroup_size_control: self.ext_subgroup_size_control 2988 ^ other.ext_subgroup_size_control, 2989 ext_subpass_merge_feedback: self.ext_subpass_merge_feedback 2990 ^ other.ext_subpass_merge_feedback, 2991 ext_swapchain_maintenance1: self.ext_swapchain_maintenance1 2992 ^ other.ext_swapchain_maintenance1, 2993 ext_texel_buffer_alignment: self.ext_texel_buffer_alignment 2994 ^ other.ext_texel_buffer_alignment, 2995 ext_texture_compression_astc_hdr: self.ext_texture_compression_astc_hdr 2996 ^ other.ext_texture_compression_astc_hdr, 2997 ext_tooling_info: self.ext_tooling_info ^ other.ext_tooling_info, 2998 ext_transform_feedback: self.ext_transform_feedback ^ other.ext_transform_feedback, 2999 ext_validation_cache: self.ext_validation_cache ^ other.ext_validation_cache, 3000 ext_vertex_attribute_divisor: self.ext_vertex_attribute_divisor 3001 ^ other.ext_vertex_attribute_divisor, 3002 ext_vertex_input_dynamic_state: self.ext_vertex_input_dynamic_state 3003 ^ other.ext_vertex_input_dynamic_state, 3004 ext_video_encode_h264: self.ext_video_encode_h264 ^ other.ext_video_encode_h264, 3005 ext_video_encode_h265: self.ext_video_encode_h265 ^ other.ext_video_encode_h265, 3006 ext_ycbcr_2plane_444_formats: self.ext_ycbcr_2plane_444_formats 3007 ^ other.ext_ycbcr_2plane_444_formats, 3008 ext_ycbcr_image_arrays: self.ext_ycbcr_image_arrays ^ other.ext_ycbcr_image_arrays, 3009 amd_buffer_marker: self.amd_buffer_marker ^ other.amd_buffer_marker, 3010 amd_device_coherent_memory: self.amd_device_coherent_memory 3011 ^ other.amd_device_coherent_memory, 3012 amd_display_native_hdr: self.amd_display_native_hdr ^ other.amd_display_native_hdr, 3013 amd_draw_indirect_count: self.amd_draw_indirect_count ^ other.amd_draw_indirect_count, 3014 amd_gcn_shader: self.amd_gcn_shader ^ other.amd_gcn_shader, 3015 amd_gpu_shader_half_float: self.amd_gpu_shader_half_float 3016 ^ other.amd_gpu_shader_half_float, 3017 amd_gpu_shader_int16: self.amd_gpu_shader_int16 ^ other.amd_gpu_shader_int16, 3018 amd_memory_overallocation_behavior: self.amd_memory_overallocation_behavior 3019 ^ other.amd_memory_overallocation_behavior, 3020 amd_mixed_attachment_samples: self.amd_mixed_attachment_samples 3021 ^ other.amd_mixed_attachment_samples, 3022 amd_pipeline_compiler_control: self.amd_pipeline_compiler_control 3023 ^ other.amd_pipeline_compiler_control, 3024 amd_rasterization_order: self.amd_rasterization_order ^ other.amd_rasterization_order, 3025 amd_shader_ballot: self.amd_shader_ballot ^ other.amd_shader_ballot, 3026 amd_shader_core_properties: self.amd_shader_core_properties 3027 ^ other.amd_shader_core_properties, 3028 amd_shader_core_properties2: self.amd_shader_core_properties2 3029 ^ other.amd_shader_core_properties2, 3030 amd_shader_early_and_late_fragment_tests: self.amd_shader_early_and_late_fragment_tests 3031 ^ other.amd_shader_early_and_late_fragment_tests, 3032 amd_shader_explicit_vertex_parameter: self.amd_shader_explicit_vertex_parameter 3033 ^ other.amd_shader_explicit_vertex_parameter, 3034 amd_shader_fragment_mask: self.amd_shader_fragment_mask 3035 ^ other.amd_shader_fragment_mask, 3036 amd_shader_image_load_store_lod: self.amd_shader_image_load_store_lod 3037 ^ other.amd_shader_image_load_store_lod, 3038 amd_shader_info: self.amd_shader_info ^ other.amd_shader_info, 3039 amd_shader_trinary_minmax: self.amd_shader_trinary_minmax 3040 ^ other.amd_shader_trinary_minmax, 3041 amd_texture_gather_bias_lod: self.amd_texture_gather_bias_lod 3042 ^ other.amd_texture_gather_bias_lod, 3043 android_external_memory_android_hardware_buffer: self 3044 .android_external_memory_android_hardware_buffer 3045 ^ other.android_external_memory_android_hardware_buffer, 3046 arm_rasterization_order_attachment_access: self 3047 .arm_rasterization_order_attachment_access 3048 ^ other.arm_rasterization_order_attachment_access, 3049 arm_shader_core_builtins: self.arm_shader_core_builtins 3050 ^ other.arm_shader_core_builtins, 3051 fuchsia_buffer_collection: self.fuchsia_buffer_collection 3052 ^ other.fuchsia_buffer_collection, 3053 fuchsia_external_memory: self.fuchsia_external_memory ^ other.fuchsia_external_memory, 3054 fuchsia_external_semaphore: self.fuchsia_external_semaphore 3055 ^ other.fuchsia_external_semaphore, 3056 ggp_frame_token: self.ggp_frame_token ^ other.ggp_frame_token, 3057 google_decorate_string: self.google_decorate_string ^ other.google_decorate_string, 3058 google_display_timing: self.google_display_timing ^ other.google_display_timing, 3059 google_hlsl_functionality1: self.google_hlsl_functionality1 3060 ^ other.google_hlsl_functionality1, 3061 google_user_type: self.google_user_type ^ other.google_user_type, 3062 huawei_invocation_mask: self.huawei_invocation_mask ^ other.huawei_invocation_mask, 3063 huawei_subpass_shading: self.huawei_subpass_shading ^ other.huawei_subpass_shading, 3064 img_filter_cubic: self.img_filter_cubic ^ other.img_filter_cubic, 3065 img_format_pvrtc: self.img_format_pvrtc ^ other.img_format_pvrtc, 3066 intel_performance_query: self.intel_performance_query ^ other.intel_performance_query, 3067 intel_shader_integer_functions2: self.intel_shader_integer_functions2 3068 ^ other.intel_shader_integer_functions2, 3069 nvx_binary_import: self.nvx_binary_import ^ other.nvx_binary_import, 3070 nvx_image_view_handle: self.nvx_image_view_handle ^ other.nvx_image_view_handle, 3071 nvx_multiview_per_view_attributes: self.nvx_multiview_per_view_attributes 3072 ^ other.nvx_multiview_per_view_attributes, 3073 nv_acquire_winrt_display: self.nv_acquire_winrt_display 3074 ^ other.nv_acquire_winrt_display, 3075 nv_clip_space_w_scaling: self.nv_clip_space_w_scaling ^ other.nv_clip_space_w_scaling, 3076 nv_compute_shader_derivatives: self.nv_compute_shader_derivatives 3077 ^ other.nv_compute_shader_derivatives, 3078 nv_cooperative_matrix: self.nv_cooperative_matrix ^ other.nv_cooperative_matrix, 3079 nv_copy_memory_indirect: self.nv_copy_memory_indirect ^ other.nv_copy_memory_indirect, 3080 nv_corner_sampled_image: self.nv_corner_sampled_image ^ other.nv_corner_sampled_image, 3081 nv_coverage_reduction_mode: self.nv_coverage_reduction_mode 3082 ^ other.nv_coverage_reduction_mode, 3083 nv_dedicated_allocation: self.nv_dedicated_allocation ^ other.nv_dedicated_allocation, 3084 nv_dedicated_allocation_image_aliasing: self.nv_dedicated_allocation_image_aliasing 3085 ^ other.nv_dedicated_allocation_image_aliasing, 3086 nv_device_diagnostic_checkpoints: self.nv_device_diagnostic_checkpoints 3087 ^ other.nv_device_diagnostic_checkpoints, 3088 nv_device_diagnostics_config: self.nv_device_diagnostics_config 3089 ^ other.nv_device_diagnostics_config, 3090 nv_device_generated_commands: self.nv_device_generated_commands 3091 ^ other.nv_device_generated_commands, 3092 nv_external_memory: self.nv_external_memory ^ other.nv_external_memory, 3093 nv_external_memory_rdma: self.nv_external_memory_rdma ^ other.nv_external_memory_rdma, 3094 nv_external_memory_win32: self.nv_external_memory_win32 3095 ^ other.nv_external_memory_win32, 3096 nv_fill_rectangle: self.nv_fill_rectangle ^ other.nv_fill_rectangle, 3097 nv_fragment_coverage_to_color: self.nv_fragment_coverage_to_color 3098 ^ other.nv_fragment_coverage_to_color, 3099 nv_fragment_shader_barycentric: self.nv_fragment_shader_barycentric 3100 ^ other.nv_fragment_shader_barycentric, 3101 nv_fragment_shading_rate_enums: self.nv_fragment_shading_rate_enums 3102 ^ other.nv_fragment_shading_rate_enums, 3103 nv_framebuffer_mixed_samples: self.nv_framebuffer_mixed_samples 3104 ^ other.nv_framebuffer_mixed_samples, 3105 nv_geometry_shader_passthrough: self.nv_geometry_shader_passthrough 3106 ^ other.nv_geometry_shader_passthrough, 3107 nv_glsl_shader: self.nv_glsl_shader ^ other.nv_glsl_shader, 3108 nv_inherited_viewport_scissor: self.nv_inherited_viewport_scissor 3109 ^ other.nv_inherited_viewport_scissor, 3110 nv_linear_color_attachment: self.nv_linear_color_attachment 3111 ^ other.nv_linear_color_attachment, 3112 nv_memory_decompression: self.nv_memory_decompression ^ other.nv_memory_decompression, 3113 nv_mesh_shader: self.nv_mesh_shader ^ other.nv_mesh_shader, 3114 nv_optical_flow: self.nv_optical_flow ^ other.nv_optical_flow, 3115 nv_present_barrier: self.nv_present_barrier ^ other.nv_present_barrier, 3116 nv_ray_tracing: self.nv_ray_tracing ^ other.nv_ray_tracing, 3117 nv_ray_tracing_invocation_reorder: self.nv_ray_tracing_invocation_reorder 3118 ^ other.nv_ray_tracing_invocation_reorder, 3119 nv_ray_tracing_motion_blur: self.nv_ray_tracing_motion_blur 3120 ^ other.nv_ray_tracing_motion_blur, 3121 nv_representative_fragment_test: self.nv_representative_fragment_test 3122 ^ other.nv_representative_fragment_test, 3123 nv_sample_mask_override_coverage: self.nv_sample_mask_override_coverage 3124 ^ other.nv_sample_mask_override_coverage, 3125 nv_scissor_exclusive: self.nv_scissor_exclusive ^ other.nv_scissor_exclusive, 3126 nv_shader_image_footprint: self.nv_shader_image_footprint 3127 ^ other.nv_shader_image_footprint, 3128 nv_shader_sm_builtins: self.nv_shader_sm_builtins ^ other.nv_shader_sm_builtins, 3129 nv_shader_subgroup_partitioned: self.nv_shader_subgroup_partitioned 3130 ^ other.nv_shader_subgroup_partitioned, 3131 nv_shading_rate_image: self.nv_shading_rate_image ^ other.nv_shading_rate_image, 3132 nv_viewport_array2: self.nv_viewport_array2 ^ other.nv_viewport_array2, 3133 nv_viewport_swizzle: self.nv_viewport_swizzle ^ other.nv_viewport_swizzle, 3134 nv_win32_keyed_mutex: self.nv_win32_keyed_mutex ^ other.nv_win32_keyed_mutex, 3135 qcom_fragment_density_map_offset: self.qcom_fragment_density_map_offset 3136 ^ other.qcom_fragment_density_map_offset, 3137 qcom_image_processing: self.qcom_image_processing ^ other.qcom_image_processing, 3138 qcom_multiview_per_view_viewports: self.qcom_multiview_per_view_viewports 3139 ^ other.qcom_multiview_per_view_viewports, 3140 qcom_render_pass_shader_resolve: self.qcom_render_pass_shader_resolve 3141 ^ other.qcom_render_pass_shader_resolve, 3142 qcom_render_pass_store_ops: self.qcom_render_pass_store_ops 3143 ^ other.qcom_render_pass_store_ops, 3144 qcom_render_pass_transform: self.qcom_render_pass_transform 3145 ^ other.qcom_render_pass_transform, 3146 qcom_rotated_copy_commands: self.qcom_rotated_copy_commands 3147 ^ other.qcom_rotated_copy_commands, 3148 qcom_tile_properties: self.qcom_tile_properties ^ other.qcom_tile_properties, 3149 sec_amigo_profiling: self.sec_amigo_profiling ^ other.sec_amigo_profiling, 3150 valve_descriptor_set_host_mapping: self.valve_descriptor_set_host_mapping 3151 ^ other.valve_descriptor_set_host_mapping, 3152 valve_mutable_descriptor_type: self.valve_mutable_descriptor_type 3153 ^ other.valve_mutable_descriptor_type, 3154 _ne: crate::NonExhaustive(()), 3155 } 3156 } 3157 } 3158 impl std::ops::BitAnd for DeviceExtensions { 3159 type Output = DeviceExtensions; 3160 #[inline] bitand(self, rhs: Self) -> Self::Output3161 fn bitand(self, rhs: Self) -> Self::Output { 3162 self.union(&rhs) 3163 } 3164 } 3165 impl std::ops::BitAndAssign for DeviceExtensions { 3166 #[inline] bitand_assign(&mut self, rhs: Self)3167 fn bitand_assign(&mut self, rhs: Self) { 3168 *self = self.union(&rhs); 3169 } 3170 } 3171 impl std::ops::BitOr for DeviceExtensions { 3172 type Output = DeviceExtensions; 3173 #[inline] bitor(self, rhs: Self) -> Self::Output3174 fn bitor(self, rhs: Self) -> Self::Output { 3175 self.intersection(&rhs) 3176 } 3177 } 3178 impl std::ops::BitOrAssign for DeviceExtensions { 3179 #[inline] bitor_assign(&mut self, rhs: Self)3180 fn bitor_assign(&mut self, rhs: Self) { 3181 *self = self.intersection(&rhs); 3182 } 3183 } 3184 impl std::ops::BitXor for DeviceExtensions { 3185 type Output = DeviceExtensions; 3186 #[inline] bitxor(self, rhs: Self) -> Self::Output3187 fn bitxor(self, rhs: Self) -> Self::Output { 3188 self.symmetric_difference(&rhs) 3189 } 3190 } 3191 impl std::ops::BitXorAssign for DeviceExtensions { 3192 #[inline] bitxor_assign(&mut self, rhs: Self)3193 fn bitxor_assign(&mut self, rhs: Self) { 3194 *self = self.symmetric_difference(&rhs); 3195 } 3196 } 3197 impl std::ops::Sub for DeviceExtensions { 3198 type Output = DeviceExtensions; 3199 #[inline] sub(self, rhs: Self) -> Self::Output3200 fn sub(self, rhs: Self) -> Self::Output { 3201 self.difference(&rhs) 3202 } 3203 } 3204 impl std::ops::SubAssign for DeviceExtensions { 3205 #[inline] sub_assign(&mut self, rhs: Self)3206 fn sub_assign(&mut self, rhs: Self) { 3207 *self = self.difference(&rhs); 3208 } 3209 } 3210 impl std::fmt::Debug for DeviceExtensions { 3211 #[allow(unused_assignments)] fmt(&self, f: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error>3212 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> { 3213 write!(f, "[")?; 3214 let mut first = true; 3215 if self.khr_16bit_storage { 3216 if !first { 3217 write!(f, ", ")? 3218 } else { 3219 first = false; 3220 } 3221 f.write_str("VK_KHR_16bit_storage")?; 3222 } 3223 if self.khr_8bit_storage { 3224 if !first { 3225 write!(f, ", ")? 3226 } else { 3227 first = false; 3228 } 3229 f.write_str("VK_KHR_8bit_storage")?; 3230 } 3231 if self.khr_acceleration_structure { 3232 if !first { 3233 write!(f, ", ")? 3234 } else { 3235 first = false; 3236 } 3237 f.write_str("VK_KHR_acceleration_structure")?; 3238 } 3239 if self.khr_bind_memory2 { 3240 if !first { 3241 write!(f, ", ")? 3242 } else { 3243 first = false; 3244 } 3245 f.write_str("VK_KHR_bind_memory2")?; 3246 } 3247 if self.khr_buffer_device_address { 3248 if !first { 3249 write!(f, ", ")? 3250 } else { 3251 first = false; 3252 } 3253 f.write_str("VK_KHR_buffer_device_address")?; 3254 } 3255 if self.khr_copy_commands2 { 3256 if !first { 3257 write!(f, ", ")? 3258 } else { 3259 first = false; 3260 } 3261 f.write_str("VK_KHR_copy_commands2")?; 3262 } 3263 if self.khr_create_renderpass2 { 3264 if !first { 3265 write!(f, ", ")? 3266 } else { 3267 first = false; 3268 } 3269 f.write_str("VK_KHR_create_renderpass2")?; 3270 } 3271 if self.khr_dedicated_allocation { 3272 if !first { 3273 write!(f, ", ")? 3274 } else { 3275 first = false; 3276 } 3277 f.write_str("VK_KHR_dedicated_allocation")?; 3278 } 3279 if self.khr_deferred_host_operations { 3280 if !first { 3281 write!(f, ", ")? 3282 } else { 3283 first = false; 3284 } 3285 f.write_str("VK_KHR_deferred_host_operations")?; 3286 } 3287 if self.khr_depth_stencil_resolve { 3288 if !first { 3289 write!(f, ", ")? 3290 } else { 3291 first = false; 3292 } 3293 f.write_str("VK_KHR_depth_stencil_resolve")?; 3294 } 3295 if self.khr_descriptor_update_template { 3296 if !first { 3297 write!(f, ", ")? 3298 } else { 3299 first = false; 3300 } 3301 f.write_str("VK_KHR_descriptor_update_template")?; 3302 } 3303 if self.khr_device_group { 3304 if !first { 3305 write!(f, ", ")? 3306 } else { 3307 first = false; 3308 } 3309 f.write_str("VK_KHR_device_group")?; 3310 } 3311 if self.khr_display_swapchain { 3312 if !first { 3313 write!(f, ", ")? 3314 } else { 3315 first = false; 3316 } 3317 f.write_str("VK_KHR_display_swapchain")?; 3318 } 3319 if self.khr_draw_indirect_count { 3320 if !first { 3321 write!(f, ", ")? 3322 } else { 3323 first = false; 3324 } 3325 f.write_str("VK_KHR_draw_indirect_count")?; 3326 } 3327 if self.khr_driver_properties { 3328 if !first { 3329 write!(f, ", ")? 3330 } else { 3331 first = false; 3332 } 3333 f.write_str("VK_KHR_driver_properties")?; 3334 } 3335 if self.khr_dynamic_rendering { 3336 if !first { 3337 write!(f, ", ")? 3338 } else { 3339 first = false; 3340 } 3341 f.write_str("VK_KHR_dynamic_rendering")?; 3342 } 3343 if self.khr_external_fence { 3344 if !first { 3345 write!(f, ", ")? 3346 } else { 3347 first = false; 3348 } 3349 f.write_str("VK_KHR_external_fence")?; 3350 } 3351 if self.khr_external_fence_fd { 3352 if !first { 3353 write!(f, ", ")? 3354 } else { 3355 first = false; 3356 } 3357 f.write_str("VK_KHR_external_fence_fd")?; 3358 } 3359 if self.khr_external_fence_win32 { 3360 if !first { 3361 write!(f, ", ")? 3362 } else { 3363 first = false; 3364 } 3365 f.write_str("VK_KHR_external_fence_win32")?; 3366 } 3367 if self.khr_external_memory { 3368 if !first { 3369 write!(f, ", ")? 3370 } else { 3371 first = false; 3372 } 3373 f.write_str("VK_KHR_external_memory")?; 3374 } 3375 if self.khr_external_memory_fd { 3376 if !first { 3377 write!(f, ", ")? 3378 } else { 3379 first = false; 3380 } 3381 f.write_str("VK_KHR_external_memory_fd")?; 3382 } 3383 if self.khr_external_memory_win32 { 3384 if !first { 3385 write!(f, ", ")? 3386 } else { 3387 first = false; 3388 } 3389 f.write_str("VK_KHR_external_memory_win32")?; 3390 } 3391 if self.khr_external_semaphore { 3392 if !first { 3393 write!(f, ", ")? 3394 } else { 3395 first = false; 3396 } 3397 f.write_str("VK_KHR_external_semaphore")?; 3398 } 3399 if self.khr_external_semaphore_fd { 3400 if !first { 3401 write!(f, ", ")? 3402 } else { 3403 first = false; 3404 } 3405 f.write_str("VK_KHR_external_semaphore_fd")?; 3406 } 3407 if self.khr_external_semaphore_win32 { 3408 if !first { 3409 write!(f, ", ")? 3410 } else { 3411 first = false; 3412 } 3413 f.write_str("VK_KHR_external_semaphore_win32")?; 3414 } 3415 if self.khr_format_feature_flags2 { 3416 if !first { 3417 write!(f, ", ")? 3418 } else { 3419 first = false; 3420 } 3421 f.write_str("VK_KHR_format_feature_flags2")?; 3422 } 3423 if self.khr_fragment_shader_barycentric { 3424 if !first { 3425 write!(f, ", ")? 3426 } else { 3427 first = false; 3428 } 3429 f.write_str("VK_KHR_fragment_shader_barycentric")?; 3430 } 3431 if self.khr_fragment_shading_rate { 3432 if !first { 3433 write!(f, ", ")? 3434 } else { 3435 first = false; 3436 } 3437 f.write_str("VK_KHR_fragment_shading_rate")?; 3438 } 3439 if self.khr_get_memory_requirements2 { 3440 if !first { 3441 write!(f, ", ")? 3442 } else { 3443 first = false; 3444 } 3445 f.write_str("VK_KHR_get_memory_requirements2")?; 3446 } 3447 if self.khr_global_priority { 3448 if !first { 3449 write!(f, ", ")? 3450 } else { 3451 first = false; 3452 } 3453 f.write_str("VK_KHR_global_priority")?; 3454 } 3455 if self.khr_image_format_list { 3456 if !first { 3457 write!(f, ", ")? 3458 } else { 3459 first = false; 3460 } 3461 f.write_str("VK_KHR_image_format_list")?; 3462 } 3463 if self.khr_imageless_framebuffer { 3464 if !first { 3465 write!(f, ", ")? 3466 } else { 3467 first = false; 3468 } 3469 f.write_str("VK_KHR_imageless_framebuffer")?; 3470 } 3471 if self.khr_incremental_present { 3472 if !first { 3473 write!(f, ", ")? 3474 } else { 3475 first = false; 3476 } 3477 f.write_str("VK_KHR_incremental_present")?; 3478 } 3479 if self.khr_maintenance1 { 3480 if !first { 3481 write!(f, ", ")? 3482 } else { 3483 first = false; 3484 } 3485 f.write_str("VK_KHR_maintenance1")?; 3486 } 3487 if self.khr_maintenance2 { 3488 if !first { 3489 write!(f, ", ")? 3490 } else { 3491 first = false; 3492 } 3493 f.write_str("VK_KHR_maintenance2")?; 3494 } 3495 if self.khr_maintenance3 { 3496 if !first { 3497 write!(f, ", ")? 3498 } else { 3499 first = false; 3500 } 3501 f.write_str("VK_KHR_maintenance3")?; 3502 } 3503 if self.khr_maintenance4 { 3504 if !first { 3505 write!(f, ", ")? 3506 } else { 3507 first = false; 3508 } 3509 f.write_str("VK_KHR_maintenance4")?; 3510 } 3511 if self.khr_multiview { 3512 if !first { 3513 write!(f, ", ")? 3514 } else { 3515 first = false; 3516 } 3517 f.write_str("VK_KHR_multiview")?; 3518 } 3519 if self.khr_performance_query { 3520 if !first { 3521 write!(f, ", ")? 3522 } else { 3523 first = false; 3524 } 3525 f.write_str("VK_KHR_performance_query")?; 3526 } 3527 if self.khr_pipeline_executable_properties { 3528 if !first { 3529 write!(f, ", ")? 3530 } else { 3531 first = false; 3532 } 3533 f.write_str("VK_KHR_pipeline_executable_properties")?; 3534 } 3535 if self.khr_pipeline_library { 3536 if !first { 3537 write!(f, ", ")? 3538 } else { 3539 first = false; 3540 } 3541 f.write_str("VK_KHR_pipeline_library")?; 3542 } 3543 if self.khr_portability_subset { 3544 if !first { 3545 write!(f, ", ")? 3546 } else { 3547 first = false; 3548 } 3549 f.write_str("VK_KHR_portability_subset")?; 3550 } 3551 if self.khr_present_id { 3552 if !first { 3553 write!(f, ", ")? 3554 } else { 3555 first = false; 3556 } 3557 f.write_str("VK_KHR_present_id")?; 3558 } 3559 if self.khr_present_wait { 3560 if !first { 3561 write!(f, ", ")? 3562 } else { 3563 first = false; 3564 } 3565 f.write_str("VK_KHR_present_wait")?; 3566 } 3567 if self.khr_push_descriptor { 3568 if !first { 3569 write!(f, ", ")? 3570 } else { 3571 first = false; 3572 } 3573 f.write_str("VK_KHR_push_descriptor")?; 3574 } 3575 if self.khr_ray_query { 3576 if !first { 3577 write!(f, ", ")? 3578 } else { 3579 first = false; 3580 } 3581 f.write_str("VK_KHR_ray_query")?; 3582 } 3583 if self.khr_ray_tracing_maintenance1 { 3584 if !first { 3585 write!(f, ", ")? 3586 } else { 3587 first = false; 3588 } 3589 f.write_str("VK_KHR_ray_tracing_maintenance1")?; 3590 } 3591 if self.khr_ray_tracing_pipeline { 3592 if !first { 3593 write!(f, ", ")? 3594 } else { 3595 first = false; 3596 } 3597 f.write_str("VK_KHR_ray_tracing_pipeline")?; 3598 } 3599 if self.khr_relaxed_block_layout { 3600 if !first { 3601 write!(f, ", ")? 3602 } else { 3603 first = false; 3604 } 3605 f.write_str("VK_KHR_relaxed_block_layout")?; 3606 } 3607 if self.khr_sampler_mirror_clamp_to_edge { 3608 if !first { 3609 write!(f, ", ")? 3610 } else { 3611 first = false; 3612 } 3613 f.write_str("VK_KHR_sampler_mirror_clamp_to_edge")?; 3614 } 3615 if self.khr_sampler_ycbcr_conversion { 3616 if !first { 3617 write!(f, ", ")? 3618 } else { 3619 first = false; 3620 } 3621 f.write_str("VK_KHR_sampler_ycbcr_conversion")?; 3622 } 3623 if self.khr_separate_depth_stencil_layouts { 3624 if !first { 3625 write!(f, ", ")? 3626 } else { 3627 first = false; 3628 } 3629 f.write_str("VK_KHR_separate_depth_stencil_layouts")?; 3630 } 3631 if self.khr_shader_atomic_int64 { 3632 if !first { 3633 write!(f, ", ")? 3634 } else { 3635 first = false; 3636 } 3637 f.write_str("VK_KHR_shader_atomic_int64")?; 3638 } 3639 if self.khr_shader_clock { 3640 if !first { 3641 write!(f, ", ")? 3642 } else { 3643 first = false; 3644 } 3645 f.write_str("VK_KHR_shader_clock")?; 3646 } 3647 if self.khr_shader_draw_parameters { 3648 if !first { 3649 write!(f, ", ")? 3650 } else { 3651 first = false; 3652 } 3653 f.write_str("VK_KHR_shader_draw_parameters")?; 3654 } 3655 if self.khr_shader_float16_int8 { 3656 if !first { 3657 write!(f, ", ")? 3658 } else { 3659 first = false; 3660 } 3661 f.write_str("VK_KHR_shader_float16_int8")?; 3662 } 3663 if self.khr_shader_float_controls { 3664 if !first { 3665 write!(f, ", ")? 3666 } else { 3667 first = false; 3668 } 3669 f.write_str("VK_KHR_shader_float_controls")?; 3670 } 3671 if self.khr_shader_integer_dot_product { 3672 if !first { 3673 write!(f, ", ")? 3674 } else { 3675 first = false; 3676 } 3677 f.write_str("VK_KHR_shader_integer_dot_product")?; 3678 } 3679 if self.khr_shader_non_semantic_info { 3680 if !first { 3681 write!(f, ", ")? 3682 } else { 3683 first = false; 3684 } 3685 f.write_str("VK_KHR_shader_non_semantic_info")?; 3686 } 3687 if self.khr_shader_subgroup_extended_types { 3688 if !first { 3689 write!(f, ", ")? 3690 } else { 3691 first = false; 3692 } 3693 f.write_str("VK_KHR_shader_subgroup_extended_types")?; 3694 } 3695 if self.khr_shader_subgroup_uniform_control_flow { 3696 if !first { 3697 write!(f, ", ")? 3698 } else { 3699 first = false; 3700 } 3701 f.write_str("VK_KHR_shader_subgroup_uniform_control_flow")?; 3702 } 3703 if self.khr_shader_terminate_invocation { 3704 if !first { 3705 write!(f, ", ")? 3706 } else { 3707 first = false; 3708 } 3709 f.write_str("VK_KHR_shader_terminate_invocation")?; 3710 } 3711 if self.khr_shared_presentable_image { 3712 if !first { 3713 write!(f, ", ")? 3714 } else { 3715 first = false; 3716 } 3717 f.write_str("VK_KHR_shared_presentable_image")?; 3718 } 3719 if self.khr_spirv_1_4 { 3720 if !first { 3721 write!(f, ", ")? 3722 } else { 3723 first = false; 3724 } 3725 f.write_str("VK_KHR_spirv_1_4")?; 3726 } 3727 if self.khr_storage_buffer_storage_class { 3728 if !first { 3729 write!(f, ", ")? 3730 } else { 3731 first = false; 3732 } 3733 f.write_str("VK_KHR_storage_buffer_storage_class")?; 3734 } 3735 if self.khr_swapchain { 3736 if !first { 3737 write!(f, ", ")? 3738 } else { 3739 first = false; 3740 } 3741 f.write_str("VK_KHR_swapchain")?; 3742 } 3743 if self.khr_swapchain_mutable_format { 3744 if !first { 3745 write!(f, ", ")? 3746 } else { 3747 first = false; 3748 } 3749 f.write_str("VK_KHR_swapchain_mutable_format")?; 3750 } 3751 if self.khr_synchronization2 { 3752 if !first { 3753 write!(f, ", ")? 3754 } else { 3755 first = false; 3756 } 3757 f.write_str("VK_KHR_synchronization2")?; 3758 } 3759 if self.khr_timeline_semaphore { 3760 if !first { 3761 write!(f, ", ")? 3762 } else { 3763 first = false; 3764 } 3765 f.write_str("VK_KHR_timeline_semaphore")?; 3766 } 3767 if self.khr_uniform_buffer_standard_layout { 3768 if !first { 3769 write!(f, ", ")? 3770 } else { 3771 first = false; 3772 } 3773 f.write_str("VK_KHR_uniform_buffer_standard_layout")?; 3774 } 3775 if self.khr_variable_pointers { 3776 if !first { 3777 write!(f, ", ")? 3778 } else { 3779 first = false; 3780 } 3781 f.write_str("VK_KHR_variable_pointers")?; 3782 } 3783 if self.khr_video_decode_h264 { 3784 if !first { 3785 write!(f, ", ")? 3786 } else { 3787 first = false; 3788 } 3789 f.write_str("VK_KHR_video_decode_h264")?; 3790 } 3791 if self.khr_video_decode_h265 { 3792 if !first { 3793 write!(f, ", ")? 3794 } else { 3795 first = false; 3796 } 3797 f.write_str("VK_KHR_video_decode_h265")?; 3798 } 3799 if self.khr_video_decode_queue { 3800 if !first { 3801 write!(f, ", ")? 3802 } else { 3803 first = false; 3804 } 3805 f.write_str("VK_KHR_video_decode_queue")?; 3806 } 3807 if self.khr_video_encode_queue { 3808 if !first { 3809 write!(f, ", ")? 3810 } else { 3811 first = false; 3812 } 3813 f.write_str("VK_KHR_video_encode_queue")?; 3814 } 3815 if self.khr_video_queue { 3816 if !first { 3817 write!(f, ", ")? 3818 } else { 3819 first = false; 3820 } 3821 f.write_str("VK_KHR_video_queue")?; 3822 } 3823 if self.khr_vulkan_memory_model { 3824 if !first { 3825 write!(f, ", ")? 3826 } else { 3827 first = false; 3828 } 3829 f.write_str("VK_KHR_vulkan_memory_model")?; 3830 } 3831 if self.khr_win32_keyed_mutex { 3832 if !first { 3833 write!(f, ", ")? 3834 } else { 3835 first = false; 3836 } 3837 f.write_str("VK_KHR_win32_keyed_mutex")?; 3838 } 3839 if self.khr_workgroup_memory_explicit_layout { 3840 if !first { 3841 write!(f, ", ")? 3842 } else { 3843 first = false; 3844 } 3845 f.write_str("VK_KHR_workgroup_memory_explicit_layout")?; 3846 } 3847 if self.khr_zero_initialize_workgroup_memory { 3848 if !first { 3849 write!(f, ", ")? 3850 } else { 3851 first = false; 3852 } 3853 f.write_str("VK_KHR_zero_initialize_workgroup_memory")?; 3854 } 3855 if self.ext_4444_formats { 3856 if !first { 3857 write!(f, ", ")? 3858 } else { 3859 first = false; 3860 } 3861 f.write_str("VK_EXT_4444_formats")?; 3862 } 3863 if self.ext_astc_decode_mode { 3864 if !first { 3865 write!(f, ", ")? 3866 } else { 3867 first = false; 3868 } 3869 f.write_str("VK_EXT_astc_decode_mode")?; 3870 } 3871 if self.ext_attachment_feedback_loop_layout { 3872 if !first { 3873 write!(f, ", ")? 3874 } else { 3875 first = false; 3876 } 3877 f.write_str("VK_EXT_attachment_feedback_loop_layout")?; 3878 } 3879 if self.ext_blend_operation_advanced { 3880 if !first { 3881 write!(f, ", ")? 3882 } else { 3883 first = false; 3884 } 3885 f.write_str("VK_EXT_blend_operation_advanced")?; 3886 } 3887 if self.ext_border_color_swizzle { 3888 if !first { 3889 write!(f, ", ")? 3890 } else { 3891 first = false; 3892 } 3893 f.write_str("VK_EXT_border_color_swizzle")?; 3894 } 3895 if self.ext_buffer_device_address { 3896 if !first { 3897 write!(f, ", ")? 3898 } else { 3899 first = false; 3900 } 3901 f.write_str("VK_EXT_buffer_device_address")?; 3902 } 3903 if self.ext_calibrated_timestamps { 3904 if !first { 3905 write!(f, ", ")? 3906 } else { 3907 first = false; 3908 } 3909 f.write_str("VK_EXT_calibrated_timestamps")?; 3910 } 3911 if self.ext_color_write_enable { 3912 if !first { 3913 write!(f, ", ")? 3914 } else { 3915 first = false; 3916 } 3917 f.write_str("VK_EXT_color_write_enable")?; 3918 } 3919 if self.ext_conditional_rendering { 3920 if !first { 3921 write!(f, ", ")? 3922 } else { 3923 first = false; 3924 } 3925 f.write_str("VK_EXT_conditional_rendering")?; 3926 } 3927 if self.ext_conservative_rasterization { 3928 if !first { 3929 write!(f, ", ")? 3930 } else { 3931 first = false; 3932 } 3933 f.write_str("VK_EXT_conservative_rasterization")?; 3934 } 3935 if self.ext_custom_border_color { 3936 if !first { 3937 write!(f, ", ")? 3938 } else { 3939 first = false; 3940 } 3941 f.write_str("VK_EXT_custom_border_color")?; 3942 } 3943 if self.ext_debug_marker { 3944 if !first { 3945 write!(f, ", ")? 3946 } else { 3947 first = false; 3948 } 3949 f.write_str("VK_EXT_debug_marker")?; 3950 } 3951 if self.ext_depth_clamp_zero_one { 3952 if !first { 3953 write!(f, ", ")? 3954 } else { 3955 first = false; 3956 } 3957 f.write_str("VK_EXT_depth_clamp_zero_one")?; 3958 } 3959 if self.ext_depth_clip_control { 3960 if !first { 3961 write!(f, ", ")? 3962 } else { 3963 first = false; 3964 } 3965 f.write_str("VK_EXT_depth_clip_control")?; 3966 } 3967 if self.ext_depth_clip_enable { 3968 if !first { 3969 write!(f, ", ")? 3970 } else { 3971 first = false; 3972 } 3973 f.write_str("VK_EXT_depth_clip_enable")?; 3974 } 3975 if self.ext_depth_range_unrestricted { 3976 if !first { 3977 write!(f, ", ")? 3978 } else { 3979 first = false; 3980 } 3981 f.write_str("VK_EXT_depth_range_unrestricted")?; 3982 } 3983 if self.ext_descriptor_buffer { 3984 if !first { 3985 write!(f, ", ")? 3986 } else { 3987 first = false; 3988 } 3989 f.write_str("VK_EXT_descriptor_buffer")?; 3990 } 3991 if self.ext_descriptor_indexing { 3992 if !first { 3993 write!(f, ", ")? 3994 } else { 3995 first = false; 3996 } 3997 f.write_str("VK_EXT_descriptor_indexing")?; 3998 } 3999 if self.ext_device_address_binding_report { 4000 if !first { 4001 write!(f, ", ")? 4002 } else { 4003 first = false; 4004 } 4005 f.write_str("VK_EXT_device_address_binding_report")?; 4006 } 4007 if self.ext_device_fault { 4008 if !first { 4009 write!(f, ", ")? 4010 } else { 4011 first = false; 4012 } 4013 f.write_str("VK_EXT_device_fault")?; 4014 } 4015 if self.ext_device_memory_report { 4016 if !first { 4017 write!(f, ", ")? 4018 } else { 4019 first = false; 4020 } 4021 f.write_str("VK_EXT_device_memory_report")?; 4022 } 4023 if self.ext_discard_rectangles { 4024 if !first { 4025 write!(f, ", ")? 4026 } else { 4027 first = false; 4028 } 4029 f.write_str("VK_EXT_discard_rectangles")?; 4030 } 4031 if self.ext_display_control { 4032 if !first { 4033 write!(f, ", ")? 4034 } else { 4035 first = false; 4036 } 4037 f.write_str("VK_EXT_display_control")?; 4038 } 4039 if self.ext_extended_dynamic_state { 4040 if !first { 4041 write!(f, ", ")? 4042 } else { 4043 first = false; 4044 } 4045 f.write_str("VK_EXT_extended_dynamic_state")?; 4046 } 4047 if self.ext_extended_dynamic_state2 { 4048 if !first { 4049 write!(f, ", ")? 4050 } else { 4051 first = false; 4052 } 4053 f.write_str("VK_EXT_extended_dynamic_state2")?; 4054 } 4055 if self.ext_extended_dynamic_state3 { 4056 if !first { 4057 write!(f, ", ")? 4058 } else { 4059 first = false; 4060 } 4061 f.write_str("VK_EXT_extended_dynamic_state3")?; 4062 } 4063 if self.ext_external_memory_dma_buf { 4064 if !first { 4065 write!(f, ", ")? 4066 } else { 4067 first = false; 4068 } 4069 f.write_str("VK_EXT_external_memory_dma_buf")?; 4070 } 4071 if self.ext_external_memory_host { 4072 if !first { 4073 write!(f, ", ")? 4074 } else { 4075 first = false; 4076 } 4077 f.write_str("VK_EXT_external_memory_host")?; 4078 } 4079 if self.ext_filter_cubic { 4080 if !first { 4081 write!(f, ", ")? 4082 } else { 4083 first = false; 4084 } 4085 f.write_str("VK_EXT_filter_cubic")?; 4086 } 4087 if self.ext_fragment_density_map { 4088 if !first { 4089 write!(f, ", ")? 4090 } else { 4091 first = false; 4092 } 4093 f.write_str("VK_EXT_fragment_density_map")?; 4094 } 4095 if self.ext_fragment_density_map2 { 4096 if !first { 4097 write!(f, ", ")? 4098 } else { 4099 first = false; 4100 } 4101 f.write_str("VK_EXT_fragment_density_map2")?; 4102 } 4103 if self.ext_fragment_shader_interlock { 4104 if !first { 4105 write!(f, ", ")? 4106 } else { 4107 first = false; 4108 } 4109 f.write_str("VK_EXT_fragment_shader_interlock")?; 4110 } 4111 if self.ext_full_screen_exclusive { 4112 if !first { 4113 write!(f, ", ")? 4114 } else { 4115 first = false; 4116 } 4117 f.write_str("VK_EXT_full_screen_exclusive")?; 4118 } 4119 if self.ext_global_priority { 4120 if !first { 4121 write!(f, ", ")? 4122 } else { 4123 first = false; 4124 } 4125 f.write_str("VK_EXT_global_priority")?; 4126 } 4127 if self.ext_global_priority_query { 4128 if !first { 4129 write!(f, ", ")? 4130 } else { 4131 first = false; 4132 } 4133 f.write_str("VK_EXT_global_priority_query")?; 4134 } 4135 if self.ext_graphics_pipeline_library { 4136 if !first { 4137 write!(f, ", ")? 4138 } else { 4139 first = false; 4140 } 4141 f.write_str("VK_EXT_graphics_pipeline_library")?; 4142 } 4143 if self.ext_hdr_metadata { 4144 if !first { 4145 write!(f, ", ")? 4146 } else { 4147 first = false; 4148 } 4149 f.write_str("VK_EXT_hdr_metadata")?; 4150 } 4151 if self.ext_host_query_reset { 4152 if !first { 4153 write!(f, ", ")? 4154 } else { 4155 first = false; 4156 } 4157 f.write_str("VK_EXT_host_query_reset")?; 4158 } 4159 if self.ext_image_2d_view_of_3d { 4160 if !first { 4161 write!(f, ", ")? 4162 } else { 4163 first = false; 4164 } 4165 f.write_str("VK_EXT_image_2d_view_of_3d")?; 4166 } 4167 if self.ext_image_compression_control { 4168 if !first { 4169 write!(f, ", ")? 4170 } else { 4171 first = false; 4172 } 4173 f.write_str("VK_EXT_image_compression_control")?; 4174 } 4175 if self.ext_image_compression_control_swapchain { 4176 if !first { 4177 write!(f, ", ")? 4178 } else { 4179 first = false; 4180 } 4181 f.write_str("VK_EXT_image_compression_control_swapchain")?; 4182 } 4183 if self.ext_image_drm_format_modifier { 4184 if !first { 4185 write!(f, ", ")? 4186 } else { 4187 first = false; 4188 } 4189 f.write_str("VK_EXT_image_drm_format_modifier")?; 4190 } 4191 if self.ext_image_robustness { 4192 if !first { 4193 write!(f, ", ")? 4194 } else { 4195 first = false; 4196 } 4197 f.write_str("VK_EXT_image_robustness")?; 4198 } 4199 if self.ext_image_view_min_lod { 4200 if !first { 4201 write!(f, ", ")? 4202 } else { 4203 first = false; 4204 } 4205 f.write_str("VK_EXT_image_view_min_lod")?; 4206 } 4207 if self.ext_index_type_uint8 { 4208 if !first { 4209 write!(f, ", ")? 4210 } else { 4211 first = false; 4212 } 4213 f.write_str("VK_EXT_index_type_uint8")?; 4214 } 4215 if self.ext_inline_uniform_block { 4216 if !first { 4217 write!(f, ", ")? 4218 } else { 4219 first = false; 4220 } 4221 f.write_str("VK_EXT_inline_uniform_block")?; 4222 } 4223 if self.ext_legacy_dithering { 4224 if !first { 4225 write!(f, ", ")? 4226 } else { 4227 first = false; 4228 } 4229 f.write_str("VK_EXT_legacy_dithering")?; 4230 } 4231 if self.ext_line_rasterization { 4232 if !first { 4233 write!(f, ", ")? 4234 } else { 4235 first = false; 4236 } 4237 f.write_str("VK_EXT_line_rasterization")?; 4238 } 4239 if self.ext_load_store_op_none { 4240 if !first { 4241 write!(f, ", ")? 4242 } else { 4243 first = false; 4244 } 4245 f.write_str("VK_EXT_load_store_op_none")?; 4246 } 4247 if self.ext_memory_budget { 4248 if !first { 4249 write!(f, ", ")? 4250 } else { 4251 first = false; 4252 } 4253 f.write_str("VK_EXT_memory_budget")?; 4254 } 4255 if self.ext_memory_priority { 4256 if !first { 4257 write!(f, ", ")? 4258 } else { 4259 first = false; 4260 } 4261 f.write_str("VK_EXT_memory_priority")?; 4262 } 4263 if self.ext_mesh_shader { 4264 if !first { 4265 write!(f, ", ")? 4266 } else { 4267 first = false; 4268 } 4269 f.write_str("VK_EXT_mesh_shader")?; 4270 } 4271 if self.ext_metal_objects { 4272 if !first { 4273 write!(f, ", ")? 4274 } else { 4275 first = false; 4276 } 4277 f.write_str("VK_EXT_metal_objects")?; 4278 } 4279 if self.ext_multi_draw { 4280 if !first { 4281 write!(f, ", ")? 4282 } else { 4283 first = false; 4284 } 4285 f.write_str("VK_EXT_multi_draw")?; 4286 } 4287 if self.ext_multisampled_render_to_single_sampled { 4288 if !first { 4289 write!(f, ", ")? 4290 } else { 4291 first = false; 4292 } 4293 f.write_str("VK_EXT_multisampled_render_to_single_sampled")?; 4294 } 4295 if self.ext_mutable_descriptor_type { 4296 if !first { 4297 write!(f, ", ")? 4298 } else { 4299 first = false; 4300 } 4301 f.write_str("VK_EXT_mutable_descriptor_type")?; 4302 } 4303 if self.ext_non_seamless_cube_map { 4304 if !first { 4305 write!(f, ", ")? 4306 } else { 4307 first = false; 4308 } 4309 f.write_str("VK_EXT_non_seamless_cube_map")?; 4310 } 4311 if self.ext_opacity_micromap { 4312 if !first { 4313 write!(f, ", ")? 4314 } else { 4315 first = false; 4316 } 4317 f.write_str("VK_EXT_opacity_micromap")?; 4318 } 4319 if self.ext_pageable_device_local_memory { 4320 if !first { 4321 write!(f, ", ")? 4322 } else { 4323 first = false; 4324 } 4325 f.write_str("VK_EXT_pageable_device_local_memory")?; 4326 } 4327 if self.ext_pci_bus_info { 4328 if !first { 4329 write!(f, ", ")? 4330 } else { 4331 first = false; 4332 } 4333 f.write_str("VK_EXT_pci_bus_info")?; 4334 } 4335 if self.ext_physical_device_drm { 4336 if !first { 4337 write!(f, ", ")? 4338 } else { 4339 first = false; 4340 } 4341 f.write_str("VK_EXT_physical_device_drm")?; 4342 } 4343 if self.ext_pipeline_creation_cache_control { 4344 if !first { 4345 write!(f, ", ")? 4346 } else { 4347 first = false; 4348 } 4349 f.write_str("VK_EXT_pipeline_creation_cache_control")?; 4350 } 4351 if self.ext_pipeline_creation_feedback { 4352 if !first { 4353 write!(f, ", ")? 4354 } else { 4355 first = false; 4356 } 4357 f.write_str("VK_EXT_pipeline_creation_feedback")?; 4358 } 4359 if self.ext_pipeline_properties { 4360 if !first { 4361 write!(f, ", ")? 4362 } else { 4363 first = false; 4364 } 4365 f.write_str("VK_EXT_pipeline_properties")?; 4366 } 4367 if self.ext_pipeline_protected_access { 4368 if !first { 4369 write!(f, ", ")? 4370 } else { 4371 first = false; 4372 } 4373 f.write_str("VK_EXT_pipeline_protected_access")?; 4374 } 4375 if self.ext_pipeline_robustness { 4376 if !first { 4377 write!(f, ", ")? 4378 } else { 4379 first = false; 4380 } 4381 f.write_str("VK_EXT_pipeline_robustness")?; 4382 } 4383 if self.ext_post_depth_coverage { 4384 if !first { 4385 write!(f, ", ")? 4386 } else { 4387 first = false; 4388 } 4389 f.write_str("VK_EXT_post_depth_coverage")?; 4390 } 4391 if self.ext_primitive_topology_list_restart { 4392 if !first { 4393 write!(f, ", ")? 4394 } else { 4395 first = false; 4396 } 4397 f.write_str("VK_EXT_primitive_topology_list_restart")?; 4398 } 4399 if self.ext_primitives_generated_query { 4400 if !first { 4401 write!(f, ", ")? 4402 } else { 4403 first = false; 4404 } 4405 f.write_str("VK_EXT_primitives_generated_query")?; 4406 } 4407 if self.ext_private_data { 4408 if !first { 4409 write!(f, ", ")? 4410 } else { 4411 first = false; 4412 } 4413 f.write_str("VK_EXT_private_data")?; 4414 } 4415 if self.ext_provoking_vertex { 4416 if !first { 4417 write!(f, ", ")? 4418 } else { 4419 first = false; 4420 } 4421 f.write_str("VK_EXT_provoking_vertex")?; 4422 } 4423 if self.ext_queue_family_foreign { 4424 if !first { 4425 write!(f, ", ")? 4426 } else { 4427 first = false; 4428 } 4429 f.write_str("VK_EXT_queue_family_foreign")?; 4430 } 4431 if self.ext_rasterization_order_attachment_access { 4432 if !first { 4433 write!(f, ", ")? 4434 } else { 4435 first = false; 4436 } 4437 f.write_str("VK_EXT_rasterization_order_attachment_access")?; 4438 } 4439 if self.ext_rgba10x6_formats { 4440 if !first { 4441 write!(f, ", ")? 4442 } else { 4443 first = false; 4444 } 4445 f.write_str("VK_EXT_rgba10x6_formats")?; 4446 } 4447 if self.ext_robustness2 { 4448 if !first { 4449 write!(f, ", ")? 4450 } else { 4451 first = false; 4452 } 4453 f.write_str("VK_EXT_robustness2")?; 4454 } 4455 if self.ext_sample_locations { 4456 if !first { 4457 write!(f, ", ")? 4458 } else { 4459 first = false; 4460 } 4461 f.write_str("VK_EXT_sample_locations")?; 4462 } 4463 if self.ext_sampler_filter_minmax { 4464 if !first { 4465 write!(f, ", ")? 4466 } else { 4467 first = false; 4468 } 4469 f.write_str("VK_EXT_sampler_filter_minmax")?; 4470 } 4471 if self.ext_scalar_block_layout { 4472 if !first { 4473 write!(f, ", ")? 4474 } else { 4475 first = false; 4476 } 4477 f.write_str("VK_EXT_scalar_block_layout")?; 4478 } 4479 if self.ext_separate_stencil_usage { 4480 if !first { 4481 write!(f, ", ")? 4482 } else { 4483 first = false; 4484 } 4485 f.write_str("VK_EXT_separate_stencil_usage")?; 4486 } 4487 if self.ext_shader_atomic_float { 4488 if !first { 4489 write!(f, ", ")? 4490 } else { 4491 first = false; 4492 } 4493 f.write_str("VK_EXT_shader_atomic_float")?; 4494 } 4495 if self.ext_shader_atomic_float2 { 4496 if !first { 4497 write!(f, ", ")? 4498 } else { 4499 first = false; 4500 } 4501 f.write_str("VK_EXT_shader_atomic_float2")?; 4502 } 4503 if self.ext_shader_demote_to_helper_invocation { 4504 if !first { 4505 write!(f, ", ")? 4506 } else { 4507 first = false; 4508 } 4509 f.write_str("VK_EXT_shader_demote_to_helper_invocation")?; 4510 } 4511 if self.ext_shader_image_atomic_int64 { 4512 if !first { 4513 write!(f, ", ")? 4514 } else { 4515 first = false; 4516 } 4517 f.write_str("VK_EXT_shader_image_atomic_int64")?; 4518 } 4519 if self.ext_shader_module_identifier { 4520 if !first { 4521 write!(f, ", ")? 4522 } else { 4523 first = false; 4524 } 4525 f.write_str("VK_EXT_shader_module_identifier")?; 4526 } 4527 if self.ext_shader_stencil_export { 4528 if !first { 4529 write!(f, ", ")? 4530 } else { 4531 first = false; 4532 } 4533 f.write_str("VK_EXT_shader_stencil_export")?; 4534 } 4535 if self.ext_shader_subgroup_ballot { 4536 if !first { 4537 write!(f, ", ")? 4538 } else { 4539 first = false; 4540 } 4541 f.write_str("VK_EXT_shader_subgroup_ballot")?; 4542 } 4543 if self.ext_shader_subgroup_vote { 4544 if !first { 4545 write!(f, ", ")? 4546 } else { 4547 first = false; 4548 } 4549 f.write_str("VK_EXT_shader_subgroup_vote")?; 4550 } 4551 if self.ext_shader_viewport_index_layer { 4552 if !first { 4553 write!(f, ", ")? 4554 } else { 4555 first = false; 4556 } 4557 f.write_str("VK_EXT_shader_viewport_index_layer")?; 4558 } 4559 if self.ext_subgroup_size_control { 4560 if !first { 4561 write!(f, ", ")? 4562 } else { 4563 first = false; 4564 } 4565 f.write_str("VK_EXT_subgroup_size_control")?; 4566 } 4567 if self.ext_subpass_merge_feedback { 4568 if !first { 4569 write!(f, ", ")? 4570 } else { 4571 first = false; 4572 } 4573 f.write_str("VK_EXT_subpass_merge_feedback")?; 4574 } 4575 if self.ext_swapchain_maintenance1 { 4576 if !first { 4577 write!(f, ", ")? 4578 } else { 4579 first = false; 4580 } 4581 f.write_str("VK_EXT_swapchain_maintenance1")?; 4582 } 4583 if self.ext_texel_buffer_alignment { 4584 if !first { 4585 write!(f, ", ")? 4586 } else { 4587 first = false; 4588 } 4589 f.write_str("VK_EXT_texel_buffer_alignment")?; 4590 } 4591 if self.ext_texture_compression_astc_hdr { 4592 if !first { 4593 write!(f, ", ")? 4594 } else { 4595 first = false; 4596 } 4597 f.write_str("VK_EXT_texture_compression_astc_hdr")?; 4598 } 4599 if self.ext_tooling_info { 4600 if !first { 4601 write!(f, ", ")? 4602 } else { 4603 first = false; 4604 } 4605 f.write_str("VK_EXT_tooling_info")?; 4606 } 4607 if self.ext_transform_feedback { 4608 if !first { 4609 write!(f, ", ")? 4610 } else { 4611 first = false; 4612 } 4613 f.write_str("VK_EXT_transform_feedback")?; 4614 } 4615 if self.ext_validation_cache { 4616 if !first { 4617 write!(f, ", ")? 4618 } else { 4619 first = false; 4620 } 4621 f.write_str("VK_EXT_validation_cache")?; 4622 } 4623 if self.ext_vertex_attribute_divisor { 4624 if !first { 4625 write!(f, ", ")? 4626 } else { 4627 first = false; 4628 } 4629 f.write_str("VK_EXT_vertex_attribute_divisor")?; 4630 } 4631 if self.ext_vertex_input_dynamic_state { 4632 if !first { 4633 write!(f, ", ")? 4634 } else { 4635 first = false; 4636 } 4637 f.write_str("VK_EXT_vertex_input_dynamic_state")?; 4638 } 4639 if self.ext_video_encode_h264 { 4640 if !first { 4641 write!(f, ", ")? 4642 } else { 4643 first = false; 4644 } 4645 f.write_str("VK_EXT_video_encode_h264")?; 4646 } 4647 if self.ext_video_encode_h265 { 4648 if !first { 4649 write!(f, ", ")? 4650 } else { 4651 first = false; 4652 } 4653 f.write_str("VK_EXT_video_encode_h265")?; 4654 } 4655 if self.ext_ycbcr_2plane_444_formats { 4656 if !first { 4657 write!(f, ", ")? 4658 } else { 4659 first = false; 4660 } 4661 f.write_str("VK_EXT_ycbcr_2plane_444_formats")?; 4662 } 4663 if self.ext_ycbcr_image_arrays { 4664 if !first { 4665 write!(f, ", ")? 4666 } else { 4667 first = false; 4668 } 4669 f.write_str("VK_EXT_ycbcr_image_arrays")?; 4670 } 4671 if self.amd_buffer_marker { 4672 if !first { 4673 write!(f, ", ")? 4674 } else { 4675 first = false; 4676 } 4677 f.write_str("VK_AMD_buffer_marker")?; 4678 } 4679 if self.amd_device_coherent_memory { 4680 if !first { 4681 write!(f, ", ")? 4682 } else { 4683 first = false; 4684 } 4685 f.write_str("VK_AMD_device_coherent_memory")?; 4686 } 4687 if self.amd_display_native_hdr { 4688 if !first { 4689 write!(f, ", ")? 4690 } else { 4691 first = false; 4692 } 4693 f.write_str("VK_AMD_display_native_hdr")?; 4694 } 4695 if self.amd_draw_indirect_count { 4696 if !first { 4697 write!(f, ", ")? 4698 } else { 4699 first = false; 4700 } 4701 f.write_str("VK_AMD_draw_indirect_count")?; 4702 } 4703 if self.amd_gcn_shader { 4704 if !first { 4705 write!(f, ", ")? 4706 } else { 4707 first = false; 4708 } 4709 f.write_str("VK_AMD_gcn_shader")?; 4710 } 4711 if self.amd_gpu_shader_half_float { 4712 if !first { 4713 write!(f, ", ")? 4714 } else { 4715 first = false; 4716 } 4717 f.write_str("VK_AMD_gpu_shader_half_float")?; 4718 } 4719 if self.amd_gpu_shader_int16 { 4720 if !first { 4721 write!(f, ", ")? 4722 } else { 4723 first = false; 4724 } 4725 f.write_str("VK_AMD_gpu_shader_int16")?; 4726 } 4727 if self.amd_memory_overallocation_behavior { 4728 if !first { 4729 write!(f, ", ")? 4730 } else { 4731 first = false; 4732 } 4733 f.write_str("VK_AMD_memory_overallocation_behavior")?; 4734 } 4735 if self.amd_mixed_attachment_samples { 4736 if !first { 4737 write!(f, ", ")? 4738 } else { 4739 first = false; 4740 } 4741 f.write_str("VK_AMD_mixed_attachment_samples")?; 4742 } 4743 if self.amd_pipeline_compiler_control { 4744 if !first { 4745 write!(f, ", ")? 4746 } else { 4747 first = false; 4748 } 4749 f.write_str("VK_AMD_pipeline_compiler_control")?; 4750 } 4751 if self.amd_rasterization_order { 4752 if !first { 4753 write!(f, ", ")? 4754 } else { 4755 first = false; 4756 } 4757 f.write_str("VK_AMD_rasterization_order")?; 4758 } 4759 if self.amd_shader_ballot { 4760 if !first { 4761 write!(f, ", ")? 4762 } else { 4763 first = false; 4764 } 4765 f.write_str("VK_AMD_shader_ballot")?; 4766 } 4767 if self.amd_shader_core_properties { 4768 if !first { 4769 write!(f, ", ")? 4770 } else { 4771 first = false; 4772 } 4773 f.write_str("VK_AMD_shader_core_properties")?; 4774 } 4775 if self.amd_shader_core_properties2 { 4776 if !first { 4777 write!(f, ", ")? 4778 } else { 4779 first = false; 4780 } 4781 f.write_str("VK_AMD_shader_core_properties2")?; 4782 } 4783 if self.amd_shader_early_and_late_fragment_tests { 4784 if !first { 4785 write!(f, ", ")? 4786 } else { 4787 first = false; 4788 } 4789 f.write_str("VK_AMD_shader_early_and_late_fragment_tests")?; 4790 } 4791 if self.amd_shader_explicit_vertex_parameter { 4792 if !first { 4793 write!(f, ", ")? 4794 } else { 4795 first = false; 4796 } 4797 f.write_str("VK_AMD_shader_explicit_vertex_parameter")?; 4798 } 4799 if self.amd_shader_fragment_mask { 4800 if !first { 4801 write!(f, ", ")? 4802 } else { 4803 first = false; 4804 } 4805 f.write_str("VK_AMD_shader_fragment_mask")?; 4806 } 4807 if self.amd_shader_image_load_store_lod { 4808 if !first { 4809 write!(f, ", ")? 4810 } else { 4811 first = false; 4812 } 4813 f.write_str("VK_AMD_shader_image_load_store_lod")?; 4814 } 4815 if self.amd_shader_info { 4816 if !first { 4817 write!(f, ", ")? 4818 } else { 4819 first = false; 4820 } 4821 f.write_str("VK_AMD_shader_info")?; 4822 } 4823 if self.amd_shader_trinary_minmax { 4824 if !first { 4825 write!(f, ", ")? 4826 } else { 4827 first = false; 4828 } 4829 f.write_str("VK_AMD_shader_trinary_minmax")?; 4830 } 4831 if self.amd_texture_gather_bias_lod { 4832 if !first { 4833 write!(f, ", ")? 4834 } else { 4835 first = false; 4836 } 4837 f.write_str("VK_AMD_texture_gather_bias_lod")?; 4838 } 4839 if self.android_external_memory_android_hardware_buffer { 4840 if !first { 4841 write!(f, ", ")? 4842 } else { 4843 first = false; 4844 } 4845 f.write_str("VK_ANDROID_external_memory_android_hardware_buffer")?; 4846 } 4847 if self.arm_rasterization_order_attachment_access { 4848 if !first { 4849 write!(f, ", ")? 4850 } else { 4851 first = false; 4852 } 4853 f.write_str("VK_ARM_rasterization_order_attachment_access")?; 4854 } 4855 if self.arm_shader_core_builtins { 4856 if !first { 4857 write!(f, ", ")? 4858 } else { 4859 first = false; 4860 } 4861 f.write_str("VK_ARM_shader_core_builtins")?; 4862 } 4863 if self.fuchsia_buffer_collection { 4864 if !first { 4865 write!(f, ", ")? 4866 } else { 4867 first = false; 4868 } 4869 f.write_str("VK_FUCHSIA_buffer_collection")?; 4870 } 4871 if self.fuchsia_external_memory { 4872 if !first { 4873 write!(f, ", ")? 4874 } else { 4875 first = false; 4876 } 4877 f.write_str("VK_FUCHSIA_external_memory")?; 4878 } 4879 if self.fuchsia_external_semaphore { 4880 if !first { 4881 write!(f, ", ")? 4882 } else { 4883 first = false; 4884 } 4885 f.write_str("VK_FUCHSIA_external_semaphore")?; 4886 } 4887 if self.ggp_frame_token { 4888 if !first { 4889 write!(f, ", ")? 4890 } else { 4891 first = false; 4892 } 4893 f.write_str("VK_GGP_frame_token")?; 4894 } 4895 if self.google_decorate_string { 4896 if !first { 4897 write!(f, ", ")? 4898 } else { 4899 first = false; 4900 } 4901 f.write_str("VK_GOOGLE_decorate_string")?; 4902 } 4903 if self.google_display_timing { 4904 if !first { 4905 write!(f, ", ")? 4906 } else { 4907 first = false; 4908 } 4909 f.write_str("VK_GOOGLE_display_timing")?; 4910 } 4911 if self.google_hlsl_functionality1 { 4912 if !first { 4913 write!(f, ", ")? 4914 } else { 4915 first = false; 4916 } 4917 f.write_str("VK_GOOGLE_hlsl_functionality1")?; 4918 } 4919 if self.google_user_type { 4920 if !first { 4921 write!(f, ", ")? 4922 } else { 4923 first = false; 4924 } 4925 f.write_str("VK_GOOGLE_user_type")?; 4926 } 4927 if self.huawei_invocation_mask { 4928 if !first { 4929 write!(f, ", ")? 4930 } else { 4931 first = false; 4932 } 4933 f.write_str("VK_HUAWEI_invocation_mask")?; 4934 } 4935 if self.huawei_subpass_shading { 4936 if !first { 4937 write!(f, ", ")? 4938 } else { 4939 first = false; 4940 } 4941 f.write_str("VK_HUAWEI_subpass_shading")?; 4942 } 4943 if self.img_filter_cubic { 4944 if !first { 4945 write!(f, ", ")? 4946 } else { 4947 first = false; 4948 } 4949 f.write_str("VK_IMG_filter_cubic")?; 4950 } 4951 if self.img_format_pvrtc { 4952 if !first { 4953 write!(f, ", ")? 4954 } else { 4955 first = false; 4956 } 4957 f.write_str("VK_IMG_format_pvrtc")?; 4958 } 4959 if self.intel_performance_query { 4960 if !first { 4961 write!(f, ", ")? 4962 } else { 4963 first = false; 4964 } 4965 f.write_str("VK_INTEL_performance_query")?; 4966 } 4967 if self.intel_shader_integer_functions2 { 4968 if !first { 4969 write!(f, ", ")? 4970 } else { 4971 first = false; 4972 } 4973 f.write_str("VK_INTEL_shader_integer_functions2")?; 4974 } 4975 if self.nvx_binary_import { 4976 if !first { 4977 write!(f, ", ")? 4978 } else { 4979 first = false; 4980 } 4981 f.write_str("VK_NVX_binary_import")?; 4982 } 4983 if self.nvx_image_view_handle { 4984 if !first { 4985 write!(f, ", ")? 4986 } else { 4987 first = false; 4988 } 4989 f.write_str("VK_NVX_image_view_handle")?; 4990 } 4991 if self.nvx_multiview_per_view_attributes { 4992 if !first { 4993 write!(f, ", ")? 4994 } else { 4995 first = false; 4996 } 4997 f.write_str("VK_NVX_multiview_per_view_attributes")?; 4998 } 4999 if self.nv_acquire_winrt_display { 5000 if !first { 5001 write!(f, ", ")? 5002 } else { 5003 first = false; 5004 } 5005 f.write_str("VK_NV_acquire_winrt_display")?; 5006 } 5007 if self.nv_clip_space_w_scaling { 5008 if !first { 5009 write!(f, ", ")? 5010 } else { 5011 first = false; 5012 } 5013 f.write_str("VK_NV_clip_space_w_scaling")?; 5014 } 5015 if self.nv_compute_shader_derivatives { 5016 if !first { 5017 write!(f, ", ")? 5018 } else { 5019 first = false; 5020 } 5021 f.write_str("VK_NV_compute_shader_derivatives")?; 5022 } 5023 if self.nv_cooperative_matrix { 5024 if !first { 5025 write!(f, ", ")? 5026 } else { 5027 first = false; 5028 } 5029 f.write_str("VK_NV_cooperative_matrix")?; 5030 } 5031 if self.nv_copy_memory_indirect { 5032 if !first { 5033 write!(f, ", ")? 5034 } else { 5035 first = false; 5036 } 5037 f.write_str("VK_NV_copy_memory_indirect")?; 5038 } 5039 if self.nv_corner_sampled_image { 5040 if !first { 5041 write!(f, ", ")? 5042 } else { 5043 first = false; 5044 } 5045 f.write_str("VK_NV_corner_sampled_image")?; 5046 } 5047 if self.nv_coverage_reduction_mode { 5048 if !first { 5049 write!(f, ", ")? 5050 } else { 5051 first = false; 5052 } 5053 f.write_str("VK_NV_coverage_reduction_mode")?; 5054 } 5055 if self.nv_dedicated_allocation { 5056 if !first { 5057 write!(f, ", ")? 5058 } else { 5059 first = false; 5060 } 5061 f.write_str("VK_NV_dedicated_allocation")?; 5062 } 5063 if self.nv_dedicated_allocation_image_aliasing { 5064 if !first { 5065 write!(f, ", ")? 5066 } else { 5067 first = false; 5068 } 5069 f.write_str("VK_NV_dedicated_allocation_image_aliasing")?; 5070 } 5071 if self.nv_device_diagnostic_checkpoints { 5072 if !first { 5073 write!(f, ", ")? 5074 } else { 5075 first = false; 5076 } 5077 f.write_str("VK_NV_device_diagnostic_checkpoints")?; 5078 } 5079 if self.nv_device_diagnostics_config { 5080 if !first { 5081 write!(f, ", ")? 5082 } else { 5083 first = false; 5084 } 5085 f.write_str("VK_NV_device_diagnostics_config")?; 5086 } 5087 if self.nv_device_generated_commands { 5088 if !first { 5089 write!(f, ", ")? 5090 } else { 5091 first = false; 5092 } 5093 f.write_str("VK_NV_device_generated_commands")?; 5094 } 5095 if self.nv_external_memory { 5096 if !first { 5097 write!(f, ", ")? 5098 } else { 5099 first = false; 5100 } 5101 f.write_str("VK_NV_external_memory")?; 5102 } 5103 if self.nv_external_memory_rdma { 5104 if !first { 5105 write!(f, ", ")? 5106 } else { 5107 first = false; 5108 } 5109 f.write_str("VK_NV_external_memory_rdma")?; 5110 } 5111 if self.nv_external_memory_win32 { 5112 if !first { 5113 write!(f, ", ")? 5114 } else { 5115 first = false; 5116 } 5117 f.write_str("VK_NV_external_memory_win32")?; 5118 } 5119 if self.nv_fill_rectangle { 5120 if !first { 5121 write!(f, ", ")? 5122 } else { 5123 first = false; 5124 } 5125 f.write_str("VK_NV_fill_rectangle")?; 5126 } 5127 if self.nv_fragment_coverage_to_color { 5128 if !first { 5129 write!(f, ", ")? 5130 } else { 5131 first = false; 5132 } 5133 f.write_str("VK_NV_fragment_coverage_to_color")?; 5134 } 5135 if self.nv_fragment_shader_barycentric { 5136 if !first { 5137 write!(f, ", ")? 5138 } else { 5139 first = false; 5140 } 5141 f.write_str("VK_NV_fragment_shader_barycentric")?; 5142 } 5143 if self.nv_fragment_shading_rate_enums { 5144 if !first { 5145 write!(f, ", ")? 5146 } else { 5147 first = false; 5148 } 5149 f.write_str("VK_NV_fragment_shading_rate_enums")?; 5150 } 5151 if self.nv_framebuffer_mixed_samples { 5152 if !first { 5153 write!(f, ", ")? 5154 } else { 5155 first = false; 5156 } 5157 f.write_str("VK_NV_framebuffer_mixed_samples")?; 5158 } 5159 if self.nv_geometry_shader_passthrough { 5160 if !first { 5161 write!(f, ", ")? 5162 } else { 5163 first = false; 5164 } 5165 f.write_str("VK_NV_geometry_shader_passthrough")?; 5166 } 5167 if self.nv_glsl_shader { 5168 if !first { 5169 write!(f, ", ")? 5170 } else { 5171 first = false; 5172 } 5173 f.write_str("VK_NV_glsl_shader")?; 5174 } 5175 if self.nv_inherited_viewport_scissor { 5176 if !first { 5177 write!(f, ", ")? 5178 } else { 5179 first = false; 5180 } 5181 f.write_str("VK_NV_inherited_viewport_scissor")?; 5182 } 5183 if self.nv_linear_color_attachment { 5184 if !first { 5185 write!(f, ", ")? 5186 } else { 5187 first = false; 5188 } 5189 f.write_str("VK_NV_linear_color_attachment")?; 5190 } 5191 if self.nv_memory_decompression { 5192 if !first { 5193 write!(f, ", ")? 5194 } else { 5195 first = false; 5196 } 5197 f.write_str("VK_NV_memory_decompression")?; 5198 } 5199 if self.nv_mesh_shader { 5200 if !first { 5201 write!(f, ", ")? 5202 } else { 5203 first = false; 5204 } 5205 f.write_str("VK_NV_mesh_shader")?; 5206 } 5207 if self.nv_optical_flow { 5208 if !first { 5209 write!(f, ", ")? 5210 } else { 5211 first = false; 5212 } 5213 f.write_str("VK_NV_optical_flow")?; 5214 } 5215 if self.nv_present_barrier { 5216 if !first { 5217 write!(f, ", ")? 5218 } else { 5219 first = false; 5220 } 5221 f.write_str("VK_NV_present_barrier")?; 5222 } 5223 if self.nv_ray_tracing { 5224 if !first { 5225 write!(f, ", ")? 5226 } else { 5227 first = false; 5228 } 5229 f.write_str("VK_NV_ray_tracing")?; 5230 } 5231 if self.nv_ray_tracing_invocation_reorder { 5232 if !first { 5233 write!(f, ", ")? 5234 } else { 5235 first = false; 5236 } 5237 f.write_str("VK_NV_ray_tracing_invocation_reorder")?; 5238 } 5239 if self.nv_ray_tracing_motion_blur { 5240 if !first { 5241 write!(f, ", ")? 5242 } else { 5243 first = false; 5244 } 5245 f.write_str("VK_NV_ray_tracing_motion_blur")?; 5246 } 5247 if self.nv_representative_fragment_test { 5248 if !first { 5249 write!(f, ", ")? 5250 } else { 5251 first = false; 5252 } 5253 f.write_str("VK_NV_representative_fragment_test")?; 5254 } 5255 if self.nv_sample_mask_override_coverage { 5256 if !first { 5257 write!(f, ", ")? 5258 } else { 5259 first = false; 5260 } 5261 f.write_str("VK_NV_sample_mask_override_coverage")?; 5262 } 5263 if self.nv_scissor_exclusive { 5264 if !first { 5265 write!(f, ", ")? 5266 } else { 5267 first = false; 5268 } 5269 f.write_str("VK_NV_scissor_exclusive")?; 5270 } 5271 if self.nv_shader_image_footprint { 5272 if !first { 5273 write!(f, ", ")? 5274 } else { 5275 first = false; 5276 } 5277 f.write_str("VK_NV_shader_image_footprint")?; 5278 } 5279 if self.nv_shader_sm_builtins { 5280 if !first { 5281 write!(f, ", ")? 5282 } else { 5283 first = false; 5284 } 5285 f.write_str("VK_NV_shader_sm_builtins")?; 5286 } 5287 if self.nv_shader_subgroup_partitioned { 5288 if !first { 5289 write!(f, ", ")? 5290 } else { 5291 first = false; 5292 } 5293 f.write_str("VK_NV_shader_subgroup_partitioned")?; 5294 } 5295 if self.nv_shading_rate_image { 5296 if !first { 5297 write!(f, ", ")? 5298 } else { 5299 first = false; 5300 } 5301 f.write_str("VK_NV_shading_rate_image")?; 5302 } 5303 if self.nv_viewport_array2 { 5304 if !first { 5305 write!(f, ", ")? 5306 } else { 5307 first = false; 5308 } 5309 f.write_str("VK_NV_viewport_array2")?; 5310 } 5311 if self.nv_viewport_swizzle { 5312 if !first { 5313 write!(f, ", ")? 5314 } else { 5315 first = false; 5316 } 5317 f.write_str("VK_NV_viewport_swizzle")?; 5318 } 5319 if self.nv_win32_keyed_mutex { 5320 if !first { 5321 write!(f, ", ")? 5322 } else { 5323 first = false; 5324 } 5325 f.write_str("VK_NV_win32_keyed_mutex")?; 5326 } 5327 if self.qcom_fragment_density_map_offset { 5328 if !first { 5329 write!(f, ", ")? 5330 } else { 5331 first = false; 5332 } 5333 f.write_str("VK_QCOM_fragment_density_map_offset")?; 5334 } 5335 if self.qcom_image_processing { 5336 if !first { 5337 write!(f, ", ")? 5338 } else { 5339 first = false; 5340 } 5341 f.write_str("VK_QCOM_image_processing")?; 5342 } 5343 if self.qcom_multiview_per_view_viewports { 5344 if !first { 5345 write!(f, ", ")? 5346 } else { 5347 first = false; 5348 } 5349 f.write_str("VK_QCOM_multiview_per_view_viewports")?; 5350 } 5351 if self.qcom_render_pass_shader_resolve { 5352 if !first { 5353 write!(f, ", ")? 5354 } else { 5355 first = false; 5356 } 5357 f.write_str("VK_QCOM_render_pass_shader_resolve")?; 5358 } 5359 if self.qcom_render_pass_store_ops { 5360 if !first { 5361 write!(f, ", ")? 5362 } else { 5363 first = false; 5364 } 5365 f.write_str("VK_QCOM_render_pass_store_ops")?; 5366 } 5367 if self.qcom_render_pass_transform { 5368 if !first { 5369 write!(f, ", ")? 5370 } else { 5371 first = false; 5372 } 5373 f.write_str("VK_QCOM_render_pass_transform")?; 5374 } 5375 if self.qcom_rotated_copy_commands { 5376 if !first { 5377 write!(f, ", ")? 5378 } else { 5379 first = false; 5380 } 5381 f.write_str("VK_QCOM_rotated_copy_commands")?; 5382 } 5383 if self.qcom_tile_properties { 5384 if !first { 5385 write!(f, ", ")? 5386 } else { 5387 first = false; 5388 } 5389 f.write_str("VK_QCOM_tile_properties")?; 5390 } 5391 if self.sec_amigo_profiling { 5392 if !first { 5393 write!(f, ", ")? 5394 } else { 5395 first = false; 5396 } 5397 f.write_str("VK_SEC_amigo_profiling")?; 5398 } 5399 if self.valve_descriptor_set_host_mapping { 5400 if !first { 5401 write!(f, ", ")? 5402 } else { 5403 first = false; 5404 } 5405 f.write_str("VK_VALVE_descriptor_set_host_mapping")?; 5406 } 5407 if self.valve_mutable_descriptor_type { 5408 if !first { 5409 write!(f, ", ")? 5410 } else { 5411 first = false; 5412 } 5413 f.write_str("VK_VALVE_mutable_descriptor_type")?; 5414 } 5415 write!(f, "]") 5416 } 5417 } 5418 impl<'a> FromIterator<&'a str> for DeviceExtensions { from_iter<I>(iter: I) -> Self where I: IntoIterator<Item = &'a str>,5419 fn from_iter<I>(iter: I) -> Self 5420 where 5421 I: IntoIterator<Item = &'a str>, 5422 { 5423 let mut extensions = Self::empty(); 5424 for name in iter { 5425 match name { 5426 "VK_KHR_16bit_storage" => { 5427 extensions.khr_16bit_storage = true; 5428 } 5429 "VK_KHR_8bit_storage" => { 5430 extensions.khr_8bit_storage = true; 5431 } 5432 "VK_KHR_acceleration_structure" => { 5433 extensions.khr_acceleration_structure = true; 5434 } 5435 "VK_KHR_bind_memory2" => { 5436 extensions.khr_bind_memory2 = true; 5437 } 5438 "VK_KHR_buffer_device_address" => { 5439 extensions.khr_buffer_device_address = true; 5440 } 5441 "VK_KHR_copy_commands2" => { 5442 extensions.khr_copy_commands2 = true; 5443 } 5444 "VK_KHR_create_renderpass2" => { 5445 extensions.khr_create_renderpass2 = true; 5446 } 5447 "VK_KHR_dedicated_allocation" => { 5448 extensions.khr_dedicated_allocation = true; 5449 } 5450 "VK_KHR_deferred_host_operations" => { 5451 extensions.khr_deferred_host_operations = true; 5452 } 5453 "VK_KHR_depth_stencil_resolve" => { 5454 extensions.khr_depth_stencil_resolve = true; 5455 } 5456 "VK_KHR_descriptor_update_template" => { 5457 extensions.khr_descriptor_update_template = true; 5458 } 5459 "VK_KHR_device_group" => { 5460 extensions.khr_device_group = true; 5461 } 5462 "VK_KHR_display_swapchain" => { 5463 extensions.khr_display_swapchain = true; 5464 } 5465 "VK_KHR_draw_indirect_count" => { 5466 extensions.khr_draw_indirect_count = true; 5467 } 5468 "VK_KHR_driver_properties" => { 5469 extensions.khr_driver_properties = true; 5470 } 5471 "VK_KHR_dynamic_rendering" => { 5472 extensions.khr_dynamic_rendering = true; 5473 } 5474 "VK_KHR_external_fence" => { 5475 extensions.khr_external_fence = true; 5476 } 5477 "VK_KHR_external_fence_fd" => { 5478 extensions.khr_external_fence_fd = true; 5479 } 5480 "VK_KHR_external_fence_win32" => { 5481 extensions.khr_external_fence_win32 = true; 5482 } 5483 "VK_KHR_external_memory" => { 5484 extensions.khr_external_memory = true; 5485 } 5486 "VK_KHR_external_memory_fd" => { 5487 extensions.khr_external_memory_fd = true; 5488 } 5489 "VK_KHR_external_memory_win32" => { 5490 extensions.khr_external_memory_win32 = true; 5491 } 5492 "VK_KHR_external_semaphore" => { 5493 extensions.khr_external_semaphore = true; 5494 } 5495 "VK_KHR_external_semaphore_fd" => { 5496 extensions.khr_external_semaphore_fd = true; 5497 } 5498 "VK_KHR_external_semaphore_win32" => { 5499 extensions.khr_external_semaphore_win32 = true; 5500 } 5501 "VK_KHR_format_feature_flags2" => { 5502 extensions.khr_format_feature_flags2 = true; 5503 } 5504 "VK_KHR_fragment_shader_barycentric" => { 5505 extensions.khr_fragment_shader_barycentric = true; 5506 } 5507 "VK_KHR_fragment_shading_rate" => { 5508 extensions.khr_fragment_shading_rate = true; 5509 } 5510 "VK_KHR_get_memory_requirements2" => { 5511 extensions.khr_get_memory_requirements2 = true; 5512 } 5513 "VK_KHR_global_priority" => { 5514 extensions.khr_global_priority = true; 5515 } 5516 "VK_KHR_image_format_list" => { 5517 extensions.khr_image_format_list = true; 5518 } 5519 "VK_KHR_imageless_framebuffer" => { 5520 extensions.khr_imageless_framebuffer = true; 5521 } 5522 "VK_KHR_incremental_present" => { 5523 extensions.khr_incremental_present = true; 5524 } 5525 "VK_KHR_maintenance1" => { 5526 extensions.khr_maintenance1 = true; 5527 } 5528 "VK_KHR_maintenance2" => { 5529 extensions.khr_maintenance2 = true; 5530 } 5531 "VK_KHR_maintenance3" => { 5532 extensions.khr_maintenance3 = true; 5533 } 5534 "VK_KHR_maintenance4" => { 5535 extensions.khr_maintenance4 = true; 5536 } 5537 "VK_KHR_multiview" => { 5538 extensions.khr_multiview = true; 5539 } 5540 "VK_KHR_performance_query" => { 5541 extensions.khr_performance_query = true; 5542 } 5543 "VK_KHR_pipeline_executable_properties" => { 5544 extensions.khr_pipeline_executable_properties = true; 5545 } 5546 "VK_KHR_pipeline_library" => { 5547 extensions.khr_pipeline_library = true; 5548 } 5549 "VK_KHR_portability_subset" => { 5550 extensions.khr_portability_subset = true; 5551 } 5552 "VK_KHR_present_id" => { 5553 extensions.khr_present_id = true; 5554 } 5555 "VK_KHR_present_wait" => { 5556 extensions.khr_present_wait = true; 5557 } 5558 "VK_KHR_push_descriptor" => { 5559 extensions.khr_push_descriptor = true; 5560 } 5561 "VK_KHR_ray_query" => { 5562 extensions.khr_ray_query = true; 5563 } 5564 "VK_KHR_ray_tracing_maintenance1" => { 5565 extensions.khr_ray_tracing_maintenance1 = true; 5566 } 5567 "VK_KHR_ray_tracing_pipeline" => { 5568 extensions.khr_ray_tracing_pipeline = true; 5569 } 5570 "VK_KHR_relaxed_block_layout" => { 5571 extensions.khr_relaxed_block_layout = true; 5572 } 5573 "VK_KHR_sampler_mirror_clamp_to_edge" => { 5574 extensions.khr_sampler_mirror_clamp_to_edge = true; 5575 } 5576 "VK_KHR_sampler_ycbcr_conversion" => { 5577 extensions.khr_sampler_ycbcr_conversion = true; 5578 } 5579 "VK_KHR_separate_depth_stencil_layouts" => { 5580 extensions.khr_separate_depth_stencil_layouts = true; 5581 } 5582 "VK_KHR_shader_atomic_int64" => { 5583 extensions.khr_shader_atomic_int64 = true; 5584 } 5585 "VK_KHR_shader_clock" => { 5586 extensions.khr_shader_clock = true; 5587 } 5588 "VK_KHR_shader_draw_parameters" => { 5589 extensions.khr_shader_draw_parameters = true; 5590 } 5591 "VK_KHR_shader_float16_int8" => { 5592 extensions.khr_shader_float16_int8 = true; 5593 } 5594 "VK_KHR_shader_float_controls" => { 5595 extensions.khr_shader_float_controls = true; 5596 } 5597 "VK_KHR_shader_integer_dot_product" => { 5598 extensions.khr_shader_integer_dot_product = true; 5599 } 5600 "VK_KHR_shader_non_semantic_info" => { 5601 extensions.khr_shader_non_semantic_info = true; 5602 } 5603 "VK_KHR_shader_subgroup_extended_types" => { 5604 extensions.khr_shader_subgroup_extended_types = true; 5605 } 5606 "VK_KHR_shader_subgroup_uniform_control_flow" => { 5607 extensions.khr_shader_subgroup_uniform_control_flow = true; 5608 } 5609 "VK_KHR_shader_terminate_invocation" => { 5610 extensions.khr_shader_terminate_invocation = true; 5611 } 5612 "VK_KHR_shared_presentable_image" => { 5613 extensions.khr_shared_presentable_image = true; 5614 } 5615 "VK_KHR_spirv_1_4" => { 5616 extensions.khr_spirv_1_4 = true; 5617 } 5618 "VK_KHR_storage_buffer_storage_class" => { 5619 extensions.khr_storage_buffer_storage_class = true; 5620 } 5621 "VK_KHR_swapchain" => { 5622 extensions.khr_swapchain = true; 5623 } 5624 "VK_KHR_swapchain_mutable_format" => { 5625 extensions.khr_swapchain_mutable_format = true; 5626 } 5627 "VK_KHR_synchronization2" => { 5628 extensions.khr_synchronization2 = true; 5629 } 5630 "VK_KHR_timeline_semaphore" => { 5631 extensions.khr_timeline_semaphore = true; 5632 } 5633 "VK_KHR_uniform_buffer_standard_layout" => { 5634 extensions.khr_uniform_buffer_standard_layout = true; 5635 } 5636 "VK_KHR_variable_pointers" => { 5637 extensions.khr_variable_pointers = true; 5638 } 5639 "VK_KHR_video_decode_h264" => { 5640 extensions.khr_video_decode_h264 = true; 5641 } 5642 "VK_KHR_video_decode_h265" => { 5643 extensions.khr_video_decode_h265 = true; 5644 } 5645 "VK_KHR_video_decode_queue" => { 5646 extensions.khr_video_decode_queue = true; 5647 } 5648 "VK_KHR_video_encode_queue" => { 5649 extensions.khr_video_encode_queue = true; 5650 } 5651 "VK_KHR_video_queue" => { 5652 extensions.khr_video_queue = true; 5653 } 5654 "VK_KHR_vulkan_memory_model" => { 5655 extensions.khr_vulkan_memory_model = true; 5656 } 5657 "VK_KHR_win32_keyed_mutex" => { 5658 extensions.khr_win32_keyed_mutex = true; 5659 } 5660 "VK_KHR_workgroup_memory_explicit_layout" => { 5661 extensions.khr_workgroup_memory_explicit_layout = true; 5662 } 5663 "VK_KHR_zero_initialize_workgroup_memory" => { 5664 extensions.khr_zero_initialize_workgroup_memory = true; 5665 } 5666 "VK_EXT_4444_formats" => { 5667 extensions.ext_4444_formats = true; 5668 } 5669 "VK_EXT_astc_decode_mode" => { 5670 extensions.ext_astc_decode_mode = true; 5671 } 5672 "VK_EXT_attachment_feedback_loop_layout" => { 5673 extensions.ext_attachment_feedback_loop_layout = true; 5674 } 5675 "VK_EXT_blend_operation_advanced" => { 5676 extensions.ext_blend_operation_advanced = true; 5677 } 5678 "VK_EXT_border_color_swizzle" => { 5679 extensions.ext_border_color_swizzle = true; 5680 } 5681 "VK_EXT_buffer_device_address" => { 5682 extensions.ext_buffer_device_address = true; 5683 } 5684 "VK_EXT_calibrated_timestamps" => { 5685 extensions.ext_calibrated_timestamps = true; 5686 } 5687 "VK_EXT_color_write_enable" => { 5688 extensions.ext_color_write_enable = true; 5689 } 5690 "VK_EXT_conditional_rendering" => { 5691 extensions.ext_conditional_rendering = true; 5692 } 5693 "VK_EXT_conservative_rasterization" => { 5694 extensions.ext_conservative_rasterization = true; 5695 } 5696 "VK_EXT_custom_border_color" => { 5697 extensions.ext_custom_border_color = true; 5698 } 5699 "VK_EXT_debug_marker" => { 5700 extensions.ext_debug_marker = true; 5701 } 5702 "VK_EXT_depth_clamp_zero_one" => { 5703 extensions.ext_depth_clamp_zero_one = true; 5704 } 5705 "VK_EXT_depth_clip_control" => { 5706 extensions.ext_depth_clip_control = true; 5707 } 5708 "VK_EXT_depth_clip_enable" => { 5709 extensions.ext_depth_clip_enable = true; 5710 } 5711 "VK_EXT_depth_range_unrestricted" => { 5712 extensions.ext_depth_range_unrestricted = true; 5713 } 5714 "VK_EXT_descriptor_buffer" => { 5715 extensions.ext_descriptor_buffer = true; 5716 } 5717 "VK_EXT_descriptor_indexing" => { 5718 extensions.ext_descriptor_indexing = true; 5719 } 5720 "VK_EXT_device_address_binding_report" => { 5721 extensions.ext_device_address_binding_report = true; 5722 } 5723 "VK_EXT_device_fault" => { 5724 extensions.ext_device_fault = true; 5725 } 5726 "VK_EXT_device_memory_report" => { 5727 extensions.ext_device_memory_report = true; 5728 } 5729 "VK_EXT_discard_rectangles" => { 5730 extensions.ext_discard_rectangles = true; 5731 } 5732 "VK_EXT_display_control" => { 5733 extensions.ext_display_control = true; 5734 } 5735 "VK_EXT_extended_dynamic_state" => { 5736 extensions.ext_extended_dynamic_state = true; 5737 } 5738 "VK_EXT_extended_dynamic_state2" => { 5739 extensions.ext_extended_dynamic_state2 = true; 5740 } 5741 "VK_EXT_extended_dynamic_state3" => { 5742 extensions.ext_extended_dynamic_state3 = true; 5743 } 5744 "VK_EXT_external_memory_dma_buf" => { 5745 extensions.ext_external_memory_dma_buf = true; 5746 } 5747 "VK_EXT_external_memory_host" => { 5748 extensions.ext_external_memory_host = true; 5749 } 5750 "VK_EXT_filter_cubic" => { 5751 extensions.ext_filter_cubic = true; 5752 } 5753 "VK_EXT_fragment_density_map" => { 5754 extensions.ext_fragment_density_map = true; 5755 } 5756 "VK_EXT_fragment_density_map2" => { 5757 extensions.ext_fragment_density_map2 = true; 5758 } 5759 "VK_EXT_fragment_shader_interlock" => { 5760 extensions.ext_fragment_shader_interlock = true; 5761 } 5762 "VK_EXT_full_screen_exclusive" => { 5763 extensions.ext_full_screen_exclusive = true; 5764 } 5765 "VK_EXT_global_priority" => { 5766 extensions.ext_global_priority = true; 5767 } 5768 "VK_EXT_global_priority_query" => { 5769 extensions.ext_global_priority_query = true; 5770 } 5771 "VK_EXT_graphics_pipeline_library" => { 5772 extensions.ext_graphics_pipeline_library = true; 5773 } 5774 "VK_EXT_hdr_metadata" => { 5775 extensions.ext_hdr_metadata = true; 5776 } 5777 "VK_EXT_host_query_reset" => { 5778 extensions.ext_host_query_reset = true; 5779 } 5780 "VK_EXT_image_2d_view_of_3d" => { 5781 extensions.ext_image_2d_view_of_3d = true; 5782 } 5783 "VK_EXT_image_compression_control" => { 5784 extensions.ext_image_compression_control = true; 5785 } 5786 "VK_EXT_image_compression_control_swapchain" => { 5787 extensions.ext_image_compression_control_swapchain = true; 5788 } 5789 "VK_EXT_image_drm_format_modifier" => { 5790 extensions.ext_image_drm_format_modifier = true; 5791 } 5792 "VK_EXT_image_robustness" => { 5793 extensions.ext_image_robustness = true; 5794 } 5795 "VK_EXT_image_view_min_lod" => { 5796 extensions.ext_image_view_min_lod = true; 5797 } 5798 "VK_EXT_index_type_uint8" => { 5799 extensions.ext_index_type_uint8 = true; 5800 } 5801 "VK_EXT_inline_uniform_block" => { 5802 extensions.ext_inline_uniform_block = true; 5803 } 5804 "VK_EXT_legacy_dithering" => { 5805 extensions.ext_legacy_dithering = true; 5806 } 5807 "VK_EXT_line_rasterization" => { 5808 extensions.ext_line_rasterization = true; 5809 } 5810 "VK_EXT_load_store_op_none" => { 5811 extensions.ext_load_store_op_none = true; 5812 } 5813 "VK_EXT_memory_budget" => { 5814 extensions.ext_memory_budget = true; 5815 } 5816 "VK_EXT_memory_priority" => { 5817 extensions.ext_memory_priority = true; 5818 } 5819 "VK_EXT_mesh_shader" => { 5820 extensions.ext_mesh_shader = true; 5821 } 5822 "VK_EXT_metal_objects" => { 5823 extensions.ext_metal_objects = true; 5824 } 5825 "VK_EXT_multi_draw" => { 5826 extensions.ext_multi_draw = true; 5827 } 5828 "VK_EXT_multisampled_render_to_single_sampled" => { 5829 extensions.ext_multisampled_render_to_single_sampled = true; 5830 } 5831 "VK_EXT_mutable_descriptor_type" => { 5832 extensions.ext_mutable_descriptor_type = true; 5833 } 5834 "VK_EXT_non_seamless_cube_map" => { 5835 extensions.ext_non_seamless_cube_map = true; 5836 } 5837 "VK_EXT_opacity_micromap" => { 5838 extensions.ext_opacity_micromap = true; 5839 } 5840 "VK_EXT_pageable_device_local_memory" => { 5841 extensions.ext_pageable_device_local_memory = true; 5842 } 5843 "VK_EXT_pci_bus_info" => { 5844 extensions.ext_pci_bus_info = true; 5845 } 5846 "VK_EXT_physical_device_drm" => { 5847 extensions.ext_physical_device_drm = true; 5848 } 5849 "VK_EXT_pipeline_creation_cache_control" => { 5850 extensions.ext_pipeline_creation_cache_control = true; 5851 } 5852 "VK_EXT_pipeline_creation_feedback" => { 5853 extensions.ext_pipeline_creation_feedback = true; 5854 } 5855 "VK_EXT_pipeline_properties" => { 5856 extensions.ext_pipeline_properties = true; 5857 } 5858 "VK_EXT_pipeline_protected_access" => { 5859 extensions.ext_pipeline_protected_access = true; 5860 } 5861 "VK_EXT_pipeline_robustness" => { 5862 extensions.ext_pipeline_robustness = true; 5863 } 5864 "VK_EXT_post_depth_coverage" => { 5865 extensions.ext_post_depth_coverage = true; 5866 } 5867 "VK_EXT_primitive_topology_list_restart" => { 5868 extensions.ext_primitive_topology_list_restart = true; 5869 } 5870 "VK_EXT_primitives_generated_query" => { 5871 extensions.ext_primitives_generated_query = true; 5872 } 5873 "VK_EXT_private_data" => { 5874 extensions.ext_private_data = true; 5875 } 5876 "VK_EXT_provoking_vertex" => { 5877 extensions.ext_provoking_vertex = true; 5878 } 5879 "VK_EXT_queue_family_foreign" => { 5880 extensions.ext_queue_family_foreign = true; 5881 } 5882 "VK_EXT_rasterization_order_attachment_access" => { 5883 extensions.ext_rasterization_order_attachment_access = true; 5884 } 5885 "VK_EXT_rgba10x6_formats" => { 5886 extensions.ext_rgba10x6_formats = true; 5887 } 5888 "VK_EXT_robustness2" => { 5889 extensions.ext_robustness2 = true; 5890 } 5891 "VK_EXT_sample_locations" => { 5892 extensions.ext_sample_locations = true; 5893 } 5894 "VK_EXT_sampler_filter_minmax" => { 5895 extensions.ext_sampler_filter_minmax = true; 5896 } 5897 "VK_EXT_scalar_block_layout" => { 5898 extensions.ext_scalar_block_layout = true; 5899 } 5900 "VK_EXT_separate_stencil_usage" => { 5901 extensions.ext_separate_stencil_usage = true; 5902 } 5903 "VK_EXT_shader_atomic_float" => { 5904 extensions.ext_shader_atomic_float = true; 5905 } 5906 "VK_EXT_shader_atomic_float2" => { 5907 extensions.ext_shader_atomic_float2 = true; 5908 } 5909 "VK_EXT_shader_demote_to_helper_invocation" => { 5910 extensions.ext_shader_demote_to_helper_invocation = true; 5911 } 5912 "VK_EXT_shader_image_atomic_int64" => { 5913 extensions.ext_shader_image_atomic_int64 = true; 5914 } 5915 "VK_EXT_shader_module_identifier" => { 5916 extensions.ext_shader_module_identifier = true; 5917 } 5918 "VK_EXT_shader_stencil_export" => { 5919 extensions.ext_shader_stencil_export = true; 5920 } 5921 "VK_EXT_shader_subgroup_ballot" => { 5922 extensions.ext_shader_subgroup_ballot = true; 5923 } 5924 "VK_EXT_shader_subgroup_vote" => { 5925 extensions.ext_shader_subgroup_vote = true; 5926 } 5927 "VK_EXT_shader_viewport_index_layer" => { 5928 extensions.ext_shader_viewport_index_layer = true; 5929 } 5930 "VK_EXT_subgroup_size_control" => { 5931 extensions.ext_subgroup_size_control = true; 5932 } 5933 "VK_EXT_subpass_merge_feedback" => { 5934 extensions.ext_subpass_merge_feedback = true; 5935 } 5936 "VK_EXT_swapchain_maintenance1" => { 5937 extensions.ext_swapchain_maintenance1 = true; 5938 } 5939 "VK_EXT_texel_buffer_alignment" => { 5940 extensions.ext_texel_buffer_alignment = true; 5941 } 5942 "VK_EXT_texture_compression_astc_hdr" => { 5943 extensions.ext_texture_compression_astc_hdr = true; 5944 } 5945 "VK_EXT_tooling_info" => { 5946 extensions.ext_tooling_info = true; 5947 } 5948 "VK_EXT_transform_feedback" => { 5949 extensions.ext_transform_feedback = true; 5950 } 5951 "VK_EXT_validation_cache" => { 5952 extensions.ext_validation_cache = true; 5953 } 5954 "VK_EXT_vertex_attribute_divisor" => { 5955 extensions.ext_vertex_attribute_divisor = true; 5956 } 5957 "VK_EXT_vertex_input_dynamic_state" => { 5958 extensions.ext_vertex_input_dynamic_state = true; 5959 } 5960 "VK_EXT_video_encode_h264" => { 5961 extensions.ext_video_encode_h264 = true; 5962 } 5963 "VK_EXT_video_encode_h265" => { 5964 extensions.ext_video_encode_h265 = true; 5965 } 5966 "VK_EXT_ycbcr_2plane_444_formats" => { 5967 extensions.ext_ycbcr_2plane_444_formats = true; 5968 } 5969 "VK_EXT_ycbcr_image_arrays" => { 5970 extensions.ext_ycbcr_image_arrays = true; 5971 } 5972 "VK_AMD_buffer_marker" => { 5973 extensions.amd_buffer_marker = true; 5974 } 5975 "VK_AMD_device_coherent_memory" => { 5976 extensions.amd_device_coherent_memory = true; 5977 } 5978 "VK_AMD_display_native_hdr" => { 5979 extensions.amd_display_native_hdr = true; 5980 } 5981 "VK_AMD_draw_indirect_count" => { 5982 extensions.amd_draw_indirect_count = true; 5983 } 5984 "VK_AMD_gcn_shader" => { 5985 extensions.amd_gcn_shader = true; 5986 } 5987 "VK_AMD_gpu_shader_half_float" => { 5988 extensions.amd_gpu_shader_half_float = true; 5989 } 5990 "VK_AMD_gpu_shader_int16" => { 5991 extensions.amd_gpu_shader_int16 = true; 5992 } 5993 "VK_AMD_memory_overallocation_behavior" => { 5994 extensions.amd_memory_overallocation_behavior = true; 5995 } 5996 "VK_AMD_mixed_attachment_samples" => { 5997 extensions.amd_mixed_attachment_samples = true; 5998 } 5999 "VK_AMD_pipeline_compiler_control" => { 6000 extensions.amd_pipeline_compiler_control = true; 6001 } 6002 "VK_AMD_rasterization_order" => { 6003 extensions.amd_rasterization_order = true; 6004 } 6005 "VK_AMD_shader_ballot" => { 6006 extensions.amd_shader_ballot = true; 6007 } 6008 "VK_AMD_shader_core_properties" => { 6009 extensions.amd_shader_core_properties = true; 6010 } 6011 "VK_AMD_shader_core_properties2" => { 6012 extensions.amd_shader_core_properties2 = true; 6013 } 6014 "VK_AMD_shader_early_and_late_fragment_tests" => { 6015 extensions.amd_shader_early_and_late_fragment_tests = true; 6016 } 6017 "VK_AMD_shader_explicit_vertex_parameter" => { 6018 extensions.amd_shader_explicit_vertex_parameter = true; 6019 } 6020 "VK_AMD_shader_fragment_mask" => { 6021 extensions.amd_shader_fragment_mask = true; 6022 } 6023 "VK_AMD_shader_image_load_store_lod" => { 6024 extensions.amd_shader_image_load_store_lod = true; 6025 } 6026 "VK_AMD_shader_info" => { 6027 extensions.amd_shader_info = true; 6028 } 6029 "VK_AMD_shader_trinary_minmax" => { 6030 extensions.amd_shader_trinary_minmax = true; 6031 } 6032 "VK_AMD_texture_gather_bias_lod" => { 6033 extensions.amd_texture_gather_bias_lod = true; 6034 } 6035 "VK_ANDROID_external_memory_android_hardware_buffer" => { 6036 extensions.android_external_memory_android_hardware_buffer = true; 6037 } 6038 "VK_ARM_rasterization_order_attachment_access" => { 6039 extensions.arm_rasterization_order_attachment_access = true; 6040 } 6041 "VK_ARM_shader_core_builtins" => { 6042 extensions.arm_shader_core_builtins = true; 6043 } 6044 "VK_FUCHSIA_buffer_collection" => { 6045 extensions.fuchsia_buffer_collection = true; 6046 } 6047 "VK_FUCHSIA_external_memory" => { 6048 extensions.fuchsia_external_memory = true; 6049 } 6050 "VK_FUCHSIA_external_semaphore" => { 6051 extensions.fuchsia_external_semaphore = true; 6052 } 6053 "VK_GGP_frame_token" => { 6054 extensions.ggp_frame_token = true; 6055 } 6056 "VK_GOOGLE_decorate_string" => { 6057 extensions.google_decorate_string = true; 6058 } 6059 "VK_GOOGLE_display_timing" => { 6060 extensions.google_display_timing = true; 6061 } 6062 "VK_GOOGLE_hlsl_functionality1" => { 6063 extensions.google_hlsl_functionality1 = true; 6064 } 6065 "VK_GOOGLE_user_type" => { 6066 extensions.google_user_type = true; 6067 } 6068 "VK_HUAWEI_invocation_mask" => { 6069 extensions.huawei_invocation_mask = true; 6070 } 6071 "VK_HUAWEI_subpass_shading" => { 6072 extensions.huawei_subpass_shading = true; 6073 } 6074 "VK_IMG_filter_cubic" => { 6075 extensions.img_filter_cubic = true; 6076 } 6077 "VK_IMG_format_pvrtc" => { 6078 extensions.img_format_pvrtc = true; 6079 } 6080 "VK_INTEL_performance_query" => { 6081 extensions.intel_performance_query = true; 6082 } 6083 "VK_INTEL_shader_integer_functions2" => { 6084 extensions.intel_shader_integer_functions2 = true; 6085 } 6086 "VK_NVX_binary_import" => { 6087 extensions.nvx_binary_import = true; 6088 } 6089 "VK_NVX_image_view_handle" => { 6090 extensions.nvx_image_view_handle = true; 6091 } 6092 "VK_NVX_multiview_per_view_attributes" => { 6093 extensions.nvx_multiview_per_view_attributes = true; 6094 } 6095 "VK_NV_acquire_winrt_display" => { 6096 extensions.nv_acquire_winrt_display = true; 6097 } 6098 "VK_NV_clip_space_w_scaling" => { 6099 extensions.nv_clip_space_w_scaling = true; 6100 } 6101 "VK_NV_compute_shader_derivatives" => { 6102 extensions.nv_compute_shader_derivatives = true; 6103 } 6104 "VK_NV_cooperative_matrix" => { 6105 extensions.nv_cooperative_matrix = true; 6106 } 6107 "VK_NV_copy_memory_indirect" => { 6108 extensions.nv_copy_memory_indirect = true; 6109 } 6110 "VK_NV_corner_sampled_image" => { 6111 extensions.nv_corner_sampled_image = true; 6112 } 6113 "VK_NV_coverage_reduction_mode" => { 6114 extensions.nv_coverage_reduction_mode = true; 6115 } 6116 "VK_NV_dedicated_allocation" => { 6117 extensions.nv_dedicated_allocation = true; 6118 } 6119 "VK_NV_dedicated_allocation_image_aliasing" => { 6120 extensions.nv_dedicated_allocation_image_aliasing = true; 6121 } 6122 "VK_NV_device_diagnostic_checkpoints" => { 6123 extensions.nv_device_diagnostic_checkpoints = true; 6124 } 6125 "VK_NV_device_diagnostics_config" => { 6126 extensions.nv_device_diagnostics_config = true; 6127 } 6128 "VK_NV_device_generated_commands" => { 6129 extensions.nv_device_generated_commands = true; 6130 } 6131 "VK_NV_external_memory" => { 6132 extensions.nv_external_memory = true; 6133 } 6134 "VK_NV_external_memory_rdma" => { 6135 extensions.nv_external_memory_rdma = true; 6136 } 6137 "VK_NV_external_memory_win32" => { 6138 extensions.nv_external_memory_win32 = true; 6139 } 6140 "VK_NV_fill_rectangle" => { 6141 extensions.nv_fill_rectangle = true; 6142 } 6143 "VK_NV_fragment_coverage_to_color" => { 6144 extensions.nv_fragment_coverage_to_color = true; 6145 } 6146 "VK_NV_fragment_shader_barycentric" => { 6147 extensions.nv_fragment_shader_barycentric = true; 6148 } 6149 "VK_NV_fragment_shading_rate_enums" => { 6150 extensions.nv_fragment_shading_rate_enums = true; 6151 } 6152 "VK_NV_framebuffer_mixed_samples" => { 6153 extensions.nv_framebuffer_mixed_samples = true; 6154 } 6155 "VK_NV_geometry_shader_passthrough" => { 6156 extensions.nv_geometry_shader_passthrough = true; 6157 } 6158 "VK_NV_glsl_shader" => { 6159 extensions.nv_glsl_shader = true; 6160 } 6161 "VK_NV_inherited_viewport_scissor" => { 6162 extensions.nv_inherited_viewport_scissor = true; 6163 } 6164 "VK_NV_linear_color_attachment" => { 6165 extensions.nv_linear_color_attachment = true; 6166 } 6167 "VK_NV_memory_decompression" => { 6168 extensions.nv_memory_decompression = true; 6169 } 6170 "VK_NV_mesh_shader" => { 6171 extensions.nv_mesh_shader = true; 6172 } 6173 "VK_NV_optical_flow" => { 6174 extensions.nv_optical_flow = true; 6175 } 6176 "VK_NV_present_barrier" => { 6177 extensions.nv_present_barrier = true; 6178 } 6179 "VK_NV_ray_tracing" => { 6180 extensions.nv_ray_tracing = true; 6181 } 6182 "VK_NV_ray_tracing_invocation_reorder" => { 6183 extensions.nv_ray_tracing_invocation_reorder = true; 6184 } 6185 "VK_NV_ray_tracing_motion_blur" => { 6186 extensions.nv_ray_tracing_motion_blur = true; 6187 } 6188 "VK_NV_representative_fragment_test" => { 6189 extensions.nv_representative_fragment_test = true; 6190 } 6191 "VK_NV_sample_mask_override_coverage" => { 6192 extensions.nv_sample_mask_override_coverage = true; 6193 } 6194 "VK_NV_scissor_exclusive" => { 6195 extensions.nv_scissor_exclusive = true; 6196 } 6197 "VK_NV_shader_image_footprint" => { 6198 extensions.nv_shader_image_footprint = true; 6199 } 6200 "VK_NV_shader_sm_builtins" => { 6201 extensions.nv_shader_sm_builtins = true; 6202 } 6203 "VK_NV_shader_subgroup_partitioned" => { 6204 extensions.nv_shader_subgroup_partitioned = true; 6205 } 6206 "VK_NV_shading_rate_image" => { 6207 extensions.nv_shading_rate_image = true; 6208 } 6209 "VK_NV_viewport_array2" => { 6210 extensions.nv_viewport_array2 = true; 6211 } 6212 "VK_NV_viewport_swizzle" => { 6213 extensions.nv_viewport_swizzle = true; 6214 } 6215 "VK_NV_win32_keyed_mutex" => { 6216 extensions.nv_win32_keyed_mutex = true; 6217 } 6218 "VK_QCOM_fragment_density_map_offset" => { 6219 extensions.qcom_fragment_density_map_offset = true; 6220 } 6221 "VK_QCOM_image_processing" => { 6222 extensions.qcom_image_processing = true; 6223 } 6224 "VK_QCOM_multiview_per_view_viewports" => { 6225 extensions.qcom_multiview_per_view_viewports = true; 6226 } 6227 "VK_QCOM_render_pass_shader_resolve" => { 6228 extensions.qcom_render_pass_shader_resolve = true; 6229 } 6230 "VK_QCOM_render_pass_store_ops" => { 6231 extensions.qcom_render_pass_store_ops = true; 6232 } 6233 "VK_QCOM_render_pass_transform" => { 6234 extensions.qcom_render_pass_transform = true; 6235 } 6236 "VK_QCOM_rotated_copy_commands" => { 6237 extensions.qcom_rotated_copy_commands = true; 6238 } 6239 "VK_QCOM_tile_properties" => { 6240 extensions.qcom_tile_properties = true; 6241 } 6242 "VK_SEC_amigo_profiling" => { 6243 extensions.sec_amigo_profiling = true; 6244 } 6245 "VK_VALVE_descriptor_set_host_mapping" => { 6246 extensions.valve_descriptor_set_host_mapping = true; 6247 } 6248 "VK_VALVE_mutable_descriptor_type" => { 6249 extensions.valve_mutable_descriptor_type = true; 6250 } 6251 _ => (), 6252 } 6253 } 6254 extensions 6255 } 6256 } 6257 impl<'a> From<&'a DeviceExtensions> for Vec<std::ffi::CString> { from(x: &'a DeviceExtensions) -> Self6258 fn from(x: &'a DeviceExtensions) -> Self { 6259 let mut data = Self::new(); 6260 if x.khr_16bit_storage { 6261 data.push(std::ffi::CString::new("VK_KHR_16bit_storage").unwrap()); 6262 } 6263 if x.khr_8bit_storage { 6264 data.push(std::ffi::CString::new("VK_KHR_8bit_storage").unwrap()); 6265 } 6266 if x.khr_acceleration_structure { 6267 data.push(std::ffi::CString::new("VK_KHR_acceleration_structure").unwrap()); 6268 } 6269 if x.khr_bind_memory2 { 6270 data.push(std::ffi::CString::new("VK_KHR_bind_memory2").unwrap()); 6271 } 6272 if x.khr_buffer_device_address { 6273 data.push(std::ffi::CString::new("VK_KHR_buffer_device_address").unwrap()); 6274 } 6275 if x.khr_copy_commands2 { 6276 data.push(std::ffi::CString::new("VK_KHR_copy_commands2").unwrap()); 6277 } 6278 if x.khr_create_renderpass2 { 6279 data.push(std::ffi::CString::new("VK_KHR_create_renderpass2").unwrap()); 6280 } 6281 if x.khr_dedicated_allocation { 6282 data.push(std::ffi::CString::new("VK_KHR_dedicated_allocation").unwrap()); 6283 } 6284 if x.khr_deferred_host_operations { 6285 data.push(std::ffi::CString::new("VK_KHR_deferred_host_operations").unwrap()); 6286 } 6287 if x.khr_depth_stencil_resolve { 6288 data.push(std::ffi::CString::new("VK_KHR_depth_stencil_resolve").unwrap()); 6289 } 6290 if x.khr_descriptor_update_template { 6291 data.push(std::ffi::CString::new("VK_KHR_descriptor_update_template").unwrap()); 6292 } 6293 if x.khr_device_group { 6294 data.push(std::ffi::CString::new("VK_KHR_device_group").unwrap()); 6295 } 6296 if x.khr_display_swapchain { 6297 data.push(std::ffi::CString::new("VK_KHR_display_swapchain").unwrap()); 6298 } 6299 if x.khr_draw_indirect_count { 6300 data.push(std::ffi::CString::new("VK_KHR_draw_indirect_count").unwrap()); 6301 } 6302 if x.khr_driver_properties { 6303 data.push(std::ffi::CString::new("VK_KHR_driver_properties").unwrap()); 6304 } 6305 if x.khr_dynamic_rendering { 6306 data.push(std::ffi::CString::new("VK_KHR_dynamic_rendering").unwrap()); 6307 } 6308 if x.khr_external_fence { 6309 data.push(std::ffi::CString::new("VK_KHR_external_fence").unwrap()); 6310 } 6311 if x.khr_external_fence_fd { 6312 data.push(std::ffi::CString::new("VK_KHR_external_fence_fd").unwrap()); 6313 } 6314 if x.khr_external_fence_win32 { 6315 data.push(std::ffi::CString::new("VK_KHR_external_fence_win32").unwrap()); 6316 } 6317 if x.khr_external_memory { 6318 data.push(std::ffi::CString::new("VK_KHR_external_memory").unwrap()); 6319 } 6320 if x.khr_external_memory_fd { 6321 data.push(std::ffi::CString::new("VK_KHR_external_memory_fd").unwrap()); 6322 } 6323 if x.khr_external_memory_win32 { 6324 data.push(std::ffi::CString::new("VK_KHR_external_memory_win32").unwrap()); 6325 } 6326 if x.khr_external_semaphore { 6327 data.push(std::ffi::CString::new("VK_KHR_external_semaphore").unwrap()); 6328 } 6329 if x.khr_external_semaphore_fd { 6330 data.push(std::ffi::CString::new("VK_KHR_external_semaphore_fd").unwrap()); 6331 } 6332 if x.khr_external_semaphore_win32 { 6333 data.push(std::ffi::CString::new("VK_KHR_external_semaphore_win32").unwrap()); 6334 } 6335 if x.khr_format_feature_flags2 { 6336 data.push(std::ffi::CString::new("VK_KHR_format_feature_flags2").unwrap()); 6337 } 6338 if x.khr_fragment_shader_barycentric { 6339 data.push(std::ffi::CString::new("VK_KHR_fragment_shader_barycentric").unwrap()); 6340 } 6341 if x.khr_fragment_shading_rate { 6342 data.push(std::ffi::CString::new("VK_KHR_fragment_shading_rate").unwrap()); 6343 } 6344 if x.khr_get_memory_requirements2 { 6345 data.push(std::ffi::CString::new("VK_KHR_get_memory_requirements2").unwrap()); 6346 } 6347 if x.khr_global_priority { 6348 data.push(std::ffi::CString::new("VK_KHR_global_priority").unwrap()); 6349 } 6350 if x.khr_image_format_list { 6351 data.push(std::ffi::CString::new("VK_KHR_image_format_list").unwrap()); 6352 } 6353 if x.khr_imageless_framebuffer { 6354 data.push(std::ffi::CString::new("VK_KHR_imageless_framebuffer").unwrap()); 6355 } 6356 if x.khr_incremental_present { 6357 data.push(std::ffi::CString::new("VK_KHR_incremental_present").unwrap()); 6358 } 6359 if x.khr_maintenance1 { 6360 data.push(std::ffi::CString::new("VK_KHR_maintenance1").unwrap()); 6361 } 6362 if x.khr_maintenance2 { 6363 data.push(std::ffi::CString::new("VK_KHR_maintenance2").unwrap()); 6364 } 6365 if x.khr_maintenance3 { 6366 data.push(std::ffi::CString::new("VK_KHR_maintenance3").unwrap()); 6367 } 6368 if x.khr_maintenance4 { 6369 data.push(std::ffi::CString::new("VK_KHR_maintenance4").unwrap()); 6370 } 6371 if x.khr_multiview { 6372 data.push(std::ffi::CString::new("VK_KHR_multiview").unwrap()); 6373 } 6374 if x.khr_performance_query { 6375 data.push(std::ffi::CString::new("VK_KHR_performance_query").unwrap()); 6376 } 6377 if x.khr_pipeline_executable_properties { 6378 data.push(std::ffi::CString::new("VK_KHR_pipeline_executable_properties").unwrap()); 6379 } 6380 if x.khr_pipeline_library { 6381 data.push(std::ffi::CString::new("VK_KHR_pipeline_library").unwrap()); 6382 } 6383 if x.khr_portability_subset { 6384 data.push(std::ffi::CString::new("VK_KHR_portability_subset").unwrap()); 6385 } 6386 if x.khr_present_id { 6387 data.push(std::ffi::CString::new("VK_KHR_present_id").unwrap()); 6388 } 6389 if x.khr_present_wait { 6390 data.push(std::ffi::CString::new("VK_KHR_present_wait").unwrap()); 6391 } 6392 if x.khr_push_descriptor { 6393 data.push(std::ffi::CString::new("VK_KHR_push_descriptor").unwrap()); 6394 } 6395 if x.khr_ray_query { 6396 data.push(std::ffi::CString::new("VK_KHR_ray_query").unwrap()); 6397 } 6398 if x.khr_ray_tracing_maintenance1 { 6399 data.push(std::ffi::CString::new("VK_KHR_ray_tracing_maintenance1").unwrap()); 6400 } 6401 if x.khr_ray_tracing_pipeline { 6402 data.push(std::ffi::CString::new("VK_KHR_ray_tracing_pipeline").unwrap()); 6403 } 6404 if x.khr_relaxed_block_layout { 6405 data.push(std::ffi::CString::new("VK_KHR_relaxed_block_layout").unwrap()); 6406 } 6407 if x.khr_sampler_mirror_clamp_to_edge { 6408 data.push(std::ffi::CString::new("VK_KHR_sampler_mirror_clamp_to_edge").unwrap()); 6409 } 6410 if x.khr_sampler_ycbcr_conversion { 6411 data.push(std::ffi::CString::new("VK_KHR_sampler_ycbcr_conversion").unwrap()); 6412 } 6413 if x.khr_separate_depth_stencil_layouts { 6414 data.push(std::ffi::CString::new("VK_KHR_separate_depth_stencil_layouts").unwrap()); 6415 } 6416 if x.khr_shader_atomic_int64 { 6417 data.push(std::ffi::CString::new("VK_KHR_shader_atomic_int64").unwrap()); 6418 } 6419 if x.khr_shader_clock { 6420 data.push(std::ffi::CString::new("VK_KHR_shader_clock").unwrap()); 6421 } 6422 if x.khr_shader_draw_parameters { 6423 data.push(std::ffi::CString::new("VK_KHR_shader_draw_parameters").unwrap()); 6424 } 6425 if x.khr_shader_float16_int8 { 6426 data.push(std::ffi::CString::new("VK_KHR_shader_float16_int8").unwrap()); 6427 } 6428 if x.khr_shader_float_controls { 6429 data.push(std::ffi::CString::new("VK_KHR_shader_float_controls").unwrap()); 6430 } 6431 if x.khr_shader_integer_dot_product { 6432 data.push(std::ffi::CString::new("VK_KHR_shader_integer_dot_product").unwrap()); 6433 } 6434 if x.khr_shader_non_semantic_info { 6435 data.push(std::ffi::CString::new("VK_KHR_shader_non_semantic_info").unwrap()); 6436 } 6437 if x.khr_shader_subgroup_extended_types { 6438 data.push(std::ffi::CString::new("VK_KHR_shader_subgroup_extended_types").unwrap()); 6439 } 6440 if x.khr_shader_subgroup_uniform_control_flow { 6441 data.push( 6442 std::ffi::CString::new("VK_KHR_shader_subgroup_uniform_control_flow").unwrap(), 6443 ); 6444 } 6445 if x.khr_shader_terminate_invocation { 6446 data.push(std::ffi::CString::new("VK_KHR_shader_terminate_invocation").unwrap()); 6447 } 6448 if x.khr_shared_presentable_image { 6449 data.push(std::ffi::CString::new("VK_KHR_shared_presentable_image").unwrap()); 6450 } 6451 if x.khr_spirv_1_4 { 6452 data.push(std::ffi::CString::new("VK_KHR_spirv_1_4").unwrap()); 6453 } 6454 if x.khr_storage_buffer_storage_class { 6455 data.push(std::ffi::CString::new("VK_KHR_storage_buffer_storage_class").unwrap()); 6456 } 6457 if x.khr_swapchain { 6458 data.push(std::ffi::CString::new("VK_KHR_swapchain").unwrap()); 6459 } 6460 if x.khr_swapchain_mutable_format { 6461 data.push(std::ffi::CString::new("VK_KHR_swapchain_mutable_format").unwrap()); 6462 } 6463 if x.khr_synchronization2 { 6464 data.push(std::ffi::CString::new("VK_KHR_synchronization2").unwrap()); 6465 } 6466 if x.khr_timeline_semaphore { 6467 data.push(std::ffi::CString::new("VK_KHR_timeline_semaphore").unwrap()); 6468 } 6469 if x.khr_uniform_buffer_standard_layout { 6470 data.push(std::ffi::CString::new("VK_KHR_uniform_buffer_standard_layout").unwrap()); 6471 } 6472 if x.khr_variable_pointers { 6473 data.push(std::ffi::CString::new("VK_KHR_variable_pointers").unwrap()); 6474 } 6475 if x.khr_video_decode_h264 { 6476 data.push(std::ffi::CString::new("VK_KHR_video_decode_h264").unwrap()); 6477 } 6478 if x.khr_video_decode_h265 { 6479 data.push(std::ffi::CString::new("VK_KHR_video_decode_h265").unwrap()); 6480 } 6481 if x.khr_video_decode_queue { 6482 data.push(std::ffi::CString::new("VK_KHR_video_decode_queue").unwrap()); 6483 } 6484 if x.khr_video_encode_queue { 6485 data.push(std::ffi::CString::new("VK_KHR_video_encode_queue").unwrap()); 6486 } 6487 if x.khr_video_queue { 6488 data.push(std::ffi::CString::new("VK_KHR_video_queue").unwrap()); 6489 } 6490 if x.khr_vulkan_memory_model { 6491 data.push(std::ffi::CString::new("VK_KHR_vulkan_memory_model").unwrap()); 6492 } 6493 if x.khr_win32_keyed_mutex { 6494 data.push(std::ffi::CString::new("VK_KHR_win32_keyed_mutex").unwrap()); 6495 } 6496 if x.khr_workgroup_memory_explicit_layout { 6497 data.push(std::ffi::CString::new("VK_KHR_workgroup_memory_explicit_layout").unwrap()); 6498 } 6499 if x.khr_zero_initialize_workgroup_memory { 6500 data.push(std::ffi::CString::new("VK_KHR_zero_initialize_workgroup_memory").unwrap()); 6501 } 6502 if x.ext_4444_formats { 6503 data.push(std::ffi::CString::new("VK_EXT_4444_formats").unwrap()); 6504 } 6505 if x.ext_astc_decode_mode { 6506 data.push(std::ffi::CString::new("VK_EXT_astc_decode_mode").unwrap()); 6507 } 6508 if x.ext_attachment_feedback_loop_layout { 6509 data.push(std::ffi::CString::new("VK_EXT_attachment_feedback_loop_layout").unwrap()); 6510 } 6511 if x.ext_blend_operation_advanced { 6512 data.push(std::ffi::CString::new("VK_EXT_blend_operation_advanced").unwrap()); 6513 } 6514 if x.ext_border_color_swizzle { 6515 data.push(std::ffi::CString::new("VK_EXT_border_color_swizzle").unwrap()); 6516 } 6517 if x.ext_buffer_device_address { 6518 data.push(std::ffi::CString::new("VK_EXT_buffer_device_address").unwrap()); 6519 } 6520 if x.ext_calibrated_timestamps { 6521 data.push(std::ffi::CString::new("VK_EXT_calibrated_timestamps").unwrap()); 6522 } 6523 if x.ext_color_write_enable { 6524 data.push(std::ffi::CString::new("VK_EXT_color_write_enable").unwrap()); 6525 } 6526 if x.ext_conditional_rendering { 6527 data.push(std::ffi::CString::new("VK_EXT_conditional_rendering").unwrap()); 6528 } 6529 if x.ext_conservative_rasterization { 6530 data.push(std::ffi::CString::new("VK_EXT_conservative_rasterization").unwrap()); 6531 } 6532 if x.ext_custom_border_color { 6533 data.push(std::ffi::CString::new("VK_EXT_custom_border_color").unwrap()); 6534 } 6535 if x.ext_debug_marker { 6536 data.push(std::ffi::CString::new("VK_EXT_debug_marker").unwrap()); 6537 } 6538 if x.ext_depth_clamp_zero_one { 6539 data.push(std::ffi::CString::new("VK_EXT_depth_clamp_zero_one").unwrap()); 6540 } 6541 if x.ext_depth_clip_control { 6542 data.push(std::ffi::CString::new("VK_EXT_depth_clip_control").unwrap()); 6543 } 6544 if x.ext_depth_clip_enable { 6545 data.push(std::ffi::CString::new("VK_EXT_depth_clip_enable").unwrap()); 6546 } 6547 if x.ext_depth_range_unrestricted { 6548 data.push(std::ffi::CString::new("VK_EXT_depth_range_unrestricted").unwrap()); 6549 } 6550 if x.ext_descriptor_buffer { 6551 data.push(std::ffi::CString::new("VK_EXT_descriptor_buffer").unwrap()); 6552 } 6553 if x.ext_descriptor_indexing { 6554 data.push(std::ffi::CString::new("VK_EXT_descriptor_indexing").unwrap()); 6555 } 6556 if x.ext_device_address_binding_report { 6557 data.push(std::ffi::CString::new("VK_EXT_device_address_binding_report").unwrap()); 6558 } 6559 if x.ext_device_fault { 6560 data.push(std::ffi::CString::new("VK_EXT_device_fault").unwrap()); 6561 } 6562 if x.ext_device_memory_report { 6563 data.push(std::ffi::CString::new("VK_EXT_device_memory_report").unwrap()); 6564 } 6565 if x.ext_discard_rectangles { 6566 data.push(std::ffi::CString::new("VK_EXT_discard_rectangles").unwrap()); 6567 } 6568 if x.ext_display_control { 6569 data.push(std::ffi::CString::new("VK_EXT_display_control").unwrap()); 6570 } 6571 if x.ext_extended_dynamic_state { 6572 data.push(std::ffi::CString::new("VK_EXT_extended_dynamic_state").unwrap()); 6573 } 6574 if x.ext_extended_dynamic_state2 { 6575 data.push(std::ffi::CString::new("VK_EXT_extended_dynamic_state2").unwrap()); 6576 } 6577 if x.ext_extended_dynamic_state3 { 6578 data.push(std::ffi::CString::new("VK_EXT_extended_dynamic_state3").unwrap()); 6579 } 6580 if x.ext_external_memory_dma_buf { 6581 data.push(std::ffi::CString::new("VK_EXT_external_memory_dma_buf").unwrap()); 6582 } 6583 if x.ext_external_memory_host { 6584 data.push(std::ffi::CString::new("VK_EXT_external_memory_host").unwrap()); 6585 } 6586 if x.ext_filter_cubic { 6587 data.push(std::ffi::CString::new("VK_EXT_filter_cubic").unwrap()); 6588 } 6589 if x.ext_fragment_density_map { 6590 data.push(std::ffi::CString::new("VK_EXT_fragment_density_map").unwrap()); 6591 } 6592 if x.ext_fragment_density_map2 { 6593 data.push(std::ffi::CString::new("VK_EXT_fragment_density_map2").unwrap()); 6594 } 6595 if x.ext_fragment_shader_interlock { 6596 data.push(std::ffi::CString::new("VK_EXT_fragment_shader_interlock").unwrap()); 6597 } 6598 if x.ext_full_screen_exclusive { 6599 data.push(std::ffi::CString::new("VK_EXT_full_screen_exclusive").unwrap()); 6600 } 6601 if x.ext_global_priority { 6602 data.push(std::ffi::CString::new("VK_EXT_global_priority").unwrap()); 6603 } 6604 if x.ext_global_priority_query { 6605 data.push(std::ffi::CString::new("VK_EXT_global_priority_query").unwrap()); 6606 } 6607 if x.ext_graphics_pipeline_library { 6608 data.push(std::ffi::CString::new("VK_EXT_graphics_pipeline_library").unwrap()); 6609 } 6610 if x.ext_hdr_metadata { 6611 data.push(std::ffi::CString::new("VK_EXT_hdr_metadata").unwrap()); 6612 } 6613 if x.ext_host_query_reset { 6614 data.push(std::ffi::CString::new("VK_EXT_host_query_reset").unwrap()); 6615 } 6616 if x.ext_image_2d_view_of_3d { 6617 data.push(std::ffi::CString::new("VK_EXT_image_2d_view_of_3d").unwrap()); 6618 } 6619 if x.ext_image_compression_control { 6620 data.push(std::ffi::CString::new("VK_EXT_image_compression_control").unwrap()); 6621 } 6622 if x.ext_image_compression_control_swapchain { 6623 data.push( 6624 std::ffi::CString::new("VK_EXT_image_compression_control_swapchain").unwrap(), 6625 ); 6626 } 6627 if x.ext_image_drm_format_modifier { 6628 data.push(std::ffi::CString::new("VK_EXT_image_drm_format_modifier").unwrap()); 6629 } 6630 if x.ext_image_robustness { 6631 data.push(std::ffi::CString::new("VK_EXT_image_robustness").unwrap()); 6632 } 6633 if x.ext_image_view_min_lod { 6634 data.push(std::ffi::CString::new("VK_EXT_image_view_min_lod").unwrap()); 6635 } 6636 if x.ext_index_type_uint8 { 6637 data.push(std::ffi::CString::new("VK_EXT_index_type_uint8").unwrap()); 6638 } 6639 if x.ext_inline_uniform_block { 6640 data.push(std::ffi::CString::new("VK_EXT_inline_uniform_block").unwrap()); 6641 } 6642 if x.ext_legacy_dithering { 6643 data.push(std::ffi::CString::new("VK_EXT_legacy_dithering").unwrap()); 6644 } 6645 if x.ext_line_rasterization { 6646 data.push(std::ffi::CString::new("VK_EXT_line_rasterization").unwrap()); 6647 } 6648 if x.ext_load_store_op_none { 6649 data.push(std::ffi::CString::new("VK_EXT_load_store_op_none").unwrap()); 6650 } 6651 if x.ext_memory_budget { 6652 data.push(std::ffi::CString::new("VK_EXT_memory_budget").unwrap()); 6653 } 6654 if x.ext_memory_priority { 6655 data.push(std::ffi::CString::new("VK_EXT_memory_priority").unwrap()); 6656 } 6657 if x.ext_mesh_shader { 6658 data.push(std::ffi::CString::new("VK_EXT_mesh_shader").unwrap()); 6659 } 6660 if x.ext_metal_objects { 6661 data.push(std::ffi::CString::new("VK_EXT_metal_objects").unwrap()); 6662 } 6663 if x.ext_multi_draw { 6664 data.push(std::ffi::CString::new("VK_EXT_multi_draw").unwrap()); 6665 } 6666 if x.ext_multisampled_render_to_single_sampled { 6667 data.push( 6668 std::ffi::CString::new("VK_EXT_multisampled_render_to_single_sampled").unwrap(), 6669 ); 6670 } 6671 if x.ext_mutable_descriptor_type { 6672 data.push(std::ffi::CString::new("VK_EXT_mutable_descriptor_type").unwrap()); 6673 } 6674 if x.ext_non_seamless_cube_map { 6675 data.push(std::ffi::CString::new("VK_EXT_non_seamless_cube_map").unwrap()); 6676 } 6677 if x.ext_opacity_micromap { 6678 data.push(std::ffi::CString::new("VK_EXT_opacity_micromap").unwrap()); 6679 } 6680 if x.ext_pageable_device_local_memory { 6681 data.push(std::ffi::CString::new("VK_EXT_pageable_device_local_memory").unwrap()); 6682 } 6683 if x.ext_pci_bus_info { 6684 data.push(std::ffi::CString::new("VK_EXT_pci_bus_info").unwrap()); 6685 } 6686 if x.ext_physical_device_drm { 6687 data.push(std::ffi::CString::new("VK_EXT_physical_device_drm").unwrap()); 6688 } 6689 if x.ext_pipeline_creation_cache_control { 6690 data.push(std::ffi::CString::new("VK_EXT_pipeline_creation_cache_control").unwrap()); 6691 } 6692 if x.ext_pipeline_creation_feedback { 6693 data.push(std::ffi::CString::new("VK_EXT_pipeline_creation_feedback").unwrap()); 6694 } 6695 if x.ext_pipeline_properties { 6696 data.push(std::ffi::CString::new("VK_EXT_pipeline_properties").unwrap()); 6697 } 6698 if x.ext_pipeline_protected_access { 6699 data.push(std::ffi::CString::new("VK_EXT_pipeline_protected_access").unwrap()); 6700 } 6701 if x.ext_pipeline_robustness { 6702 data.push(std::ffi::CString::new("VK_EXT_pipeline_robustness").unwrap()); 6703 } 6704 if x.ext_post_depth_coverage { 6705 data.push(std::ffi::CString::new("VK_EXT_post_depth_coverage").unwrap()); 6706 } 6707 if x.ext_primitive_topology_list_restart { 6708 data.push(std::ffi::CString::new("VK_EXT_primitive_topology_list_restart").unwrap()); 6709 } 6710 if x.ext_primitives_generated_query { 6711 data.push(std::ffi::CString::new("VK_EXT_primitives_generated_query").unwrap()); 6712 } 6713 if x.ext_private_data { 6714 data.push(std::ffi::CString::new("VK_EXT_private_data").unwrap()); 6715 } 6716 if x.ext_provoking_vertex { 6717 data.push(std::ffi::CString::new("VK_EXT_provoking_vertex").unwrap()); 6718 } 6719 if x.ext_queue_family_foreign { 6720 data.push(std::ffi::CString::new("VK_EXT_queue_family_foreign").unwrap()); 6721 } 6722 if x.ext_rasterization_order_attachment_access { 6723 data.push( 6724 std::ffi::CString::new("VK_EXT_rasterization_order_attachment_access").unwrap(), 6725 ); 6726 } 6727 if x.ext_rgba10x6_formats { 6728 data.push(std::ffi::CString::new("VK_EXT_rgba10x6_formats").unwrap()); 6729 } 6730 if x.ext_robustness2 { 6731 data.push(std::ffi::CString::new("VK_EXT_robustness2").unwrap()); 6732 } 6733 if x.ext_sample_locations { 6734 data.push(std::ffi::CString::new("VK_EXT_sample_locations").unwrap()); 6735 } 6736 if x.ext_sampler_filter_minmax { 6737 data.push(std::ffi::CString::new("VK_EXT_sampler_filter_minmax").unwrap()); 6738 } 6739 if x.ext_scalar_block_layout { 6740 data.push(std::ffi::CString::new("VK_EXT_scalar_block_layout").unwrap()); 6741 } 6742 if x.ext_separate_stencil_usage { 6743 data.push(std::ffi::CString::new("VK_EXT_separate_stencil_usage").unwrap()); 6744 } 6745 if x.ext_shader_atomic_float { 6746 data.push(std::ffi::CString::new("VK_EXT_shader_atomic_float").unwrap()); 6747 } 6748 if x.ext_shader_atomic_float2 { 6749 data.push(std::ffi::CString::new("VK_EXT_shader_atomic_float2").unwrap()); 6750 } 6751 if x.ext_shader_demote_to_helper_invocation { 6752 data.push(std::ffi::CString::new("VK_EXT_shader_demote_to_helper_invocation").unwrap()); 6753 } 6754 if x.ext_shader_image_atomic_int64 { 6755 data.push(std::ffi::CString::new("VK_EXT_shader_image_atomic_int64").unwrap()); 6756 } 6757 if x.ext_shader_module_identifier { 6758 data.push(std::ffi::CString::new("VK_EXT_shader_module_identifier").unwrap()); 6759 } 6760 if x.ext_shader_stencil_export { 6761 data.push(std::ffi::CString::new("VK_EXT_shader_stencil_export").unwrap()); 6762 } 6763 if x.ext_shader_subgroup_ballot { 6764 data.push(std::ffi::CString::new("VK_EXT_shader_subgroup_ballot").unwrap()); 6765 } 6766 if x.ext_shader_subgroup_vote { 6767 data.push(std::ffi::CString::new("VK_EXT_shader_subgroup_vote").unwrap()); 6768 } 6769 if x.ext_shader_viewport_index_layer { 6770 data.push(std::ffi::CString::new("VK_EXT_shader_viewport_index_layer").unwrap()); 6771 } 6772 if x.ext_subgroup_size_control { 6773 data.push(std::ffi::CString::new("VK_EXT_subgroup_size_control").unwrap()); 6774 } 6775 if x.ext_subpass_merge_feedback { 6776 data.push(std::ffi::CString::new("VK_EXT_subpass_merge_feedback").unwrap()); 6777 } 6778 if x.ext_swapchain_maintenance1 { 6779 data.push(std::ffi::CString::new("VK_EXT_swapchain_maintenance1").unwrap()); 6780 } 6781 if x.ext_texel_buffer_alignment { 6782 data.push(std::ffi::CString::new("VK_EXT_texel_buffer_alignment").unwrap()); 6783 } 6784 if x.ext_texture_compression_astc_hdr { 6785 data.push(std::ffi::CString::new("VK_EXT_texture_compression_astc_hdr").unwrap()); 6786 } 6787 if x.ext_tooling_info { 6788 data.push(std::ffi::CString::new("VK_EXT_tooling_info").unwrap()); 6789 } 6790 if x.ext_transform_feedback { 6791 data.push(std::ffi::CString::new("VK_EXT_transform_feedback").unwrap()); 6792 } 6793 if x.ext_validation_cache { 6794 data.push(std::ffi::CString::new("VK_EXT_validation_cache").unwrap()); 6795 } 6796 if x.ext_vertex_attribute_divisor { 6797 data.push(std::ffi::CString::new("VK_EXT_vertex_attribute_divisor").unwrap()); 6798 } 6799 if x.ext_vertex_input_dynamic_state { 6800 data.push(std::ffi::CString::new("VK_EXT_vertex_input_dynamic_state").unwrap()); 6801 } 6802 if x.ext_video_encode_h264 { 6803 data.push(std::ffi::CString::new("VK_EXT_video_encode_h264").unwrap()); 6804 } 6805 if x.ext_video_encode_h265 { 6806 data.push(std::ffi::CString::new("VK_EXT_video_encode_h265").unwrap()); 6807 } 6808 if x.ext_ycbcr_2plane_444_formats { 6809 data.push(std::ffi::CString::new("VK_EXT_ycbcr_2plane_444_formats").unwrap()); 6810 } 6811 if x.ext_ycbcr_image_arrays { 6812 data.push(std::ffi::CString::new("VK_EXT_ycbcr_image_arrays").unwrap()); 6813 } 6814 if x.amd_buffer_marker { 6815 data.push(std::ffi::CString::new("VK_AMD_buffer_marker").unwrap()); 6816 } 6817 if x.amd_device_coherent_memory { 6818 data.push(std::ffi::CString::new("VK_AMD_device_coherent_memory").unwrap()); 6819 } 6820 if x.amd_display_native_hdr { 6821 data.push(std::ffi::CString::new("VK_AMD_display_native_hdr").unwrap()); 6822 } 6823 if x.amd_draw_indirect_count { 6824 data.push(std::ffi::CString::new("VK_AMD_draw_indirect_count").unwrap()); 6825 } 6826 if x.amd_gcn_shader { 6827 data.push(std::ffi::CString::new("VK_AMD_gcn_shader").unwrap()); 6828 } 6829 if x.amd_gpu_shader_half_float { 6830 data.push(std::ffi::CString::new("VK_AMD_gpu_shader_half_float").unwrap()); 6831 } 6832 if x.amd_gpu_shader_int16 { 6833 data.push(std::ffi::CString::new("VK_AMD_gpu_shader_int16").unwrap()); 6834 } 6835 if x.amd_memory_overallocation_behavior { 6836 data.push(std::ffi::CString::new("VK_AMD_memory_overallocation_behavior").unwrap()); 6837 } 6838 if x.amd_mixed_attachment_samples { 6839 data.push(std::ffi::CString::new("VK_AMD_mixed_attachment_samples").unwrap()); 6840 } 6841 if x.amd_pipeline_compiler_control { 6842 data.push(std::ffi::CString::new("VK_AMD_pipeline_compiler_control").unwrap()); 6843 } 6844 if x.amd_rasterization_order { 6845 data.push(std::ffi::CString::new("VK_AMD_rasterization_order").unwrap()); 6846 } 6847 if x.amd_shader_ballot { 6848 data.push(std::ffi::CString::new("VK_AMD_shader_ballot").unwrap()); 6849 } 6850 if x.amd_shader_core_properties { 6851 data.push(std::ffi::CString::new("VK_AMD_shader_core_properties").unwrap()); 6852 } 6853 if x.amd_shader_core_properties2 { 6854 data.push(std::ffi::CString::new("VK_AMD_shader_core_properties2").unwrap()); 6855 } 6856 if x.amd_shader_early_and_late_fragment_tests { 6857 data.push( 6858 std::ffi::CString::new("VK_AMD_shader_early_and_late_fragment_tests").unwrap(), 6859 ); 6860 } 6861 if x.amd_shader_explicit_vertex_parameter { 6862 data.push(std::ffi::CString::new("VK_AMD_shader_explicit_vertex_parameter").unwrap()); 6863 } 6864 if x.amd_shader_fragment_mask { 6865 data.push(std::ffi::CString::new("VK_AMD_shader_fragment_mask").unwrap()); 6866 } 6867 if x.amd_shader_image_load_store_lod { 6868 data.push(std::ffi::CString::new("VK_AMD_shader_image_load_store_lod").unwrap()); 6869 } 6870 if x.amd_shader_info { 6871 data.push(std::ffi::CString::new("VK_AMD_shader_info").unwrap()); 6872 } 6873 if x.amd_shader_trinary_minmax { 6874 data.push(std::ffi::CString::new("VK_AMD_shader_trinary_minmax").unwrap()); 6875 } 6876 if x.amd_texture_gather_bias_lod { 6877 data.push(std::ffi::CString::new("VK_AMD_texture_gather_bias_lod").unwrap()); 6878 } 6879 if x.android_external_memory_android_hardware_buffer { 6880 data.push( 6881 std::ffi::CString::new("VK_ANDROID_external_memory_android_hardware_buffer") 6882 .unwrap(), 6883 ); 6884 } 6885 if x.arm_rasterization_order_attachment_access { 6886 data.push( 6887 std::ffi::CString::new("VK_ARM_rasterization_order_attachment_access").unwrap(), 6888 ); 6889 } 6890 if x.arm_shader_core_builtins { 6891 data.push(std::ffi::CString::new("VK_ARM_shader_core_builtins").unwrap()); 6892 } 6893 if x.fuchsia_buffer_collection { 6894 data.push(std::ffi::CString::new("VK_FUCHSIA_buffer_collection").unwrap()); 6895 } 6896 if x.fuchsia_external_memory { 6897 data.push(std::ffi::CString::new("VK_FUCHSIA_external_memory").unwrap()); 6898 } 6899 if x.fuchsia_external_semaphore { 6900 data.push(std::ffi::CString::new("VK_FUCHSIA_external_semaphore").unwrap()); 6901 } 6902 if x.ggp_frame_token { 6903 data.push(std::ffi::CString::new("VK_GGP_frame_token").unwrap()); 6904 } 6905 if x.google_decorate_string { 6906 data.push(std::ffi::CString::new("VK_GOOGLE_decorate_string").unwrap()); 6907 } 6908 if x.google_display_timing { 6909 data.push(std::ffi::CString::new("VK_GOOGLE_display_timing").unwrap()); 6910 } 6911 if x.google_hlsl_functionality1 { 6912 data.push(std::ffi::CString::new("VK_GOOGLE_hlsl_functionality1").unwrap()); 6913 } 6914 if x.google_user_type { 6915 data.push(std::ffi::CString::new("VK_GOOGLE_user_type").unwrap()); 6916 } 6917 if x.huawei_invocation_mask { 6918 data.push(std::ffi::CString::new("VK_HUAWEI_invocation_mask").unwrap()); 6919 } 6920 if x.huawei_subpass_shading { 6921 data.push(std::ffi::CString::new("VK_HUAWEI_subpass_shading").unwrap()); 6922 } 6923 if x.img_filter_cubic { 6924 data.push(std::ffi::CString::new("VK_IMG_filter_cubic").unwrap()); 6925 } 6926 if x.img_format_pvrtc { 6927 data.push(std::ffi::CString::new("VK_IMG_format_pvrtc").unwrap()); 6928 } 6929 if x.intel_performance_query { 6930 data.push(std::ffi::CString::new("VK_INTEL_performance_query").unwrap()); 6931 } 6932 if x.intel_shader_integer_functions2 { 6933 data.push(std::ffi::CString::new("VK_INTEL_shader_integer_functions2").unwrap()); 6934 } 6935 if x.nvx_binary_import { 6936 data.push(std::ffi::CString::new("VK_NVX_binary_import").unwrap()); 6937 } 6938 if x.nvx_image_view_handle { 6939 data.push(std::ffi::CString::new("VK_NVX_image_view_handle").unwrap()); 6940 } 6941 if x.nvx_multiview_per_view_attributes { 6942 data.push(std::ffi::CString::new("VK_NVX_multiview_per_view_attributes").unwrap()); 6943 } 6944 if x.nv_acquire_winrt_display { 6945 data.push(std::ffi::CString::new("VK_NV_acquire_winrt_display").unwrap()); 6946 } 6947 if x.nv_clip_space_w_scaling { 6948 data.push(std::ffi::CString::new("VK_NV_clip_space_w_scaling").unwrap()); 6949 } 6950 if x.nv_compute_shader_derivatives { 6951 data.push(std::ffi::CString::new("VK_NV_compute_shader_derivatives").unwrap()); 6952 } 6953 if x.nv_cooperative_matrix { 6954 data.push(std::ffi::CString::new("VK_NV_cooperative_matrix").unwrap()); 6955 } 6956 if x.nv_copy_memory_indirect { 6957 data.push(std::ffi::CString::new("VK_NV_copy_memory_indirect").unwrap()); 6958 } 6959 if x.nv_corner_sampled_image { 6960 data.push(std::ffi::CString::new("VK_NV_corner_sampled_image").unwrap()); 6961 } 6962 if x.nv_coverage_reduction_mode { 6963 data.push(std::ffi::CString::new("VK_NV_coverage_reduction_mode").unwrap()); 6964 } 6965 if x.nv_dedicated_allocation { 6966 data.push(std::ffi::CString::new("VK_NV_dedicated_allocation").unwrap()); 6967 } 6968 if x.nv_dedicated_allocation_image_aliasing { 6969 data.push(std::ffi::CString::new("VK_NV_dedicated_allocation_image_aliasing").unwrap()); 6970 } 6971 if x.nv_device_diagnostic_checkpoints { 6972 data.push(std::ffi::CString::new("VK_NV_device_diagnostic_checkpoints").unwrap()); 6973 } 6974 if x.nv_device_diagnostics_config { 6975 data.push(std::ffi::CString::new("VK_NV_device_diagnostics_config").unwrap()); 6976 } 6977 if x.nv_device_generated_commands { 6978 data.push(std::ffi::CString::new("VK_NV_device_generated_commands").unwrap()); 6979 } 6980 if x.nv_external_memory { 6981 data.push(std::ffi::CString::new("VK_NV_external_memory").unwrap()); 6982 } 6983 if x.nv_external_memory_rdma { 6984 data.push(std::ffi::CString::new("VK_NV_external_memory_rdma").unwrap()); 6985 } 6986 if x.nv_external_memory_win32 { 6987 data.push(std::ffi::CString::new("VK_NV_external_memory_win32").unwrap()); 6988 } 6989 if x.nv_fill_rectangle { 6990 data.push(std::ffi::CString::new("VK_NV_fill_rectangle").unwrap()); 6991 } 6992 if x.nv_fragment_coverage_to_color { 6993 data.push(std::ffi::CString::new("VK_NV_fragment_coverage_to_color").unwrap()); 6994 } 6995 if x.nv_fragment_shader_barycentric { 6996 data.push(std::ffi::CString::new("VK_NV_fragment_shader_barycentric").unwrap()); 6997 } 6998 if x.nv_fragment_shading_rate_enums { 6999 data.push(std::ffi::CString::new("VK_NV_fragment_shading_rate_enums").unwrap()); 7000 } 7001 if x.nv_framebuffer_mixed_samples { 7002 data.push(std::ffi::CString::new("VK_NV_framebuffer_mixed_samples").unwrap()); 7003 } 7004 if x.nv_geometry_shader_passthrough { 7005 data.push(std::ffi::CString::new("VK_NV_geometry_shader_passthrough").unwrap()); 7006 } 7007 if x.nv_glsl_shader { 7008 data.push(std::ffi::CString::new("VK_NV_glsl_shader").unwrap()); 7009 } 7010 if x.nv_inherited_viewport_scissor { 7011 data.push(std::ffi::CString::new("VK_NV_inherited_viewport_scissor").unwrap()); 7012 } 7013 if x.nv_linear_color_attachment { 7014 data.push(std::ffi::CString::new("VK_NV_linear_color_attachment").unwrap()); 7015 } 7016 if x.nv_memory_decompression { 7017 data.push(std::ffi::CString::new("VK_NV_memory_decompression").unwrap()); 7018 } 7019 if x.nv_mesh_shader { 7020 data.push(std::ffi::CString::new("VK_NV_mesh_shader").unwrap()); 7021 } 7022 if x.nv_optical_flow { 7023 data.push(std::ffi::CString::new("VK_NV_optical_flow").unwrap()); 7024 } 7025 if x.nv_present_barrier { 7026 data.push(std::ffi::CString::new("VK_NV_present_barrier").unwrap()); 7027 } 7028 if x.nv_ray_tracing { 7029 data.push(std::ffi::CString::new("VK_NV_ray_tracing").unwrap()); 7030 } 7031 if x.nv_ray_tracing_invocation_reorder { 7032 data.push(std::ffi::CString::new("VK_NV_ray_tracing_invocation_reorder").unwrap()); 7033 } 7034 if x.nv_ray_tracing_motion_blur { 7035 data.push(std::ffi::CString::new("VK_NV_ray_tracing_motion_blur").unwrap()); 7036 } 7037 if x.nv_representative_fragment_test { 7038 data.push(std::ffi::CString::new("VK_NV_representative_fragment_test").unwrap()); 7039 } 7040 if x.nv_sample_mask_override_coverage { 7041 data.push(std::ffi::CString::new("VK_NV_sample_mask_override_coverage").unwrap()); 7042 } 7043 if x.nv_scissor_exclusive { 7044 data.push(std::ffi::CString::new("VK_NV_scissor_exclusive").unwrap()); 7045 } 7046 if x.nv_shader_image_footprint { 7047 data.push(std::ffi::CString::new("VK_NV_shader_image_footprint").unwrap()); 7048 } 7049 if x.nv_shader_sm_builtins { 7050 data.push(std::ffi::CString::new("VK_NV_shader_sm_builtins").unwrap()); 7051 } 7052 if x.nv_shader_subgroup_partitioned { 7053 data.push(std::ffi::CString::new("VK_NV_shader_subgroup_partitioned").unwrap()); 7054 } 7055 if x.nv_shading_rate_image { 7056 data.push(std::ffi::CString::new("VK_NV_shading_rate_image").unwrap()); 7057 } 7058 if x.nv_viewport_array2 { 7059 data.push(std::ffi::CString::new("VK_NV_viewport_array2").unwrap()); 7060 } 7061 if x.nv_viewport_swizzle { 7062 data.push(std::ffi::CString::new("VK_NV_viewport_swizzle").unwrap()); 7063 } 7064 if x.nv_win32_keyed_mutex { 7065 data.push(std::ffi::CString::new("VK_NV_win32_keyed_mutex").unwrap()); 7066 } 7067 if x.qcom_fragment_density_map_offset { 7068 data.push(std::ffi::CString::new("VK_QCOM_fragment_density_map_offset").unwrap()); 7069 } 7070 if x.qcom_image_processing { 7071 data.push(std::ffi::CString::new("VK_QCOM_image_processing").unwrap()); 7072 } 7073 if x.qcom_multiview_per_view_viewports { 7074 data.push(std::ffi::CString::new("VK_QCOM_multiview_per_view_viewports").unwrap()); 7075 } 7076 if x.qcom_render_pass_shader_resolve { 7077 data.push(std::ffi::CString::new("VK_QCOM_render_pass_shader_resolve").unwrap()); 7078 } 7079 if x.qcom_render_pass_store_ops { 7080 data.push(std::ffi::CString::new("VK_QCOM_render_pass_store_ops").unwrap()); 7081 } 7082 if x.qcom_render_pass_transform { 7083 data.push(std::ffi::CString::new("VK_QCOM_render_pass_transform").unwrap()); 7084 } 7085 if x.qcom_rotated_copy_commands { 7086 data.push(std::ffi::CString::new("VK_QCOM_rotated_copy_commands").unwrap()); 7087 } 7088 if x.qcom_tile_properties { 7089 data.push(std::ffi::CString::new("VK_QCOM_tile_properties").unwrap()); 7090 } 7091 if x.sec_amigo_profiling { 7092 data.push(std::ffi::CString::new("VK_SEC_amigo_profiling").unwrap()); 7093 } 7094 if x.valve_descriptor_set_host_mapping { 7095 data.push(std::ffi::CString::new("VK_VALVE_descriptor_set_host_mapping").unwrap()); 7096 } 7097 if x.valve_mutable_descriptor_type { 7098 data.push(std::ffi::CString::new("VK_VALVE_mutable_descriptor_type").unwrap()); 7099 } 7100 data 7101 } 7102 } 7103 impl IntoIterator for DeviceExtensions { 7104 type Item = (&'static str, bool); 7105 type IntoIter = std::array::IntoIter<Self::Item, 275usize>; 7106 #[inline] into_iter(self) -> Self::IntoIter7107 fn into_iter(self) -> Self::IntoIter { 7108 [ 7109 ("VK_KHR_16bit_storage", self.khr_16bit_storage), 7110 ("VK_KHR_8bit_storage", self.khr_8bit_storage), 7111 ( 7112 "VK_KHR_acceleration_structure", 7113 self.khr_acceleration_structure, 7114 ), 7115 ("VK_KHR_bind_memory2", self.khr_bind_memory2), 7116 ( 7117 "VK_KHR_buffer_device_address", 7118 self.khr_buffer_device_address, 7119 ), 7120 ("VK_KHR_copy_commands2", self.khr_copy_commands2), 7121 ("VK_KHR_create_renderpass2", self.khr_create_renderpass2), 7122 ("VK_KHR_dedicated_allocation", self.khr_dedicated_allocation), 7123 ( 7124 "VK_KHR_deferred_host_operations", 7125 self.khr_deferred_host_operations, 7126 ), 7127 ( 7128 "VK_KHR_depth_stencil_resolve", 7129 self.khr_depth_stencil_resolve, 7130 ), 7131 ( 7132 "VK_KHR_descriptor_update_template", 7133 self.khr_descriptor_update_template, 7134 ), 7135 ("VK_KHR_device_group", self.khr_device_group), 7136 ("VK_KHR_display_swapchain", self.khr_display_swapchain), 7137 ("VK_KHR_draw_indirect_count", self.khr_draw_indirect_count), 7138 ("VK_KHR_driver_properties", self.khr_driver_properties), 7139 ("VK_KHR_dynamic_rendering", self.khr_dynamic_rendering), 7140 ("VK_KHR_external_fence", self.khr_external_fence), 7141 ("VK_KHR_external_fence_fd", self.khr_external_fence_fd), 7142 ("VK_KHR_external_fence_win32", self.khr_external_fence_win32), 7143 ("VK_KHR_external_memory", self.khr_external_memory), 7144 ("VK_KHR_external_memory_fd", self.khr_external_memory_fd), 7145 ( 7146 "VK_KHR_external_memory_win32", 7147 self.khr_external_memory_win32, 7148 ), 7149 ("VK_KHR_external_semaphore", self.khr_external_semaphore), 7150 ( 7151 "VK_KHR_external_semaphore_fd", 7152 self.khr_external_semaphore_fd, 7153 ), 7154 ( 7155 "VK_KHR_external_semaphore_win32", 7156 self.khr_external_semaphore_win32, 7157 ), 7158 ( 7159 "VK_KHR_format_feature_flags2", 7160 self.khr_format_feature_flags2, 7161 ), 7162 ( 7163 "VK_KHR_fragment_shader_barycentric", 7164 self.khr_fragment_shader_barycentric, 7165 ), 7166 ( 7167 "VK_KHR_fragment_shading_rate", 7168 self.khr_fragment_shading_rate, 7169 ), 7170 ( 7171 "VK_KHR_get_memory_requirements2", 7172 self.khr_get_memory_requirements2, 7173 ), 7174 ("VK_KHR_global_priority", self.khr_global_priority), 7175 ("VK_KHR_image_format_list", self.khr_image_format_list), 7176 ( 7177 "VK_KHR_imageless_framebuffer", 7178 self.khr_imageless_framebuffer, 7179 ), 7180 ("VK_KHR_incremental_present", self.khr_incremental_present), 7181 ("VK_KHR_maintenance1", self.khr_maintenance1), 7182 ("VK_KHR_maintenance2", self.khr_maintenance2), 7183 ("VK_KHR_maintenance3", self.khr_maintenance3), 7184 ("VK_KHR_maintenance4", self.khr_maintenance4), 7185 ("VK_KHR_multiview", self.khr_multiview), 7186 ("VK_KHR_performance_query", self.khr_performance_query), 7187 ( 7188 "VK_KHR_pipeline_executable_properties", 7189 self.khr_pipeline_executable_properties, 7190 ), 7191 ("VK_KHR_pipeline_library", self.khr_pipeline_library), 7192 ("VK_KHR_portability_subset", self.khr_portability_subset), 7193 ("VK_KHR_present_id", self.khr_present_id), 7194 ("VK_KHR_present_wait", self.khr_present_wait), 7195 ("VK_KHR_push_descriptor", self.khr_push_descriptor), 7196 ("VK_KHR_ray_query", self.khr_ray_query), 7197 ( 7198 "VK_KHR_ray_tracing_maintenance1", 7199 self.khr_ray_tracing_maintenance1, 7200 ), 7201 ("VK_KHR_ray_tracing_pipeline", self.khr_ray_tracing_pipeline), 7202 ("VK_KHR_relaxed_block_layout", self.khr_relaxed_block_layout), 7203 ( 7204 "VK_KHR_sampler_mirror_clamp_to_edge", 7205 self.khr_sampler_mirror_clamp_to_edge, 7206 ), 7207 ( 7208 "VK_KHR_sampler_ycbcr_conversion", 7209 self.khr_sampler_ycbcr_conversion, 7210 ), 7211 ( 7212 "VK_KHR_separate_depth_stencil_layouts", 7213 self.khr_separate_depth_stencil_layouts, 7214 ), 7215 ("VK_KHR_shader_atomic_int64", self.khr_shader_atomic_int64), 7216 ("VK_KHR_shader_clock", self.khr_shader_clock), 7217 ( 7218 "VK_KHR_shader_draw_parameters", 7219 self.khr_shader_draw_parameters, 7220 ), 7221 ("VK_KHR_shader_float16_int8", self.khr_shader_float16_int8), 7222 ( 7223 "VK_KHR_shader_float_controls", 7224 self.khr_shader_float_controls, 7225 ), 7226 ( 7227 "VK_KHR_shader_integer_dot_product", 7228 self.khr_shader_integer_dot_product, 7229 ), 7230 ( 7231 "VK_KHR_shader_non_semantic_info", 7232 self.khr_shader_non_semantic_info, 7233 ), 7234 ( 7235 "VK_KHR_shader_subgroup_extended_types", 7236 self.khr_shader_subgroup_extended_types, 7237 ), 7238 ( 7239 "VK_KHR_shader_subgroup_uniform_control_flow", 7240 self.khr_shader_subgroup_uniform_control_flow, 7241 ), 7242 ( 7243 "VK_KHR_shader_terminate_invocation", 7244 self.khr_shader_terminate_invocation, 7245 ), 7246 ( 7247 "VK_KHR_shared_presentable_image", 7248 self.khr_shared_presentable_image, 7249 ), 7250 ("VK_KHR_spirv_1_4", self.khr_spirv_1_4), 7251 ( 7252 "VK_KHR_storage_buffer_storage_class", 7253 self.khr_storage_buffer_storage_class, 7254 ), 7255 ("VK_KHR_swapchain", self.khr_swapchain), 7256 ( 7257 "VK_KHR_swapchain_mutable_format", 7258 self.khr_swapchain_mutable_format, 7259 ), 7260 ("VK_KHR_synchronization2", self.khr_synchronization2), 7261 ("VK_KHR_timeline_semaphore", self.khr_timeline_semaphore), 7262 ( 7263 "VK_KHR_uniform_buffer_standard_layout", 7264 self.khr_uniform_buffer_standard_layout, 7265 ), 7266 ("VK_KHR_variable_pointers", self.khr_variable_pointers), 7267 ("VK_KHR_video_decode_h264", self.khr_video_decode_h264), 7268 ("VK_KHR_video_decode_h265", self.khr_video_decode_h265), 7269 ("VK_KHR_video_decode_queue", self.khr_video_decode_queue), 7270 ("VK_KHR_video_encode_queue", self.khr_video_encode_queue), 7271 ("VK_KHR_video_queue", self.khr_video_queue), 7272 ("VK_KHR_vulkan_memory_model", self.khr_vulkan_memory_model), 7273 ("VK_KHR_win32_keyed_mutex", self.khr_win32_keyed_mutex), 7274 ( 7275 "VK_KHR_workgroup_memory_explicit_layout", 7276 self.khr_workgroup_memory_explicit_layout, 7277 ), 7278 ( 7279 "VK_KHR_zero_initialize_workgroup_memory", 7280 self.khr_zero_initialize_workgroup_memory, 7281 ), 7282 ("VK_EXT_4444_formats", self.ext_4444_formats), 7283 ("VK_EXT_astc_decode_mode", self.ext_astc_decode_mode), 7284 ( 7285 "VK_EXT_attachment_feedback_loop_layout", 7286 self.ext_attachment_feedback_loop_layout, 7287 ), 7288 ( 7289 "VK_EXT_blend_operation_advanced", 7290 self.ext_blend_operation_advanced, 7291 ), 7292 ("VK_EXT_border_color_swizzle", self.ext_border_color_swizzle), 7293 ( 7294 "VK_EXT_buffer_device_address", 7295 self.ext_buffer_device_address, 7296 ), 7297 ( 7298 "VK_EXT_calibrated_timestamps", 7299 self.ext_calibrated_timestamps, 7300 ), 7301 ("VK_EXT_color_write_enable", self.ext_color_write_enable), 7302 ( 7303 "VK_EXT_conditional_rendering", 7304 self.ext_conditional_rendering, 7305 ), 7306 ( 7307 "VK_EXT_conservative_rasterization", 7308 self.ext_conservative_rasterization, 7309 ), 7310 ("VK_EXT_custom_border_color", self.ext_custom_border_color), 7311 ("VK_EXT_debug_marker", self.ext_debug_marker), 7312 ("VK_EXT_depth_clamp_zero_one", self.ext_depth_clamp_zero_one), 7313 ("VK_EXT_depth_clip_control", self.ext_depth_clip_control), 7314 ("VK_EXT_depth_clip_enable", self.ext_depth_clip_enable), 7315 ( 7316 "VK_EXT_depth_range_unrestricted", 7317 self.ext_depth_range_unrestricted, 7318 ), 7319 ("VK_EXT_descriptor_buffer", self.ext_descriptor_buffer), 7320 ("VK_EXT_descriptor_indexing", self.ext_descriptor_indexing), 7321 ( 7322 "VK_EXT_device_address_binding_report", 7323 self.ext_device_address_binding_report, 7324 ), 7325 ("VK_EXT_device_fault", self.ext_device_fault), 7326 ("VK_EXT_device_memory_report", self.ext_device_memory_report), 7327 ("VK_EXT_discard_rectangles", self.ext_discard_rectangles), 7328 ("VK_EXT_display_control", self.ext_display_control), 7329 ( 7330 "VK_EXT_extended_dynamic_state", 7331 self.ext_extended_dynamic_state, 7332 ), 7333 ( 7334 "VK_EXT_extended_dynamic_state2", 7335 self.ext_extended_dynamic_state2, 7336 ), 7337 ( 7338 "VK_EXT_extended_dynamic_state3", 7339 self.ext_extended_dynamic_state3, 7340 ), 7341 ( 7342 "VK_EXT_external_memory_dma_buf", 7343 self.ext_external_memory_dma_buf, 7344 ), 7345 ("VK_EXT_external_memory_host", self.ext_external_memory_host), 7346 ("VK_EXT_filter_cubic", self.ext_filter_cubic), 7347 ("VK_EXT_fragment_density_map", self.ext_fragment_density_map), 7348 ( 7349 "VK_EXT_fragment_density_map2", 7350 self.ext_fragment_density_map2, 7351 ), 7352 ( 7353 "VK_EXT_fragment_shader_interlock", 7354 self.ext_fragment_shader_interlock, 7355 ), 7356 ( 7357 "VK_EXT_full_screen_exclusive", 7358 self.ext_full_screen_exclusive, 7359 ), 7360 ("VK_EXT_global_priority", self.ext_global_priority), 7361 ( 7362 "VK_EXT_global_priority_query", 7363 self.ext_global_priority_query, 7364 ), 7365 ( 7366 "VK_EXT_graphics_pipeline_library", 7367 self.ext_graphics_pipeline_library, 7368 ), 7369 ("VK_EXT_hdr_metadata", self.ext_hdr_metadata), 7370 ("VK_EXT_host_query_reset", self.ext_host_query_reset), 7371 ("VK_EXT_image_2d_view_of_3d", self.ext_image_2d_view_of_3d), 7372 ( 7373 "VK_EXT_image_compression_control", 7374 self.ext_image_compression_control, 7375 ), 7376 ( 7377 "VK_EXT_image_compression_control_swapchain", 7378 self.ext_image_compression_control_swapchain, 7379 ), 7380 ( 7381 "VK_EXT_image_drm_format_modifier", 7382 self.ext_image_drm_format_modifier, 7383 ), 7384 ("VK_EXT_image_robustness", self.ext_image_robustness), 7385 ("VK_EXT_image_view_min_lod", self.ext_image_view_min_lod), 7386 ("VK_EXT_index_type_uint8", self.ext_index_type_uint8), 7387 ("VK_EXT_inline_uniform_block", self.ext_inline_uniform_block), 7388 ("VK_EXT_legacy_dithering", self.ext_legacy_dithering), 7389 ("VK_EXT_line_rasterization", self.ext_line_rasterization), 7390 ("VK_EXT_load_store_op_none", self.ext_load_store_op_none), 7391 ("VK_EXT_memory_budget", self.ext_memory_budget), 7392 ("VK_EXT_memory_priority", self.ext_memory_priority), 7393 ("VK_EXT_mesh_shader", self.ext_mesh_shader), 7394 ("VK_EXT_metal_objects", self.ext_metal_objects), 7395 ("VK_EXT_multi_draw", self.ext_multi_draw), 7396 ( 7397 "VK_EXT_multisampled_render_to_single_sampled", 7398 self.ext_multisampled_render_to_single_sampled, 7399 ), 7400 ( 7401 "VK_EXT_mutable_descriptor_type", 7402 self.ext_mutable_descriptor_type, 7403 ), 7404 ( 7405 "VK_EXT_non_seamless_cube_map", 7406 self.ext_non_seamless_cube_map, 7407 ), 7408 ("VK_EXT_opacity_micromap", self.ext_opacity_micromap), 7409 ( 7410 "VK_EXT_pageable_device_local_memory", 7411 self.ext_pageable_device_local_memory, 7412 ), 7413 ("VK_EXT_pci_bus_info", self.ext_pci_bus_info), 7414 ("VK_EXT_physical_device_drm", self.ext_physical_device_drm), 7415 ( 7416 "VK_EXT_pipeline_creation_cache_control", 7417 self.ext_pipeline_creation_cache_control, 7418 ), 7419 ( 7420 "VK_EXT_pipeline_creation_feedback", 7421 self.ext_pipeline_creation_feedback, 7422 ), 7423 ("VK_EXT_pipeline_properties", self.ext_pipeline_properties), 7424 ( 7425 "VK_EXT_pipeline_protected_access", 7426 self.ext_pipeline_protected_access, 7427 ), 7428 ("VK_EXT_pipeline_robustness", self.ext_pipeline_robustness), 7429 ("VK_EXT_post_depth_coverage", self.ext_post_depth_coverage), 7430 ( 7431 "VK_EXT_primitive_topology_list_restart", 7432 self.ext_primitive_topology_list_restart, 7433 ), 7434 ( 7435 "VK_EXT_primitives_generated_query", 7436 self.ext_primitives_generated_query, 7437 ), 7438 ("VK_EXT_private_data", self.ext_private_data), 7439 ("VK_EXT_provoking_vertex", self.ext_provoking_vertex), 7440 ("VK_EXT_queue_family_foreign", self.ext_queue_family_foreign), 7441 ( 7442 "VK_EXT_rasterization_order_attachment_access", 7443 self.ext_rasterization_order_attachment_access, 7444 ), 7445 ("VK_EXT_rgba10x6_formats", self.ext_rgba10x6_formats), 7446 ("VK_EXT_robustness2", self.ext_robustness2), 7447 ("VK_EXT_sample_locations", self.ext_sample_locations), 7448 ( 7449 "VK_EXT_sampler_filter_minmax", 7450 self.ext_sampler_filter_minmax, 7451 ), 7452 ("VK_EXT_scalar_block_layout", self.ext_scalar_block_layout), 7453 ( 7454 "VK_EXT_separate_stencil_usage", 7455 self.ext_separate_stencil_usage, 7456 ), 7457 ("VK_EXT_shader_atomic_float", self.ext_shader_atomic_float), 7458 ("VK_EXT_shader_atomic_float2", self.ext_shader_atomic_float2), 7459 ( 7460 "VK_EXT_shader_demote_to_helper_invocation", 7461 self.ext_shader_demote_to_helper_invocation, 7462 ), 7463 ( 7464 "VK_EXT_shader_image_atomic_int64", 7465 self.ext_shader_image_atomic_int64, 7466 ), 7467 ( 7468 "VK_EXT_shader_module_identifier", 7469 self.ext_shader_module_identifier, 7470 ), 7471 ( 7472 "VK_EXT_shader_stencil_export", 7473 self.ext_shader_stencil_export, 7474 ), 7475 ( 7476 "VK_EXT_shader_subgroup_ballot", 7477 self.ext_shader_subgroup_ballot, 7478 ), 7479 ("VK_EXT_shader_subgroup_vote", self.ext_shader_subgroup_vote), 7480 ( 7481 "VK_EXT_shader_viewport_index_layer", 7482 self.ext_shader_viewport_index_layer, 7483 ), 7484 ( 7485 "VK_EXT_subgroup_size_control", 7486 self.ext_subgroup_size_control, 7487 ), 7488 ( 7489 "VK_EXT_subpass_merge_feedback", 7490 self.ext_subpass_merge_feedback, 7491 ), 7492 ( 7493 "VK_EXT_swapchain_maintenance1", 7494 self.ext_swapchain_maintenance1, 7495 ), 7496 ( 7497 "VK_EXT_texel_buffer_alignment", 7498 self.ext_texel_buffer_alignment, 7499 ), 7500 ( 7501 "VK_EXT_texture_compression_astc_hdr", 7502 self.ext_texture_compression_astc_hdr, 7503 ), 7504 ("VK_EXT_tooling_info", self.ext_tooling_info), 7505 ("VK_EXT_transform_feedback", self.ext_transform_feedback), 7506 ("VK_EXT_validation_cache", self.ext_validation_cache), 7507 ( 7508 "VK_EXT_vertex_attribute_divisor", 7509 self.ext_vertex_attribute_divisor, 7510 ), 7511 ( 7512 "VK_EXT_vertex_input_dynamic_state", 7513 self.ext_vertex_input_dynamic_state, 7514 ), 7515 ("VK_EXT_video_encode_h264", self.ext_video_encode_h264), 7516 ("VK_EXT_video_encode_h265", self.ext_video_encode_h265), 7517 ( 7518 "VK_EXT_ycbcr_2plane_444_formats", 7519 self.ext_ycbcr_2plane_444_formats, 7520 ), 7521 ("VK_EXT_ycbcr_image_arrays", self.ext_ycbcr_image_arrays), 7522 ("VK_AMD_buffer_marker", self.amd_buffer_marker), 7523 ( 7524 "VK_AMD_device_coherent_memory", 7525 self.amd_device_coherent_memory, 7526 ), 7527 ("VK_AMD_display_native_hdr", self.amd_display_native_hdr), 7528 ("VK_AMD_draw_indirect_count", self.amd_draw_indirect_count), 7529 ("VK_AMD_gcn_shader", self.amd_gcn_shader), 7530 ( 7531 "VK_AMD_gpu_shader_half_float", 7532 self.amd_gpu_shader_half_float, 7533 ), 7534 ("VK_AMD_gpu_shader_int16", self.amd_gpu_shader_int16), 7535 ( 7536 "VK_AMD_memory_overallocation_behavior", 7537 self.amd_memory_overallocation_behavior, 7538 ), 7539 ( 7540 "VK_AMD_mixed_attachment_samples", 7541 self.amd_mixed_attachment_samples, 7542 ), 7543 ( 7544 "VK_AMD_pipeline_compiler_control", 7545 self.amd_pipeline_compiler_control, 7546 ), 7547 ("VK_AMD_rasterization_order", self.amd_rasterization_order), 7548 ("VK_AMD_shader_ballot", self.amd_shader_ballot), 7549 ( 7550 "VK_AMD_shader_core_properties", 7551 self.amd_shader_core_properties, 7552 ), 7553 ( 7554 "VK_AMD_shader_core_properties2", 7555 self.amd_shader_core_properties2, 7556 ), 7557 ( 7558 "VK_AMD_shader_early_and_late_fragment_tests", 7559 self.amd_shader_early_and_late_fragment_tests, 7560 ), 7561 ( 7562 "VK_AMD_shader_explicit_vertex_parameter", 7563 self.amd_shader_explicit_vertex_parameter, 7564 ), 7565 ("VK_AMD_shader_fragment_mask", self.amd_shader_fragment_mask), 7566 ( 7567 "VK_AMD_shader_image_load_store_lod", 7568 self.amd_shader_image_load_store_lod, 7569 ), 7570 ("VK_AMD_shader_info", self.amd_shader_info), 7571 ( 7572 "VK_AMD_shader_trinary_minmax", 7573 self.amd_shader_trinary_minmax, 7574 ), 7575 ( 7576 "VK_AMD_texture_gather_bias_lod", 7577 self.amd_texture_gather_bias_lod, 7578 ), 7579 ( 7580 "VK_ANDROID_external_memory_android_hardware_buffer", 7581 self.android_external_memory_android_hardware_buffer, 7582 ), 7583 ( 7584 "VK_ARM_rasterization_order_attachment_access", 7585 self.arm_rasterization_order_attachment_access, 7586 ), 7587 ("VK_ARM_shader_core_builtins", self.arm_shader_core_builtins), 7588 ( 7589 "VK_FUCHSIA_buffer_collection", 7590 self.fuchsia_buffer_collection, 7591 ), 7592 ("VK_FUCHSIA_external_memory", self.fuchsia_external_memory), 7593 ( 7594 "VK_FUCHSIA_external_semaphore", 7595 self.fuchsia_external_semaphore, 7596 ), 7597 ("VK_GGP_frame_token", self.ggp_frame_token), 7598 ("VK_GOOGLE_decorate_string", self.google_decorate_string), 7599 ("VK_GOOGLE_display_timing", self.google_display_timing), 7600 ( 7601 "VK_GOOGLE_hlsl_functionality1", 7602 self.google_hlsl_functionality1, 7603 ), 7604 ("VK_GOOGLE_user_type", self.google_user_type), 7605 ("VK_HUAWEI_invocation_mask", self.huawei_invocation_mask), 7606 ("VK_HUAWEI_subpass_shading", self.huawei_subpass_shading), 7607 ("VK_IMG_filter_cubic", self.img_filter_cubic), 7608 ("VK_IMG_format_pvrtc", self.img_format_pvrtc), 7609 ("VK_INTEL_performance_query", self.intel_performance_query), 7610 ( 7611 "VK_INTEL_shader_integer_functions2", 7612 self.intel_shader_integer_functions2, 7613 ), 7614 ("VK_NVX_binary_import", self.nvx_binary_import), 7615 ("VK_NVX_image_view_handle", self.nvx_image_view_handle), 7616 ( 7617 "VK_NVX_multiview_per_view_attributes", 7618 self.nvx_multiview_per_view_attributes, 7619 ), 7620 ("VK_NV_acquire_winrt_display", self.nv_acquire_winrt_display), 7621 ("VK_NV_clip_space_w_scaling", self.nv_clip_space_w_scaling), 7622 ( 7623 "VK_NV_compute_shader_derivatives", 7624 self.nv_compute_shader_derivatives, 7625 ), 7626 ("VK_NV_cooperative_matrix", self.nv_cooperative_matrix), 7627 ("VK_NV_copy_memory_indirect", self.nv_copy_memory_indirect), 7628 ("VK_NV_corner_sampled_image", self.nv_corner_sampled_image), 7629 ( 7630 "VK_NV_coverage_reduction_mode", 7631 self.nv_coverage_reduction_mode, 7632 ), 7633 ("VK_NV_dedicated_allocation", self.nv_dedicated_allocation), 7634 ( 7635 "VK_NV_dedicated_allocation_image_aliasing", 7636 self.nv_dedicated_allocation_image_aliasing, 7637 ), 7638 ( 7639 "VK_NV_device_diagnostic_checkpoints", 7640 self.nv_device_diagnostic_checkpoints, 7641 ), 7642 ( 7643 "VK_NV_device_diagnostics_config", 7644 self.nv_device_diagnostics_config, 7645 ), 7646 ( 7647 "VK_NV_device_generated_commands", 7648 self.nv_device_generated_commands, 7649 ), 7650 ("VK_NV_external_memory", self.nv_external_memory), 7651 ("VK_NV_external_memory_rdma", self.nv_external_memory_rdma), 7652 ("VK_NV_external_memory_win32", self.nv_external_memory_win32), 7653 ("VK_NV_fill_rectangle", self.nv_fill_rectangle), 7654 ( 7655 "VK_NV_fragment_coverage_to_color", 7656 self.nv_fragment_coverage_to_color, 7657 ), 7658 ( 7659 "VK_NV_fragment_shader_barycentric", 7660 self.nv_fragment_shader_barycentric, 7661 ), 7662 ( 7663 "VK_NV_fragment_shading_rate_enums", 7664 self.nv_fragment_shading_rate_enums, 7665 ), 7666 ( 7667 "VK_NV_framebuffer_mixed_samples", 7668 self.nv_framebuffer_mixed_samples, 7669 ), 7670 ( 7671 "VK_NV_geometry_shader_passthrough", 7672 self.nv_geometry_shader_passthrough, 7673 ), 7674 ("VK_NV_glsl_shader", self.nv_glsl_shader), 7675 ( 7676 "VK_NV_inherited_viewport_scissor", 7677 self.nv_inherited_viewport_scissor, 7678 ), 7679 ( 7680 "VK_NV_linear_color_attachment", 7681 self.nv_linear_color_attachment, 7682 ), 7683 ("VK_NV_memory_decompression", self.nv_memory_decompression), 7684 ("VK_NV_mesh_shader", self.nv_mesh_shader), 7685 ("VK_NV_optical_flow", self.nv_optical_flow), 7686 ("VK_NV_present_barrier", self.nv_present_barrier), 7687 ("VK_NV_ray_tracing", self.nv_ray_tracing), 7688 ( 7689 "VK_NV_ray_tracing_invocation_reorder", 7690 self.nv_ray_tracing_invocation_reorder, 7691 ), 7692 ( 7693 "VK_NV_ray_tracing_motion_blur", 7694 self.nv_ray_tracing_motion_blur, 7695 ), 7696 ( 7697 "VK_NV_representative_fragment_test", 7698 self.nv_representative_fragment_test, 7699 ), 7700 ( 7701 "VK_NV_sample_mask_override_coverage", 7702 self.nv_sample_mask_override_coverage, 7703 ), 7704 ("VK_NV_scissor_exclusive", self.nv_scissor_exclusive), 7705 ( 7706 "VK_NV_shader_image_footprint", 7707 self.nv_shader_image_footprint, 7708 ), 7709 ("VK_NV_shader_sm_builtins", self.nv_shader_sm_builtins), 7710 ( 7711 "VK_NV_shader_subgroup_partitioned", 7712 self.nv_shader_subgroup_partitioned, 7713 ), 7714 ("VK_NV_shading_rate_image", self.nv_shading_rate_image), 7715 ("VK_NV_viewport_array2", self.nv_viewport_array2), 7716 ("VK_NV_viewport_swizzle", self.nv_viewport_swizzle), 7717 ("VK_NV_win32_keyed_mutex", self.nv_win32_keyed_mutex), 7718 ( 7719 "VK_QCOM_fragment_density_map_offset", 7720 self.qcom_fragment_density_map_offset, 7721 ), 7722 ("VK_QCOM_image_processing", self.qcom_image_processing), 7723 ( 7724 "VK_QCOM_multiview_per_view_viewports", 7725 self.qcom_multiview_per_view_viewports, 7726 ), 7727 ( 7728 "VK_QCOM_render_pass_shader_resolve", 7729 self.qcom_render_pass_shader_resolve, 7730 ), 7731 ( 7732 "VK_QCOM_render_pass_store_ops", 7733 self.qcom_render_pass_store_ops, 7734 ), 7735 ( 7736 "VK_QCOM_render_pass_transform", 7737 self.qcom_render_pass_transform, 7738 ), 7739 ( 7740 "VK_QCOM_rotated_copy_commands", 7741 self.qcom_rotated_copy_commands, 7742 ), 7743 ("VK_QCOM_tile_properties", self.qcom_tile_properties), 7744 ("VK_SEC_amigo_profiling", self.sec_amigo_profiling), 7745 ( 7746 "VK_VALVE_descriptor_set_host_mapping", 7747 self.valve_descriptor_set_host_mapping, 7748 ), 7749 ( 7750 "VK_VALVE_mutable_descriptor_type", 7751 self.valve_mutable_descriptor_type, 7752 ), 7753 ] 7754 .into_iter() 7755 } 7756 } 7757 impl DeviceExtensions { 7758 #[doc = r" Checks enabled extensions against the device version, instance extensions and each other."] check_requirements( &self, supported: &DeviceExtensions, api_version: crate::Version, instance_extensions: &crate::instance::InstanceExtensions, ) -> Result<(), crate::device::ExtensionRestrictionError>7759 pub(super) fn check_requirements( 7760 &self, 7761 supported: &DeviceExtensions, 7762 api_version: crate::Version, 7763 instance_extensions: &crate::instance::InstanceExtensions, 7764 ) -> Result<(), crate::device::ExtensionRestrictionError> { 7765 let device_extensions = self; 7766 if self.khr_16bit_storage { 7767 if !supported.khr_16bit_storage { 7768 return Err(crate::device::ExtensionRestrictionError { 7769 extension: "khr_16bit_storage", 7770 restriction: crate::device::ExtensionRestriction::NotSupported, 7771 }); 7772 } 7773 if !(api_version >= crate::Version::V1_1 7774 || instance_extensions.khr_get_physical_device_properties2) 7775 { 7776 return Err(crate::device::ExtensionRestrictionError { 7777 extension: "khr_16bit_storage", 7778 restriction: crate::device::ExtensionRestriction::Requires( 7779 crate::RequiresOneOf { 7780 api_version: Some(crate::Version::V1_1), 7781 device_extensions: &[], 7782 instance_extensions: &["khr_get_physical_device_properties2"], 7783 ..Default::default() 7784 }, 7785 ), 7786 }); 7787 } 7788 if !(api_version >= crate::Version::V1_1 7789 || device_extensions.khr_storage_buffer_storage_class) 7790 { 7791 return Err(crate::device::ExtensionRestrictionError { 7792 extension: "khr_16bit_storage", 7793 restriction: crate::device::ExtensionRestriction::Requires( 7794 crate::RequiresOneOf { 7795 api_version: Some(crate::Version::V1_1), 7796 device_extensions: &["khr_storage_buffer_storage_class"], 7797 instance_extensions: &[], 7798 ..Default::default() 7799 }, 7800 ), 7801 }); 7802 } 7803 } else { 7804 } 7805 if self.khr_8bit_storage { 7806 if !supported.khr_8bit_storage { 7807 return Err(crate::device::ExtensionRestrictionError { 7808 extension: "khr_8bit_storage", 7809 restriction: crate::device::ExtensionRestriction::NotSupported, 7810 }); 7811 } 7812 if !(api_version >= crate::Version::V1_1 7813 || instance_extensions.khr_get_physical_device_properties2) 7814 { 7815 return Err(crate::device::ExtensionRestrictionError { 7816 extension: "khr_8bit_storage", 7817 restriction: crate::device::ExtensionRestriction::Requires( 7818 crate::RequiresOneOf { 7819 api_version: Some(crate::Version::V1_1), 7820 device_extensions: &[], 7821 instance_extensions: &["khr_get_physical_device_properties2"], 7822 ..Default::default() 7823 }, 7824 ), 7825 }); 7826 } 7827 if !(api_version >= crate::Version::V1_1 7828 || device_extensions.khr_storage_buffer_storage_class) 7829 { 7830 return Err(crate::device::ExtensionRestrictionError { 7831 extension: "khr_8bit_storage", 7832 restriction: crate::device::ExtensionRestriction::Requires( 7833 crate::RequiresOneOf { 7834 api_version: Some(crate::Version::V1_1), 7835 device_extensions: &["khr_storage_buffer_storage_class"], 7836 instance_extensions: &[], 7837 ..Default::default() 7838 }, 7839 ), 7840 }); 7841 } 7842 } else { 7843 } 7844 if self.khr_acceleration_structure { 7845 if !supported.khr_acceleration_structure { 7846 return Err(crate::device::ExtensionRestrictionError { 7847 extension: "khr_acceleration_structure", 7848 restriction: crate::device::ExtensionRestriction::NotSupported, 7849 }); 7850 } 7851 if !(api_version >= crate::Version::V1_1) { 7852 return Err(crate::device::ExtensionRestrictionError { 7853 extension: "khr_acceleration_structure", 7854 restriction: crate::device::ExtensionRestriction::Requires( 7855 crate::RequiresOneOf { 7856 api_version: Some(crate::Version::V1_1), 7857 device_extensions: &[], 7858 instance_extensions: &[], 7859 ..Default::default() 7860 }, 7861 ), 7862 }); 7863 } 7864 if !(api_version >= crate::Version::V1_2 || device_extensions.ext_descriptor_indexing) { 7865 return Err(crate::device::ExtensionRestrictionError { 7866 extension: "khr_acceleration_structure", 7867 restriction: crate::device::ExtensionRestriction::Requires( 7868 crate::RequiresOneOf { 7869 api_version: Some(crate::Version::V1_2), 7870 device_extensions: &["ext_descriptor_indexing"], 7871 instance_extensions: &[], 7872 ..Default::default() 7873 }, 7874 ), 7875 }); 7876 } 7877 if !(api_version >= crate::Version::V1_2 || device_extensions.khr_buffer_device_address) 7878 { 7879 return Err(crate::device::ExtensionRestrictionError { 7880 extension: "khr_acceleration_structure", 7881 restriction: crate::device::ExtensionRestriction::Requires( 7882 crate::RequiresOneOf { 7883 api_version: Some(crate::Version::V1_2), 7884 device_extensions: &["khr_buffer_device_address"], 7885 instance_extensions: &[], 7886 ..Default::default() 7887 }, 7888 ), 7889 }); 7890 } 7891 if !(device_extensions.khr_deferred_host_operations) { 7892 return Err(crate::device::ExtensionRestrictionError { 7893 extension: "khr_acceleration_structure", 7894 restriction: crate::device::ExtensionRestriction::Requires( 7895 crate::RequiresOneOf { 7896 api_version: None, 7897 device_extensions: &["khr_deferred_host_operations"], 7898 instance_extensions: &[], 7899 ..Default::default() 7900 }, 7901 ), 7902 }); 7903 } 7904 } else { 7905 } 7906 if self.khr_bind_memory2 { 7907 if !supported.khr_bind_memory2 { 7908 return Err(crate::device::ExtensionRestrictionError { 7909 extension: "khr_bind_memory2", 7910 restriction: crate::device::ExtensionRestriction::NotSupported, 7911 }); 7912 } 7913 } else { 7914 } 7915 if self.khr_buffer_device_address { 7916 if !supported.khr_buffer_device_address { 7917 return Err(crate::device::ExtensionRestrictionError { 7918 extension: "khr_buffer_device_address", 7919 restriction: crate::device::ExtensionRestriction::NotSupported, 7920 }); 7921 } 7922 if !(api_version >= crate::Version::V1_1 7923 || instance_extensions.khr_get_physical_device_properties2) 7924 { 7925 return Err(crate::device::ExtensionRestrictionError { 7926 extension: "khr_buffer_device_address", 7927 restriction: crate::device::ExtensionRestriction::Requires( 7928 crate::RequiresOneOf { 7929 api_version: Some(crate::Version::V1_1), 7930 device_extensions: &[], 7931 instance_extensions: &["khr_get_physical_device_properties2"], 7932 ..Default::default() 7933 }, 7934 ), 7935 }); 7936 } 7937 if self.ext_buffer_device_address { 7938 return Err(crate::device::ExtensionRestrictionError { 7939 extension: "khr_buffer_device_address", 7940 restriction: crate::device::ExtensionRestriction::ConflictsDeviceExtension( 7941 "ext_buffer_device_address", 7942 ), 7943 }); 7944 } 7945 } else { 7946 } 7947 if self.khr_copy_commands2 { 7948 if !supported.khr_copy_commands2 { 7949 return Err(crate::device::ExtensionRestrictionError { 7950 extension: "khr_copy_commands2", 7951 restriction: crate::device::ExtensionRestriction::NotSupported, 7952 }); 7953 } 7954 } else { 7955 } 7956 if self.khr_create_renderpass2 { 7957 if !supported.khr_create_renderpass2 { 7958 return Err(crate::device::ExtensionRestrictionError { 7959 extension: "khr_create_renderpass2", 7960 restriction: crate::device::ExtensionRestriction::NotSupported, 7961 }); 7962 } 7963 if !(api_version >= crate::Version::V1_1 || device_extensions.khr_multiview) { 7964 return Err(crate::device::ExtensionRestrictionError { 7965 extension: "khr_create_renderpass2", 7966 restriction: crate::device::ExtensionRestriction::Requires( 7967 crate::RequiresOneOf { 7968 api_version: Some(crate::Version::V1_1), 7969 device_extensions: &["khr_multiview"], 7970 instance_extensions: &[], 7971 ..Default::default() 7972 }, 7973 ), 7974 }); 7975 } 7976 if !(api_version >= crate::Version::V1_1 || device_extensions.khr_maintenance2) { 7977 return Err(crate::device::ExtensionRestrictionError { 7978 extension: "khr_create_renderpass2", 7979 restriction: crate::device::ExtensionRestriction::Requires( 7980 crate::RequiresOneOf { 7981 api_version: Some(crate::Version::V1_1), 7982 device_extensions: &["khr_maintenance2"], 7983 instance_extensions: &[], 7984 ..Default::default() 7985 }, 7986 ), 7987 }); 7988 } 7989 } else { 7990 } 7991 if self.khr_dedicated_allocation { 7992 if !supported.khr_dedicated_allocation { 7993 return Err(crate::device::ExtensionRestrictionError { 7994 extension: "khr_dedicated_allocation", 7995 restriction: crate::device::ExtensionRestriction::NotSupported, 7996 }); 7997 } 7998 if !(api_version >= crate::Version::V1_1 7999 || device_extensions.khr_get_memory_requirements2) 8000 { 8001 return Err(crate::device::ExtensionRestrictionError { 8002 extension: "khr_dedicated_allocation", 8003 restriction: crate::device::ExtensionRestriction::Requires( 8004 crate::RequiresOneOf { 8005 api_version: Some(crate::Version::V1_1), 8006 device_extensions: &["khr_get_memory_requirements2"], 8007 instance_extensions: &[], 8008 ..Default::default() 8009 }, 8010 ), 8011 }); 8012 } 8013 } else { 8014 } 8015 if self.khr_deferred_host_operations { 8016 if !supported.khr_deferred_host_operations { 8017 return Err(crate::device::ExtensionRestrictionError { 8018 extension: "khr_deferred_host_operations", 8019 restriction: crate::device::ExtensionRestriction::NotSupported, 8020 }); 8021 } 8022 } else { 8023 } 8024 if self.khr_depth_stencil_resolve { 8025 if !supported.khr_depth_stencil_resolve { 8026 return Err(crate::device::ExtensionRestrictionError { 8027 extension: "khr_depth_stencil_resolve", 8028 restriction: crate::device::ExtensionRestriction::NotSupported, 8029 }); 8030 } 8031 if !(api_version >= crate::Version::V1_2 || device_extensions.khr_create_renderpass2) { 8032 return Err(crate::device::ExtensionRestrictionError { 8033 extension: "khr_depth_stencil_resolve", 8034 restriction: crate::device::ExtensionRestriction::Requires( 8035 crate::RequiresOneOf { 8036 api_version: Some(crate::Version::V1_2), 8037 device_extensions: &["khr_create_renderpass2"], 8038 instance_extensions: &[], 8039 ..Default::default() 8040 }, 8041 ), 8042 }); 8043 } 8044 } else { 8045 } 8046 if self.khr_descriptor_update_template { 8047 if !supported.khr_descriptor_update_template { 8048 return Err(crate::device::ExtensionRestrictionError { 8049 extension: "khr_descriptor_update_template", 8050 restriction: crate::device::ExtensionRestriction::NotSupported, 8051 }); 8052 } 8053 } else { 8054 } 8055 if self.khr_device_group { 8056 if !supported.khr_device_group { 8057 return Err(crate::device::ExtensionRestrictionError { 8058 extension: "khr_device_group", 8059 restriction: crate::device::ExtensionRestriction::NotSupported, 8060 }); 8061 } 8062 if !(api_version >= crate::Version::V1_1 8063 || instance_extensions.khr_device_group_creation) 8064 { 8065 return Err(crate::device::ExtensionRestrictionError { 8066 extension: "khr_device_group", 8067 restriction: crate::device::ExtensionRestriction::Requires( 8068 crate::RequiresOneOf { 8069 api_version: Some(crate::Version::V1_1), 8070 device_extensions: &[], 8071 instance_extensions: &["khr_device_group_creation"], 8072 ..Default::default() 8073 }, 8074 ), 8075 }); 8076 } 8077 } else { 8078 } 8079 if self.khr_display_swapchain { 8080 if !supported.khr_display_swapchain { 8081 return Err(crate::device::ExtensionRestrictionError { 8082 extension: "khr_display_swapchain", 8083 restriction: crate::device::ExtensionRestriction::NotSupported, 8084 }); 8085 } 8086 if !(device_extensions.khr_swapchain) { 8087 return Err(crate::device::ExtensionRestrictionError { 8088 extension: "khr_display_swapchain", 8089 restriction: crate::device::ExtensionRestriction::Requires( 8090 crate::RequiresOneOf { 8091 api_version: None, 8092 device_extensions: &["khr_swapchain"], 8093 instance_extensions: &[], 8094 ..Default::default() 8095 }, 8096 ), 8097 }); 8098 } 8099 if !(instance_extensions.khr_display) { 8100 return Err(crate::device::ExtensionRestrictionError { 8101 extension: "khr_display_swapchain", 8102 restriction: crate::device::ExtensionRestriction::Requires( 8103 crate::RequiresOneOf { 8104 api_version: None, 8105 device_extensions: &[], 8106 instance_extensions: &["khr_display"], 8107 ..Default::default() 8108 }, 8109 ), 8110 }); 8111 } 8112 } else { 8113 } 8114 if self.khr_draw_indirect_count { 8115 if !supported.khr_draw_indirect_count { 8116 return Err(crate::device::ExtensionRestrictionError { 8117 extension: "khr_draw_indirect_count", 8118 restriction: crate::device::ExtensionRestriction::NotSupported, 8119 }); 8120 } 8121 } else { 8122 } 8123 if self.khr_driver_properties { 8124 if !supported.khr_driver_properties { 8125 return Err(crate::device::ExtensionRestrictionError { 8126 extension: "khr_driver_properties", 8127 restriction: crate::device::ExtensionRestriction::NotSupported, 8128 }); 8129 } 8130 if !(api_version >= crate::Version::V1_1 8131 || instance_extensions.khr_get_physical_device_properties2) 8132 { 8133 return Err(crate::device::ExtensionRestrictionError { 8134 extension: "khr_driver_properties", 8135 restriction: crate::device::ExtensionRestriction::Requires( 8136 crate::RequiresOneOf { 8137 api_version: Some(crate::Version::V1_1), 8138 device_extensions: &[], 8139 instance_extensions: &["khr_get_physical_device_properties2"], 8140 ..Default::default() 8141 }, 8142 ), 8143 }); 8144 } 8145 } else { 8146 } 8147 if self.khr_dynamic_rendering { 8148 if !supported.khr_dynamic_rendering { 8149 return Err(crate::device::ExtensionRestrictionError { 8150 extension: "khr_dynamic_rendering", 8151 restriction: crate::device::ExtensionRestriction::NotSupported, 8152 }); 8153 } 8154 if !(api_version >= crate::Version::V1_2 || device_extensions.khr_depth_stencil_resolve) 8155 { 8156 return Err(crate::device::ExtensionRestrictionError { 8157 extension: "khr_dynamic_rendering", 8158 restriction: crate::device::ExtensionRestriction::Requires( 8159 crate::RequiresOneOf { 8160 api_version: Some(crate::Version::V1_2), 8161 device_extensions: &["khr_depth_stencil_resolve"], 8162 instance_extensions: &[], 8163 ..Default::default() 8164 }, 8165 ), 8166 }); 8167 } 8168 if !(api_version >= crate::Version::V1_1 8169 || instance_extensions.khr_get_physical_device_properties2) 8170 { 8171 return Err(crate::device::ExtensionRestrictionError { 8172 extension: "khr_dynamic_rendering", 8173 restriction: crate::device::ExtensionRestriction::Requires( 8174 crate::RequiresOneOf { 8175 api_version: Some(crate::Version::V1_1), 8176 device_extensions: &[], 8177 instance_extensions: &["khr_get_physical_device_properties2"], 8178 ..Default::default() 8179 }, 8180 ), 8181 }); 8182 } 8183 } else { 8184 } 8185 if self.khr_external_fence { 8186 if !supported.khr_external_fence { 8187 return Err(crate::device::ExtensionRestrictionError { 8188 extension: "khr_external_fence", 8189 restriction: crate::device::ExtensionRestriction::NotSupported, 8190 }); 8191 } 8192 if !(api_version >= crate::Version::V1_1 8193 || instance_extensions.khr_external_fence_capabilities) 8194 { 8195 return Err(crate::device::ExtensionRestrictionError { 8196 extension: "khr_external_fence", 8197 restriction: crate::device::ExtensionRestriction::Requires( 8198 crate::RequiresOneOf { 8199 api_version: Some(crate::Version::V1_1), 8200 device_extensions: &[], 8201 instance_extensions: &["khr_external_fence_capabilities"], 8202 ..Default::default() 8203 }, 8204 ), 8205 }); 8206 } 8207 } else { 8208 } 8209 if self.khr_external_fence_fd { 8210 if !supported.khr_external_fence_fd { 8211 return Err(crate::device::ExtensionRestrictionError { 8212 extension: "khr_external_fence_fd", 8213 restriction: crate::device::ExtensionRestriction::NotSupported, 8214 }); 8215 } 8216 if !(api_version >= crate::Version::V1_1 || device_extensions.khr_external_fence) { 8217 return Err(crate::device::ExtensionRestrictionError { 8218 extension: "khr_external_fence_fd", 8219 restriction: crate::device::ExtensionRestriction::Requires( 8220 crate::RequiresOneOf { 8221 api_version: Some(crate::Version::V1_1), 8222 device_extensions: &["khr_external_fence"], 8223 instance_extensions: &[], 8224 ..Default::default() 8225 }, 8226 ), 8227 }); 8228 } 8229 } else { 8230 } 8231 if self.khr_external_fence_win32 { 8232 if !supported.khr_external_fence_win32 { 8233 return Err(crate::device::ExtensionRestrictionError { 8234 extension: "khr_external_fence_win32", 8235 restriction: crate::device::ExtensionRestriction::NotSupported, 8236 }); 8237 } 8238 if !(api_version >= crate::Version::V1_1 || device_extensions.khr_external_fence) { 8239 return Err(crate::device::ExtensionRestrictionError { 8240 extension: "khr_external_fence_win32", 8241 restriction: crate::device::ExtensionRestriction::Requires( 8242 crate::RequiresOneOf { 8243 api_version: Some(crate::Version::V1_1), 8244 device_extensions: &["khr_external_fence"], 8245 instance_extensions: &[], 8246 ..Default::default() 8247 }, 8248 ), 8249 }); 8250 } 8251 } else { 8252 } 8253 if self.khr_external_memory { 8254 if !supported.khr_external_memory { 8255 return Err(crate::device::ExtensionRestrictionError { 8256 extension: "khr_external_memory", 8257 restriction: crate::device::ExtensionRestriction::NotSupported, 8258 }); 8259 } 8260 if !(api_version >= crate::Version::V1_1 8261 || instance_extensions.khr_external_memory_capabilities) 8262 { 8263 return Err(crate::device::ExtensionRestrictionError { 8264 extension: "khr_external_memory", 8265 restriction: crate::device::ExtensionRestriction::Requires( 8266 crate::RequiresOneOf { 8267 api_version: Some(crate::Version::V1_1), 8268 device_extensions: &[], 8269 instance_extensions: &["khr_external_memory_capabilities"], 8270 ..Default::default() 8271 }, 8272 ), 8273 }); 8274 } 8275 } else { 8276 } 8277 if self.khr_external_memory_fd { 8278 if !supported.khr_external_memory_fd { 8279 return Err(crate::device::ExtensionRestrictionError { 8280 extension: "khr_external_memory_fd", 8281 restriction: crate::device::ExtensionRestriction::NotSupported, 8282 }); 8283 } 8284 if !(api_version >= crate::Version::V1_1 || device_extensions.khr_external_memory) { 8285 return Err(crate::device::ExtensionRestrictionError { 8286 extension: "khr_external_memory_fd", 8287 restriction: crate::device::ExtensionRestriction::Requires( 8288 crate::RequiresOneOf { 8289 api_version: Some(crate::Version::V1_1), 8290 device_extensions: &["khr_external_memory"], 8291 instance_extensions: &[], 8292 ..Default::default() 8293 }, 8294 ), 8295 }); 8296 } 8297 } else { 8298 } 8299 if self.khr_external_memory_win32 { 8300 if !supported.khr_external_memory_win32 { 8301 return Err(crate::device::ExtensionRestrictionError { 8302 extension: "khr_external_memory_win32", 8303 restriction: crate::device::ExtensionRestriction::NotSupported, 8304 }); 8305 } 8306 if !(api_version >= crate::Version::V1_1 || device_extensions.khr_external_memory) { 8307 return Err(crate::device::ExtensionRestrictionError { 8308 extension: "khr_external_memory_win32", 8309 restriction: crate::device::ExtensionRestriction::Requires( 8310 crate::RequiresOneOf { 8311 api_version: Some(crate::Version::V1_1), 8312 device_extensions: &["khr_external_memory"], 8313 instance_extensions: &[], 8314 ..Default::default() 8315 }, 8316 ), 8317 }); 8318 } 8319 } else { 8320 } 8321 if self.khr_external_semaphore { 8322 if !supported.khr_external_semaphore { 8323 return Err(crate::device::ExtensionRestrictionError { 8324 extension: "khr_external_semaphore", 8325 restriction: crate::device::ExtensionRestriction::NotSupported, 8326 }); 8327 } 8328 if !(api_version >= crate::Version::V1_1 8329 || instance_extensions.khr_external_semaphore_capabilities) 8330 { 8331 return Err(crate::device::ExtensionRestrictionError { 8332 extension: "khr_external_semaphore", 8333 restriction: crate::device::ExtensionRestriction::Requires( 8334 crate::RequiresOneOf { 8335 api_version: Some(crate::Version::V1_1), 8336 device_extensions: &[], 8337 instance_extensions: &["khr_external_semaphore_capabilities"], 8338 ..Default::default() 8339 }, 8340 ), 8341 }); 8342 } 8343 } else { 8344 } 8345 if self.khr_external_semaphore_fd { 8346 if !supported.khr_external_semaphore_fd { 8347 return Err(crate::device::ExtensionRestrictionError { 8348 extension: "khr_external_semaphore_fd", 8349 restriction: crate::device::ExtensionRestriction::NotSupported, 8350 }); 8351 } 8352 if !(api_version >= crate::Version::V1_1 || device_extensions.khr_external_semaphore) { 8353 return Err(crate::device::ExtensionRestrictionError { 8354 extension: "khr_external_semaphore_fd", 8355 restriction: crate::device::ExtensionRestriction::Requires( 8356 crate::RequiresOneOf { 8357 api_version: Some(crate::Version::V1_1), 8358 device_extensions: &["khr_external_semaphore"], 8359 instance_extensions: &[], 8360 ..Default::default() 8361 }, 8362 ), 8363 }); 8364 } 8365 } else { 8366 } 8367 if self.khr_external_semaphore_win32 { 8368 if !supported.khr_external_semaphore_win32 { 8369 return Err(crate::device::ExtensionRestrictionError { 8370 extension: "khr_external_semaphore_win32", 8371 restriction: crate::device::ExtensionRestriction::NotSupported, 8372 }); 8373 } 8374 if !(api_version >= crate::Version::V1_1 || device_extensions.khr_external_semaphore) { 8375 return Err(crate::device::ExtensionRestrictionError { 8376 extension: "khr_external_semaphore_win32", 8377 restriction: crate::device::ExtensionRestriction::Requires( 8378 crate::RequiresOneOf { 8379 api_version: Some(crate::Version::V1_1), 8380 device_extensions: &["khr_external_semaphore"], 8381 instance_extensions: &[], 8382 ..Default::default() 8383 }, 8384 ), 8385 }); 8386 } 8387 } else { 8388 } 8389 if self.khr_format_feature_flags2 { 8390 if !supported.khr_format_feature_flags2 { 8391 return Err(crate::device::ExtensionRestrictionError { 8392 extension: "khr_format_feature_flags2", 8393 restriction: crate::device::ExtensionRestriction::NotSupported, 8394 }); 8395 } 8396 if !(api_version >= crate::Version::V1_1 8397 || instance_extensions.khr_get_physical_device_properties2) 8398 { 8399 return Err(crate::device::ExtensionRestrictionError { 8400 extension: "khr_format_feature_flags2", 8401 restriction: crate::device::ExtensionRestriction::Requires( 8402 crate::RequiresOneOf { 8403 api_version: Some(crate::Version::V1_1), 8404 device_extensions: &[], 8405 instance_extensions: &["khr_get_physical_device_properties2"], 8406 ..Default::default() 8407 }, 8408 ), 8409 }); 8410 } 8411 } else { 8412 } 8413 if self.khr_fragment_shader_barycentric { 8414 if !supported.khr_fragment_shader_barycentric { 8415 return Err(crate::device::ExtensionRestrictionError { 8416 extension: "khr_fragment_shader_barycentric", 8417 restriction: crate::device::ExtensionRestriction::NotSupported, 8418 }); 8419 } 8420 if !(api_version >= crate::Version::V1_1 8421 || instance_extensions.khr_get_physical_device_properties2) 8422 { 8423 return Err(crate::device::ExtensionRestrictionError { 8424 extension: "khr_fragment_shader_barycentric", 8425 restriction: crate::device::ExtensionRestriction::Requires( 8426 crate::RequiresOneOf { 8427 api_version: Some(crate::Version::V1_1), 8428 device_extensions: &[], 8429 instance_extensions: &["khr_get_physical_device_properties2"], 8430 ..Default::default() 8431 }, 8432 ), 8433 }); 8434 } 8435 } else { 8436 } 8437 if self.khr_fragment_shading_rate { 8438 if !supported.khr_fragment_shading_rate { 8439 return Err(crate::device::ExtensionRestrictionError { 8440 extension: "khr_fragment_shading_rate", 8441 restriction: crate::device::ExtensionRestriction::NotSupported, 8442 }); 8443 } 8444 if !(api_version >= crate::Version::V1_2 || device_extensions.khr_create_renderpass2) { 8445 return Err(crate::device::ExtensionRestrictionError { 8446 extension: "khr_fragment_shading_rate", 8447 restriction: crate::device::ExtensionRestriction::Requires( 8448 crate::RequiresOneOf { 8449 api_version: Some(crate::Version::V1_2), 8450 device_extensions: &["khr_create_renderpass2"], 8451 instance_extensions: &[], 8452 ..Default::default() 8453 }, 8454 ), 8455 }); 8456 } 8457 if !(api_version >= crate::Version::V1_1 8458 || instance_extensions.khr_get_physical_device_properties2) 8459 { 8460 return Err(crate::device::ExtensionRestrictionError { 8461 extension: "khr_fragment_shading_rate", 8462 restriction: crate::device::ExtensionRestriction::Requires( 8463 crate::RequiresOneOf { 8464 api_version: Some(crate::Version::V1_1), 8465 device_extensions: &[], 8466 instance_extensions: &["khr_get_physical_device_properties2"], 8467 ..Default::default() 8468 }, 8469 ), 8470 }); 8471 } 8472 } else { 8473 } 8474 if self.khr_get_memory_requirements2 { 8475 if !supported.khr_get_memory_requirements2 { 8476 return Err(crate::device::ExtensionRestrictionError { 8477 extension: "khr_get_memory_requirements2", 8478 restriction: crate::device::ExtensionRestriction::NotSupported, 8479 }); 8480 } 8481 } else { 8482 } 8483 if self.khr_global_priority { 8484 if !supported.khr_global_priority { 8485 return Err(crate::device::ExtensionRestrictionError { 8486 extension: "khr_global_priority", 8487 restriction: crate::device::ExtensionRestriction::NotSupported, 8488 }); 8489 } 8490 } else { 8491 } 8492 if self.khr_image_format_list { 8493 if !supported.khr_image_format_list { 8494 return Err(crate::device::ExtensionRestrictionError { 8495 extension: "khr_image_format_list", 8496 restriction: crate::device::ExtensionRestriction::NotSupported, 8497 }); 8498 } 8499 } else { 8500 } 8501 if self.khr_imageless_framebuffer { 8502 if !supported.khr_imageless_framebuffer { 8503 return Err(crate::device::ExtensionRestrictionError { 8504 extension: "khr_imageless_framebuffer", 8505 restriction: crate::device::ExtensionRestriction::NotSupported, 8506 }); 8507 } 8508 if !(api_version >= crate::Version::V1_1 || device_extensions.khr_maintenance2) { 8509 return Err(crate::device::ExtensionRestrictionError { 8510 extension: "khr_imageless_framebuffer", 8511 restriction: crate::device::ExtensionRestriction::Requires( 8512 crate::RequiresOneOf { 8513 api_version: Some(crate::Version::V1_1), 8514 device_extensions: &["khr_maintenance2"], 8515 instance_extensions: &[], 8516 ..Default::default() 8517 }, 8518 ), 8519 }); 8520 } 8521 if !(api_version >= crate::Version::V1_2 || device_extensions.khr_image_format_list) { 8522 return Err(crate::device::ExtensionRestrictionError { 8523 extension: "khr_imageless_framebuffer", 8524 restriction: crate::device::ExtensionRestriction::Requires( 8525 crate::RequiresOneOf { 8526 api_version: Some(crate::Version::V1_2), 8527 device_extensions: &["khr_image_format_list"], 8528 instance_extensions: &[], 8529 ..Default::default() 8530 }, 8531 ), 8532 }); 8533 } 8534 } else { 8535 } 8536 if self.khr_incremental_present { 8537 if !supported.khr_incremental_present { 8538 return Err(crate::device::ExtensionRestrictionError { 8539 extension: "khr_incremental_present", 8540 restriction: crate::device::ExtensionRestriction::NotSupported, 8541 }); 8542 } 8543 if !(device_extensions.khr_swapchain) { 8544 return Err(crate::device::ExtensionRestrictionError { 8545 extension: "khr_incremental_present", 8546 restriction: crate::device::ExtensionRestriction::Requires( 8547 crate::RequiresOneOf { 8548 api_version: None, 8549 device_extensions: &["khr_swapchain"], 8550 instance_extensions: &[], 8551 ..Default::default() 8552 }, 8553 ), 8554 }); 8555 } 8556 } else { 8557 } 8558 if self.khr_maintenance1 { 8559 if !supported.khr_maintenance1 { 8560 return Err(crate::device::ExtensionRestrictionError { 8561 extension: "khr_maintenance1", 8562 restriction: crate::device::ExtensionRestriction::NotSupported, 8563 }); 8564 } 8565 } else { 8566 } 8567 if self.khr_maintenance2 { 8568 if !supported.khr_maintenance2 { 8569 return Err(crate::device::ExtensionRestrictionError { 8570 extension: "khr_maintenance2", 8571 restriction: crate::device::ExtensionRestriction::NotSupported, 8572 }); 8573 } 8574 } else { 8575 } 8576 if self.khr_maintenance3 { 8577 if !supported.khr_maintenance3 { 8578 return Err(crate::device::ExtensionRestrictionError { 8579 extension: "khr_maintenance3", 8580 restriction: crate::device::ExtensionRestriction::NotSupported, 8581 }); 8582 } 8583 if !(api_version >= crate::Version::V1_1 8584 || instance_extensions.khr_get_physical_device_properties2) 8585 { 8586 return Err(crate::device::ExtensionRestrictionError { 8587 extension: "khr_maintenance3", 8588 restriction: crate::device::ExtensionRestriction::Requires( 8589 crate::RequiresOneOf { 8590 api_version: Some(crate::Version::V1_1), 8591 device_extensions: &[], 8592 instance_extensions: &["khr_get_physical_device_properties2"], 8593 ..Default::default() 8594 }, 8595 ), 8596 }); 8597 } 8598 } else { 8599 } 8600 if self.khr_maintenance4 { 8601 if !supported.khr_maintenance4 { 8602 return Err(crate::device::ExtensionRestrictionError { 8603 extension: "khr_maintenance4", 8604 restriction: crate::device::ExtensionRestriction::NotSupported, 8605 }); 8606 } 8607 if !(api_version >= crate::Version::V1_1) { 8608 return Err(crate::device::ExtensionRestrictionError { 8609 extension: "khr_maintenance4", 8610 restriction: crate::device::ExtensionRestriction::Requires( 8611 crate::RequiresOneOf { 8612 api_version: Some(crate::Version::V1_1), 8613 device_extensions: &[], 8614 instance_extensions: &[], 8615 ..Default::default() 8616 }, 8617 ), 8618 }); 8619 } 8620 } else { 8621 } 8622 if self.khr_multiview { 8623 if !supported.khr_multiview { 8624 return Err(crate::device::ExtensionRestrictionError { 8625 extension: "khr_multiview", 8626 restriction: crate::device::ExtensionRestriction::NotSupported, 8627 }); 8628 } 8629 if !(api_version >= crate::Version::V1_1 8630 || instance_extensions.khr_get_physical_device_properties2) 8631 { 8632 return Err(crate::device::ExtensionRestrictionError { 8633 extension: "khr_multiview", 8634 restriction: crate::device::ExtensionRestriction::Requires( 8635 crate::RequiresOneOf { 8636 api_version: Some(crate::Version::V1_1), 8637 device_extensions: &[], 8638 instance_extensions: &["khr_get_physical_device_properties2"], 8639 ..Default::default() 8640 }, 8641 ), 8642 }); 8643 } 8644 } else { 8645 } 8646 if self.khr_performance_query { 8647 if !supported.khr_performance_query { 8648 return Err(crate::device::ExtensionRestrictionError { 8649 extension: "khr_performance_query", 8650 restriction: crate::device::ExtensionRestriction::NotSupported, 8651 }); 8652 } 8653 if !(api_version >= crate::Version::V1_1 8654 || instance_extensions.khr_get_physical_device_properties2) 8655 { 8656 return Err(crate::device::ExtensionRestrictionError { 8657 extension: "khr_performance_query", 8658 restriction: crate::device::ExtensionRestriction::Requires( 8659 crate::RequiresOneOf { 8660 api_version: Some(crate::Version::V1_1), 8661 device_extensions: &[], 8662 instance_extensions: &["khr_get_physical_device_properties2"], 8663 ..Default::default() 8664 }, 8665 ), 8666 }); 8667 } 8668 } else { 8669 } 8670 if self.khr_pipeline_executable_properties { 8671 if !supported.khr_pipeline_executable_properties { 8672 return Err(crate::device::ExtensionRestrictionError { 8673 extension: "khr_pipeline_executable_properties", 8674 restriction: crate::device::ExtensionRestriction::NotSupported, 8675 }); 8676 } 8677 if !(api_version >= crate::Version::V1_1 8678 || instance_extensions.khr_get_physical_device_properties2) 8679 { 8680 return Err(crate::device::ExtensionRestrictionError { 8681 extension: "khr_pipeline_executable_properties", 8682 restriction: crate::device::ExtensionRestriction::Requires( 8683 crate::RequiresOneOf { 8684 api_version: Some(crate::Version::V1_1), 8685 device_extensions: &[], 8686 instance_extensions: &["khr_get_physical_device_properties2"], 8687 ..Default::default() 8688 }, 8689 ), 8690 }); 8691 } 8692 } else { 8693 } 8694 if self.khr_pipeline_library { 8695 if !supported.khr_pipeline_library { 8696 return Err(crate::device::ExtensionRestrictionError { 8697 extension: "khr_pipeline_library", 8698 restriction: crate::device::ExtensionRestriction::NotSupported, 8699 }); 8700 } 8701 } else { 8702 } 8703 if self.khr_portability_subset { 8704 if !supported.khr_portability_subset { 8705 return Err(crate::device::ExtensionRestrictionError { 8706 extension: "khr_portability_subset", 8707 restriction: crate::device::ExtensionRestriction::NotSupported, 8708 }); 8709 } 8710 if !(api_version >= crate::Version::V1_1 8711 || instance_extensions.khr_get_physical_device_properties2) 8712 { 8713 return Err(crate::device::ExtensionRestrictionError { 8714 extension: "khr_portability_subset", 8715 restriction: crate::device::ExtensionRestriction::Requires( 8716 crate::RequiresOneOf { 8717 api_version: Some(crate::Version::V1_1), 8718 device_extensions: &[], 8719 instance_extensions: &["khr_get_physical_device_properties2"], 8720 ..Default::default() 8721 }, 8722 ), 8723 }); 8724 } 8725 } else { 8726 if supported.khr_portability_subset { 8727 return Err(crate::device::ExtensionRestrictionError { 8728 extension: "khr_portability_subset", 8729 restriction: crate::device::ExtensionRestriction::RequiredIfSupported, 8730 }); 8731 } 8732 } 8733 if self.khr_present_id { 8734 if !supported.khr_present_id { 8735 return Err(crate::device::ExtensionRestrictionError { 8736 extension: "khr_present_id", 8737 restriction: crate::device::ExtensionRestriction::NotSupported, 8738 }); 8739 } 8740 if !(device_extensions.khr_swapchain) { 8741 return Err(crate::device::ExtensionRestrictionError { 8742 extension: "khr_present_id", 8743 restriction: crate::device::ExtensionRestriction::Requires( 8744 crate::RequiresOneOf { 8745 api_version: None, 8746 device_extensions: &["khr_swapchain"], 8747 instance_extensions: &[], 8748 ..Default::default() 8749 }, 8750 ), 8751 }); 8752 } 8753 } else { 8754 } 8755 if self.khr_present_wait { 8756 if !supported.khr_present_wait { 8757 return Err(crate::device::ExtensionRestrictionError { 8758 extension: "khr_present_wait", 8759 restriction: crate::device::ExtensionRestriction::NotSupported, 8760 }); 8761 } 8762 if !(device_extensions.khr_swapchain) { 8763 return Err(crate::device::ExtensionRestrictionError { 8764 extension: "khr_present_wait", 8765 restriction: crate::device::ExtensionRestriction::Requires( 8766 crate::RequiresOneOf { 8767 api_version: None, 8768 device_extensions: &["khr_swapchain"], 8769 instance_extensions: &[], 8770 ..Default::default() 8771 }, 8772 ), 8773 }); 8774 } 8775 if !(device_extensions.khr_present_id) { 8776 return Err(crate::device::ExtensionRestrictionError { 8777 extension: "khr_present_wait", 8778 restriction: crate::device::ExtensionRestriction::Requires( 8779 crate::RequiresOneOf { 8780 api_version: None, 8781 device_extensions: &["khr_present_id"], 8782 instance_extensions: &[], 8783 ..Default::default() 8784 }, 8785 ), 8786 }); 8787 } 8788 } else { 8789 } 8790 if self.khr_push_descriptor { 8791 if !supported.khr_push_descriptor { 8792 return Err(crate::device::ExtensionRestrictionError { 8793 extension: "khr_push_descriptor", 8794 restriction: crate::device::ExtensionRestriction::NotSupported, 8795 }); 8796 } 8797 if !(api_version >= crate::Version::V1_1 8798 || instance_extensions.khr_get_physical_device_properties2) 8799 { 8800 return Err(crate::device::ExtensionRestrictionError { 8801 extension: "khr_push_descriptor", 8802 restriction: crate::device::ExtensionRestriction::Requires( 8803 crate::RequiresOneOf { 8804 api_version: Some(crate::Version::V1_1), 8805 device_extensions: &[], 8806 instance_extensions: &["khr_get_physical_device_properties2"], 8807 ..Default::default() 8808 }, 8809 ), 8810 }); 8811 } 8812 } else { 8813 } 8814 if self.khr_ray_query { 8815 if !supported.khr_ray_query { 8816 return Err(crate::device::ExtensionRestrictionError { 8817 extension: "khr_ray_query", 8818 restriction: crate::device::ExtensionRestriction::NotSupported, 8819 }); 8820 } 8821 if !(api_version >= crate::Version::V1_1) { 8822 return Err(crate::device::ExtensionRestrictionError { 8823 extension: "khr_ray_query", 8824 restriction: crate::device::ExtensionRestriction::Requires( 8825 crate::RequiresOneOf { 8826 api_version: Some(crate::Version::V1_1), 8827 device_extensions: &[], 8828 instance_extensions: &[], 8829 ..Default::default() 8830 }, 8831 ), 8832 }); 8833 } 8834 if !(api_version >= crate::Version::V1_2 || device_extensions.khr_spirv_1_4) { 8835 return Err(crate::device::ExtensionRestrictionError { 8836 extension: "khr_ray_query", 8837 restriction: crate::device::ExtensionRestriction::Requires( 8838 crate::RequiresOneOf { 8839 api_version: Some(crate::Version::V1_2), 8840 device_extensions: &["khr_spirv_1_4"], 8841 instance_extensions: &[], 8842 ..Default::default() 8843 }, 8844 ), 8845 }); 8846 } 8847 if !(device_extensions.khr_acceleration_structure) { 8848 return Err(crate::device::ExtensionRestrictionError { 8849 extension: "khr_ray_query", 8850 restriction: crate::device::ExtensionRestriction::Requires( 8851 crate::RequiresOneOf { 8852 api_version: None, 8853 device_extensions: &["khr_acceleration_structure"], 8854 instance_extensions: &[], 8855 ..Default::default() 8856 }, 8857 ), 8858 }); 8859 } 8860 } else { 8861 } 8862 if self.khr_ray_tracing_maintenance1 { 8863 if !supported.khr_ray_tracing_maintenance1 { 8864 return Err(crate::device::ExtensionRestrictionError { 8865 extension: "khr_ray_tracing_maintenance1", 8866 restriction: crate::device::ExtensionRestriction::NotSupported, 8867 }); 8868 } 8869 if !(api_version >= crate::Version::V1_1) { 8870 return Err(crate::device::ExtensionRestrictionError { 8871 extension: "khr_ray_tracing_maintenance1", 8872 restriction: crate::device::ExtensionRestriction::Requires( 8873 crate::RequiresOneOf { 8874 api_version: Some(crate::Version::V1_1), 8875 device_extensions: &[], 8876 instance_extensions: &[], 8877 ..Default::default() 8878 }, 8879 ), 8880 }); 8881 } 8882 if !(device_extensions.khr_acceleration_structure) { 8883 return Err(crate::device::ExtensionRestrictionError { 8884 extension: "khr_ray_tracing_maintenance1", 8885 restriction: crate::device::ExtensionRestriction::Requires( 8886 crate::RequiresOneOf { 8887 api_version: None, 8888 device_extensions: &["khr_acceleration_structure"], 8889 instance_extensions: &[], 8890 ..Default::default() 8891 }, 8892 ), 8893 }); 8894 } 8895 } else { 8896 } 8897 if self.khr_ray_tracing_pipeline { 8898 if !supported.khr_ray_tracing_pipeline { 8899 return Err(crate::device::ExtensionRestrictionError { 8900 extension: "khr_ray_tracing_pipeline", 8901 restriction: crate::device::ExtensionRestriction::NotSupported, 8902 }); 8903 } 8904 if !(api_version >= crate::Version::V1_1) { 8905 return Err(crate::device::ExtensionRestrictionError { 8906 extension: "khr_ray_tracing_pipeline", 8907 restriction: crate::device::ExtensionRestriction::Requires( 8908 crate::RequiresOneOf { 8909 api_version: Some(crate::Version::V1_1), 8910 device_extensions: &[], 8911 instance_extensions: &[], 8912 ..Default::default() 8913 }, 8914 ), 8915 }); 8916 } 8917 if !(api_version >= crate::Version::V1_2 || device_extensions.khr_spirv_1_4) { 8918 return Err(crate::device::ExtensionRestrictionError { 8919 extension: "khr_ray_tracing_pipeline", 8920 restriction: crate::device::ExtensionRestriction::Requires( 8921 crate::RequiresOneOf { 8922 api_version: Some(crate::Version::V1_2), 8923 device_extensions: &["khr_spirv_1_4"], 8924 instance_extensions: &[], 8925 ..Default::default() 8926 }, 8927 ), 8928 }); 8929 } 8930 if !(device_extensions.khr_acceleration_structure) { 8931 return Err(crate::device::ExtensionRestrictionError { 8932 extension: "khr_ray_tracing_pipeline", 8933 restriction: crate::device::ExtensionRestriction::Requires( 8934 crate::RequiresOneOf { 8935 api_version: None, 8936 device_extensions: &["khr_acceleration_structure"], 8937 instance_extensions: &[], 8938 ..Default::default() 8939 }, 8940 ), 8941 }); 8942 } 8943 } else { 8944 } 8945 if self.khr_relaxed_block_layout { 8946 if !supported.khr_relaxed_block_layout { 8947 return Err(crate::device::ExtensionRestrictionError { 8948 extension: "khr_relaxed_block_layout", 8949 restriction: crate::device::ExtensionRestriction::NotSupported, 8950 }); 8951 } 8952 } else { 8953 } 8954 if self.khr_sampler_mirror_clamp_to_edge { 8955 if !supported.khr_sampler_mirror_clamp_to_edge { 8956 return Err(crate::device::ExtensionRestrictionError { 8957 extension: "khr_sampler_mirror_clamp_to_edge", 8958 restriction: crate::device::ExtensionRestriction::NotSupported, 8959 }); 8960 } 8961 } else { 8962 } 8963 if self.khr_sampler_ycbcr_conversion { 8964 if !supported.khr_sampler_ycbcr_conversion { 8965 return Err(crate::device::ExtensionRestrictionError { 8966 extension: "khr_sampler_ycbcr_conversion", 8967 restriction: crate::device::ExtensionRestriction::NotSupported, 8968 }); 8969 } 8970 if !(api_version >= crate::Version::V1_1 || device_extensions.khr_maintenance1) { 8971 return Err(crate::device::ExtensionRestrictionError { 8972 extension: "khr_sampler_ycbcr_conversion", 8973 restriction: crate::device::ExtensionRestriction::Requires( 8974 crate::RequiresOneOf { 8975 api_version: Some(crate::Version::V1_1), 8976 device_extensions: &["khr_maintenance1"], 8977 instance_extensions: &[], 8978 ..Default::default() 8979 }, 8980 ), 8981 }); 8982 } 8983 if !(api_version >= crate::Version::V1_1 || device_extensions.khr_bind_memory2) { 8984 return Err(crate::device::ExtensionRestrictionError { 8985 extension: "khr_sampler_ycbcr_conversion", 8986 restriction: crate::device::ExtensionRestriction::Requires( 8987 crate::RequiresOneOf { 8988 api_version: Some(crate::Version::V1_1), 8989 device_extensions: &["khr_bind_memory2"], 8990 instance_extensions: &[], 8991 ..Default::default() 8992 }, 8993 ), 8994 }); 8995 } 8996 if !(api_version >= crate::Version::V1_1 8997 || device_extensions.khr_get_memory_requirements2) 8998 { 8999 return Err(crate::device::ExtensionRestrictionError { 9000 extension: "khr_sampler_ycbcr_conversion", 9001 restriction: crate::device::ExtensionRestriction::Requires( 9002 crate::RequiresOneOf { 9003 api_version: Some(crate::Version::V1_1), 9004 device_extensions: &["khr_get_memory_requirements2"], 9005 instance_extensions: &[], 9006 ..Default::default() 9007 }, 9008 ), 9009 }); 9010 } 9011 if !(api_version >= crate::Version::V1_1 9012 || instance_extensions.khr_get_physical_device_properties2) 9013 { 9014 return Err(crate::device::ExtensionRestrictionError { 9015 extension: "khr_sampler_ycbcr_conversion", 9016 restriction: crate::device::ExtensionRestriction::Requires( 9017 crate::RequiresOneOf { 9018 api_version: Some(crate::Version::V1_1), 9019 device_extensions: &[], 9020 instance_extensions: &["khr_get_physical_device_properties2"], 9021 ..Default::default() 9022 }, 9023 ), 9024 }); 9025 } 9026 } else { 9027 } 9028 if self.khr_separate_depth_stencil_layouts { 9029 if !supported.khr_separate_depth_stencil_layouts { 9030 return Err(crate::device::ExtensionRestrictionError { 9031 extension: "khr_separate_depth_stencil_layouts", 9032 restriction: crate::device::ExtensionRestriction::NotSupported, 9033 }); 9034 } 9035 if !(api_version >= crate::Version::V1_1 9036 || instance_extensions.khr_get_physical_device_properties2) 9037 { 9038 return Err(crate::device::ExtensionRestrictionError { 9039 extension: "khr_separate_depth_stencil_layouts", 9040 restriction: crate::device::ExtensionRestriction::Requires( 9041 crate::RequiresOneOf { 9042 api_version: Some(crate::Version::V1_1), 9043 device_extensions: &[], 9044 instance_extensions: &["khr_get_physical_device_properties2"], 9045 ..Default::default() 9046 }, 9047 ), 9048 }); 9049 } 9050 if !(api_version >= crate::Version::V1_2 || device_extensions.khr_create_renderpass2) { 9051 return Err(crate::device::ExtensionRestrictionError { 9052 extension: "khr_separate_depth_stencil_layouts", 9053 restriction: crate::device::ExtensionRestriction::Requires( 9054 crate::RequiresOneOf { 9055 api_version: Some(crate::Version::V1_2), 9056 device_extensions: &["khr_create_renderpass2"], 9057 instance_extensions: &[], 9058 ..Default::default() 9059 }, 9060 ), 9061 }); 9062 } 9063 } else { 9064 } 9065 if self.khr_shader_atomic_int64 { 9066 if !supported.khr_shader_atomic_int64 { 9067 return Err(crate::device::ExtensionRestrictionError { 9068 extension: "khr_shader_atomic_int64", 9069 restriction: crate::device::ExtensionRestriction::NotSupported, 9070 }); 9071 } 9072 if !(api_version >= crate::Version::V1_1 9073 || instance_extensions.khr_get_physical_device_properties2) 9074 { 9075 return Err(crate::device::ExtensionRestrictionError { 9076 extension: "khr_shader_atomic_int64", 9077 restriction: crate::device::ExtensionRestriction::Requires( 9078 crate::RequiresOneOf { 9079 api_version: Some(crate::Version::V1_1), 9080 device_extensions: &[], 9081 instance_extensions: &["khr_get_physical_device_properties2"], 9082 ..Default::default() 9083 }, 9084 ), 9085 }); 9086 } 9087 } else { 9088 } 9089 if self.khr_shader_clock { 9090 if !supported.khr_shader_clock { 9091 return Err(crate::device::ExtensionRestrictionError { 9092 extension: "khr_shader_clock", 9093 restriction: crate::device::ExtensionRestriction::NotSupported, 9094 }); 9095 } 9096 if !(api_version >= crate::Version::V1_1 9097 || instance_extensions.khr_get_physical_device_properties2) 9098 { 9099 return Err(crate::device::ExtensionRestrictionError { 9100 extension: "khr_shader_clock", 9101 restriction: crate::device::ExtensionRestriction::Requires( 9102 crate::RequiresOneOf { 9103 api_version: Some(crate::Version::V1_1), 9104 device_extensions: &[], 9105 instance_extensions: &["khr_get_physical_device_properties2"], 9106 ..Default::default() 9107 }, 9108 ), 9109 }); 9110 } 9111 } else { 9112 } 9113 if self.khr_shader_draw_parameters { 9114 if !supported.khr_shader_draw_parameters { 9115 return Err(crate::device::ExtensionRestrictionError { 9116 extension: "khr_shader_draw_parameters", 9117 restriction: crate::device::ExtensionRestriction::NotSupported, 9118 }); 9119 } 9120 } else { 9121 } 9122 if self.khr_shader_float16_int8 { 9123 if !supported.khr_shader_float16_int8 { 9124 return Err(crate::device::ExtensionRestrictionError { 9125 extension: "khr_shader_float16_int8", 9126 restriction: crate::device::ExtensionRestriction::NotSupported, 9127 }); 9128 } 9129 if !(api_version >= crate::Version::V1_1 9130 || instance_extensions.khr_get_physical_device_properties2) 9131 { 9132 return Err(crate::device::ExtensionRestrictionError { 9133 extension: "khr_shader_float16_int8", 9134 restriction: crate::device::ExtensionRestriction::Requires( 9135 crate::RequiresOneOf { 9136 api_version: Some(crate::Version::V1_1), 9137 device_extensions: &[], 9138 instance_extensions: &["khr_get_physical_device_properties2"], 9139 ..Default::default() 9140 }, 9141 ), 9142 }); 9143 } 9144 } else { 9145 } 9146 if self.khr_shader_float_controls { 9147 if !supported.khr_shader_float_controls { 9148 return Err(crate::device::ExtensionRestrictionError { 9149 extension: "khr_shader_float_controls", 9150 restriction: crate::device::ExtensionRestriction::NotSupported, 9151 }); 9152 } 9153 if !(api_version >= crate::Version::V1_1 9154 || instance_extensions.khr_get_physical_device_properties2) 9155 { 9156 return Err(crate::device::ExtensionRestrictionError { 9157 extension: "khr_shader_float_controls", 9158 restriction: crate::device::ExtensionRestriction::Requires( 9159 crate::RequiresOneOf { 9160 api_version: Some(crate::Version::V1_1), 9161 device_extensions: &[], 9162 instance_extensions: &["khr_get_physical_device_properties2"], 9163 ..Default::default() 9164 }, 9165 ), 9166 }); 9167 } 9168 } else { 9169 } 9170 if self.khr_shader_integer_dot_product { 9171 if !supported.khr_shader_integer_dot_product { 9172 return Err(crate::device::ExtensionRestrictionError { 9173 extension: "khr_shader_integer_dot_product", 9174 restriction: crate::device::ExtensionRestriction::NotSupported, 9175 }); 9176 } 9177 if !(api_version >= crate::Version::V1_1 9178 || instance_extensions.khr_get_physical_device_properties2) 9179 { 9180 return Err(crate::device::ExtensionRestrictionError { 9181 extension: "khr_shader_integer_dot_product", 9182 restriction: crate::device::ExtensionRestriction::Requires( 9183 crate::RequiresOneOf { 9184 api_version: Some(crate::Version::V1_1), 9185 device_extensions: &[], 9186 instance_extensions: &["khr_get_physical_device_properties2"], 9187 ..Default::default() 9188 }, 9189 ), 9190 }); 9191 } 9192 } else { 9193 } 9194 if self.khr_shader_non_semantic_info { 9195 if !supported.khr_shader_non_semantic_info { 9196 return Err(crate::device::ExtensionRestrictionError { 9197 extension: "khr_shader_non_semantic_info", 9198 restriction: crate::device::ExtensionRestriction::NotSupported, 9199 }); 9200 } 9201 } else { 9202 } 9203 if self.khr_shader_subgroup_extended_types { 9204 if !supported.khr_shader_subgroup_extended_types { 9205 return Err(crate::device::ExtensionRestrictionError { 9206 extension: "khr_shader_subgroup_extended_types", 9207 restriction: crate::device::ExtensionRestriction::NotSupported, 9208 }); 9209 } 9210 if !(api_version >= crate::Version::V1_1) { 9211 return Err(crate::device::ExtensionRestrictionError { 9212 extension: "khr_shader_subgroup_extended_types", 9213 restriction: crate::device::ExtensionRestriction::Requires( 9214 crate::RequiresOneOf { 9215 api_version: Some(crate::Version::V1_1), 9216 device_extensions: &[], 9217 instance_extensions: &[], 9218 ..Default::default() 9219 }, 9220 ), 9221 }); 9222 } 9223 } else { 9224 } 9225 if self.khr_shader_subgroup_uniform_control_flow { 9226 if !supported.khr_shader_subgroup_uniform_control_flow { 9227 return Err(crate::device::ExtensionRestrictionError { 9228 extension: "khr_shader_subgroup_uniform_control_flow", 9229 restriction: crate::device::ExtensionRestriction::NotSupported, 9230 }); 9231 } 9232 if !(api_version >= crate::Version::V1_1) { 9233 return Err(crate::device::ExtensionRestrictionError { 9234 extension: "khr_shader_subgroup_uniform_control_flow", 9235 restriction: crate::device::ExtensionRestriction::Requires( 9236 crate::RequiresOneOf { 9237 api_version: Some(crate::Version::V1_1), 9238 device_extensions: &[], 9239 instance_extensions: &[], 9240 ..Default::default() 9241 }, 9242 ), 9243 }); 9244 } 9245 } else { 9246 } 9247 if self.khr_shader_terminate_invocation { 9248 if !supported.khr_shader_terminate_invocation { 9249 return Err(crate::device::ExtensionRestrictionError { 9250 extension: "khr_shader_terminate_invocation", 9251 restriction: crate::device::ExtensionRestriction::NotSupported, 9252 }); 9253 } 9254 if !(api_version >= crate::Version::V1_1 9255 || instance_extensions.khr_get_physical_device_properties2) 9256 { 9257 return Err(crate::device::ExtensionRestrictionError { 9258 extension: "khr_shader_terminate_invocation", 9259 restriction: crate::device::ExtensionRestriction::Requires( 9260 crate::RequiresOneOf { 9261 api_version: Some(crate::Version::V1_1), 9262 device_extensions: &[], 9263 instance_extensions: &["khr_get_physical_device_properties2"], 9264 ..Default::default() 9265 }, 9266 ), 9267 }); 9268 } 9269 } else { 9270 } 9271 if self.khr_shared_presentable_image { 9272 if !supported.khr_shared_presentable_image { 9273 return Err(crate::device::ExtensionRestrictionError { 9274 extension: "khr_shared_presentable_image", 9275 restriction: crate::device::ExtensionRestriction::NotSupported, 9276 }); 9277 } 9278 if !(device_extensions.khr_swapchain) { 9279 return Err(crate::device::ExtensionRestrictionError { 9280 extension: "khr_shared_presentable_image", 9281 restriction: crate::device::ExtensionRestriction::Requires( 9282 crate::RequiresOneOf { 9283 api_version: None, 9284 device_extensions: &["khr_swapchain"], 9285 instance_extensions: &[], 9286 ..Default::default() 9287 }, 9288 ), 9289 }); 9290 } 9291 if !(api_version >= crate::Version::V1_1 9292 || instance_extensions.khr_get_physical_device_properties2) 9293 { 9294 return Err(crate::device::ExtensionRestrictionError { 9295 extension: "khr_shared_presentable_image", 9296 restriction: crate::device::ExtensionRestriction::Requires( 9297 crate::RequiresOneOf { 9298 api_version: Some(crate::Version::V1_1), 9299 device_extensions: &[], 9300 instance_extensions: &["khr_get_physical_device_properties2"], 9301 ..Default::default() 9302 }, 9303 ), 9304 }); 9305 } 9306 if !(instance_extensions.khr_get_surface_capabilities2) { 9307 return Err(crate::device::ExtensionRestrictionError { 9308 extension: "khr_shared_presentable_image", 9309 restriction: crate::device::ExtensionRestriction::Requires( 9310 crate::RequiresOneOf { 9311 api_version: None, 9312 device_extensions: &[], 9313 instance_extensions: &["khr_get_surface_capabilities2"], 9314 ..Default::default() 9315 }, 9316 ), 9317 }); 9318 } 9319 } else { 9320 } 9321 if self.khr_spirv_1_4 { 9322 if !supported.khr_spirv_1_4 { 9323 return Err(crate::device::ExtensionRestrictionError { 9324 extension: "khr_spirv_1_4", 9325 restriction: crate::device::ExtensionRestriction::NotSupported, 9326 }); 9327 } 9328 if !(api_version >= crate::Version::V1_1) { 9329 return Err(crate::device::ExtensionRestrictionError { 9330 extension: "khr_spirv_1_4", 9331 restriction: crate::device::ExtensionRestriction::Requires( 9332 crate::RequiresOneOf { 9333 api_version: Some(crate::Version::V1_1), 9334 device_extensions: &[], 9335 instance_extensions: &[], 9336 ..Default::default() 9337 }, 9338 ), 9339 }); 9340 } 9341 if !(api_version >= crate::Version::V1_2 || device_extensions.khr_shader_float_controls) 9342 { 9343 return Err(crate::device::ExtensionRestrictionError { 9344 extension: "khr_spirv_1_4", 9345 restriction: crate::device::ExtensionRestriction::Requires( 9346 crate::RequiresOneOf { 9347 api_version: Some(crate::Version::V1_2), 9348 device_extensions: &["khr_shader_float_controls"], 9349 instance_extensions: &[], 9350 ..Default::default() 9351 }, 9352 ), 9353 }); 9354 } 9355 } else { 9356 } 9357 if self.khr_storage_buffer_storage_class { 9358 if !supported.khr_storage_buffer_storage_class { 9359 return Err(crate::device::ExtensionRestrictionError { 9360 extension: "khr_storage_buffer_storage_class", 9361 restriction: crate::device::ExtensionRestriction::NotSupported, 9362 }); 9363 } 9364 } else { 9365 } 9366 if self.khr_swapchain { 9367 if !supported.khr_swapchain { 9368 return Err(crate::device::ExtensionRestrictionError { 9369 extension: "khr_swapchain", 9370 restriction: crate::device::ExtensionRestriction::NotSupported, 9371 }); 9372 } 9373 if !(instance_extensions.khr_surface) { 9374 return Err(crate::device::ExtensionRestrictionError { 9375 extension: "khr_swapchain", 9376 restriction: crate::device::ExtensionRestriction::Requires( 9377 crate::RequiresOneOf { 9378 api_version: None, 9379 device_extensions: &[], 9380 instance_extensions: &["khr_surface"], 9381 ..Default::default() 9382 }, 9383 ), 9384 }); 9385 } 9386 } else { 9387 } 9388 if self.khr_swapchain_mutable_format { 9389 if !supported.khr_swapchain_mutable_format { 9390 return Err(crate::device::ExtensionRestrictionError { 9391 extension: "khr_swapchain_mutable_format", 9392 restriction: crate::device::ExtensionRestriction::NotSupported, 9393 }); 9394 } 9395 if !(device_extensions.khr_swapchain) { 9396 return Err(crate::device::ExtensionRestrictionError { 9397 extension: "khr_swapchain_mutable_format", 9398 restriction: crate::device::ExtensionRestriction::Requires( 9399 crate::RequiresOneOf { 9400 api_version: None, 9401 device_extensions: &["khr_swapchain"], 9402 instance_extensions: &[], 9403 ..Default::default() 9404 }, 9405 ), 9406 }); 9407 } 9408 if !(api_version >= crate::Version::V1_1 || device_extensions.khr_maintenance2) { 9409 return Err(crate::device::ExtensionRestrictionError { 9410 extension: "khr_swapchain_mutable_format", 9411 restriction: crate::device::ExtensionRestriction::Requires( 9412 crate::RequiresOneOf { 9413 api_version: Some(crate::Version::V1_1), 9414 device_extensions: &["khr_maintenance2"], 9415 instance_extensions: &[], 9416 ..Default::default() 9417 }, 9418 ), 9419 }); 9420 } 9421 if !(api_version >= crate::Version::V1_2 || device_extensions.khr_image_format_list) { 9422 return Err(crate::device::ExtensionRestrictionError { 9423 extension: "khr_swapchain_mutable_format", 9424 restriction: crate::device::ExtensionRestriction::Requires( 9425 crate::RequiresOneOf { 9426 api_version: Some(crate::Version::V1_2), 9427 device_extensions: &["khr_image_format_list"], 9428 instance_extensions: &[], 9429 ..Default::default() 9430 }, 9431 ), 9432 }); 9433 } 9434 } else { 9435 } 9436 if self.khr_synchronization2 { 9437 if !supported.khr_synchronization2 { 9438 return Err(crate::device::ExtensionRestrictionError { 9439 extension: "khr_synchronization2", 9440 restriction: crate::device::ExtensionRestriction::NotSupported, 9441 }); 9442 } 9443 if !(api_version >= crate::Version::V1_1 9444 || instance_extensions.khr_get_physical_device_properties2) 9445 { 9446 return Err(crate::device::ExtensionRestrictionError { 9447 extension: "khr_synchronization2", 9448 restriction: crate::device::ExtensionRestriction::Requires( 9449 crate::RequiresOneOf { 9450 api_version: Some(crate::Version::V1_1), 9451 device_extensions: &[], 9452 instance_extensions: &["khr_get_physical_device_properties2"], 9453 ..Default::default() 9454 }, 9455 ), 9456 }); 9457 } 9458 } else { 9459 } 9460 if self.khr_timeline_semaphore { 9461 if !supported.khr_timeline_semaphore { 9462 return Err(crate::device::ExtensionRestrictionError { 9463 extension: "khr_timeline_semaphore", 9464 restriction: crate::device::ExtensionRestriction::NotSupported, 9465 }); 9466 } 9467 if !(api_version >= crate::Version::V1_1 9468 || instance_extensions.khr_get_physical_device_properties2) 9469 { 9470 return Err(crate::device::ExtensionRestrictionError { 9471 extension: "khr_timeline_semaphore", 9472 restriction: crate::device::ExtensionRestriction::Requires( 9473 crate::RequiresOneOf { 9474 api_version: Some(crate::Version::V1_1), 9475 device_extensions: &[], 9476 instance_extensions: &["khr_get_physical_device_properties2"], 9477 ..Default::default() 9478 }, 9479 ), 9480 }); 9481 } 9482 } else { 9483 } 9484 if self.khr_uniform_buffer_standard_layout { 9485 if !supported.khr_uniform_buffer_standard_layout { 9486 return Err(crate::device::ExtensionRestrictionError { 9487 extension: "khr_uniform_buffer_standard_layout", 9488 restriction: crate::device::ExtensionRestriction::NotSupported, 9489 }); 9490 } 9491 if !(api_version >= crate::Version::V1_1 9492 || instance_extensions.khr_get_physical_device_properties2) 9493 { 9494 return Err(crate::device::ExtensionRestrictionError { 9495 extension: "khr_uniform_buffer_standard_layout", 9496 restriction: crate::device::ExtensionRestriction::Requires( 9497 crate::RequiresOneOf { 9498 api_version: Some(crate::Version::V1_1), 9499 device_extensions: &[], 9500 instance_extensions: &["khr_get_physical_device_properties2"], 9501 ..Default::default() 9502 }, 9503 ), 9504 }); 9505 } 9506 } else { 9507 } 9508 if self.khr_variable_pointers { 9509 if !supported.khr_variable_pointers { 9510 return Err(crate::device::ExtensionRestrictionError { 9511 extension: "khr_variable_pointers", 9512 restriction: crate::device::ExtensionRestriction::NotSupported, 9513 }); 9514 } 9515 if !(api_version >= crate::Version::V1_1 9516 || instance_extensions.khr_get_physical_device_properties2) 9517 { 9518 return Err(crate::device::ExtensionRestrictionError { 9519 extension: "khr_variable_pointers", 9520 restriction: crate::device::ExtensionRestriction::Requires( 9521 crate::RequiresOneOf { 9522 api_version: Some(crate::Version::V1_1), 9523 device_extensions: &[], 9524 instance_extensions: &["khr_get_physical_device_properties2"], 9525 ..Default::default() 9526 }, 9527 ), 9528 }); 9529 } 9530 if !(api_version >= crate::Version::V1_1 9531 || device_extensions.khr_storage_buffer_storage_class) 9532 { 9533 return Err(crate::device::ExtensionRestrictionError { 9534 extension: "khr_variable_pointers", 9535 restriction: crate::device::ExtensionRestriction::Requires( 9536 crate::RequiresOneOf { 9537 api_version: Some(crate::Version::V1_1), 9538 device_extensions: &["khr_storage_buffer_storage_class"], 9539 instance_extensions: &[], 9540 ..Default::default() 9541 }, 9542 ), 9543 }); 9544 } 9545 } else { 9546 } 9547 if self.khr_video_decode_h264 { 9548 if !supported.khr_video_decode_h264 { 9549 return Err(crate::device::ExtensionRestrictionError { 9550 extension: "khr_video_decode_h264", 9551 restriction: crate::device::ExtensionRestriction::NotSupported, 9552 }); 9553 } 9554 if !(device_extensions.khr_video_decode_queue) { 9555 return Err(crate::device::ExtensionRestrictionError { 9556 extension: "khr_video_decode_h264", 9557 restriction: crate::device::ExtensionRestriction::Requires( 9558 crate::RequiresOneOf { 9559 api_version: None, 9560 device_extensions: &["khr_video_decode_queue"], 9561 instance_extensions: &[], 9562 ..Default::default() 9563 }, 9564 ), 9565 }); 9566 } 9567 } else { 9568 } 9569 if self.khr_video_decode_h265 { 9570 if !supported.khr_video_decode_h265 { 9571 return Err(crate::device::ExtensionRestrictionError { 9572 extension: "khr_video_decode_h265", 9573 restriction: crate::device::ExtensionRestriction::NotSupported, 9574 }); 9575 } 9576 if !(device_extensions.khr_video_decode_queue) { 9577 return Err(crate::device::ExtensionRestrictionError { 9578 extension: "khr_video_decode_h265", 9579 restriction: crate::device::ExtensionRestriction::Requires( 9580 crate::RequiresOneOf { 9581 api_version: None, 9582 device_extensions: &["khr_video_decode_queue"], 9583 instance_extensions: &[], 9584 ..Default::default() 9585 }, 9586 ), 9587 }); 9588 } 9589 } else { 9590 } 9591 if self.khr_video_decode_queue { 9592 if !supported.khr_video_decode_queue { 9593 return Err(crate::device::ExtensionRestrictionError { 9594 extension: "khr_video_decode_queue", 9595 restriction: crate::device::ExtensionRestriction::NotSupported, 9596 }); 9597 } 9598 if !(device_extensions.khr_video_queue) { 9599 return Err(crate::device::ExtensionRestrictionError { 9600 extension: "khr_video_decode_queue", 9601 restriction: crate::device::ExtensionRestriction::Requires( 9602 crate::RequiresOneOf { 9603 api_version: None, 9604 device_extensions: &["khr_video_queue"], 9605 instance_extensions: &[], 9606 ..Default::default() 9607 }, 9608 ), 9609 }); 9610 } 9611 if !(api_version >= crate::Version::V1_3 || device_extensions.khr_synchronization2) { 9612 return Err(crate::device::ExtensionRestrictionError { 9613 extension: "khr_video_decode_queue", 9614 restriction: crate::device::ExtensionRestriction::Requires( 9615 crate::RequiresOneOf { 9616 api_version: Some(crate::Version::V1_3), 9617 device_extensions: &["khr_synchronization2"], 9618 instance_extensions: &[], 9619 ..Default::default() 9620 }, 9621 ), 9622 }); 9623 } 9624 } else { 9625 } 9626 if self.khr_video_encode_queue { 9627 if !supported.khr_video_encode_queue { 9628 return Err(crate::device::ExtensionRestrictionError { 9629 extension: "khr_video_encode_queue", 9630 restriction: crate::device::ExtensionRestriction::NotSupported, 9631 }); 9632 } 9633 if !(device_extensions.khr_video_queue) { 9634 return Err(crate::device::ExtensionRestrictionError { 9635 extension: "khr_video_encode_queue", 9636 restriction: crate::device::ExtensionRestriction::Requires( 9637 crate::RequiresOneOf { 9638 api_version: None, 9639 device_extensions: &["khr_video_queue"], 9640 instance_extensions: &[], 9641 ..Default::default() 9642 }, 9643 ), 9644 }); 9645 } 9646 if !(api_version >= crate::Version::V1_3 || device_extensions.khr_synchronization2) { 9647 return Err(crate::device::ExtensionRestrictionError { 9648 extension: "khr_video_encode_queue", 9649 restriction: crate::device::ExtensionRestriction::Requires( 9650 crate::RequiresOneOf { 9651 api_version: Some(crate::Version::V1_3), 9652 device_extensions: &["khr_synchronization2"], 9653 instance_extensions: &[], 9654 ..Default::default() 9655 }, 9656 ), 9657 }); 9658 } 9659 } else { 9660 } 9661 if self.khr_video_queue { 9662 if !supported.khr_video_queue { 9663 return Err(crate::device::ExtensionRestrictionError { 9664 extension: "khr_video_queue", 9665 restriction: crate::device::ExtensionRestriction::NotSupported, 9666 }); 9667 } 9668 if !(api_version >= crate::Version::V1_1) { 9669 return Err(crate::device::ExtensionRestrictionError { 9670 extension: "khr_video_queue", 9671 restriction: crate::device::ExtensionRestriction::Requires( 9672 crate::RequiresOneOf { 9673 api_version: Some(crate::Version::V1_1), 9674 device_extensions: &[], 9675 instance_extensions: &[], 9676 ..Default::default() 9677 }, 9678 ), 9679 }); 9680 } 9681 if !(api_version >= crate::Version::V1_1 9682 || instance_extensions.khr_get_physical_device_properties2) 9683 { 9684 return Err(crate::device::ExtensionRestrictionError { 9685 extension: "khr_video_queue", 9686 restriction: crate::device::ExtensionRestriction::Requires( 9687 crate::RequiresOneOf { 9688 api_version: Some(crate::Version::V1_1), 9689 device_extensions: &[], 9690 instance_extensions: &["khr_get_physical_device_properties2"], 9691 ..Default::default() 9692 }, 9693 ), 9694 }); 9695 } 9696 if !(api_version >= crate::Version::V1_3 || device_extensions.khr_synchronization2) { 9697 return Err(crate::device::ExtensionRestrictionError { 9698 extension: "khr_video_queue", 9699 restriction: crate::device::ExtensionRestriction::Requires( 9700 crate::RequiresOneOf { 9701 api_version: Some(crate::Version::V1_3), 9702 device_extensions: &["khr_synchronization2"], 9703 instance_extensions: &[], 9704 ..Default::default() 9705 }, 9706 ), 9707 }); 9708 } 9709 } else { 9710 } 9711 if self.khr_vulkan_memory_model { 9712 if !supported.khr_vulkan_memory_model { 9713 return Err(crate::device::ExtensionRestrictionError { 9714 extension: "khr_vulkan_memory_model", 9715 restriction: crate::device::ExtensionRestriction::NotSupported, 9716 }); 9717 } 9718 } else { 9719 } 9720 if self.khr_win32_keyed_mutex { 9721 if !supported.khr_win32_keyed_mutex { 9722 return Err(crate::device::ExtensionRestrictionError { 9723 extension: "khr_win32_keyed_mutex", 9724 restriction: crate::device::ExtensionRestriction::NotSupported, 9725 }); 9726 } 9727 if !(device_extensions.khr_external_memory_win32) { 9728 return Err(crate::device::ExtensionRestrictionError { 9729 extension: "khr_win32_keyed_mutex", 9730 restriction: crate::device::ExtensionRestriction::Requires( 9731 crate::RequiresOneOf { 9732 api_version: None, 9733 device_extensions: &["khr_external_memory_win32"], 9734 instance_extensions: &[], 9735 ..Default::default() 9736 }, 9737 ), 9738 }); 9739 } 9740 } else { 9741 } 9742 if self.khr_workgroup_memory_explicit_layout { 9743 if !supported.khr_workgroup_memory_explicit_layout { 9744 return Err(crate::device::ExtensionRestrictionError { 9745 extension: "khr_workgroup_memory_explicit_layout", 9746 restriction: crate::device::ExtensionRestriction::NotSupported, 9747 }); 9748 } 9749 if !(api_version >= crate::Version::V1_1 9750 || instance_extensions.khr_get_physical_device_properties2) 9751 { 9752 return Err(crate::device::ExtensionRestrictionError { 9753 extension: "khr_workgroup_memory_explicit_layout", 9754 restriction: crate::device::ExtensionRestriction::Requires( 9755 crate::RequiresOneOf { 9756 api_version: Some(crate::Version::V1_1), 9757 device_extensions: &[], 9758 instance_extensions: &["khr_get_physical_device_properties2"], 9759 ..Default::default() 9760 }, 9761 ), 9762 }); 9763 } 9764 } else { 9765 } 9766 if self.khr_zero_initialize_workgroup_memory { 9767 if !supported.khr_zero_initialize_workgroup_memory { 9768 return Err(crate::device::ExtensionRestrictionError { 9769 extension: "khr_zero_initialize_workgroup_memory", 9770 restriction: crate::device::ExtensionRestriction::NotSupported, 9771 }); 9772 } 9773 if !(api_version >= crate::Version::V1_1 9774 || instance_extensions.khr_get_physical_device_properties2) 9775 { 9776 return Err(crate::device::ExtensionRestrictionError { 9777 extension: "khr_zero_initialize_workgroup_memory", 9778 restriction: crate::device::ExtensionRestriction::Requires( 9779 crate::RequiresOneOf { 9780 api_version: Some(crate::Version::V1_1), 9781 device_extensions: &[], 9782 instance_extensions: &["khr_get_physical_device_properties2"], 9783 ..Default::default() 9784 }, 9785 ), 9786 }); 9787 } 9788 } else { 9789 } 9790 if self.ext_4444_formats { 9791 if !supported.ext_4444_formats { 9792 return Err(crate::device::ExtensionRestrictionError { 9793 extension: "ext_4444_formats", 9794 restriction: crate::device::ExtensionRestriction::NotSupported, 9795 }); 9796 } 9797 if !(api_version >= crate::Version::V1_1 9798 || instance_extensions.khr_get_physical_device_properties2) 9799 { 9800 return Err(crate::device::ExtensionRestrictionError { 9801 extension: "ext_4444_formats", 9802 restriction: crate::device::ExtensionRestriction::Requires( 9803 crate::RequiresOneOf { 9804 api_version: Some(crate::Version::V1_1), 9805 device_extensions: &[], 9806 instance_extensions: &["khr_get_physical_device_properties2"], 9807 ..Default::default() 9808 }, 9809 ), 9810 }); 9811 } 9812 } else { 9813 } 9814 if self.ext_astc_decode_mode { 9815 if !supported.ext_astc_decode_mode { 9816 return Err(crate::device::ExtensionRestrictionError { 9817 extension: "ext_astc_decode_mode", 9818 restriction: crate::device::ExtensionRestriction::NotSupported, 9819 }); 9820 } 9821 if !(api_version >= crate::Version::V1_1 9822 || instance_extensions.khr_get_physical_device_properties2) 9823 { 9824 return Err(crate::device::ExtensionRestrictionError { 9825 extension: "ext_astc_decode_mode", 9826 restriction: crate::device::ExtensionRestriction::Requires( 9827 crate::RequiresOneOf { 9828 api_version: Some(crate::Version::V1_1), 9829 device_extensions: &[], 9830 instance_extensions: &["khr_get_physical_device_properties2"], 9831 ..Default::default() 9832 }, 9833 ), 9834 }); 9835 } 9836 } else { 9837 } 9838 if self.ext_attachment_feedback_loop_layout { 9839 if !supported.ext_attachment_feedback_loop_layout { 9840 return Err(crate::device::ExtensionRestrictionError { 9841 extension: "ext_attachment_feedback_loop_layout", 9842 restriction: crate::device::ExtensionRestriction::NotSupported, 9843 }); 9844 } 9845 if !(api_version >= crate::Version::V1_1 9846 || instance_extensions.khr_get_physical_device_properties2) 9847 { 9848 return Err(crate::device::ExtensionRestrictionError { 9849 extension: "ext_attachment_feedback_loop_layout", 9850 restriction: crate::device::ExtensionRestriction::Requires( 9851 crate::RequiresOneOf { 9852 api_version: Some(crate::Version::V1_1), 9853 device_extensions: &[], 9854 instance_extensions: &["khr_get_physical_device_properties2"], 9855 ..Default::default() 9856 }, 9857 ), 9858 }); 9859 } 9860 } else { 9861 } 9862 if self.ext_blend_operation_advanced { 9863 if !supported.ext_blend_operation_advanced { 9864 return Err(crate::device::ExtensionRestrictionError { 9865 extension: "ext_blend_operation_advanced", 9866 restriction: crate::device::ExtensionRestriction::NotSupported, 9867 }); 9868 } 9869 if !(api_version >= crate::Version::V1_1 9870 || instance_extensions.khr_get_physical_device_properties2) 9871 { 9872 return Err(crate::device::ExtensionRestrictionError { 9873 extension: "ext_blend_operation_advanced", 9874 restriction: crate::device::ExtensionRestriction::Requires( 9875 crate::RequiresOneOf { 9876 api_version: Some(crate::Version::V1_1), 9877 device_extensions: &[], 9878 instance_extensions: &["khr_get_physical_device_properties2"], 9879 ..Default::default() 9880 }, 9881 ), 9882 }); 9883 } 9884 } else { 9885 } 9886 if self.ext_border_color_swizzle { 9887 if !supported.ext_border_color_swizzle { 9888 return Err(crate::device::ExtensionRestrictionError { 9889 extension: "ext_border_color_swizzle", 9890 restriction: crate::device::ExtensionRestriction::NotSupported, 9891 }); 9892 } 9893 if !(device_extensions.ext_custom_border_color) { 9894 return Err(crate::device::ExtensionRestrictionError { 9895 extension: "ext_border_color_swizzle", 9896 restriction: crate::device::ExtensionRestriction::Requires( 9897 crate::RequiresOneOf { 9898 api_version: None, 9899 device_extensions: &["ext_custom_border_color"], 9900 instance_extensions: &[], 9901 ..Default::default() 9902 }, 9903 ), 9904 }); 9905 } 9906 } else { 9907 } 9908 if self.ext_buffer_device_address { 9909 if !supported.ext_buffer_device_address { 9910 return Err(crate::device::ExtensionRestrictionError { 9911 extension: "ext_buffer_device_address", 9912 restriction: crate::device::ExtensionRestriction::NotSupported, 9913 }); 9914 } 9915 if !(api_version >= crate::Version::V1_1 9916 || instance_extensions.khr_get_physical_device_properties2) 9917 { 9918 return Err(crate::device::ExtensionRestrictionError { 9919 extension: "ext_buffer_device_address", 9920 restriction: crate::device::ExtensionRestriction::Requires( 9921 crate::RequiresOneOf { 9922 api_version: Some(crate::Version::V1_1), 9923 device_extensions: &[], 9924 instance_extensions: &["khr_get_physical_device_properties2"], 9925 ..Default::default() 9926 }, 9927 ), 9928 }); 9929 } 9930 if self.khr_buffer_device_address { 9931 return Err(crate::device::ExtensionRestrictionError { 9932 extension: "ext_buffer_device_address", 9933 restriction: crate::device::ExtensionRestriction::ConflictsDeviceExtension( 9934 "khr_buffer_device_address", 9935 ), 9936 }); 9937 } 9938 } else { 9939 } 9940 if self.ext_calibrated_timestamps { 9941 if !supported.ext_calibrated_timestamps { 9942 return Err(crate::device::ExtensionRestrictionError { 9943 extension: "ext_calibrated_timestamps", 9944 restriction: crate::device::ExtensionRestriction::NotSupported, 9945 }); 9946 } 9947 if !(api_version >= crate::Version::V1_1 9948 || instance_extensions.khr_get_physical_device_properties2) 9949 { 9950 return Err(crate::device::ExtensionRestrictionError { 9951 extension: "ext_calibrated_timestamps", 9952 restriction: crate::device::ExtensionRestriction::Requires( 9953 crate::RequiresOneOf { 9954 api_version: Some(crate::Version::V1_1), 9955 device_extensions: &[], 9956 instance_extensions: &["khr_get_physical_device_properties2"], 9957 ..Default::default() 9958 }, 9959 ), 9960 }); 9961 } 9962 } else { 9963 } 9964 if self.ext_color_write_enable { 9965 if !supported.ext_color_write_enable { 9966 return Err(crate::device::ExtensionRestrictionError { 9967 extension: "ext_color_write_enable", 9968 restriction: crate::device::ExtensionRestriction::NotSupported, 9969 }); 9970 } 9971 if !(api_version >= crate::Version::V1_1 9972 || instance_extensions.khr_get_physical_device_properties2) 9973 { 9974 return Err(crate::device::ExtensionRestrictionError { 9975 extension: "ext_color_write_enable", 9976 restriction: crate::device::ExtensionRestriction::Requires( 9977 crate::RequiresOneOf { 9978 api_version: Some(crate::Version::V1_1), 9979 device_extensions: &[], 9980 instance_extensions: &["khr_get_physical_device_properties2"], 9981 ..Default::default() 9982 }, 9983 ), 9984 }); 9985 } 9986 } else { 9987 } 9988 if self.ext_conditional_rendering { 9989 if !supported.ext_conditional_rendering { 9990 return Err(crate::device::ExtensionRestrictionError { 9991 extension: "ext_conditional_rendering", 9992 restriction: crate::device::ExtensionRestriction::NotSupported, 9993 }); 9994 } 9995 } else { 9996 } 9997 if self.ext_conservative_rasterization { 9998 if !supported.ext_conservative_rasterization { 9999 return Err(crate::device::ExtensionRestrictionError { 10000 extension: "ext_conservative_rasterization", 10001 restriction: crate::device::ExtensionRestriction::NotSupported, 10002 }); 10003 } 10004 if !(api_version >= crate::Version::V1_1 10005 || instance_extensions.khr_get_physical_device_properties2) 10006 { 10007 return Err(crate::device::ExtensionRestrictionError { 10008 extension: "ext_conservative_rasterization", 10009 restriction: crate::device::ExtensionRestriction::Requires( 10010 crate::RequiresOneOf { 10011 api_version: Some(crate::Version::V1_1), 10012 device_extensions: &[], 10013 instance_extensions: &["khr_get_physical_device_properties2"], 10014 ..Default::default() 10015 }, 10016 ), 10017 }); 10018 } 10019 } else { 10020 } 10021 if self.ext_custom_border_color { 10022 if !supported.ext_custom_border_color { 10023 return Err(crate::device::ExtensionRestrictionError { 10024 extension: "ext_custom_border_color", 10025 restriction: crate::device::ExtensionRestriction::NotSupported, 10026 }); 10027 } 10028 } else { 10029 } 10030 if self.ext_debug_marker { 10031 if !supported.ext_debug_marker { 10032 return Err(crate::device::ExtensionRestrictionError { 10033 extension: "ext_debug_marker", 10034 restriction: crate::device::ExtensionRestriction::NotSupported, 10035 }); 10036 } 10037 if !(instance_extensions.ext_debug_report) { 10038 return Err(crate::device::ExtensionRestrictionError { 10039 extension: "ext_debug_marker", 10040 restriction: crate::device::ExtensionRestriction::Requires( 10041 crate::RequiresOneOf { 10042 api_version: None, 10043 device_extensions: &[], 10044 instance_extensions: &["ext_debug_report"], 10045 ..Default::default() 10046 }, 10047 ), 10048 }); 10049 } 10050 } else { 10051 } 10052 if self.ext_depth_clamp_zero_one { 10053 if !supported.ext_depth_clamp_zero_one { 10054 return Err(crate::device::ExtensionRestrictionError { 10055 extension: "ext_depth_clamp_zero_one", 10056 restriction: crate::device::ExtensionRestriction::NotSupported, 10057 }); 10058 } 10059 } else { 10060 } 10061 if self.ext_depth_clip_control { 10062 if !supported.ext_depth_clip_control { 10063 return Err(crate::device::ExtensionRestrictionError { 10064 extension: "ext_depth_clip_control", 10065 restriction: crate::device::ExtensionRestriction::NotSupported, 10066 }); 10067 } 10068 if !(api_version >= crate::Version::V1_1 10069 || instance_extensions.khr_get_physical_device_properties2) 10070 { 10071 return Err(crate::device::ExtensionRestrictionError { 10072 extension: "ext_depth_clip_control", 10073 restriction: crate::device::ExtensionRestriction::Requires( 10074 crate::RequiresOneOf { 10075 api_version: Some(crate::Version::V1_1), 10076 device_extensions: &[], 10077 instance_extensions: &["khr_get_physical_device_properties2"], 10078 ..Default::default() 10079 }, 10080 ), 10081 }); 10082 } 10083 } else { 10084 } 10085 if self.ext_depth_clip_enable { 10086 if !supported.ext_depth_clip_enable { 10087 return Err(crate::device::ExtensionRestrictionError { 10088 extension: "ext_depth_clip_enable", 10089 restriction: crate::device::ExtensionRestriction::NotSupported, 10090 }); 10091 } 10092 } else { 10093 } 10094 if self.ext_depth_range_unrestricted { 10095 if !supported.ext_depth_range_unrestricted { 10096 return Err(crate::device::ExtensionRestrictionError { 10097 extension: "ext_depth_range_unrestricted", 10098 restriction: crate::device::ExtensionRestriction::NotSupported, 10099 }); 10100 } 10101 } else { 10102 } 10103 if self.ext_descriptor_buffer { 10104 if !supported.ext_descriptor_buffer { 10105 return Err(crate::device::ExtensionRestrictionError { 10106 extension: "ext_descriptor_buffer", 10107 restriction: crate::device::ExtensionRestriction::NotSupported, 10108 }); 10109 } 10110 if !(api_version >= crate::Version::V1_1 10111 || instance_extensions.khr_get_physical_device_properties2) 10112 { 10113 return Err(crate::device::ExtensionRestrictionError { 10114 extension: "ext_descriptor_buffer", 10115 restriction: crate::device::ExtensionRestriction::Requires( 10116 crate::RequiresOneOf { 10117 api_version: Some(crate::Version::V1_1), 10118 device_extensions: &[], 10119 instance_extensions: &["khr_get_physical_device_properties2"], 10120 ..Default::default() 10121 }, 10122 ), 10123 }); 10124 } 10125 if !(api_version >= crate::Version::V1_2 || device_extensions.khr_buffer_device_address) 10126 { 10127 return Err(crate::device::ExtensionRestrictionError { 10128 extension: "ext_descriptor_buffer", 10129 restriction: crate::device::ExtensionRestriction::Requires( 10130 crate::RequiresOneOf { 10131 api_version: Some(crate::Version::V1_2), 10132 device_extensions: &["khr_buffer_device_address"], 10133 instance_extensions: &[], 10134 ..Default::default() 10135 }, 10136 ), 10137 }); 10138 } 10139 if !(api_version >= crate::Version::V1_3 || device_extensions.khr_synchronization2) { 10140 return Err(crate::device::ExtensionRestrictionError { 10141 extension: "ext_descriptor_buffer", 10142 restriction: crate::device::ExtensionRestriction::Requires( 10143 crate::RequiresOneOf { 10144 api_version: Some(crate::Version::V1_3), 10145 device_extensions: &["khr_synchronization2"], 10146 instance_extensions: &[], 10147 ..Default::default() 10148 }, 10149 ), 10150 }); 10151 } 10152 if !(api_version >= crate::Version::V1_2 || device_extensions.ext_descriptor_indexing) { 10153 return Err(crate::device::ExtensionRestrictionError { 10154 extension: "ext_descriptor_buffer", 10155 restriction: crate::device::ExtensionRestriction::Requires( 10156 crate::RequiresOneOf { 10157 api_version: Some(crate::Version::V1_2), 10158 device_extensions: &["ext_descriptor_indexing"], 10159 instance_extensions: &[], 10160 ..Default::default() 10161 }, 10162 ), 10163 }); 10164 } 10165 } else { 10166 } 10167 if self.ext_descriptor_indexing { 10168 if !supported.ext_descriptor_indexing { 10169 return Err(crate::device::ExtensionRestrictionError { 10170 extension: "ext_descriptor_indexing", 10171 restriction: crate::device::ExtensionRestriction::NotSupported, 10172 }); 10173 } 10174 if !(api_version >= crate::Version::V1_1 10175 || instance_extensions.khr_get_physical_device_properties2) 10176 { 10177 return Err(crate::device::ExtensionRestrictionError { 10178 extension: "ext_descriptor_indexing", 10179 restriction: crate::device::ExtensionRestriction::Requires( 10180 crate::RequiresOneOf { 10181 api_version: Some(crate::Version::V1_1), 10182 device_extensions: &[], 10183 instance_extensions: &["khr_get_physical_device_properties2"], 10184 ..Default::default() 10185 }, 10186 ), 10187 }); 10188 } 10189 if !(api_version >= crate::Version::V1_1 || device_extensions.khr_maintenance3) { 10190 return Err(crate::device::ExtensionRestrictionError { 10191 extension: "ext_descriptor_indexing", 10192 restriction: crate::device::ExtensionRestriction::Requires( 10193 crate::RequiresOneOf { 10194 api_version: Some(crate::Version::V1_1), 10195 device_extensions: &["khr_maintenance3"], 10196 instance_extensions: &[], 10197 ..Default::default() 10198 }, 10199 ), 10200 }); 10201 } 10202 } else { 10203 } 10204 if self.ext_device_address_binding_report { 10205 if !supported.ext_device_address_binding_report { 10206 return Err(crate::device::ExtensionRestrictionError { 10207 extension: "ext_device_address_binding_report", 10208 restriction: crate::device::ExtensionRestriction::NotSupported, 10209 }); 10210 } 10211 if !(api_version >= crate::Version::V1_1 10212 || instance_extensions.khr_get_physical_device_properties2) 10213 { 10214 return Err(crate::device::ExtensionRestrictionError { 10215 extension: "ext_device_address_binding_report", 10216 restriction: crate::device::ExtensionRestriction::Requires( 10217 crate::RequiresOneOf { 10218 api_version: Some(crate::Version::V1_1), 10219 device_extensions: &[], 10220 instance_extensions: &["khr_get_physical_device_properties2"], 10221 ..Default::default() 10222 }, 10223 ), 10224 }); 10225 } 10226 if !(instance_extensions.ext_debug_utils) { 10227 return Err(crate::device::ExtensionRestrictionError { 10228 extension: "ext_device_address_binding_report", 10229 restriction: crate::device::ExtensionRestriction::Requires( 10230 crate::RequiresOneOf { 10231 api_version: None, 10232 device_extensions: &[], 10233 instance_extensions: &["ext_debug_utils"], 10234 ..Default::default() 10235 }, 10236 ), 10237 }); 10238 } 10239 } else { 10240 } 10241 if self.ext_device_fault { 10242 if !supported.ext_device_fault { 10243 return Err(crate::device::ExtensionRestrictionError { 10244 extension: "ext_device_fault", 10245 restriction: crate::device::ExtensionRestriction::NotSupported, 10246 }); 10247 } 10248 if !(api_version >= crate::Version::V1_1 10249 || instance_extensions.khr_get_physical_device_properties2) 10250 { 10251 return Err(crate::device::ExtensionRestrictionError { 10252 extension: "ext_device_fault", 10253 restriction: crate::device::ExtensionRestriction::Requires( 10254 crate::RequiresOneOf { 10255 api_version: Some(crate::Version::V1_1), 10256 device_extensions: &[], 10257 instance_extensions: &["khr_get_physical_device_properties2"], 10258 ..Default::default() 10259 }, 10260 ), 10261 }); 10262 } 10263 } else { 10264 } 10265 if self.ext_device_memory_report { 10266 if !supported.ext_device_memory_report { 10267 return Err(crate::device::ExtensionRestrictionError { 10268 extension: "ext_device_memory_report", 10269 restriction: crate::device::ExtensionRestriction::NotSupported, 10270 }); 10271 } 10272 if !(api_version >= crate::Version::V1_1 10273 || instance_extensions.khr_get_physical_device_properties2) 10274 { 10275 return Err(crate::device::ExtensionRestrictionError { 10276 extension: "ext_device_memory_report", 10277 restriction: crate::device::ExtensionRestriction::Requires( 10278 crate::RequiresOneOf { 10279 api_version: Some(crate::Version::V1_1), 10280 device_extensions: &[], 10281 instance_extensions: &["khr_get_physical_device_properties2"], 10282 ..Default::default() 10283 }, 10284 ), 10285 }); 10286 } 10287 } else { 10288 } 10289 if self.ext_discard_rectangles { 10290 if !supported.ext_discard_rectangles { 10291 return Err(crate::device::ExtensionRestrictionError { 10292 extension: "ext_discard_rectangles", 10293 restriction: crate::device::ExtensionRestriction::NotSupported, 10294 }); 10295 } 10296 if !(api_version >= crate::Version::V1_1 10297 || instance_extensions.khr_get_physical_device_properties2) 10298 { 10299 return Err(crate::device::ExtensionRestrictionError { 10300 extension: "ext_discard_rectangles", 10301 restriction: crate::device::ExtensionRestriction::Requires( 10302 crate::RequiresOneOf { 10303 api_version: Some(crate::Version::V1_1), 10304 device_extensions: &[], 10305 instance_extensions: &["khr_get_physical_device_properties2"], 10306 ..Default::default() 10307 }, 10308 ), 10309 }); 10310 } 10311 } else { 10312 } 10313 if self.ext_display_control { 10314 if !supported.ext_display_control { 10315 return Err(crate::device::ExtensionRestrictionError { 10316 extension: "ext_display_control", 10317 restriction: crate::device::ExtensionRestriction::NotSupported, 10318 }); 10319 } 10320 if !(instance_extensions.ext_display_surface_counter) { 10321 return Err(crate::device::ExtensionRestrictionError { 10322 extension: "ext_display_control", 10323 restriction: crate::device::ExtensionRestriction::Requires( 10324 crate::RequiresOneOf { 10325 api_version: None, 10326 device_extensions: &[], 10327 instance_extensions: &["ext_display_surface_counter"], 10328 ..Default::default() 10329 }, 10330 ), 10331 }); 10332 } 10333 if !(device_extensions.khr_swapchain) { 10334 return Err(crate::device::ExtensionRestrictionError { 10335 extension: "ext_display_control", 10336 restriction: crate::device::ExtensionRestriction::Requires( 10337 crate::RequiresOneOf { 10338 api_version: None, 10339 device_extensions: &["khr_swapchain"], 10340 instance_extensions: &[], 10341 ..Default::default() 10342 }, 10343 ), 10344 }); 10345 } 10346 } else { 10347 } 10348 if self.ext_extended_dynamic_state { 10349 if !supported.ext_extended_dynamic_state { 10350 return Err(crate::device::ExtensionRestrictionError { 10351 extension: "ext_extended_dynamic_state", 10352 restriction: crate::device::ExtensionRestriction::NotSupported, 10353 }); 10354 } 10355 if !(api_version >= crate::Version::V1_1 10356 || instance_extensions.khr_get_physical_device_properties2) 10357 { 10358 return Err(crate::device::ExtensionRestrictionError { 10359 extension: "ext_extended_dynamic_state", 10360 restriction: crate::device::ExtensionRestriction::Requires( 10361 crate::RequiresOneOf { 10362 api_version: Some(crate::Version::V1_1), 10363 device_extensions: &[], 10364 instance_extensions: &["khr_get_physical_device_properties2"], 10365 ..Default::default() 10366 }, 10367 ), 10368 }); 10369 } 10370 } else { 10371 } 10372 if self.ext_extended_dynamic_state2 { 10373 if !supported.ext_extended_dynamic_state2 { 10374 return Err(crate::device::ExtensionRestrictionError { 10375 extension: "ext_extended_dynamic_state2", 10376 restriction: crate::device::ExtensionRestriction::NotSupported, 10377 }); 10378 } 10379 if !(api_version >= crate::Version::V1_1 10380 || instance_extensions.khr_get_physical_device_properties2) 10381 { 10382 return Err(crate::device::ExtensionRestrictionError { 10383 extension: "ext_extended_dynamic_state2", 10384 restriction: crate::device::ExtensionRestriction::Requires( 10385 crate::RequiresOneOf { 10386 api_version: Some(crate::Version::V1_1), 10387 device_extensions: &[], 10388 instance_extensions: &["khr_get_physical_device_properties2"], 10389 ..Default::default() 10390 }, 10391 ), 10392 }); 10393 } 10394 } else { 10395 } 10396 if self.ext_extended_dynamic_state3 { 10397 if !supported.ext_extended_dynamic_state3 { 10398 return Err(crate::device::ExtensionRestrictionError { 10399 extension: "ext_extended_dynamic_state3", 10400 restriction: crate::device::ExtensionRestriction::NotSupported, 10401 }); 10402 } 10403 if !(api_version >= crate::Version::V1_1 10404 || instance_extensions.khr_get_physical_device_properties2) 10405 { 10406 return Err(crate::device::ExtensionRestrictionError { 10407 extension: "ext_extended_dynamic_state3", 10408 restriction: crate::device::ExtensionRestriction::Requires( 10409 crate::RequiresOneOf { 10410 api_version: Some(crate::Version::V1_1), 10411 device_extensions: &[], 10412 instance_extensions: &["khr_get_physical_device_properties2"], 10413 ..Default::default() 10414 }, 10415 ), 10416 }); 10417 } 10418 } else { 10419 } 10420 if self.ext_external_memory_dma_buf { 10421 if !supported.ext_external_memory_dma_buf { 10422 return Err(crate::device::ExtensionRestrictionError { 10423 extension: "ext_external_memory_dma_buf", 10424 restriction: crate::device::ExtensionRestriction::NotSupported, 10425 }); 10426 } 10427 if !(device_extensions.khr_external_memory_fd) { 10428 return Err(crate::device::ExtensionRestrictionError { 10429 extension: "ext_external_memory_dma_buf", 10430 restriction: crate::device::ExtensionRestriction::Requires( 10431 crate::RequiresOneOf { 10432 api_version: None, 10433 device_extensions: &["khr_external_memory_fd"], 10434 instance_extensions: &[], 10435 ..Default::default() 10436 }, 10437 ), 10438 }); 10439 } 10440 } else { 10441 } 10442 if self.ext_external_memory_host { 10443 if !supported.ext_external_memory_host { 10444 return Err(crate::device::ExtensionRestrictionError { 10445 extension: "ext_external_memory_host", 10446 restriction: crate::device::ExtensionRestriction::NotSupported, 10447 }); 10448 } 10449 if !(api_version >= crate::Version::V1_1 || device_extensions.khr_external_memory) { 10450 return Err(crate::device::ExtensionRestrictionError { 10451 extension: "ext_external_memory_host", 10452 restriction: crate::device::ExtensionRestriction::Requires( 10453 crate::RequiresOneOf { 10454 api_version: Some(crate::Version::V1_1), 10455 device_extensions: &["khr_external_memory"], 10456 instance_extensions: &[], 10457 ..Default::default() 10458 }, 10459 ), 10460 }); 10461 } 10462 } else { 10463 } 10464 if self.ext_filter_cubic { 10465 if !supported.ext_filter_cubic { 10466 return Err(crate::device::ExtensionRestrictionError { 10467 extension: "ext_filter_cubic", 10468 restriction: crate::device::ExtensionRestriction::NotSupported, 10469 }); 10470 } 10471 } else { 10472 } 10473 if self.ext_fragment_density_map { 10474 if !supported.ext_fragment_density_map { 10475 return Err(crate::device::ExtensionRestrictionError { 10476 extension: "ext_fragment_density_map", 10477 restriction: crate::device::ExtensionRestriction::NotSupported, 10478 }); 10479 } 10480 if !(api_version >= crate::Version::V1_1 10481 || instance_extensions.khr_get_physical_device_properties2) 10482 { 10483 return Err(crate::device::ExtensionRestrictionError { 10484 extension: "ext_fragment_density_map", 10485 restriction: crate::device::ExtensionRestriction::Requires( 10486 crate::RequiresOneOf { 10487 api_version: Some(crate::Version::V1_1), 10488 device_extensions: &[], 10489 instance_extensions: &["khr_get_physical_device_properties2"], 10490 ..Default::default() 10491 }, 10492 ), 10493 }); 10494 } 10495 } else { 10496 } 10497 if self.ext_fragment_density_map2 { 10498 if !supported.ext_fragment_density_map2 { 10499 return Err(crate::device::ExtensionRestrictionError { 10500 extension: "ext_fragment_density_map2", 10501 restriction: crate::device::ExtensionRestriction::NotSupported, 10502 }); 10503 } 10504 if !(device_extensions.ext_fragment_density_map) { 10505 return Err(crate::device::ExtensionRestrictionError { 10506 extension: "ext_fragment_density_map2", 10507 restriction: crate::device::ExtensionRestriction::Requires( 10508 crate::RequiresOneOf { 10509 api_version: None, 10510 device_extensions: &["ext_fragment_density_map"], 10511 instance_extensions: &[], 10512 ..Default::default() 10513 }, 10514 ), 10515 }); 10516 } 10517 } else { 10518 } 10519 if self.ext_fragment_shader_interlock { 10520 if !supported.ext_fragment_shader_interlock { 10521 return Err(crate::device::ExtensionRestrictionError { 10522 extension: "ext_fragment_shader_interlock", 10523 restriction: crate::device::ExtensionRestriction::NotSupported, 10524 }); 10525 } 10526 if !(api_version >= crate::Version::V1_1 10527 || instance_extensions.khr_get_physical_device_properties2) 10528 { 10529 return Err(crate::device::ExtensionRestrictionError { 10530 extension: "ext_fragment_shader_interlock", 10531 restriction: crate::device::ExtensionRestriction::Requires( 10532 crate::RequiresOneOf { 10533 api_version: Some(crate::Version::V1_1), 10534 device_extensions: &[], 10535 instance_extensions: &["khr_get_physical_device_properties2"], 10536 ..Default::default() 10537 }, 10538 ), 10539 }); 10540 } 10541 } else { 10542 } 10543 if self.ext_full_screen_exclusive { 10544 if !supported.ext_full_screen_exclusive { 10545 return Err(crate::device::ExtensionRestrictionError { 10546 extension: "ext_full_screen_exclusive", 10547 restriction: crate::device::ExtensionRestriction::NotSupported, 10548 }); 10549 } 10550 if !(api_version >= crate::Version::V1_1 10551 || instance_extensions.khr_get_physical_device_properties2) 10552 { 10553 return Err(crate::device::ExtensionRestrictionError { 10554 extension: "ext_full_screen_exclusive", 10555 restriction: crate::device::ExtensionRestriction::Requires( 10556 crate::RequiresOneOf { 10557 api_version: Some(crate::Version::V1_1), 10558 device_extensions: &[], 10559 instance_extensions: &["khr_get_physical_device_properties2"], 10560 ..Default::default() 10561 }, 10562 ), 10563 }); 10564 } 10565 if !(instance_extensions.khr_surface) { 10566 return Err(crate::device::ExtensionRestrictionError { 10567 extension: "ext_full_screen_exclusive", 10568 restriction: crate::device::ExtensionRestriction::Requires( 10569 crate::RequiresOneOf { 10570 api_version: None, 10571 device_extensions: &[], 10572 instance_extensions: &["khr_surface"], 10573 ..Default::default() 10574 }, 10575 ), 10576 }); 10577 } 10578 if !(instance_extensions.khr_get_surface_capabilities2) { 10579 return Err(crate::device::ExtensionRestrictionError { 10580 extension: "ext_full_screen_exclusive", 10581 restriction: crate::device::ExtensionRestriction::Requires( 10582 crate::RequiresOneOf { 10583 api_version: None, 10584 device_extensions: &[], 10585 instance_extensions: &["khr_get_surface_capabilities2"], 10586 ..Default::default() 10587 }, 10588 ), 10589 }); 10590 } 10591 if !(device_extensions.khr_swapchain) { 10592 return Err(crate::device::ExtensionRestrictionError { 10593 extension: "ext_full_screen_exclusive", 10594 restriction: crate::device::ExtensionRestriction::Requires( 10595 crate::RequiresOneOf { 10596 api_version: None, 10597 device_extensions: &["khr_swapchain"], 10598 instance_extensions: &[], 10599 ..Default::default() 10600 }, 10601 ), 10602 }); 10603 } 10604 } else { 10605 } 10606 if self.ext_global_priority { 10607 if !supported.ext_global_priority { 10608 return Err(crate::device::ExtensionRestrictionError { 10609 extension: "ext_global_priority", 10610 restriction: crate::device::ExtensionRestriction::NotSupported, 10611 }); 10612 } 10613 } else { 10614 } 10615 if self.ext_global_priority_query { 10616 if !supported.ext_global_priority_query { 10617 return Err(crate::device::ExtensionRestrictionError { 10618 extension: "ext_global_priority_query", 10619 restriction: crate::device::ExtensionRestriction::NotSupported, 10620 }); 10621 } 10622 if !(device_extensions.khr_global_priority || device_extensions.ext_global_priority) { 10623 return Err(crate::device::ExtensionRestrictionError { 10624 extension: "ext_global_priority_query", 10625 restriction: crate::device::ExtensionRestriction::Requires( 10626 crate::RequiresOneOf { 10627 api_version: None, 10628 device_extensions: &["khr_global_priority", "ext_global_priority"], 10629 instance_extensions: &[], 10630 ..Default::default() 10631 }, 10632 ), 10633 }); 10634 } 10635 if !(api_version >= crate::Version::V1_1 10636 || instance_extensions.khr_get_physical_device_properties2) 10637 { 10638 return Err(crate::device::ExtensionRestrictionError { 10639 extension: "ext_global_priority_query", 10640 restriction: crate::device::ExtensionRestriction::Requires( 10641 crate::RequiresOneOf { 10642 api_version: Some(crate::Version::V1_1), 10643 device_extensions: &[], 10644 instance_extensions: &["khr_get_physical_device_properties2"], 10645 ..Default::default() 10646 }, 10647 ), 10648 }); 10649 } 10650 } else { 10651 } 10652 if self.ext_graphics_pipeline_library { 10653 if !supported.ext_graphics_pipeline_library { 10654 return Err(crate::device::ExtensionRestrictionError { 10655 extension: "ext_graphics_pipeline_library", 10656 restriction: crate::device::ExtensionRestriction::NotSupported, 10657 }); 10658 } 10659 if !(api_version >= crate::Version::V1_1 10660 || instance_extensions.khr_get_physical_device_properties2) 10661 { 10662 return Err(crate::device::ExtensionRestrictionError { 10663 extension: "ext_graphics_pipeline_library", 10664 restriction: crate::device::ExtensionRestriction::Requires( 10665 crate::RequiresOneOf { 10666 api_version: Some(crate::Version::V1_1), 10667 device_extensions: &[], 10668 instance_extensions: &["khr_get_physical_device_properties2"], 10669 ..Default::default() 10670 }, 10671 ), 10672 }); 10673 } 10674 if !(device_extensions.khr_pipeline_library) { 10675 return Err(crate::device::ExtensionRestrictionError { 10676 extension: "ext_graphics_pipeline_library", 10677 restriction: crate::device::ExtensionRestriction::Requires( 10678 crate::RequiresOneOf { 10679 api_version: None, 10680 device_extensions: &["khr_pipeline_library"], 10681 instance_extensions: &[], 10682 ..Default::default() 10683 }, 10684 ), 10685 }); 10686 } 10687 } else { 10688 } 10689 if self.ext_hdr_metadata { 10690 if !supported.ext_hdr_metadata { 10691 return Err(crate::device::ExtensionRestrictionError { 10692 extension: "ext_hdr_metadata", 10693 restriction: crate::device::ExtensionRestriction::NotSupported, 10694 }); 10695 } 10696 if !(device_extensions.khr_swapchain) { 10697 return Err(crate::device::ExtensionRestrictionError { 10698 extension: "ext_hdr_metadata", 10699 restriction: crate::device::ExtensionRestriction::Requires( 10700 crate::RequiresOneOf { 10701 api_version: None, 10702 device_extensions: &["khr_swapchain"], 10703 instance_extensions: &[], 10704 ..Default::default() 10705 }, 10706 ), 10707 }); 10708 } 10709 } else { 10710 } 10711 if self.ext_host_query_reset { 10712 if !supported.ext_host_query_reset { 10713 return Err(crate::device::ExtensionRestrictionError { 10714 extension: "ext_host_query_reset", 10715 restriction: crate::device::ExtensionRestriction::NotSupported, 10716 }); 10717 } 10718 if !(api_version >= crate::Version::V1_1 10719 || instance_extensions.khr_get_physical_device_properties2) 10720 { 10721 return Err(crate::device::ExtensionRestrictionError { 10722 extension: "ext_host_query_reset", 10723 restriction: crate::device::ExtensionRestriction::Requires( 10724 crate::RequiresOneOf { 10725 api_version: Some(crate::Version::V1_1), 10726 device_extensions: &[], 10727 instance_extensions: &["khr_get_physical_device_properties2"], 10728 ..Default::default() 10729 }, 10730 ), 10731 }); 10732 } 10733 } else { 10734 } 10735 if self.ext_image_2d_view_of_3d { 10736 if !supported.ext_image_2d_view_of_3d { 10737 return Err(crate::device::ExtensionRestrictionError { 10738 extension: "ext_image_2d_view_of_3d", 10739 restriction: crate::device::ExtensionRestriction::NotSupported, 10740 }); 10741 } 10742 if !(api_version >= crate::Version::V1_1 || device_extensions.khr_maintenance1) { 10743 return Err(crate::device::ExtensionRestrictionError { 10744 extension: "ext_image_2d_view_of_3d", 10745 restriction: crate::device::ExtensionRestriction::Requires( 10746 crate::RequiresOneOf { 10747 api_version: Some(crate::Version::V1_1), 10748 device_extensions: &["khr_maintenance1"], 10749 instance_extensions: &[], 10750 ..Default::default() 10751 }, 10752 ), 10753 }); 10754 } 10755 if !(api_version >= crate::Version::V1_1 10756 || instance_extensions.khr_get_physical_device_properties2) 10757 { 10758 return Err(crate::device::ExtensionRestrictionError { 10759 extension: "ext_image_2d_view_of_3d", 10760 restriction: crate::device::ExtensionRestriction::Requires( 10761 crate::RequiresOneOf { 10762 api_version: Some(crate::Version::V1_1), 10763 device_extensions: &[], 10764 instance_extensions: &["khr_get_physical_device_properties2"], 10765 ..Default::default() 10766 }, 10767 ), 10768 }); 10769 } 10770 } else { 10771 } 10772 if self.ext_image_compression_control { 10773 if !supported.ext_image_compression_control { 10774 return Err(crate::device::ExtensionRestrictionError { 10775 extension: "ext_image_compression_control", 10776 restriction: crate::device::ExtensionRestriction::NotSupported, 10777 }); 10778 } 10779 } else { 10780 } 10781 if self.ext_image_compression_control_swapchain { 10782 if !supported.ext_image_compression_control_swapchain { 10783 return Err(crate::device::ExtensionRestrictionError { 10784 extension: "ext_image_compression_control_swapchain", 10785 restriction: crate::device::ExtensionRestriction::NotSupported, 10786 }); 10787 } 10788 if !(device_extensions.ext_image_compression_control) { 10789 return Err(crate::device::ExtensionRestrictionError { 10790 extension: "ext_image_compression_control_swapchain", 10791 restriction: crate::device::ExtensionRestriction::Requires( 10792 crate::RequiresOneOf { 10793 api_version: None, 10794 device_extensions: &["ext_image_compression_control"], 10795 instance_extensions: &[], 10796 ..Default::default() 10797 }, 10798 ), 10799 }); 10800 } 10801 } else { 10802 } 10803 if self.ext_image_drm_format_modifier { 10804 if !supported.ext_image_drm_format_modifier { 10805 return Err(crate::device::ExtensionRestrictionError { 10806 extension: "ext_image_drm_format_modifier", 10807 restriction: crate::device::ExtensionRestriction::NotSupported, 10808 }); 10809 } 10810 if !(api_version >= crate::Version::V1_1 || device_extensions.khr_bind_memory2) { 10811 return Err(crate::device::ExtensionRestrictionError { 10812 extension: "ext_image_drm_format_modifier", 10813 restriction: crate::device::ExtensionRestriction::Requires( 10814 crate::RequiresOneOf { 10815 api_version: Some(crate::Version::V1_1), 10816 device_extensions: &["khr_bind_memory2"], 10817 instance_extensions: &[], 10818 ..Default::default() 10819 }, 10820 ), 10821 }); 10822 } 10823 if !(api_version >= crate::Version::V1_1 10824 || instance_extensions.khr_get_physical_device_properties2) 10825 { 10826 return Err(crate::device::ExtensionRestrictionError { 10827 extension: "ext_image_drm_format_modifier", 10828 restriction: crate::device::ExtensionRestriction::Requires( 10829 crate::RequiresOneOf { 10830 api_version: Some(crate::Version::V1_1), 10831 device_extensions: &[], 10832 instance_extensions: &["khr_get_physical_device_properties2"], 10833 ..Default::default() 10834 }, 10835 ), 10836 }); 10837 } 10838 if !(api_version >= crate::Version::V1_2 || device_extensions.khr_image_format_list) { 10839 return Err(crate::device::ExtensionRestrictionError { 10840 extension: "ext_image_drm_format_modifier", 10841 restriction: crate::device::ExtensionRestriction::Requires( 10842 crate::RequiresOneOf { 10843 api_version: Some(crate::Version::V1_2), 10844 device_extensions: &["khr_image_format_list"], 10845 instance_extensions: &[], 10846 ..Default::default() 10847 }, 10848 ), 10849 }); 10850 } 10851 if !(api_version >= crate::Version::V1_1 10852 || device_extensions.khr_sampler_ycbcr_conversion) 10853 { 10854 return Err(crate::device::ExtensionRestrictionError { 10855 extension: "ext_image_drm_format_modifier", 10856 restriction: crate::device::ExtensionRestriction::Requires( 10857 crate::RequiresOneOf { 10858 api_version: Some(crate::Version::V1_1), 10859 device_extensions: &["khr_sampler_ycbcr_conversion"], 10860 instance_extensions: &[], 10861 ..Default::default() 10862 }, 10863 ), 10864 }); 10865 } 10866 } else { 10867 } 10868 if self.ext_image_robustness { 10869 if !supported.ext_image_robustness { 10870 return Err(crate::device::ExtensionRestrictionError { 10871 extension: "ext_image_robustness", 10872 restriction: crate::device::ExtensionRestriction::NotSupported, 10873 }); 10874 } 10875 if !(api_version >= crate::Version::V1_1 10876 || instance_extensions.khr_get_physical_device_properties2) 10877 { 10878 return Err(crate::device::ExtensionRestrictionError { 10879 extension: "ext_image_robustness", 10880 restriction: crate::device::ExtensionRestriction::Requires( 10881 crate::RequiresOneOf { 10882 api_version: Some(crate::Version::V1_1), 10883 device_extensions: &[], 10884 instance_extensions: &["khr_get_physical_device_properties2"], 10885 ..Default::default() 10886 }, 10887 ), 10888 }); 10889 } 10890 } else { 10891 } 10892 if self.ext_image_view_min_lod { 10893 if !supported.ext_image_view_min_lod { 10894 return Err(crate::device::ExtensionRestrictionError { 10895 extension: "ext_image_view_min_lod", 10896 restriction: crate::device::ExtensionRestriction::NotSupported, 10897 }); 10898 } 10899 if !(api_version >= crate::Version::V1_1 10900 || instance_extensions.khr_get_physical_device_properties2) 10901 { 10902 return Err(crate::device::ExtensionRestrictionError { 10903 extension: "ext_image_view_min_lod", 10904 restriction: crate::device::ExtensionRestriction::Requires( 10905 crate::RequiresOneOf { 10906 api_version: Some(crate::Version::V1_1), 10907 device_extensions: &[], 10908 instance_extensions: &["khr_get_physical_device_properties2"], 10909 ..Default::default() 10910 }, 10911 ), 10912 }); 10913 } 10914 } else { 10915 } 10916 if self.ext_index_type_uint8 { 10917 if !supported.ext_index_type_uint8 { 10918 return Err(crate::device::ExtensionRestrictionError { 10919 extension: "ext_index_type_uint8", 10920 restriction: crate::device::ExtensionRestriction::NotSupported, 10921 }); 10922 } 10923 } else { 10924 } 10925 if self.ext_inline_uniform_block { 10926 if !supported.ext_inline_uniform_block { 10927 return Err(crate::device::ExtensionRestrictionError { 10928 extension: "ext_inline_uniform_block", 10929 restriction: crate::device::ExtensionRestriction::NotSupported, 10930 }); 10931 } 10932 if !(api_version >= crate::Version::V1_1 10933 || instance_extensions.khr_get_physical_device_properties2) 10934 { 10935 return Err(crate::device::ExtensionRestrictionError { 10936 extension: "ext_inline_uniform_block", 10937 restriction: crate::device::ExtensionRestriction::Requires( 10938 crate::RequiresOneOf { 10939 api_version: Some(crate::Version::V1_1), 10940 device_extensions: &[], 10941 instance_extensions: &["khr_get_physical_device_properties2"], 10942 ..Default::default() 10943 }, 10944 ), 10945 }); 10946 } 10947 if !(api_version >= crate::Version::V1_1 || device_extensions.khr_maintenance1) { 10948 return Err(crate::device::ExtensionRestrictionError { 10949 extension: "ext_inline_uniform_block", 10950 restriction: crate::device::ExtensionRestriction::Requires( 10951 crate::RequiresOneOf { 10952 api_version: Some(crate::Version::V1_1), 10953 device_extensions: &["khr_maintenance1"], 10954 instance_extensions: &[], 10955 ..Default::default() 10956 }, 10957 ), 10958 }); 10959 } 10960 } else { 10961 } 10962 if self.ext_legacy_dithering { 10963 if !supported.ext_legacy_dithering { 10964 return Err(crate::device::ExtensionRestrictionError { 10965 extension: "ext_legacy_dithering", 10966 restriction: crate::device::ExtensionRestriction::NotSupported, 10967 }); 10968 } 10969 if !(api_version >= crate::Version::V1_1 10970 || instance_extensions.khr_get_physical_device_properties2) 10971 { 10972 return Err(crate::device::ExtensionRestrictionError { 10973 extension: "ext_legacy_dithering", 10974 restriction: crate::device::ExtensionRestriction::Requires( 10975 crate::RequiresOneOf { 10976 api_version: Some(crate::Version::V1_1), 10977 device_extensions: &[], 10978 instance_extensions: &["khr_get_physical_device_properties2"], 10979 ..Default::default() 10980 }, 10981 ), 10982 }); 10983 } 10984 } else { 10985 } 10986 if self.ext_line_rasterization { 10987 if !supported.ext_line_rasterization { 10988 return Err(crate::device::ExtensionRestrictionError { 10989 extension: "ext_line_rasterization", 10990 restriction: crate::device::ExtensionRestriction::NotSupported, 10991 }); 10992 } 10993 if !(api_version >= crate::Version::V1_1 10994 || instance_extensions.khr_get_physical_device_properties2) 10995 { 10996 return Err(crate::device::ExtensionRestrictionError { 10997 extension: "ext_line_rasterization", 10998 restriction: crate::device::ExtensionRestriction::Requires( 10999 crate::RequiresOneOf { 11000 api_version: Some(crate::Version::V1_1), 11001 device_extensions: &[], 11002 instance_extensions: &["khr_get_physical_device_properties2"], 11003 ..Default::default() 11004 }, 11005 ), 11006 }); 11007 } 11008 } else { 11009 } 11010 if self.ext_load_store_op_none { 11011 if !supported.ext_load_store_op_none { 11012 return Err(crate::device::ExtensionRestrictionError { 11013 extension: "ext_load_store_op_none", 11014 restriction: crate::device::ExtensionRestriction::NotSupported, 11015 }); 11016 } 11017 } else { 11018 } 11019 if self.ext_memory_budget { 11020 if !supported.ext_memory_budget { 11021 return Err(crate::device::ExtensionRestrictionError { 11022 extension: "ext_memory_budget", 11023 restriction: crate::device::ExtensionRestriction::NotSupported, 11024 }); 11025 } 11026 if !(api_version >= crate::Version::V1_1 11027 || instance_extensions.khr_get_physical_device_properties2) 11028 { 11029 return Err(crate::device::ExtensionRestrictionError { 11030 extension: "ext_memory_budget", 11031 restriction: crate::device::ExtensionRestriction::Requires( 11032 crate::RequiresOneOf { 11033 api_version: Some(crate::Version::V1_1), 11034 device_extensions: &[], 11035 instance_extensions: &["khr_get_physical_device_properties2"], 11036 ..Default::default() 11037 }, 11038 ), 11039 }); 11040 } 11041 } else { 11042 } 11043 if self.ext_memory_priority { 11044 if !supported.ext_memory_priority { 11045 return Err(crate::device::ExtensionRestrictionError { 11046 extension: "ext_memory_priority", 11047 restriction: crate::device::ExtensionRestriction::NotSupported, 11048 }); 11049 } 11050 if !(api_version >= crate::Version::V1_1 11051 || instance_extensions.khr_get_physical_device_properties2) 11052 { 11053 return Err(crate::device::ExtensionRestrictionError { 11054 extension: "ext_memory_priority", 11055 restriction: crate::device::ExtensionRestriction::Requires( 11056 crate::RequiresOneOf { 11057 api_version: Some(crate::Version::V1_1), 11058 device_extensions: &[], 11059 instance_extensions: &["khr_get_physical_device_properties2"], 11060 ..Default::default() 11061 }, 11062 ), 11063 }); 11064 } 11065 } else { 11066 } 11067 if self.ext_mesh_shader { 11068 if !supported.ext_mesh_shader { 11069 return Err(crate::device::ExtensionRestrictionError { 11070 extension: "ext_mesh_shader", 11071 restriction: crate::device::ExtensionRestriction::NotSupported, 11072 }); 11073 } 11074 if !(api_version >= crate::Version::V1_1) { 11075 return Err(crate::device::ExtensionRestrictionError { 11076 extension: "ext_mesh_shader", 11077 restriction: crate::device::ExtensionRestriction::Requires( 11078 crate::RequiresOneOf { 11079 api_version: Some(crate::Version::V1_1), 11080 device_extensions: &[], 11081 instance_extensions: &[], 11082 ..Default::default() 11083 }, 11084 ), 11085 }); 11086 } 11087 if !(api_version >= crate::Version::V1_1 11088 || instance_extensions.khr_get_physical_device_properties2) 11089 { 11090 return Err(crate::device::ExtensionRestrictionError { 11091 extension: "ext_mesh_shader", 11092 restriction: crate::device::ExtensionRestriction::Requires( 11093 crate::RequiresOneOf { 11094 api_version: Some(crate::Version::V1_1), 11095 device_extensions: &[], 11096 instance_extensions: &["khr_get_physical_device_properties2"], 11097 ..Default::default() 11098 }, 11099 ), 11100 }); 11101 } 11102 if !(api_version >= crate::Version::V1_2 || device_extensions.khr_spirv_1_4) { 11103 return Err(crate::device::ExtensionRestrictionError { 11104 extension: "ext_mesh_shader", 11105 restriction: crate::device::ExtensionRestriction::Requires( 11106 crate::RequiresOneOf { 11107 api_version: Some(crate::Version::V1_2), 11108 device_extensions: &["khr_spirv_1_4"], 11109 instance_extensions: &[], 11110 ..Default::default() 11111 }, 11112 ), 11113 }); 11114 } 11115 } else { 11116 } 11117 if self.ext_metal_objects { 11118 if !supported.ext_metal_objects { 11119 return Err(crate::device::ExtensionRestrictionError { 11120 extension: "ext_metal_objects", 11121 restriction: crate::device::ExtensionRestriction::NotSupported, 11122 }); 11123 } 11124 } else { 11125 } 11126 if self.ext_multi_draw { 11127 if !supported.ext_multi_draw { 11128 return Err(crate::device::ExtensionRestrictionError { 11129 extension: "ext_multi_draw", 11130 restriction: crate::device::ExtensionRestriction::NotSupported, 11131 }); 11132 } 11133 } else { 11134 } 11135 if self.ext_multisampled_render_to_single_sampled { 11136 if !supported.ext_multisampled_render_to_single_sampled { 11137 return Err(crate::device::ExtensionRestrictionError { 11138 extension: "ext_multisampled_render_to_single_sampled", 11139 restriction: crate::device::ExtensionRestriction::NotSupported, 11140 }); 11141 } 11142 if !(api_version >= crate::Version::V1_2 || device_extensions.khr_create_renderpass2) { 11143 return Err(crate::device::ExtensionRestrictionError { 11144 extension: "ext_multisampled_render_to_single_sampled", 11145 restriction: crate::device::ExtensionRestriction::Requires( 11146 crate::RequiresOneOf { 11147 api_version: Some(crate::Version::V1_2), 11148 device_extensions: &["khr_create_renderpass2"], 11149 instance_extensions: &[], 11150 ..Default::default() 11151 }, 11152 ), 11153 }); 11154 } 11155 if !(api_version >= crate::Version::V1_2 || device_extensions.khr_depth_stencil_resolve) 11156 { 11157 return Err(crate::device::ExtensionRestrictionError { 11158 extension: "ext_multisampled_render_to_single_sampled", 11159 restriction: crate::device::ExtensionRestriction::Requires( 11160 crate::RequiresOneOf { 11161 api_version: Some(crate::Version::V1_2), 11162 device_extensions: &["khr_depth_stencil_resolve"], 11163 instance_extensions: &[], 11164 ..Default::default() 11165 }, 11166 ), 11167 }); 11168 } 11169 } else { 11170 } 11171 if self.ext_mutable_descriptor_type { 11172 if !supported.ext_mutable_descriptor_type { 11173 return Err(crate::device::ExtensionRestrictionError { 11174 extension: "ext_mutable_descriptor_type", 11175 restriction: crate::device::ExtensionRestriction::NotSupported, 11176 }); 11177 } 11178 if !(api_version >= crate::Version::V1_1 || device_extensions.khr_maintenance3) { 11179 return Err(crate::device::ExtensionRestrictionError { 11180 extension: "ext_mutable_descriptor_type", 11181 restriction: crate::device::ExtensionRestriction::Requires( 11182 crate::RequiresOneOf { 11183 api_version: Some(crate::Version::V1_1), 11184 device_extensions: &["khr_maintenance3"], 11185 instance_extensions: &[], 11186 ..Default::default() 11187 }, 11188 ), 11189 }); 11190 } 11191 } else { 11192 } 11193 if self.ext_non_seamless_cube_map { 11194 if !supported.ext_non_seamless_cube_map { 11195 return Err(crate::device::ExtensionRestrictionError { 11196 extension: "ext_non_seamless_cube_map", 11197 restriction: crate::device::ExtensionRestriction::NotSupported, 11198 }); 11199 } 11200 } else { 11201 } 11202 if self.ext_opacity_micromap { 11203 if !supported.ext_opacity_micromap { 11204 return Err(crate::device::ExtensionRestrictionError { 11205 extension: "ext_opacity_micromap", 11206 restriction: crate::device::ExtensionRestriction::NotSupported, 11207 }); 11208 } 11209 if !(device_extensions.khr_acceleration_structure) { 11210 return Err(crate::device::ExtensionRestrictionError { 11211 extension: "ext_opacity_micromap", 11212 restriction: crate::device::ExtensionRestriction::Requires( 11213 crate::RequiresOneOf { 11214 api_version: None, 11215 device_extensions: &["khr_acceleration_structure"], 11216 instance_extensions: &[], 11217 ..Default::default() 11218 }, 11219 ), 11220 }); 11221 } 11222 if !(api_version >= crate::Version::V1_3 || device_extensions.khr_synchronization2) { 11223 return Err(crate::device::ExtensionRestrictionError { 11224 extension: "ext_opacity_micromap", 11225 restriction: crate::device::ExtensionRestriction::Requires( 11226 crate::RequiresOneOf { 11227 api_version: Some(crate::Version::V1_3), 11228 device_extensions: &["khr_synchronization2"], 11229 instance_extensions: &[], 11230 ..Default::default() 11231 }, 11232 ), 11233 }); 11234 } 11235 } else { 11236 } 11237 if self.ext_pageable_device_local_memory { 11238 if !supported.ext_pageable_device_local_memory { 11239 return Err(crate::device::ExtensionRestrictionError { 11240 extension: "ext_pageable_device_local_memory", 11241 restriction: crate::device::ExtensionRestriction::NotSupported, 11242 }); 11243 } 11244 if !(device_extensions.ext_memory_priority) { 11245 return Err(crate::device::ExtensionRestrictionError { 11246 extension: "ext_pageable_device_local_memory", 11247 restriction: crate::device::ExtensionRestriction::Requires( 11248 crate::RequiresOneOf { 11249 api_version: None, 11250 device_extensions: &["ext_memory_priority"], 11251 instance_extensions: &[], 11252 ..Default::default() 11253 }, 11254 ), 11255 }); 11256 } 11257 } else { 11258 } 11259 if self.ext_pci_bus_info { 11260 if !supported.ext_pci_bus_info { 11261 return Err(crate::device::ExtensionRestrictionError { 11262 extension: "ext_pci_bus_info", 11263 restriction: crate::device::ExtensionRestriction::NotSupported, 11264 }); 11265 } 11266 if !(api_version >= crate::Version::V1_1 11267 || instance_extensions.khr_get_physical_device_properties2) 11268 { 11269 return Err(crate::device::ExtensionRestrictionError { 11270 extension: "ext_pci_bus_info", 11271 restriction: crate::device::ExtensionRestriction::Requires( 11272 crate::RequiresOneOf { 11273 api_version: Some(crate::Version::V1_1), 11274 device_extensions: &[], 11275 instance_extensions: &["khr_get_physical_device_properties2"], 11276 ..Default::default() 11277 }, 11278 ), 11279 }); 11280 } 11281 } else { 11282 } 11283 if self.ext_physical_device_drm { 11284 if !supported.ext_physical_device_drm { 11285 return Err(crate::device::ExtensionRestrictionError { 11286 extension: "ext_physical_device_drm", 11287 restriction: crate::device::ExtensionRestriction::NotSupported, 11288 }); 11289 } 11290 if !(api_version >= crate::Version::V1_1 11291 || instance_extensions.khr_get_physical_device_properties2) 11292 { 11293 return Err(crate::device::ExtensionRestrictionError { 11294 extension: "ext_physical_device_drm", 11295 restriction: crate::device::ExtensionRestriction::Requires( 11296 crate::RequiresOneOf { 11297 api_version: Some(crate::Version::V1_1), 11298 device_extensions: &[], 11299 instance_extensions: &["khr_get_physical_device_properties2"], 11300 ..Default::default() 11301 }, 11302 ), 11303 }); 11304 } 11305 } else { 11306 } 11307 if self.ext_pipeline_creation_cache_control { 11308 if !supported.ext_pipeline_creation_cache_control { 11309 return Err(crate::device::ExtensionRestrictionError { 11310 extension: "ext_pipeline_creation_cache_control", 11311 restriction: crate::device::ExtensionRestriction::NotSupported, 11312 }); 11313 } 11314 } else { 11315 } 11316 if self.ext_pipeline_creation_feedback { 11317 if !supported.ext_pipeline_creation_feedback { 11318 return Err(crate::device::ExtensionRestrictionError { 11319 extension: "ext_pipeline_creation_feedback", 11320 restriction: crate::device::ExtensionRestriction::NotSupported, 11321 }); 11322 } 11323 } else { 11324 } 11325 if self.ext_pipeline_properties { 11326 if !supported.ext_pipeline_properties { 11327 return Err(crate::device::ExtensionRestrictionError { 11328 extension: "ext_pipeline_properties", 11329 restriction: crate::device::ExtensionRestriction::NotSupported, 11330 }); 11331 } 11332 if !(api_version >= crate::Version::V1_1 11333 || instance_extensions.khr_get_physical_device_properties2) 11334 { 11335 return Err(crate::device::ExtensionRestrictionError { 11336 extension: "ext_pipeline_properties", 11337 restriction: crate::device::ExtensionRestriction::Requires( 11338 crate::RequiresOneOf { 11339 api_version: Some(crate::Version::V1_1), 11340 device_extensions: &[], 11341 instance_extensions: &["khr_get_physical_device_properties2"], 11342 ..Default::default() 11343 }, 11344 ), 11345 }); 11346 } 11347 } else { 11348 } 11349 if self.ext_pipeline_protected_access { 11350 if !supported.ext_pipeline_protected_access { 11351 return Err(crate::device::ExtensionRestrictionError { 11352 extension: "ext_pipeline_protected_access", 11353 restriction: crate::device::ExtensionRestriction::NotSupported, 11354 }); 11355 } 11356 if !(api_version >= crate::Version::V1_1 11357 || instance_extensions.khr_get_physical_device_properties2) 11358 { 11359 return Err(crate::device::ExtensionRestrictionError { 11360 extension: "ext_pipeline_protected_access", 11361 restriction: crate::device::ExtensionRestriction::Requires( 11362 crate::RequiresOneOf { 11363 api_version: Some(crate::Version::V1_1), 11364 device_extensions: &[], 11365 instance_extensions: &["khr_get_physical_device_properties2"], 11366 ..Default::default() 11367 }, 11368 ), 11369 }); 11370 } 11371 } else { 11372 } 11373 if self.ext_pipeline_robustness { 11374 if !supported.ext_pipeline_robustness { 11375 return Err(crate::device::ExtensionRestrictionError { 11376 extension: "ext_pipeline_robustness", 11377 restriction: crate::device::ExtensionRestriction::NotSupported, 11378 }); 11379 } 11380 if !(api_version >= crate::Version::V1_1 11381 || instance_extensions.khr_get_physical_device_properties2) 11382 { 11383 return Err(crate::device::ExtensionRestrictionError { 11384 extension: "ext_pipeline_robustness", 11385 restriction: crate::device::ExtensionRestriction::Requires( 11386 crate::RequiresOneOf { 11387 api_version: Some(crate::Version::V1_1), 11388 device_extensions: &[], 11389 instance_extensions: &["khr_get_physical_device_properties2"], 11390 ..Default::default() 11391 }, 11392 ), 11393 }); 11394 } 11395 } else { 11396 } 11397 if self.ext_post_depth_coverage { 11398 if !supported.ext_post_depth_coverage { 11399 return Err(crate::device::ExtensionRestrictionError { 11400 extension: "ext_post_depth_coverage", 11401 restriction: crate::device::ExtensionRestriction::NotSupported, 11402 }); 11403 } 11404 } else { 11405 } 11406 if self.ext_primitive_topology_list_restart { 11407 if !supported.ext_primitive_topology_list_restart { 11408 return Err(crate::device::ExtensionRestrictionError { 11409 extension: "ext_primitive_topology_list_restart", 11410 restriction: crate::device::ExtensionRestriction::NotSupported, 11411 }); 11412 } 11413 } else { 11414 } 11415 if self.ext_primitives_generated_query { 11416 if !supported.ext_primitives_generated_query { 11417 return Err(crate::device::ExtensionRestrictionError { 11418 extension: "ext_primitives_generated_query", 11419 restriction: crate::device::ExtensionRestriction::NotSupported, 11420 }); 11421 } 11422 if !(device_extensions.ext_transform_feedback) { 11423 return Err(crate::device::ExtensionRestrictionError { 11424 extension: "ext_primitives_generated_query", 11425 restriction: crate::device::ExtensionRestriction::Requires( 11426 crate::RequiresOneOf { 11427 api_version: None, 11428 device_extensions: &["ext_transform_feedback"], 11429 instance_extensions: &[], 11430 ..Default::default() 11431 }, 11432 ), 11433 }); 11434 } 11435 } else { 11436 } 11437 if self.ext_private_data { 11438 if !supported.ext_private_data { 11439 return Err(crate::device::ExtensionRestrictionError { 11440 extension: "ext_private_data", 11441 restriction: crate::device::ExtensionRestriction::NotSupported, 11442 }); 11443 } 11444 } else { 11445 } 11446 if self.ext_provoking_vertex { 11447 if !supported.ext_provoking_vertex { 11448 return Err(crate::device::ExtensionRestrictionError { 11449 extension: "ext_provoking_vertex", 11450 restriction: crate::device::ExtensionRestriction::NotSupported, 11451 }); 11452 } 11453 if !(api_version >= crate::Version::V1_1 11454 || instance_extensions.khr_get_physical_device_properties2) 11455 { 11456 return Err(crate::device::ExtensionRestrictionError { 11457 extension: "ext_provoking_vertex", 11458 restriction: crate::device::ExtensionRestriction::Requires( 11459 crate::RequiresOneOf { 11460 api_version: Some(crate::Version::V1_1), 11461 device_extensions: &[], 11462 instance_extensions: &["khr_get_physical_device_properties2"], 11463 ..Default::default() 11464 }, 11465 ), 11466 }); 11467 } 11468 } else { 11469 } 11470 if self.ext_queue_family_foreign { 11471 if !supported.ext_queue_family_foreign { 11472 return Err(crate::device::ExtensionRestrictionError { 11473 extension: "ext_queue_family_foreign", 11474 restriction: crate::device::ExtensionRestriction::NotSupported, 11475 }); 11476 } 11477 if !(api_version >= crate::Version::V1_1 || device_extensions.khr_external_memory) { 11478 return Err(crate::device::ExtensionRestrictionError { 11479 extension: "ext_queue_family_foreign", 11480 restriction: crate::device::ExtensionRestriction::Requires( 11481 crate::RequiresOneOf { 11482 api_version: Some(crate::Version::V1_1), 11483 device_extensions: &["khr_external_memory"], 11484 instance_extensions: &[], 11485 ..Default::default() 11486 }, 11487 ), 11488 }); 11489 } 11490 } else { 11491 } 11492 if self.ext_rasterization_order_attachment_access { 11493 if !supported.ext_rasterization_order_attachment_access { 11494 return Err(crate::device::ExtensionRestrictionError { 11495 extension: "ext_rasterization_order_attachment_access", 11496 restriction: crate::device::ExtensionRestriction::NotSupported, 11497 }); 11498 } 11499 if !(api_version >= crate::Version::V1_1 11500 || instance_extensions.khr_get_physical_device_properties2) 11501 { 11502 return Err(crate::device::ExtensionRestrictionError { 11503 extension: "ext_rasterization_order_attachment_access", 11504 restriction: crate::device::ExtensionRestriction::Requires( 11505 crate::RequiresOneOf { 11506 api_version: Some(crate::Version::V1_1), 11507 device_extensions: &[], 11508 instance_extensions: &["khr_get_physical_device_properties2"], 11509 ..Default::default() 11510 }, 11511 ), 11512 }); 11513 } 11514 } else { 11515 } 11516 if self.ext_rgba10x6_formats { 11517 if !supported.ext_rgba10x6_formats { 11518 return Err(crate::device::ExtensionRestrictionError { 11519 extension: "ext_rgba10x6_formats", 11520 restriction: crate::device::ExtensionRestriction::NotSupported, 11521 }); 11522 } 11523 if !(api_version >= crate::Version::V1_1 11524 || device_extensions.khr_sampler_ycbcr_conversion) 11525 { 11526 return Err(crate::device::ExtensionRestrictionError { 11527 extension: "ext_rgba10x6_formats", 11528 restriction: crate::device::ExtensionRestriction::Requires( 11529 crate::RequiresOneOf { 11530 api_version: Some(crate::Version::V1_1), 11531 device_extensions: &["khr_sampler_ycbcr_conversion"], 11532 instance_extensions: &[], 11533 ..Default::default() 11534 }, 11535 ), 11536 }); 11537 } 11538 } else { 11539 } 11540 if self.ext_robustness2 { 11541 if !supported.ext_robustness2 { 11542 return Err(crate::device::ExtensionRestrictionError { 11543 extension: "ext_robustness2", 11544 restriction: crate::device::ExtensionRestriction::NotSupported, 11545 }); 11546 } 11547 } else { 11548 } 11549 if self.ext_sample_locations { 11550 if !supported.ext_sample_locations { 11551 return Err(crate::device::ExtensionRestrictionError { 11552 extension: "ext_sample_locations", 11553 restriction: crate::device::ExtensionRestriction::NotSupported, 11554 }); 11555 } 11556 if !(api_version >= crate::Version::V1_1 11557 || instance_extensions.khr_get_physical_device_properties2) 11558 { 11559 return Err(crate::device::ExtensionRestrictionError { 11560 extension: "ext_sample_locations", 11561 restriction: crate::device::ExtensionRestriction::Requires( 11562 crate::RequiresOneOf { 11563 api_version: Some(crate::Version::V1_1), 11564 device_extensions: &[], 11565 instance_extensions: &["khr_get_physical_device_properties2"], 11566 ..Default::default() 11567 }, 11568 ), 11569 }); 11570 } 11571 } else { 11572 } 11573 if self.ext_sampler_filter_minmax { 11574 if !supported.ext_sampler_filter_minmax { 11575 return Err(crate::device::ExtensionRestrictionError { 11576 extension: "ext_sampler_filter_minmax", 11577 restriction: crate::device::ExtensionRestriction::NotSupported, 11578 }); 11579 } 11580 if !(api_version >= crate::Version::V1_1 11581 || instance_extensions.khr_get_physical_device_properties2) 11582 { 11583 return Err(crate::device::ExtensionRestrictionError { 11584 extension: "ext_sampler_filter_minmax", 11585 restriction: crate::device::ExtensionRestriction::Requires( 11586 crate::RequiresOneOf { 11587 api_version: Some(crate::Version::V1_1), 11588 device_extensions: &[], 11589 instance_extensions: &["khr_get_physical_device_properties2"], 11590 ..Default::default() 11591 }, 11592 ), 11593 }); 11594 } 11595 } else { 11596 } 11597 if self.ext_scalar_block_layout { 11598 if !supported.ext_scalar_block_layout { 11599 return Err(crate::device::ExtensionRestrictionError { 11600 extension: "ext_scalar_block_layout", 11601 restriction: crate::device::ExtensionRestriction::NotSupported, 11602 }); 11603 } 11604 if !(api_version >= crate::Version::V1_1 11605 || instance_extensions.khr_get_physical_device_properties2) 11606 { 11607 return Err(crate::device::ExtensionRestrictionError { 11608 extension: "ext_scalar_block_layout", 11609 restriction: crate::device::ExtensionRestriction::Requires( 11610 crate::RequiresOneOf { 11611 api_version: Some(crate::Version::V1_1), 11612 device_extensions: &[], 11613 instance_extensions: &["khr_get_physical_device_properties2"], 11614 ..Default::default() 11615 }, 11616 ), 11617 }); 11618 } 11619 } else { 11620 } 11621 if self.ext_separate_stencil_usage { 11622 if !supported.ext_separate_stencil_usage { 11623 return Err(crate::device::ExtensionRestrictionError { 11624 extension: "ext_separate_stencil_usage", 11625 restriction: crate::device::ExtensionRestriction::NotSupported, 11626 }); 11627 } 11628 } else { 11629 } 11630 if self.ext_shader_atomic_float { 11631 if !supported.ext_shader_atomic_float { 11632 return Err(crate::device::ExtensionRestrictionError { 11633 extension: "ext_shader_atomic_float", 11634 restriction: crate::device::ExtensionRestriction::NotSupported, 11635 }); 11636 } 11637 if !(api_version >= crate::Version::V1_1 11638 || instance_extensions.khr_get_physical_device_properties2) 11639 { 11640 return Err(crate::device::ExtensionRestrictionError { 11641 extension: "ext_shader_atomic_float", 11642 restriction: crate::device::ExtensionRestriction::Requires( 11643 crate::RequiresOneOf { 11644 api_version: Some(crate::Version::V1_1), 11645 device_extensions: &[], 11646 instance_extensions: &["khr_get_physical_device_properties2"], 11647 ..Default::default() 11648 }, 11649 ), 11650 }); 11651 } 11652 } else { 11653 } 11654 if self.ext_shader_atomic_float2 { 11655 if !supported.ext_shader_atomic_float2 { 11656 return Err(crate::device::ExtensionRestrictionError { 11657 extension: "ext_shader_atomic_float2", 11658 restriction: crate::device::ExtensionRestriction::NotSupported, 11659 }); 11660 } 11661 if !(device_extensions.ext_shader_atomic_float) { 11662 return Err(crate::device::ExtensionRestrictionError { 11663 extension: "ext_shader_atomic_float2", 11664 restriction: crate::device::ExtensionRestriction::Requires( 11665 crate::RequiresOneOf { 11666 api_version: None, 11667 device_extensions: &["ext_shader_atomic_float"], 11668 instance_extensions: &[], 11669 ..Default::default() 11670 }, 11671 ), 11672 }); 11673 } 11674 } else { 11675 } 11676 if self.ext_shader_demote_to_helper_invocation { 11677 if !supported.ext_shader_demote_to_helper_invocation { 11678 return Err(crate::device::ExtensionRestrictionError { 11679 extension: "ext_shader_demote_to_helper_invocation", 11680 restriction: crate::device::ExtensionRestriction::NotSupported, 11681 }); 11682 } 11683 if !(api_version >= crate::Version::V1_1 11684 || instance_extensions.khr_get_physical_device_properties2) 11685 { 11686 return Err(crate::device::ExtensionRestrictionError { 11687 extension: "ext_shader_demote_to_helper_invocation", 11688 restriction: crate::device::ExtensionRestriction::Requires( 11689 crate::RequiresOneOf { 11690 api_version: Some(crate::Version::V1_1), 11691 device_extensions: &[], 11692 instance_extensions: &["khr_get_physical_device_properties2"], 11693 ..Default::default() 11694 }, 11695 ), 11696 }); 11697 } 11698 } else { 11699 } 11700 if self.ext_shader_image_atomic_int64 { 11701 if !supported.ext_shader_image_atomic_int64 { 11702 return Err(crate::device::ExtensionRestrictionError { 11703 extension: "ext_shader_image_atomic_int64", 11704 restriction: crate::device::ExtensionRestriction::NotSupported, 11705 }); 11706 } 11707 if !(api_version >= crate::Version::V1_1 11708 || instance_extensions.khr_get_physical_device_properties2) 11709 { 11710 return Err(crate::device::ExtensionRestrictionError { 11711 extension: "ext_shader_image_atomic_int64", 11712 restriction: crate::device::ExtensionRestriction::Requires( 11713 crate::RequiresOneOf { 11714 api_version: Some(crate::Version::V1_1), 11715 device_extensions: &[], 11716 instance_extensions: &["khr_get_physical_device_properties2"], 11717 ..Default::default() 11718 }, 11719 ), 11720 }); 11721 } 11722 } else { 11723 } 11724 if self.ext_shader_module_identifier { 11725 if !supported.ext_shader_module_identifier { 11726 return Err(crate::device::ExtensionRestrictionError { 11727 extension: "ext_shader_module_identifier", 11728 restriction: crate::device::ExtensionRestriction::NotSupported, 11729 }); 11730 } 11731 if !(api_version >= crate::Version::V1_1 11732 || instance_extensions.khr_get_physical_device_properties2) 11733 { 11734 return Err(crate::device::ExtensionRestrictionError { 11735 extension: "ext_shader_module_identifier", 11736 restriction: crate::device::ExtensionRestriction::Requires( 11737 crate::RequiresOneOf { 11738 api_version: Some(crate::Version::V1_1), 11739 device_extensions: &[], 11740 instance_extensions: &["khr_get_physical_device_properties2"], 11741 ..Default::default() 11742 }, 11743 ), 11744 }); 11745 } 11746 if !(api_version >= crate::Version::V1_3 11747 || device_extensions.ext_pipeline_creation_cache_control) 11748 { 11749 return Err(crate::device::ExtensionRestrictionError { 11750 extension: "ext_shader_module_identifier", 11751 restriction: crate::device::ExtensionRestriction::Requires( 11752 crate::RequiresOneOf { 11753 api_version: Some(crate::Version::V1_3), 11754 device_extensions: &["ext_pipeline_creation_cache_control"], 11755 instance_extensions: &[], 11756 ..Default::default() 11757 }, 11758 ), 11759 }); 11760 } 11761 } else { 11762 } 11763 if self.ext_shader_stencil_export { 11764 if !supported.ext_shader_stencil_export { 11765 return Err(crate::device::ExtensionRestrictionError { 11766 extension: "ext_shader_stencil_export", 11767 restriction: crate::device::ExtensionRestriction::NotSupported, 11768 }); 11769 } 11770 } else { 11771 } 11772 if self.ext_shader_subgroup_ballot { 11773 if !supported.ext_shader_subgroup_ballot { 11774 return Err(crate::device::ExtensionRestrictionError { 11775 extension: "ext_shader_subgroup_ballot", 11776 restriction: crate::device::ExtensionRestriction::NotSupported, 11777 }); 11778 } 11779 } else { 11780 } 11781 if self.ext_shader_subgroup_vote { 11782 if !supported.ext_shader_subgroup_vote { 11783 return Err(crate::device::ExtensionRestrictionError { 11784 extension: "ext_shader_subgroup_vote", 11785 restriction: crate::device::ExtensionRestriction::NotSupported, 11786 }); 11787 } 11788 } else { 11789 } 11790 if self.ext_shader_viewport_index_layer { 11791 if !supported.ext_shader_viewport_index_layer { 11792 return Err(crate::device::ExtensionRestrictionError { 11793 extension: "ext_shader_viewport_index_layer", 11794 restriction: crate::device::ExtensionRestriction::NotSupported, 11795 }); 11796 } 11797 } else { 11798 } 11799 if self.ext_subgroup_size_control { 11800 if !supported.ext_subgroup_size_control { 11801 return Err(crate::device::ExtensionRestrictionError { 11802 extension: "ext_subgroup_size_control", 11803 restriction: crate::device::ExtensionRestriction::NotSupported, 11804 }); 11805 } 11806 if !(api_version >= crate::Version::V1_1) { 11807 return Err(crate::device::ExtensionRestrictionError { 11808 extension: "ext_subgroup_size_control", 11809 restriction: crate::device::ExtensionRestriction::Requires( 11810 crate::RequiresOneOf { 11811 api_version: Some(crate::Version::V1_1), 11812 device_extensions: &[], 11813 instance_extensions: &[], 11814 ..Default::default() 11815 }, 11816 ), 11817 }); 11818 } 11819 } else { 11820 } 11821 if self.ext_subpass_merge_feedback { 11822 if !supported.ext_subpass_merge_feedback { 11823 return Err(crate::device::ExtensionRestrictionError { 11824 extension: "ext_subpass_merge_feedback", 11825 restriction: crate::device::ExtensionRestriction::NotSupported, 11826 }); 11827 } 11828 } else { 11829 } 11830 if self.ext_swapchain_maintenance1 { 11831 if !supported.ext_swapchain_maintenance1 { 11832 return Err(crate::device::ExtensionRestrictionError { 11833 extension: "ext_swapchain_maintenance1", 11834 restriction: crate::device::ExtensionRestriction::NotSupported, 11835 }); 11836 } 11837 if !(device_extensions.khr_swapchain) { 11838 return Err(crate::device::ExtensionRestrictionError { 11839 extension: "ext_swapchain_maintenance1", 11840 restriction: crate::device::ExtensionRestriction::Requires( 11841 crate::RequiresOneOf { 11842 api_version: None, 11843 device_extensions: &["khr_swapchain"], 11844 instance_extensions: &[], 11845 ..Default::default() 11846 }, 11847 ), 11848 }); 11849 } 11850 if !(instance_extensions.ext_surface_maintenance1) { 11851 return Err(crate::device::ExtensionRestrictionError { 11852 extension: "ext_swapchain_maintenance1", 11853 restriction: crate::device::ExtensionRestriction::Requires( 11854 crate::RequiresOneOf { 11855 api_version: None, 11856 device_extensions: &[], 11857 instance_extensions: &["ext_surface_maintenance1"], 11858 ..Default::default() 11859 }, 11860 ), 11861 }); 11862 } 11863 if !(api_version >= crate::Version::V1_1 11864 || instance_extensions.khr_get_physical_device_properties2) 11865 { 11866 return Err(crate::device::ExtensionRestrictionError { 11867 extension: "ext_swapchain_maintenance1", 11868 restriction: crate::device::ExtensionRestriction::Requires( 11869 crate::RequiresOneOf { 11870 api_version: Some(crate::Version::V1_1), 11871 device_extensions: &[], 11872 instance_extensions: &["khr_get_physical_device_properties2"], 11873 ..Default::default() 11874 }, 11875 ), 11876 }); 11877 } 11878 } else { 11879 } 11880 if self.ext_texel_buffer_alignment { 11881 if !supported.ext_texel_buffer_alignment { 11882 return Err(crate::device::ExtensionRestrictionError { 11883 extension: "ext_texel_buffer_alignment", 11884 restriction: crate::device::ExtensionRestriction::NotSupported, 11885 }); 11886 } 11887 if !(api_version >= crate::Version::V1_1 11888 || instance_extensions.khr_get_physical_device_properties2) 11889 { 11890 return Err(crate::device::ExtensionRestrictionError { 11891 extension: "ext_texel_buffer_alignment", 11892 restriction: crate::device::ExtensionRestriction::Requires( 11893 crate::RequiresOneOf { 11894 api_version: Some(crate::Version::V1_1), 11895 device_extensions: &[], 11896 instance_extensions: &["khr_get_physical_device_properties2"], 11897 ..Default::default() 11898 }, 11899 ), 11900 }); 11901 } 11902 } else { 11903 } 11904 if self.ext_texture_compression_astc_hdr { 11905 if !supported.ext_texture_compression_astc_hdr { 11906 return Err(crate::device::ExtensionRestrictionError { 11907 extension: "ext_texture_compression_astc_hdr", 11908 restriction: crate::device::ExtensionRestriction::NotSupported, 11909 }); 11910 } 11911 if !(api_version >= crate::Version::V1_1 11912 || instance_extensions.khr_get_physical_device_properties2) 11913 { 11914 return Err(crate::device::ExtensionRestrictionError { 11915 extension: "ext_texture_compression_astc_hdr", 11916 restriction: crate::device::ExtensionRestriction::Requires( 11917 crate::RequiresOneOf { 11918 api_version: Some(crate::Version::V1_1), 11919 device_extensions: &[], 11920 instance_extensions: &["khr_get_physical_device_properties2"], 11921 ..Default::default() 11922 }, 11923 ), 11924 }); 11925 } 11926 } else { 11927 } 11928 if self.ext_tooling_info { 11929 if !supported.ext_tooling_info { 11930 return Err(crate::device::ExtensionRestrictionError { 11931 extension: "ext_tooling_info", 11932 restriction: crate::device::ExtensionRestriction::NotSupported, 11933 }); 11934 } 11935 } else { 11936 } 11937 if self.ext_transform_feedback { 11938 if !supported.ext_transform_feedback { 11939 return Err(crate::device::ExtensionRestrictionError { 11940 extension: "ext_transform_feedback", 11941 restriction: crate::device::ExtensionRestriction::NotSupported, 11942 }); 11943 } 11944 if !(api_version >= crate::Version::V1_1 11945 || instance_extensions.khr_get_physical_device_properties2) 11946 { 11947 return Err(crate::device::ExtensionRestrictionError { 11948 extension: "ext_transform_feedback", 11949 restriction: crate::device::ExtensionRestriction::Requires( 11950 crate::RequiresOneOf { 11951 api_version: Some(crate::Version::V1_1), 11952 device_extensions: &[], 11953 instance_extensions: &["khr_get_physical_device_properties2"], 11954 ..Default::default() 11955 }, 11956 ), 11957 }); 11958 } 11959 } else { 11960 } 11961 if self.ext_validation_cache { 11962 if !supported.ext_validation_cache { 11963 return Err(crate::device::ExtensionRestrictionError { 11964 extension: "ext_validation_cache", 11965 restriction: crate::device::ExtensionRestriction::NotSupported, 11966 }); 11967 } 11968 } else { 11969 } 11970 if self.ext_vertex_attribute_divisor { 11971 if !supported.ext_vertex_attribute_divisor { 11972 return Err(crate::device::ExtensionRestrictionError { 11973 extension: "ext_vertex_attribute_divisor", 11974 restriction: crate::device::ExtensionRestriction::NotSupported, 11975 }); 11976 } 11977 if !(api_version >= crate::Version::V1_1 11978 || instance_extensions.khr_get_physical_device_properties2) 11979 { 11980 return Err(crate::device::ExtensionRestrictionError { 11981 extension: "ext_vertex_attribute_divisor", 11982 restriction: crate::device::ExtensionRestriction::Requires( 11983 crate::RequiresOneOf { 11984 api_version: Some(crate::Version::V1_1), 11985 device_extensions: &[], 11986 instance_extensions: &["khr_get_physical_device_properties2"], 11987 ..Default::default() 11988 }, 11989 ), 11990 }); 11991 } 11992 } else { 11993 } 11994 if self.ext_vertex_input_dynamic_state { 11995 if !supported.ext_vertex_input_dynamic_state { 11996 return Err(crate::device::ExtensionRestrictionError { 11997 extension: "ext_vertex_input_dynamic_state", 11998 restriction: crate::device::ExtensionRestriction::NotSupported, 11999 }); 12000 } 12001 if !(api_version >= crate::Version::V1_1 12002 || instance_extensions.khr_get_physical_device_properties2) 12003 { 12004 return Err(crate::device::ExtensionRestrictionError { 12005 extension: "ext_vertex_input_dynamic_state", 12006 restriction: crate::device::ExtensionRestriction::Requires( 12007 crate::RequiresOneOf { 12008 api_version: Some(crate::Version::V1_1), 12009 device_extensions: &[], 12010 instance_extensions: &["khr_get_physical_device_properties2"], 12011 ..Default::default() 12012 }, 12013 ), 12014 }); 12015 } 12016 } else { 12017 } 12018 if self.ext_video_encode_h264 { 12019 if !supported.ext_video_encode_h264 { 12020 return Err(crate::device::ExtensionRestrictionError { 12021 extension: "ext_video_encode_h264", 12022 restriction: crate::device::ExtensionRestriction::NotSupported, 12023 }); 12024 } 12025 if !(device_extensions.khr_video_encode_queue) { 12026 return Err(crate::device::ExtensionRestrictionError { 12027 extension: "ext_video_encode_h264", 12028 restriction: crate::device::ExtensionRestriction::Requires( 12029 crate::RequiresOneOf { 12030 api_version: None, 12031 device_extensions: &["khr_video_encode_queue"], 12032 instance_extensions: &[], 12033 ..Default::default() 12034 }, 12035 ), 12036 }); 12037 } 12038 } else { 12039 } 12040 if self.ext_video_encode_h265 { 12041 if !supported.ext_video_encode_h265 { 12042 return Err(crate::device::ExtensionRestrictionError { 12043 extension: "ext_video_encode_h265", 12044 restriction: crate::device::ExtensionRestriction::NotSupported, 12045 }); 12046 } 12047 if !(device_extensions.khr_video_encode_queue) { 12048 return Err(crate::device::ExtensionRestrictionError { 12049 extension: "ext_video_encode_h265", 12050 restriction: crate::device::ExtensionRestriction::Requires( 12051 crate::RequiresOneOf { 12052 api_version: None, 12053 device_extensions: &["khr_video_encode_queue"], 12054 instance_extensions: &[], 12055 ..Default::default() 12056 }, 12057 ), 12058 }); 12059 } 12060 } else { 12061 } 12062 if self.ext_ycbcr_2plane_444_formats { 12063 if !supported.ext_ycbcr_2plane_444_formats { 12064 return Err(crate::device::ExtensionRestrictionError { 12065 extension: "ext_ycbcr_2plane_444_formats", 12066 restriction: crate::device::ExtensionRestriction::NotSupported, 12067 }); 12068 } 12069 if !(api_version >= crate::Version::V1_1 12070 || device_extensions.khr_sampler_ycbcr_conversion) 12071 { 12072 return Err(crate::device::ExtensionRestrictionError { 12073 extension: "ext_ycbcr_2plane_444_formats", 12074 restriction: crate::device::ExtensionRestriction::Requires( 12075 crate::RequiresOneOf { 12076 api_version: Some(crate::Version::V1_1), 12077 device_extensions: &["khr_sampler_ycbcr_conversion"], 12078 instance_extensions: &[], 12079 ..Default::default() 12080 }, 12081 ), 12082 }); 12083 } 12084 } else { 12085 } 12086 if self.ext_ycbcr_image_arrays { 12087 if !supported.ext_ycbcr_image_arrays { 12088 return Err(crate::device::ExtensionRestrictionError { 12089 extension: "ext_ycbcr_image_arrays", 12090 restriction: crate::device::ExtensionRestriction::NotSupported, 12091 }); 12092 } 12093 if !(api_version >= crate::Version::V1_1 12094 || device_extensions.khr_sampler_ycbcr_conversion) 12095 { 12096 return Err(crate::device::ExtensionRestrictionError { 12097 extension: "ext_ycbcr_image_arrays", 12098 restriction: crate::device::ExtensionRestriction::Requires( 12099 crate::RequiresOneOf { 12100 api_version: Some(crate::Version::V1_1), 12101 device_extensions: &["khr_sampler_ycbcr_conversion"], 12102 instance_extensions: &[], 12103 ..Default::default() 12104 }, 12105 ), 12106 }); 12107 } 12108 } else { 12109 } 12110 if self.amd_buffer_marker { 12111 if !supported.amd_buffer_marker { 12112 return Err(crate::device::ExtensionRestrictionError { 12113 extension: "amd_buffer_marker", 12114 restriction: crate::device::ExtensionRestriction::NotSupported, 12115 }); 12116 } 12117 } else { 12118 } 12119 if self.amd_device_coherent_memory { 12120 if !supported.amd_device_coherent_memory { 12121 return Err(crate::device::ExtensionRestrictionError { 12122 extension: "amd_device_coherent_memory", 12123 restriction: crate::device::ExtensionRestriction::NotSupported, 12124 }); 12125 } 12126 } else { 12127 } 12128 if self.amd_display_native_hdr { 12129 if !supported.amd_display_native_hdr { 12130 return Err(crate::device::ExtensionRestrictionError { 12131 extension: "amd_display_native_hdr", 12132 restriction: crate::device::ExtensionRestriction::NotSupported, 12133 }); 12134 } 12135 if !(api_version >= crate::Version::V1_1 12136 || instance_extensions.khr_get_physical_device_properties2) 12137 { 12138 return Err(crate::device::ExtensionRestrictionError { 12139 extension: "amd_display_native_hdr", 12140 restriction: crate::device::ExtensionRestriction::Requires( 12141 crate::RequiresOneOf { 12142 api_version: Some(crate::Version::V1_1), 12143 device_extensions: &[], 12144 instance_extensions: &["khr_get_physical_device_properties2"], 12145 ..Default::default() 12146 }, 12147 ), 12148 }); 12149 } 12150 if !(instance_extensions.khr_get_surface_capabilities2) { 12151 return Err(crate::device::ExtensionRestrictionError { 12152 extension: "amd_display_native_hdr", 12153 restriction: crate::device::ExtensionRestriction::Requires( 12154 crate::RequiresOneOf { 12155 api_version: None, 12156 device_extensions: &[], 12157 instance_extensions: &["khr_get_surface_capabilities2"], 12158 ..Default::default() 12159 }, 12160 ), 12161 }); 12162 } 12163 if !(device_extensions.khr_swapchain) { 12164 return Err(crate::device::ExtensionRestrictionError { 12165 extension: "amd_display_native_hdr", 12166 restriction: crate::device::ExtensionRestriction::Requires( 12167 crate::RequiresOneOf { 12168 api_version: None, 12169 device_extensions: &["khr_swapchain"], 12170 instance_extensions: &[], 12171 ..Default::default() 12172 }, 12173 ), 12174 }); 12175 } 12176 } else { 12177 } 12178 if self.amd_draw_indirect_count { 12179 if !supported.amd_draw_indirect_count { 12180 return Err(crate::device::ExtensionRestrictionError { 12181 extension: "amd_draw_indirect_count", 12182 restriction: crate::device::ExtensionRestriction::NotSupported, 12183 }); 12184 } 12185 } else { 12186 } 12187 if self.amd_gcn_shader { 12188 if !supported.amd_gcn_shader { 12189 return Err(crate::device::ExtensionRestrictionError { 12190 extension: "amd_gcn_shader", 12191 restriction: crate::device::ExtensionRestriction::NotSupported, 12192 }); 12193 } 12194 } else { 12195 } 12196 if self.amd_gpu_shader_half_float { 12197 if !supported.amd_gpu_shader_half_float { 12198 return Err(crate::device::ExtensionRestrictionError { 12199 extension: "amd_gpu_shader_half_float", 12200 restriction: crate::device::ExtensionRestriction::NotSupported, 12201 }); 12202 } 12203 } else { 12204 } 12205 if self.amd_gpu_shader_int16 { 12206 if !supported.amd_gpu_shader_int16 { 12207 return Err(crate::device::ExtensionRestrictionError { 12208 extension: "amd_gpu_shader_int16", 12209 restriction: crate::device::ExtensionRestriction::NotSupported, 12210 }); 12211 } 12212 } else { 12213 } 12214 if self.amd_memory_overallocation_behavior { 12215 if !supported.amd_memory_overallocation_behavior { 12216 return Err(crate::device::ExtensionRestrictionError { 12217 extension: "amd_memory_overallocation_behavior", 12218 restriction: crate::device::ExtensionRestriction::NotSupported, 12219 }); 12220 } 12221 } else { 12222 } 12223 if self.amd_mixed_attachment_samples { 12224 if !supported.amd_mixed_attachment_samples { 12225 return Err(crate::device::ExtensionRestrictionError { 12226 extension: "amd_mixed_attachment_samples", 12227 restriction: crate::device::ExtensionRestriction::NotSupported, 12228 }); 12229 } 12230 } else { 12231 } 12232 if self.amd_pipeline_compiler_control { 12233 if !supported.amd_pipeline_compiler_control { 12234 return Err(crate::device::ExtensionRestrictionError { 12235 extension: "amd_pipeline_compiler_control", 12236 restriction: crate::device::ExtensionRestriction::NotSupported, 12237 }); 12238 } 12239 } else { 12240 } 12241 if self.amd_rasterization_order { 12242 if !supported.amd_rasterization_order { 12243 return Err(crate::device::ExtensionRestrictionError { 12244 extension: "amd_rasterization_order", 12245 restriction: crate::device::ExtensionRestriction::NotSupported, 12246 }); 12247 } 12248 } else { 12249 } 12250 if self.amd_shader_ballot { 12251 if !supported.amd_shader_ballot { 12252 return Err(crate::device::ExtensionRestrictionError { 12253 extension: "amd_shader_ballot", 12254 restriction: crate::device::ExtensionRestriction::NotSupported, 12255 }); 12256 } 12257 } else { 12258 } 12259 if self.amd_shader_core_properties { 12260 if !supported.amd_shader_core_properties { 12261 return Err(crate::device::ExtensionRestrictionError { 12262 extension: "amd_shader_core_properties", 12263 restriction: crate::device::ExtensionRestriction::NotSupported, 12264 }); 12265 } 12266 if !(api_version >= crate::Version::V1_1 12267 || instance_extensions.khr_get_physical_device_properties2) 12268 { 12269 return Err(crate::device::ExtensionRestrictionError { 12270 extension: "amd_shader_core_properties", 12271 restriction: crate::device::ExtensionRestriction::Requires( 12272 crate::RequiresOneOf { 12273 api_version: Some(crate::Version::V1_1), 12274 device_extensions: &[], 12275 instance_extensions: &["khr_get_physical_device_properties2"], 12276 ..Default::default() 12277 }, 12278 ), 12279 }); 12280 } 12281 } else { 12282 } 12283 if self.amd_shader_core_properties2 { 12284 if !supported.amd_shader_core_properties2 { 12285 return Err(crate::device::ExtensionRestrictionError { 12286 extension: "amd_shader_core_properties2", 12287 restriction: crate::device::ExtensionRestriction::NotSupported, 12288 }); 12289 } 12290 if !(device_extensions.amd_shader_core_properties) { 12291 return Err(crate::device::ExtensionRestrictionError { 12292 extension: "amd_shader_core_properties2", 12293 restriction: crate::device::ExtensionRestriction::Requires( 12294 crate::RequiresOneOf { 12295 api_version: None, 12296 device_extensions: &["amd_shader_core_properties"], 12297 instance_extensions: &[], 12298 ..Default::default() 12299 }, 12300 ), 12301 }); 12302 } 12303 } else { 12304 } 12305 if self.amd_shader_early_and_late_fragment_tests { 12306 if !supported.amd_shader_early_and_late_fragment_tests { 12307 return Err(crate::device::ExtensionRestrictionError { 12308 extension: "amd_shader_early_and_late_fragment_tests", 12309 restriction: crate::device::ExtensionRestriction::NotSupported, 12310 }); 12311 } 12312 } else { 12313 } 12314 if self.amd_shader_explicit_vertex_parameter { 12315 if !supported.amd_shader_explicit_vertex_parameter { 12316 return Err(crate::device::ExtensionRestrictionError { 12317 extension: "amd_shader_explicit_vertex_parameter", 12318 restriction: crate::device::ExtensionRestriction::NotSupported, 12319 }); 12320 } 12321 } else { 12322 } 12323 if self.amd_shader_fragment_mask { 12324 if !supported.amd_shader_fragment_mask { 12325 return Err(crate::device::ExtensionRestrictionError { 12326 extension: "amd_shader_fragment_mask", 12327 restriction: crate::device::ExtensionRestriction::NotSupported, 12328 }); 12329 } 12330 } else { 12331 } 12332 if self.amd_shader_image_load_store_lod { 12333 if !supported.amd_shader_image_load_store_lod { 12334 return Err(crate::device::ExtensionRestrictionError { 12335 extension: "amd_shader_image_load_store_lod", 12336 restriction: crate::device::ExtensionRestriction::NotSupported, 12337 }); 12338 } 12339 } else { 12340 } 12341 if self.amd_shader_info { 12342 if !supported.amd_shader_info { 12343 return Err(crate::device::ExtensionRestrictionError { 12344 extension: "amd_shader_info", 12345 restriction: crate::device::ExtensionRestriction::NotSupported, 12346 }); 12347 } 12348 } else { 12349 } 12350 if self.amd_shader_trinary_minmax { 12351 if !supported.amd_shader_trinary_minmax { 12352 return Err(crate::device::ExtensionRestrictionError { 12353 extension: "amd_shader_trinary_minmax", 12354 restriction: crate::device::ExtensionRestriction::NotSupported, 12355 }); 12356 } 12357 } else { 12358 } 12359 if self.amd_texture_gather_bias_lod { 12360 if !supported.amd_texture_gather_bias_lod { 12361 return Err(crate::device::ExtensionRestrictionError { 12362 extension: "amd_texture_gather_bias_lod", 12363 restriction: crate::device::ExtensionRestriction::NotSupported, 12364 }); 12365 } 12366 if !(api_version >= crate::Version::V1_1 12367 || instance_extensions.khr_get_physical_device_properties2) 12368 { 12369 return Err(crate::device::ExtensionRestrictionError { 12370 extension: "amd_texture_gather_bias_lod", 12371 restriction: crate::device::ExtensionRestriction::Requires( 12372 crate::RequiresOneOf { 12373 api_version: Some(crate::Version::V1_1), 12374 device_extensions: &[], 12375 instance_extensions: &["khr_get_physical_device_properties2"], 12376 ..Default::default() 12377 }, 12378 ), 12379 }); 12380 } 12381 } else { 12382 } 12383 if self.android_external_memory_android_hardware_buffer { 12384 if !supported.android_external_memory_android_hardware_buffer { 12385 return Err(crate::device::ExtensionRestrictionError { 12386 extension: "android_external_memory_android_hardware_buffer", 12387 restriction: crate::device::ExtensionRestriction::NotSupported, 12388 }); 12389 } 12390 if !(api_version >= crate::Version::V1_1 12391 || device_extensions.khr_sampler_ycbcr_conversion) 12392 { 12393 return Err(crate::device::ExtensionRestrictionError { 12394 extension: "android_external_memory_android_hardware_buffer", 12395 restriction: crate::device::ExtensionRestriction::Requires( 12396 crate::RequiresOneOf { 12397 api_version: Some(crate::Version::V1_1), 12398 device_extensions: &["khr_sampler_ycbcr_conversion"], 12399 instance_extensions: &[], 12400 ..Default::default() 12401 }, 12402 ), 12403 }); 12404 } 12405 if !(api_version >= crate::Version::V1_1 || device_extensions.khr_external_memory) { 12406 return Err(crate::device::ExtensionRestrictionError { 12407 extension: "android_external_memory_android_hardware_buffer", 12408 restriction: crate::device::ExtensionRestriction::Requires( 12409 crate::RequiresOneOf { 12410 api_version: Some(crate::Version::V1_1), 12411 device_extensions: &["khr_external_memory"], 12412 instance_extensions: &[], 12413 ..Default::default() 12414 }, 12415 ), 12416 }); 12417 } 12418 if !(device_extensions.ext_queue_family_foreign) { 12419 return Err(crate::device::ExtensionRestrictionError { 12420 extension: "android_external_memory_android_hardware_buffer", 12421 restriction: crate::device::ExtensionRestriction::Requires( 12422 crate::RequiresOneOf { 12423 api_version: None, 12424 device_extensions: &["ext_queue_family_foreign"], 12425 instance_extensions: &[], 12426 ..Default::default() 12427 }, 12428 ), 12429 }); 12430 } 12431 if !(api_version >= crate::Version::V1_1 || device_extensions.khr_dedicated_allocation) 12432 { 12433 return Err(crate::device::ExtensionRestrictionError { 12434 extension: "android_external_memory_android_hardware_buffer", 12435 restriction: crate::device::ExtensionRestriction::Requires( 12436 crate::RequiresOneOf { 12437 api_version: Some(crate::Version::V1_1), 12438 device_extensions: &["khr_dedicated_allocation"], 12439 instance_extensions: &[], 12440 ..Default::default() 12441 }, 12442 ), 12443 }); 12444 } 12445 } else { 12446 } 12447 if self.arm_rasterization_order_attachment_access { 12448 if !supported.arm_rasterization_order_attachment_access { 12449 return Err(crate::device::ExtensionRestrictionError { 12450 extension: "arm_rasterization_order_attachment_access", 12451 restriction: crate::device::ExtensionRestriction::NotSupported, 12452 }); 12453 } 12454 if !(api_version >= crate::Version::V1_1 12455 || instance_extensions.khr_get_physical_device_properties2) 12456 { 12457 return Err(crate::device::ExtensionRestrictionError { 12458 extension: "arm_rasterization_order_attachment_access", 12459 restriction: crate::device::ExtensionRestriction::Requires( 12460 crate::RequiresOneOf { 12461 api_version: Some(crate::Version::V1_1), 12462 device_extensions: &[], 12463 instance_extensions: &["khr_get_physical_device_properties2"], 12464 ..Default::default() 12465 }, 12466 ), 12467 }); 12468 } 12469 } else { 12470 } 12471 if self.arm_shader_core_builtins { 12472 if !supported.arm_shader_core_builtins { 12473 return Err(crate::device::ExtensionRestrictionError { 12474 extension: "arm_shader_core_builtins", 12475 restriction: crate::device::ExtensionRestriction::NotSupported, 12476 }); 12477 } 12478 } else { 12479 } 12480 if self.fuchsia_buffer_collection { 12481 if !supported.fuchsia_buffer_collection { 12482 return Err(crate::device::ExtensionRestrictionError { 12483 extension: "fuchsia_buffer_collection", 12484 restriction: crate::device::ExtensionRestriction::NotSupported, 12485 }); 12486 } 12487 if !(device_extensions.fuchsia_external_memory) { 12488 return Err(crate::device::ExtensionRestrictionError { 12489 extension: "fuchsia_buffer_collection", 12490 restriction: crate::device::ExtensionRestriction::Requires( 12491 crate::RequiresOneOf { 12492 api_version: None, 12493 device_extensions: &["fuchsia_external_memory"], 12494 instance_extensions: &[], 12495 ..Default::default() 12496 }, 12497 ), 12498 }); 12499 } 12500 if !(api_version >= crate::Version::V1_1 12501 || device_extensions.khr_sampler_ycbcr_conversion) 12502 { 12503 return Err(crate::device::ExtensionRestrictionError { 12504 extension: "fuchsia_buffer_collection", 12505 restriction: crate::device::ExtensionRestriction::Requires( 12506 crate::RequiresOneOf { 12507 api_version: Some(crate::Version::V1_1), 12508 device_extensions: &["khr_sampler_ycbcr_conversion"], 12509 instance_extensions: &[], 12510 ..Default::default() 12511 }, 12512 ), 12513 }); 12514 } 12515 } else { 12516 } 12517 if self.fuchsia_external_memory { 12518 if !supported.fuchsia_external_memory { 12519 return Err(crate::device::ExtensionRestrictionError { 12520 extension: "fuchsia_external_memory", 12521 restriction: crate::device::ExtensionRestriction::NotSupported, 12522 }); 12523 } 12524 if !(api_version >= crate::Version::V1_1 12525 || instance_extensions.khr_external_memory_capabilities) 12526 { 12527 return Err(crate::device::ExtensionRestrictionError { 12528 extension: "fuchsia_external_memory", 12529 restriction: crate::device::ExtensionRestriction::Requires( 12530 crate::RequiresOneOf { 12531 api_version: Some(crate::Version::V1_1), 12532 device_extensions: &[], 12533 instance_extensions: &["khr_external_memory_capabilities"], 12534 ..Default::default() 12535 }, 12536 ), 12537 }); 12538 } 12539 if !(api_version >= crate::Version::V1_1 || device_extensions.khr_external_memory) { 12540 return Err(crate::device::ExtensionRestrictionError { 12541 extension: "fuchsia_external_memory", 12542 restriction: crate::device::ExtensionRestriction::Requires( 12543 crate::RequiresOneOf { 12544 api_version: Some(crate::Version::V1_1), 12545 device_extensions: &["khr_external_memory"], 12546 instance_extensions: &[], 12547 ..Default::default() 12548 }, 12549 ), 12550 }); 12551 } 12552 } else { 12553 } 12554 if self.fuchsia_external_semaphore { 12555 if !supported.fuchsia_external_semaphore { 12556 return Err(crate::device::ExtensionRestrictionError { 12557 extension: "fuchsia_external_semaphore", 12558 restriction: crate::device::ExtensionRestriction::NotSupported, 12559 }); 12560 } 12561 if !(api_version >= crate::Version::V1_1 12562 || instance_extensions.khr_external_semaphore_capabilities) 12563 { 12564 return Err(crate::device::ExtensionRestrictionError { 12565 extension: "fuchsia_external_semaphore", 12566 restriction: crate::device::ExtensionRestriction::Requires( 12567 crate::RequiresOneOf { 12568 api_version: Some(crate::Version::V1_1), 12569 device_extensions: &[], 12570 instance_extensions: &["khr_external_semaphore_capabilities"], 12571 ..Default::default() 12572 }, 12573 ), 12574 }); 12575 } 12576 if !(api_version >= crate::Version::V1_1 || device_extensions.khr_external_semaphore) { 12577 return Err(crate::device::ExtensionRestrictionError { 12578 extension: "fuchsia_external_semaphore", 12579 restriction: crate::device::ExtensionRestriction::Requires( 12580 crate::RequiresOneOf { 12581 api_version: Some(crate::Version::V1_1), 12582 device_extensions: &["khr_external_semaphore"], 12583 instance_extensions: &[], 12584 ..Default::default() 12585 }, 12586 ), 12587 }); 12588 } 12589 } else { 12590 } 12591 if self.ggp_frame_token { 12592 if !supported.ggp_frame_token { 12593 return Err(crate::device::ExtensionRestrictionError { 12594 extension: "ggp_frame_token", 12595 restriction: crate::device::ExtensionRestriction::NotSupported, 12596 }); 12597 } 12598 if !(device_extensions.khr_swapchain) { 12599 return Err(crate::device::ExtensionRestrictionError { 12600 extension: "ggp_frame_token", 12601 restriction: crate::device::ExtensionRestriction::Requires( 12602 crate::RequiresOneOf { 12603 api_version: None, 12604 device_extensions: &["khr_swapchain"], 12605 instance_extensions: &[], 12606 ..Default::default() 12607 }, 12608 ), 12609 }); 12610 } 12611 if !(instance_extensions.ggp_stream_descriptor_surface) { 12612 return Err(crate::device::ExtensionRestrictionError { 12613 extension: "ggp_frame_token", 12614 restriction: crate::device::ExtensionRestriction::Requires( 12615 crate::RequiresOneOf { 12616 api_version: None, 12617 device_extensions: &[], 12618 instance_extensions: &["ggp_stream_descriptor_surface"], 12619 ..Default::default() 12620 }, 12621 ), 12622 }); 12623 } 12624 } else { 12625 } 12626 if self.google_decorate_string { 12627 if !supported.google_decorate_string { 12628 return Err(crate::device::ExtensionRestrictionError { 12629 extension: "google_decorate_string", 12630 restriction: crate::device::ExtensionRestriction::NotSupported, 12631 }); 12632 } 12633 } else { 12634 } 12635 if self.google_display_timing { 12636 if !supported.google_display_timing { 12637 return Err(crate::device::ExtensionRestrictionError { 12638 extension: "google_display_timing", 12639 restriction: crate::device::ExtensionRestriction::NotSupported, 12640 }); 12641 } 12642 if !(device_extensions.khr_swapchain) { 12643 return Err(crate::device::ExtensionRestrictionError { 12644 extension: "google_display_timing", 12645 restriction: crate::device::ExtensionRestriction::Requires( 12646 crate::RequiresOneOf { 12647 api_version: None, 12648 device_extensions: &["khr_swapchain"], 12649 instance_extensions: &[], 12650 ..Default::default() 12651 }, 12652 ), 12653 }); 12654 } 12655 } else { 12656 } 12657 if self.google_hlsl_functionality1 { 12658 if !supported.google_hlsl_functionality1 { 12659 return Err(crate::device::ExtensionRestrictionError { 12660 extension: "google_hlsl_functionality1", 12661 restriction: crate::device::ExtensionRestriction::NotSupported, 12662 }); 12663 } 12664 } else { 12665 } 12666 if self.google_user_type { 12667 if !supported.google_user_type { 12668 return Err(crate::device::ExtensionRestrictionError { 12669 extension: "google_user_type", 12670 restriction: crate::device::ExtensionRestriction::NotSupported, 12671 }); 12672 } 12673 } else { 12674 } 12675 if self.huawei_invocation_mask { 12676 if !supported.huawei_invocation_mask { 12677 return Err(crate::device::ExtensionRestrictionError { 12678 extension: "huawei_invocation_mask", 12679 restriction: crate::device::ExtensionRestriction::NotSupported, 12680 }); 12681 } 12682 if !(device_extensions.khr_ray_tracing_pipeline) { 12683 return Err(crate::device::ExtensionRestrictionError { 12684 extension: "huawei_invocation_mask", 12685 restriction: crate::device::ExtensionRestriction::Requires( 12686 crate::RequiresOneOf { 12687 api_version: None, 12688 device_extensions: &["khr_ray_tracing_pipeline"], 12689 instance_extensions: &[], 12690 ..Default::default() 12691 }, 12692 ), 12693 }); 12694 } 12695 if !(api_version >= crate::Version::V1_3 || device_extensions.khr_synchronization2) { 12696 return Err(crate::device::ExtensionRestrictionError { 12697 extension: "huawei_invocation_mask", 12698 restriction: crate::device::ExtensionRestriction::Requires( 12699 crate::RequiresOneOf { 12700 api_version: Some(crate::Version::V1_3), 12701 device_extensions: &["khr_synchronization2"], 12702 instance_extensions: &[], 12703 ..Default::default() 12704 }, 12705 ), 12706 }); 12707 } 12708 } else { 12709 } 12710 if self.huawei_subpass_shading { 12711 if !supported.huawei_subpass_shading { 12712 return Err(crate::device::ExtensionRestrictionError { 12713 extension: "huawei_subpass_shading", 12714 restriction: crate::device::ExtensionRestriction::NotSupported, 12715 }); 12716 } 12717 if !(api_version >= crate::Version::V1_2 || device_extensions.khr_create_renderpass2) { 12718 return Err(crate::device::ExtensionRestrictionError { 12719 extension: "huawei_subpass_shading", 12720 restriction: crate::device::ExtensionRestriction::Requires( 12721 crate::RequiresOneOf { 12722 api_version: Some(crate::Version::V1_2), 12723 device_extensions: &["khr_create_renderpass2"], 12724 instance_extensions: &[], 12725 ..Default::default() 12726 }, 12727 ), 12728 }); 12729 } 12730 if !(api_version >= crate::Version::V1_3 || device_extensions.khr_synchronization2) { 12731 return Err(crate::device::ExtensionRestrictionError { 12732 extension: "huawei_subpass_shading", 12733 restriction: crate::device::ExtensionRestriction::Requires( 12734 crate::RequiresOneOf { 12735 api_version: Some(crate::Version::V1_3), 12736 device_extensions: &["khr_synchronization2"], 12737 instance_extensions: &[], 12738 ..Default::default() 12739 }, 12740 ), 12741 }); 12742 } 12743 } else { 12744 } 12745 if self.img_filter_cubic { 12746 if !supported.img_filter_cubic { 12747 return Err(crate::device::ExtensionRestrictionError { 12748 extension: "img_filter_cubic", 12749 restriction: crate::device::ExtensionRestriction::NotSupported, 12750 }); 12751 } 12752 } else { 12753 } 12754 if self.img_format_pvrtc { 12755 if !supported.img_format_pvrtc { 12756 return Err(crate::device::ExtensionRestrictionError { 12757 extension: "img_format_pvrtc", 12758 restriction: crate::device::ExtensionRestriction::NotSupported, 12759 }); 12760 } 12761 } else { 12762 } 12763 if self.intel_performance_query { 12764 if !supported.intel_performance_query { 12765 return Err(crate::device::ExtensionRestrictionError { 12766 extension: "intel_performance_query", 12767 restriction: crate::device::ExtensionRestriction::NotSupported, 12768 }); 12769 } 12770 } else { 12771 } 12772 if self.intel_shader_integer_functions2 { 12773 if !supported.intel_shader_integer_functions2 { 12774 return Err(crate::device::ExtensionRestrictionError { 12775 extension: "intel_shader_integer_functions2", 12776 restriction: crate::device::ExtensionRestriction::NotSupported, 12777 }); 12778 } 12779 if !(api_version >= crate::Version::V1_1 12780 || instance_extensions.khr_get_physical_device_properties2) 12781 { 12782 return Err(crate::device::ExtensionRestrictionError { 12783 extension: "intel_shader_integer_functions2", 12784 restriction: crate::device::ExtensionRestriction::Requires( 12785 crate::RequiresOneOf { 12786 api_version: Some(crate::Version::V1_1), 12787 device_extensions: &[], 12788 instance_extensions: &["khr_get_physical_device_properties2"], 12789 ..Default::default() 12790 }, 12791 ), 12792 }); 12793 } 12794 } else { 12795 } 12796 if self.nvx_binary_import { 12797 if !supported.nvx_binary_import { 12798 return Err(crate::device::ExtensionRestrictionError { 12799 extension: "nvx_binary_import", 12800 restriction: crate::device::ExtensionRestriction::NotSupported, 12801 }); 12802 } 12803 } else { 12804 } 12805 if self.nvx_image_view_handle { 12806 if !supported.nvx_image_view_handle { 12807 return Err(crate::device::ExtensionRestrictionError { 12808 extension: "nvx_image_view_handle", 12809 restriction: crate::device::ExtensionRestriction::NotSupported, 12810 }); 12811 } 12812 } else { 12813 } 12814 if self.nvx_multiview_per_view_attributes { 12815 if !supported.nvx_multiview_per_view_attributes { 12816 return Err(crate::device::ExtensionRestrictionError { 12817 extension: "nvx_multiview_per_view_attributes", 12818 restriction: crate::device::ExtensionRestriction::NotSupported, 12819 }); 12820 } 12821 if !(api_version >= crate::Version::V1_1 || device_extensions.khr_multiview) { 12822 return Err(crate::device::ExtensionRestrictionError { 12823 extension: "nvx_multiview_per_view_attributes", 12824 restriction: crate::device::ExtensionRestriction::Requires( 12825 crate::RequiresOneOf { 12826 api_version: Some(crate::Version::V1_1), 12827 device_extensions: &["khr_multiview"], 12828 instance_extensions: &[], 12829 ..Default::default() 12830 }, 12831 ), 12832 }); 12833 } 12834 } else { 12835 } 12836 if self.nv_acquire_winrt_display { 12837 if !supported.nv_acquire_winrt_display { 12838 return Err(crate::device::ExtensionRestrictionError { 12839 extension: "nv_acquire_winrt_display", 12840 restriction: crate::device::ExtensionRestriction::NotSupported, 12841 }); 12842 } 12843 if !(instance_extensions.ext_direct_mode_display) { 12844 return Err(crate::device::ExtensionRestrictionError { 12845 extension: "nv_acquire_winrt_display", 12846 restriction: crate::device::ExtensionRestriction::Requires( 12847 crate::RequiresOneOf { 12848 api_version: None, 12849 device_extensions: &[], 12850 instance_extensions: &["ext_direct_mode_display"], 12851 ..Default::default() 12852 }, 12853 ), 12854 }); 12855 } 12856 } else { 12857 } 12858 if self.nv_clip_space_w_scaling { 12859 if !supported.nv_clip_space_w_scaling { 12860 return Err(crate::device::ExtensionRestrictionError { 12861 extension: "nv_clip_space_w_scaling", 12862 restriction: crate::device::ExtensionRestriction::NotSupported, 12863 }); 12864 } 12865 } else { 12866 } 12867 if self.nv_compute_shader_derivatives { 12868 if !supported.nv_compute_shader_derivatives { 12869 return Err(crate::device::ExtensionRestrictionError { 12870 extension: "nv_compute_shader_derivatives", 12871 restriction: crate::device::ExtensionRestriction::NotSupported, 12872 }); 12873 } 12874 if !(api_version >= crate::Version::V1_1 12875 || instance_extensions.khr_get_physical_device_properties2) 12876 { 12877 return Err(crate::device::ExtensionRestrictionError { 12878 extension: "nv_compute_shader_derivatives", 12879 restriction: crate::device::ExtensionRestriction::Requires( 12880 crate::RequiresOneOf { 12881 api_version: Some(crate::Version::V1_1), 12882 device_extensions: &[], 12883 instance_extensions: &["khr_get_physical_device_properties2"], 12884 ..Default::default() 12885 }, 12886 ), 12887 }); 12888 } 12889 } else { 12890 } 12891 if self.nv_cooperative_matrix { 12892 if !supported.nv_cooperative_matrix { 12893 return Err(crate::device::ExtensionRestrictionError { 12894 extension: "nv_cooperative_matrix", 12895 restriction: crate::device::ExtensionRestriction::NotSupported, 12896 }); 12897 } 12898 if !(api_version >= crate::Version::V1_1 12899 || instance_extensions.khr_get_physical_device_properties2) 12900 { 12901 return Err(crate::device::ExtensionRestrictionError { 12902 extension: "nv_cooperative_matrix", 12903 restriction: crate::device::ExtensionRestriction::Requires( 12904 crate::RequiresOneOf { 12905 api_version: Some(crate::Version::V1_1), 12906 device_extensions: &[], 12907 instance_extensions: &["khr_get_physical_device_properties2"], 12908 ..Default::default() 12909 }, 12910 ), 12911 }); 12912 } 12913 } else { 12914 } 12915 if self.nv_copy_memory_indirect { 12916 if !supported.nv_copy_memory_indirect { 12917 return Err(crate::device::ExtensionRestrictionError { 12918 extension: "nv_copy_memory_indirect", 12919 restriction: crate::device::ExtensionRestriction::NotSupported, 12920 }); 12921 } 12922 if !(api_version >= crate::Version::V1_1 12923 || instance_extensions.khr_get_physical_device_properties2) 12924 { 12925 return Err(crate::device::ExtensionRestrictionError { 12926 extension: "nv_copy_memory_indirect", 12927 restriction: crate::device::ExtensionRestriction::Requires( 12928 crate::RequiresOneOf { 12929 api_version: Some(crate::Version::V1_1), 12930 device_extensions: &[], 12931 instance_extensions: &["khr_get_physical_device_properties2"], 12932 ..Default::default() 12933 }, 12934 ), 12935 }); 12936 } 12937 if !(api_version >= crate::Version::V1_2 || device_extensions.khr_buffer_device_address) 12938 { 12939 return Err(crate::device::ExtensionRestrictionError { 12940 extension: "nv_copy_memory_indirect", 12941 restriction: crate::device::ExtensionRestriction::Requires( 12942 crate::RequiresOneOf { 12943 api_version: Some(crate::Version::V1_2), 12944 device_extensions: &["khr_buffer_device_address"], 12945 instance_extensions: &[], 12946 ..Default::default() 12947 }, 12948 ), 12949 }); 12950 } 12951 } else { 12952 } 12953 if self.nv_corner_sampled_image { 12954 if !supported.nv_corner_sampled_image { 12955 return Err(crate::device::ExtensionRestrictionError { 12956 extension: "nv_corner_sampled_image", 12957 restriction: crate::device::ExtensionRestriction::NotSupported, 12958 }); 12959 } 12960 if !(api_version >= crate::Version::V1_1 12961 || instance_extensions.khr_get_physical_device_properties2) 12962 { 12963 return Err(crate::device::ExtensionRestrictionError { 12964 extension: "nv_corner_sampled_image", 12965 restriction: crate::device::ExtensionRestriction::Requires( 12966 crate::RequiresOneOf { 12967 api_version: Some(crate::Version::V1_1), 12968 device_extensions: &[], 12969 instance_extensions: &["khr_get_physical_device_properties2"], 12970 ..Default::default() 12971 }, 12972 ), 12973 }); 12974 } 12975 } else { 12976 } 12977 if self.nv_coverage_reduction_mode { 12978 if !supported.nv_coverage_reduction_mode { 12979 return Err(crate::device::ExtensionRestrictionError { 12980 extension: "nv_coverage_reduction_mode", 12981 restriction: crate::device::ExtensionRestriction::NotSupported, 12982 }); 12983 } 12984 if !(device_extensions.nv_framebuffer_mixed_samples) { 12985 return Err(crate::device::ExtensionRestrictionError { 12986 extension: "nv_coverage_reduction_mode", 12987 restriction: crate::device::ExtensionRestriction::Requires( 12988 crate::RequiresOneOf { 12989 api_version: None, 12990 device_extensions: &["nv_framebuffer_mixed_samples"], 12991 instance_extensions: &[], 12992 ..Default::default() 12993 }, 12994 ), 12995 }); 12996 } 12997 } else { 12998 } 12999 if self.nv_dedicated_allocation { 13000 if !supported.nv_dedicated_allocation { 13001 return Err(crate::device::ExtensionRestrictionError { 13002 extension: "nv_dedicated_allocation", 13003 restriction: crate::device::ExtensionRestriction::NotSupported, 13004 }); 13005 } 13006 } else { 13007 } 13008 if self.nv_dedicated_allocation_image_aliasing { 13009 if !supported.nv_dedicated_allocation_image_aliasing { 13010 return Err(crate::device::ExtensionRestrictionError { 13011 extension: "nv_dedicated_allocation_image_aliasing", 13012 restriction: crate::device::ExtensionRestriction::NotSupported, 13013 }); 13014 } 13015 if !(api_version >= crate::Version::V1_1 || device_extensions.khr_dedicated_allocation) 13016 { 13017 return Err(crate::device::ExtensionRestrictionError { 13018 extension: "nv_dedicated_allocation_image_aliasing", 13019 restriction: crate::device::ExtensionRestriction::Requires( 13020 crate::RequiresOneOf { 13021 api_version: Some(crate::Version::V1_1), 13022 device_extensions: &["khr_dedicated_allocation"], 13023 instance_extensions: &[], 13024 ..Default::default() 13025 }, 13026 ), 13027 }); 13028 } 13029 } else { 13030 } 13031 if self.nv_device_diagnostic_checkpoints { 13032 if !supported.nv_device_diagnostic_checkpoints { 13033 return Err(crate::device::ExtensionRestrictionError { 13034 extension: "nv_device_diagnostic_checkpoints", 13035 restriction: crate::device::ExtensionRestriction::NotSupported, 13036 }); 13037 } 13038 if !(api_version >= crate::Version::V1_1 13039 || instance_extensions.khr_get_physical_device_properties2) 13040 { 13041 return Err(crate::device::ExtensionRestrictionError { 13042 extension: "nv_device_diagnostic_checkpoints", 13043 restriction: crate::device::ExtensionRestriction::Requires( 13044 crate::RequiresOneOf { 13045 api_version: Some(crate::Version::V1_1), 13046 device_extensions: &[], 13047 instance_extensions: &["khr_get_physical_device_properties2"], 13048 ..Default::default() 13049 }, 13050 ), 13051 }); 13052 } 13053 } else { 13054 } 13055 if self.nv_device_diagnostics_config { 13056 if !supported.nv_device_diagnostics_config { 13057 return Err(crate::device::ExtensionRestrictionError { 13058 extension: "nv_device_diagnostics_config", 13059 restriction: crate::device::ExtensionRestriction::NotSupported, 13060 }); 13061 } 13062 if !(api_version >= crate::Version::V1_1 13063 || instance_extensions.khr_get_physical_device_properties2) 13064 { 13065 return Err(crate::device::ExtensionRestrictionError { 13066 extension: "nv_device_diagnostics_config", 13067 restriction: crate::device::ExtensionRestriction::Requires( 13068 crate::RequiresOneOf { 13069 api_version: Some(crate::Version::V1_1), 13070 device_extensions: &[], 13071 instance_extensions: &["khr_get_physical_device_properties2"], 13072 ..Default::default() 13073 }, 13074 ), 13075 }); 13076 } 13077 } else { 13078 } 13079 if self.nv_device_generated_commands { 13080 if !supported.nv_device_generated_commands { 13081 return Err(crate::device::ExtensionRestrictionError { 13082 extension: "nv_device_generated_commands", 13083 restriction: crate::device::ExtensionRestriction::NotSupported, 13084 }); 13085 } 13086 if !(api_version >= crate::Version::V1_1) { 13087 return Err(crate::device::ExtensionRestrictionError { 13088 extension: "nv_device_generated_commands", 13089 restriction: crate::device::ExtensionRestriction::Requires( 13090 crate::RequiresOneOf { 13091 api_version: Some(crate::Version::V1_1), 13092 device_extensions: &[], 13093 instance_extensions: &[], 13094 ..Default::default() 13095 }, 13096 ), 13097 }); 13098 } 13099 if !(api_version >= crate::Version::V1_2 || device_extensions.khr_buffer_device_address) 13100 { 13101 return Err(crate::device::ExtensionRestrictionError { 13102 extension: "nv_device_generated_commands", 13103 restriction: crate::device::ExtensionRestriction::Requires( 13104 crate::RequiresOneOf { 13105 api_version: Some(crate::Version::V1_2), 13106 device_extensions: &["khr_buffer_device_address"], 13107 instance_extensions: &[], 13108 ..Default::default() 13109 }, 13110 ), 13111 }); 13112 } 13113 } else { 13114 } 13115 if self.nv_external_memory { 13116 if !supported.nv_external_memory { 13117 return Err(crate::device::ExtensionRestrictionError { 13118 extension: "nv_external_memory", 13119 restriction: crate::device::ExtensionRestriction::NotSupported, 13120 }); 13121 } 13122 if !(instance_extensions.nv_external_memory_capabilities) { 13123 return Err(crate::device::ExtensionRestrictionError { 13124 extension: "nv_external_memory", 13125 restriction: crate::device::ExtensionRestriction::Requires( 13126 crate::RequiresOneOf { 13127 api_version: None, 13128 device_extensions: &[], 13129 instance_extensions: &["nv_external_memory_capabilities"], 13130 ..Default::default() 13131 }, 13132 ), 13133 }); 13134 } 13135 } else { 13136 } 13137 if self.nv_external_memory_rdma { 13138 if !supported.nv_external_memory_rdma { 13139 return Err(crate::device::ExtensionRestrictionError { 13140 extension: "nv_external_memory_rdma", 13141 restriction: crate::device::ExtensionRestriction::NotSupported, 13142 }); 13143 } 13144 if !(api_version >= crate::Version::V1_1 || device_extensions.khr_external_memory) { 13145 return Err(crate::device::ExtensionRestrictionError { 13146 extension: "nv_external_memory_rdma", 13147 restriction: crate::device::ExtensionRestriction::Requires( 13148 crate::RequiresOneOf { 13149 api_version: Some(crate::Version::V1_1), 13150 device_extensions: &["khr_external_memory"], 13151 instance_extensions: &[], 13152 ..Default::default() 13153 }, 13154 ), 13155 }); 13156 } 13157 } else { 13158 } 13159 if self.nv_external_memory_win32 { 13160 if !supported.nv_external_memory_win32 { 13161 return Err(crate::device::ExtensionRestrictionError { 13162 extension: "nv_external_memory_win32", 13163 restriction: crate::device::ExtensionRestriction::NotSupported, 13164 }); 13165 } 13166 if !(device_extensions.nv_external_memory) { 13167 return Err(crate::device::ExtensionRestrictionError { 13168 extension: "nv_external_memory_win32", 13169 restriction: crate::device::ExtensionRestriction::Requires( 13170 crate::RequiresOneOf { 13171 api_version: None, 13172 device_extensions: &["nv_external_memory"], 13173 instance_extensions: &[], 13174 ..Default::default() 13175 }, 13176 ), 13177 }); 13178 } 13179 } else { 13180 } 13181 if self.nv_fill_rectangle { 13182 if !supported.nv_fill_rectangle { 13183 return Err(crate::device::ExtensionRestrictionError { 13184 extension: "nv_fill_rectangle", 13185 restriction: crate::device::ExtensionRestriction::NotSupported, 13186 }); 13187 } 13188 } else { 13189 } 13190 if self.nv_fragment_coverage_to_color { 13191 if !supported.nv_fragment_coverage_to_color { 13192 return Err(crate::device::ExtensionRestrictionError { 13193 extension: "nv_fragment_coverage_to_color", 13194 restriction: crate::device::ExtensionRestriction::NotSupported, 13195 }); 13196 } 13197 } else { 13198 } 13199 if self.nv_fragment_shader_barycentric { 13200 if !supported.nv_fragment_shader_barycentric { 13201 return Err(crate::device::ExtensionRestrictionError { 13202 extension: "nv_fragment_shader_barycentric", 13203 restriction: crate::device::ExtensionRestriction::NotSupported, 13204 }); 13205 } 13206 if !(api_version >= crate::Version::V1_1 13207 || instance_extensions.khr_get_physical_device_properties2) 13208 { 13209 return Err(crate::device::ExtensionRestrictionError { 13210 extension: "nv_fragment_shader_barycentric", 13211 restriction: crate::device::ExtensionRestriction::Requires( 13212 crate::RequiresOneOf { 13213 api_version: Some(crate::Version::V1_1), 13214 device_extensions: &[], 13215 instance_extensions: &["khr_get_physical_device_properties2"], 13216 ..Default::default() 13217 }, 13218 ), 13219 }); 13220 } 13221 } else { 13222 } 13223 if self.nv_fragment_shading_rate_enums { 13224 if !supported.nv_fragment_shading_rate_enums { 13225 return Err(crate::device::ExtensionRestrictionError { 13226 extension: "nv_fragment_shading_rate_enums", 13227 restriction: crate::device::ExtensionRestriction::NotSupported, 13228 }); 13229 } 13230 if !(device_extensions.khr_fragment_shading_rate) { 13231 return Err(crate::device::ExtensionRestrictionError { 13232 extension: "nv_fragment_shading_rate_enums", 13233 restriction: crate::device::ExtensionRestriction::Requires( 13234 crate::RequiresOneOf { 13235 api_version: None, 13236 device_extensions: &["khr_fragment_shading_rate"], 13237 instance_extensions: &[], 13238 ..Default::default() 13239 }, 13240 ), 13241 }); 13242 } 13243 } else { 13244 } 13245 if self.nv_framebuffer_mixed_samples { 13246 if !supported.nv_framebuffer_mixed_samples { 13247 return Err(crate::device::ExtensionRestrictionError { 13248 extension: "nv_framebuffer_mixed_samples", 13249 restriction: crate::device::ExtensionRestriction::NotSupported, 13250 }); 13251 } 13252 } else { 13253 } 13254 if self.nv_geometry_shader_passthrough { 13255 if !supported.nv_geometry_shader_passthrough { 13256 return Err(crate::device::ExtensionRestrictionError { 13257 extension: "nv_geometry_shader_passthrough", 13258 restriction: crate::device::ExtensionRestriction::NotSupported, 13259 }); 13260 } 13261 } else { 13262 } 13263 if self.nv_glsl_shader { 13264 if !supported.nv_glsl_shader { 13265 return Err(crate::device::ExtensionRestrictionError { 13266 extension: "nv_glsl_shader", 13267 restriction: crate::device::ExtensionRestriction::NotSupported, 13268 }); 13269 } 13270 } else { 13271 } 13272 if self.nv_inherited_viewport_scissor { 13273 if !supported.nv_inherited_viewport_scissor { 13274 return Err(crate::device::ExtensionRestrictionError { 13275 extension: "nv_inherited_viewport_scissor", 13276 restriction: crate::device::ExtensionRestriction::NotSupported, 13277 }); 13278 } 13279 } else { 13280 } 13281 if self.nv_linear_color_attachment { 13282 if !supported.nv_linear_color_attachment { 13283 return Err(crate::device::ExtensionRestrictionError { 13284 extension: "nv_linear_color_attachment", 13285 restriction: crate::device::ExtensionRestriction::NotSupported, 13286 }); 13287 } 13288 } else { 13289 } 13290 if self.nv_memory_decompression { 13291 if !supported.nv_memory_decompression { 13292 return Err(crate::device::ExtensionRestrictionError { 13293 extension: "nv_memory_decompression", 13294 restriction: crate::device::ExtensionRestriction::NotSupported, 13295 }); 13296 } 13297 if !(api_version >= crate::Version::V1_1 13298 || instance_extensions.khr_get_physical_device_properties2) 13299 { 13300 return Err(crate::device::ExtensionRestrictionError { 13301 extension: "nv_memory_decompression", 13302 restriction: crate::device::ExtensionRestriction::Requires( 13303 crate::RequiresOneOf { 13304 api_version: Some(crate::Version::V1_1), 13305 device_extensions: &[], 13306 instance_extensions: &["khr_get_physical_device_properties2"], 13307 ..Default::default() 13308 }, 13309 ), 13310 }); 13311 } 13312 if !(api_version >= crate::Version::V1_2 || device_extensions.khr_buffer_device_address) 13313 { 13314 return Err(crate::device::ExtensionRestrictionError { 13315 extension: "nv_memory_decompression", 13316 restriction: crate::device::ExtensionRestriction::Requires( 13317 crate::RequiresOneOf { 13318 api_version: Some(crate::Version::V1_2), 13319 device_extensions: &["khr_buffer_device_address"], 13320 instance_extensions: &[], 13321 ..Default::default() 13322 }, 13323 ), 13324 }); 13325 } 13326 } else { 13327 } 13328 if self.nv_mesh_shader { 13329 if !supported.nv_mesh_shader { 13330 return Err(crate::device::ExtensionRestrictionError { 13331 extension: "nv_mesh_shader", 13332 restriction: crate::device::ExtensionRestriction::NotSupported, 13333 }); 13334 } 13335 if !(api_version >= crate::Version::V1_1 13336 || instance_extensions.khr_get_physical_device_properties2) 13337 { 13338 return Err(crate::device::ExtensionRestrictionError { 13339 extension: "nv_mesh_shader", 13340 restriction: crate::device::ExtensionRestriction::Requires( 13341 crate::RequiresOneOf { 13342 api_version: Some(crate::Version::V1_1), 13343 device_extensions: &[], 13344 instance_extensions: &["khr_get_physical_device_properties2"], 13345 ..Default::default() 13346 }, 13347 ), 13348 }); 13349 } 13350 } else { 13351 } 13352 if self.nv_optical_flow { 13353 if !supported.nv_optical_flow { 13354 return Err(crate::device::ExtensionRestrictionError { 13355 extension: "nv_optical_flow", 13356 restriction: crate::device::ExtensionRestriction::NotSupported, 13357 }); 13358 } 13359 if !(api_version >= crate::Version::V1_1 13360 || instance_extensions.khr_get_physical_device_properties2) 13361 { 13362 return Err(crate::device::ExtensionRestrictionError { 13363 extension: "nv_optical_flow", 13364 restriction: crate::device::ExtensionRestriction::Requires( 13365 crate::RequiresOneOf { 13366 api_version: Some(crate::Version::V1_1), 13367 device_extensions: &[], 13368 instance_extensions: &["khr_get_physical_device_properties2"], 13369 ..Default::default() 13370 }, 13371 ), 13372 }); 13373 } 13374 if !(api_version >= crate::Version::V1_3 || device_extensions.khr_format_feature_flags2) 13375 { 13376 return Err(crate::device::ExtensionRestrictionError { 13377 extension: "nv_optical_flow", 13378 restriction: crate::device::ExtensionRestriction::Requires( 13379 crate::RequiresOneOf { 13380 api_version: Some(crate::Version::V1_3), 13381 device_extensions: &["khr_format_feature_flags2"], 13382 instance_extensions: &[], 13383 ..Default::default() 13384 }, 13385 ), 13386 }); 13387 } 13388 if !(api_version >= crate::Version::V1_3 || device_extensions.khr_synchronization2) { 13389 return Err(crate::device::ExtensionRestrictionError { 13390 extension: "nv_optical_flow", 13391 restriction: crate::device::ExtensionRestriction::Requires( 13392 crate::RequiresOneOf { 13393 api_version: Some(crate::Version::V1_3), 13394 device_extensions: &["khr_synchronization2"], 13395 instance_extensions: &[], 13396 ..Default::default() 13397 }, 13398 ), 13399 }); 13400 } 13401 } else { 13402 } 13403 if self.nv_present_barrier { 13404 if !supported.nv_present_barrier { 13405 return Err(crate::device::ExtensionRestrictionError { 13406 extension: "nv_present_barrier", 13407 restriction: crate::device::ExtensionRestriction::NotSupported, 13408 }); 13409 } 13410 if !(api_version >= crate::Version::V1_1 13411 || instance_extensions.khr_get_physical_device_properties2) 13412 { 13413 return Err(crate::device::ExtensionRestrictionError { 13414 extension: "nv_present_barrier", 13415 restriction: crate::device::ExtensionRestriction::Requires( 13416 crate::RequiresOneOf { 13417 api_version: Some(crate::Version::V1_1), 13418 device_extensions: &[], 13419 instance_extensions: &["khr_get_physical_device_properties2"], 13420 ..Default::default() 13421 }, 13422 ), 13423 }); 13424 } 13425 if !(instance_extensions.khr_surface) { 13426 return Err(crate::device::ExtensionRestrictionError { 13427 extension: "nv_present_barrier", 13428 restriction: crate::device::ExtensionRestriction::Requires( 13429 crate::RequiresOneOf { 13430 api_version: None, 13431 device_extensions: &[], 13432 instance_extensions: &["khr_surface"], 13433 ..Default::default() 13434 }, 13435 ), 13436 }); 13437 } 13438 if !(instance_extensions.khr_get_surface_capabilities2) { 13439 return Err(crate::device::ExtensionRestrictionError { 13440 extension: "nv_present_barrier", 13441 restriction: crate::device::ExtensionRestriction::Requires( 13442 crate::RequiresOneOf { 13443 api_version: None, 13444 device_extensions: &[], 13445 instance_extensions: &["khr_get_surface_capabilities2"], 13446 ..Default::default() 13447 }, 13448 ), 13449 }); 13450 } 13451 if !(device_extensions.khr_swapchain) { 13452 return Err(crate::device::ExtensionRestrictionError { 13453 extension: "nv_present_barrier", 13454 restriction: crate::device::ExtensionRestriction::Requires( 13455 crate::RequiresOneOf { 13456 api_version: None, 13457 device_extensions: &["khr_swapchain"], 13458 instance_extensions: &[], 13459 ..Default::default() 13460 }, 13461 ), 13462 }); 13463 } 13464 } else { 13465 } 13466 if self.nv_ray_tracing { 13467 if !supported.nv_ray_tracing { 13468 return Err(crate::device::ExtensionRestrictionError { 13469 extension: "nv_ray_tracing", 13470 restriction: crate::device::ExtensionRestriction::NotSupported, 13471 }); 13472 } 13473 if !(api_version >= crate::Version::V1_1 13474 || instance_extensions.khr_get_physical_device_properties2) 13475 { 13476 return Err(crate::device::ExtensionRestrictionError { 13477 extension: "nv_ray_tracing", 13478 restriction: crate::device::ExtensionRestriction::Requires( 13479 crate::RequiresOneOf { 13480 api_version: Some(crate::Version::V1_1), 13481 device_extensions: &[], 13482 instance_extensions: &["khr_get_physical_device_properties2"], 13483 ..Default::default() 13484 }, 13485 ), 13486 }); 13487 } 13488 if !(api_version >= crate::Version::V1_1 13489 || device_extensions.khr_get_memory_requirements2) 13490 { 13491 return Err(crate::device::ExtensionRestrictionError { 13492 extension: "nv_ray_tracing", 13493 restriction: crate::device::ExtensionRestriction::Requires( 13494 crate::RequiresOneOf { 13495 api_version: Some(crate::Version::V1_1), 13496 device_extensions: &["khr_get_memory_requirements2"], 13497 instance_extensions: &[], 13498 ..Default::default() 13499 }, 13500 ), 13501 }); 13502 } 13503 } else { 13504 } 13505 if self.nv_ray_tracing_invocation_reorder { 13506 if !supported.nv_ray_tracing_invocation_reorder { 13507 return Err(crate::device::ExtensionRestrictionError { 13508 extension: "nv_ray_tracing_invocation_reorder", 13509 restriction: crate::device::ExtensionRestriction::NotSupported, 13510 }); 13511 } 13512 if !(device_extensions.khr_ray_tracing_pipeline) { 13513 return Err(crate::device::ExtensionRestrictionError { 13514 extension: "nv_ray_tracing_invocation_reorder", 13515 restriction: crate::device::ExtensionRestriction::Requires( 13516 crate::RequiresOneOf { 13517 api_version: None, 13518 device_extensions: &["khr_ray_tracing_pipeline"], 13519 instance_extensions: &[], 13520 ..Default::default() 13521 }, 13522 ), 13523 }); 13524 } 13525 } else { 13526 } 13527 if self.nv_ray_tracing_motion_blur { 13528 if !supported.nv_ray_tracing_motion_blur { 13529 return Err(crate::device::ExtensionRestrictionError { 13530 extension: "nv_ray_tracing_motion_blur", 13531 restriction: crate::device::ExtensionRestriction::NotSupported, 13532 }); 13533 } 13534 if !(device_extensions.khr_ray_tracing_pipeline) { 13535 return Err(crate::device::ExtensionRestrictionError { 13536 extension: "nv_ray_tracing_motion_blur", 13537 restriction: crate::device::ExtensionRestriction::Requires( 13538 crate::RequiresOneOf { 13539 api_version: None, 13540 device_extensions: &["khr_ray_tracing_pipeline"], 13541 instance_extensions: &[], 13542 ..Default::default() 13543 }, 13544 ), 13545 }); 13546 } 13547 } else { 13548 } 13549 if self.nv_representative_fragment_test { 13550 if !supported.nv_representative_fragment_test { 13551 return Err(crate::device::ExtensionRestrictionError { 13552 extension: "nv_representative_fragment_test", 13553 restriction: crate::device::ExtensionRestriction::NotSupported, 13554 }); 13555 } 13556 } else { 13557 } 13558 if self.nv_sample_mask_override_coverage { 13559 if !supported.nv_sample_mask_override_coverage { 13560 return Err(crate::device::ExtensionRestrictionError { 13561 extension: "nv_sample_mask_override_coverage", 13562 restriction: crate::device::ExtensionRestriction::NotSupported, 13563 }); 13564 } 13565 } else { 13566 } 13567 if self.nv_scissor_exclusive { 13568 if !supported.nv_scissor_exclusive { 13569 return Err(crate::device::ExtensionRestrictionError { 13570 extension: "nv_scissor_exclusive", 13571 restriction: crate::device::ExtensionRestriction::NotSupported, 13572 }); 13573 } 13574 if !(api_version >= crate::Version::V1_1 13575 || instance_extensions.khr_get_physical_device_properties2) 13576 { 13577 return Err(crate::device::ExtensionRestrictionError { 13578 extension: "nv_scissor_exclusive", 13579 restriction: crate::device::ExtensionRestriction::Requires( 13580 crate::RequiresOneOf { 13581 api_version: Some(crate::Version::V1_1), 13582 device_extensions: &[], 13583 instance_extensions: &["khr_get_physical_device_properties2"], 13584 ..Default::default() 13585 }, 13586 ), 13587 }); 13588 } 13589 } else { 13590 } 13591 if self.nv_shader_image_footprint { 13592 if !supported.nv_shader_image_footprint { 13593 return Err(crate::device::ExtensionRestrictionError { 13594 extension: "nv_shader_image_footprint", 13595 restriction: crate::device::ExtensionRestriction::NotSupported, 13596 }); 13597 } 13598 if !(api_version >= crate::Version::V1_1 13599 || instance_extensions.khr_get_physical_device_properties2) 13600 { 13601 return Err(crate::device::ExtensionRestrictionError { 13602 extension: "nv_shader_image_footprint", 13603 restriction: crate::device::ExtensionRestriction::Requires( 13604 crate::RequiresOneOf { 13605 api_version: Some(crate::Version::V1_1), 13606 device_extensions: &[], 13607 instance_extensions: &["khr_get_physical_device_properties2"], 13608 ..Default::default() 13609 }, 13610 ), 13611 }); 13612 } 13613 } else { 13614 } 13615 if self.nv_shader_sm_builtins { 13616 if !supported.nv_shader_sm_builtins { 13617 return Err(crate::device::ExtensionRestrictionError { 13618 extension: "nv_shader_sm_builtins", 13619 restriction: crate::device::ExtensionRestriction::NotSupported, 13620 }); 13621 } 13622 if !(api_version >= crate::Version::V1_1) { 13623 return Err(crate::device::ExtensionRestrictionError { 13624 extension: "nv_shader_sm_builtins", 13625 restriction: crate::device::ExtensionRestriction::Requires( 13626 crate::RequiresOneOf { 13627 api_version: Some(crate::Version::V1_1), 13628 device_extensions: &[], 13629 instance_extensions: &[], 13630 ..Default::default() 13631 }, 13632 ), 13633 }); 13634 } 13635 } else { 13636 } 13637 if self.nv_shader_subgroup_partitioned { 13638 if !supported.nv_shader_subgroup_partitioned { 13639 return Err(crate::device::ExtensionRestrictionError { 13640 extension: "nv_shader_subgroup_partitioned", 13641 restriction: crate::device::ExtensionRestriction::NotSupported, 13642 }); 13643 } 13644 if !(api_version >= crate::Version::V1_1) { 13645 return Err(crate::device::ExtensionRestrictionError { 13646 extension: "nv_shader_subgroup_partitioned", 13647 restriction: crate::device::ExtensionRestriction::Requires( 13648 crate::RequiresOneOf { 13649 api_version: Some(crate::Version::V1_1), 13650 device_extensions: &[], 13651 instance_extensions: &[], 13652 ..Default::default() 13653 }, 13654 ), 13655 }); 13656 } 13657 } else { 13658 } 13659 if self.nv_shading_rate_image { 13660 if !supported.nv_shading_rate_image { 13661 return Err(crate::device::ExtensionRestrictionError { 13662 extension: "nv_shading_rate_image", 13663 restriction: crate::device::ExtensionRestriction::NotSupported, 13664 }); 13665 } 13666 if !(api_version >= crate::Version::V1_1 13667 || instance_extensions.khr_get_physical_device_properties2) 13668 { 13669 return Err(crate::device::ExtensionRestrictionError { 13670 extension: "nv_shading_rate_image", 13671 restriction: crate::device::ExtensionRestriction::Requires( 13672 crate::RequiresOneOf { 13673 api_version: Some(crate::Version::V1_1), 13674 device_extensions: &[], 13675 instance_extensions: &["khr_get_physical_device_properties2"], 13676 ..Default::default() 13677 }, 13678 ), 13679 }); 13680 } 13681 } else { 13682 } 13683 if self.nv_viewport_array2 { 13684 if !supported.nv_viewport_array2 { 13685 return Err(crate::device::ExtensionRestrictionError { 13686 extension: "nv_viewport_array2", 13687 restriction: crate::device::ExtensionRestriction::NotSupported, 13688 }); 13689 } 13690 } else { 13691 } 13692 if self.nv_viewport_swizzle { 13693 if !supported.nv_viewport_swizzle { 13694 return Err(crate::device::ExtensionRestrictionError { 13695 extension: "nv_viewport_swizzle", 13696 restriction: crate::device::ExtensionRestriction::NotSupported, 13697 }); 13698 } 13699 } else { 13700 } 13701 if self.nv_win32_keyed_mutex { 13702 if !supported.nv_win32_keyed_mutex { 13703 return Err(crate::device::ExtensionRestrictionError { 13704 extension: "nv_win32_keyed_mutex", 13705 restriction: crate::device::ExtensionRestriction::NotSupported, 13706 }); 13707 } 13708 if !(device_extensions.nv_external_memory_win32) { 13709 return Err(crate::device::ExtensionRestrictionError { 13710 extension: "nv_win32_keyed_mutex", 13711 restriction: crate::device::ExtensionRestriction::Requires( 13712 crate::RequiresOneOf { 13713 api_version: None, 13714 device_extensions: &["nv_external_memory_win32"], 13715 instance_extensions: &[], 13716 ..Default::default() 13717 }, 13718 ), 13719 }); 13720 } 13721 } else { 13722 } 13723 if self.qcom_fragment_density_map_offset { 13724 if !supported.qcom_fragment_density_map_offset { 13725 return Err(crate::device::ExtensionRestrictionError { 13726 extension: "qcom_fragment_density_map_offset", 13727 restriction: crate::device::ExtensionRestriction::NotSupported, 13728 }); 13729 } 13730 if !(api_version >= crate::Version::V1_1 13731 || instance_extensions.khr_get_physical_device_properties2) 13732 { 13733 return Err(crate::device::ExtensionRestrictionError { 13734 extension: "qcom_fragment_density_map_offset", 13735 restriction: crate::device::ExtensionRestriction::Requires( 13736 crate::RequiresOneOf { 13737 api_version: Some(crate::Version::V1_1), 13738 device_extensions: &[], 13739 instance_extensions: &["khr_get_physical_device_properties2"], 13740 ..Default::default() 13741 }, 13742 ), 13743 }); 13744 } 13745 if !(device_extensions.ext_fragment_density_map) { 13746 return Err(crate::device::ExtensionRestrictionError { 13747 extension: "qcom_fragment_density_map_offset", 13748 restriction: crate::device::ExtensionRestriction::Requires( 13749 crate::RequiresOneOf { 13750 api_version: None, 13751 device_extensions: &["ext_fragment_density_map"], 13752 instance_extensions: &[], 13753 ..Default::default() 13754 }, 13755 ), 13756 }); 13757 } 13758 } else { 13759 } 13760 if self.qcom_image_processing { 13761 if !supported.qcom_image_processing { 13762 return Err(crate::device::ExtensionRestrictionError { 13763 extension: "qcom_image_processing", 13764 restriction: crate::device::ExtensionRestriction::NotSupported, 13765 }); 13766 } 13767 if !(api_version >= crate::Version::V1_3 || device_extensions.khr_format_feature_flags2) 13768 { 13769 return Err(crate::device::ExtensionRestrictionError { 13770 extension: "qcom_image_processing", 13771 restriction: crate::device::ExtensionRestriction::Requires( 13772 crate::RequiresOneOf { 13773 api_version: Some(crate::Version::V1_3), 13774 device_extensions: &["khr_format_feature_flags2"], 13775 instance_extensions: &[], 13776 ..Default::default() 13777 }, 13778 ), 13779 }); 13780 } 13781 } else { 13782 } 13783 if self.qcom_multiview_per_view_viewports { 13784 if !supported.qcom_multiview_per_view_viewports { 13785 return Err(crate::device::ExtensionRestrictionError { 13786 extension: "qcom_multiview_per_view_viewports", 13787 restriction: crate::device::ExtensionRestriction::NotSupported, 13788 }); 13789 } 13790 } else { 13791 } 13792 if self.qcom_render_pass_shader_resolve { 13793 if !supported.qcom_render_pass_shader_resolve { 13794 return Err(crate::device::ExtensionRestrictionError { 13795 extension: "qcom_render_pass_shader_resolve", 13796 restriction: crate::device::ExtensionRestriction::NotSupported, 13797 }); 13798 } 13799 } else { 13800 } 13801 if self.qcom_render_pass_store_ops { 13802 if !supported.qcom_render_pass_store_ops { 13803 return Err(crate::device::ExtensionRestrictionError { 13804 extension: "qcom_render_pass_store_ops", 13805 restriction: crate::device::ExtensionRestriction::NotSupported, 13806 }); 13807 } 13808 } else { 13809 } 13810 if self.qcom_render_pass_transform { 13811 if !supported.qcom_render_pass_transform { 13812 return Err(crate::device::ExtensionRestrictionError { 13813 extension: "qcom_render_pass_transform", 13814 restriction: crate::device::ExtensionRestriction::NotSupported, 13815 }); 13816 } 13817 if !(device_extensions.khr_swapchain) { 13818 return Err(crate::device::ExtensionRestrictionError { 13819 extension: "qcom_render_pass_transform", 13820 restriction: crate::device::ExtensionRestriction::Requires( 13821 crate::RequiresOneOf { 13822 api_version: None, 13823 device_extensions: &["khr_swapchain"], 13824 instance_extensions: &[], 13825 ..Default::default() 13826 }, 13827 ), 13828 }); 13829 } 13830 if !(instance_extensions.khr_surface) { 13831 return Err(crate::device::ExtensionRestrictionError { 13832 extension: "qcom_render_pass_transform", 13833 restriction: crate::device::ExtensionRestriction::Requires( 13834 crate::RequiresOneOf { 13835 api_version: None, 13836 device_extensions: &[], 13837 instance_extensions: &["khr_surface"], 13838 ..Default::default() 13839 }, 13840 ), 13841 }); 13842 } 13843 } else { 13844 } 13845 if self.qcom_rotated_copy_commands { 13846 if !supported.qcom_rotated_copy_commands { 13847 return Err(crate::device::ExtensionRestrictionError { 13848 extension: "qcom_rotated_copy_commands", 13849 restriction: crate::device::ExtensionRestriction::NotSupported, 13850 }); 13851 } 13852 if !(device_extensions.khr_swapchain) { 13853 return Err(crate::device::ExtensionRestrictionError { 13854 extension: "qcom_rotated_copy_commands", 13855 restriction: crate::device::ExtensionRestriction::Requires( 13856 crate::RequiresOneOf { 13857 api_version: None, 13858 device_extensions: &["khr_swapchain"], 13859 instance_extensions: &[], 13860 ..Default::default() 13861 }, 13862 ), 13863 }); 13864 } 13865 if !(api_version >= crate::Version::V1_3 || device_extensions.khr_copy_commands2) { 13866 return Err(crate::device::ExtensionRestrictionError { 13867 extension: "qcom_rotated_copy_commands", 13868 restriction: crate::device::ExtensionRestriction::Requires( 13869 crate::RequiresOneOf { 13870 api_version: Some(crate::Version::V1_3), 13871 device_extensions: &["khr_copy_commands2"], 13872 instance_extensions: &[], 13873 ..Default::default() 13874 }, 13875 ), 13876 }); 13877 } 13878 } else { 13879 } 13880 if self.qcom_tile_properties { 13881 if !supported.qcom_tile_properties { 13882 return Err(crate::device::ExtensionRestrictionError { 13883 extension: "qcom_tile_properties", 13884 restriction: crate::device::ExtensionRestriction::NotSupported, 13885 }); 13886 } 13887 if !(api_version >= crate::Version::V1_1 13888 || instance_extensions.khr_get_physical_device_properties2) 13889 { 13890 return Err(crate::device::ExtensionRestrictionError { 13891 extension: "qcom_tile_properties", 13892 restriction: crate::device::ExtensionRestriction::Requires( 13893 crate::RequiresOneOf { 13894 api_version: Some(crate::Version::V1_1), 13895 device_extensions: &[], 13896 instance_extensions: &["khr_get_physical_device_properties2"], 13897 ..Default::default() 13898 }, 13899 ), 13900 }); 13901 } 13902 } else { 13903 } 13904 if self.sec_amigo_profiling { 13905 if !supported.sec_amigo_profiling { 13906 return Err(crate::device::ExtensionRestrictionError { 13907 extension: "sec_amigo_profiling", 13908 restriction: crate::device::ExtensionRestriction::NotSupported, 13909 }); 13910 } 13911 if !(api_version >= crate::Version::V1_1 13912 || instance_extensions.khr_get_physical_device_properties2) 13913 { 13914 return Err(crate::device::ExtensionRestrictionError { 13915 extension: "sec_amigo_profiling", 13916 restriction: crate::device::ExtensionRestriction::Requires( 13917 crate::RequiresOneOf { 13918 api_version: Some(crate::Version::V1_1), 13919 device_extensions: &[], 13920 instance_extensions: &["khr_get_physical_device_properties2"], 13921 ..Default::default() 13922 }, 13923 ), 13924 }); 13925 } 13926 } else { 13927 } 13928 if self.valve_descriptor_set_host_mapping { 13929 if !supported.valve_descriptor_set_host_mapping { 13930 return Err(crate::device::ExtensionRestrictionError { 13931 extension: "valve_descriptor_set_host_mapping", 13932 restriction: crate::device::ExtensionRestriction::NotSupported, 13933 }); 13934 } 13935 } else { 13936 } 13937 if self.valve_mutable_descriptor_type { 13938 if !supported.valve_mutable_descriptor_type { 13939 return Err(crate::device::ExtensionRestrictionError { 13940 extension: "valve_mutable_descriptor_type", 13941 restriction: crate::device::ExtensionRestriction::NotSupported, 13942 }); 13943 } 13944 if !(api_version >= crate::Version::V1_1 || device_extensions.khr_maintenance3) { 13945 return Err(crate::device::ExtensionRestrictionError { 13946 extension: "valve_mutable_descriptor_type", 13947 restriction: crate::device::ExtensionRestriction::Requires( 13948 crate::RequiresOneOf { 13949 api_version: Some(crate::Version::V1_1), 13950 device_extensions: &["khr_maintenance3"], 13951 instance_extensions: &[], 13952 ..Default::default() 13953 }, 13954 ), 13955 }); 13956 } 13957 } else { 13958 } 13959 Ok(()) 13960 } 13961 } 13962