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